From c5b3e84473449fa897d331594619382449beb9ea Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 2 Feb 2017 16:26:21 -0500 Subject: [PATCH 001/226] 1.5.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 37c389e..aed644c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.2", + "version": "1.5.3", "keywords": [ "css", "js", From ee3156c87be60218a629d4f999c2bea39aec1af4 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 6 Feb 2017 17:06:46 -0500 Subject: [PATCH 002/226] 1.5.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index aed644c..bc1d2b4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.3", + "version": "1.5.4", "keywords": [ "css", "js", From e429bfe049fafa8280c60a537bb58694e7892770 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 6 Feb 2017 23:35:34 -0500 Subject: [PATCH 003/226] bower 1.5.4 --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index 57389d5..1b1f3da 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.3", + "version": "1.5.4", "keywords": [ "css", "js", From 28020e72ebe0c66e67f01b4a6c46bce6a04dc198 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 7 Feb 2017 00:03:04 -0500 Subject: [PATCH 004/226] #17 load script in index.html head --- bower.json | 4 ++-- index.html | 28 +++++++++++++--------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/bower.json b/bower.json index 1b1f3da..0c5c688 100644 --- a/bower.json +++ b/bower.json @@ -28,7 +28,7 @@ "test-infra" ], "dependencies": { - "moment": "^2.14.1", - "angular-material": "^1.1.0" + "moment": "^2.17.1", + "angular-material": "^1.1.1" } } diff --git a/index.html b/index.html index 2337d7c..a6d8fba 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,24 @@ + Angular-Material DateTimePicker + - + + + + + + + + + + + @@ -123,18 +134,5 @@

- - - - - - - - - - - From e9a875929603eb381f1349468248599311a5b143 Mon Sep 17 00:00:00 2001 From: mak-pun Date: Fri, 10 Feb 2017 15:17:25 +0700 Subject: [PATCH 005/226] Add id attribute to date picker and time picker --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- js/angular-material-datetimepicker.js | 9 +++++---- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 821f72a..891a04d 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.attr("readonly",""),n.on("focus",function(c){if(c.preventDefault(),n.blur(),!o){o=!0;var d={};for(var u in s)a.hasOwnProperty(u)&&!angular.isUndefined(a[u])&&(d[u]=a[u]);d.currentDate=a.currentDate,d.showTodaysDate=l;var m={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:m,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,skipHide:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.blur()},function(){o=!1,n.blur()})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,skipHide:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return u(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var u=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var i=angular.element(e[0].querySelector(".dtp-picker-clock")),c=angular.element(s.querySelector(".dtp-picker")),l=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(c,"paddingLeft").replace("px",""))||0,m=parseInt(a(c,"paddingRight").replace("px",""))||0,p=parseInt(a(i,"marginLeft").replace("px",""))||0,h=parseInt(a(i,"marginRight").replace("px",""))||0,f=l-(p+h+u+m);i.css("width",f+"px");for(var D=parseInt(a(c,"paddingLeft").replace("px",""))||0,v=parseInt(a(c,"paddingTop").replace("px",""))||0,g=parseInt(a(i,"marginLeft").replace("px",""))||0,k=parseInt(a(i,"marginTop").replace("px",""))||0,M=f/2,y=M/1.2,x=[],b=0;b<12;++b){var T=y*Math.sin(2*Math.PI*(b/12)),w=y*Math.cos(2*Math.PI*(b/12)),A=M+T+D/2-(D+g),Y=M-w-k/2-(v+k),I={left:A,top:Y,value:r?5*b:b,style:{"margin-left":A+"px","margin-top":Y+"px"}};r?I.display=I.value<10?"0"+I.value:I.value:n.params.shortTime?I.display=0===b?12:b:I.display=n.isPM()?b+12:b,x.push(I)}t.points=x,d(),i.css("height",f+"px");var S=e[0].querySelector(".dtp-clock-center"),H=S.offsetWidth/2||7.5,P=S.offsetHeight/2||7.5,V=M/1.8,E=M/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*g+"px",height:V+"px",marginTop:M-V-D+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*g+"px",height:E+"px",marginTop:M-E-D+"px"}).addClass(r?"on":""),angular.element(S).css({left:M+D+g-H+"px",marginTop:M-g/2-P+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var u=function(t,e){for(var a=0;a{{picker.params.amText}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.attr("readonly",""),n.on("focus",function(c){if(c.preventDefault(),n.blur(),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,skipHide:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.blur()},function(){o=!1,n.blur()})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,skipHide:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),I=y-Y-M/2-(g+M),S={left:A,top:I,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":I+"px"}};r?S.display=S.value<10?"0"+S.value:S.value:n.params.shortTime?S.display=0===T?12:T:S.display=n.isPM()?T+12:T,b.push(S)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var H=e[0].querySelector(".dtp-clock-center"),P=H.offsetWidth/2||7.5,V=H.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(H).css({left:y+v+k-P+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a'\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"dddd\")}}
'\n + '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
'\n + '
'\n + ' ×'\n + '
'\n + '
'\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"MMM\") | uppercase}}
'\n + '
'\n + '
{{picker.currentDate.format(\"DD\")}}
'\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"YYYY\")}}
'\n + '
'\n + '
'\n + '
'//start time\n + '
'\n + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
'\n + '
'\n + '
'\n + ' '\n + '
'\n + '
'\n + '
'\n + ' {{picker.params.amText}}'\n + '
'\n + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
'\n + '
'\n + ' {{picker.params.pmText}}'\n + '
'\n + '
'\n + '
'\n + ' '\n + ' '\n + '
'\n + '
'\n + '
'\n + ' '\n + ' '\n + ' {{picker.params.todayText}}'\n + ' {{picker.params.cancelText}}'\n + ' {{picker.params.okText}}'\n + ' '\n + '';\n\n\n angular.module(moduleName, ['ngMaterial'])\n .provider('mdcDatetimePickerDefaultLocale', function () {\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\n\n this.$get = function () {\n return this;\n };\n\n this.setDefaultLocale = function (localeString) {\n this.locale = localeString;\n };\n })\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\n var default_params = {\n date: true,\n time: true,\n format: 'YYYY-MM-DD',\n minDate: null,\n maxDate: null,\n currentDate: null,\n lang: mdcDatetimePickerDefaultLocale.locale,\n weekStart: 0,\n shortTime: false,\n cancelText: 'Cancel',\n okText: 'OK',\n amText: 'AM',\n pmText: 'PM',\n todayText: 'Today',\n disableDates: []\n };\n return default_params;\n }])\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\n function ($mdDialog, $timeout) {\n\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n currentDate: '=ngModel',\n ngChange: '&',\n time: '=',\n date: '=',\n minDate: '=',\n maxDate: '=',\n disableDates: '=',\n shortTime: '=',\n weekStart: '=',\n format: '@',\n cancelText: '@',\n okText: '@',\n lang: '@',\n amText: '@',\n pmText: '@',\n showTodaysDate: '@',\n todayText: '@'\n },\n link: function (scope, element, attrs, ngModel) {\n var isOn = false;\n if (!scope.format) {\n if (scope.date && scope.time) {\n scope.format = 'YYYY-MM-DD HH:mm';\n } else if (scope.date) {\n scope.format = 'YYYY-MM-DD';\n } else {\n scope.format = 'HH:mm';\n }\n }\n\n var dateOfTheDay = null;\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\n scope.currentDate = moment(scope.currentDate, scope.format);\n }\n\n if (ngModel) {\n ngModel.$formatters.push(function (value) {\n if (typeof value === 'undefined') {\n return;\n }\n var m = moment(value);\n return m.isValid() ? m.format(scope.format) : '';\n });\n }\n\n element.attr('readonly', '');\n //@TODO custom event to trigger input\n element.on('focus', function (e) {\n e.preventDefault();\n element.blur();\n if (isOn) {\n return;\n }\n isOn = true;\n var options = {};\n for (var i in attrs) {\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\n options[i] = scope[i];\n }\n }\n options.currentDate = scope.currentDate;\n options.showTodaysDate = dateOfTheDay;\n\n var locals = {options: options};\n $mdDialog.show({\n template: template,\n controller: PluginController,\n controllerAs: 'picker',\n locals: locals,\n openFrom: element,\n parent: angular.element(document.body),\n bindToController: true,\n disableParentScroll: false,\n hasBackDrop: false,\n skipHide: true\n })\n .then(function (v) {\n scope.currentDate = v ? v._d : v;\n isOn = false;\n\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\n $timeout(scope.ngChange, 0);\n }\n\n element.blur()\n\n }, function () {\n isOn = false;\n element.blur()\n })\n ;\n });\n }\n };\n }])\n /** Returns a service that opens a dialog when the attribute shown is called\n The dialog serves to select a date/time/etc. depending on the options given to the function show\n\n @param options extends mdcDefaultParams\n {\n date: {boolean} =true,\n time: {boolean] =true,\n format: {string} ='YYYY-MM-DD',\n minDate: {strign} =null,\n maxDate: {string} =null,\n currentDate: {string} =null,\n lang: {string} =mdcDatetimePickerDefaultLocale,\n weekStart: {int} =0,\n shortTime: {boolean} =false,\n cancelText: {string} ='Cancel',\n todayText: {string} ='Today',\n okText: {string} ='OK',\n amText: {string} ='AM',\n pmText: {string} ='PM'\n }\n @return promise\n */\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\n var accepted_options = Object.keys(mdcDefaultParams);\n console.log(accepted_options);\n var service = {\n show: function (options) {\n var deferred = $q.defer();\n var params = angular.copy(mdcDefaultParams);\n for (var i in options) {\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\n params = options[i];\n }\n }\n var locals = {options: options};\n $mdDialog.show({\n template: template,\n controller: PluginController,\n controllerAs: 'picker',\n locals: locals,\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: true,\n disableParentScroll: false,\n skipHide: true\n })\n .then(function (v) {\n var currentDate = v ? v._d : v;\n deferred.resolve(v ? v._d : v);\n }, function () {\n deferred.reject();\n });\n return deferred.promise;\n }\n };\n\n return service;\n }])\n ;\n\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\n this.currentView = VIEW_STATES.DATE;\n this._dialog = $mdDialog;\n\n this._attachedEvents = [];\n this.VIEWS = VIEW_STATES;\n this.params = mdcDefaultParams;\n this.meridien = 'AM';\n this.params = angular.extend(this.params, this.options);\n\n this.init();\n };\n\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\n PluginController.prototype = {\n init: function () {\n this.timeMode = this.params.time && !this.params.date;\n this.dateMode = this.params.date;\n this.initDates();\n this.start();\n },\n currentNearest5Minute: function () {\n var date = this.currentDate || moment();\n var minutes = (5 * Math.round(date.minute() / 5));\n if (minutes >= 60) {\n minutes = 55; //always push down\n }\n return moment(date).minutes(minutes);\n },\n initDates: function () {\n var that = this;\n var _dateParam = function (input, fallback) {\n var ret = null;\n if (angular.isDefined(input) && input !== null && input !== '') {\n if (angular.isString(input)) {\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\n ret = moment(input, that.params.format).locale(that.params.lang);\n }\n else {\n ret = moment(input).locale(that.params.lang);\n }\n } else if (typeof input === 'number') {\n ret = moment(input).locale(that.params.lang);\n } else {\n if (angular.isDate(input)) {\n var x = input.getTime();\n ret = moment(x, \"x\").locale(that.params.lang);\n } else if (input._isAMomentObject) {\n ret = input;\n }\n }\n }\n else {\n ret = fallback;\n }\n return ret;\n };\n\n this.currentDate = _dateParam(this.params.currentDate, moment());\n this.minDate = _dateParam(this.params.minDate);\n this.maxDate = _dateParam(this.params.maxDate);\n this.disableDates = this.params.disableDates.map(function (x) {\n return moment(x).format('MMMM Do YYYY')\n });\n this.selectDate(this.currentDate);\n },\n initDate: function () {\n this.currentView = VIEW_STATES.DATE;\n },\n initHours: function () {\n this.currentView = VIEW_STATES.HOUR;\n },\n initMinutes: function () {\n this.currentView = VIEW_STATES.MINUTE;\n },\n isAfterMinDate: function (date, checkHour, checkMinute) {\n var _return = true;\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n var _minDate = moment(this.minDate);\n var _date = moment(date);\n\n if (!checkHour && !checkMinute) {\n _minDate.hour(0);\n _minDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _minDate.second(0);\n _date.second(0);\n _minDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _minDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\n var _return = true;\n\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n var _maxDate = moment(this.maxDate);\n var _date = moment(date);\n\n if (!checkTime && !checkMinute) {\n _maxDate.hour(0);\n _maxDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _maxDate.second(0);\n _date.second(0);\n _maxDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _maxDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isInDisableDates: function (date) {\n var dut = date.format('MMMM Do YYYY')\n if (this.disableDates.indexOf(dut) > -1) {\n return false;\n }\n return true;\n },\n selectDate: function (date) {\n if (date) {\n this.currentDate = moment(date);\n if (!this.isAfterMinDate(this.currentDate)) {\n this.currentDate = moment(this.minDate);\n }\n\n if (!this.isBeforeMaxDate(this.currentDate)) {\n this.currentDate = moment(this.maxDate);\n }\n this.currentDate.locale(this.params.lang);\n this.calendarStart = moment(this.currentDate);\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\n }\n },\n setName: function () {\n var text = \"\";\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (var i = 0; i < 5; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n },\n isPM: function () {\n return this.meridien === 'PM';\n },\n incrementYear: function (amount) {\n if (amount === 1 && this.isNextYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n\n if (amount === -1 && this.isPreviousYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n },\n isPreviousMonthVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\n },\n isNextMonthVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\n },\n isPreviousYearVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\n },\n isNextYearVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\n },\n isHourAvailable: function (hour) {\n var _date = moment(this.currentDate);\n _date.hour(this.convertHours(hour)).minute(0).second(0);\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\n },\n isMinuteAvailable: function (minute) {\n var _date = moment(this.currentDate);\n _date.minute(minute).second(0);\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\n },\n start: function () {\n this.currentView = VIEW_STATES.DATE;\n //this.initDates();\n if (this.params.date) {\n this.initDate();\n } else {\n if (this.params.time) {\n this.initHours();\n }\n }\n },\n today: function () {\n this.selectDate(Date.now());\n },\n ok: function () {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n if (this.params.time === true) {\n this.initHours();\n }\n else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.HOUR:\n this.initMinutes();\n break;\n case VIEW_STATES.MINUTE:\n this.hide(true);\n break;\n }\n },\n cancel: function () {\n if (this.params.time) {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n this.hide();\n break;\n case VIEW_STATES.HOUR:\n if (this.params.date) {\n this.initDate();\n }\n else {\n this.hide();\n }\n break;\n case VIEW_STATES.MINUTE:\n this.initHours();\n break;\n }\n }\n else {\n this.hide();\n }\n },\n selectMonthBefore: function () {\n this.calendarStart.subtract(1, 'months');\n },\n selectMonthAfter: function () {\n this.calendarStart.add(1, 'months');\n },\n selectYearBefore: function () {\n this.calendarStart.subtract(1, 'years');\n },\n selectYearAfter: function () {\n this.calendarStart.add(1, 'years');\n },\n selectAM: function () {\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\n if (this.currentDate.hour() >= 12) {\n this.selectDate(this.currentDate.subtract(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\n }\n }\n },\n selectPM: function () {\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\n if (this.currentDate.hour() < 12) {\n this.selectDate(this.currentDate.add(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\n }\n }\n },\n convertHours: function (h) {\n var _return = h;\n if ((h < 12) && this.isPM())\n _return += 12;\n\n return _return;\n },\n hide: function (okBtn) {\n if (okBtn) {\n this._dialog.hide(this.currentDate);\n } else {\n this._dialog.cancel();\n }\n }\n };\n\n\n angular.module(moduleName)\n .directive('mdcDatetimePickerCalendar', [\n function () {\n\n var YEAR_MIN = 1920,\n YEAR_MAX = new Date().getFullYear() + 30,\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\n ITEM_HEIGHT = 240,\n MONTHS = [];\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\n MONTHS.push(i);\n }\n\n var currentMonthIndex = function (date, low) {\n low = low ? low : 0;\n var year = date.year();\n var month = date.month();\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\n };\n\n return {\n restrict: 'E',\n scope: {\n picker: '=',\n date: '='\n },\n bindToController: true,\n controllerAs: 'cal',\n controller: ['$scope', function ($scope) {\n this.$onInit = function () {\n var calendar = this,\n picker = this.picker,\n days = [];\n\n for (var i = picker.params.weekStart; days.length < 7; i++) {\n if (i > 6) {\n i = 0;\n }\n days.push(i.toString());\n }\n\n calendar.week = days;\n if (!picker.maxDate && !picker.minDate) {\n calendar.months = MONTHS;\n } else {\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\n calendar.months = MONTHS.slice(low, high);\n }\n\n\n calendar.getItemAtIndex = function (index) {\n var month = ((index + 1) % 12) || 12;\n var year = YEAR_MIN + Math.floor(index / 12);\n var monthObj = moment(picker.currentDate)\n .year(year)\n .month(month);\n return generateMonthCalendar(monthObj);\n };\n\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\n\n $scope.$watch(function () {\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\n }, function (val2, val1) {\n if (val2 != val1) {\n var nDate = moment(val2, 'YYYY-MM');\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var index = currentMonthIndex(nDate, low);\n if (calendar.topIndex != index) {\n calendar.topIndex = index;\n }\n }\n });\n\n var generateMonthCalendar = function (date) {\n var month = {};\n if (date !== null) {\n month.name = date.format('MMMM YYYY');\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\n .hour(date.hour())\n .minute(date.minute())\n ;\n var iNumDay = startOfMonth.format('d');\n month.days = [];\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\n if (i === startOfMonth.date()) {\n var iWeek = calendar.week.indexOf(iNumDay.toString());\n if (iWeek > 0) {\n for (var x = 0; x < iWeek; x++) {\n month.days.push(0);\n }\n }\n }\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\n }\n\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\n for (var j = 0; j < slices; j++) {\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\n }\n month.days = daysTmp;\n return month;\n }\n\n };\n\n calendar.toDay = function (i) {\n return moment(parseInt(i), \"d\")\n .locale(picker.params.lang)\n .format(\"dd\")\n .substring(0, 1);\n };\n\n calendar.isInRange = function (date) {\n return picker.isAfterMinDate(moment(date), false, false)\n && picker.isBeforeMaxDate(moment(date), false, false)\n && picker.isInDisableDates(moment(date));\n };\n\n calendar.selectDate = function (date) {\n if (date) {\n if (calendar.isSelectedDay(date)) {\n return picker.ok();\n }\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\n }\n };\n\n calendar.isSelectedDay = function (m) {\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\n };\n\n calendar.isDateOfTheDay = function (m) {\n var today = calendar.picker.options.showTodaysDate;\n if (!today) {\n return false;\n }\n\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\n }\n }\n }],\n template: '' +\n '
' +\n '
' +\n '
' +\n '
'\n };\n }])\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\n function ($compile) {\n var buildCalendarContent = function (element, scope) {\n var tbody = angular.element(element[0].querySelector('tbody'));\n var calendar = scope.cal, month = scope.month;\n\n var tbodyHtml = [];\n\n month.days.forEach(function (weekDays, i) {\n tbodyHtml.push('');\n weekDays.forEach(function (weekDay, j) {\n tbodyHtml.push('');\n if (weekDay) {\n if (calendar.isInRange(weekDay)) {\n //build a\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\n\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n } else {\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n }\n }\n tbodyHtml.push('');\n });\n tbodyHtml.push('');\n });\n\n tbody.html(tbodyHtml.join(''));\n $compile(tbody)(scope);\n };\n\n return {\n scope: {\n idx: '='\n },\n require: '^mdcDatetimePickerCalendar',\n restrict: 'AE',\n template: '
{{month.name}}
'\n + ''\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + '
{{cal.toDay(day)}}
',\n link: function (scope, element, attrs, calendar) {\n scope.cal = calendar;\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n scope.$watch(function () {\n return scope.idx;\n }, function (idx, oldIdx) {\n if (idx != oldIdx) {\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n }\n });\n }\n };\n }\n ])\n ;\n\n angular.module(moduleName)\n .directive('mdcDtpNoclick', function () {\n return {\n link: function (scope, el) {\n el.on('click', function (e) {\n e.preventDefault();\n });\n }\n };\n });\n angular.module(moduleName)\n .directive('mdcDatetimePickerClock', [\n function () {\n\n var template = '
 '\n + '
'\n + ' {{point.display}}'\n + ' {{point.display}}'\n + '
'\n + '
'\n + '
'\n + '
'\n + '
';\n\n return {\n restrict: 'E',\n template: template,\n link: function (scope, element, attrs) {\n var minuteMode = attrs.mode === 'minutes';\n var picker = scope.picker;\n //banking on the fact that there will only be one at a time\n var componentRoot = document.querySelector('md-dialog.dtp');\n var exec = function () {\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\n\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\n //set width\n var clockWidth = (w - (ml + mr + pl + pr));\n clock.css('width', (clockWidth) + 'px');\n\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\n\n var r = (clockWidth / 2);\n var j = r / 1.2; //???\n\n var points = [];\n\n for (var h = 0; h < 12; ++h) {\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\n var left = (r + x + pL / 2) - (pL + mL);\n var top = (r - y - mT / 2) - (pT + mT);\n\n var hour = {\n left: left,\n top: top,\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\n };\n\n if (minuteMode) {\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\n } else {\n\n if (picker.params.shortTime) {\n hour.display = (h === 0) ? 12 : h;\n } else {\n hour.display = picker.isPM() ? h + 12 : h;\n }\n }\n\n\n points.push(hour);\n }\n\n scope.points = points;\n setCurrentValue();\n clock.css('height', clockWidth + 'px');\n //picker.initHands(true);\n\n var clockCenter = element[0].querySelector('.dtp-clock-center');\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\n var _hL = r / 1.8;\n var _mL = r / 1.5;\n\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _hL + 'px',\n marginTop: (r - _hL - pL) + 'px'\n }).addClass(!minuteMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\n ({\n left: r + (mL * 1.5) + 'px',\n height: _mL + 'px',\n marginTop: (r - _mL - pL) + 'px'\n }).addClass(minuteMode ? 'on' : '');\n\n angular.element(clockCenter).css({\n left: (r + pL + mL - centerWidth) + 'px',\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\n });\n animateHands();\n };\n\n var animateHands = function () {\n var _date = picker.currentNearest5Minute();\n var h = _date.hour();\n var m = _date.minute();\n\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\n };\n\n var rotateElement = function (el, deg) {\n angular.element(el).css({\n WebkitTransform: 'rotate(' + deg + 'deg)',\n '-moz-transform': 'rotate(' + deg + 'deg)',\n '-ms-transform': 'rotate(' + deg + 'deg)',\n 'transform': 'rotate(' + deg + 'deg)'\n });\n };\n\n\n var setCurrentValue = function () {\n var date = picker.currentNearest5Minute();\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\n };\n\n scope.$watch(function () {\n var tmp = picker.currentNearest5Minute();\n return tmp ? tmp.format('HH:mm') : '';\n }, function () {\n setCurrentValue();\n animateHands();\n });\n\n\n var setDisplayPoints = function (isPM, points) {\n for (var i = 0; i < points.length; i++) {\n points[i].display = i;\n if (isPM) {\n points[i].display += 12;\n }\n }\n return points;\n };\n\n if (!picker.params.shortTime) {\n scope.$watch('picker.meridien', function () {\n if (!minuteMode) {\n if (scope.points) {\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\n scope.points = points;\n }\n }\n });\n }\n\n\n scope.setTime = function (val) {\n if (val === scope.currentValue) {\n picker.ok();\n }\n\n if (!minuteMode) {\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\n } else {\n picker.currentDate.minute(val);\n }\n picker.currentDate.second(0)\n };\n\n scope.pointAvailable = function (point) {\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\n };\n\n var unWatcher = scope.$watch(function () {\n return element[0].querySelectorAll('div').length;\n }, function () {\n exec();\n unWatcher();\n });\n }\n }\n }]);\n\n})();\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","attr","on","e","preventDefault","blur","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","parent","document","body","bindToController","disableParentScroll","hasBackDrop","skipHide","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","minutes","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementYear","amount","isNextYearVisible","add","isPreviousYearVisible","isPreviousMonthVisible","startOf","isNextMonthVisible","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","currentValue","tmp","setDisplayPoints","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\n 'use strict';\n var moduleName = \"ngMaterialDatePicker\";\n\n var VIEW_STATES = {\n DATE: 0,\n HOUR: 1,\n MINUTE: 2\n };\n\n var css = function (el, name) {\n el = angular.element(el);\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\n };\n\n var template = ''\n + ' '\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"dddd\")}}
'\n + '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
'\n + '
'\n + ' ×'\n + '
'\n + '
'\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"MMM\") | uppercase}}
'\n + '
'\n + '
{{picker.currentDate.format(\"DD\")}}
'\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"YYYY\")}}
'\n + '
'\n + '
'\n + '
'//start time\n + '
'\n + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
'\n + '
'\n + '
'\n + ' '\n + '
'\n + '
'\n + '
'\n + ' {{picker.params.amText}}'\n + '
'\n + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
'\n + '
'\n + ' {{picker.params.pmText}}'\n + '
'\n + '
'\n + '
'\n + ' '\n + ' '\n + '
'\n + '
'\n + '
'\n + '
'\n + ' '\n + ' {{picker.params.todayText}}'\n + ' {{picker.params.cancelText}}'\n + ' {{picker.params.okText}}'\n + ' '\n + '
';\n\n\n angular.module(moduleName, ['ngMaterial'])\n .provider('mdcDatetimePickerDefaultLocale', function () {\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\n\n this.$get = function () {\n return this;\n };\n\n this.setDefaultLocale = function (localeString) {\n this.locale = localeString;\n };\n })\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\n var default_params = {\n date: true,\n time: true,\n format: 'YYYY-MM-DD',\n minDate: null,\n maxDate: null,\n currentDate: null,\n lang: mdcDatetimePickerDefaultLocale.locale,\n weekStart: 0,\n shortTime: false,\n cancelText: 'Cancel',\n okText: 'OK',\n amText: 'AM',\n pmText: 'PM',\n todayText: 'Today',\n disableDates: []\n };\n return default_params;\n }])\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\n function ($mdDialog, $timeout) {\n\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n currentDate: '=ngModel',\n ngChange: '&',\n time: '=',\n date: '=',\n minDate: '=',\n maxDate: '=',\n disableDates: '=',\n shortTime: '=',\n weekStart: '=',\n format: '@',\n cancelText: '@',\n okText: '@',\n lang: '@',\n amText: '@',\n pmText: '@',\n showTodaysDate: '@',\n todayText: '@'\n },\n link: function (scope, element, attrs, ngModel) {\n var isOn = false;\n if (!scope.format) {\n if (scope.date && scope.time) {\n scope.format = 'YYYY-MM-DD HH:mm';\n } else if (scope.date) {\n scope.format = 'YYYY-MM-DD';\n } else {\n scope.format = 'HH:mm';\n }\n }\n\n var dateOfTheDay = null;\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\n scope.currentDate = moment(scope.currentDate, scope.format);\n }\n\n if (ngModel) {\n ngModel.$formatters.push(function (value) {\n if (typeof value === 'undefined') {\n return;\n }\n var m = moment(value);\n return m.isValid() ? m.format(scope.format) : '';\n });\n }\n\n element.attr('readonly', '');\n //@TODO custom event to trigger input\n element.on('focus', function (e) {\n e.preventDefault();\n element.blur();\n if (isOn) {\n return;\n }\n isOn = true;\n var options = {};\n for (var i in attrs) {\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\n options[i] = scope[i];\n }\n }\n options.currentDate = scope.currentDate;\n options.showTodaysDate = dateOfTheDay;\n\n var locals = {options: options};\n $mdDialog.show({\n template: template,\n controller: PluginController,\n controllerAs: 'picker',\n locals: locals,\n openFrom: element,\n parent: angular.element(document.body),\n bindToController: true,\n disableParentScroll: false,\n hasBackDrop: false,\n skipHide: true\n })\n .then(function (v) {\n scope.currentDate = v ? v._d : v;\n isOn = false;\n\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\n $timeout(scope.ngChange, 0);\n }\n\n element.blur()\n\n }, function () {\n isOn = false;\n element.blur()\n })\n ;\n });\n }\n };\n }])\n /** Returns a service that opens a dialog when the attribute shown is called\n The dialog serves to select a date/time/etc. depending on the options given to the function show\n\n @param options extends mdcDefaultParams\n {\n date: {boolean} =true,\n time: {boolean] =true,\n format: {string} ='YYYY-MM-DD',\n minDate: {strign} =null,\n maxDate: {string} =null,\n currentDate: {string} =null,\n lang: {string} =mdcDatetimePickerDefaultLocale,\n weekStart: {int} =0,\n shortTime: {boolean} =false,\n cancelText: {string} ='Cancel',\n todayText: {string} ='Today',\n okText: {string} ='OK',\n amText: {string} ='AM',\n pmText: {string} ='PM'\n }\n @return promise\n */\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\n var accepted_options = Object.keys(mdcDefaultParams);\n console.log(accepted_options);\n var service = {\n show: function (options) {\n var deferred = $q.defer();\n var params = angular.copy(mdcDefaultParams);\n for (var i in options) {\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\n params = options[i];\n }\n }\n var locals = {options: options};\n $mdDialog.show({\n template: template,\n controller: PluginController,\n controllerAs: 'picker',\n locals: locals,\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: true,\n disableParentScroll: false,\n skipHide: true\n })\n .then(function (v) {\n var currentDate = v ? v._d : v;\n deferred.resolve(v ? v._d : v);\n }, function () {\n deferred.reject();\n });\n return deferred.promise;\n }\n };\n\n return service;\n }])\n ;\n\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\n this.currentView = VIEW_STATES.DATE;\n this._dialog = $mdDialog;\n\n this._attachedEvents = [];\n this.VIEWS = VIEW_STATES;\n this.params = mdcDefaultParams;\n this.meridien = 'AM';\n this.params = angular.extend(this.params, this.options);\n\n this.init();\n };\n\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\n PluginController.prototype = {\n init: function () {\n this.timeMode = this.params.time && !this.params.date;\n this.dateMode = this.params.date;\n this.initDates();\n this.start();\n },\n currentNearest5Minute: function () {\n var date = this.currentDate || moment();\n var minutes = (5 * Math.round(date.minute() / 5));\n if (minutes >= 60) {\n minutes = 55; //always push down\n }\n return moment(date).minutes(minutes);\n },\n initDates: function () {\n var that = this;\n var _dateParam = function (input, fallback) {\n var ret = null;\n if (angular.isDefined(input) && input !== null && input !== '') {\n if (angular.isString(input)) {\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\n ret = moment(input, that.params.format).locale(that.params.lang);\n }\n else {\n ret = moment(input).locale(that.params.lang);\n }\n } else if (typeof input === 'number') {\n ret = moment(input).locale(that.params.lang);\n } else {\n if (angular.isDate(input)) {\n var x = input.getTime();\n ret = moment(x, \"x\").locale(that.params.lang);\n } else if (input._isAMomentObject) {\n ret = input;\n }\n }\n }\n else {\n ret = fallback;\n }\n return ret;\n };\n\n this.currentDate = _dateParam(this.params.currentDate, moment());\n this.minDate = _dateParam(this.params.minDate);\n this.maxDate = _dateParam(this.params.maxDate);\n this.disableDates = this.params.disableDates.map(function (x) {\n return moment(x).format('MMMM Do YYYY')\n });\n this.selectDate(this.currentDate);\n },\n initDate: function () {\n this.currentView = VIEW_STATES.DATE;\n },\n initHours: function () {\n this.currentView = VIEW_STATES.HOUR;\n },\n initMinutes: function () {\n this.currentView = VIEW_STATES.MINUTE;\n },\n isAfterMinDate: function (date, checkHour, checkMinute) {\n var _return = true;\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n var _minDate = moment(this.minDate);\n var _date = moment(date);\n\n if (!checkHour && !checkMinute) {\n _minDate.hour(0);\n _minDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _minDate.second(0);\n _date.second(0);\n _minDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _minDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\n var _return = true;\n\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n var _maxDate = moment(this.maxDate);\n var _date = moment(date);\n\n if (!checkTime && !checkMinute) {\n _maxDate.hour(0);\n _maxDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _maxDate.second(0);\n _date.second(0);\n _maxDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _maxDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isInDisableDates: function (date) {\n var dut = date.format('MMMM Do YYYY')\n if (this.disableDates.indexOf(dut) > -1) {\n return false;\n }\n return true;\n },\n selectDate: function (date) {\n if (date) {\n this.currentDate = moment(date);\n if (!this.isAfterMinDate(this.currentDate)) {\n this.currentDate = moment(this.minDate);\n }\n\n if (!this.isBeforeMaxDate(this.currentDate)) {\n this.currentDate = moment(this.maxDate);\n }\n this.currentDate.locale(this.params.lang);\n this.calendarStart = moment(this.currentDate);\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\n }\n },\n setName: function () {\n var text = \"\";\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (var i = 0; i < 5; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n },\n isPM: function () {\n return this.meridien === 'PM';\n },\n incrementYear: function (amount) {\n if (amount === 1 && this.isNextYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n\n if (amount === -1 && this.isPreviousYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n },\n isPreviousMonthVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\n },\n isNextMonthVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\n },\n isPreviousYearVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\n },\n isNextYearVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\n },\n isHourAvailable: function (hour) {\n var _date = moment(this.currentDate);\n _date.hour(this.convertHours(hour)).minute(0).second(0);\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\n },\n isMinuteAvailable: function (minute) {\n var _date = moment(this.currentDate);\n _date.minute(minute).second(0);\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\n },\n start: function () {\n this.currentView = VIEW_STATES.DATE;\n //this.initDates();\n if (this.params.date) {\n this.initDate();\n } else {\n if (this.params.time) {\n this.initHours();\n }\n }\n },\n today: function () {\n this.selectDate(Date.now());\n },\n ok: function () {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n if (this.params.time === true) {\n this.initHours();\n }\n else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.HOUR:\n this.initMinutes();\n break;\n case VIEW_STATES.MINUTE:\n this.hide(true);\n break;\n }\n },\n cancel: function () {\n if (this.params.time) {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n this.hide();\n break;\n case VIEW_STATES.HOUR:\n if (this.params.date) {\n this.initDate();\n }\n else {\n this.hide();\n }\n break;\n case VIEW_STATES.MINUTE:\n this.initHours();\n break;\n }\n }\n else {\n this.hide();\n }\n },\n selectMonthBefore: function () {\n this.calendarStart.subtract(1, 'months');\n },\n selectMonthAfter: function () {\n this.calendarStart.add(1, 'months');\n },\n selectYearBefore: function () {\n this.calendarStart.subtract(1, 'years');\n },\n selectYearAfter: function () {\n this.calendarStart.add(1, 'years');\n },\n selectAM: function () {\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\n if (this.currentDate.hour() >= 12) {\n this.selectDate(this.currentDate.subtract(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\n }\n }\n },\n selectPM: function () {\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\n if (this.currentDate.hour() < 12) {\n this.selectDate(this.currentDate.add(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\n }\n }\n },\n convertHours: function (h) {\n var _return = h;\n if ((h < 12) && this.isPM())\n _return += 12;\n\n return _return;\n },\n hide: function (okBtn) {\n if (okBtn) {\n this._dialog.hide(this.currentDate);\n } else {\n this._dialog.cancel();\n }\n }\n };\n\n\n angular.module(moduleName)\n .directive('mdcDatetimePickerCalendar', [\n function () {\n\n var YEAR_MIN = 1920,\n YEAR_MAX = new Date().getFullYear() + 30,\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\n ITEM_HEIGHT = 240,\n MONTHS = [];\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\n MONTHS.push(i);\n }\n\n var currentMonthIndex = function (date, low) {\n low = low ? low : 0;\n var year = date.year();\n var month = date.month();\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\n };\n\n return {\n restrict: 'E',\n scope: {\n picker: '=',\n date: '='\n },\n bindToController: true,\n controllerAs: 'cal',\n controller: ['$scope', function ($scope) {\n this.$onInit = function () {\n var calendar = this,\n picker = this.picker,\n days = [];\n\n for (var i = picker.params.weekStart; days.length < 7; i++) {\n if (i > 6) {\n i = 0;\n }\n days.push(i.toString());\n }\n\n calendar.week = days;\n if (!picker.maxDate && !picker.minDate) {\n calendar.months = MONTHS;\n } else {\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\n calendar.months = MONTHS.slice(low, high);\n }\n\n\n calendar.getItemAtIndex = function (index) {\n var month = ((index + 1) % 12) || 12;\n var year = YEAR_MIN + Math.floor(index / 12);\n var monthObj = moment(picker.currentDate)\n .year(year)\n .month(month);\n return generateMonthCalendar(monthObj);\n };\n\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\n\n $scope.$watch(function () {\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\n }, function (val2, val1) {\n if (val2 != val1) {\n var nDate = moment(val2, 'YYYY-MM');\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var index = currentMonthIndex(nDate, low);\n if (calendar.topIndex != index) {\n calendar.topIndex = index;\n }\n }\n });\n\n var generateMonthCalendar = function (date) {\n var month = {};\n if (date !== null) {\n month.name = date.format('MMMM YYYY');\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\n .hour(date.hour())\n .minute(date.minute())\n ;\n var iNumDay = startOfMonth.format('d');\n month.days = [];\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\n if (i === startOfMonth.date()) {\n var iWeek = calendar.week.indexOf(iNumDay.toString());\n if (iWeek > 0) {\n for (var x = 0; x < iWeek; x++) {\n month.days.push(0);\n }\n }\n }\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\n }\n\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\n for (var j = 0; j < slices; j++) {\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\n }\n month.days = daysTmp;\n return month;\n }\n\n };\n\n calendar.toDay = function (i) {\n return moment(parseInt(i), \"d\")\n .locale(picker.params.lang)\n .format(\"dd\")\n .substring(0, 1);\n };\n\n calendar.isInRange = function (date) {\n return picker.isAfterMinDate(moment(date), false, false)\n && picker.isBeforeMaxDate(moment(date), false, false)\n && picker.isInDisableDates(moment(date));\n };\n\n calendar.selectDate = function (date) {\n if (date) {\n if (calendar.isSelectedDay(date)) {\n return picker.ok();\n }\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\n }\n };\n\n calendar.isSelectedDay = function (m) {\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\n };\n\n calendar.isDateOfTheDay = function (m) {\n var today = calendar.picker.options.showTodaysDate;\n if (!today) {\n return false;\n }\n\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\n }\n }\n }],\n template: '' +\n '
' +\n '
' +\n '
' +\n '
'\n };\n }])\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\n function ($compile) {\n var buildCalendarContent = function (element, scope) {\n var tbody = angular.element(element[0].querySelector('tbody'));\n var calendar = scope.cal, month = scope.month;\n\n var tbodyHtml = [];\n\n month.days.forEach(function (weekDays, i) {\n tbodyHtml.push('');\n weekDays.forEach(function (weekDay, j) {\n tbodyHtml.push('');\n if (weekDay) {\n if (calendar.isInRange(weekDay)) {\n //build a\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\n\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n } else {\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n }\n }\n tbodyHtml.push('');\n });\n tbodyHtml.push('');\n });\n\n tbody.html(tbodyHtml.join(''));\n $compile(tbody)(scope);\n };\n\n return {\n scope: {\n idx: '='\n },\n require: '^mdcDatetimePickerCalendar',\n restrict: 'AE',\n template: '
{{month.name}}
'\n + ''\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + '
{{cal.toDay(day)}}
',\n link: function (scope, element, attrs, calendar) {\n scope.cal = calendar;\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n scope.$watch(function () {\n return scope.idx;\n }, function (idx, oldIdx) {\n if (idx != oldIdx) {\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n }\n });\n }\n };\n }\n ])\n ;\n\n angular.module(moduleName)\n .directive('mdcDtpNoclick', function () {\n return {\n link: function (scope, el) {\n el.on('click', function (e) {\n e.preventDefault();\n });\n }\n };\n });\n angular.module(moduleName)\n .directive('mdcDatetimePickerClock', [\n function () {\n\n var template = '
 '\n + '
'\n + ' {{point.display}}'\n + ' {{point.display}}'\n + '
'\n + '
'\n + '
'\n + '
'\n + '
';\n\n return {\n restrict: 'E',\n template: template,\n link: function (scope, element, attrs) {\n var minuteMode = attrs.mode === 'minutes';\n var picker = scope.picker;\n //banking on the fact that there will only be one at a time\n var componentRoot = document.querySelector('md-dialog.dtp');\n var exec = function () {\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\n\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\n //set width\n var clockWidth = (w - (ml + mr + pl + pr));\n clock.css('width', (clockWidth) + 'px');\n\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\n\n var r = (clockWidth / 2);\n var j = r / 1.2; //???\n\n var points = [];\n\n for (var h = 0; h < 12; ++h) {\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\n var left = (r + x + pL / 2) - (pL + mL);\n var top = (r - y - mT / 2) - (pT + mT);\n\n var hour = {\n left: left,\n top: top,\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\n };\n\n if (minuteMode) {\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\n } else {\n\n if (picker.params.shortTime) {\n hour.display = (h === 0) ? 12 : h;\n } else {\n hour.display = picker.isPM() ? h + 12 : h;\n }\n }\n\n\n points.push(hour);\n }\n\n scope.points = points;\n scope.mode = attrs.mode;\n setCurrentValue();\n clock.css('height', clockWidth + 'px');\n //picker.initHands(true);\n\n var clockCenter = element[0].querySelector('.dtp-clock-center');\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\n var _hL = r / 1.8;\n var _mL = r / 1.5;\n\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _hL + 'px',\n marginTop: (r - _hL - pL) + 'px'\n }).addClass(!minuteMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\n ({\n left: r + (mL * 1.5) + 'px',\n height: _mL + 'px',\n marginTop: (r - _mL - pL) + 'px'\n }).addClass(minuteMode ? 'on' : '');\n\n angular.element(clockCenter).css({\n left: (r + pL + mL - centerWidth) + 'px',\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\n });\n animateHands();\n };\n\n var animateHands = function () {\n var _date = picker.currentNearest5Minute();\n var h = _date.hour();\n var m = _date.minute();\n\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\n };\n\n var rotateElement = function (el, deg) {\n angular.element(el).css({\n WebkitTransform: 'rotate(' + deg + 'deg)',\n '-moz-transform': 'rotate(' + deg + 'deg)',\n '-ms-transform': 'rotate(' + deg + 'deg)',\n 'transform': 'rotate(' + deg + 'deg)'\n });\n };\n\n\n var setCurrentValue = function () {\n var date = picker.currentNearest5Minute();\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\n };\n\n scope.$watch(function () {\n var tmp = picker.currentNearest5Minute();\n return tmp ? tmp.format('HH:mm') : '';\n }, function () {\n setCurrentValue();\n animateHands();\n });\n\n\n var setDisplayPoints = function (isPM, points) {\n for (var i = 0; i < points.length; i++) {\n points[i].display = i;\n if (isPM) {\n points[i].display += 12;\n }\n }\n return points;\n };\n\n if (!picker.params.shortTime) {\n scope.$watch('picker.meridien', function () {\n if (!minuteMode) {\n if (scope.points) {\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\n scope.points = points;\n }\n }\n });\n }\n\n\n scope.setTime = function (val) {\n if (val === scope.currentValue) {\n picker.ok();\n }\n\n if (!minuteMode) {\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\n } else {\n picker.currentDate.minute(val);\n }\n picker.currentDate.second(0)\n };\n\n scope.pointAvailable = function (point) {\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\n };\n\n var unWatcher = scope.$watch(function () {\n return element[0].querySelectorAll('div').length;\n }, function () {\n exec();\n unWatcher();\n });\n }\n }\n }]);\n\n})();\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index d4891c4..ed35997 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -.dtp .p10,.dtp .p20,.dtp .p60,.dtp .p80,.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-maxtime,.dtp div.dtp-actual-num{font-size:3em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#DCEDC8}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#DCEDC8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:.25em;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#BDBDBD!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8BC34A}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689F38;text-decoration:none}.dtp .p10{width:10%}.dtp .p20{width:20%}.dtp .p60{width:60%}.dtp .p80{width:80%}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected,.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0;padding:10px;border-radius:50%!important;background:#eee}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:3em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:3em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:.25em;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index dfcbd4e..c74c87c 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -42,11 +42,11 @@ + '
' + '
' + ' ' + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' + ' ' + '
' + '
' @@ -746,7 +746,7 @@ //build a var scopeRef = 'month[\'days\'][' + i + '][' + j + ']'; - tbodyHtml.push(''); + tbodyHtml.push(''); tbodyHtml.push(weekDay.format('D')); tbodyHtml.push(''); } else { @@ -814,7 +814,7 @@ var template = '
 ' + '' + '
' @@ -882,6 +882,7 @@ } scope.points = points; + scope.mode = attrs.mode; setCurrentValue(); clock.css('height', clockWidth + 'px'); //picker.initHands(true); From f64334e6deabd4fc30837627b0c77ae44f7ed5fd Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 12 Feb 2017 00:56:54 -0500 Subject: [PATCH 006/226] fix small js error --- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- js/angular-material-datetimepicker.js | 159 +++++++++--------- yarn.lock | 24 +-- 5 files changed, 96 insertions(+), 93 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 821f72a..891a04d 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.attr("readonly",""),n.on("focus",function(c){if(c.preventDefault(),n.blur(),!o){o=!0;var d={};for(var u in s)a.hasOwnProperty(u)&&!angular.isUndefined(a[u])&&(d[u]=a[u]);d.currentDate=a.currentDate,d.showTodaysDate=l;var m={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:m,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,skipHide:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.blur()},function(){o=!1,n.blur()})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,skipHide:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return u(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var u=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var i=angular.element(e[0].querySelector(".dtp-picker-clock")),c=angular.element(s.querySelector(".dtp-picker")),l=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(c,"paddingLeft").replace("px",""))||0,m=parseInt(a(c,"paddingRight").replace("px",""))||0,p=parseInt(a(i,"marginLeft").replace("px",""))||0,h=parseInt(a(i,"marginRight").replace("px",""))||0,f=l-(p+h+u+m);i.css("width",f+"px");for(var D=parseInt(a(c,"paddingLeft").replace("px",""))||0,v=parseInt(a(c,"paddingTop").replace("px",""))||0,g=parseInt(a(i,"marginLeft").replace("px",""))||0,k=parseInt(a(i,"marginTop").replace("px",""))||0,M=f/2,y=M/1.2,x=[],b=0;b<12;++b){var T=y*Math.sin(2*Math.PI*(b/12)),w=y*Math.cos(2*Math.PI*(b/12)),A=M+T+D/2-(D+g),Y=M-w-k/2-(v+k),I={left:A,top:Y,value:r?5*b:b,style:{"margin-left":A+"px","margin-top":Y+"px"}};r?I.display=I.value<10?"0"+I.value:I.value:n.params.shortTime?I.display=0===b?12:b:I.display=n.isPM()?b+12:b,x.push(I)}t.points=x,d(),i.css("height",f+"px");var S=e[0].querySelector(".dtp-clock-center"),H=S.offsetWidth/2||7.5,P=S.offsetHeight/2||7.5,V=M/1.8,E=M/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*g+"px",height:V+"px",marginTop:M-V-D+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*g+"px",height:E+"px",marginTop:M-E-D+"px"}).addClass(r?"on":""),angular.element(S).css({left:M+D+g-H+"px",marginTop:M-g/2-P+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var u=function(t,e){for(var a=0;a{{picker.params.amText}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.attr("readonly",""),n.on("focus",function(c){if(c.preventDefault(),n.blur(),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,skipHide:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.blur()},function(){o=!1,n.blur()})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,skipHide:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),I=y-Y-M/2-(g+M),S={left:A,top:I,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":I+"px"}};r?S.display=S.value<10?"0"+S.value:S.value:n.params.shortTime?S.display=0===T?12:T:S.display=n.isPM()?T+12:T,b.push(S)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var H=e[0].querySelector(".dtp-clock-center"),P=H.offsetWidth/2||7.5,V=H.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(H).css({left:y+v+k-P+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a'\r\n + '
'\r\n + '
'\r\n + '
{{picker.currentDate.format(\"dddd\")}}
'\r\n + '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
'\r\n + '
'\r\n + ' ×'\r\n + '
'\r\n + '
'\r\n + '
'\r\n + '
'\r\n + '
{{picker.currentDate.format(\"MMM\") | uppercase}}
'\r\n + '
'\r\n + '
{{picker.currentDate.format(\"DD\")}}
'\r\n + '
'\r\n + '
'\r\n + '
{{picker.currentDate.format(\"YYYY\")}}
'\r\n + '
'\r\n + '
'\r\n + '
'//start time\r\n + '
'\r\n + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
'\r\n + '
'\r\n + '
'\r\n + ' '\r\n + '
'\r\n + '
'\r\n + '
'\r\n + ' {{picker.params.amText}}'\r\n + '
'\r\n + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
'\r\n + '
'\r\n + ' {{picker.params.pmText}}'\r\n + '
'\r\n + '
'\r\n + '
'\r\n + ' '\r\n + ' '\r\n + '
'\r\n + '
'\r\n + '
'\r\n + ' '\r\n + ' '\r\n + ' {{picker.params.todayText}}'\r\n + ' {{picker.params.cancelText}}'\r\n + ' {{picker.params.okText}}'\r\n + ' '\r\n + '';\r\n\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: []\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@'\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n element.attr('readonly', '');\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: false,\r\n hasBackDrop: false,\r\n skipHide: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.blur()\r\n\r\n }, function () {\r\n isOn = false;\r\n element.blur()\r\n })\r\n ;\r\n });\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean] =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM'\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: false,\r\n skipHide: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY')\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY')\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n //this.initDates();\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n }\r\n else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n this.initMinutes();\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate)\r\n .year(year)\r\n .month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute())\r\n ;\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false)\r\n && picker.isBeforeMaxDate(moment(date), false, false)\r\n && picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n }\r\n }\r\n }],\r\n template: '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: '
{{month.name}}
'\r\n + ''\r\n + ' '\r\n + ' '\r\n + ' '\r\n + ' '\r\n + ' '\r\n + ' '\r\n + ' '\r\n + '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = '
 '\r\n + '
'\r\n + ' {{point.display}}'\r\n + ' {{point.display}}'\r\n + '
'\r\n + '
'\r\n + '
'\r\n + '
'\r\n + '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n //picker.initHands(true);\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0)\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n }\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","attr","on","e","preventDefault","blur","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","parent","document","body","bindToController","disableParentScroll","hasBackDrop","skipHide","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","minutes","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementYear","amount","isNextYearVisible","add","isPreviousYearVisible","isPreviousMonthVisible","startOf","isNextMonthVisible","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","currentValue","tmp","setDisplayPoints","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"CAAA,WACE,YACA,IAAIA,GAAa,uBAEbC,GACFC,KAAM,EACNC,KAAM,EACNC,OAAQ,GAGNC,EAAM,SAAUC,EAAIC,GAEtB,MADAD,GAAKE,QAAQC,QAAQH,GACb,oBAAsBI,QAAUA,OAAOC,iBAAiBL,EAAG,IAAIC,GAAQD,EAAGD,IAAIE,IAGpFK,EACF,ukHAmDFJ,SAAQK,OAAOb,GAAa,eACzBc,SAAS,iCAAkC,WAC1CC,KAAKC,OAASN,OAAOO,UAAUC,cAAgBR,OAAOO,UAAUE,UAAY,KAE5EJ,KAAKK,KAAO,WACV,MAAOL,OAGTA,KAAKM,iBAAmB,SAAUC,GAChCP,KAAKC,OAASM,KAGjBC,QAAQ,oBAAqB,iCAAkC,SAAUC,GACxE,GAAIC,IACFC,MAAM,EACNC,MAAM,EACNC,OAAQ,aACRC,QAAS,KACTC,QAAS,KACTC,YAAa,KACbC,KAAMR,EAA+BR,OACrCiB,UAAW,EACXC,WAAW,EACXC,WAAY,SACZC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,UAAW,QACXC,gBAEF,OAAOf,MAERgB,UAAU,qBAAsB,YAAa,WAC5C,SAAUC,EAAWC,GAEnB,OACEC,SAAU,IACVC,QAAS,UACTC,OACEf,YAAa,WACbgB,SAAU,IACVpB,KAAM,IACND,KAAM,IACNG,QAAS,IACTC,QAAS,IACTU,aAAc,IACdN,UAAW,IACXD,UAAW,IACXL,OAAQ,IACRO,WAAY,IACZC,OAAQ,IACRJ,KAAM,IACNK,OAAQ,IACRC,OAAQ,IACRU,eAAgB,IAChBT,UAAW,KAEbU,KAAM,SAAUH,EAAOrC,EAASyC,EAAOC,GACrC,GAAIC,IAAO,CACNN,GAAMlB,SACLkB,EAAMpB,MAAQoB,EAAMnB,KACtBmB,EAAMlB,OAAS,mBACNkB,EAAMpB,KACfoB,EAAMlB,OAAS,aAEfkB,EAAMlB,OAAS,QAInB,IAAIyB,GAAe,IACUC,UAAzBR,EAAME,gBAAyD,UAAzBF,EAAME,iBAC9CK,EAAeE,UAGb/C,QAAQgD,SAASV,EAAMf,cAAsC,KAAtBe,EAAMf,cAC/Ce,EAAMf,YAAcwB,OAAOT,EAAMf,YAAae,EAAMlB,SAGlDuB,GACFA,EAAQM,YAAYC,KAAK,SAAUC,GACjC,GAAqB,mBAAVA,GAAX,CAGA,GAAIC,GAAIL,OAAOI,EACf,OAAOC,GAAEC,UAAYD,EAAEhC,OAAOkB,EAAMlB,QAAU,MAIlDnB,EAAQqD,KAAK,WAAY,IAEzBrD,EAAQsD,GAAG,QAAS,SAAUC,GAG5B,GAFAA,EAAEC,iBACFxD,EAAQyD,QACJd,EAAJ,CAGAA,GAAO,CACP,IAAIe,KACJ,KAAK,GAAIC,KAAKlB,GACRJ,EAAMuB,eAAeD,KAAO5D,QAAQ8D,YAAYxB,EAAMsB,MACxDD,EAAQC,GAAKtB,EAAMsB,GAGvBD,GAAQpC,YAAce,EAAMf,YAC5BoC,EAAQnB,eAAiBK,CAEzB,IAAIkB,IAAUJ,QAASA,EACvBzB,GAAU8B,MACR5D,SAAUA,EACV6D,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRK,SAAUnE,EACVoE,OAAQrE,QAAQC,QAAQqE,SAASC,MACjCC,kBAAkB,EAClBC,qBAAqB,EACrBC,aAAa,EACbC,UAAU,IAETC,KAAK,SAAUC,GACdvC,EAAMf,YAAcsD,EAAIA,EAAEC,GAAKD,EAC/BjC,GAAO,EAEFG,OAAOT,EAAMf,aAAawD,OAAOpB,EAAQpC,cAC5CY,EAASG,EAAMC,SAAU,GAG3BtC,EAAQyD,QAEP,WACDd,GAAO,EACP3C,EAAQyD,iBA6BrB3C,QAAQ,qBAAsB,YAAa,KAAM,mBAAoB,SAAUmB,EAAW8C,EAAIC,GAC7F,GAAIC,GAAmBC,OAAOC,KAAKH,EACnCI,SAAQC,IAAIJ,EACZ,IAAIK,IACFvB,KAAM,SAAUL,GACd,GAAI6B,GAAWR,EAAGS,QACdC,EAAS1F,QAAQ2F,KAAKV,EAC1B,KAAK,GAAIrB,KAAKD,GACRuB,EAAiBU,QAAQhC,KAAM,GAAMD,EAAQE,eAAeD,KAC9D8B,EAAS/B,EAAQC,GAGrB,IAAIG,IAAUJ,QAASA,EAkBvB,OAjBAzB,GAAU8B,MACR5D,SAAUA,EACV6D,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRM,OAAQrE,QAAQC,QAAQqE,SAASC,MACjCC,kBAAkB,EAClBqB,qBAAqB,EACrBpB,qBAAqB,EACrBE,UAAU,IAETC,KAAK,SAAUC,GACIA,EAAIA,EAAEC,GAAKD,CAC7BW,GAASM,QAAQjB,EAAIA,EAAEC,GAAKD,IAC3B,WACDW,EAASO,WAENP,EAASQ,SAIpB,OAAOT,KAIX,IAAIrB,GAAmB,SAAU+B,EAAQ/D,EAAW+C,GAClD1E,KAAK2F,YAAczG,EAAYC,KAC/Ba,KAAK4F,QAAUjE,EAEf3B,KAAK6F,mBACL7F,KAAK8F,MAAQ5G,EACbc,KAAKmF,OAAST,EACd1E,KAAK+F,SAAW,KAChB/F,KAAKmF,OAAS1F,QAAQuG,OAAOhG,KAAKmF,OAAQnF,KAAKoD,SAE/CpD,KAAKiG,OAGPtC,GAAiBuC,SAAW,SAAU,YAAa,oBACnDvC,EAAiBwC,WACfF,KAAM,WACJjG,KAAKoG,SAAWpG,KAAKmF,OAAOvE,OAASZ,KAAKmF,OAAOxE,KACjDX,KAAKqG,SAAWrG,KAAKmF,OAAOxE,KAC5BX,KAAKsG,YACLtG,KAAKuG,SAEPC,sBAAuB,WACrB,GAAI7F,GAAOX,KAAKgB,aAAewB,SAC3BiE,EAAW,EAAIC,KAAKC,MAAMhG,EAAKiG,SAAW,EAI9C,OAHIH,IAAW,KACbA,EAAU,IAELjE,OAAO7B,GAAM8F,QAAQA,IAE9BH,UAAW,WACT,GAAIO,GAAO7G,KACP8G,EAAa,SAAUC,EAAOC,GAChC,GAAIC,GAAM,IACV,IAAIxH,QAAQyH,UAAUH,IAAoB,OAAVA,GAA4B,KAAVA,EAChD,GAAItH,QAAQgD,SAASsE,GAEjBE,EADiC,mBAAxBJ,GAAK1B,OAAa,QAA4C,OAAvB0B,EAAK1B,OAAOtE,OACtD2B,OAAOuE,EAAOF,EAAK1B,OAAOtE,QAAQZ,OAAO4G,EAAK1B,OAAOlE,MAGrDuB,OAAOuE,GAAO9G,OAAO4G,EAAK1B,OAAOlE,UAEpC,IAAqB,gBAAV8F,GAChBE,EAAMzE,OAAOuE,GAAO9G,OAAO4G,EAAK1B,OAAOlE,UAEvC,IAAIxB,QAAQ0H,OAAOJ,GAAQ,CACzB,GAAIK,GAAIL,EAAMM,SACdJ,GAAMzE,OAAO4E,EAAG,KAAKnH,OAAO4G,EAAK1B,OAAOlE,UAC/B8F,GAAMO,mBACfL,EAAMF,OAKVE,GAAMD,CAER,OAAOC,GAGTjH,MAAKgB,YAAc8F,EAAW9G,KAAKmF,OAAOnE,YAAawB,UACvDxC,KAAKc,QAAUgG,EAAW9G,KAAKmF,OAAOrE,SACtCd,KAAKe,QAAU+F,EAAW9G,KAAKmF,OAAOpE,SACtCf,KAAKyB,aAAezB,KAAKmF,OAAO1D,aAAa8F,IAAI,SAAUH,GACzD,MAAO5E,QAAO4E,GAAGvG,OAAO,kBAE1Bb,KAAKwH,WAAWxH,KAAKgB,cAEvByG,SAAU,WACRzH,KAAK2F,YAAczG,EAAYC,MAEjCuI,UAAW,WACT1H,KAAK2F,YAAczG,EAAYE,MAEjCuI,YAAa,WACX3H,KAAK2F,YAAczG,EAAYG,QAEjCuI,eAAgB,SAAUjH,EAAMkH,EAAWC,GACzC,GAAIC,IAAU,CAEd,IAA6B,mBAAlB/H,MAAY,SAAsC,OAAjBA,KAAKc,QAAkB,CACjE,GAAIkH,GAAWxF,OAAOxC,KAAKc,SACvBmH,EAAQzF,OAAO7B,EAEdkH,IAAcC,IACjBE,EAASE,KAAK,GACdF,EAASpB,OAAO,GAEhBqB,EAAMC,KAAK,GACXD,EAAMrB,OAAO,IAGfoB,EAASG,OAAO,GAChBF,EAAME,OAAO,GACbH,EAASI,YAAY,GACrBH,EAAMG,YAAY,GAEbN,EAOHC,EAAWM,SAASJ,EAAMpH,OAAO,OAASwH,SAASL,EAASnH,OAAO,OANnEoH,EAAMrB,OAAO,GACboB,EAASpB,OAAO,GAEhBmB,EAAWM,SAASJ,EAAMpH,OAAO,OAASwH,SAASL,EAASnH,OAAO,OAOvE,MAAOkH,IAETO,gBAAiB,SAAU3H,EAAM4H,EAAWT,GAC1C,GAAIC,IAAU,CAEd,IAA6B,mBAAlB/H,MAAY,SAAsC,OAAjBA,KAAKe,QAAkB,CACjE,GAAIyH,GAAWhG,OAAOxC,KAAKe,SACvBkH,EAAQzF,OAAO7B,EAEd4H,IAAcT,IACjBU,EAASN,KAAK,GACdM,EAAS5B,OAAO,GAEhBqB,EAAMC,KAAK,GACXD,EAAMrB,OAAO,IAGf4B,EAASL,OAAO,GAChBF,EAAME,OAAO,GACbK,EAASJ,YAAY,GACrBH,EAAMG,YAAY,GAEbN,EAOHC,EAAWM,SAASJ,EAAMpH,OAAO,OAASwH,SAASG,EAAS3H,OAAO,OANnEoH,EAAMrB,OAAO,GACb4B,EAAS5B,OAAO,GAEhBmB,EAAWM,SAASJ,EAAMpH,OAAO,OAASwH,SAASG,EAAS3H,OAAO,OAOvE,MAAOkH,IAETU,iBAAkB,SAAU9H,GAC1B,GAAI+H,GAAM/H,EAAKE,OAAO,eACtB,SAAIb,KAAKyB,aAAa4D,QAAQqD,IAAO,IAKvClB,WAAY,SAAU7G,GAChBA,IACFX,KAAKgB,YAAcwB,OAAO7B,GACrBX,KAAK4H,eAAe5H,KAAKgB,eAC5BhB,KAAKgB,YAAcwB,OAAOxC,KAAKc,UAG5Bd,KAAKsI,gBAAgBtI,KAAKgB,eAC7BhB,KAAKgB,YAAcwB,OAAOxC,KAAKe,UAEjCf,KAAKgB,YAAYf,OAAOD,KAAKmF,OAAOlE,MACpCjB,KAAK2I,cAAgBnG,OAAOxC,KAAKgB,aACjChB,KAAK+F,SAAW/F,KAAKgB,YAAYkH,QAAU,GAAK,KAAO,OAG3DU,QAAS,WAIP,IAAK,GAHDC,GAAO,GACPC,EAAW,iEAENzF,EAAI,EAAGA,EAAI,EAAGA,IACrBwF,GAAQC,EAASC,OAAOrC,KAAKsC,MAAMtC,KAAKuC,SAAWH,EAASI,QAG9D,OAAOL,IAETM,KAAM,WACJ,MAAyB,OAAlBnJ,KAAK+F,UAEdqD,cAAe,SAAUC,GACR,IAAXA,GAAgBrJ,KAAKsJ,qBACvBtJ,KAAKwH,WAAWxH,KAAKgB,YAAYuI,IAAIF,EAAQ,SAG3CA,KAAW,GAAMrJ,KAAKwJ,yBACxBxJ,KAAKwH,WAAWxH,KAAKgB,YAAYuI,IAAIF,EAAQ,UAGjDI,uBAAwB,WACtB,MAAOzJ,MAAK2I,eAAiB3I,KAAK4H,eAAepF,OAAOxC,KAAK2I,eAAee,QAAQ,UAAU,GAAO,IAEvGC,mBAAoB,WAClB,MAAO3J,MAAK2I,eAAiB3I,KAAKsI,gBAAgB9F,OAAOxC,KAAK2I,eAAeiB,MAAM,UAAU,GAAO,IAEtGJ,sBAAuB,WACrB,MAAOxJ,MAAK2I,eAAiB3I,KAAK4H,eAAepF,OAAOxC,KAAK2I,eAAee,QAAQ,SAAS,GAAO,IAEtGJ,kBAAmB,WACjB,MAAOtJ,MAAK2I,eAAiB3I,KAAKsI,gBAAgB9F,OAAOxC,KAAK2I,eAAeiB,MAAM,SAAS,GAAO,IAErGC,gBAAiB,SAAU3B,GACzB,GAAID,GAAQzF,OAAOxC,KAAKgB,YAExB,OADAiH,GAAMC,KAAKlI,KAAK8J,aAAa5B,IAAOtB,OAAO,GAAGuB,OAAO,GAC9CnI,KAAK4H,eAAeK,GAAO,GAAM,IAAUjI,KAAKsI,gBAAgBL,GAAO,GAAM,IAEtF8B,kBAAmB,SAAUnD,GAC3B,GAAIqB,GAAQzF,OAAOxC,KAAKgB,YAExB,OADAiH,GAAMrB,OAAOA,GAAQuB,OAAO,GACrBnI,KAAK4H,eAAeK,GAAO,GAAM,IAASjI,KAAKsI,gBAAgBL,GAAO,GAAM,IAErF1B,MAAO,WACLvG,KAAK2F,YAAczG,EAAYC,KAE3Ba,KAAKmF,OAAOxE,KACdX,KAAKyH,WAEDzH,KAAKmF,OAAOvE,MACdZ,KAAK0H,aAIXsC,MAAO,WACLhK,KAAKwH,WAAWyC,KAAKC,QAEvBC,GAAI,WACF,OAAQnK,KAAK2F,aACX,IAAKzG,GAAYC,KACXa,KAAKmF,OAAOvE,QAAS,EACvBZ,KAAK0H,YAGL1H,KAAKoK,MAAK,EAEZ,MACF,KAAKlL,GAAYE,KACfY,KAAK2H,aACL,MACF,KAAKzI,GAAYG,OACfW,KAAKoK,MAAK,KAIhBC,OAAQ,WACN,GAAIrK,KAAKmF,OAAOvE,KACd,OAAQZ,KAAK2F,aACX,IAAKzG,GAAYC,KACfa,KAAKoK,MACL,MACF,KAAKlL,GAAYE,KACXY,KAAKmF,OAAOxE,KACdX,KAAKyH,WAGLzH,KAAKoK,MAEP,MACF,KAAKlL,GAAYG,OACfW,KAAK0H,gBAKT1H,MAAKoK,QAGTE,kBAAmB,WACjBtK,KAAK2I,cAAc4B,SAAS,EAAG,WAEjCC,iBAAkB,WAChBxK,KAAK2I,cAAcY,IAAI,EAAG,WAE5BkB,iBAAkB,WAChBzK,KAAK2I,cAAc4B,SAAS,EAAG,UAEjCG,gBAAiB,WACf1K,KAAK2I,cAAcY,IAAI,EAAG,UAE5BoB,SAAU,YACJ3K,KAAK6J,gBAAgB,IAAM7J,KAAK6J,gBAAgB,OAC9C7J,KAAKgB,YAAYkH,QAAU,IAC7BlI,KAAKwH,WAAWxH,KAAKgB,YAAYuJ,SAAS,GAAI,UAE3CvK,KAAK6J,gBAAgB7J,KAAKgB,YAAYkH,SACzClI,KAAKwH,WAAWxH,KAAKgB,YAAYkH,KAAKlI,KAAKc,QAAQoH,SAEhDlI,KAAK+J,kBAAkB/J,KAAKgB,YAAY4F,WAC3C5G,KAAKwH,WAAWxH,KAAKgB,YAAY4F,OAAO5G,KAAKc,QAAQ8F,aAI3DgE,SAAU,YACJ5K,KAAK6J,gBAAgB,KAAO7J,KAAK6J,gBAAgB,OAC/C7J,KAAKgB,YAAYkH,OAAS,IAC5BlI,KAAKwH,WAAWxH,KAAKgB,YAAYuI,IAAI,GAAI,UAEtCvJ,KAAK6J,gBAAgB7J,KAAKgB,YAAYkH,SACzClI,KAAKwH,WAAWxH,KAAKgB,YAAYkH,KAAKlI,KAAKe,QAAQmH,SAEhDlI,KAAK+J,kBAAkB/J,KAAKgB,YAAY4F,WAC3C5G,KAAKwH,WAAWxH,KAAKgB,YAAY4F,OAAO5G,KAAKe,QAAQ6F,aAI3DkD,aAAc,SAAUe,GACtB,GAAI9C,GAAU8C,CAId,OAHKA,GAAI,IAAO7K,KAAKmJ,SACnBpB,GAAW,IAENA,GAETqC,KAAM,SAAUU,GACVA,EACF9K,KAAK4F,QAAQwE,KAAKpK,KAAKgB,aAEvBhB,KAAK4F,QAAQyE,WAMnB5K,QAAQK,OAAOb,GACZyC,UAAU,6BACT,WAOE,IAAK,GALDqJ,GAAW,KACbC,GAAW,GAAIf,OAAOgB,cAAgB,GACtCC,EAA4C,IAA3BF,EAAWD,EAAW,GACvCI,EAAc,IACdC,KACO/H,EAAI,EAAGA,EAAI6H,EAAe7H,IACjC+H,EAAOzI,KAAKU,EAGd,IAAIgI,GAAoB,SAAU1K,EAAM2K,GACtCA,EAAMA,EAAMA,EAAM,CAClB,IAAIC,GAAO5K,EAAK4K,OACZC,EAAQ7K,EAAK6K,OACjB,OAA6B,KAAnBD,EAAOR,GAAkBS,EAAQ,EAAMF,EAGnD,QACEzJ,SAAU,IACVE,OACE0J,OAAQ,IACR9K,KAAM,KAERsD,kBAAkB,EAClBL,aAAc,MACdF,YAAa,SAAU,SAAUgC,GAC/B1F,KAAK0L,QAAU,WAKb,IAAK,GAJDC,GAAW3L,KACbyL,EAASzL,KAAKyL,OACdG,KAEOvI,EAAIoI,EAAOtG,OAAOjE,UAAW0K,EAAK1C,OAAS,EAAG7F,IACjDA,EAAI,IACNA,EAAI,GAENuI,EAAKjJ,KAAKU,EAAEwI,WAId,IADAF,EAASG,KAAOF,EACXH,EAAO1K,SAAY0K,EAAO3K,QAExB,CACL,GAAIwK,GAAMG,EAAO3K,QAAUuK,EAAkBI,EAAO3K,SAAW,EAC3DiL,EAAON,EAAO1K,QAAWsK,EAAkBI,EAAO1K,SAAW,EAAKmK,CACtES,GAASK,OAASZ,EAAOa,MAAMX,EAAKS,OAJpCJ,GAASK,OAASZ,CAQpBO,GAASO,eAAiB,SAAUC,GAClC,GAAIX,IAAUW,EAAQ,GAAK,IAAO,GAC9BZ,EAAOR,EAAWrE,KAAKsC,MAAMmD,EAAQ,IACrCC,EAAW5J,OAAOiJ,EAAOzK,aAC1BuK,KAAKA,GACLC,MAAMA,EACT,OAAOa,GAAsBD,IAG/BT,EAASW,SAAWjB,EAAkBI,EAAOzK,aAAe2K,EAASK,OAAO,GAE5EtG,EAAO6G,OAAO,WACZ,MAAOd,GAAOzK,YAAcyK,EAAOzK,YAAYH,OAAO,WAAa,IAClE,SAAU2L,EAAMC,GACjB,GAAID,GAAQC,EAAM,CAChB,GAAIC,GAAQlK,OAAOgK,EAAM,WACrBlB,EAAMG,EAAO3K,QAAUuK,EAAkBI,EAAO3K,SAAW,EAC3DqL,EAAQd,EAAkBqB,EAAOpB,EACjCK,GAASW,UAAYH,IACvBR,EAASW,SAAWH,KAK1B,IAAIE,GAAwB,SAAU1L,GACpC,GAAI6K,KACJ,IAAa,OAAT7K,EAAe,CACjB6K,EAAMhM,KAAOmB,EAAKE,OAAO,YACzB,IAAI8L,GAAenK,OAAO7B,GAAMV,OAAOwL,EAAOtG,OAAOlE,MAAMyI,QAAQ,SAC9DxB,KAAKvH,EAAKuH,QACVtB,OAAOjG,EAAKiG,UAEbgG,EAAUD,EAAa9L,OAAO,IAClC2K,GAAMI,OACN,KAAK,GAAIvI,GAAIsJ,EAAahM,OAAQ0C,GAAKsJ,EAAaE,cAAexJ,IAAK,CACtE,GAAIA,IAAMsJ,EAAahM,OAAQ,CAC7B,GAAImM,GAAQnB,EAASG,KAAKzG,QAAQuH,EAAQf,WAC1C,IAAIiB,EAAQ,EACV,IAAK,GAAI1F,GAAI,EAAGA,EAAI0F,EAAO1F,IACzBoE,EAAMI,KAAKjJ,KAAK,GAItB6I,EAAMI,KAAKjJ,KAAKH,OAAOmK,GAAc1M,OAAOwL,EAAOtG,OAAOlE,MAAMN,KAAK0C,IAIvE,IAAK,GADD0J,GAAc,EAAGC,KAAcC,EAASvG,KAAKwG,KAAK1B,EAAMI,KAAK1C,OAAS6D,GACjEI,EAAI,EAAGA,EAAIF,EAAQE,IAC1BH,EAAQrK,KAAK6I,EAAMI,KAAKK,MAAMkB,EAAIJ,GAAcI,EAAI,GAAKJ,GAG3D,OADAvB,GAAMI,KAAOoB,EACNxB,GAKXG,GAASyB,MAAQ,SAAU/J,GACzB,MAAOb,QAAO6F,SAAShF,GAAI,KACxBpD,OAAOwL,EAAOtG,OAAOlE,MACrBJ,OAAO,MACPwM,UAAU,EAAG,IAGlB1B,EAAS2B,UAAY,SAAU3M,GAC7B,MAAO8K,GAAO7D,eAAepF,OAAO7B,IAAO,GAAO,IAChD8K,EAAOnD,gBAAgB9F,OAAO7B,IAAO,GAAO,IAC5C8K,EAAOhD,iBAAiBjG,OAAO7B,KAGnCgL,EAASnE,WAAa,SAAU7G,GAC9B,GAAIA,EAAM,CACR,GAAIgL,EAAS4B,cAAc5M,GACzB,MAAO8K,GAAOtB,IAEhBsB,GAAOjE,WAAWhF,OAAO7B,GAAMuH,KAAKyD,EAAShL,KAAKuH,QAAQtB,OAAO+E,EAAShL,KAAKiG,aAInF+E,EAAS4B,cAAgB,SAAU1K,GACjC,MAAOA,IAAK8I,EAAShL,KAAKA,SAAWkC,EAAElC,QAAUgL,EAAShL,KAAK6K,UAAY3I,EAAE2I,SAAWG,EAAShL,KAAK4K,SAAW1I,EAAE0I,QAGrHI,EAAS6B,eAAiB,SAAU3K,GAClC,GAAImH,GAAQ2B,EAASF,OAAOrI,QAAQnB,cACpC,SAAK+H,IAIEnH,GAAKmH,EAAMrJ,SAAWkC,EAAElC,QAAUqJ,EAAMwB,UAAY3I,EAAE2I,SAAWxB,EAAMuB,SAAW1I,EAAE0I,YAIjG1L,SAAU,qJACqEsL,EAAc,0GAMlGzJ,UAAU,kCAAmC,WAC5C,SAAU+L,GACR,GAAIC,GAAuB,SAAUhO,EAASqC,GAC5C,GAAI4L,GAAQlO,QAAQC,QAAQA,EAAQ,GAAGkO,cAAc,UACjDjC,EAAW5J,EAAM8L,IAAKrC,EAAQzJ,EAAMyJ,MAEpCsC,IAEJtC,GAAMI,KAAKmC,QAAQ,SAAUC,EAAU3K,GACrCyK,EAAUnL,KAAK,QACfqL,EAASD,QAAQ,SAAUE,EAASd,GAElC,GADAW,EAAUnL,KAAK,QACXsL,EACF,GAAItC,EAAS2B,UAAUW,GAAU,CAE/B,GAAIC,GAAW,iBAAqB7K,EAAI,KAAO8J,EAAI,GAEnDW,GAAUnL,KAAK,eAAiBsL,EAAQpN,OAAO,cAAgB,4FAA8FqN,EAAW,iCAAmCA,EAAW,gCAAkCA,EAAW,OACnQJ,EAAUnL,KAAKsL,EAAQpN,OAAO,MAC9BiN,EAAUnL,KAAK,YAEfmL,GAAUnL,KAAK,iCACfmL,EAAUnL,KAAKsL,EAAQpN,OAAO,MAC9BiN,EAAUnL,KAAK,UAGnBmL,GAAUnL,KAAK,WAEjBmL,EAAUnL,KAAK,WAGjBgL,EAAMQ,KAAKL,EAAUM,KAAK,KAC1BX,EAASE,GAAO5L,GAGlB,QACEA,OACEsM,IAAK,KAEPvM,QAAS,6BACTD,SAAU,KACVhC,SACE,gPAUFqC,KAAM,SAAUH,EAAOrC,EAASyC,EAAOwJ,GACrC5J,EAAM8L,IAAMlC,EACZ5J,EAAMyJ,MAAQG,EAASO,eAAe7D,SAAStG,EAAMsM,MACrDX,EAAqBhO,EAASqC,GAC9BA,EAAMwK,OAAO,WACX,MAAOxK,GAAMsM,KACZ,SAAUA,EAAKC,GACZD,GAAOC,IACTvM,EAAMyJ,MAAQG,EAASO,eAAe7D,SAAStG,EAAMsM,MACrDX,EAAqBhO,EAASqC,WAS5CtC,QAAQK,OAAOb,GACZyC,UAAU,gBAAiB,WAC1B,OACEQ,KAAM,SAAUH,EAAOxC,GACrBA,EAAGyD,GAAG,QAAS,SAAUC,GACvBA,EAAEC,uBAKZzD,QAAQK,OAAOb,GACZyC,UAAU,0BACT,WAEE,GAAI7B,GACF,moBAUF,QACEgC,SAAU,IACVhC,SAAUA,EACVqC,KAAM,SAAUH,EAAOrC,EAASyC,GAC9B,GAAIoM,GAA4B,YAAfpM,EAAMqM,KACnB/C,EAAS1J,EAAM0J,OAEfgD,EAAgB1K,SAAS6J,cAAc,iBACvCc,EAAO,WACT,GAAIC,GAAQlP,QAAQC,QAAQA,EAAQ,GAAGkO,cAAc,sBACnDgB,EAAWnP,QAAQC,QAAQ+O,EAAcb,cAAc,gBAErDiB,EAAIJ,EAAcb,cAAc,gBAAgBkB,YAChDC,EAAK1G,SAAS/I,EAAIsP,EAAU,eAAeI,QAAQ,KAAM,MAAQ,EACjEC,EAAK5G,SAAS/I,EAAIsP,EAAU,gBAAgBI,QAAQ,KAAM,MAAQ,EAClEE,EAAK7G,SAAS/I,EAAIqP,EAAO,cAAcK,QAAQ,KAAM,MAAQ,EAC7DG,EAAK9G,SAAS/I,EAAIqP,EAAO,eAAeK,QAAQ,KAAM,MAAQ,EAE9DI,EAAcP,GAAKK,EAAKC,EAAKJ,EAAKE,EACtCN,GAAMrP,IAAI,QAAS,EAAe,KAYlC,KAAK,GAVD+P,GAAKhH,SAAS/I,EAAIsP,EAAU,eAAeI,QAAQ,KAAM,MAAQ,EACjEM,EAAKjH,SAAS/I,EAAIsP,EAAU,cAAcI,QAAQ,KAAM,MAAQ,EAChEO,EAAKlH,SAAS/I,EAAIqP,EAAO,cAAcK,QAAQ,KAAM,MAAQ,EAC7DQ,EAAKnH,SAAS/I,EAAIqP,EAAO,aAAaK,QAAQ,KAAM,MAAQ,EAE5DS,EAAKL,EAAa,EAClBjC,EAAIsC,EAAI,IAERC,KAEK7E,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,GAAIzD,GAAI+F,EAAIzG,KAAKiJ,IAAc,EAAVjJ,KAAKkJ,IAAU/E,EAAI,KACpCgF,EAAI1C,EAAIzG,KAAKoJ,IAAc,EAAVpJ,KAAKkJ,IAAU/E,EAAI,KACpCkF,EAAQN,EAAIrI,EAAIiI,EAAK,GAAMA,EAAKE,GAChCS,EAAOP,EAAII,EAAIL,EAAK,GAAMF,EAAKE,GAE/BtH,GACF6H,KAAMA,EACNC,IAAKA,EACLpN,MAAQ2L,EAAkB,EAAJ1D,EAASA,EAC/BoF,OAAQC,cAAeH,EAAO,KAAMI,aAAcH,EAAM,MAGtDzB,GACFrG,EAAKkI,QAAUlI,EAAKtF,MAAQ,GAAM,IAAMsF,EAAKtF,MAASsF,EAAKtF,MAGvD6I,EAAOtG,OAAOhE,UAChB+G,EAAKkI,QAAiB,IAANvF,EAAW,GAAKA,EAEhC3C,EAAKkI,QAAU3E,EAAOtC,OAAS0B,EAAI,GAAKA,EAK5C6E,EAAO/M,KAAKuF,GAGdnG,EAAM2N,OAASA,EACf3N,EAAMyM,KAAOrM,EAAMqM,KACnB6B,IACA1B,EAAMrP,IAAI,SAAU8P,EAAa,KAGjC,IAAIkB,GAAc5Q,EAAQ,GAAGkO,cAAc,qBACvC2C,EAAeD,EAAYxB,YAAc,GAAM,IACjD0B,EAAgBF,EAAYG,aAAe,GAAM,IAC/CC,EAAMjB,EAAI,IACVkB,EAAMlB,EAAI,GAEdhQ,SAAQC,QAAQA,EAAQ,GAAGkO,cAAc,mBAAmBtO,KAC1DyQ,KAAMN,EAAU,IAALF,EAAY,KACvBqB,OAAQF,EAAM,KACdG,UAAYpB,EAAIiB,EAAMrB,EAAM,OAC3ByB,SAAUvC,EAAoB,GAAP,MAE1B9O,QAAQC,QAAQA,EAAQ,GAAGkO,cAAc,qBAAqBtO,KAE5DyQ,KAAMN,EAAU,IAALF,EAAY,KACvBqB,OAAQD,EAAM,KACdE,UAAYpB,EAAIkB,EAAMtB,EAAM,OAC3ByB,SAASvC,EAAa,KAAO,IAEhC9O,QAAQC,QAAQ4Q,GAAahR,KAC3ByQ,KAAON,EAAIJ,EAAKE,EAAKgB,EAAe,KACpCM,UAAYpB,EAAKF,EAAK,EAAMiB,EAAe,OAE7CO,KAGEA,EAAe,WACjB,GAAI9I,GAAQwD,EAAOjF,wBACfqE,EAAI5C,EAAMC,OACVrF,EAAIoF,EAAMrB,QAEdoK,GAAcvR,QAAQC,QAAQA,EAAQ,GAAGkO,cAAc,mBAAoB,GAAa/C,EACxF,IAAIoG,GAAO,GAAc,EAAIvK,KAAKC,MAAM9D,EAAI,GAC5CmO,GAAcvR,QAAQC,QAAQA,EAAQ,GAAGkO,cAAc,qBAAsBqD,IAG3ED,EAAgB,SAAUzR,EAAI2R,GAChCzR,QAAQC,QAAQH,GAAID,KAClB6R,gBAAiB,UAAYD,EAAM,OACnCE,iBAAkB,UAAYF,EAAM,OACpCG,gBAAiB,UAAYH,EAAM,OACnCI,UAAa,UAAYJ,EAAM,UAK/Bb,EAAkB,WACpB,GAAI1P,GAAO8K,EAAOjF,uBAClBzE,GAAMwP,aAAehD,EAAa5N,EAAKiG,SAAYjG,EAAKuH,OAAS,GAGnEnG,GAAMwK,OAAO,WACX,GAAIiF,GAAM/F,EAAOjF,uBACjB,OAAOgL,GAAMA,EAAI3Q,OAAO,SAAW,IAClC,WACDwP,IACAU,KAIF,IAAIU,GAAmB,SAAUtI,EAAMuG,GACrC,IAAK,GAAIrM,GAAI,EAAGA,EAAIqM,EAAOxG,OAAQ7F,IACjCqM,EAAOrM,GAAG+M,QAAU/M,EAChB8F,IACFuG,EAAOrM,GAAG+M,SAAW,GAGzB,OAAOV,GAGJjE,GAAOtG,OAAOhE,WACjBY,EAAMwK,OAAO,kBAAmB,WAC9B,IAAKgC,GACCxM,EAAM2N,OAAQ,CAChB,GAAIA,GAAS+B,EAAiBhG,EAAOtC,OAAQ1J,QAAQ2F,KAAKrD,EAAM2N,QAChE3N,GAAM2N,OAASA,KAOvB3N,EAAM2P,QAAU,SAAUC,GACpBA,IAAQ5P,EAAMwP,cAChB9F,EAAOtB,KAGJoE,EAGH9C,EAAOzK,YAAY4F,OAAO+K,GAF1BlG,EAAOzK,YAAYkH,KAAKuD,EAAOtC,OAAUwI,EAAM,GAAMA,GAIvDlG,EAAOzK,YAAYmH,OAAO,IAG5BpG,EAAM6P,eAAiB,SAAUC,GAC/B,MAAOtD,GAAa9C,EAAO1B,kBAAkB8H,EAAMjP,OAAS6I,EAAO5B,gBAAgBgI,EAAMjP,OAG3F,IAAIkP,GAAY/P,EAAMwK,OAAO,WAC3B,MAAO7M,GAAQ,GAAGqS,iBAAiB,OAAO7I,QACzC,WACDwF,IACAoD","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: []\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@'\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n element.attr('readonly', '');\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: false,\r\n hasBackDrop: false,\r\n skipHide: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.blur()\r\n\r\n }, function () {\r\n isOn = false;\r\n element.blur();\r\n })\r\n ;\r\n });\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean] =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM'\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: false,\r\n skipHide: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n //this.initDates();\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n }\r\n else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n this.initMinutes();\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate)\r\n .year(year)\r\n .month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute())\r\n ;\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n //picker.initHands(true);\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index ed35997..d4891c4 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:3em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:3em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:.25em;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file +.dtp .p10,.dtp .p20,.dtp .p60,.dtp .p80,.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-maxtime,.dtp div.dtp-actual-num{font-size:3em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#DCEDC8}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#DCEDC8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:.25em;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#BDBDBD!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8BC34A}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689F38;text-decoration:none}.dtp .p10{width:10%}.dtp .p20{width:20%}.dtp .p60{width:60%}.dtp .p80{width:80%}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected,.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0;padding:10px;border-radius:50%!important;background:#eee}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index c74c87c..29c95b5 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -13,55 +13,56 @@ return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name); }; - var template = '' - + ' ' - + '
' - + '
' - + '
{{picker.currentDate.format("dddd")}}
' - + '
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
' - + '
' - + ' ×' - + '
' - + '
' - + '
' - + '
' - + '
{{picker.currentDate.format("MMM") | uppercase}}
' - + '
' - + '
{{picker.currentDate.format("DD")}}
' - + '
' - + '
' - + '
{{picker.currentDate.format("YYYY")}}
' - + '
' - + '
' - + '
'//start time - + '
' - + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' - + '
' - + '
' - + ' ' - + '
' - + '
' - + '
' - + ' {{picker.params.amText}}' - + '
' - + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' - + '
' - + ' {{picker.params.pmText}}' - + '
' - + '
' - + '
' - + ' ' - + ' ' - + '
' - + '
' - + '
' - + '
' - + ' ' - + ' {{picker.params.todayText}}' - + ' {{picker.params.cancelText}}' - + ' {{picker.params.okText}}' - + ' ' - + '
'; + var template = + '' + + ' ' + + '
' + + '
' + + '
{{picker.currentDate.format("dddd")}}
' + + '
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
' + + '
' + + ' ×' + + '
' + + '
' + + '
' + + '
' + + '
{{picker.currentDate.format("MMM") | uppercase}}
' + + '
' + + '
{{picker.currentDate.format("DD")}}
' + + '
' + + '
' + + '
{{picker.currentDate.format("YYYY")}}
' + + '
' + + '
'+ + '
' + //start time + '
' + + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' + + '
' + + '
' + + ' ' + + '
' + + '
' + + '
' + + ' {{picker.params.amText}}' + + '
' + + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' + + '
' + + ' {{picker.params.pmText}}' + + '
' + + '
' + + '
' + + ' ' + + ' ' + + '
' + + '
' + + '
' + + '
' + + ' ' + + ' {{picker.params.todayText}}' + + ' {{picker.params.cancelText}}' + + ' {{picker.params.okText}}' + + ' ' + + '
'; angular.module(moduleName, ['ngMaterial']) @@ -195,7 +196,7 @@ }, function () { isOn = false; - element.blur() + element.blur(); }) ; }); @@ -324,7 +325,7 @@ this.minDate = _dateParam(this.params.minDate); this.maxDate = _dateParam(this.params.maxDate); this.disableDates = this.params.disableDates.map(function (x) { - return moment(x).format('MMMM Do YYYY') + return moment(x).format('MMMM Do YYYY'); }); this.selectDate(this.currentDate); }, @@ -404,7 +405,7 @@ return _return; }, isInDisableDates: function (date) { - var dut = date.format('MMMM Do YYYY') + var dut = date.format('MMMM Do YYYY'); if (this.disableDates.indexOf(dut) > -1) { return false; } @@ -694,9 +695,9 @@ }; calendar.isInRange = function (date) { - return picker.isAfterMinDate(moment(date), false, false) - && picker.isBeforeMaxDate(moment(date), false, false) - && picker.isInDisableDates(moment(date)); + return picker.isAfterMinDate(moment(date), false, false) && + picker.isBeforeMaxDate(moment(date), false, false) && + picker.isInDisableDates(moment(date)); }; calendar.selectDate = function (date) { @@ -719,8 +720,8 @@ } return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year(); - } - } + }; + }; }], template: '' + '
' + @@ -770,16 +771,17 @@ }, require: '^mdcDatetimePickerCalendar', restrict: 'AE', - template: '
{{month.name}}
' - + '' - + ' ' - + ' ' - + ' ' - + ' ' - + ' ' - + ' ' - + ' ' - + '
{{cal.toDay(day)}}
', + template: + '
{{month.name}}
' + + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '
{{cal.toDay(day)}}
', link: function (scope, element, attrs, calendar) { scope.cal = calendar; scope.month = calendar.getItemAtIndex(parseInt(scope.idx)); @@ -812,15 +814,16 @@ .directive('mdcDatetimePickerClock', [ function () { - var template = '
 ' - + '
' - + ' {{point.display}}' - + ' {{point.display}}' - + '
' - + '
' - + '
' - + '
' - + '
'; + var template = + '
 ' + + '
' + + ' {{point.display}}' + + ' {{point.display}}' + + '
' + + '
' + + '
' + + '
' + + '
'; return { restrict: 'E', @@ -979,7 +982,7 @@ } else { picker.currentDate.minute(val); } - picker.currentDate.second(0) + picker.currentDate.second(0); }; scope.pointAvailable = function (point) { @@ -993,7 +996,7 @@ unWatcher(); }); } - } + }; }]); })(); diff --git a/yarn.lock b/yarn.lock index 14e8005..e3fb8f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,21 +18,21 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.1.tgz#19e3b82b7392e2bbdd83af33c0af0d85437f3a14" +angular-animate@^1.5.10: + version "1.6.2" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.2.tgz#def2a8b9ede53b4b6e234c25f5c64e4b4385df15" -angular-aria@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.1.tgz#0fcbf1152b4c26e8671daddea7443a1b983434b9" +angular-aria@^1.5.10: + version "1.6.2" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.2.tgz#c5047cae595ec61d24490b6b34b4452e1ecdae1f" -angular-material@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.2.tgz#7a5aeebaa350bba8e97c68804b994cfd60c3d125" +angular-material@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.3.tgz#b466d53aaa42c1555766a1ded53a28baeb7b2fe6" -angular@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.1.tgz#a7b6d763a74c157325692619e97257e69d9b6a27" +angular@^1.5.10: + version "1.6.2" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.2.tgz#d0b677242ac4bf9ae81424297c6320973af4bb5a" ansi-regex@^2.0.0: version "2.1.1" From 48e50e7e5b07b434f03412bd704ce00680daa8af Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 12 Feb 2017 01:00:07 -0500 Subject: [PATCH 007/226] 1.5.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bc1d2b4..01b0e43 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.4", + "version": "1.5.5", "keywords": [ "css", "js", From 2d76cce7dcac7d9c5ee8540936f3a508a4d3ea62 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 12 Feb 2017 01:02:50 -0500 Subject: [PATCH 008/226] bump version 1.5.5 --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index 0c5c688..1fe934a 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.4", + "version": "1.5.5", "keywords": [ "css", "js", From 22c0f82d38af6deff9c72008873f53ef6d03f5f4 Mon Sep 17 00:00:00 2001 From: mak-pun Date: Tue, 14 Feb 2017 16:34:32 +0700 Subject: [PATCH 009/226] change class name dtp-btn-ok to dtp-btn-today --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 891a04d..c902fcc 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.attr("readonly",""),n.on("focus",function(c){if(c.preventDefault(),n.blur(),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,skipHide:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.blur()},function(){o=!1,n.blur()})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,skipHide:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),I=y-Y-M/2-(g+M),S={left:A,top:I,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":I+"px"}};r?S.display=S.value<10?"0"+S.value:S.value:n.params.shortTime?S.display=0===T?12:T:S.display=n.isPM()?T+12:T,b.push(S)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var H=e[0].querySelector(".dtp-clock-center"),P=H.offsetWidth/2||7.5,V=H.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(H).css({left:y+v+k-P+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a{{picker.params.amText}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.attr("readonly",""),n.on("focus",function(c){if(c.preventDefault(),n.blur(),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,skipHide:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.blur()},function(){o=!1,n.blur()})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,skipHide:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),I=y-Y-M/2-(g+M),S={left:A,top:I,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":I+"px"}};r?S.display=S.value<10?"0"+S.value:S.value:n.params.shortTime?S.display=0===T?12:T:S.display=n.isPM()?T+12:T,b.push(S)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var H=e[0].querySelector(".dtp-clock-center"),P=H.offsetWidth/2||7.5,V=H.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(H).css({left:y+v+k-P+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a'\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"dddd\")}}
'\n + '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
'\n + '
'\n + ' ×'\n + '
'\n + '
'\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"MMM\") | uppercase}}
'\n + '
'\n + '
{{picker.currentDate.format(\"DD\")}}
'\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"YYYY\")}}
'\n + '
'\n + '
'\n + '
'//start time\n + '
'\n + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
'\n + '
'\n + '
'\n + ' '\n + '
'\n + '
'\n + '
'\n + ' {{picker.params.amText}}'\n + '
'\n + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
'\n + '
'\n + ' {{picker.params.pmText}}'\n + '
'\n + '
'\n + '
'\n + ' '\n + ' '\n + '
'\n + '
'\n + '
'\n + ' '\n + ' '\n + ' {{picker.params.todayText}}'\n + ' {{picker.params.cancelText}}'\n + ' {{picker.params.okText}}'\n + ' '\n + '';\n\n\n angular.module(moduleName, ['ngMaterial'])\n .provider('mdcDatetimePickerDefaultLocale', function () {\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\n\n this.$get = function () {\n return this;\n };\n\n this.setDefaultLocale = function (localeString) {\n this.locale = localeString;\n };\n })\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\n var default_params = {\n date: true,\n time: true,\n format: 'YYYY-MM-DD',\n minDate: null,\n maxDate: null,\n currentDate: null,\n lang: mdcDatetimePickerDefaultLocale.locale,\n weekStart: 0,\n shortTime: false,\n cancelText: 'Cancel',\n okText: 'OK',\n amText: 'AM',\n pmText: 'PM',\n todayText: 'Today',\n disableDates: []\n };\n return default_params;\n }])\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\n function ($mdDialog, $timeout) {\n\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n currentDate: '=ngModel',\n ngChange: '&',\n time: '=',\n date: '=',\n minDate: '=',\n maxDate: '=',\n disableDates: '=',\n shortTime: '=',\n weekStart: '=',\n format: '@',\n cancelText: '@',\n okText: '@',\n lang: '@',\n amText: '@',\n pmText: '@',\n showTodaysDate: '@',\n todayText: '@'\n },\n link: function (scope, element, attrs, ngModel) {\n var isOn = false;\n if (!scope.format) {\n if (scope.date && scope.time) {\n scope.format = 'YYYY-MM-DD HH:mm';\n } else if (scope.date) {\n scope.format = 'YYYY-MM-DD';\n } else {\n scope.format = 'HH:mm';\n }\n }\n\n var dateOfTheDay = null;\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\n scope.currentDate = moment(scope.currentDate, scope.format);\n }\n\n if (ngModel) {\n ngModel.$formatters.push(function (value) {\n if (typeof value === 'undefined') {\n return;\n }\n var m = moment(value);\n return m.isValid() ? m.format(scope.format) : '';\n });\n }\n\n element.attr('readonly', '');\n //@TODO custom event to trigger input\n element.on('focus', function (e) {\n e.preventDefault();\n element.blur();\n if (isOn) {\n return;\n }\n isOn = true;\n var options = {};\n for (var i in attrs) {\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\n options[i] = scope[i];\n }\n }\n options.currentDate = scope.currentDate;\n options.showTodaysDate = dateOfTheDay;\n\n var locals = {options: options};\n $mdDialog.show({\n template: template,\n controller: PluginController,\n controllerAs: 'picker',\n locals: locals,\n openFrom: element,\n parent: angular.element(document.body),\n bindToController: true,\n disableParentScroll: false,\n hasBackDrop: false,\n skipHide: true\n })\n .then(function (v) {\n scope.currentDate = v ? v._d : v;\n isOn = false;\n\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\n $timeout(scope.ngChange, 0);\n }\n\n element.blur()\n\n }, function () {\n isOn = false;\n element.blur()\n })\n ;\n });\n }\n };\n }])\n /** Returns a service that opens a dialog when the attribute shown is called\n The dialog serves to select a date/time/etc. depending on the options given to the function show\n\n @param options extends mdcDefaultParams\n {\n date: {boolean} =true,\n time: {boolean] =true,\n format: {string} ='YYYY-MM-DD',\n minDate: {strign} =null,\n maxDate: {string} =null,\n currentDate: {string} =null,\n lang: {string} =mdcDatetimePickerDefaultLocale,\n weekStart: {int} =0,\n shortTime: {boolean} =false,\n cancelText: {string} ='Cancel',\n todayText: {string} ='Today',\n okText: {string} ='OK',\n amText: {string} ='AM',\n pmText: {string} ='PM'\n }\n @return promise\n */\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\n var accepted_options = Object.keys(mdcDefaultParams);\n console.log(accepted_options);\n var service = {\n show: function (options) {\n var deferred = $q.defer();\n var params = angular.copy(mdcDefaultParams);\n for (var i in options) {\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\n params = options[i];\n }\n }\n var locals = {options: options};\n $mdDialog.show({\n template: template,\n controller: PluginController,\n controllerAs: 'picker',\n locals: locals,\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: true,\n disableParentScroll: false,\n skipHide: true\n })\n .then(function (v) {\n var currentDate = v ? v._d : v;\n deferred.resolve(v ? v._d : v);\n }, function () {\n deferred.reject();\n });\n return deferred.promise;\n }\n };\n\n return service;\n }])\n ;\n\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\n this.currentView = VIEW_STATES.DATE;\n this._dialog = $mdDialog;\n\n this._attachedEvents = [];\n this.VIEWS = VIEW_STATES;\n this.params = mdcDefaultParams;\n this.meridien = 'AM';\n this.params = angular.extend(this.params, this.options);\n\n this.init();\n };\n\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\n PluginController.prototype = {\n init: function () {\n this.timeMode = this.params.time && !this.params.date;\n this.dateMode = this.params.date;\n this.initDates();\n this.start();\n },\n currentNearest5Minute: function () {\n var date = this.currentDate || moment();\n var minutes = (5 * Math.round(date.minute() / 5));\n if (minutes >= 60) {\n minutes = 55; //always push down\n }\n return moment(date).minutes(minutes);\n },\n initDates: function () {\n var that = this;\n var _dateParam = function (input, fallback) {\n var ret = null;\n if (angular.isDefined(input) && input !== null && input !== '') {\n if (angular.isString(input)) {\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\n ret = moment(input, that.params.format).locale(that.params.lang);\n }\n else {\n ret = moment(input).locale(that.params.lang);\n }\n } else if (typeof input === 'number') {\n ret = moment(input).locale(that.params.lang);\n } else {\n if (angular.isDate(input)) {\n var x = input.getTime();\n ret = moment(x, \"x\").locale(that.params.lang);\n } else if (input._isAMomentObject) {\n ret = input;\n }\n }\n }\n else {\n ret = fallback;\n }\n return ret;\n };\n\n this.currentDate = _dateParam(this.params.currentDate, moment());\n this.minDate = _dateParam(this.params.minDate);\n this.maxDate = _dateParam(this.params.maxDate);\n this.disableDates = this.params.disableDates.map(function (x) {\n return moment(x).format('MMMM Do YYYY')\n });\n this.selectDate(this.currentDate);\n },\n initDate: function () {\n this.currentView = VIEW_STATES.DATE;\n },\n initHours: function () {\n this.currentView = VIEW_STATES.HOUR;\n },\n initMinutes: function () {\n this.currentView = VIEW_STATES.MINUTE;\n },\n isAfterMinDate: function (date, checkHour, checkMinute) {\n var _return = true;\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n var _minDate = moment(this.minDate);\n var _date = moment(date);\n\n if (!checkHour && !checkMinute) {\n _minDate.hour(0);\n _minDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _minDate.second(0);\n _date.second(0);\n _minDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _minDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\n var _return = true;\n\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n var _maxDate = moment(this.maxDate);\n var _date = moment(date);\n\n if (!checkTime && !checkMinute) {\n _maxDate.hour(0);\n _maxDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _maxDate.second(0);\n _date.second(0);\n _maxDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _maxDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isInDisableDates: function (date) {\n var dut = date.format('MMMM Do YYYY')\n if (this.disableDates.indexOf(dut) > -1) {\n return false;\n }\n return true;\n },\n selectDate: function (date) {\n if (date) {\n this.currentDate = moment(date);\n if (!this.isAfterMinDate(this.currentDate)) {\n this.currentDate = moment(this.minDate);\n }\n\n if (!this.isBeforeMaxDate(this.currentDate)) {\n this.currentDate = moment(this.maxDate);\n }\n this.currentDate.locale(this.params.lang);\n this.calendarStart = moment(this.currentDate);\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\n }\n },\n setName: function () {\n var text = \"\";\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (var i = 0; i < 5; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n },\n isPM: function () {\n return this.meridien === 'PM';\n },\n incrementYear: function (amount) {\n if (amount === 1 && this.isNextYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n\n if (amount === -1 && this.isPreviousYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n },\n isPreviousMonthVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\n },\n isNextMonthVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\n },\n isPreviousYearVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\n },\n isNextYearVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\n },\n isHourAvailable: function (hour) {\n var _date = moment(this.currentDate);\n _date.hour(this.convertHours(hour)).minute(0).second(0);\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\n },\n isMinuteAvailable: function (minute) {\n var _date = moment(this.currentDate);\n _date.minute(minute).second(0);\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\n },\n start: function () {\n this.currentView = VIEW_STATES.DATE;\n //this.initDates();\n if (this.params.date) {\n this.initDate();\n } else {\n if (this.params.time) {\n this.initHours();\n }\n }\n },\n today: function () {\n this.selectDate(Date.now());\n },\n ok: function () {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n if (this.params.time === true) {\n this.initHours();\n }\n else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.HOUR:\n this.initMinutes();\n break;\n case VIEW_STATES.MINUTE:\n this.hide(true);\n break;\n }\n },\n cancel: function () {\n if (this.params.time) {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n this.hide();\n break;\n case VIEW_STATES.HOUR:\n if (this.params.date) {\n this.initDate();\n }\n else {\n this.hide();\n }\n break;\n case VIEW_STATES.MINUTE:\n this.initHours();\n break;\n }\n }\n else {\n this.hide();\n }\n },\n selectMonthBefore: function () {\n this.calendarStart.subtract(1, 'months');\n },\n selectMonthAfter: function () {\n this.calendarStart.add(1, 'months');\n },\n selectYearBefore: function () {\n this.calendarStart.subtract(1, 'years');\n },\n selectYearAfter: function () {\n this.calendarStart.add(1, 'years');\n },\n selectAM: function () {\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\n if (this.currentDate.hour() >= 12) {\n this.selectDate(this.currentDate.subtract(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\n }\n }\n },\n selectPM: function () {\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\n if (this.currentDate.hour() < 12) {\n this.selectDate(this.currentDate.add(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\n }\n }\n },\n convertHours: function (h) {\n var _return = h;\n if ((h < 12) && this.isPM())\n _return += 12;\n\n return _return;\n },\n hide: function (okBtn) {\n if (okBtn) {\n this._dialog.hide(this.currentDate);\n } else {\n this._dialog.cancel();\n }\n }\n };\n\n\n angular.module(moduleName)\n .directive('mdcDatetimePickerCalendar', [\n function () {\n\n var YEAR_MIN = 1920,\n YEAR_MAX = new Date().getFullYear() + 30,\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\n ITEM_HEIGHT = 240,\n MONTHS = [];\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\n MONTHS.push(i);\n }\n\n var currentMonthIndex = function (date, low) {\n low = low ? low : 0;\n var year = date.year();\n var month = date.month();\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\n };\n\n return {\n restrict: 'E',\n scope: {\n picker: '=',\n date: '='\n },\n bindToController: true,\n controllerAs: 'cal',\n controller: ['$scope', function ($scope) {\n this.$onInit = function () {\n var calendar = this,\n picker = this.picker,\n days = [];\n\n for (var i = picker.params.weekStart; days.length < 7; i++) {\n if (i > 6) {\n i = 0;\n }\n days.push(i.toString());\n }\n\n calendar.week = days;\n if (!picker.maxDate && !picker.minDate) {\n calendar.months = MONTHS;\n } else {\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\n calendar.months = MONTHS.slice(low, high);\n }\n\n\n calendar.getItemAtIndex = function (index) {\n var month = ((index + 1) % 12) || 12;\n var year = YEAR_MIN + Math.floor(index / 12);\n var monthObj = moment(picker.currentDate)\n .year(year)\n .month(month);\n return generateMonthCalendar(monthObj);\n };\n\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\n\n $scope.$watch(function () {\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\n }, function (val2, val1) {\n if (val2 != val1) {\n var nDate = moment(val2, 'YYYY-MM');\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var index = currentMonthIndex(nDate, low);\n if (calendar.topIndex != index) {\n calendar.topIndex = index;\n }\n }\n });\n\n var generateMonthCalendar = function (date) {\n var month = {};\n if (date !== null) {\n month.name = date.format('MMMM YYYY');\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\n .hour(date.hour())\n .minute(date.minute())\n ;\n var iNumDay = startOfMonth.format('d');\n month.days = [];\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\n if (i === startOfMonth.date()) {\n var iWeek = calendar.week.indexOf(iNumDay.toString());\n if (iWeek > 0) {\n for (var x = 0; x < iWeek; x++) {\n month.days.push(0);\n }\n }\n }\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\n }\n\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\n for (var j = 0; j < slices; j++) {\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\n }\n month.days = daysTmp;\n return month;\n }\n\n };\n\n calendar.toDay = function (i) {\n return moment(parseInt(i), \"d\")\n .locale(picker.params.lang)\n .format(\"dd\")\n .substring(0, 1);\n };\n\n calendar.isInRange = function (date) {\n return picker.isAfterMinDate(moment(date), false, false)\n && picker.isBeforeMaxDate(moment(date), false, false)\n && picker.isInDisableDates(moment(date));\n };\n\n calendar.selectDate = function (date) {\n if (date) {\n if (calendar.isSelectedDay(date)) {\n return picker.ok();\n }\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\n }\n };\n\n calendar.isSelectedDay = function (m) {\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\n };\n\n calendar.isDateOfTheDay = function (m) {\n var today = calendar.picker.options.showTodaysDate;\n if (!today) {\n return false;\n }\n\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\n }\n }\n }],\n template: '' +\n '
' +\n '
' +\n '
' +\n '
'\n };\n }])\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\n function ($compile) {\n var buildCalendarContent = function (element, scope) {\n var tbody = angular.element(element[0].querySelector('tbody'));\n var calendar = scope.cal, month = scope.month;\n\n var tbodyHtml = [];\n\n month.days.forEach(function (weekDays, i) {\n tbodyHtml.push('');\n weekDays.forEach(function (weekDay, j) {\n tbodyHtml.push('');\n if (weekDay) {\n if (calendar.isInRange(weekDay)) {\n //build a\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\n\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n } else {\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n }\n }\n tbodyHtml.push('');\n });\n tbodyHtml.push('');\n });\n\n tbody.html(tbodyHtml.join(''));\n $compile(tbody)(scope);\n };\n\n return {\n scope: {\n idx: '='\n },\n require: '^mdcDatetimePickerCalendar',\n restrict: 'AE',\n template: '
{{month.name}}
'\n + ''\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + '
{{cal.toDay(day)}}
',\n link: function (scope, element, attrs, calendar) {\n scope.cal = calendar;\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n scope.$watch(function () {\n return scope.idx;\n }, function (idx, oldIdx) {\n if (idx != oldIdx) {\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n }\n });\n }\n };\n }\n ])\n ;\n\n angular.module(moduleName)\n .directive('mdcDtpNoclick', function () {\n return {\n link: function (scope, el) {\n el.on('click', function (e) {\n e.preventDefault();\n });\n }\n };\n });\n angular.module(moduleName)\n .directive('mdcDatetimePickerClock', [\n function () {\n\n var template = '
 '\n + '
'\n + ' {{point.display}}'\n + ' {{point.display}}'\n + '
'\n + '
'\n + '
'\n + '
'\n + '
';\n\n return {\n restrict: 'E',\n template: template,\n link: function (scope, element, attrs) {\n var minuteMode = attrs.mode === 'minutes';\n var picker = scope.picker;\n //banking on the fact that there will only be one at a time\n var componentRoot = document.querySelector('md-dialog.dtp');\n var exec = function () {\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\n\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\n //set width\n var clockWidth = (w - (ml + mr + pl + pr));\n clock.css('width', (clockWidth) + 'px');\n\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\n\n var r = (clockWidth / 2);\n var j = r / 1.2; //???\n\n var points = [];\n\n for (var h = 0; h < 12; ++h) {\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\n var left = (r + x + pL / 2) - (pL + mL);\n var top = (r - y - mT / 2) - (pT + mT);\n\n var hour = {\n left: left,\n top: top,\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\n };\n\n if (minuteMode) {\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\n } else {\n\n if (picker.params.shortTime) {\n hour.display = (h === 0) ? 12 : h;\n } else {\n hour.display = picker.isPM() ? h + 12 : h;\n }\n }\n\n\n points.push(hour);\n }\n\n scope.points = points;\n scope.mode = attrs.mode;\n setCurrentValue();\n clock.css('height', clockWidth + 'px');\n //picker.initHands(true);\n\n var clockCenter = element[0].querySelector('.dtp-clock-center');\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\n var _hL = r / 1.8;\n var _mL = r / 1.5;\n\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _hL + 'px',\n marginTop: (r - _hL - pL) + 'px'\n }).addClass(!minuteMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\n ({\n left: r + (mL * 1.5) + 'px',\n height: _mL + 'px',\n marginTop: (r - _mL - pL) + 'px'\n }).addClass(minuteMode ? 'on' : '');\n\n angular.element(clockCenter).css({\n left: (r + pL + mL - centerWidth) + 'px',\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\n });\n animateHands();\n };\n\n var animateHands = function () {\n var _date = picker.currentNearest5Minute();\n var h = _date.hour();\n var m = _date.minute();\n\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\n };\n\n var rotateElement = function (el, deg) {\n angular.element(el).css({\n WebkitTransform: 'rotate(' + deg + 'deg)',\n '-moz-transform': 'rotate(' + deg + 'deg)',\n '-ms-transform': 'rotate(' + deg + 'deg)',\n 'transform': 'rotate(' + deg + 'deg)'\n });\n };\n\n\n var setCurrentValue = function () {\n var date = picker.currentNearest5Minute();\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\n };\n\n scope.$watch(function () {\n var tmp = picker.currentNearest5Minute();\n return tmp ? tmp.format('HH:mm') : '';\n }, function () {\n setCurrentValue();\n animateHands();\n });\n\n\n var setDisplayPoints = function (isPM, points) {\n for (var i = 0; i < points.length; i++) {\n points[i].display = i;\n if (isPM) {\n points[i].display += 12;\n }\n }\n return points;\n };\n\n if (!picker.params.shortTime) {\n scope.$watch('picker.meridien', function () {\n if (!minuteMode) {\n if (scope.points) {\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\n scope.points = points;\n }\n }\n });\n }\n\n\n scope.setTime = function (val) {\n if (val === scope.currentValue) {\n picker.ok();\n }\n\n if (!minuteMode) {\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\n } else {\n picker.currentDate.minute(val);\n }\n picker.currentDate.second(0)\n };\n\n scope.pointAvailable = function (point) {\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\n };\n\n var unWatcher = scope.$watch(function () {\n return element[0].querySelectorAll('div').length;\n }, function () {\n exec();\n unWatcher();\n });\n }\n }\n }]);\n\n})();\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","attr","on","e","preventDefault","blur","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","parent","document","body","bindToController","disableParentScroll","hasBackDrop","skipHide","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","minutes","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementYear","amount","isNextYearVisible","add","isPreviousYearVisible","isPreviousMonthVisible","startOf","isNextMonthVisible","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","currentValue","tmp","setDisplayPoints","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\n 'use strict';\n var moduleName = \"ngMaterialDatePicker\";\n\n var VIEW_STATES = {\n DATE: 0,\n HOUR: 1,\n MINUTE: 2\n };\n\n var css = function (el, name) {\n el = angular.element(el);\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\n };\n\n var template = ''\n + ' '\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"dddd\")}}
'\n + '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
'\n + '
'\n + ' ×'\n + '
'\n + '
'\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"MMM\") | uppercase}}
'\n + '
'\n + '
{{picker.currentDate.format(\"DD\")}}
'\n + '
'\n + '
'\n + '
{{picker.currentDate.format(\"YYYY\")}}
'\n + '
'\n + '
'\n + '
'//start time\n + '
'\n + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
'\n + '
'\n + '
'\n + ' '\n + '
'\n + '
'\n + '
'\n + ' {{picker.params.amText}}'\n + '
'\n + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
'\n + '
'\n + ' {{picker.params.pmText}}'\n + '
'\n + '
'\n + '
'\n + ' '\n + ' '\n + '
'\n + '
'\n + '
'\n + '
'\n + ' '\n + ' {{picker.params.todayText}}'\n + ' {{picker.params.cancelText}}'\n + ' {{picker.params.okText}}'\n + ' '\n + '
';\n\n\n angular.module(moduleName, ['ngMaterial'])\n .provider('mdcDatetimePickerDefaultLocale', function () {\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\n\n this.$get = function () {\n return this;\n };\n\n this.setDefaultLocale = function (localeString) {\n this.locale = localeString;\n };\n })\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\n var default_params = {\n date: true,\n time: true,\n format: 'YYYY-MM-DD',\n minDate: null,\n maxDate: null,\n currentDate: null,\n lang: mdcDatetimePickerDefaultLocale.locale,\n weekStart: 0,\n shortTime: false,\n cancelText: 'Cancel',\n okText: 'OK',\n amText: 'AM',\n pmText: 'PM',\n todayText: 'Today',\n disableDates: []\n };\n return default_params;\n }])\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\n function ($mdDialog, $timeout) {\n\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n currentDate: '=ngModel',\n ngChange: '&',\n time: '=',\n date: '=',\n minDate: '=',\n maxDate: '=',\n disableDates: '=',\n shortTime: '=',\n weekStart: '=',\n format: '@',\n cancelText: '@',\n okText: '@',\n lang: '@',\n amText: '@',\n pmText: '@',\n showTodaysDate: '@',\n todayText: '@'\n },\n link: function (scope, element, attrs, ngModel) {\n var isOn = false;\n if (!scope.format) {\n if (scope.date && scope.time) {\n scope.format = 'YYYY-MM-DD HH:mm';\n } else if (scope.date) {\n scope.format = 'YYYY-MM-DD';\n } else {\n scope.format = 'HH:mm';\n }\n }\n\n var dateOfTheDay = null;\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\n scope.currentDate = moment(scope.currentDate, scope.format);\n }\n\n if (ngModel) {\n ngModel.$formatters.push(function (value) {\n if (typeof value === 'undefined') {\n return;\n }\n var m = moment(value);\n return m.isValid() ? m.format(scope.format) : '';\n });\n }\n\n element.attr('readonly', '');\n //@TODO custom event to trigger input\n element.on('focus', function (e) {\n e.preventDefault();\n element.blur();\n if (isOn) {\n return;\n }\n isOn = true;\n var options = {};\n for (var i in attrs) {\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\n options[i] = scope[i];\n }\n }\n options.currentDate = scope.currentDate;\n options.showTodaysDate = dateOfTheDay;\n\n var locals = {options: options};\n $mdDialog.show({\n template: template,\n controller: PluginController,\n controllerAs: 'picker',\n locals: locals,\n openFrom: element,\n parent: angular.element(document.body),\n bindToController: true,\n disableParentScroll: false,\n hasBackDrop: false,\n skipHide: true\n })\n .then(function (v) {\n scope.currentDate = v ? v._d : v;\n isOn = false;\n\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\n $timeout(scope.ngChange, 0);\n }\n\n element.blur()\n\n }, function () {\n isOn = false;\n element.blur()\n })\n ;\n });\n }\n };\n }])\n /** Returns a service that opens a dialog when the attribute shown is called\n The dialog serves to select a date/time/etc. depending on the options given to the function show\n\n @param options extends mdcDefaultParams\n {\n date: {boolean} =true,\n time: {boolean] =true,\n format: {string} ='YYYY-MM-DD',\n minDate: {strign} =null,\n maxDate: {string} =null,\n currentDate: {string} =null,\n lang: {string} =mdcDatetimePickerDefaultLocale,\n weekStart: {int} =0,\n shortTime: {boolean} =false,\n cancelText: {string} ='Cancel',\n todayText: {string} ='Today',\n okText: {string} ='OK',\n amText: {string} ='AM',\n pmText: {string} ='PM'\n }\n @return promise\n */\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\n var accepted_options = Object.keys(mdcDefaultParams);\n console.log(accepted_options);\n var service = {\n show: function (options) {\n var deferred = $q.defer();\n var params = angular.copy(mdcDefaultParams);\n for (var i in options) {\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\n params = options[i];\n }\n }\n var locals = {options: options};\n $mdDialog.show({\n template: template,\n controller: PluginController,\n controllerAs: 'picker',\n locals: locals,\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: true,\n disableParentScroll: false,\n skipHide: true\n })\n .then(function (v) {\n var currentDate = v ? v._d : v;\n deferred.resolve(v ? v._d : v);\n }, function () {\n deferred.reject();\n });\n return deferred.promise;\n }\n };\n\n return service;\n }])\n ;\n\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\n this.currentView = VIEW_STATES.DATE;\n this._dialog = $mdDialog;\n\n this._attachedEvents = [];\n this.VIEWS = VIEW_STATES;\n this.params = mdcDefaultParams;\n this.meridien = 'AM';\n this.params = angular.extend(this.params, this.options);\n\n this.init();\n };\n\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\n PluginController.prototype = {\n init: function () {\n this.timeMode = this.params.time && !this.params.date;\n this.dateMode = this.params.date;\n this.initDates();\n this.start();\n },\n currentNearest5Minute: function () {\n var date = this.currentDate || moment();\n var minutes = (5 * Math.round(date.minute() / 5));\n if (minutes >= 60) {\n minutes = 55; //always push down\n }\n return moment(date).minutes(minutes);\n },\n initDates: function () {\n var that = this;\n var _dateParam = function (input, fallback) {\n var ret = null;\n if (angular.isDefined(input) && input !== null && input !== '') {\n if (angular.isString(input)) {\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\n ret = moment(input, that.params.format).locale(that.params.lang);\n }\n else {\n ret = moment(input).locale(that.params.lang);\n }\n } else if (typeof input === 'number') {\n ret = moment(input).locale(that.params.lang);\n } else {\n if (angular.isDate(input)) {\n var x = input.getTime();\n ret = moment(x, \"x\").locale(that.params.lang);\n } else if (input._isAMomentObject) {\n ret = input;\n }\n }\n }\n else {\n ret = fallback;\n }\n return ret;\n };\n\n this.currentDate = _dateParam(this.params.currentDate, moment());\n this.minDate = _dateParam(this.params.minDate);\n this.maxDate = _dateParam(this.params.maxDate);\n this.disableDates = this.params.disableDates.map(function (x) {\n return moment(x).format('MMMM Do YYYY')\n });\n this.selectDate(this.currentDate);\n },\n initDate: function () {\n this.currentView = VIEW_STATES.DATE;\n },\n initHours: function () {\n this.currentView = VIEW_STATES.HOUR;\n },\n initMinutes: function () {\n this.currentView = VIEW_STATES.MINUTE;\n },\n isAfterMinDate: function (date, checkHour, checkMinute) {\n var _return = true;\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n var _minDate = moment(this.minDate);\n var _date = moment(date);\n\n if (!checkHour && !checkMinute) {\n _minDate.hour(0);\n _minDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _minDate.second(0);\n _date.second(0);\n _minDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _minDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\n var _return = true;\n\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n var _maxDate = moment(this.maxDate);\n var _date = moment(date);\n\n if (!checkTime && !checkMinute) {\n _maxDate.hour(0);\n _maxDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _maxDate.second(0);\n _date.second(0);\n _maxDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _maxDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isInDisableDates: function (date) {\n var dut = date.format('MMMM Do YYYY')\n if (this.disableDates.indexOf(dut) > -1) {\n return false;\n }\n return true;\n },\n selectDate: function (date) {\n if (date) {\n this.currentDate = moment(date);\n if (!this.isAfterMinDate(this.currentDate)) {\n this.currentDate = moment(this.minDate);\n }\n\n if (!this.isBeforeMaxDate(this.currentDate)) {\n this.currentDate = moment(this.maxDate);\n }\n this.currentDate.locale(this.params.lang);\n this.calendarStart = moment(this.currentDate);\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\n }\n },\n setName: function () {\n var text = \"\";\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (var i = 0; i < 5; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n },\n isPM: function () {\n return this.meridien === 'PM';\n },\n incrementYear: function (amount) {\n if (amount === 1 && this.isNextYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n\n if (amount === -1 && this.isPreviousYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n },\n isPreviousMonthVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\n },\n isNextMonthVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\n },\n isPreviousYearVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\n },\n isNextYearVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\n },\n isHourAvailable: function (hour) {\n var _date = moment(this.currentDate);\n _date.hour(this.convertHours(hour)).minute(0).second(0);\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\n },\n isMinuteAvailable: function (minute) {\n var _date = moment(this.currentDate);\n _date.minute(minute).second(0);\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\n },\n start: function () {\n this.currentView = VIEW_STATES.DATE;\n //this.initDates();\n if (this.params.date) {\n this.initDate();\n } else {\n if (this.params.time) {\n this.initHours();\n }\n }\n },\n today: function () {\n this.selectDate(Date.now());\n },\n ok: function () {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n if (this.params.time === true) {\n this.initHours();\n }\n else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.HOUR:\n this.initMinutes();\n break;\n case VIEW_STATES.MINUTE:\n this.hide(true);\n break;\n }\n },\n cancel: function () {\n if (this.params.time) {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n this.hide();\n break;\n case VIEW_STATES.HOUR:\n if (this.params.date) {\n this.initDate();\n }\n else {\n this.hide();\n }\n break;\n case VIEW_STATES.MINUTE:\n this.initHours();\n break;\n }\n }\n else {\n this.hide();\n }\n },\n selectMonthBefore: function () {\n this.calendarStart.subtract(1, 'months');\n },\n selectMonthAfter: function () {\n this.calendarStart.add(1, 'months');\n },\n selectYearBefore: function () {\n this.calendarStart.subtract(1, 'years');\n },\n selectYearAfter: function () {\n this.calendarStart.add(1, 'years');\n },\n selectAM: function () {\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\n if (this.currentDate.hour() >= 12) {\n this.selectDate(this.currentDate.subtract(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\n }\n }\n },\n selectPM: function () {\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\n if (this.currentDate.hour() < 12) {\n this.selectDate(this.currentDate.add(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\n }\n }\n },\n convertHours: function (h) {\n var _return = h;\n if ((h < 12) && this.isPM())\n _return += 12;\n\n return _return;\n },\n hide: function (okBtn) {\n if (okBtn) {\n this._dialog.hide(this.currentDate);\n } else {\n this._dialog.cancel();\n }\n }\n };\n\n\n angular.module(moduleName)\n .directive('mdcDatetimePickerCalendar', [\n function () {\n\n var YEAR_MIN = 1920,\n YEAR_MAX = new Date().getFullYear() + 30,\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\n ITEM_HEIGHT = 240,\n MONTHS = [];\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\n MONTHS.push(i);\n }\n\n var currentMonthIndex = function (date, low) {\n low = low ? low : 0;\n var year = date.year();\n var month = date.month();\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\n };\n\n return {\n restrict: 'E',\n scope: {\n picker: '=',\n date: '='\n },\n bindToController: true,\n controllerAs: 'cal',\n controller: ['$scope', function ($scope) {\n this.$onInit = function () {\n var calendar = this,\n picker = this.picker,\n days = [];\n\n for (var i = picker.params.weekStart; days.length < 7; i++) {\n if (i > 6) {\n i = 0;\n }\n days.push(i.toString());\n }\n\n calendar.week = days;\n if (!picker.maxDate && !picker.minDate) {\n calendar.months = MONTHS;\n } else {\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\n calendar.months = MONTHS.slice(low, high);\n }\n\n\n calendar.getItemAtIndex = function (index) {\n var month = ((index + 1) % 12) || 12;\n var year = YEAR_MIN + Math.floor(index / 12);\n var monthObj = moment(picker.currentDate)\n .year(year)\n .month(month);\n return generateMonthCalendar(monthObj);\n };\n\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\n\n $scope.$watch(function () {\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\n }, function (val2, val1) {\n if (val2 != val1) {\n var nDate = moment(val2, 'YYYY-MM');\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var index = currentMonthIndex(nDate, low);\n if (calendar.topIndex != index) {\n calendar.topIndex = index;\n }\n }\n });\n\n var generateMonthCalendar = function (date) {\n var month = {};\n if (date !== null) {\n month.name = date.format('MMMM YYYY');\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\n .hour(date.hour())\n .minute(date.minute())\n ;\n var iNumDay = startOfMonth.format('d');\n month.days = [];\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\n if (i === startOfMonth.date()) {\n var iWeek = calendar.week.indexOf(iNumDay.toString());\n if (iWeek > 0) {\n for (var x = 0; x < iWeek; x++) {\n month.days.push(0);\n }\n }\n }\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\n }\n\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\n for (var j = 0; j < slices; j++) {\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\n }\n month.days = daysTmp;\n return month;\n }\n\n };\n\n calendar.toDay = function (i) {\n return moment(parseInt(i), \"d\")\n .locale(picker.params.lang)\n .format(\"dd\")\n .substring(0, 1);\n };\n\n calendar.isInRange = function (date) {\n return picker.isAfterMinDate(moment(date), false, false)\n && picker.isBeforeMaxDate(moment(date), false, false)\n && picker.isInDisableDates(moment(date));\n };\n\n calendar.selectDate = function (date) {\n if (date) {\n if (calendar.isSelectedDay(date)) {\n return picker.ok();\n }\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\n }\n };\n\n calendar.isSelectedDay = function (m) {\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\n };\n\n calendar.isDateOfTheDay = function (m) {\n var today = calendar.picker.options.showTodaysDate;\n if (!today) {\n return false;\n }\n\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\n }\n }\n }],\n template: '' +\n '
' +\n '
' +\n '
' +\n '
'\n };\n }])\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\n function ($compile) {\n var buildCalendarContent = function (element, scope) {\n var tbody = angular.element(element[0].querySelector('tbody'));\n var calendar = scope.cal, month = scope.month;\n\n var tbodyHtml = [];\n\n month.days.forEach(function (weekDays, i) {\n tbodyHtml.push('');\n weekDays.forEach(function (weekDay, j) {\n tbodyHtml.push('');\n if (weekDay) {\n if (calendar.isInRange(weekDay)) {\n //build a\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\n\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n } else {\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n }\n }\n tbodyHtml.push('');\n });\n tbodyHtml.push('');\n });\n\n tbody.html(tbodyHtml.join(''));\n $compile(tbody)(scope);\n };\n\n return {\n scope: {\n idx: '='\n },\n require: '^mdcDatetimePickerCalendar',\n restrict: 'AE',\n template: '
{{month.name}}
'\n + ''\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + ' '\n + '
{{cal.toDay(day)}}
',\n link: function (scope, element, attrs, calendar) {\n scope.cal = calendar;\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n scope.$watch(function () {\n return scope.idx;\n }, function (idx, oldIdx) {\n if (idx != oldIdx) {\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n }\n });\n }\n };\n }\n ])\n ;\n\n angular.module(moduleName)\n .directive('mdcDtpNoclick', function () {\n return {\n link: function (scope, el) {\n el.on('click', function (e) {\n e.preventDefault();\n });\n }\n };\n });\n angular.module(moduleName)\n .directive('mdcDatetimePickerClock', [\n function () {\n\n var template = '
 '\n + '
'\n + ' {{point.display}}'\n + ' {{point.display}}'\n + '
'\n + '
'\n + '
'\n + '
'\n + '
';\n\n return {\n restrict: 'E',\n template: template,\n link: function (scope, element, attrs) {\n var minuteMode = attrs.mode === 'minutes';\n var picker = scope.picker;\n //banking on the fact that there will only be one at a time\n var componentRoot = document.querySelector('md-dialog.dtp');\n var exec = function () {\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\n\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\n //set width\n var clockWidth = (w - (ml + mr + pl + pr));\n clock.css('width', (clockWidth) + 'px');\n\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\n\n var r = (clockWidth / 2);\n var j = r / 1.2; //???\n\n var points = [];\n\n for (var h = 0; h < 12; ++h) {\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\n var left = (r + x + pL / 2) - (pL + mL);\n var top = (r - y - mT / 2) - (pT + mT);\n\n var hour = {\n left: left,\n top: top,\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\n };\n\n if (minuteMode) {\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\n } else {\n\n if (picker.params.shortTime) {\n hour.display = (h === 0) ? 12 : h;\n } else {\n hour.display = picker.isPM() ? h + 12 : h;\n }\n }\n\n\n points.push(hour);\n }\n\n scope.points = points;\n scope.mode = attrs.mode;\n setCurrentValue();\n clock.css('height', clockWidth + 'px');\n //picker.initHands(true);\n\n var clockCenter = element[0].querySelector('.dtp-clock-center');\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\n var _hL = r / 1.8;\n var _mL = r / 1.5;\n\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _hL + 'px',\n marginTop: (r - _hL - pL) + 'px'\n }).addClass(!minuteMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\n ({\n left: r + (mL * 1.5) + 'px',\n height: _mL + 'px',\n marginTop: (r - _mL - pL) + 'px'\n }).addClass(minuteMode ? 'on' : '');\n\n angular.element(clockCenter).css({\n left: (r + pL + mL - centerWidth) + 'px',\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\n });\n animateHands();\n };\n\n var animateHands = function () {\n var _date = picker.currentNearest5Minute();\n var h = _date.hour();\n var m = _date.minute();\n\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\n };\n\n var rotateElement = function (el, deg) {\n angular.element(el).css({\n WebkitTransform: 'rotate(' + deg + 'deg)',\n '-moz-transform': 'rotate(' + deg + 'deg)',\n '-ms-transform': 'rotate(' + deg + 'deg)',\n 'transform': 'rotate(' + deg + 'deg)'\n });\n };\n\n\n var setCurrentValue = function () {\n var date = picker.currentNearest5Minute();\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\n };\n\n scope.$watch(function () {\n var tmp = picker.currentNearest5Minute();\n return tmp ? tmp.format('HH:mm') : '';\n }, function () {\n setCurrentValue();\n animateHands();\n });\n\n\n var setDisplayPoints = function (isPM, points) {\n for (var i = 0; i < points.length; i++) {\n points[i].display = i;\n if (isPM) {\n points[i].display += 12;\n }\n }\n return points;\n };\n\n if (!picker.params.shortTime) {\n scope.$watch('picker.meridien', function () {\n if (!minuteMode) {\n if (scope.points) {\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\n scope.points = points;\n }\n }\n });\n }\n\n\n scope.setTime = function (val) {\n if (val === scope.currentValue) {\n picker.ok();\n }\n\n if (!minuteMode) {\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\n } else {\n picker.currentDate.minute(val);\n }\n picker.currentDate.second(0)\n };\n\n scope.pointAvailable = function (point) {\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\n };\n\n var unWatcher = scope.$watch(function () {\n return element[0].querySelectorAll('div').length;\n }, function () {\n exec();\n unWatcher();\n });\n }\n }\n }]);\n\n})();\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index c74c87c..65404c4 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -57,7 +57,7 @@ + ' ' + ' ' + ' ' - + ' {{picker.params.todayText}}' + + ' {{picker.params.todayText}}' + ' {{picker.params.cancelText}}' + ' {{picker.params.okText}}' + ' ' From 2baabc11aec4bb5ee3c9808ab20afbf28b2db71e Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 15 Feb 2017 00:10:12 -0500 Subject: [PATCH 010/226] #58 remove class md-input-focused after element blur --- js/angular-material-datetimepicker.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 2651293..008d10c 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -157,6 +157,7 @@ element.on('focus', function (e) { e.preventDefault(); element.blur(); + element.parent().removeClass('md-input-focused'); if (isOn) { return; } @@ -192,10 +193,12 @@ } element.blur(); + element.parent().removeClass('md-input-focused'); }, function () { isOn = false; element.blur(); + element.parent().removeClass('md-input-focused'); }) ; }); From 8c00f2f18f5ce8089dcc45302379af2118eb9d02 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 15 Feb 2017 23:22:47 -0500 Subject: [PATCH 011/226] remove unused code --- js/angular-material-datetimepicker.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 008d10c..18ad026 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -152,7 +152,6 @@ }); } - element.attr('readonly', ''); //@TODO custom event to trigger input element.on('focus', function (e) { e.preventDefault(); @@ -192,16 +191,15 @@ $timeout(scope.ngChange, 0); } - element.blur(); element.parent().removeClass('md-input-focused'); }, function () { isOn = false; - element.blur(); element.parent().removeClass('md-input-focused'); }) ; }); + } }; }]) @@ -632,13 +630,10 @@ calendar.months = MONTHS.slice(low, high); } - calendar.getItemAtIndex = function (index) { var month = ((index + 1) % 12) || 12; var year = YEAR_MIN + Math.floor(index / 12); - var monthObj = moment(picker.currentDate) - .year(year) - .month(month); + var monthObj = moment(picker.currentDate).year(year).month(month); return generateMonthCalendar(monthObj); }; @@ -663,8 +658,7 @@ month.name = date.format('MMMM YYYY'); var startOfMonth = moment(date).locale(picker.params.lang).startOf('month') .hour(date.hour()) - .minute(date.minute()) - ; + .minute(date.minute()); var iNumDay = startOfMonth.format('d'); month.days = []; for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) { @@ -725,7 +719,8 @@ }; }; }], - template: '' + + template: + '' + '
' + '
' + '
' + @@ -837,7 +832,7 @@ var componentRoot = document.querySelector('md-dialog.dtp'); var exec = function () { var clock = angular.element(element[0].querySelector('.dtp-picker-clock')), - pickerEl = angular.element(componentRoot.querySelector('.dtp-picker')); + pickerEl = angular.element(componentRoot.querySelector('.dtp-picker')); var w = componentRoot.querySelector('.dtp-content').offsetWidth; var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0; From c7794d13bbc50b904d5ea00467c9734ad7e564d3 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 15 Feb 2017 23:29:21 -0500 Subject: [PATCH 012/226] version 1.5.6 --- bower.json | 2 +- js/demo.js | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/bower.json b/bower.json index 1fe934a..101a89a 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.5", + "version": "1.5.6", "keywords": [ "css", "js", diff --git a/js/demo.js b/js/demo.js index d1fd7da..1f4f620 100644 --- a/js/demo.js +++ b/js/demo.js @@ -39,12 +39,11 @@ scope.title = attrs.title || "Source Code"; var sourceCode = tmp[0].outerHTML .replace('ng-model=', 'angularModel=') - .replace('ng-click=', 'angularClick=') + .replace('ng-click=', 'angularClick=') .replace(/ng-[a-z\-]+/g, '') .replace(/ +/g, ' ') .replace('angularModel=', 'ng-model=') - .replace('angularClick=', 'ng-click=') - ; + .replace('angularClick=', 'ng-click='); scope.sourceCode = style_html(sourceCode, { 'indent_size': 2, From df0c8e9a1510d6b8f4fa21a74b64fb5e2bb2db71 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 15 Feb 2017 23:29:34 -0500 Subject: [PATCH 013/226] 1.5.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 01b0e43..e568bd5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.5", + "version": "1.5.6", "keywords": [ "css", "js", From 157011936c85cebbcf3967ad3e5df38a26fc7368 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 15 Feb 2017 23:35:02 -0500 Subject: [PATCH 014/226] build dist --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index c902fcc..ded976f 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.attr("readonly",""),n.on("focus",function(c){if(c.preventDefault(),n.blur(),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,skipHide:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.blur()},function(){o=!1,n.blur()})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,skipHide:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),I=y-Y-M/2-(g+M),S={left:A,top:I,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":I+"px"}};r?S.display=S.value<10?"0"+S.value:S.value:n.params.shortTime?S.display=0===T?12:T:S.display=n.isPM()?T+12:T,b.push(S)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var H=e[0].querySelector(".dtp-clock-center"),P=H.offsetWidth/2||7.5,V=H.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(H).css({left:y+v+k-P+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a{{picker.params.amText}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.on("focus",function(c){if(c.preventDefault(),n.blur(),n.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,skipHide:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.parent().removeClass("md-input-focused")},function(){o=!1,n.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,skipHide:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),I=y-Y-M/2-(g+M),S={left:A,top:I,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":I+"px"}};r?S.display=S.value<10?"0"+S.value:S.value:n.params.shortTime?S.display=0===T?12:T:S.display=n.isPM()?T+12:T,b.push(S)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var H=e[0].querySelector(".dtp-clock-center"),P=H.offsetWidth/2||7.5,V=H.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(H).css({left:y+v+k-P+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: []\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@'\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n element.attr('readonly', '');\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: false,\r\n hasBackDrop: false,\r\n skipHide: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.blur();\r\n\r\n }, function () {\r\n isOn = false;\r\n element.blur();\r\n })\r\n ;\r\n });\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean] =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM'\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: false,\r\n skipHide: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n //this.initDates();\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n }\r\n else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n this.initMinutes();\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate)\r\n .year(year)\r\n .month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute())\r\n ;\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n //picker.initHands(true);\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","disableParentScroll","hasBackDrop","skipHide","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","minutes","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementYear","amount","isNextYearVisible","add","isPreviousYearVisible","isPreviousMonthVisible","startOf","isNextMonthVisible","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","currentValue","tmp","setDisplayPoints","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: []\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@'\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: false,\r\n hasBackDrop: false,\r\n skipHide: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean] =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM'\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: false,\r\n skipHide: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n //this.initDates();\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n }\r\n else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n this.initMinutes();\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n //picker.initHands(true);\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file From 9ddbc8cd8580130cc6ccbc55fdae81016b44c184 Mon Sep 17 00:00:00 2001 From: Kyutae Park Date: Thu, 16 Feb 2017 21:20:22 +0900 Subject: [PATCH 015/226] change option name skipHide to multiple --- js/angular-material-datetimepicker.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index dfcbd4e..352d769 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -181,7 +181,7 @@ bindToController: true, disableParentScroll: false, hasBackDrop: false, - skipHide: true + multiple: true }) .then(function (v) { scope.currentDate = v ? v._d : v; @@ -246,7 +246,7 @@ bindToController: true, clickOutsideToClose: true, disableParentScroll: false, - skipHide: true + multiple: true }) .then(function (v) { var currentDate = v ? v._d : v; From 8ed3b437ff66a1faf7a8d8a54f90be096cce94ae Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 16 Feb 2017 23:41:50 -0500 Subject: [PATCH 016/226] gulp bump --- gulpfile.js | 28 +- package.json | 8 +- yarn.lock | 779 +++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 796 insertions(+), 19 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 7bfdc83..c854562 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,12 +4,26 @@ var gulp = require('gulp'), cleanCSS = require('gulp-clean-css'), sourcemaps = require('gulp-sourcemaps'), rename = require('gulp-rename'), - runSequence = require('run-sequence'); + runSequence = require('run-sequence'), + bump = require('gulp-bump'), + git = require('gulp-git'), + filter = require('gulp-filter'), + push = require('gulp-git-push'), + tag = require('gulp-tag-version'), + argv = require('yargs') + .option('type', { + alias: 't', + choices: ['patch', 'minor', 'major'] + }).argv; gulp.task('default', function(cb) { runSequence(['js', 'css'], cb); }); +gulp.task('bump', function(cb) { + runSequence(['js', 'css'], 'bump push', cb); +}); + gulp.task('js', function(cb) { pump([ gulp.src(['./js/angular-material-datetimepicker.js']), @@ -28,4 +42,16 @@ gulp.task('css', function(cb) { rename({extname: '.min.css'}), gulp.dest('./dist/') ], cb); +}); + +gulp.task('bump push', function(cb) { + pump([ + gulp.src(['./package.json', './bower.json']), + bump({type: argv.type || 'patch'}), + gulp.dest('./'), + git.commit('bump version '), + filter('package.json'), + tag(), + push() + ], cb); }); \ No newline at end of file diff --git a/package.json b/package.json index e568bd5..e482404 100644 --- a/package.json +++ b/package.json @@ -28,11 +28,17 @@ }, "devDependencies": { "gulp": "^3.9.1", + "gulp-bump": "^2.6.1", "gulp-clean-css": "^2.3.2", + "gulp-filter": "^5.0.0", + "gulp-git": "^2.0.0", + "gulp-git-push": "^1.0.1", "gulp-rename": "^1.2.2", "gulp-sourcemaps": "^2.4.0", + "gulp-tag-version": "^1.3.0", "gulp-uglify": "^2.0.1", "pump": "^1.0.2", - "run-sequence": "^1.2.2" + "run-sequence": "^1.2.2", + "yargs": "^6.6.0" } } diff --git a/yarn.lock b/yarn.lock index e3fb8f9..e33e401 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,18 +34,53 @@ angular@^1.5.10: version "1.6.2" resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.2.tgz#d0b677242ac4bf9ae81424297c6320973af4bb5a" +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + dependencies: + ansi-wrap "0.1.0" + +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^0.2.0, ansi-regex@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-styles@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" +ansi-wrap@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + +any-shell-escape@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/any-shell-escape/-/any-shell-escape-0.1.1.tgz#d55ab972244c71a9a5e1ab0879f30bf110806959" + archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" +arr-diff@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + dependencies: + arr-flatten "^1.0.1" + array-slice "^0.2.3" + arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -56,11 +91,29 @@ arr-flatten@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" +arr-union@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" + array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" -array-uniq@^1.0.2: +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1, array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -68,6 +121,10 @@ array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + async@~0.2.6: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" @@ -103,10 +160,36 @@ buffer-shims@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +bump-regex@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/bump-regex/-/bump-regex-2.6.1.tgz#e2dd5d2fb542459c4eef275e0e2df26381f36120" + dependencies: + semver "^5.1.0" + xtend "^4.0.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" @@ -124,6 +207,16 @@ chalk@*, chalk@^1.0.0, chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" + dependencies: + ansi-styles "^1.1.0" + escape-string-regexp "^1.0.0" + has-ansi "^0.1.0" + strip-ansi "^0.3.0" + supports-color "^0.2.0" + clean-css@^3.4.23: version "3.4.24" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.24.tgz#89f5a5e9da37ae02394fe049a41388abbe72c3b5" @@ -139,10 +232,26 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" -clone-stats@^0.0.1: +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-stats@^0.0.1, clone-stats@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + clone@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" @@ -151,6 +260,18 @@ clone@^1.0.0, clone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" +cloneable-readable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" + dependencies: + inherits "^2.0.1" + process-nextick-args "^1.0.6" + through2 "^2.0.1" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + commander@2.8.x: version "2.8.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" @@ -178,6 +299,19 @@ css@2.X: source-map-resolve "^0.3.0" urix "^0.1.0" +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +dateformat@^1.0.11, dateformat@^1.0.7-1.2.3: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + dateformat@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" @@ -196,7 +330,7 @@ debug@2.X: dependencies: ms "0.7.2" -decamelize@^1.0.0: +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -238,7 +372,13 @@ end-of-stream@~0.1.5: dependencies: once "~1.3.0" -escape-string-regexp@^1.0.2: +error-ex@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" + dependencies: + is-arrayish "^0.2.1" + +escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -260,6 +400,12 @@ expand-tilde@^1.2.1, expand-tilde@^1.2.2: dependencies: os-homedir "^1.0.1" +extend-shallow@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" + dependencies: + kind-of "^1.1.0" + extend@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" @@ -295,6 +441,13 @@ find-index@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + findup-sync@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" @@ -320,6 +473,12 @@ first-chunk-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" +first-chunk-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" + dependencies: + readable-stream "^2.0.2" + flagged-respawn@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" @@ -344,6 +503,14 @@ gaze@^0.5.1: dependencies: globule "~0.1.0" +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -427,7 +594,7 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" -graceful-fs@4.X: +graceful-fs@4.X, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -445,6 +612,16 @@ graceful-fs@~1.2.0: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" +gulp-bump@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-bump/-/gulp-bump-2.6.1.tgz#9d27a9ec0e1b8608c39bb41238a35e860281bb18" + dependencies: + bump-regex "^2.6.1" + plugin-error "^0.1.2" + plugin-log "^0.1.0" + semver "^5.3.0" + through2 "^2.0.1" + gulp-clean-css@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-2.3.2.tgz#7410769c4474c12ccd55e98ea74b1898d428acd0" @@ -455,6 +632,52 @@ gulp-clean-css@^2.3.2: through2 "^2.0.3" vinyl-sourcemaps-apply "^0.2.1" +gulp-filter@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gulp-filter/-/gulp-filter-5.0.0.tgz#cfa81966fb67884f2ba754b067152929428d59bc" + dependencies: + gulp-util "^3.0.6" + multimatch "^2.0.0" + streamfilter "^1.0.5" + +gulp-git-push@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gulp-git-push/-/gulp-git-push-1.0.1.tgz#91cd48eb4e6ca013aa62a4aac2010ef9ec844cd9" + dependencies: + gulp-git "^1.7.1" + gulp-util "^3.0.7" + map-stream "^0.1.0" + object-assign "^4.0.1" + +gulp-git@^1.7.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-1.15.1.tgz#cdd9d354fc41d8dcb52cef47256dfba366785979" + dependencies: + any-shell-escape "^0.1.1" + gulp-util "^3.0.6" + require-dir "^0.1.0" + through2 "^0.6.5" + +gulp-git@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.0.0.tgz#29da8251db078ace48ebcdf49861282e97a00fe9" + dependencies: + any-shell-escape "^0.1.1" + gulp-util "^3.0.6" + require-dir "^0.3.1" + strip-bom-stream "^3.0.0" + through2 "^2.0.3" + vinyl "^2.0.1" + +gulp-git@~0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-0.3.6.tgz#77ec3da22925c246edd796ca10d4163965d8140a" + dependencies: + any-shell-escape "^0.1.1" + gulp-util "~2.2.14" + map-stream "~0.1.0" + through2 "^0.4.1" + gulp-rename@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" @@ -474,6 +697,14 @@ gulp-sourcemaps@^2.4.0: through2 "2.X" vinyl "1.X" +gulp-tag-version@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/gulp-tag-version/-/gulp-tag-version-1.3.0.tgz#8448c87eed1866db8e6cb598bc419be2df7c47db" + dependencies: + gulp-git "~0.3.6" + gulp-util "~2.2.14" + map-stream "~0.1.0" + gulp-uglify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-2.0.1.tgz#e8cfb831014fc9ff2e055e33785861830d499365" @@ -487,7 +718,7 @@ gulp-uglify@^2.0.1: uglify-save-license "^0.4.1" vinyl-sourcemaps-apply "^0.2.0" -gulp-util@*, gulp-util@^3.0.0, gulp-util@^3.0.7: +gulp-util@*, gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7: version "3.0.8" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" dependencies: @@ -510,6 +741,19 @@ gulp-util@*, gulp-util@^3.0.0, gulp-util@^3.0.7: through2 "^2.0.0" vinyl "^0.5.0" +gulp-util@~2.2.14: + version "2.2.20" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-2.2.20.tgz#d7146e5728910bd8f047a6b0b1e549bc22dbd64c" + dependencies: + chalk "^0.5.0" + dateformat "^1.0.7-1.2.3" + lodash._reinterpolate "^2.4.1" + lodash.template "^2.4.1" + minimist "^0.2.0" + multipipe "^0.1.0" + through2 "^0.5.0" + vinyl "^0.2.1" + gulp@^3.9.1: version "3.9.1" resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" @@ -534,6 +778,12 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" +has-ansi@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" + dependencies: + ansi-regex "^0.2.0" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -552,6 +802,16 @@ homedir-polyfill@^1.0.0: dependencies: parse-passwd "^1.0.0" +hosted-git-info@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -575,6 +835,10 @@ interpret@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + is-absolute@^0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" @@ -582,10 +846,20 @@ is-absolute@^0.2.3: is-relative "^0.2.1" is-windows "^0.2.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + is-buffer@^1.0.2: version "1.1.4" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + is-dotfile@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" @@ -604,6 +878,18 @@ is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -630,13 +916,17 @@ is-relative@^0.2.1: dependencies: is-unc-path "^0.1.1" +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + is-unc-path@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" dependencies: unc-path-regex "^0.1.0" -is-utf8@^0.2.0: +is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -662,6 +952,10 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" +kind-of@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + kind-of@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" @@ -676,6 +970,12 @@ lazy-debug-legacy@0.0.X: version "0.0.1" resolved "https://registry.yarnpkg.com/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz#537716c0776e4cf79e3ed1b621f7658c2911b1b1" +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + liftoff@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" @@ -690,6 +990,16 @@ liftoff@^2.1.0: rechoir "^0.6.2" resolve "^1.1.7" +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" @@ -702,14 +1012,36 @@ lodash._basevalues@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" +lodash._escapehtmlchar@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz#df67c3bb6b7e8e1e831ab48bfa0795b92afe899d" + dependencies: + lodash._htmlescapes "~2.4.1" + +lodash._escapestringchar@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz#ecfe22618a2ade50bfeea43937e51df66f0edb72" + lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" +lodash._htmlescapes@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz#32d14bf0844b6de6f8b62a051b4f67c228b624cb" + lodash._isiterateecall@^3.0.0: version "3.0.9" resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" +lodash._isnative@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c" + +lodash._objecttypes@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" + lodash._reescape@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" @@ -718,24 +1050,56 @@ lodash._reevaluate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" +lodash._reinterpolate@^2.4.1, lodash._reinterpolate@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz#4f1227aa5a8711fc632f5b07a1f4607aab8b3222" + lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" +lodash._reunescapedhtml@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz#747c4fc40103eb3bb8a0976e571f7a2659e93ba7" + dependencies: + lodash._htmlescapes "~2.4.1" + lodash.keys "~2.4.1" + lodash._root@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" +lodash._shimkeys@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" + dependencies: + lodash._objecttypes "~2.4.1" + lodash.assignwith@^4.0.7: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz#127a97f02adc41751a954d24b0de17e100e038eb" +lodash.defaults@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz#a7e8885f05e68851144b6e12a8f3678026bc4c54" + dependencies: + lodash._objecttypes "~2.4.1" + lodash.keys "~2.4.1" + lodash.escape@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" dependencies: lodash._root "^3.0.0" +lodash.escape@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-2.4.1.tgz#2ce12c5e084db0a57dda5e5d1eeeb9f5d175a3b4" + dependencies: + lodash._escapehtmlchar "~2.4.1" + lodash._reunescapedhtml "~2.4.1" + lodash.keys "~2.4.1" + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -748,6 +1112,12 @@ lodash.isempty@^4.2.1: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" +lodash.isobject@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" + dependencies: + lodash._objecttypes "~2.4.1" + lodash.isplainobject@^4.0.4: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -764,6 +1134,14 @@ lodash.keys@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" +lodash.keys@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz#48dea46df8ff7632b10d706b8acb26591e2b3727" + dependencies: + lodash._isnative "~2.4.1" + lodash._shimkeys "~2.4.1" + lodash.isobject "~2.4.1" + lodash.mapvalues@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" @@ -776,6 +1154,18 @@ lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" +lodash.template@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-2.4.1.tgz#9e611007edf629129a974ab3c48b817b3e1cf20d" + dependencies: + lodash._escapestringchar "~2.4.1" + lodash._reinterpolate "~2.4.1" + lodash.defaults "~2.4.1" + lodash.escape "~2.4.1" + lodash.keys "~2.4.1" + lodash.templatesettings "~2.4.1" + lodash.values "~2.4.1" + lodash.template@^3.0.0: version "3.6.2" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" @@ -797,6 +1187,19 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" +lodash.templatesettings@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz#ea76c75d11eb86d4dbe89a83893bb861929ac699" + dependencies: + lodash._reinterpolate "~2.4.1" + lodash.escape "~2.4.1" + +lodash.values@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz#abf514436b3cb705001627978cbcf30b1280eea4" + dependencies: + lodash.keys "~2.4.1" + lodash@^4.13.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -809,6 +1212,13 @@ longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + lru-cache@2: version "2.7.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" @@ -827,6 +1237,29 @@ map-cache@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +map-stream@^0.1.0, map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -851,6 +1284,12 @@ minimatch@^2.0.1: dependencies: brace-expansion "^1.0.0" +minimatch@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + minimatch@~0.2.11: version "0.2.14" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" @@ -862,7 +1301,11 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.0: +minimist@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.0.tgz#4dffe525dae2b864c66c2e23c6271d7afdecefce" + +minimist@^1.1.0, minimist@^1.1.3: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -880,7 +1323,16 @@ ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" -multipipe@^0.1.2: +multimatch@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +multipipe@^0.1.0, multipipe@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" dependencies: @@ -890,10 +1342,23 @@ natives@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + object-assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" @@ -902,10 +1367,14 @@ object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" -object-assign@^4.1.0: +object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -935,6 +1404,12 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + parse-filepath@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" @@ -952,10 +1427,22 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" @@ -966,6 +1453,45 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +plugin-error@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" + dependencies: + ansi-cyan "^0.1.1" + ansi-red "^0.1.1" + arr-diff "^1.0.1" + arr-union "^2.0.1" + extend-shallow "^1.1.2" + +plugin-log@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/plugin-log/-/plugin-log-0.1.0.tgz#86049cf6ab10833398a931f3689cbaee7b5e1333" + dependencies: + chalk "^1.1.1" + dateformat "^1.0.11" + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -974,7 +1500,7 @@ pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" -process-nextick-args@~1.0.6: +process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -992,7 +1518,22 @@ randomatic@^1.1.3: is-number "^2.0.2" kind-of "^3.0.2" -"readable-stream@>=1.0.33-1 <1.1.0-0": +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: @@ -1001,7 +1542,7 @@ randomatic@^1.1.3: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.1.5: +readable-stream@^2.0.2, readable-stream@^2.1.5: version "2.2.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" dependencies: @@ -1028,6 +1569,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + regex-cache@^0.4.2: version "0.4.3" resolved "http://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -1035,6 +1583,10 @@ regex-cache@^0.4.2: is-equal-shallow "^0.1.3" is-primitive "^2.0.0" +remove-trailing-separator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" @@ -1043,10 +1595,36 @@ repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + +require-dir@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-0.1.0.tgz#81e01e299faf5b74c34b6594f8e5add5985ddec5" + +require-dir@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-0.3.1.tgz#b5a8e28bae0343bb0d0cc38ab1f531e1931b264a" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + resolve-dir@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" @@ -1075,6 +1653,10 @@ run-sequence@^1.2.2: chalk "*" gulp-util "*" +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + semver@^4.1.0: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -1083,10 +1665,18 @@ sequencify@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + sigmund@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + source-map-resolve@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" @@ -1120,20 +1710,67 @@ sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + stream-consume@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" +streamfilter@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/streamfilter/-/streamfilter-1.0.5.tgz#87507111beb8e298451717b511cfed8f002abf53" + dependencies: + readable-stream "^2.0.2" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -strip-ansi@^3.0.0: +strip-ansi@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" + dependencies: + ansi-regex "^0.2.1" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" dependencies: ansi-regex "^2.0.0" +strip-bom-buf@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" + dependencies: + is-utf8 "^0.2.1" + +strip-bom-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz#956bcc5d84430f69256a90ed823765cd858e159c" + dependencies: + first-chunk-stream "^2.0.0" + strip-bom-buf "^1.0.0" + strip-bom@3.X: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -1145,18 +1782,48 @@ strip-bom@^1.0.0: first-chunk-stream "^1.0.0" is-utf8 "^0.2.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +supports-color@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -through2@2.X, through2@^2.0.0, through2@^2.0.3: +through2@2.X, through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" dependencies: readable-stream "^2.1.5" xtend "~4.0.1" -through2@^0.6.1: +through2@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" + dependencies: + readable-stream "~1.0.17" + xtend "~2.1.1" + +through2@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7" + dependencies: + readable-stream "~1.0.17" + xtend "~3.0.0" + +through2@^0.6.1, through2@^0.6.5: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" dependencies: @@ -1173,6 +1840,10 @@ time-stamp@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + uglify-js@2.7.5: version "2.7.5" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" @@ -1216,6 +1887,13 @@ v8flags@^2.0.2: dependencies: user-home "^1.1.1" +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + vinyl-fs@^0.3.0: version "0.3.14" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" @@ -1243,6 +1921,12 @@ vinyl@1.X: clone-stats "^0.0.1" replace-ext "0.0.1" +vinyl@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.2.3.tgz#bca938209582ec5a49ad538a00fa1f125e513252" + dependencies: + clone-stats "~0.0.1" + vinyl@^0.4.0: version "0.4.6" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" @@ -1258,6 +1942,22 @@ vinyl@^0.5.0: clone-stats "^0.0.1" replace-ext "0.0.1" +vinyl@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.1.tgz#1c3b4931e7ac4c1efee743f3b91a74c094407bb6" + dependencies: + clone "^1.0.0" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + is-stream "^1.1.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + which@^1.2.12: version "1.2.12" resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" @@ -1272,14 +1972,59 @@ wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + dependencies: + object-keys "~0.4.0" + +xtend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + +yargs@^6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" From 80c1700f5850cdb47f5666bd1fccc8d55b47d7f3 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 16 Feb 2017 23:42:45 -0500 Subject: [PATCH 017/226] bump version --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 101a89a..4f8b0aa 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.6", + "version": "1.5.7", "keywords": [ "css", "js", diff --git a/package.json b/package.json index e482404..f32b3e6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.6", + "version": "1.5.7", "keywords": [ "css", "js", From 05c9456efd74cb69809d5904ebd2903d132c3a80 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 16 Feb 2017 23:50:52 -0500 Subject: [PATCH 018/226] 1.5.7 dist --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index ded976f..0e20064 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.on("focus",function(c){if(c.preventDefault(),n.blur(),n.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,skipHide:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.parent().removeClass("md-input-focused")},function(){o=!1,n.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,skipHide:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),I=y-Y-M/2-(g+M),S={left:A,top:I,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":I+"px"}};r?S.display=S.value<10?"0"+S.value:S.value:n.params.shortTime?S.display=0===T?12:T:S.display=n.isPM()?T+12:T,b.push(S)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var H=e[0].querySelector(".dtp-clock-center"),P=H.offsetWidth/2||7.5,V=H.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(H).css({left:y+v+k-P+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a{{picker.params.amText}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.on("focus",function(c){if(c.preventDefault(),n.blur(),n.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.parent().removeClass("md-input-focused")},function(){o=!1,n.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),I=y-Y-M/2-(g+M),S={left:A,top:I,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":I+"px"}};r?S.display=S.value<10?"0"+S.value:S.value:n.params.shortTime?S.display=0===T?12:T:S.display=n.isPM()?T+12:T,b.push(S)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var P=e[0].querySelector(".dtp-clock-center"),H=P.offsetWidth/2||7.5,V=P.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(P).css({left:y+v+k-H+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: []\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@'\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: false,\r\n hasBackDrop: false,\r\n skipHide: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean] =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM'\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: false,\r\n skipHide: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n //this.initDates();\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n }\r\n else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n this.initMinutes();\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n //picker.initHands(true);\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","disableParentScroll","hasBackDrop","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","minutes","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementYear","amount","isNextYearVisible","add","isPreviousYearVisible","isPreviousMonthVisible","startOf","isNextMonthVisible","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","currentValue","tmp","setDisplayPoints","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: []\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@'\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: false,\r\n hasBackDrop: false,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean] =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM'\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: false,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n //this.initDates();\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n }\r\n else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n this.initMinutes();\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n //picker.initHands(true);\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file From c73cb002fee253f02c522cae2bac30b36fabc51d Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 17 Feb 2017 23:09:03 -0500 Subject: [PATCH 019/226] favicon --- favicon.png | Bin 0 -> 1381 bytes index.html | 7 ++++--- 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 favicon.png diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..35c3de681535fbefc5ede87ebede5641c1954f69 GIT binary patch literal 1381 zcmZ`%doUDu9RGQgL{W6QYObB+Y8V~iXs0R6ZfvqxDvz%5+M*Ph?T8*rPKUIXtHUYu z7|)e*b*a3$j~3 z0Bpecqi_%rU)MSl7*UV&sSr%h`ULs_@Qh@!7_;VUGtM6u2tda701$HkSb!y>2!P8j z0EnXjK$Zevms0UMy}`%A&~Tuj`)K|-8KCMNFS(Q1HT{zWyVrydy)VnTE<$DwRT^n4X>%iA36Ym10&5H=UW8VYAsXnQU%u z4qlDV=S!thp-`w+tF>CKKsr&~mHV==EluG5u$OxCq9UmW`nwpxJm=FjA0|Nt0CbPf4pT%O)>2$RFY52%s2LXo-g$ONl zQRn;LrPEzRQfy(+F%!_`ZI5Doo z+d7v;H?))3)NK@xPn-<*$S3Q&?90|zg$IXL<S9MqvBqiyYZB6Om?`|A?=sD zwY0dEe2hna<1Bx|9vG?oe4yFsugsu?A0pUfb6b;}nYZRP2z6FFy+#keLNGH$O7bJU zG-Y{IwP~&B)XS^8hdT30TH8Zgr8CS^&z_eU|I~1Tl3wD&K0IA1huS6gr)>@vgJfZp9Su)^y3)v)eswfS;8Ey0`q!ar7=K zg_Bn7{e=>SBJxa$38h0>Yl`r;dyFi%dpBhNG6)n!0VclW7t|W!8=X9;>qg!~x-sAC zyF=yI$6vn>qHT;N*0BD55Y(0)K{Agr%`!T7`8Ic0;+cHODZkh>-EVi^@MPPHGK8eI zbzU31ecOTiWqPgNqA;rgU2t|+I@hiPd+Z1%-Lf-cp!@Z&c8n}d){$n9gkc&U=s7w^ z)v&a7W8Y54C^KxC!+o{Zi&$f*!`bht#g-;AORA!hJRP=_N6z<71vSzx$fn}yKZ4(H z#3&u_jUTdl%x}6GbHXgioN$^Avi+MBZ#M5Nb7i(9y7?Y_$jh@XcBprb%8cA}sy8jq zKJ{7&;}Pa)WLLAZD(8^yjnA2}q{TAB`BV?iAC-18nK`(d6a7h#!&qAzCAG!g>OA~y zA@^Nv=~ylN9u5R_I3YfUfJerq;vs@h+ zUxW+E@rh@y{6E3h1|x)olNn**1YArSA|*BXOkxrqLAa8FMAngular-Material DateTimePicker + @@ -16,9 +17,9 @@ - - - + + + From e5b3c3edac9aa4cbe0fea85723a308c421a07442 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 21 Feb 2017 22:33:04 -0500 Subject: [PATCH 020/226] #91 fix problem with rtl website --- css/material-datetimepicker.css | 4 ++++ index.html | 10 +++++----- js/demo.js | 6 ++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index 7aead46..76c0cbd 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -273,6 +273,10 @@ md-dialog.dtp { background: #eee; } +html[dir="rtl"] .dtp div.dtp-picker-clock { + direction: ltr; +} + .dtp-clock-center { width: 15px; height: 15px; diff --git a/index.html b/index.html index b75e862..4ef62ef 100644 --- a/index.html +++ b/index.html @@ -30,9 +30,9 @@

Angular Material DatePicker

-

- Datetime Pickers -

+

Datetime Pickers

+
+ {{txtdir}}
@@ -52,7 +52,7 @@

- +
- + Date: Tue, 21 Feb 2017 23:16:09 -0500 Subject: [PATCH 021/226] #70 disable-parent-scroll attribute --- README.md | 29 +++++++++++++++------------ js/angular-material-datetimepicker.js | 14 ++++++++----- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 6dea607..75e705d 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,8 @@ The directive accepts several attributes which are described below: | **today-text** | String | Text for the today button (default: Today) | | **ok-text** | String | Text for the OK button (default: OK) | | **week-start** | Number | First day of the week (default: 0 => Sunday) | +| **disable-dates** | Date[] | Dates to be disabled or not selectable by user.| +| **disable-parent-scroll** | Boolean | false => Disable scrolling while the dialog is open (default : false) | ### Date/Time Dialog Service @@ -126,19 +128,20 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. ```javascript { date: {boolean} =true, - time: {boolean} =true, - format: {string} ='YYYY-MM-DD', - minDate: {strign} =null, - maxDate: {string} =null, - currentDate: {string} =null, - lang: {string} =mdcDatetimePickerDefaultLocale.locale, - weekStart: {int} =0, - shortTime: {boolean} =false, - cancelText: {string} ='Cancel', - todayText: {string} ='Today', - okText: {string} ='OK', - amText: {string} ='AM', - pmText: {string} ='PM' + time: {boolean} =true, + format: {string} ='YYYY-MM-DD', + minDate: {strign} =null, + maxDate: {string} =null, + currentDate: {string} =null, + lang: {string} =mdcDatetimePickerDefaultLocale.locale, + weekStart: {int} =0, + shortTime: {boolean} =false, + cancelText: {string} ='Cancel', + todayText: {string} ='Today', + okText: {string} ='OK', + amText: {string} ='AM', + pmText: {string} ='PM', + disableParentScroll: {boolean} = false, } ``` diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index d8f9893..70cbfa8 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -92,7 +92,8 @@ amText: 'AM', pmText: 'PM', todayText: 'Today', - disableDates: [] + disableDates: [], + disableParentScroll: false }; return default_params; }]) @@ -119,7 +120,8 @@ amText: '@', pmText: '@', showTodaysDate: '@', - todayText: '@' + todayText: '@', + disableParentScroll: '=' }, link: function (scope, element, attrs, ngModel) { var isOn = false; @@ -179,7 +181,7 @@ openFrom: element, parent: angular.element(document.body), bindToController: true, - disableParentScroll: false, + disableParentScroll: options.disableParentScroll || false, hasBackDrop: false, multiple: true }) @@ -221,7 +223,8 @@ todayText: {string} ='Today', okText: {string} ='OK', amText: {string} ='AM', - pmText: {string} ='PM' + pmText: {string} ='PM', + disableParentScroll: {boolean} =false } @return promise */ @@ -237,6 +240,7 @@ params = options[i]; } } + var locals = {options: options}; $mdDialog.show({ template: template, @@ -246,7 +250,7 @@ parent: angular.element(document.body), bindToController: true, clickOutsideToClose: true, - disableParentScroll: false, + disableParentScroll: options.disableParentScroll || false, multiple: true }) .then(function (v) { From 93e6fd96769ebcebca975cc619a1405b92392378 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 21 Feb 2017 23:19:52 -0500 Subject: [PATCH 022/226] #70 corrects the readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 75e705d..328dccd 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ The directive accepts several attributes which are described below: | **ok-text** | String | Text for the OK button (default: OK) | | **week-start** | Number | First day of the week (default: 0 => Sunday) | | **disable-dates** | Date[] | Dates to be disabled or not selectable by user.| -| **disable-parent-scroll** | Boolean | false => Disable scrolling while the dialog is open (default : false) | +| **disable-parent-scroll** | Boolean | true => Disable scrolling while the dialog is open (default : false) | ### Date/Time Dialog Service From c13cad7033704c09e67a553e8bfe4f9387828eba Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 22 Feb 2017 10:32:28 -0500 Subject: [PATCH 023/226] #92 skipHide for am < 1.1.2 --- js/angular-material-datetimepicker.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 70cbfa8..b742139 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -183,6 +183,7 @@ bindToController: true, disableParentScroll: options.disableParentScroll || false, hasBackDrop: false, + skipHide: true, multiple: true }) .then(function (v) { @@ -251,6 +252,7 @@ bindToController: true, clickOutsideToClose: true, disableParentScroll: options.disableParentScroll || false, + skipHide: true, multiple: true }) .then(function (v) { From f013bc40879b3238c2928ddd968a2ae5627f22f4 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 22 Feb 2017 10:55:16 -0500 Subject: [PATCH 024/226] bump version --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 4f8b0aa..e8ae8f3 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.7", + "version": "1.5.8", "keywords": [ "css", "js", diff --git a/package.json b/package.json index f32b3e6..fd37592 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.7", + "version": "1.5.8", "keywords": [ "css", "js", From b0eeadc01d640620f388397162e074f127746c04 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 22 Feb 2017 11:04:05 -0500 Subject: [PATCH 025/226] dist files --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 0e20064..e70afcd 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[]};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@"},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.on("focus",function(c){if(c.preventDefault(),n.blur(),n.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:!1,hasBackDrop:!1,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.parent().removeClass("md-input-focused")},function(){o=!1,n.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:!1,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),I=y-Y-M/2-(g+M),S={left:A,top:I,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":I+"px"}};r?S.display=S.value<10?"0"+S.value:S.value:n.params.shortTime?S.display=0===T?12:T:S.display=n.isPM()?T+12:T,b.push(S)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var P=e[0].querySelector(".dtp-clock-center"),H=P.offsetWidth/2||7.5,V=P.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(P).css({left:y+v+k-H+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a{{picker.params.amText}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"="},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.on("focus",function(c){if(c.preventDefault(),n.blur(),n.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.parent().removeClass("md-input-focused")},function(){o=!1,n.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),S=y-Y-M/2-(g+M),I={left:A,top:S,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":S+"px"}};r?I.display=I.value<10?"0"+I.value:I.value:n.params.shortTime?I.display=0===T?12:T:I.display=n.isPM()?T+12:T,b.push(I)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var P=e[0].querySelector(".dtp-clock-center"),H=P.offsetWidth/2||7.5,V=P.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(P).css({left:y+v+k-H+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: []\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@'\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: false,\r\n hasBackDrop: false,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean] =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM'\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: false,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n //this.initDates();\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n }\r\n else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n this.initMinutes();\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n //picker.initHands(true);\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","minutes","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementYear","amount","isNextYearVisible","add","isPreviousYearVisible","isPreviousMonthVisible","startOf","isNextMonthVisible","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","currentValue","tmp","setDisplayPoints","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"CAAA,WACE,YACA,IAAIA,GAAa,uBAEbC,GACFC,KAAM,EACNC,KAAM,EACNC,OAAQ,GAGNC,EAAM,SAAUC,EAAIC,GAEtB,MADAD,GAAKE,QAAQC,QAAQH,GACb,oBAAsBI,QAAUA,OAAOC,iBAAiBL,EAAG,IAAIC,GAAQD,EAAGD,IAAIE,IAGpFK,EACF,0kHAkDFJ,SAAQK,OAAOb,GAAa,eACzBc,SAAS,iCAAkC,WAC1CC,KAAKC,OAASN,OAAOO,UAAUC,cAAgBR,OAAOO,UAAUE,UAAY,KAE5EJ,KAAKK,KAAO,WACV,MAAOL,OAGTA,KAAKM,iBAAmB,SAAUC,GAChCP,KAAKC,OAASM,KAGjBC,QAAQ,oBAAqB,iCAAkC,SAAUC,GACxE,GAAIC,IACFC,MAAM,EACNC,MAAM,EACNC,OAAQ,aACRC,QAAS,KACTC,QAAS,KACTC,YAAa,KACbC,KAAMR,EAA+BR,OACrCiB,UAAW,EACXC,WAAW,EACXC,WAAY,SACZC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,UAAW,QACXC,gBACAC,qBAAqB,EAEvB,OAAOhB,MAERiB,UAAU,qBAAsB,YAAa,WAC5C,SAAUC,EAAWC,GAEnB,OACEC,SAAU,IACVC,QAAS,UACTC,OACEhB,YAAa,WACbiB,SAAU,IACVrB,KAAM,IACND,KAAM,IACNG,QAAS,IACTC,QAAS,IACTU,aAAc,IACdN,UAAW,IACXD,UAAW,IACXL,OAAQ,IACRO,WAAY,IACZC,OAAQ,IACRJ,KAAM,IACNK,OAAQ,IACRC,OAAQ,IACRW,eAAgB,IAChBV,UAAW,IACXE,oBAAqB,KAEvBS,KAAM,SAAUH,EAAOtC,EAAS0C,EAAOC,GACrC,GAAIC,IAAO,CACNN,GAAMnB,SACLmB,EAAMrB,MAAQqB,EAAMpB,KACtBoB,EAAMnB,OAAS,mBACNmB,EAAMrB,KACfqB,EAAMnB,OAAS,aAEfmB,EAAMnB,OAAS,QAInB,IAAI0B,GAAe,IACUC,UAAzBR,EAAME,gBAAyD,UAAzBF,EAAME,iBAC9CK,EAAeE,UAGbhD,QAAQiD,SAASV,EAAMhB,cAAsC,KAAtBgB,EAAMhB,cAC/CgB,EAAMhB,YAAcyB,OAAOT,EAAMhB,YAAagB,EAAMnB,SAGlDwB,GACFA,EAAQM,YAAYC,KAAK,SAAUC,GACjC,GAAqB,mBAAVA,GAAX,CAGA,GAAIC,GAAIL,OAAOI,EACf,OAAOC,GAAEC,UAAYD,EAAEjC,OAAOmB,EAAMnB,QAAU,MAKlDnB,EAAQsD,GAAG,QAAS,SAAUC,GAI5B,GAHAA,EAAEC,iBACFxD,EAAQyD,OACRzD,EAAQ0D,SAASC,YAAY,qBACzBf,EAAJ,CAGAA,GAAO,CACP,IAAIgB,KACJ,KAAK,GAAIC,KAAKnB,GACRJ,EAAMwB,eAAeD,KAAO9D,QAAQgE,YAAYzB,EAAMuB,MACxDD,EAAQC,GAAKvB,EAAMuB,GAGvBD,GAAQtC,YAAcgB,EAAMhB,YAC5BsC,EAAQpB,eAAiBK,CAEzB,IAAImB,IAAUJ,QAASA,EACvB1B,GAAU+B,MACR9D,SAAUA,EACV+D,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRK,SAAUrE,EACV0D,OAAQ3D,QAAQC,QAAQsE,SAASC,MACjCC,kBAAkB,EAClBxC,oBAAqB4B,EAAQ5B,sBAAuB,EACpDyC,aAAa,EACbC,UAAU,EACVC,UAAU,IAETC,KAAK,SAAUC,GACdvC,EAAMhB,YAAcuD,EAAIA,EAAEC,GAAKD,EAC/BjC,GAAO,EAEFG,OAAOT,EAAMhB,aAAayD,OAAOnB,EAAQtC,cAC5Ca,EAASG,EAAMC,SAAU,GAG3BvC,EAAQ0D,SAASC,YAAY,qBAE5B,WACDf,GAAO,EACP5C,EAAQ0D,SAASC,YAAY,8BA+B1C7C,QAAQ,qBAAsB,YAAa,KAAM,mBAAoB,SAAUoB,EAAW8C,EAAIC,GAC7F,GAAIC,GAAmBC,OAAOC,KAAKH,EACnCI,SAAQC,IAAIJ,EACZ,IAAIK,IACFtB,KAAM,SAAUL,GACd,GAAI4B,GAAWR,EAAGS,QACdC,EAAS3F,QAAQ4F,KAAKV,EAC1B,KAAK,GAAIpB,KAAKD,GACRsB,EAAiBU,QAAQ/B,KAAM,GAAMD,EAAQE,eAAeD,KAC9D6B,EAAS9B,EAAQC,GAIrB,IAAIG,IAAUJ,QAASA,EAmBvB,OAlBA1B,GAAU+B,MACR9D,SAAUA,EACV+D,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRN,OAAQ3D,QAAQC,QAAQsE,SAASC,MACjCC,kBAAkB,EAClBqB,qBAAqB,EACrB7D,oBAAqB4B,EAAQ5B,sBAAuB,EACpD0C,UAAU,EACVC,UAAU,IAETC,KAAK,SAAUC,GACIA,EAAIA,EAAEC,GAAKD,CAC7BW,GAASM,QAAQjB,EAAIA,EAAEC,GAAKD,IAC3B,WACDW,EAASO,WAENP,EAASQ,SAIpB,OAAOT,KAIX,IAAIpB,GAAmB,SAAU8B,EAAQ/D,EAAW+C,GAClD3E,KAAK4F,YAAc1G,EAAYC,KAC/Ba,KAAK6F,QAAUjE,EAEf5B,KAAK8F,mBACL9F,KAAK+F,MAAQ7G,EACbc,KAAKoF,OAAST,EACd3E,KAAKgG,SAAW,KAChBhG,KAAKoF,OAAS3F,QAAQwG,OAAOjG,KAAKoF,OAAQpF,KAAKsD,SAE/CtD,KAAKkG,OAGPrC,GAAiBsC,SAAW,SAAU,YAAa,oBACnDtC,EAAiBuC,WACfF,KAAM,WACJlG,KAAKqG,SAAWrG,KAAKoF,OAAOxE,OAASZ,KAAKoF,OAAOzE,KACjDX,KAAKsG,SAAWtG,KAAKoF,OAAOzE,KAC5BX,KAAKuG,YACLvG,KAAKwG,SAEPC,sBAAuB,WACrB,GAAI9F,GAAOX,KAAKgB,aAAeyB,SAC3BiE,EAAW,EAAIC,KAAKC,MAAMjG,EAAKkG,SAAW,EAI9C,OAHIH,IAAW,KACbA,EAAU,IAELjE,OAAO9B,GAAM+F,QAAQA,IAE9BH,UAAW,WACT,GAAIO,GAAO9G,KACP+G,EAAa,SAAUC,EAAOC,GAChC,GAAIC,GAAM,IACV,IAAIzH,QAAQ0H,UAAUH,IAAoB,OAAVA,GAA4B,KAAVA,EAChD,GAAIvH,QAAQiD,SAASsE,GAEjBE,EADiC,mBAAxBJ,GAAK1B,OAAa,QAA4C,OAAvB0B,EAAK1B,OAAOvE,OACtD4B,OAAOuE,EAAOF,EAAK1B,OAAOvE,QAAQZ,OAAO6G,EAAK1B,OAAOnE,MAGrDwB,OAAOuE,GAAO/G,OAAO6G,EAAK1B,OAAOnE,UAEpC,IAAqB,gBAAV+F,GAChBE,EAAMzE,OAAOuE,GAAO/G,OAAO6G,EAAK1B,OAAOnE,UAEvC,IAAIxB,QAAQ2H,OAAOJ,GAAQ,CACzB,GAAIK,GAAIL,EAAMM,SACdJ,GAAMzE,OAAO4E,EAAG,KAAKpH,OAAO6G,EAAK1B,OAAOnE,UAC/B+F,GAAMO,mBACfL,EAAMF,OAKVE,GAAMD,CAER,OAAOC,GAGTlH,MAAKgB,YAAc+F,EAAW/G,KAAKoF,OAAOpE,YAAayB,UACvDzC,KAAKc,QAAUiG,EAAW/G,KAAKoF,OAAOtE,SACtCd,KAAKe,QAAUgG,EAAW/G,KAAKoF,OAAOrE,SACtCf,KAAKyB,aAAezB,KAAKoF,OAAO3D,aAAa+F,IAAI,SAAUH,GACzD,MAAO5E,QAAO4E,GAAGxG,OAAO,kBAE1Bb,KAAKyH,WAAWzH,KAAKgB,cAEvB0G,SAAU,WACR1H,KAAK4F,YAAc1G,EAAYC,MAEjCwI,UAAW,WACT3H,KAAK4F,YAAc1G,EAAYE,MAEjCwI,YAAa,WACX5H,KAAK4F,YAAc1G,EAAYG,QAEjCwI,eAAgB,SAAUlH,EAAMmH,EAAWC,GACzC,GAAIC,IAAU,CAEd,IAA6B,mBAAlBhI,MAAY,SAAsC,OAAjBA,KAAKc,QAAkB,CACjE,GAAImH,GAAWxF,OAAOzC,KAAKc,SACvBoH,EAAQzF,OAAO9B,EAEdmH,IAAcC,IACjBE,EAASE,KAAK,GACdF,EAASpB,OAAO,GAEhBqB,EAAMC,KAAK,GACXD,EAAMrB,OAAO,IAGfoB,EAASG,OAAO,GAChBF,EAAME,OAAO,GACbH,EAASI,YAAY,GACrBH,EAAMG,YAAY,GAEbN,EAOHC,EAAWM,SAASJ,EAAMrH,OAAO,OAASyH,SAASL,EAASpH,OAAO,OANnEqH,EAAMrB,OAAO,GACboB,EAASpB,OAAO,GAEhBmB,EAAWM,SAASJ,EAAMrH,OAAO,OAASyH,SAASL,EAASpH,OAAO,OAOvE,MAAOmH,IAETO,gBAAiB,SAAU5H,EAAM6H,EAAWT,GAC1C,GAAIC,IAAU,CAEd,IAA6B,mBAAlBhI,MAAY,SAAsC,OAAjBA,KAAKe,QAAkB,CACjE,GAAI0H,GAAWhG,OAAOzC,KAAKe,SACvBmH,EAAQzF,OAAO9B,EAEd6H,IAAcT,IACjBU,EAASN,KAAK,GACdM,EAAS5B,OAAO,GAEhBqB,EAAMC,KAAK,GACXD,EAAMrB,OAAO,IAGf4B,EAASL,OAAO,GAChBF,EAAME,OAAO,GACbK,EAASJ,YAAY,GACrBH,EAAMG,YAAY,GAEbN,EAOHC,EAAWM,SAASJ,EAAMrH,OAAO,OAASyH,SAASG,EAAS5H,OAAO,OANnEqH,EAAMrB,OAAO,GACb4B,EAAS5B,OAAO,GAEhBmB,EAAWM,SAASJ,EAAMrH,OAAO,OAASyH,SAASG,EAAS5H,OAAO,OAOvE,MAAOmH,IAETU,iBAAkB,SAAU/H,GAC1B,GAAIgI,GAAMhI,EAAKE,OAAO,eACtB,SAAIb,KAAKyB,aAAa6D,QAAQqD,IAAO,IAKvClB,WAAY,SAAU9G,GAChBA,IACFX,KAAKgB,YAAcyB,OAAO9B,GACrBX,KAAK6H,eAAe7H,KAAKgB,eAC5BhB,KAAKgB,YAAcyB,OAAOzC,KAAKc,UAG5Bd,KAAKuI,gBAAgBvI,KAAKgB,eAC7BhB,KAAKgB,YAAcyB,OAAOzC,KAAKe,UAEjCf,KAAKgB,YAAYf,OAAOD,KAAKoF,OAAOnE,MACpCjB,KAAK4I,cAAgBnG,OAAOzC,KAAKgB,aACjChB,KAAKgG,SAAWhG,KAAKgB,YAAYmH,QAAU,GAAK,KAAO,OAG3DU,QAAS,WAIP,IAAK,GAHDC,GAAO,GACPC,EAAW,iEAENxF,EAAI,EAAGA,EAAI,EAAGA,IACrBuF,GAAQC,EAASC,OAAOrC,KAAKsC,MAAMtC,KAAKuC,SAAWH,EAASI,QAG9D,OAAOL,IAETM,KAAM,WACJ,MAAyB,OAAlBpJ,KAAKgG,UAEdqD,cAAe,SAAUC,GACR,IAAXA,GAAgBtJ,KAAKuJ,qBACvBvJ,KAAKyH,WAAWzH,KAAKgB,YAAYwI,IAAIF,EAAQ,SAG3CA,KAAW,GAAMtJ,KAAKyJ,yBACxBzJ,KAAKyH,WAAWzH,KAAKgB,YAAYwI,IAAIF,EAAQ,UAGjDI,uBAAwB,WACtB,MAAO1J,MAAK4I,eAAiB5I,KAAK6H,eAAepF,OAAOzC,KAAK4I,eAAee,QAAQ,UAAU,GAAO,IAEvGC,mBAAoB,WAClB,MAAO5J,MAAK4I,eAAiB5I,KAAKuI,gBAAgB9F,OAAOzC,KAAK4I,eAAeiB,MAAM,UAAU,GAAO,IAEtGJ,sBAAuB,WACrB,MAAOzJ,MAAK4I,eAAiB5I,KAAK6H,eAAepF,OAAOzC,KAAK4I,eAAee,QAAQ,SAAS,GAAO,IAEtGJ,kBAAmB,WACjB,MAAOvJ,MAAK4I,eAAiB5I,KAAKuI,gBAAgB9F,OAAOzC,KAAK4I,eAAeiB,MAAM,SAAS,GAAO,IAErGC,gBAAiB,SAAU3B,GACzB,GAAID,GAAQzF,OAAOzC,KAAKgB,YAExB,OADAkH,GAAMC,KAAKnI,KAAK+J,aAAa5B,IAAOtB,OAAO,GAAGuB,OAAO,GAC9CpI,KAAK6H,eAAeK,GAAO,GAAM,IAAUlI,KAAKuI,gBAAgBL,GAAO,GAAM,IAEtF8B,kBAAmB,SAAUnD,GAC3B,GAAIqB,GAAQzF,OAAOzC,KAAKgB,YAExB,OADAkH,GAAMrB,OAAOA,GAAQuB,OAAO,GACrBpI,KAAK6H,eAAeK,GAAO,GAAM,IAASlI,KAAKuI,gBAAgBL,GAAO,GAAM,IAErF1B,MAAO,WACLxG,KAAK4F,YAAc1G,EAAYC,KAE3Ba,KAAKoF,OAAOzE,KACdX,KAAK0H,WAED1H,KAAKoF,OAAOxE,MACdZ,KAAK2H,aAIXsC,MAAO,WACLjK,KAAKyH,WAAWyC,KAAKC,QAEvBC,GAAI,WACF,OAAQpK,KAAK4F,aACX,IAAK1G,GAAYC,KACXa,KAAKoF,OAAOxE,QAAS,EACvBZ,KAAK2H,YAGL3H,KAAKqK,MAAK,EAEZ,MACF,KAAKnL,GAAYE,KACfY,KAAK4H,aACL,MACF,KAAK1I,GAAYG,OACfW,KAAKqK,MAAK,KAIhBC,OAAQ,WACN,GAAItK,KAAKoF,OAAOxE,KACd,OAAQZ,KAAK4F,aACX,IAAK1G,GAAYC,KACfa,KAAKqK,MACL,MACF,KAAKnL,GAAYE,KACXY,KAAKoF,OAAOzE,KACdX,KAAK0H,WAGL1H,KAAKqK,MAEP,MACF,KAAKnL,GAAYG,OACfW,KAAK2H,gBAKT3H,MAAKqK,QAGTE,kBAAmB,WACjBvK,KAAK4I,cAAc4B,SAAS,EAAG,WAEjCC,iBAAkB,WAChBzK,KAAK4I,cAAcY,IAAI,EAAG,WAE5BkB,iBAAkB,WAChB1K,KAAK4I,cAAc4B,SAAS,EAAG,UAEjCG,gBAAiB,WACf3K,KAAK4I,cAAcY,IAAI,EAAG,UAE5BoB,SAAU,YACJ5K,KAAK8J,gBAAgB,IAAM9J,KAAK8J,gBAAgB,OAC9C9J,KAAKgB,YAAYmH,QAAU,IAC7BnI,KAAKyH,WAAWzH,KAAKgB,YAAYwJ,SAAS,GAAI,UAE3CxK,KAAK8J,gBAAgB9J,KAAKgB,YAAYmH,SACzCnI,KAAKyH,WAAWzH,KAAKgB,YAAYmH,KAAKnI,KAAKc,QAAQqH,SAEhDnI,KAAKgK,kBAAkBhK,KAAKgB,YAAY6F,WAC3C7G,KAAKyH,WAAWzH,KAAKgB,YAAY6F,OAAO7G,KAAKc,QAAQ+F,aAI3DgE,SAAU,YACJ7K,KAAK8J,gBAAgB,KAAO9J,KAAK8J,gBAAgB,OAC/C9J,KAAKgB,YAAYmH,OAAS,IAC5BnI,KAAKyH,WAAWzH,KAAKgB,YAAYwI,IAAI,GAAI,UAEtCxJ,KAAK8J,gBAAgB9J,KAAKgB,YAAYmH,SACzCnI,KAAKyH,WAAWzH,KAAKgB,YAAYmH,KAAKnI,KAAKe,QAAQoH,SAEhDnI,KAAKgK,kBAAkBhK,KAAKgB,YAAY6F,WAC3C7G,KAAKyH,WAAWzH,KAAKgB,YAAY6F,OAAO7G,KAAKe,QAAQ8F,aAI3DkD,aAAc,SAAUe,GACtB,GAAI9C,GAAU8C,CAId,OAHKA,GAAI,IAAO9K,KAAKoJ,SACnBpB,GAAW,IAENA,GAETqC,KAAM,SAAUU,GACVA,EACF/K,KAAK6F,QAAQwE,KAAKrK,KAAKgB,aAEvBhB,KAAK6F,QAAQyE,WAMnB7K,QAAQK,OAAOb,GACZ0C,UAAU,6BACT,WAOE,IAAK,GALDqJ,GAAW,KACbC,GAAW,GAAIf,OAAOgB,cAAgB,GACtCC,EAA4C,IAA3BF,EAAWD,EAAW,GACvCI,EAAc,IACdC,KACO9H,EAAI,EAAGA,EAAI4H,EAAe5H,IACjC8H,EAAOzI,KAAKW,EAGd,IAAI+H,GAAoB,SAAU3K,EAAM4K,GACtCA,EAAMA,EAAMA,EAAM,CAClB,IAAIC,GAAO7K,EAAK6K,OACZC,EAAQ9K,EAAK8K,OACjB,OAA6B,KAAnBD,EAAOR,GAAkBS,EAAQ,EAAMF,EAGnD,QACEzJ,SAAU,IACVE,OACE0J,OAAQ,IACR/K,KAAM,KAERuD,kBAAkB,EAClBJ,aAAc,MACdF,YAAa,SAAU,SAAU+B,GAC/B3F,KAAK2L,QAAU,WAKb,IAAK,GAJDC,GAAW5L,KACb0L,EAAS1L,KAAK0L,OACdG,KAEOtI,EAAImI,EAAOtG,OAAOlE,UAAW2K,EAAK1C,OAAS,EAAG5F,IACjDA,EAAI,IACNA,EAAI,GAENsI,EAAKjJ,KAAKW,EAAEuI,WAId,IADAF,EAASG,KAAOF,EACXH,EAAO3K,SAAY2K,EAAO5K,QAExB,CACL,GAAIyK,GAAMG,EAAO5K,QAAUwK,EAAkBI,EAAO5K,SAAW,EAC3DkL,EAAON,EAAO3K,QAAWuK,EAAkBI,EAAO3K,SAAW,EAAKoK,CACtES,GAASK,OAASZ,EAAOa,MAAMX,EAAKS,OAJpCJ,GAASK,OAASZ,CAOpBO,GAASO,eAAiB,SAAUC,GAClC,GAAIX,IAAUW,EAAQ,GAAK,IAAO,GAC9BZ,EAAOR,EAAWrE,KAAKsC,MAAMmD,EAAQ,IACrCC,EAAW5J,OAAOiJ,EAAO1K,aAAawK,KAAKA,GAAMC,MAAMA,EAC3D,OAAOa,GAAsBD,IAG/BT,EAASW,SAAWjB,EAAkBI,EAAO1K,aAAe4K,EAASK,OAAO,GAE5EtG,EAAO6G,OAAO,WACZ,MAAOd,GAAO1K,YAAc0K,EAAO1K,YAAYH,OAAO,WAAa,IAClE,SAAU4L,EAAMC,GACjB,GAAID,GAAQC,EAAM,CAChB,GAAIC,GAAQlK,OAAOgK,EAAM,WACrBlB,EAAMG,EAAO5K,QAAUwK,EAAkBI,EAAO5K,SAAW,EAC3DsL,EAAQd,EAAkBqB,EAAOpB,EACjCK,GAASW,UAAYH,IACvBR,EAASW,SAAWH,KAK1B,IAAIE,GAAwB,SAAU3L,GACpC,GAAI8K,KACJ,IAAa,OAAT9K,EAAe,CACjB8K,EAAMjM,KAAOmB,EAAKE,OAAO,YACzB,IAAI+L,GAAenK,OAAO9B,GAAMV,OAAOyL,EAAOtG,OAAOnE,MAAM0I,QAAQ,SAC9DxB,KAAKxH,EAAKwH,QACVtB,OAAOlG,EAAKkG,UACbgG,EAAUD,EAAa/L,OAAO,IAClC4K,GAAMI,OACN,KAAK,GAAItI,GAAIqJ,EAAajM,OAAQ4C,GAAKqJ,EAAaE,cAAevJ,IAAK,CACtE,GAAIA,IAAMqJ,EAAajM,OAAQ,CAC7B,GAAIoM,GAAQnB,EAASG,KAAKzG,QAAQuH,EAAQf,WAC1C,IAAIiB,EAAQ,EACV,IAAK,GAAI1F,GAAI,EAAGA,EAAI0F,EAAO1F,IACzBoE,EAAMI,KAAKjJ,KAAK,GAItB6I,EAAMI,KAAKjJ,KAAKH,OAAOmK,GAAc3M,OAAOyL,EAAOtG,OAAOnE,MAAMN,KAAK4C,IAIvE,IAAK,GADDyJ,GAAc,EAAGC,KAAcC,EAASvG,KAAKwG,KAAK1B,EAAMI,KAAK1C,OAAS6D,GACjEI,EAAI,EAAGA,EAAIF,EAAQE,IAC1BH,EAAQrK,KAAK6I,EAAMI,KAAKK,MAAMkB,EAAIJ,GAAcI,EAAI,GAAKJ,GAG3D,OADAvB,GAAMI,KAAOoB,EACNxB,GAKXG,GAASyB,MAAQ,SAAU9J,GACzB,MAAOd,QAAO6F,SAAS/E,GAAI,KACxBtD,OAAOyL,EAAOtG,OAAOnE,MACrBJ,OAAO,MACPyM,UAAU,EAAG,IAGlB1B,EAAS2B,UAAY,SAAU5M,GAC7B,MAAO+K,GAAO7D,eAAepF,OAAO9B,IAAO,GAAO,IAChD+K,EAAOnD,gBAAgB9F,OAAO9B,IAAO,GAAO,IAC5C+K,EAAOhD,iBAAiBjG,OAAO9B,KAGnCiL,EAASnE,WAAa,SAAU9G,GAC9B,GAAIA,EAAM,CACR,GAAIiL,EAAS4B,cAAc7M,GACzB,MAAO+K,GAAOtB,IAEhBsB,GAAOjE,WAAWhF,OAAO9B,GAAMwH,KAAKyD,EAASjL,KAAKwH,QAAQtB,OAAO+E,EAASjL,KAAKkG,aAInF+E,EAAS4B,cAAgB,SAAU1K,GACjC,MAAOA,IAAK8I,EAASjL,KAAKA,SAAWmC,EAAEnC,QAAUiL,EAASjL,KAAK8K,UAAY3I,EAAE2I,SAAWG,EAASjL,KAAK6K,SAAW1I,EAAE0I,QAGrHI,EAAS6B,eAAiB,SAAU3K,GAClC,GAAImH,GAAQ2B,EAASF,OAAOpI,QAAQpB,cACpC,SAAK+H,IAIEnH,GAAKmH,EAAMtJ,SAAWmC,EAAEnC,QAAUsJ,EAAMwB,UAAY3I,EAAE2I,SAAWxB,EAAMuB,SAAW1I,EAAE0I,YAIjG3L,SACA,qJAC+EuL,EAAc,0GAMlGzJ,UAAU,kCAAmC,WAC5C,SAAU+L,GACR,GAAIC,GAAuB,SAAUjO,EAASsC,GAC5C,GAAI4L,GAAQnO,QAAQC,QAAQA,EAAQ,GAAGmO,cAAc,UACjDjC,EAAW5J,EAAM8L,IAAKrC,EAAQzJ,EAAMyJ,MAEpCsC,IAEJtC,GAAMI,KAAKmC,QAAQ,SAAUC,EAAU1K,GACrCwK,EAAUnL,KAAK,QACfqL,EAASD,QAAQ,SAAUE,EAASd,GAElC,GADAW,EAAUnL,KAAK,QACXsL,EACF,GAAItC,EAAS2B,UAAUW,GAAU,CAE/B,GAAIC,GAAW,iBAAqB5K,EAAI,KAAO6J,EAAI,GAEnDW,GAAUnL,KAAK,eAAiBsL,EAAQrN,OAAO,cAAgB,4FAA8FsN,EAAW,iCAAmCA,EAAW,gCAAkCA,EAAW,OACnQJ,EAAUnL,KAAKsL,EAAQrN,OAAO,MAC9BkN,EAAUnL,KAAK,YAEfmL,GAAUnL,KAAK,iCACfmL,EAAUnL,KAAKsL,EAAQrN,OAAO,MAC9BkN,EAAUnL,KAAK,UAGnBmL,GAAUnL,KAAK,WAEjBmL,EAAUnL,KAAK,WAGjBgL,EAAMQ,KAAKL,EAAUM,KAAK,KAC1BX,EAASE,GAAO5L,GAGlB,QACEA,OACEsM,IAAK,KAEPvM,QAAS,6BACTD,SAAU,KACVjC,SACE,gPAUFsC,KAAM,SAAUH,EAAOtC,EAAS0C,EAAOwJ,GACrC5J,EAAM8L,IAAMlC,EACZ5J,EAAMyJ,MAAQG,EAASO,eAAe7D,SAAStG,EAAMsM,MACrDX,EAAqBjO,EAASsC,GAC9BA,EAAMwK,OAAO,WACX,MAAOxK,GAAMsM,KACZ,SAAUA,EAAKC,GACZD,GAAOC,IACTvM,EAAMyJ,MAAQG,EAASO,eAAe7D,SAAStG,EAAMsM,MACrDX,EAAqBjO,EAASsC,WAS5CvC,QAAQK,OAAOb,GACZ0C,UAAU,gBAAiB,WAC1B,OACEQ,KAAM,SAAUH,EAAOzC,GACrBA,EAAGyD,GAAG,QAAS,SAAUC,GACvBA,EAAEC,uBAKZzD,QAAQK,OAAOb,GACZ0C,UAAU,0BACT,WAEE,GAAI9B,GACF,moBAUF,QACEiC,SAAU,IACVjC,SAAUA,EACVsC,KAAM,SAAUH,EAAOtC,EAAS0C,GAC9B,GAAIoM,GAA4B,YAAfpM,EAAMqM,KACnB/C,EAAS1J,EAAM0J,OAEfgD,EAAgB1K,SAAS6J,cAAc,iBACvCc,EAAO,WACT,GAAIC,GAAQnP,QAAQC,QAAQA,EAAQ,GAAGmO,cAAc,sBACjDgB,EAAWpP,QAAQC,QAAQgP,EAAcb,cAAc,gBAEvDiB,EAAIJ,EAAcb,cAAc,gBAAgBkB,YAChDC,EAAK1G,SAAShJ,EAAIuP,EAAU,eAAeI,QAAQ,KAAM,MAAQ,EACjEC,EAAK5G,SAAShJ,EAAIuP,EAAU,gBAAgBI,QAAQ,KAAM,MAAQ,EAClEE,EAAK7G,SAAShJ,EAAIsP,EAAO,cAAcK,QAAQ,KAAM,MAAQ,EAC7DG,EAAK9G,SAAShJ,EAAIsP,EAAO,eAAeK,QAAQ,KAAM,MAAQ,EAE9DI,EAAcP,GAAKK,EAAKC,EAAKJ,EAAKE,EACtCN,GAAMtP,IAAI,QAAS,EAAe,KAYlC,KAAK,GAVDgQ,GAAKhH,SAAShJ,EAAIuP,EAAU,eAAeI,QAAQ,KAAM,MAAQ,EACjEM,EAAKjH,SAAShJ,EAAIuP,EAAU,cAAcI,QAAQ,KAAM,MAAQ,EAChEO,EAAKlH,SAAShJ,EAAIsP,EAAO,cAAcK,QAAQ,KAAM,MAAQ,EAC7DQ,EAAKnH,SAAShJ,EAAIsP,EAAO,aAAaK,QAAQ,KAAM,MAAQ,EAE5DS,EAAKL,EAAa,EAClBjC,EAAIsC,EAAI,IAERC,KAEK7E,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,GAAIzD,GAAI+F,EAAIzG,KAAKiJ,IAAc,EAAVjJ,KAAKkJ,IAAU/E,EAAI,KACpCgF,EAAI1C,EAAIzG,KAAKoJ,IAAc,EAAVpJ,KAAKkJ,IAAU/E,EAAI,KACpCkF,EAAQN,EAAIrI,EAAIiI,EAAK,GAAMA,EAAKE,GAChCS,EAAOP,EAAII,EAAIL,EAAK,GAAMF,EAAKE,GAE/BtH,GACF6H,KAAMA,EACNC,IAAKA,EACLpN,MAAQ2L,EAAkB,EAAJ1D,EAASA,EAC/BoF,OAAQC,cAAeH,EAAO,KAAMI,aAAcH,EAAM,MAGtDzB,GACFrG,EAAKkI,QAAUlI,EAAKtF,MAAQ,GAAM,IAAMsF,EAAKtF,MAASsF,EAAKtF,MAGvD6I,EAAOtG,OAAOjE,UAChBgH,EAAKkI,QAAiB,IAANvF,EAAW,GAAKA,EAEhC3C,EAAKkI,QAAU3E,EAAOtC,OAAS0B,EAAI,GAAKA,EAK5C6E,EAAO/M,KAAKuF,GAGdnG,EAAM2N,OAASA,EACf3N,EAAMyM,KAAOrM,EAAMqM,KACnB6B,IACA1B,EAAMtP,IAAI,SAAU+P,EAAa,KAGjC,IAAIkB,GAAc7Q,EAAQ,GAAGmO,cAAc,qBACvC2C,EAAeD,EAAYxB,YAAc,GAAM,IACjD0B,EAAgBF,EAAYG,aAAe,GAAM,IAC/CC,EAAMjB,EAAI,IACVkB,EAAMlB,EAAI,GAEdjQ,SAAQC,QAAQA,EAAQ,GAAGmO,cAAc,mBAAmBvO,KAC1D0Q,KAAMN,EAAU,IAALF,EAAY,KACvBqB,OAAQF,EAAM,KACdG,UAAYpB,EAAIiB,EAAMrB,EAAM,OAC3ByB,SAAUvC,EAAoB,GAAP,MAE1B/O,QAAQC,QAAQA,EAAQ,GAAGmO,cAAc,qBAAqBvO,KAE5D0Q,KAAMN,EAAU,IAALF,EAAY,KACvBqB,OAAQD,EAAM,KACdE,UAAYpB,EAAIkB,EAAMtB,EAAM,OAC3ByB,SAASvC,EAAa,KAAO,IAEhC/O,QAAQC,QAAQ6Q,GAAajR,KAC3B0Q,KAAON,EAAIJ,EAAKE,EAAKgB,EAAe,KACpCM,UAAYpB,EAAKF,EAAK,EAAMiB,EAAe,OAE7CO,KAGEA,EAAe,WACjB,GAAI9I,GAAQwD,EAAOjF,wBACfqE,EAAI5C,EAAMC,OACVrF,EAAIoF,EAAMrB,QAEdoK,GAAcxR,QAAQC,QAAQA,EAAQ,GAAGmO,cAAc,mBAAoB,GAAa/C,EACxF,IAAIoG,GAAO,GAAc,EAAIvK,KAAKC,MAAM9D,EAAI,GAC5CmO,GAAcxR,QAAQC,QAAQA,EAAQ,GAAGmO,cAAc,qBAAsBqD,IAG3ED,EAAgB,SAAU1R,EAAI4R,GAChC1R,QAAQC,QAAQH,GAAID,KAClB8R,gBAAiB,UAAYD,EAAM,OACnCE,iBAAkB,UAAYF,EAAM,OACpCG,gBAAiB,UAAYH,EAAM,OACnCI,UAAa,UAAYJ,EAAM,UAK/Bb,EAAkB,WACpB,GAAI3P,GAAO+K,EAAOjF,uBAClBzE,GAAMwP,aAAehD,EAAa7N,EAAKkG,SAAYlG,EAAKwH,OAAS,GAGnEnG,GAAMwK,OAAO,WACX,GAAIiF,GAAM/F,EAAOjF,uBACjB,OAAOgL,GAAMA,EAAI5Q,OAAO,SAAW,IAClC,WACDyP,IACAU,KAIF,IAAIU,GAAmB,SAAUtI,EAAMuG,GACrC,IAAK,GAAIpM,GAAI,EAAGA,EAAIoM,EAAOxG,OAAQ5F,IACjCoM,EAAOpM,GAAG8M,QAAU9M,EAChB6F,IACFuG,EAAOpM,GAAG8M,SAAW,GAGzB,OAAOV,GAGJjE,GAAOtG,OAAOjE,WACjBa,EAAMwK,OAAO,kBAAmB,WAC9B,IAAKgC,GACCxM,EAAM2N,OAAQ,CAChB,GAAIA,GAAS+B,EAAiBhG,EAAOtC,OAAQ3J,QAAQ4F,KAAKrD,EAAM2N,QAChE3N,GAAM2N,OAASA,KAOvB3N,EAAM2P,QAAU,SAAUC,GACpBA,IAAQ5P,EAAMwP,cAChB9F,EAAOtB,KAGJoE,EAGH9C,EAAO1K,YAAY6F,OAAO+K,GAF1BlG,EAAO1K,YAAYmH,KAAKuD,EAAOtC,OAAUwI,EAAM,GAAMA,GAIvDlG,EAAO1K,YAAYoH,OAAO,IAG5BpG,EAAM6P,eAAiB,SAAUC,GAC/B,MAAOtD,GAAa9C,EAAO1B,kBAAkB8H,EAAMjP,OAAS6I,EAAO5B,gBAAgBgI,EAAMjP,OAG3F,IAAIkP,GAAY/P,EAAMwK,OAAO,WAC3B,MAAO9M,GAAQ,GAAGsS,iBAAiB,OAAO7I,QACzC,WACDwF,IACAoD","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean] =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableParentScroll: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n //this.initDates();\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n }\r\n else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n this.initMinutes();\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n //picker.initHands(true);\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index d4891c4..0bc950e 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -.dtp .p10,.dtp .p20,.dtp .p60,.dtp .p80,.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-maxtime,.dtp div.dtp-actual-num{font-size:3em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#DCEDC8}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#DCEDC8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:.25em;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#BDBDBD!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8BC34A}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689F38;text-decoration:none}.dtp .p10{width:10%}.dtp .p20{width:20%}.dtp .p60{width:60%}.dtp .p80{width:80%}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected,.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0;padding:10px;border-radius:50%!important;background:#eee}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file +.dtp .p10,.dtp .p20,.dtp .p60,.dtp .p80,.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-maxtime,.dtp div.dtp-actual-num{font-size:3em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#DCEDC8}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#DCEDC8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:.25em;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#BDBDBD!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8BC34A}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689F38;text-decoration:none}.dtp .p10{width:10%}.dtp .p20{width:20%}.dtp .p60{width:60%}.dtp .p80{width:80%}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected,.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0;padding:10px;border-radius:50%!important;background:#eee}html[dir=rtl] .dtp div.dtp-picker-clock{direction:ltr}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file From 5de084925afaefb0723cc8eccb45b1e2db49a169 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 22 Feb 2017 23:39:21 -0500 Subject: [PATCH 026/226] #73 hide minutes view minutes boolean attribute --- README.md | 3 ++ index.html | 23 +++++++++----- js/angular-material-datetimepicker.js | 43 ++++++++++++++++----------- js/demo.js | 9 ++++++ 4 files changed, 53 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 328dccd..79617c8 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,7 @@ The directive accepts several attributes which are described below: | **max-date** | (String\|Date\|Moment) | Maximum selectable date | | **date** | Boolean | true => Has Datepicker (default: true) | | **time** | Boolean | true => Has Timepicker (default: true) | +| **minutes** | Boolean | true => Has Timepicker minutes (default: true) | | **cancel-text** | String | Text for the cancel button (default: Cancel) | | **today-text** | String | Text for the today button (default: Today) | | **ok-text** | String | Text for the OK button (default: OK) | @@ -129,6 +130,7 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. { date: {boolean} =true, time: {boolean} =true, + minutes: {boolean} =true, format: {string} ='YYYY-MM-DD', minDate: {strign} =null, maxDate: {string} =null, @@ -141,6 +143,7 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. okText: {string} ='OK', amText: {string} ='AM', pmText: {string} ='PM', + disableDates: {date[]} =[], disableParentScroll: {boolean} = false, } ``` diff --git a/index.html b/index.html index 4ef62ef..8c827eb 100644 --- a/index.html +++ b/index.html @@ -54,7 +54,7 @@

Datetime Pickers

@@ -64,8 +64,8 @@

Datetime Pickers

- @@ -77,19 +77,28 @@

Datetime Pickers

+
+ + + + +
+
+
@@ -97,7 +106,7 @@

Datetime Pickers

@@ -120,7 +129,7 @@

Datetime Pickers

-

Test mdcDateTimeDialog Service

+

mdcDateTimeDialog Service

Display Picker diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index b742139..ae43aeb 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -80,6 +80,7 @@ var default_params = { date: true, time: true, + minutes: true, format: 'YYYY-MM-DD', minDate: null, maxDate: null, @@ -108,6 +109,7 @@ ngChange: '&', time: '=', date: '=', + minutes: '=', minDate: '=', maxDate: '=', disableDates: '=', @@ -212,22 +214,24 @@ @param options extends mdcDefaultParams { date: {boolean} =true, - time: {boolean] =true, - format: {string} ='YYYY-MM-DD', - minDate: {strign} =null, - maxDate: {string} =null, - currentDate: {string} =null, - lang: {string} =mdcDatetimePickerDefaultLocale, - weekStart: {int} =0, - shortTime: {boolean} =false, - cancelText: {string} ='Cancel', - todayText: {string} ='Today', - okText: {string} ='OK', - amText: {string} ='AM', - pmText: {string} ='PM', - disableParentScroll: {boolean} =false + time: {boolean} =true, + minutes: {boolean} =true, + format: {string} ='YYYY-MM-DD', + minDate: {strign} =null, + maxDate: {string} =null, + currentDate: {string} =null, + lang: {string} =mdcDatetimePickerDefaultLocale, + weekStart: {int} =0, + shortTime: {boolean} =false, + cancelText: {string} ='Cancel', + todayText: {string} ='Today', + okText: {string} ='OK', + amText: {string} ='AM', + pmText: {string} ='PM', + disableDates: {date[]} =[], + disableParentScroll: {boolean} =false } - @return promise + @return promise */ .factory('mdcDateTimeDialog', ["$mdDialog", "$q", "mdcDefaultParams", function ($mdDialog, $q, mdcDefaultParams) { var accepted_options = Object.keys(mdcDefaultParams); @@ -495,13 +499,16 @@ case VIEW_STATES.DATE: if (this.params.time === true) { this.initHours(); - } - else { + } else { this.hide(true); } break; case VIEW_STATES.HOUR: - this.initMinutes(); + if (this.params.minutes === true) { + this.initMinutes(); + } else { + this.hide(true); + } break; case VIEW_STATES.MINUTE: this.hide(true); diff --git a/js/demo.js b/js/demo.js index 95bee27..4ae8505 100644 --- a/js/demo.js +++ b/js/demo.js @@ -10,6 +10,15 @@ $scope.date = new Date(); $scope.time = new Date(); $scope.dateTime = new Date(); + + // current date + 1 hour, no minutes, no seconds, no milliseconds + var newDate = new Date(); + newDate.setHours(newDate.getHours() +1); + newDate.setMinutes(0); + newDate.setSeconds(0); + newDate.setMilliseconds(0); + $scope.dateTimeNoMin = newDate; + $scope.minDate = moment().subtract(1, 'month'); $scope.maxDate = moment().add(1, 'month'); $scope.dates = [new Date('2016-11-14T00:00:00'), new Date('2016-11-15T00:00:00'), From 92b54c0921f68078d36a33ab6b189fc421342f95 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 22 Feb 2017 23:46:49 -0500 Subject: [PATCH 027/226] fix gh-pages --- index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 8c827eb..27d1336 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ - + @@ -17,9 +17,9 @@ - - - + + + From 1b61fddc5e916a651a34297d27f1fb53e3606bbb Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 27 Feb 2017 22:30:42 -0500 Subject: [PATCH 028/226] #95 Month buttons --- css/material-datetimepicker.css | 26 +++++++++++++++++++++++--- js/angular-material-datetimepicker.js | 23 ++++++++++++++++------- js/demo.js | 10 +++++----- 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index 76c0cbd..2f267b6 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -7,6 +7,12 @@ md-dialog.dtp { min-width: 300px; } +.noselect { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} .dtp *:focus { outline: none !important; @@ -63,12 +69,12 @@ md-dialog.dtp { } .dtp div.dtp-actual-num { - font-size: 3em; + font-size: 2em; line-height: 0.9; } .dtp div.dtp-actual-maxtime { - font-size: 3em; + font-size: 2em; line-height: 0.9; } @@ -77,6 +83,20 @@ md-dialog.dtp { color: #DCEDC8; } +.dtp div.dtp-month-btn { + font-size: 1.4em; + line-height: 30px; + cursor: pointer; +} + +.dtp div.dtp-month-btn-prev { + text-align: right; +} + +.dtp div.dtp-month-btn-next { + text-align: left; +} + .dtp div.dtp-year-btn { font-size: 1.4em; line-height: 30px; @@ -108,7 +128,7 @@ md-dialog.dtp { .dtp .dtp-close { position: absolute; - top: 0.25em; + top: 1px; right: 5px; font-size: 16px; } diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index ae43aeb..f1a72ad 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -20,19 +20,21 @@ '
' + '
{{picker.currentDate.format("dddd")}}
' + '
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
' + - '
' + + '
' + ' ×' + '
' + '
' + '
' + - '
' + - '
{{picker.currentDate.format("MMM") | uppercase}}
' + + '
' + + '
' + + '
{{picker.currentDate.format("MMM") | uppercase}}
' + + '
' + '
' + '
{{picker.currentDate.format("DD")}}
' + '
' + - '
' + + '
' + '
{{picker.currentDate.format("YYYY")}}
' + - '
' + + '
' + '
'+ '
' + //start time '
' + @@ -449,6 +451,15 @@ isPM: function () { return this.meridien === 'PM'; }, + incrementMonth: function (amount) { + if (amount === 1 && this.isNextMonthVisible()) { + this.selectDate(this.currentDate.add(amount, 'month')); + } + + if (amount === -1 && this.isPreviousMonthVisible()) { + this.selectDate(this.currentDate.add(amount, 'month')); + } + }, incrementYear: function (amount) { if (amount === 1 && this.isNextYearVisible()) { this.selectDate(this.currentDate.add(amount, 'year')); @@ -482,7 +493,6 @@ }, start: function () { this.currentView = VIEW_STATES.DATE; - //this.initDates(); if (this.params.date) { this.initDate(); } else { @@ -898,7 +908,6 @@ scope.mode = attrs.mode; setCurrentValue(); clock.css('height', clockWidth + 'px'); - //picker.initHands(true); var clockCenter = element[0].querySelector('.dtp-clock-center'); var centerWidth = (clockCenter.offsetWidth / 2) || 7.5, diff --git a/js/demo.js b/js/demo.js index 4ae8505..0db78bf 100644 --- a/js/demo.js +++ b/js/demo.js @@ -19,11 +19,11 @@ newDate.setMilliseconds(0); $scope.dateTimeNoMin = newDate; - $scope.minDate = moment().subtract(1, 'month'); - $scope.maxDate = moment().add(1, 'month'); - $scope.dates = [new Date('2016-11-14T00:00:00'), new Date('2016-11-15T00:00:00'), - new Date('2016-11-30T00:00:00'), new Date('2016-12-12T00:00:00'), new Date('2016-12-13T00:00:00'), - new Date('2016-12-31T00:00:00')]; + $scope.minDate = moment().subtract(3, 'year'); + $scope.maxDate = moment().add(3, 'year'); + $scope.dates = [new Date('2017-11-14T00:00:00'), new Date('2017-11-15T00:00:00'), + new Date('2017-11-30T00:00:00'), new Date('2017-12-12T00:00:00'), new Date('2017-12-13T00:00:00'), + new Date('2017-12-31T00:00:00')]; $scope.displayDialog = function () { mdcDateTimeDialog.show({ From ebe9859527d78e43f18299d61b1f167cc2718484 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 27 Feb 2017 22:35:38 -0500 Subject: [PATCH 029/226] bump version 1.5.9 --- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bower.json b/bower.json index e8ae8f3..374d9ab 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.8", + "version": "1.5.9", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index e70afcd..08a6392 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"="},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.on("focus",function(c){if(c.preventDefault(),n.blur(),n.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.parent().removeClass("md-input-focused")},function(){o=!1,n.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);console.log(n);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)n.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.initMinutes();break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,r=[],n=0;n6&&(o=0),c.push(o.toString());if(i.week=c,n.maxDate||n.minDate){var l=n.minDate?s(n.minDate):0,d=n.maxDate?s(n.maxDate)+1:a;i.months=r.slice(l,d)}else i.months=r;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),r=moment(n.currentDate).year(i).month(a);return m(r)},i.topIndex=s(n.currentDate)-i.months[0],e.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),r=n.minDate?s(n.minDate):0,c=s(a,r);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(r.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=a.month,s=[];n.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),S=y-Y-M/2-(g+M),I={left:A,top:S,value:r?5*T:T,style:{"margin-left":A+"px","margin-top":S+"px"}};r?I.display=I.value<10?"0"+I.value:I.value:n.params.shortTime?I.display=0===T?12:T:I.display=n.isPM()?T+12:T,b.push(I)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var P=e[0].querySelector(".dtp-clock-center"),H=P.offsetWidth/2||7.5,V=P.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(r?"on":""),angular.element(P).css({left:y+v+k-H+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a{{picker.params.amText}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),S=y-Y-M/2-(g+M),I={left:A,top:S,value:n?5*T:T,style:{"margin-left":A+"px","margin-top":S+"px"}};n?I.display=I.value<10?"0"+I.value:I.value:r.params.shortTime?I.display=0===T?12:T:I.display=r.isPM()?T+12:T,b.push(I)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var P=e[0].querySelector(".dtp-clock-center"),H=P.offsetWidth/2||7.5,V=P.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(n?"on":""),angular.element(P).css({left:y+v+k-H+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute();t.currentValue=n?e.minute():e.hour()%12};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean] =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableParentScroll: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n //this.initDates();\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n }\r\n else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n this.initMinutes();\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n //picker.initHands(true);\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","currentValue","tmp","setDisplayPoints","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 0bc950e..4993fd5 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -.dtp .p10,.dtp .p20,.dtp .p60,.dtp .p80,.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-maxtime,.dtp div.dtp-actual-num{font-size:3em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#DCEDC8}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#DCEDC8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:.25em;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#BDBDBD!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8BC34A}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689F38;text-decoration:none}.dtp .p10{width:10%}.dtp .p20{width:20%}.dtp .p60{width:60%}.dtp .p80{width:80%}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected,.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0;padding:10px;border-radius:50%!important;background:#eee}html[dir=rtl] .dtp div.dtp-picker-clock{direction:ltr}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file +.dtp .p10,.dtp .p20,.dtp .p60,.dtp .p80,.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-maxtime,.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#DCEDC8}.dtp div.dtp-month-btn,.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{color:#DCEDC8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:1px;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#BDBDBD!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8BC34A}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689F38;text-decoration:none}.dtp .p10{width:10%}.dtp .p20{width:20%}.dtp .p60{width:60%}.dtp .p80{width:80%}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected,.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0;padding:10px;border-radius:50%!important;background:#eee}html[dir=rtl] .dtp div.dtp-picker-clock{direction:ltr}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file diff --git a/package.json b/package.json index fd37592..3265086 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.8", + "version": "1.5.9", "keywords": [ "css", "js", From 5dd7f98436cf605ae88226a8f8d8f3fa6d3b6382 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 3 Mar 2017 18:10:30 -0500 Subject: [PATCH 030/226] #96 minDate and maxDate mixed up in demo --- index.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 27d1336..e29ceb5 100644 --- a/index.html +++ b/index.html @@ -101,7 +101,8 @@

Datetime Pickers

placeholder="Date" minutes="true" max-date="dateTimeEnd" ng-model="dateTimeStart" - /> + min-date="null" + /> @@ -109,7 +110,8 @@

Datetime Pickers

placeholder="Date" minutes="true" min-date="dateTimeStart" ng-model="dateTimeEnd" - /> + max-date="null" + >
From 1fa315be2c5e2fa858313ad54b77b9cc49176e4d Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 5 Mar 2017 15:16:42 -0500 Subject: [PATCH 031/226] #96 fix default options mixed up with old value from another picker --- index.html | 2 -- js/angular-material-datetimepicker.js | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/index.html b/index.html index e29ceb5..79bfff9 100644 --- a/index.html +++ b/index.html @@ -101,7 +101,6 @@

Datetime Pickers

placeholder="Date" minutes="true" max-date="dateTimeEnd" ng-model="dateTimeStart" - min-date="null" />
@@ -110,7 +109,6 @@

Datetime Pickers

placeholder="Date" minutes="true" min-date="dateTimeStart" ng-model="dateTimeEnd" - max-date="null" >
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index f1a72ad..a583f45 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -281,7 +281,7 @@ this._attachedEvents = []; this.VIEWS = VIEW_STATES; - this.params = mdcDefaultParams; + this.params = angular.copy(mdcDefaultParams); this.meridien = 'AM'; this.params = angular.extend(this.params, this.options); From af2ef552ac03e77eb10ac7a330d4c08db22a8193 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 5 Mar 2017 20:13:24 -0500 Subject: [PATCH 032/226] unecessary that --- js/angular-material-datetimepicker.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index a583f45..8c1090f 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -305,23 +305,22 @@ return moment(date).minutes(minutes); }, initDates: function () { - var that = this; var _dateParam = function (input, fallback) { var ret = null; if (angular.isDefined(input) && input !== null && input !== '') { if (angular.isString(input)) { - if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) { - ret = moment(input, that.params.format).locale(that.params.lang); + if (typeof(this.params.format) !== 'undefined' && this.params.format !== null) { + ret = moment(input, this.params.format).locale(this.params.lang); } else { - ret = moment(input).locale(that.params.lang); + ret = moment(input).locale(this.params.lang); } } else if (typeof input === 'number') { - ret = moment(input).locale(that.params.lang); + ret = moment(input).locale(this.params.lang); } else { if (angular.isDate(input)) { var x = input.getTime(); - ret = moment(x, "x").locale(that.params.lang); + ret = moment(x, "x").locale(this.params.lang); } else if (input._isAMomentObject) { ret = input; } From 5d62b3ff3be9c8356cf0fad7eb606f7ed9a4ae22 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 5 Mar 2017 20:40:08 -0500 Subject: [PATCH 033/226] Revert "unecessary that" This reverts commit af2ef552ac03e77eb10ac7a330d4c08db22a8193. --- js/angular-material-datetimepicker.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 8c1090f..a583f45 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -305,22 +305,23 @@ return moment(date).minutes(minutes); }, initDates: function () { + var that = this; var _dateParam = function (input, fallback) { var ret = null; if (angular.isDefined(input) && input !== null && input !== '') { if (angular.isString(input)) { - if (typeof(this.params.format) !== 'undefined' && this.params.format !== null) { - ret = moment(input, this.params.format).locale(this.params.lang); + if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) { + ret = moment(input, that.params.format).locale(that.params.lang); } else { - ret = moment(input).locale(this.params.lang); + ret = moment(input).locale(that.params.lang); } } else if (typeof input === 'number') { - ret = moment(input).locale(this.params.lang); + ret = moment(input).locale(that.params.lang); } else { if (angular.isDate(input)) { var x = input.getTime(); - ret = moment(x, "x").locale(this.params.lang); + ret = moment(x, "x").locale(that.params.lang); } else if (input._isAMomentObject) { ret = input; } From 04c7afadf39c373508fce48fac37d395ce886db0 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 5 Mar 2017 20:42:07 -0500 Subject: [PATCH 034/226] bump version 1.5.10 --- README.md | 2 +- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- package.json | 12 +-- yarn.lock | 82 ++++++++----------- 7 files changed, 43 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index 79617c8..9eba468 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ The directive accepts several attributes which are described below: | **ng-model** | (String\|Date\|Moment) | Initial Date or model to assign the date to | | **ng-change** | Function | A function to call when the input value changes. | | **format** | String | [MomentJS Format](momentjs.com/docs/#/parsing/string-format/),defaults to `HH:mm` for time picker only, `YYYY-MM-DD` for date picker only and `YYYY-MM-DD HH:mm` for both timepicker and date picker | -| **short-time** | Boolean | true => Display 12 hours AM\|PM | +| **short-time** | Boolean | true => Display 12 hours AM\|PM (default: false) | | **min-date** | (String\|Date\|Moment) | Minimum selectable date | | **max-date** | (String\|Date\|Moment) | Maximum selectable date | | **date** | Boolean | true => Has Datepicker (default: true) | diff --git a/bower.json b/bower.json index 374d9ab..ee2ca69 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.9", + "version": "1.5.10", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 08a6392..1bee6a3 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=i,this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),S=y-Y-M/2-(g+M),I={left:A,top:S,value:n?5*T:T,style:{"margin-left":A+"px","margin-top":S+"px"}};n?I.display=I.value<10?"0"+I.value:I.value:r.params.shortTime?I.display=0===T?12:T:I.display=r.isPM()?T+12:T,b.push(I)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var P=e[0].querySelector(".dtp-clock-center"),H=P.offsetWidth/2||7.5,V=P.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(n?"on":""),angular.element(P).css({left:y+v+k-H+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute();t.currentValue=n?e.minute():e.hour()%12};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a{{picker.params.amText}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),S=y-Y-M/2-(g+M),I={left:A,top:S,value:n?5*T:T,style:{"margin-left":A+"px","margin-top":S+"px"}};n?I.display=I.value<10?"0"+I.value:I.value:r.params.shortTime?I.display=0===T?12:T:I.display=r.isPM()?T+12:T,b.push(I)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var P=e[0].querySelector(".dtp-clock-center"),H=P.offsetWidth/2||7.5,V=P.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(n?"on":""),angular.element(P).css({left:y+v+k-H+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute();t.currentValue=n?e.minute():e.hour()%12};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = mdcDefaultParams;\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","currentValue","tmp","setDisplayPoints","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 4993fd5..adeb5ae 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -.dtp .p10,.dtp .p20,.dtp .p60,.dtp .p80,.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-maxtime,.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#DCEDC8}.dtp div.dtp-month-btn,.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{color:#DCEDC8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:1px;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#BDBDBD!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8BC34A}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689F38;text-decoration:none}.dtp .p10{width:10%}.dtp .p20{width:20%}.dtp .p60{width:60%}.dtp .p80{width:80%}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected,.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0;padding:10px;border-radius:50%!important;background:#eee}html[dir=rtl] .dtp div.dtp-picker-clock{direction:ltr}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:1px;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee}html[dir=rtl] .dtp div.dtp-picker-clock{direction:ltr}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file diff --git a/package.json b/package.json index 3265086..60fa3cf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.9", + "version": "1.5.10", "keywords": [ "css", "js", @@ -28,17 +28,17 @@ }, "devDependencies": { "gulp": "^3.9.1", - "gulp-bump": "^2.6.1", - "gulp-clean-css": "^2.3.2", + "gulp-bump": "^2.7.0", + "gulp-clean-css": "^3.0.3", "gulp-filter": "^5.0.0", - "gulp-git": "^2.0.0", + "gulp-git": "^2.0.1", "gulp-git-push": "^1.0.1", "gulp-rename": "^1.2.2", - "gulp-sourcemaps": "^2.4.0", + "gulp-sourcemaps": "^2.4.1", "gulp-tag-version": "^1.3.0", "gulp-uglify": "^2.0.1", "pump": "^1.0.2", "run-sequence": "^1.2.2", - "yargs": "^6.6.0" + "yargs": "^7.0.1" } } diff --git a/yarn.lock b/yarn.lock index e33e401..67c86fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -164,9 +164,9 @@ builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -bump-regex@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/bump-regex/-/bump-regex-2.6.1.tgz#e2dd5d2fb542459c4eef275e0e2df26381f36120" +bump-regex@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/bump-regex/-/bump-regex-2.7.0.tgz#4a21e2537113476c026be588b8a7dddef1934641" dependencies: semver "^5.1.0" xtend "^4.0.1" @@ -217,12 +217,11 @@ chalk@^0.5.0: strip-ansi "^0.3.0" supports-color "^0.2.0" -clean-css@^3.4.23: - version "3.4.24" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.24.tgz#89f5a5e9da37ae02394fe049a41388abbe72c3b5" +clean-css@^4.0.7: + version "4.0.8" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6" dependencies: - commander "2.8.x" - source-map "0.4.x" + source-map "0.5.x" cliui@^2.1.0: version "2.1.0" @@ -272,12 +271,6 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -commander@2.8.x: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - dependencies: - graceful-readlink ">= 1.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -608,27 +601,22 @@ graceful-fs@~1.2.0: version "1.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -gulp-bump@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/gulp-bump/-/gulp-bump-2.6.1.tgz#9d27a9ec0e1b8608c39bb41238a35e860281bb18" +gulp-bump@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/gulp-bump/-/gulp-bump-2.7.0.tgz#4c3750bce93c5d816fe9a154e6619dd509a852d8" dependencies: - bump-regex "^2.6.1" + bump-regex "^2.7.0" plugin-error "^0.1.2" plugin-log "^0.1.0" semver "^5.3.0" through2 "^2.0.1" -gulp-clean-css@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-2.3.2.tgz#7410769c4474c12ccd55e98ea74b1898d428acd0" +gulp-clean-css@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.0.3.tgz#dcd6767413d51a9de9e4bc47b8ae7e02b43b1c4a" dependencies: - clean-css "^3.4.23" - gulp-util "^3.0.7" - object-assign "^4.1.0" + clean-css "^4.0.7" + gulp-util "^3.0.8" through2 "^2.0.3" vinyl-sourcemaps-apply "^0.2.1" @@ -658,9 +646,9 @@ gulp-git@^1.7.1: require-dir "^0.1.0" through2 "^0.6.5" -gulp-git@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.0.0.tgz#29da8251db078ace48ebcdf49861282e97a00fe9" +gulp-git@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.0.1.tgz#7ee8e5088a0d293371740563f36b20cfd2b408c7" dependencies: any-shell-escape "^0.1.1" gulp-util "^3.0.6" @@ -682,9 +670,9 @@ gulp-rename@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" -gulp-sourcemaps@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.4.0.tgz#9ce8fcf9ab29769819dff04ca781976072838979" +gulp-sourcemaps@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.4.1.tgz#8f65dc5c0d07b2fd5c88bc60ec7f13e56716bf74" dependencies: acorn "4.X" convert-source-map "1.X" @@ -718,7 +706,7 @@ gulp-uglify@^2.0.1: uglify-save-license "^0.4.1" vinyl-sourcemaps-apply "^0.2.0" -gulp-util@*, gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7: +gulp-util@*, gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7, gulp-util@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" dependencies: @@ -1367,7 +1355,7 @@ object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" -object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -1690,13 +1678,7 @@ source-map-url@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" -source-map@0.4.x: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@0.X, source-map@^0.5.1, source-map@~0.5.1: +source-map@0.5.x, source-map@0.X, source-map@^0.5.1, source-map@~0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -2001,15 +1983,15 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" dependencies: camelcase "^3.0.0" -yargs@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" +yargs@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.0.1.tgz#7b083da14f9bd9c0ec21477030658f120d995351" dependencies: camelcase "^3.0.0" cliui "^3.2.0" @@ -2023,7 +2005,7 @@ yargs@^6.6.0: string-width "^1.0.2" which-module "^1.0.0" y18n "^3.2.1" - yargs-parser "^4.2.0" + yargs-parser "^5.0.0" yargs@~3.10.0: version "3.10.0" From ed95821a31f6394972892e2bb96511d4cb148449 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 25 Mar 2017 22:06:51 -0400 Subject: [PATCH 035/226] #100 change the current date to be the start of the day in demo --- js/demo.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/demo.js b/js/demo.js index 0db78bf..bff85f1 100644 --- a/js/demo.js +++ b/js/demo.js @@ -7,7 +7,7 @@ 'ngMaterialDatePicker' ]) .controller('DemoCtrl', function ($scope, mdcDateTimeDialog) { - $scope.date = new Date(); + $scope.date = moment().startOf('day'); $scope.time = new Date(); $scope.dateTime = new Date(); @@ -27,6 +27,7 @@ $scope.displayDialog = function () { mdcDateTimeDialog.show({ + currentDate: moment().startOf('day'), maxDate: $scope.maxDate, time: false }) From f64791bcfee87eab249ef7a1991757717e3568ca Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 25 Mar 2017 22:07:08 -0400 Subject: [PATCH 036/226] angular 1.6.3, momentjs 2.18.1 --- index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 79bfff9..c49c64a 100644 --- a/index.html +++ b/index.html @@ -11,11 +11,11 @@ - - - + + + - + From 8302cde93b1dd8558a310108b34efb92d6ccc245 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 27 Mar 2017 22:41:49 -0400 Subject: [PATCH 037/226] add cdn --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 9eba468..ba43907 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,16 @@ npm i ng-material-datetimepicker bower install ng-material-datetimepicker ``` +## CDN +``` +https://unpkg.com/ng-material-datetimepicker@1.5.10/dist/angular-material-datetimepicker.min.js +https://unpkg.com/ng-material-datetimepicker@1.5.10/dist/angular-material-datetimepicker.min.js.map +https://unpkg.com/ng-material-datetimepicker@1.5.10/dist/material-datetimepicker.min.css + +https://cdn.rawgit.com/beenote/angular-material-datetimepicker/v1.5.10/dist/angular-material-datetimepicker.min.js +https://cdn.rawgit.com/beenote/angular-material-datetimepicker/v1.5.10/dist/angular-material-datetimepicker.min.js.map +https://cdn.rawgit.com/beenote/angular-material-datetimepicker/v1.5.10/dist/material-datetimepicker.min.css +``` ## Live Example From 66c043c4a49e8f2109e509091aa5b4a4494fefbf Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 27 Mar 2017 22:55:52 -0400 Subject: [PATCH 038/226] add more cdn links for dependencies --- README.md | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index ba43907..37f225e 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,15 @@ Depends on the following library: - AngularJS - Moment +``` + + + + + + +``` + ## Installing via yarn, npm or bower ``` @@ -47,13 +56,15 @@ bower install ng-material-datetimepicker ## CDN ``` -https://unpkg.com/ng-material-datetimepicker@1.5.10/dist/angular-material-datetimepicker.min.js -https://unpkg.com/ng-material-datetimepicker@1.5.10/dist/angular-material-datetimepicker.min.js.map -https://unpkg.com/ng-material-datetimepicker@1.5.10/dist/material-datetimepicker.min.css - -https://cdn.rawgit.com/beenote/angular-material-datetimepicker/v1.5.10/dist/angular-material-datetimepicker.min.js -https://cdn.rawgit.com/beenote/angular-material-datetimepicker/v1.5.10/dist/angular-material-datetimepicker.min.js.map -https://cdn.rawgit.com/beenote/angular-material-datetimepicker/v1.5.10/dist/material-datetimepicker.min.css + + + +``` +or +``` + + + ``` ## Live Example @@ -157,7 +168,3 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. disableParentScroll: {boolean} = false, } ``` - -## Important Note on Using Locales - -Please see this [issue](https://github.com/logbon72/angular-material-datetimepicker/issues/51). To use a locale with your date time picker dialog, you'll have to include the moment.js locale file. From 448a1ef109f33afe708a69b0c57c8c3889501999 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 6 Apr 2017 00:38:45 -0400 Subject: [PATCH 039/226] #104 demo for locale --- index.html | 27 ++++++++++++++++++++++++--- js/demo.js | 25 +++++++++++++++++++++++-- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index c49c64a..d6e9d92 100644 --- a/index.html +++ b/index.html @@ -11,11 +11,15 @@ - - - + + + + + + + @@ -32,6 +36,10 @@

Angular Material DatePicker

Datetime Pickers

+ + {{lang.label}} + +
{{txtdir}}
@@ -61,6 +69,7 @@

Datetime Pickers

+
@@ -84,6 +93,18 @@

Datetime Pickers

+
+ + + + +
+
+
diff --git a/js/demo.js b/js/demo.js index bff85f1..df2bf22 100644 --- a/js/demo.js +++ b/js/demo.js @@ -4,10 +4,24 @@ (function () { 'use strict'; angular.module('mdDatetimePickerDemo', [ - 'ngMaterialDatePicker' + 'ngMaterialDatePicker', + 'pascalprecht.translate' ]) - .controller('DemoCtrl', function ($scope, mdcDateTimeDialog) { + .config(function($translateProvider) { + $translateProvider.translations('en', { + CANCEL: "Cancel", + TODAY: "Today", + }); + $translateProvider.translations('fr', { + CANCEL: "Annuler", + TODAY: "Aujourd'hui", + }); + $translateProvider.preferredLanguage('en'); + $translateProvider.useSanitizeValueStrategy('sceParameters'); + }) + .controller('DemoCtrl', function ($scope, mdcDateTimeDialog, $translate) { $scope.date = moment().startOf('day'); + $scope.dateLang = new Date(); $scope.time = new Date(); $scope.dateTime = new Date(); @@ -25,6 +39,8 @@ new Date('2017-11-30T00:00:00'), new Date('2017-12-12T00:00:00'), new Date('2017-12-13T00:00:00'), new Date('2017-12-31T00:00:00')]; + $scope.langs = [{'value': 'en', 'label': 'English'},{'value': 'fr', 'label': 'Français'}]; + $scope.displayDialog = function () { mdcDateTimeDialog.show({ currentDate: moment().startOf('day'), @@ -43,6 +59,11 @@ $scope.txtdir = document.documentElement.dir = ($scope.txtdir === 'rtl') ? 'ltr' : 'rtl'; }; + $scope.changeLanguage = function() { + $translate.use($scope.selectedLang); + moment.locale($scope.selectedLang); + }; + }) .directive('exSourceCode', function () { From fd355514e152f4ecafa11a4b7e593ad08fd5c0e0 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 10 Apr 2017 23:22:22 -0400 Subject: [PATCH 040/226] #91 simpler fix --- css/material-datetimepicker.css | 5 +---- dist/material-datetimepicker.min.css | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index 2f267b6..3293fcf 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -291,10 +291,7 @@ md-dialog.dtp { padding: 10px; border-radius: 50% !important; background: #eee; -} - -html[dir="rtl"] .dtp div.dtp-picker-clock { - direction: ltr; + direction: ltr; } .dtp-clock-center { diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index adeb5ae..1f8371f 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:1px;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee}html[dir=rtl] .dtp div.dtp-picker-clock{direction:ltr}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:1px;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file From f2f68bad8b69c7f92318233f3160ec4a9995f8a4 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 10 Apr 2017 23:22:49 -0400 Subject: [PATCH 041/226] 1.5.11 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 60fa3cf..dbcba8b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.10", + "version": "1.5.11", "keywords": [ "css", "js", From 6499b74914b4e8864f319c70f5680510f43c25bb Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 10 Apr 2017 23:23:42 -0400 Subject: [PATCH 042/226] bower 1.5.11 --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index ee2ca69..6d22ad9 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.10", + "version": "1.5.11", "keywords": [ "css", "js", From 68a33b455231b8ed74f519070297a1b7c77bd5d2 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 17 Apr 2017 10:00:42 -0400 Subject: [PATCH 043/226] #81 Single click to select --- README.md | 84 +++++++++++++-------------- index.html | 13 ++++- js/angular-material-datetimepicker.js | 15 ++++- 3 files changed, 64 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 37f225e..9871864 100644 --- a/README.md +++ b/README.md @@ -2,30 +2,24 @@ Originally designed for Bootstrap Material, this has been modified to work with [Angular Material](https://material.angularjs.org/). This is an Android style date-time picker for Angular Material. Some added features include: -- Double click to select date or time -- Swipe left to go to next month or Swipe right to go to previous month. +- Double or single click to select date and/or time +- Swipe left to go to next month or Swipe right to go to previous month +- Configurable first day of the week +- Support 24 hours format display +- Can disable dates, not selectable by user +- Can disable minutes view +- Compatible with right-to-left direction ## Updates -** I have kept this section of the document as an acknowledgement for all the work done on the original Bootstrap Material plugin ** - -| Date | Author | Description | -| ----------------- | ----------------- | ------------------------------------------------------ | -| 2017-01-30 | hexadecy | Add support only for angular 1.5.x - 1.6.x ($onInit) | -| 2015-11-12 | logbon72 | Adapted plugin for Angular Material | -| 2015-10-19 | benletchford | Fixed not being able to tab into input | -| 2015-10-19 | drblue | Fixed erroneous package.json-file | -| 2015-10-19 | Perdona | Fix auto resize when month has 6 weeks | -| 2015-07-01 | T00rk | Redesigned element without using modal | -| 2015-06-16 | T00rk | Use Timepicker alone / Display short time (12 hours) | -| 2015-06-13 | T00rk | Fixed issue with HTML value tag | -| 2015-05-25 | T00rk | Changed repo name to bootstrap-material-datetimepicker * | -| 2015-05-12 | T00rk | Added parameters for button text | -| 2015-05-05 | Sovanna | FIX undefined _minDate in isBeforeMaxDate func | -| 2015-04-10 | T00rk | Little change in clock design | -| 2015-04-10 | Peterzen | Added bower and requirejs support | -| 2015-04-08 | T00rk | Fixed problem on locale switch | -| 2015-03-04 | T00rk | Added Time picker | +| Date | Author | Description | +| ---------- | -------- | ---------------------------------------------------- | +| 2017-04-17 | hexadecy | Single click to select | +| 2017-02-27 | hexadecy | Can hide minutes view, Month next and prev buttons | +| 2017-02-22 | hexadecy | Fix for rtl website | +| 2017-02-15 | hexadecy | Fix inputs are not bluring after selection is made | +| 2017-01-30 | hexadecy | Add support only for angular 1.5.x - 1.6.x ($onInit) | +| 2015-11-12 | logbon72 | Adapted plugin for Angular Material | ### Dependencies @@ -56,15 +50,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example @@ -103,23 +97,24 @@ This plugin exposes a directive which should be used as an attribute for an inpu The directive accepts several attributes which are described below: -| Name | Type | Description | -| ----------------- | ----------------------------- | --------------------------------------------- | -| **ng-model** | (String\|Date\|Moment) | Initial Date or model to assign the date to | -| **ng-change** | Function | A function to call when the input value changes. | -| **format** | String | [MomentJS Format](momentjs.com/docs/#/parsing/string-format/),defaults to `HH:mm` for time picker only, `YYYY-MM-DD` for date picker only and `YYYY-MM-DD HH:mm` for both timepicker and date picker | -| **short-time** | Boolean | true => Display 12 hours AM\|PM (default: false) | -| **min-date** | (String\|Date\|Moment) | Minimum selectable date | -| **max-date** | (String\|Date\|Moment) | Maximum selectable date | -| **date** | Boolean | true => Has Datepicker (default: true) | -| **time** | Boolean | true => Has Timepicker (default: true) | -| **minutes** | Boolean | true => Has Timepicker minutes (default: true) | -| **cancel-text** | String | Text for the cancel button (default: Cancel) | -| **today-text** | String | Text for the today button (default: Today) | -| **ok-text** | String | Text for the OK button (default: OK) | -| **week-start** | Number | First day of the week (default: 0 => Sunday) | -| **disable-dates** | Date[] | Dates to be disabled or not selectable by user.| -| **disable-parent-scroll** | Boolean | true => Disable scrolling while the dialog is open (default : false) | +| Name | Type | Description | +| ------------------------- | ----------------------- | -------------------------------------------------------------------- | +| **ng-model** | (String\|Date\|Moment | Initial Date or model to assign the date to | +| **ng-change** | Function | A function to call when the input value changes. | +| **format** | String | [MomentJS Format](momentjs.com/docs/#/parsing/string-format/),defaults to `HH:mm` for time picker only, `YYYY-MM-DD` for date picker only and `YYYY-MM-DD HH:mm` for both timepicker and date picker | +| **short-time** | Boolean | true => Display 12 hours AM\|PM (default: false) | +| **min-date** | (String\|Date\|Moment) | Minimum selectable date | +| **max-date** | (String\|Date\|Moment) | Maximum selectable date | +| **date** | Boolean | true => Has Datepicker (default: true) | +| **time** | Boolean | true => Has Timepicker (default: true) | +| **minutes** | Boolean | true => Has Timepicker minutes (default: true) | +| **cancel-text** | String | Text for the cancel button (default: Cancel) | +| **today-text** | String | Text for the today button (default: Today) | +| **ok-text** | String | Text for the OK button (default: OK) | +| **week-start** | Number | First day of the week (default: 0 => Sunday) | +| **disable-dates** | Date[] | Dates to be disabled or not selectable by user. | +| **disable-parent-scroll** | Boolean | true => Disable scrolling while the dialog is open (default : false) | +| **auto-ok** | Boolean | true => Single click (default: false) | ### Date/Time Dialog Service @@ -166,5 +161,6 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. pmText: {string} ='PM', disableDates: {date[]} =[], disableParentScroll: {boolean} = false, + autoOk: {boolean} =false } ``` diff --git a/index.html b/index.html index d6e9d92..3ff1bd9 100644 --- a/index.html +++ b/index.html @@ -36,7 +36,7 @@

Angular Material DatePicker

Datetime Pickers

- + {{lang.label}}
@@ -93,6 +93,17 @@

Datetime Pickers

+
+ + + + +
+
+
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index a583f45..a4441f1 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -96,7 +96,8 @@ pmText: 'PM', todayText: 'Today', disableDates: [], - disableParentScroll: false + disableParentScroll: false, + autoOk: false }; return default_params; }]) @@ -125,7 +126,8 @@ pmText: '@', showTodaysDate: '@', todayText: '@', - disableParentScroll: '=' + disableParentScroll: '=', + autoOk: '=' }, link: function (scope, element, attrs, ngModel) { var isOn = false; @@ -231,7 +233,8 @@ amText: {string} ='AM', pmText: {string} ='PM', disableDates: {date[]} =[], - disableParentScroll: {boolean} =false + disableParentScroll: {boolean} =false, + autoOk: {boolean} =false } @return promise */ @@ -725,6 +728,9 @@ return picker.ok(); } picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute())); + if (picker.params.autoOk) { + picker.ok(); + } } }; @@ -1002,6 +1008,9 @@ picker.currentDate.minute(val); } picker.currentDate.second(0); + if (picker.params.autoOk) { + picker.ok(); + } }; scope.pointAvailable = function (point) { From ffc71feef5e1f3e27d9c555bdfb80ad78b6e174e Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 17 Apr 2017 10:01:58 -0400 Subject: [PATCH 044/226] version 1.5.12 --- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bower.json b/bower.json index 6d22ad9..7aa2413 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.11", + "version": "1.5.12", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 1bee6a3..f3354ed 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),S=y-Y-M/2-(g+M),I={left:A,top:S,value:n?5*T:T,style:{"margin-left":A+"px","margin-top":S+"px"}};n?I.display=I.value<10?"0"+I.value:I.value:r.params.shortTime?I.display=0===T?12:T:I.display=r.isPM()?T+12:T,b.push(I)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var P=e[0].querySelector(".dtp-clock-center"),H=P.offsetWidth/2||7.5,V=P.offsetHeight/2||7.5,E=y/1.8,O=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(n?"on":""),angular.element(P).css({left:y+v+k-H+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute();t.currentValue=n?e.minute():e.hour()%12};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a{{picker.params.amText}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),S=y-Y-M/2-(g+M),I={left:A,top:S,value:n?5*T:T,style:{"margin-left":A+"px","margin-top":S+"px"}};n?I.display=I.value<10?"0"+I.value:I.value:r.params.shortTime?I.display=0===T?12:T:I.display=r.isPM()?T+12:T,b.push(I)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var P=e[0].querySelector(".dtp-clock-center"),H=P.offsetWidth/2||7.5,V=P.offsetHeight/2||7.5,O=y/1.8,E=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(n?"on":""),angular.element(P).css({left:y+v+k-H+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute();t.currentValue=n?e.minute():e.hour()%12};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","currentValue","tmp","setDisplayPoints","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index dbcba8b..af51014 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.11", + "version": "1.5.12", "keywords": [ "css", "js", From cf6fe0ace29eb22d78e4bfb5ecdacafb156ffe13 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 26 Apr 2017 23:07:50 -0400 Subject: [PATCH 045/226] #107 full 24 hour clock face --- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 84 +++++++++++-------- 3 files changed, 51 insertions(+), 37 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index f3354ed..4957708 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return e.hour(this.convertHours(t)).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),Y=x*Math.cos(2*Math.PI*(T/12)),A=y+w+v/2-(v+k),S=y-Y-M/2-(g+M),I={left:A,top:S,value:n?5*T:T,style:{"margin-left":A+"px","margin-top":S+"px"}};n?I.display=I.value<10?"0"+I.value:I.value:r.params.shortTime?I.display=0===T?12:T:I.display=r.isPM()?T+12:T,b.push(I)}t.points=b,t.mode=i.mode,d(),c.css("height",D+"px");var P=e[0].querySelector(".dtp-clock-center"),H=P.offsetWidth/2||7.5,V=P.offsetHeight/2||7.5,O=y/1.8,E=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:O+"px",marginTop:y-O-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:E+"px",marginTop:y-E-v+"px"}).addClass(n?"on":""),angular.element(P).css({left:y+v+k-H+"px",marginTop:y-k/2-V+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute();t.currentValue=n?e.minute():e.hour()%12};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()});var m=function(t,e){for(var a=0;a{{picker.params.amText}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),A=x*Math.cos(2*Math.PI*(T/12)),Y=y+w+v/2-(v+k),I=y-A-M/2-(g+M),S={left:Y,top:I,value:n?5*T:T,style:{"margin-left":Y+"px","margin-top":I+"px"}};n?S.display=S.value<10?"0"+S.value:S.value:r.params.shortTime?S.display=0===T?12:T:S.display=T,b.push(S)}if(t.points=b,!r.params.shortTime&&!n){for(var P=[],V=y/1.8,H=12;H<24;++H){var O=V*Math.sin(2*Math.PI*(H/12)),E=V*Math.cos(2*Math.PI*(H/12)),C=y+O+v/2-(v+k),N=y-E-M/2-(g+M),$={left:C,top:N,value:H,style:{"margin-left":C+"px","margin-top":N+"px"}};$.display=H,P.push($)}t.points24=P}t.mode=i.mode,d(),c.css("height",D+"px");var q=e[0].querySelector(".dtp-clock-center"),B=q.offsetWidth/2||7.5,U=q.offsetHeight/2||7.5,R=y/(r.params.shortTime?1.8:2.3),L=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:R+"px",marginTop:y-R-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:L+"px",marginTop:y-L-v+"px"}).addClass(n?"on":""),angular.element(q).css({left:y+v+k-B+"px",marginTop:y-k/2-U+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute(),a=r.params.shortTime?12:24;t.currentValue=n?e.minute():e.hour()%a};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){e===t.currentValue&&r.ok(),n?r.currentDate.minute(e):r.params.shortTime?r.currentDate.hour(r.isPM()?e+12:e):r.currentDate.hour(e),r.currentDate.second(0),r.params.autoOk&&r.ok()},t.pointAvailable=function(t){return n?r.isMinuteAvailable(t.value):r.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),m()})}}}])}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 80b9dfa..12d74c2 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","currentValue","tmp","setDisplayPoints","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; //???\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = picker.isPM() ? h + 12 : h;\r\n }\r\n }\r\n\r\n\r\n points.push(hour);\r\n }\r\n\r\n scope.points = points;\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / 1.8;\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n\r\n var setDisplayPoints = function (isPM, points) {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].display = i;\r\n if (isPM) {\r\n points[i].display += 12;\r\n }\r\n }\r\n return points;\r\n };\r\n\r\n if (!picker.params.shortTime) {\r\n scope.$watch('picker.meridien', function () {\r\n if (!minuteMode) {\r\n if (scope.points) {\r\n var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points));\r\n scope.points = points;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","points24","j24","h24","x24","y24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index a4441f1..2d0bd40 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -44,11 +44,11 @@ ' ' + '
' + '
' + - '
' + + ' ' + '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' + - '
' + + ' ' + '
' + @@ -486,7 +486,11 @@ }, isHourAvailable: function (hour) { var _date = moment(this.currentDate); - _date.hour(this.convertHours(hour)).minute(0).second(0); + if (this.params.shortTime) { + _date.hour(this.convertHours(hour)).minute(0).second(0); + } else { + _date.hour(hour).minute(0).second(0); + } return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false); }, isMinuteAvailable: function (minute) { @@ -842,10 +846,14 @@ var template = '
 ' + - '
' + + '' + + '' + '
' + '
' + '
' + @@ -878,8 +886,8 @@ var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0; var r = (clockWidth / 2); - var j = r / 1.2; //??? - + var j = r / 1.2; // radius for low number + var points = []; for (var h = 0; h < 12; ++h) { @@ -902,15 +910,38 @@ if (picker.params.shortTime) { hour.display = (h === 0) ? 12 : h; } else { - hour.display = picker.isPM() ? h + 12 : h; + hour.display = h; } } - points.push(hour); } - scope.points = points; + + if (!picker.params.shortTime && !minuteMode) { + var points24 = []; + + var j24 = r / 1.8; // radius for high number + for (var h24 = 12; h24 < 24; ++h24) { + var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12)); + var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12)); + var left24 = (r + x24 + pL / 2) - (pL + mL); + var top24 = (r - y24 - mT / 2) - (pT + mT); + + var hour24 = { + left: left24, + top: top24, + value: h24, + style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'} + }; + + hour24.display = h24; + + points24.push(hour24); + } + scope.points24 = points24; + } + scope.mode = attrs.mode; setCurrentValue(); clock.css('height', clockWidth + 'px'); @@ -918,7 +949,7 @@ var clockCenter = element[0].querySelector('.dtp-clock-center'); var centerWidth = (clockCenter.offsetWidth / 2) || 7.5, centerHeight = (clockCenter.offsetHeight / 2) || 7.5; - var _hL = r / 1.8; + var _hL = r / (picker.params.shortTime ? 1.8 : 2.3); var _mL = r / 1.5; angular.element(element[0].querySelector('.dtp-hour-hand')).css({ @@ -963,7 +994,8 @@ var setCurrentValue = function () { var date = picker.currentNearest5Minute(); - scope.currentValue = minuteMode ? date.minute() : (date.hour() % 12); + var nbH = picker.params.shortTime ? 12 : 24; + scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH); }; scope.$watch(function () { @@ -974,36 +1006,18 @@ animateHands(); }); - - var setDisplayPoints = function (isPM, points) { - for (var i = 0; i < points.length; i++) { - points[i].display = i; - if (isPM) { - points[i].display += 12; - } - } - return points; - }; - - if (!picker.params.shortTime) { - scope.$watch('picker.meridien', function () { - if (!minuteMode) { - if (scope.points) { - var points = setDisplayPoints(picker.isPM(), angular.copy(scope.points)); - scope.points = points; - } - } - }); - } - - scope.setTime = function (val) { if (val === scope.currentValue) { picker.ok(); } if (!minuteMode) { - picker.currentDate.hour(picker.isPM() ? (val + 12) : val); + if (picker.params.shortTime) { + picker.currentDate.hour(picker.isPM() ? (val + 12) : val); + } else { + picker.currentDate.hour(val); + } + } else { picker.currentDate.minute(val); } From e37264517f60d01ef179f19640bd726e3f01a717 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 26 Apr 2017 23:10:15 -0400 Subject: [PATCH 046/226] version 1.6.0 --- README.md | 23 ++++++++++++----------- bower.json | 2 +- index.html | 4 ++-- package.json | 2 +- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 9871864..911ce15 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Originally designed for Bootstrap Material, this has been modified to work with | Date | Author | Description | | ---------- | -------- | ---------------------------------------------------- | +| 2017-04-26 | hexadecy | 24 hour clock face | | 2017-04-17 | hexadecy | Single click to select | | 2017-02-27 | hexadecy | Can hide minutes view, Month next and prev buttons | | 2017-02-22 | hexadecy | Fix for rtl website | @@ -32,11 +33,11 @@ Depends on the following library: - Moment ``` - - - - - + + + + + ``` @@ -50,15 +51,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 7aa2413..9beb0ab 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.12", + "version": "1.6.0", "keywords": [ "css", "js", diff --git a/index.html b/index.html index 3ff1bd9..d6a8bcf 100644 --- a/index.html +++ b/index.html @@ -8,13 +8,13 @@ - + - + diff --git a/package.json b/package.json index af51014..14c2cfe 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.5.12", + "version": "1.6.0", "keywords": [ "css", "js", From 24054abd70406aebe1d031a8f382ac02b2292451 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 28 Apr 2017 16:32:56 -0400 Subject: [PATCH 047/226] Fix auto-ok when currentValue don't change --- README.md | 4 ++-- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 4 +++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 911ce15..77d589e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Originally designed for Bootstrap Material, this has been modified to work with - Double or single click to select date and/or time - Swipe left to go to next month or Swipe right to go to previous month - Configurable first day of the week -- Support 24 hours format display +- Support 24-hour format display - Can disable dates, not selectable by user - Can disable minutes view - Compatible with right-to-left direction @@ -14,7 +14,7 @@ Originally designed for Bootstrap Material, this has been modified to work with | Date | Author | Description | | ---------- | -------- | ---------------------------------------------------- | -| 2017-04-26 | hexadecy | 24 hour clock face | +| 2017-04-26 | hexadecy | New 24-hour clock face | | 2017-04-17 | hexadecy | Single click to select | | 2017-02-27 | hexadecy | Can hide minutes view, Month next and prev buttons | | 2017-02-22 | hexadecy | Fix for rtl website | diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 4957708..39ab1be 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),A=x*Math.cos(2*Math.PI*(T/12)),Y=y+w+v/2-(v+k),I=y-A-M/2-(g+M),S={left:Y,top:I,value:n?5*T:T,style:{"margin-left":Y+"px","margin-top":I+"px"}};n?S.display=S.value<10?"0"+S.value:S.value:r.params.shortTime?S.display=0===T?12:T:S.display=T,b.push(S)}if(t.points=b,!r.params.shortTime&&!n){for(var P=[],V=y/1.8,H=12;H<24;++H){var O=V*Math.sin(2*Math.PI*(H/12)),E=V*Math.cos(2*Math.PI*(H/12)),C=y+O+v/2-(v+k),N=y-E-M/2-(g+M),$={left:C,top:N,value:H,style:{"margin-left":C+"px","margin-top":N+"px"}};$.display=H,P.push($)}t.points24=P}t.mode=i.mode,d(),c.css("height",D+"px");var q=e[0].querySelector(".dtp-clock-center"),B=q.offsetWidth/2||7.5,U=q.offsetHeight/2||7.5,R=y/(r.params.shortTime?1.8:2.3),L=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:R+"px",marginTop:y-R-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:L+"px",marginTop:y-L-v+"px"}).addClass(n?"on":""),angular.element(q).css({left:y+v+k-B+"px",marginTop:y-k/2-U+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute(),a=r.params.shortTime?12:24;t.currentValue=n?e.minute():e.hour()%a};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){e===t.currentValue&&r.ok(),n?r.currentDate.minute(e):r.params.shortTime?r.currentDate.hour(r.isPM()?e+12:e):r.currentDate.hour(e),r.currentDate.second(0),r.params.autoOk&&r.ok()},t.pointAvailable=function(t){return n?r.isMinuteAvailable(t.value):r.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),m()})}}}])}(); +!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),A=x*Math.cos(2*Math.PI*(T/12)),Y=y+w+v/2-(v+k),I=y-A-M/2-(g+M),S={left:Y,top:I,value:n?5*T:T,style:{"margin-left":Y+"px","margin-top":I+"px"}};n?S.display=S.value<10?"0"+S.value:S.value:r.params.shortTime?S.display=0===T?12:T:S.display=T,b.push(S)}if(t.points=b,!r.params.shortTime&&!n){for(var P=[],V=y/1.8,H=12;H<24;++H){var O=V*Math.sin(2*Math.PI*(H/12)),E=V*Math.cos(2*Math.PI*(H/12)),C=y+O+v/2-(v+k),N=y-E-M/2-(g+M),$={left:C,top:N,value:H,style:{"margin-left":C+"px","margin-top":N+"px"}};$.display=H,P.push($)}t.points24=P}t.mode=i.mode,d(),c.css("height",D+"px");var q=e[0].querySelector(".dtp-clock-center"),B=q.offsetWidth/2||7.5,U=q.offsetHeight/2||7.5,R=y/(r.params.shortTime?1.8:2.3),L=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:R+"px",marginTop:y-R-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:L+"px",marginTop:y-L-v+"px"}).addClass(n?"on":""),angular.element(q).css({left:y+v+k-B+"px",marginTop:y-k/2-U+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute(),a=r.params.shortTime?12:24;t.currentValue=n?e.minute():e.hour()%a};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){e!==t.currentValue||r.params.autoOk||r.ok(),n?r.currentDate.minute(e):r.params.shortTime?r.currentDate.hour(r.isPM()?e+12:e):r.currentDate.hour(e),r.currentDate.second(0),r.params.autoOk&&r.ok()},t.pointAvailable=function(t){return n?r.isMinuteAvailable(t.value):r.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),m()})}}}])}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 12d74c2..116d479 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","points24","j24","h24","x24","y24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (val === scope.currentValue) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","points24","j24","h24","x24","y24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 2d0bd40..95a6482 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -1007,7 +1007,8 @@ }); scope.setTime = function (val) { - if (val === scope.currentValue) { + // double click + if (val === scope.currentValue && !picker.params.autoOk) { picker.ok(); } @@ -1022,6 +1023,7 @@ picker.currentDate.minute(val); } picker.currentDate.second(0); + // single click if (picker.params.autoOk) { picker.ok(); } From 6c4d4b62b878d28a07cb108f7665bb1f4fc45f47 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 29 Apr 2017 21:36:32 -0400 Subject: [PATCH 048/226] version 1.6.1 --- README.md | 12 ++++++------ bower.json | 2 +- package.json | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 77d589e..880af6a 100644 --- a/README.md +++ b/README.md @@ -51,15 +51,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 9beb0ab..5621d6a 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.0", + "version": "1.6.1", "keywords": [ "css", "js", diff --git a/package.json b/package.json index 14c2cfe..da26d5c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.0", + "version": "1.6.1", "keywords": [ "css", "js", From 3e466f1853a4b04cab174e41218759691eb859fb Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 29 Apr 2017 23:30:11 -0400 Subject: [PATCH 049/226] #85 example with a normal input and the service --- index.html | 17 ++++++++++++++--- js/demo.js | 11 +++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index d6a8bcf..4bc46c9 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,7 @@ + @@ -159,7 +160,6 @@

Datetime Pickers

-

mdcDateTimeDialog Service

@@ -167,11 +167,22 @@

Datetime Pickers

Date: {{selectedDateTime|date}}

-
-
+
+ +
+
+ + + + + today + +
+
+
diff --git a/js/demo.js b/js/demo.js index df2bf22..b0ec05b 100644 --- a/js/demo.js +++ b/js/demo.js @@ -53,6 +53,17 @@ }); }; + $scope.displayDialogIn = function () { + mdcDateTimeDialog.show({ + currentDate: $scope.selectedDateTimeIn || moment().startOf('day'), + maxDate: $scope.maxDate, + time: false + }) + .then(function (date) { + $scope.selectedDateTimeIn = date; + }); + }; + // Set and change the text direction $scope.txtdir = document.documentElement.dir || 'ltr'; $scope.changeDir = function () { From f8724ed49c6a3c7faa967f08fbe74920699d993b Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 2 May 2017 10:05:16 -0400 Subject: [PATCH 050/226] #9 auto-ok except minutes view --- README.md | 12 +++++----- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 23 +++++++++++-------- package.json | 2 +- 6 files changed, 23 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 880af6a..b0c5dc9 100644 --- a/README.md +++ b/README.md @@ -51,15 +51,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 5621d6a..3a0b85c 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.1", + "version": "1.6.2", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 39ab1be..5e9e827 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),A=x*Math.cos(2*Math.PI*(T/12)),Y=y+w+v/2-(v+k),I=y-A-M/2-(g+M),S={left:Y,top:I,value:n?5*T:T,style:{"margin-left":Y+"px","margin-top":I+"px"}};n?S.display=S.value<10?"0"+S.value:S.value:r.params.shortTime?S.display=0===T?12:T:S.display=T,b.push(S)}if(t.points=b,!r.params.shortTime&&!n){for(var P=[],V=y/1.8,H=12;H<24;++H){var O=V*Math.sin(2*Math.PI*(H/12)),E=V*Math.cos(2*Math.PI*(H/12)),C=y+O+v/2-(v+k),N=y-E-M/2-(g+M),$={left:C,top:N,value:H,style:{"margin-left":C+"px","margin-top":N+"px"}};$.display=H,P.push($)}t.points24=P}t.mode=i.mode,d(),c.css("height",D+"px");var q=e[0].querySelector(".dtp-clock-center"),B=q.offsetWidth/2||7.5,U=q.offsetHeight/2||7.5,R=y/(r.params.shortTime?1.8:2.3),L=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:R+"px",marginTop:y-R-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:L+"px",marginTop:y-L-v+"px"}).addClass(n?"on":""),angular.element(q).css({left:y+v+k-B+"px",marginTop:y-k/2-U+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute(),a=r.params.shortTime?12:24;t.currentValue=n?e.minute():e.hour()%a};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){e!==t.currentValue||r.params.autoOk||r.ok(),n?r.currentDate.minute(e):r.params.shortTime?r.currentDate.hour(r.isPM()?e+12:e):r.currentDate.hour(e),r.currentDate.second(0),r.params.autoOk&&r.ok()},t.pointAvailable=function(t){return n?r.isMinuteAvailable(t.value):r.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),m()})}}}])}(); +!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),A=x*Math.cos(2*Math.PI*(T/12)),Y=y+w+v/2-(v+k),I=y-A-M/2-(g+M),S={left:Y,top:I,value:n?5*T:T,style:{"margin-left":Y+"px","margin-top":I+"px"}};n?S.display=S.value<10?"0"+S.value:S.value:r.params.shortTime?S.display=0===T?12:T:S.display=T,b.push(S)}if(t.points=b,!r.params.shortTime&&!n){for(var P=[],V=y/1.8,H=12;H<24;++H){var O=V*Math.sin(2*Math.PI*(H/12)),E=V*Math.cos(2*Math.PI*(H/12)),C=y+O+v/2-(v+k),N=y-E-M/2-(g+M),$={left:C,top:N,value:H,style:{"margin-left":C+"px","margin-top":N+"px"}};$.display=H,P.push($)}t.points24=P}t.mode=i.mode,d(),c.css("height",D+"px");var q=e[0].querySelector(".dtp-clock-center"),B=q.offsetWidth/2||7.5,U=q.offsetHeight/2||7.5,R=y/(r.params.shortTime?1.8:2.3),L=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:R+"px",marginTop:y-R-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:L+"px",marginTop:y-L-v+"px"}).addClass(n?"on":""),angular.element(q).css({left:y+v+k-B+"px",marginTop:y-k/2-U+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute(),a=r.params.shortTime?12:24;t.currentValue=n?e.minute():e.hour()%a};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){n?(e===t.currentValue&&r.ok(),r.currentDate.minute(e)):(e!==t.currentValue||r.params.autoOk||r.ok(),r.params.shortTime?r.currentDate.hour(r.isPM()?e+12:e):r.currentDate.hour(e),r.params.autoOk&&r.ok()),r.currentDate.second(0)},t.pointAvailable=function(t){return n?r.isMinuteAvailable(t.value):r.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),m()})}}}])}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 116d479..4d9d66a 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","points24","j24","h24","x24","y24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n\r\n if (!minuteMode) {\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n\r\n } else {\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","points24","j24","h24","x24","y24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 95a6482..7190781 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -1007,26 +1007,29 @@ }); scope.setTime = function (val) { - // double click - if (val === scope.currentValue && !picker.params.autoOk) { - picker.ok(); - } - if (!minuteMode) { + // double click + if (val === scope.currentValue && !picker.params.autoOk){ + picker.ok(); + } + if (picker.params.shortTime) { picker.currentDate.hour(picker.isPM() ? (val + 12) : val); } else { picker.currentDate.hour(val); } - + // single click + if (picker.params.autoOk) { + picker.ok(); + } } else { + // double click + if (val === scope.currentValue){ + picker.ok(); + } picker.currentDate.minute(val); } picker.currentDate.second(0); - // single click - if (picker.params.autoOk) { - picker.ok(); - } }; scope.pointAvailable = function (point) { diff --git a/package.json b/package.json index da26d5c..3ea41f9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.1", + "version": "1.6.2", "keywords": [ "css", "js", From c96c9cb1c26eb0e3f82b02f46f656256d1e44aba Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 1 Jun 2017 22:54:51 -0400 Subject: [PATCH 051/226] Change character to increment / decrement --- js/angular-material-datetimepicker.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 7190781..10a56df 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -26,15 +26,15 @@ ' ' + '
' + '
' + - '
' + + '
' + '
{{picker.currentDate.format("MMM") | uppercase}}
' + - '
' + + '
' + '
' + '
{{picker.currentDate.format("DD")}}
' + '
' + - '
' + + '
' + '
{{picker.currentDate.format("YYYY")}}
' + - '
' + + '
' + '
'+ '
' + //start time '
' + From 6cc8def3c9d403cafcf1ecdc5732554450098b12 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 1 Jun 2017 23:00:40 -0400 Subject: [PATCH 052/226] version 1.6.3 --- README.md | 12 +- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- package.json | 12 +- yarn.lock | 422 +++++++++++------- 6 files changed, 278 insertions(+), 174 deletions(-) diff --git a/README.md b/README.md index b0c5dc9..8866176 100644 --- a/README.md +++ b/README.md @@ -51,15 +51,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 3a0b85c..0d5bb3c 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.2", + "version": "1.6.3", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 5e9e827..035e07c 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){var e={date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1};return e}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,r,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if("undefined"!=typeof t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(c){if(c.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){o=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);console.log(r);var s={show:function(s){var c=e.defer(),o=angular.copy(a);for(var l in s)r.indexOf[l]!=-1&&s.hasOwnProperty(l)&&(o=s[l]);var d={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:d,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t?t._d:t;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}};return s}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i="undefined"!=typeof t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if("undefined"!=typeof this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),t===-1&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),t===-1&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case e.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=1920,e=(new Date).getFullYear()+30,a=12*(e-t+1),i=240,n=[],r=0;r6&&(o=0),c.push(o.toString());if(i.week=c,r.maxDate||r.minDate){var l=r.minDate?s(r.minDate):0,d=r.maxDate?s(r.maxDate)+1:a;i.months=n.slice(l,d)}else i.months=n;i.getItemAtIndex=function(e){var a=(e+1)%12||12,i=t+Math.floor(e/12),n=moment(r.currentDate).year(i).month(a);return m(n)},i.topIndex=s(r.currentDate)-i.months[0],e.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),n=r.minDate?s(r.minDate):0,c=s(a,n);i.topIndex!=c&&(i.topIndex=c)}});var m=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=i.week.indexOf(n.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=a.month,s=[];r.days.forEach(function(t,e){s.push(""),t.forEach(function(t,a){if(s.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";s.push(''),s.push(t.format("D")),s.push("")}else s.push(''),s.push(t.format("D")),s.push("");s.push("")}),s.push("")}),i.html(s.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){var t='';return{restrict:"E",template:t,link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=parseInt(a(c,"marginLeft").replace("px",""))||0,f=parseInt(a(c,"marginRight").replace("px",""))||0,D=m-(h+f+u+p);c.css("width",D+"px");for(var v=parseInt(a(l,"paddingLeft").replace("px",""))||0,g=parseInt(a(l,"paddingTop").replace("px",""))||0,k=parseInt(a(c,"marginLeft").replace("px",""))||0,M=parseInt(a(c,"marginTop").replace("px",""))||0,y=D/2,x=y/1.2,b=[],T=0;T<12;++T){var w=x*Math.sin(2*Math.PI*(T/12)),A=x*Math.cos(2*Math.PI*(T/12)),Y=y+w+v/2-(v+k),I=y-A-M/2-(g+M),S={left:Y,top:I,value:n?5*T:T,style:{"margin-left":Y+"px","margin-top":I+"px"}};n?S.display=S.value<10?"0"+S.value:S.value:r.params.shortTime?S.display=0===T?12:T:S.display=T,b.push(S)}if(t.points=b,!r.params.shortTime&&!n){for(var P=[],V=y/1.8,H=12;H<24;++H){var O=V*Math.sin(2*Math.PI*(H/12)),E=V*Math.cos(2*Math.PI*(H/12)),C=y+O+v/2-(v+k),N=y-E-M/2-(g+M),$={left:C,top:N,value:H,style:{"margin-left":C+"px","margin-top":N+"px"}};$.display=H,P.push($)}t.points24=P}t.mode=i.mode,d(),c.css("height",D+"px");var q=e[0].querySelector(".dtp-clock-center"),B=q.offsetWidth/2||7.5,U=q.offsetHeight/2||7.5,R=y/(r.params.shortTime?1.8:2.3),L=y/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:y+1.5*k+"px",height:R+"px",marginTop:y-R-v+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:y+1.5*k+"px",height:L+"px",marginTop:y-L-v+"px"}).addClass(n?"on":""),angular.element(q).css({left:y+v+k-B+"px",marginTop:y-k/2-U+"px"}),o()},o=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=6*(5*Math.round(i/5));l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute(),a=r.params.shortTime?12:24;t.currentValue=n?e.minute():e.hour()%a};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){n?(e===t.currentValue&&r.ok(),r.currentDate.minute(e)):(e!==t.currentValue||r.params.autoOk||r.ok(),r.params.shortTime?r.currentDate.hour(r.isPM()?e+12:e):r.currentDate.hour(e),r.params.autoOk&&r.ok()),r.currentDate.second(0)},t.pointAvailable=function(t){return n?r.isMinuteAvailable(t.value):r.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),m()})}}}])}(); +!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if(void 0!==t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.on("focus",function(c){if(c.preventDefault(),n.blur(),n.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.parent().removeClass("md-input-focused")},function(){o=!1,n.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);return console.log(n),{show:function(s){var c=e.defer();angular.copy(a);for(var o in s)-1!=n.indexOf[o]&&s.hasOwnProperty(o)&&s[o];var l={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:l,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}}}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i=void 0!==t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case e.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),e=[],a=0;a6&&(c=0),s.push(c.toString());if(r.week=s,n.maxDate||n.minDate){var o=n.minDate?i(n.minDate):0,l=n.maxDate?i(n.maxDate)+1:t;r.months=e.slice(o,l)}else r.months=e;r.getItemAtIndex=function(t){var e=(t+1)%12||12,a=1920+Math.floor(t/12),i=moment(n.currentDate).year(a).month(e);return d(i)},r.topIndex=i(n.currentDate)-r.months[0],a.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),s=n.minDate?i(n.minDate):0,c=i(a,s);r.topIndex!=c&&(r.topIndex=c)}});var d=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),i=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=r.week.indexOf(i.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){return{restrict:"E",template:'',link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=m-((parseInt(a(c,"marginLeft").replace("px",""))||0)+(parseInt(a(c,"marginRight").replace("px",""))||0)+u+p);c.css("width",h+"px");for(var f=parseInt(a(l,"paddingLeft").replace("px",""))||0,D=parseInt(a(l,"paddingTop").replace("px",""))||0,v=parseInt(a(c,"marginLeft").replace("px",""))||0,g=parseInt(a(c,"marginTop").replace("px",""))||0,k=h/2,M=k/1.2,x=[],y=0;y<12;++y){var b=k+M*Math.sin(2*Math.PI*(y/12))+f/2-(f+v),T=k-M*Math.cos(2*Math.PI*(y/12))-g/2-(D+g),w={left:b,top:T,value:r?5*y:y,style:{"margin-left":b+"px","margin-top":T+"px"}};r?w.display=w.value<10?"0"+w.value:w.value:n.params.shortTime?w.display=0===y?12:y:w.display=y,x.push(w)}if(t.points=x,!n.params.shortTime&&!r){for(var A=[],Y=k/1.8,I=12;I<24;++I){var S=k+Y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),P=k-Y*Math.cos(2*Math.PI*(I/12))-g/2-(D+g),V={left:S,top:P,value:I,style:{"margin-left":S+"px","margin-top":P+"px"}};V.display=I,A.push(V)}t.points24=A}t.mode=i.mode,d(),c.css("height",h+"px");var H=e[0].querySelector(".dtp-clock-center"),O=H.offsetWidth/2||7.5,E=H.offsetHeight/2||7.5,C=k/(n.params.shortTime?1.8:2.3),N=k/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*v+"px",height:C+"px",marginTop:k-C-f+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*v+"px",height:N+"px",marginTop:k-N-f+"px"}).addClass(r?"on":""),angular.element(H).css({left:k+f+v-O+"px",marginTop:k-v/2-E+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=5*Math.round(i/5)*6;l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute(),a=n.params.shortTime?12:24;t.currentValue=r?e.minute():e.hour()%a};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){r?(e===t.currentValue&&n.ok(),n.currentDate.minute(e)):(e!==t.currentValue||n.params.autoOk||n.ok(),n.params.shortTime?n.currentDate.hour(n.isPM()?e+12:e):n.currentDate.hour(e),n.params.autoOk&&n.ok()),n.currentDate.second(0)},t.pointAvailable=function(t){return r?n.isMinuteAvailable(t.value):n.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),m()})}}}])}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 4d9d66a..814df11 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","default_params","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","service","deferred","defer","params","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","YEAR_MIN","YEAR_MAX","getFullYear","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","style","margin-left","margin-top","display","points24","j24","h24","x24","y24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","deferred","defer","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","left","sin","PI","top","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 3ea41f9..bdb2fe5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.2", + "version": "1.6.3", "keywords": [ "css", "js", @@ -29,16 +29,16 @@ "devDependencies": { "gulp": "^3.9.1", "gulp-bump": "^2.7.0", - "gulp-clean-css": "^3.0.3", + "gulp-clean-css": "^3.4.1", "gulp-filter": "^5.0.0", - "gulp-git": "^2.0.1", + "gulp-git": "^2.4.0", "gulp-git-push": "^1.0.1", "gulp-rename": "^1.2.2", - "gulp-sourcemaps": "^2.4.1", + "gulp-sourcemaps": "^2.6.0", "gulp-tag-version": "^1.3.0", - "gulp-uglify": "^2.0.1", + "gulp-uglify": "^3.0.0", "pump": "^1.0.2", "run-sequence": "^1.2.2", - "yargs": "^7.0.1" + "yargs": "^8.0.1" } } diff --git a/yarn.lock b/yarn.lock index 67c86fe..7574f70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,37 +2,50 @@ # yarn lockfile v1 +"@gulp-sourcemaps/identity-map@1.X": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.1.tgz#cfa23bc5840f9104ce32a65e74db7e7a974bbee1" + dependencies: + acorn "^5.0.3" + css "^2.2.1" + normalize-path "^2.1.1" + source-map "^0.5.6" + through2 "^2.0.3" + +"@gulp-sourcemaps/map-sources@1.X": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" + dependencies: + normalize-path "^2.0.1" + through2 "^2.0.3" + acorn@4.X: version "4.0.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" +acorn@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.5.10: - version "1.6.2" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.2.tgz#def2a8b9ede53b4b6e234c25f5c64e4b4385df15" +angular-animate@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.4.tgz#d3eb906d39834f2dfbdd982e6b8d7a3b4d9001d2" -angular-aria@^1.5.10: - version "1.6.2" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.2.tgz#c5047cae595ec61d24490b6b34b4452e1ecdae1f" +angular-aria@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.4.tgz#c8683666ace196668f68e7220811bdcfc9e106e4" -angular-material@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.3.tgz#b466d53aaa42c1555766a1ded53a28baeb7b2fe6" +angular-material@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.4.tgz#27de35646f54ccd320080af0c708e1b438af87f6" -angular@^1.5.10: - version "1.6.2" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.2.tgz#d0b677242ac4bf9ae81424297c6320973af4bb5a" +angular@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.4.tgz#03b7b15c01a0802d7e2cf593240e604054dc77fb" ansi-cyan@^0.1.1: version "0.1.1" @@ -125,10 +138,6 @@ arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" -async@~0.2.6: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - atob@~1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" @@ -178,24 +187,13 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" chalk@*, chalk@^1.0.0, chalk@^1.1.1: version "1.1.3" @@ -217,20 +215,12 @@ chalk@^0.5.0: strip-ansi "^0.3.0" supports-color "^0.2.0" -clean-css@^4.0.7: - version "4.0.8" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6" +clean-css@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.3.tgz#07cfe8980edb20d455ddc23aadcf1e04c6e509ce" dependencies: source-map "0.5.x" -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -271,6 +261,12 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +commander@~2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -283,7 +279,14 @@ core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -css@2.X: +cross-spawn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +css@2.X, css@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" dependencies: @@ -309,12 +312,11 @@ dateformat@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" -debug-fabulous@0.0.X: - version "0.0.4" - resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.0.4.tgz#fa071c5d87484685424807421ca4b16b0b1a0763" +debug-fabulous@0.1.X: + version "0.1.0" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.1.0.tgz#ad0ea07a5d519324fb55842a8f34ee59c7f8ff6c" dependencies: debug "2.X" - lazy-debug-legacy "0.0.X" object-assign "4.1.0" debug@2.X: @@ -323,7 +325,7 @@ debug@2.X: dependencies: ms "0.7.2" -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: +decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -375,6 +377,18 @@ escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +execa@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" + dependencies: + cross-spawn "^4.0.0" + get-stream "^2.2.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -441,6 +455,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + findup-sync@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" @@ -504,6 +524,13 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -601,6 +628,10 @@ graceful-fs@~1.2.0: version "1.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + gulp-bump@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/gulp-bump/-/gulp-bump-2.7.0.tgz#4c3750bce93c5d816fe9a154e6619dd509a852d8" @@ -611,14 +642,14 @@ gulp-bump@^2.7.0: semver "^5.3.0" through2 "^2.0.1" -gulp-clean-css@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.0.3.tgz#dcd6767413d51a9de9e4bc47b8ae7e02b43b1c4a" +gulp-clean-css@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.4.1.tgz#b61a449ea056c038b8dcdc857041b2382b09b0d5" dependencies: - clean-css "^4.0.7" - gulp-util "^3.0.8" - through2 "^2.0.3" - vinyl-sourcemaps-apply "^0.2.1" + clean-css "4.1.3" + gulp-util "3.0.8" + through2 "2.0.3" + vinyl-sourcemaps-apply "0.2.1" gulp-filter@^5.0.0: version "5.0.0" @@ -646,13 +677,13 @@ gulp-git@^1.7.1: require-dir "^0.1.0" through2 "^0.6.5" -gulp-git@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.0.1.tgz#7ee8e5088a0d293371740563f36b20cfd2b408c7" +gulp-git@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.4.0.tgz#96e4ceebfa53385c5f266c15781e821f099e3585" dependencies: any-shell-escape "^0.1.1" - gulp-util "^3.0.6" - require-dir "^0.3.1" + gulp-util "^3.0.8" + require-dir "^0.3.2" strip-bom-stream "^3.0.0" through2 "^2.0.3" vinyl "^2.0.1" @@ -670,18 +701,20 @@ gulp-rename@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" -gulp-sourcemaps@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.4.1.tgz#8f65dc5c0d07b2fd5c88bc60ec7f13e56716bf74" +gulp-sourcemaps@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.0.tgz#7ccce899a8a3bfca1593a3348d0fbf41dd3f51e5" dependencies: + "@gulp-sourcemaps/identity-map" "1.X" + "@gulp-sourcemaps/map-sources" "1.X" acorn "4.X" convert-source-map "1.X" css "2.X" - debug-fabulous "0.0.X" + debug-fabulous "0.1.X" detect-newline "2.X" graceful-fs "4.X" source-map "0.X" - strip-bom "3.X" + strip-bom-string "1.X" through2 "2.X" vinyl "1.X" @@ -693,20 +726,19 @@ gulp-tag-version@^1.3.0: gulp-util "~2.2.14" map-stream "~0.1.0" -gulp-uglify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-2.0.1.tgz#e8cfb831014fc9ff2e055e33785861830d499365" +gulp-uglify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.0.tgz#0df0331d72a0d302e3e37e109485dddf33c6d1ca" dependencies: gulplog "^1.0.0" has-gulplog "^0.1.0" lodash "^4.13.1" make-error-cause "^1.1.1" through2 "^2.0.0" - uglify-js "2.7.5" - uglify-save-license "^0.4.1" + uglify-js "^3.0.5" vinyl-sourcemaps-apply "^0.2.0" -gulp-util@*, gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7, gulp-util@^3.0.8: +gulp-util@*, gulp-util@3.0.8, gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7, gulp-util@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" dependencies: @@ -878,6 +910,10 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -950,14 +986,6 @@ kind-of@^3.0.2: dependencies: is-buffer "^1.0.2" -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lazy-debug-legacy@0.0.X: - version "0.0.1" - resolved "https://registry.yarnpkg.com/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz#537716c0776e4cf79e3ed1b621f7658c2911b1b1" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -988,6 +1016,22 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" @@ -1196,10 +1240,6 @@ lodash@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -1211,6 +1251,13 @@ lru-cache@2: version "2.7.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" +lru-cache@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + make-error-cause@^1.1.1: version "1.2.2" resolved "https://registry.yarnpkg.com/make-error-cause/-/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d" @@ -1233,6 +1280,12 @@ map-stream@^0.1.0, map-stream@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + meow@^3.3.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -1266,6 +1319,10 @@ micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + minimatch@^2.0.1: version "2.0.10" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" @@ -1303,9 +1360,9 @@ mkdirp@^0.5.0: dependencies: minimist "0.0.8" -moment@^2.17.1: - version "2.17.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.17.1.tgz#fed9506063f36b10f066c8b59a144d7faebe1d82" +moment@^2.18.1: + version "2.18.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" ms@0.7.2: version "0.7.2" @@ -1343,6 +1400,18 @@ normalize-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -1392,11 +1461,27 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" +os-locale@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4" dependencies: + execa "^0.5.0" lcid "^1.0.0" + mem "^1.1.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" parse-filepath@^1.0.1: version "1.0.1" @@ -1431,6 +1516,14 @@ path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" @@ -1449,6 +1542,12 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -1492,6 +1591,10 @@ process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + pump@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" @@ -1513,6 +1616,13 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -1521,6 +1631,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -1601,9 +1719,9 @@ require-dir@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-0.1.0.tgz#81e01e299faf5b74c34b6594f8e5add5985ddec5" -require-dir@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-0.3.1.tgz#b5a8e28bae0343bb0d0cc38ab1f531e1931b264a" +require-dir@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-0.3.2.tgz#c1d5c75e9fbffde9f2e6b33e383db4f594b5a6a9" require-directory@^2.1.1: version "2.1.1" @@ -1628,12 +1746,6 @@ resolve@^1.1.6, resolve@^1.1.7: version "1.2.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - run-sequence@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-1.2.2.tgz#5095a0bebe98733b0140bd08dd80ec030ddacdeb" @@ -1678,7 +1790,7 @@ source-map-url@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" -source-map@0.5.x, source-map@0.X, source-map@^0.5.1, source-map@~0.5.1: +source-map@0.5.x, source-map@0.X, source-map@^0.5.1, source-map@^0.5.6, source-map@~0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -1716,7 +1828,7 @@ streamfilter@^1.0.5: dependencies: readable-stream "^2.0.2" -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" dependencies: @@ -1724,6 +1836,13 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +string-width@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^3.0.0" + string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -1753,9 +1872,9 @@ strip-bom-stream@^3.0.0: first-chunk-stream "^2.0.0" strip-bom-buf "^1.0.0" -strip-bom@3.X: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +strip-bom-string@1.X: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" strip-bom@^1.0.0: version "1.0.0" @@ -1770,6 +1889,14 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -1784,7 +1911,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -through2@2.X, through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: +through2@2.0.3, through2@2.X, through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" dependencies: @@ -1826,22 +1953,12 @@ trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" -uglify-js@2.7.5: - version "2.7.5" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" +uglify-js@^3.0.5: + version "3.0.15" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.15.tgz#aacb323a846b234602270dead8a32441a8806f42" dependencies: - async "~0.2.6" + commander "~2.9.0" source-map "~0.5.1" - uglify-to-browserify "~1.0.0" - yargs "~3.10.0" - -uglify-save-license@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/uglify-save-license/-/uglify-save-license-0.4.1.tgz#95726c17cc6fd171c3617e3bf4d8d82aa8c4cce1" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" unc-path-regex@^0.1.0: version "0.1.2" @@ -1889,7 +2006,7 @@ vinyl-fs@^0.3.0: through2 "^0.6.1" vinyl "^0.4.0" -vinyl-sourcemaps-apply@^0.2.0, vinyl-sourcemaps-apply@^0.2.1: +vinyl-sourcemaps-apply@0.2.1, vinyl-sourcemaps-apply@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" dependencies: @@ -1936,24 +2053,16 @@ vinyl@^2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.2.12: +which@^1.2.12, which@^1.2.9: version "1.2.12" resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" dependencies: isexe "^1.1.1" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -1983,35 +2092,30 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" +yallist@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" dependencies: - camelcase "^3.0.0" + camelcase "^4.1.0" -yargs@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.0.1.tgz#7b083da14f9bd9c0ec21477030658f120d995351" +yargs@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.1.tgz#420ef75e840c1457a80adcca9bc6fa3849de51aa" dependencies: - camelcase "^3.0.0" + camelcase "^4.1.0" cliui "^3.2.0" decamelize "^1.1.1" get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" + string-width "^2.0.0" + which-module "^2.0.0" y18n "^3.2.1" - yargs-parser "^5.0.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" + yargs-parser "^7.0.0" From fec358c45121017e28bc15987c458299fd495604 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 7 Jun 2017 23:01:13 -0400 Subject: [PATCH 053/226] #109 fix not working with angular less than 1.5 --- README.md | 12 +- bower.json | 6 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 165 +++++++++--------- package.json | 12 +- yarn.lock | 6 +- 7 files changed, 103 insertions(+), 102 deletions(-) diff --git a/README.md b/README.md index 8866176..a3cf674 100644 --- a/README.md +++ b/README.md @@ -51,15 +51,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 0d5bb3c..6ea84f8 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.3", + "version": "1.6.4", "keywords": [ "css", "js", @@ -28,7 +28,7 @@ "test-infra" ], "dependencies": { - "moment": "^2.17.1", - "angular-material": "^1.1.1" + "moment": "^2.18.1", + "angular-material": "^1.1.4" } } diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 035e07c..90e2979 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,n,s,c){var o=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),c&&c.$formatters.push(function(t){if(void 0!==t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.on("focus",function(c){if(c.preventDefault(),n.blur(),n.parent().removeClass("md-input-focused"),!o){o=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,o=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.parent().removeClass("md-input-focused")},function(){o=!1,n.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);return console.log(n),{show:function(s){var c=e.defer();angular.copy(a);for(var o in s)-1!=n.indexOf[o]&&s.hasOwnProperty(o)&&s[o];var l={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:l,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}}}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i=void 0!==t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case e.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),e=[],a=0;a6&&(c=0),s.push(c.toString());if(r.week=s,n.maxDate||n.minDate){var o=n.minDate?i(n.minDate):0,l=n.maxDate?i(n.maxDate)+1:t;r.months=e.slice(o,l)}else r.months=e;r.getItemAtIndex=function(t){var e=(t+1)%12||12,a=1920+Math.floor(t/12),i=moment(n.currentDate).year(a).month(e);return d(i)},r.topIndex=i(n.currentDate)-r.months[0],a.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),s=n.minDate?i(n.minDate):0,c=i(a,s);r.topIndex!=c&&(r.topIndex=c)}});var d=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),i=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var c=r.week.indexOf(i.toString());if(c>0)for(var o=0;o
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){return{restrict:"E",template:'',link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=m-((parseInt(a(c,"marginLeft").replace("px",""))||0)+(parseInt(a(c,"marginRight").replace("px",""))||0)+u+p);c.css("width",h+"px");for(var f=parseInt(a(l,"paddingLeft").replace("px",""))||0,D=parseInt(a(l,"paddingTop").replace("px",""))||0,v=parseInt(a(c,"marginLeft").replace("px",""))||0,g=parseInt(a(c,"marginTop").replace("px",""))||0,k=h/2,M=k/1.2,x=[],y=0;y<12;++y){var b=k+M*Math.sin(2*Math.PI*(y/12))+f/2-(f+v),T=k-M*Math.cos(2*Math.PI*(y/12))-g/2-(D+g),w={left:b,top:T,value:r?5*y:y,style:{"margin-left":b+"px","margin-top":T+"px"}};r?w.display=w.value<10?"0"+w.value:w.value:n.params.shortTime?w.display=0===y?12:y:w.display=y,x.push(w)}if(t.points=x,!n.params.shortTime&&!r){for(var A=[],Y=k/1.8,I=12;I<24;++I){var S=k+Y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),P=k-Y*Math.cos(2*Math.PI*(I/12))-g/2-(D+g),V={left:S,top:P,value:I,style:{"margin-left":S+"px","margin-top":P+"px"}};V.display=I,A.push(V)}t.points24=A}t.mode=i.mode,d(),c.css("height",h+"px");var H=e[0].querySelector(".dtp-clock-center"),O=H.offsetWidth/2||7.5,E=H.offsetHeight/2||7.5,C=k/(n.params.shortTime?1.8:2.3),N=k/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*v+"px",height:C+"px",marginTop:k-C-f+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*v+"px",height:N+"px",marginTop:k-N-f+"px"}).addClass(r?"on":""),angular.element(H).css({left:k+f+v-O+"px",marginTop:k-v/2-E+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=5*Math.round(i/5)*6;l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute(),a=n.params.shortTime?12:24;t.currentValue=r?e.minute():e.hour()%a};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){r?(e===t.currentValue&&n.ok(),n.currentDate.minute(e)):(e!==t.currentValue||n.params.autoOk||n.ok(),n.params.shortTime?n.currentDate.hour(n.isPM()?e+12:e):n.currentDate.hour(e),n.params.autoOk&&n.ok()),n.currentDate.second(0)},t.pointAvailable=function(t){return r?n.isMinuteAvailable(t.value):n.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),m()})}}}])}(); +!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,n,s,o){var c=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),o&&o.$formatters.push(function(t){if(void 0!==t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.on("focus",function(o){if(o.preventDefault(),n.blur(),n.parent().removeClass("md-input-focused"),!c){c=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,c=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.parent().removeClass("md-input-focused")},function(){c=!1,n.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);return console.log(n),{show:function(s){var o=e.defer();angular.copy(a);for(var c in s)-1!=n.indexOf[c]&&s.hasOwnProperty(c)&&s[c];var l={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:l,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;o.resolve(t?t._d:t)},function(){o.reject()}),o.promise}}}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i=void 0!==t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case e.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),e=[],a=0;a6&&(s=0),a.push(s.toString());if(n.week=a,r.maxDate||r.minDate){var o=r.minDate?i(r.minDate):0,c=r.maxDate?i(r.maxDate)+1:t;n.months=e.slice(o,c)}else n.months=e;n.topIndex=i(r.currentDate)-n.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),n.getItemAtIndex=function(t){var e=(t+1)%12||12,a=1920+Math.floor(t/12),i=moment(r.currentDate).year(a).month(e);return s(i)},a.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),s=r.minDate?i(r.minDate):0,o=i(a,s);n.topIndex!=o&&(n.topIndex=o)}});var s=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),i=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var o=n.week.indexOf(i.toString());if(o>0)for(var c=0;c
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){return{restrict:"E",template:'',link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),o=function(){var o=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=m-((parseInt(a(o,"marginLeft").replace("px",""))||0)+(parseInt(a(o,"marginRight").replace("px",""))||0)+u+p);o.css("width",h+"px");for(var f=parseInt(a(l,"paddingLeft").replace("px",""))||0,D=parseInt(a(l,"paddingTop").replace("px",""))||0,v=parseInt(a(o,"marginLeft").replace("px",""))||0,g=parseInt(a(o,"marginTop").replace("px",""))||0,k=h/2,M=k/1.2,x=[],y=0;y<12;++y){var b=k+M*Math.sin(2*Math.PI*(y/12))+f/2-(f+v),T=k-M*Math.cos(2*Math.PI*(y/12))-g/2-(D+g),w={left:b,top:T,value:r?5*y:y,style:{"margin-left":b+"px","margin-top":T+"px"}};r?w.display=w.value<10?"0"+w.value:w.value:n.params.shortTime?w.display=0===y?12:y:w.display=y,x.push(w)}if(t.points=x,!n.params.shortTime&&!r){for(var A=[],Y=k/1.8,I=12;I<24;++I){var S=k+Y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),P=k-Y*Math.cos(2*Math.PI*(I/12))-g/2-(D+g),V={left:S,top:P,value:I,style:{"margin-left":S+"px","margin-top":P+"px"}};V.display=I,A.push(V)}t.points24=A}t.mode=i.mode,d(),o.css("height",h+"px");var H=e[0].querySelector(".dtp-clock-center"),O=H.offsetWidth/2||7.5,E=H.offsetHeight/2||7.5,C=k/(n.params.shortTime?1.8:2.3),N=k/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*v+"px",height:C+"px",marginTop:k-C-f+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*v+"px",height:N+"px",marginTop:k-N-f+"px"}).addClass(r?"on":""),angular.element(H).css({left:k+f+v-O+"px",marginTop:k-v/2-E+"px"}),c()},c=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=5*Math.round(i/5)*6;l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute(),a=n.params.shortTime?12:24;t.currentValue=r?e.minute():e.hour()%a};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),c()}),t.setTime=function(e){r?(e===t.currentValue&&n.ok(),n.currentDate.minute(e)):(e!==t.currentValue||n.params.autoOk||n.ok(),n.params.shortTime?n.currentDate.hour(n.isPM()?e+12:e):n.currentDate.hour(e),n.params.autoOk&&n.ok()),n.currentDate.second(0)},t.pointAvailable=function(t){return r?n.isMinuteAvailable(t.value):n.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){o(),m()})}}}])}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 814df11..6a4b929 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","deferred","defer","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","$onInit","calendar","days","toString","week","high","months","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","left","sin","PI","top","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n this.$onInit = function () {\r\n var calendar = this,\r\n picker = this.picker,\r\n days = [];\r\n\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n\r\n calendar.week = days;\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","deferred","defer","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","left","sin","PI","top","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 10a56df..7e0b041 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -639,19 +639,20 @@ bindToController: true, controllerAs: 'cal', controller: ['$scope', function ($scope) { + var calendar = this, picker; + this.$onInit = function () { - var calendar = this, - picker = this.picker, - days = []; + picker = this.picker; + var days = []; for (var i = picker.params.weekStart; days.length < 7; i++) { if (i > 6) { i = 0; } days.push(i.toString()); } - calendar.week = days; + if (!picker.maxDate && !picker.minDate) { calendar.months = MONTHS; } else { @@ -660,96 +661,100 @@ calendar.months = MONTHS.slice(low, high); } - calendar.getItemAtIndex = function (index) { - var month = ((index + 1) % 12) || 12; - var year = YEAR_MIN + Math.floor(index / 12); - var monthObj = moment(picker.currentDate).year(year).month(month); - return generateMonthCalendar(monthObj); - }; - calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0]; + }; - $scope.$watch(function () { - return picker.currentDate ? picker.currentDate.format('YYYY-MM') : ''; - }, function (val2, val1) { - if (val2 != val1) { - var nDate = moment(val2, 'YYYY-MM'); - var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0; - var index = currentMonthIndex(nDate, low); - if (calendar.topIndex != index) { - calendar.topIndex = index; - } + if (angular.version.major === 1 && angular.version.minor < 5) { + this.$onInit(); + } + + calendar.getItemAtIndex = function (index) { + var month = ((index + 1) % 12) || 12; + var year = YEAR_MIN + Math.floor(index / 12); + var monthObj = moment(picker.currentDate).year(year).month(month); + return generateMonthCalendar(monthObj); + }; + + $scope.$watch(function () { + return picker.currentDate ? picker.currentDate.format('YYYY-MM') : ''; + }, function (val2, val1) { + if (val2 != val1) { + var nDate = moment(val2, 'YYYY-MM'); + var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0; + var index = currentMonthIndex(nDate, low); + if (calendar.topIndex != index) { + calendar.topIndex = index; } - }); + } + }); - var generateMonthCalendar = function (date) { - var month = {}; - if (date !== null) { - month.name = date.format('MMMM YYYY'); - var startOfMonth = moment(date).locale(picker.params.lang).startOf('month') - .hour(date.hour()) - .minute(date.minute()); - var iNumDay = startOfMonth.format('d'); - month.days = []; - for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) { - if (i === startOfMonth.date()) { - var iWeek = calendar.week.indexOf(iNumDay.toString()); - if (iWeek > 0) { - for (var x = 0; x < iWeek; x++) { - month.days.push(0); - } + var generateMonthCalendar = function (date) { + var month = {}; + if (date !== null) { + month.name = date.format('MMMM YYYY'); + var startOfMonth = moment(date).locale(picker.params.lang).startOf('month') + .hour(date.hour()) + .minute(date.minute()); + var iNumDay = startOfMonth.format('d'); + month.days = []; + for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) { + if (i === startOfMonth.date()) { + var iWeek = calendar.week.indexOf(iNumDay.toString()); + if (iWeek > 0) { + for (var x = 0; x < iWeek; x++) { + month.days.push(0); } } - month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i)); - } - - var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek); - for (var j = 0; j < slices; j++) { - daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek)); } - month.days = daysTmp; - return month; + month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i)); } - }; - - calendar.toDay = function (i) { - return moment(parseInt(i), "d") - .locale(picker.params.lang) - .format("dd") - .substring(0, 1); - }; - - calendar.isInRange = function (date) { - return picker.isAfterMinDate(moment(date), false, false) && - picker.isBeforeMaxDate(moment(date), false, false) && - picker.isInDisableDates(moment(date)); - }; - - calendar.selectDate = function (date) { - if (date) { - if (calendar.isSelectedDay(date)) { - return picker.ok(); - } - picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute())); - if (picker.params.autoOk) { - picker.ok(); - } + var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek); + for (var j = 0; j < slices; j++) { + daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek)); } - }; + month.days = daysTmp; + return month; + } + + }; - calendar.isSelectedDay = function (m) { - return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year(); - }; + calendar.toDay = function (i) { + return moment(parseInt(i), "d") + .locale(picker.params.lang) + .format("dd") + .substring(0, 1); + }; + + calendar.isInRange = function (date) { + return picker.isAfterMinDate(moment(date), false, false) && + picker.isBeforeMaxDate(moment(date), false, false) && + picker.isInDisableDates(moment(date)); + }; - calendar.isDateOfTheDay = function (m) { - var today = calendar.picker.options.showTodaysDate; - if (!today) { - return false; + calendar.selectDate = function (date) { + if (date) { + if (calendar.isSelectedDay(date)) { + return picker.ok(); + } + picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute())); + if (picker.params.autoOk) { + picker.ok(); } + } + }; + + calendar.isSelectedDay = function (m) { + return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year(); + }; + + calendar.isDateOfTheDay = function (m) { + var today = calendar.picker.options.showTodaysDate; + if (!today) { + return false; + } - return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year(); - }; + return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year(); }; }], template: diff --git a/package.json b/package.json index bdb2fe5..a388c79 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.3", + "version": "1.6.4", "keywords": [ "css", "js", @@ -16,11 +16,11 @@ "homepage": "https://beenote.github.io/angular-material-datetimepicker/", "main": "js/angular-material-datetimepicker.js", "dependencies": { - "angular": "^1.5.10", - "angular-animate": "^1.5.10", - "angular-aria": "^1.5.10", - "angular-material": "^1.1.1", - "moment": "^2.17.1" + "angular": "^1.6.4", + "angular-animate": "^1.6.4", + "angular-aria": "^1.6.4", + "angular-material": "^1.1.4", + "moment": "^2.18.1" }, "repository": { "type": "git", diff --git a/yarn.lock b/yarn.lock index 7574f70..def81d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1396,11 +1396,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" - -normalize-path@^2.1.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: From 1ba46bfa3b02f909394980fbf26bbd812ecf2d06 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 7 Jun 2017 23:12:59 -0400 Subject: [PATCH 054/226] readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3cf674..a879734 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Originally designed for Bootstrap Material, this has been modified to work with | 2017-02-27 | hexadecy | Can hide minutes view, Month next and prev buttons | | 2017-02-22 | hexadecy | Fix for rtl website | | 2017-02-15 | hexadecy | Fix inputs are not bluring after selection is made | -| 2017-01-30 | hexadecy | Add support only for angular 1.5.x - 1.6.x ($onInit) | +| 2017-01-30 | hexadecy | Add support for angular 1.6.x | | 2015-11-12 | logbon72 | Adapted plugin for Angular Material | ### Dependencies From 272179bf63fcf0781d37bef19e51b1ea63f0083d Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 22 Jun 2017 12:30:23 -0400 Subject: [PATCH 055/226] Today nearest 5 minutes --- js/angular-material-datetimepicker.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 7e0b041..537c74e 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -509,7 +509,12 @@ } }, today: function () { - this.selectDate(Date.now()); + var date = moment(); + var minutes = (5 * Math.round(date.minute() / 5)); + if (minutes >= 60) { + minutes = 55; //always push down + } + this.selectDate(moment(date).minutes(minutes)); }, ok: function () { switch (this.currentView) { From 46dd6ebc790fdfc052383b52982c271e3c231dfa Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 22 Jun 2017 12:33:29 -0400 Subject: [PATCH 056/226] version 1.6.5 --- README.md | 12 ++++++------ bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a879734..e5585c9 100644 --- a/README.md +++ b/README.md @@ -51,15 +51,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 6ea84f8..2d45bc8 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.4", + "version": "1.6.5", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 90e2979..0b65d3c 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,n,s,o){var c=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),o&&o.$formatters.push(function(t){if(void 0!==t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),n.on("focus",function(o){if(o.preventDefault(),n.blur(),n.parent().removeClass("md-input-focused"),!c){c=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:r,controllerAs:"picker",locals:u,openFrom:n,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,c=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),n.parent().removeClass("md-input-focused")},function(){c=!1,n.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var n=Object.keys(a);return console.log(n),{show:function(s){var o=e.defer();angular.copy(a);for(var c in s)-1!=n.indexOf[c]&&s.hasOwnProperty(c)&&s[c];var l={options:s};return t.show({template:i,controller:r,controllerAs:"picker",locals:l,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;o.resolve(t?t._d:t)},function(){o.reject()}),o.promise}}}]);var r=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i=void 0!==t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var r=e.getTime();i=moment(r,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=moment(this.minDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))>=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))>=parseInt(r.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=moment(this.maxDate),n=moment(t);e||a||(r.hour(0),r.minute(0),n.hour(0),n.minute(0)),r.second(0),n.second(0),r.millisecond(0),n.millisecond(0),a?i=parseInt(n.format("X"))<=parseInt(r.format("X")):(n.minute(0),r.minute(0),i=parseInt(n.format("X"))<=parseInt(r.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){this.selectDate(Date.now())},ok:function(){switch(this.currentView){case e.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case e.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),e=[],a=0;a6&&(s=0),a.push(s.toString());if(n.week=a,r.maxDate||r.minDate){var o=r.minDate?i(r.minDate):0,c=r.maxDate?i(r.maxDate)+1:t;n.months=e.slice(o,c)}else n.months=e;n.topIndex=i(r.currentDate)-n.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),n.getItemAtIndex=function(t){var e=(t+1)%12||12,a=1920+Math.floor(t/12),i=moment(r.currentDate).year(a).month(e);return s(i)},a.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),s=r.minDate?i(r.minDate):0,o=i(a,s);n.topIndex!=o&&(n.topIndex=o)}});var s=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),i=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var o=n.week.indexOf(i.toString());if(o>0)for(var c=0;c
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){return{restrict:"E",template:'',link:function(t,e,i){var r="minutes"===i.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),o=function(){var o=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=m-((parseInt(a(o,"marginLeft").replace("px",""))||0)+(parseInt(a(o,"marginRight").replace("px",""))||0)+u+p);o.css("width",h+"px");for(var f=parseInt(a(l,"paddingLeft").replace("px",""))||0,D=parseInt(a(l,"paddingTop").replace("px",""))||0,v=parseInt(a(o,"marginLeft").replace("px",""))||0,g=parseInt(a(o,"marginTop").replace("px",""))||0,k=h/2,M=k/1.2,x=[],y=0;y<12;++y){var b=k+M*Math.sin(2*Math.PI*(y/12))+f/2-(f+v),T=k-M*Math.cos(2*Math.PI*(y/12))-g/2-(D+g),w={left:b,top:T,value:r?5*y:y,style:{"margin-left":b+"px","margin-top":T+"px"}};r?w.display=w.value<10?"0"+w.value:w.value:n.params.shortTime?w.display=0===y?12:y:w.display=y,x.push(w)}if(t.points=x,!n.params.shortTime&&!r){for(var A=[],Y=k/1.8,I=12;I<24;++I){var S=k+Y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),P=k-Y*Math.cos(2*Math.PI*(I/12))-g/2-(D+g),V={left:S,top:P,value:I,style:{"margin-left":S+"px","margin-top":P+"px"}};V.display=I,A.push(V)}t.points24=A}t.mode=i.mode,d(),o.css("height",h+"px");var H=e[0].querySelector(".dtp-clock-center"),O=H.offsetWidth/2||7.5,E=H.offsetHeight/2||7.5,C=k/(n.params.shortTime?1.8:2.3),N=k/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*v+"px",height:C+"px",marginTop:k-C-f+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*v+"px",height:N+"px",marginTop:k-N-f+"px"}).addClass(r?"on":""),angular.element(H).css({left:k+f+v-O+"px",marginTop:k-v/2-E+"px"}),c()},c=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=5*Math.round(i/5)*6;l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute(),a=n.params.shortTime?12:24;t.currentValue=r?e.minute():e.hour()%a};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),c()}),t.setTime=function(e){r?(e===t.currentValue&&n.ok(),n.currentDate.minute(e)):(e!==t.currentValue||n.params.autoOk||n.ok(),n.params.shortTime?n.currentDate.hour(n.isPM()?e+12:e):n.currentDate.hour(e),n.params.autoOk&&n.ok()),n.currentDate.second(0)},t.pointAvailable=function(t){return r?n.isMinuteAvailable(t.value):n.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){o(),m()})}}}])}(); +!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,r,s,o){var c=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),o&&o.$formatters.push(function(t){if(void 0!==t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(o){if(o.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!c){c=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,c=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){c=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);return console.log(r),{show:function(s){var o=e.defer();angular.copy(a);for(var c in s)-1!=r.indexOf[c]&&s.hasOwnProperty(c)&&s[c];var l={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:l,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;o.resolve(t?t._d:t)},function(){o.reject()}),o.promise}}}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i=void 0!==t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=moment(),e=5*Math.round(t.minute()/5);e>=60&&(e=55),this.selectDate(moment(t).minutes(e))},ok:function(){switch(this.currentView){case e.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case e.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),e=[],a=0;a6&&(s=0),a.push(s.toString());if(r.week=a,n.maxDate||n.minDate){var o=n.minDate?i(n.minDate):0,c=n.maxDate?i(n.maxDate)+1:t;r.months=e.slice(o,c)}else r.months=e;r.topIndex=i(n.currentDate)-r.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),r.getItemAtIndex=function(t){var e=(t+1)%12||12,a=1920+Math.floor(t/12),i=moment(n.currentDate).year(a).month(e);return s(i)},a.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),s=n.minDate?i(n.minDate):0,o=i(a,s);r.topIndex!=o&&(r.topIndex=o)}});var s=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),i=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var o=r.week.indexOf(i.toString());if(o>0)for(var c=0;c
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(t,e){r.push(""),t.forEach(function(t,a){if(r.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";r.push(''),r.push(t.format("D")),r.push("")}else r.push(''),r.push(t.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){return{restrict:"E",template:'',link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),o=function(){var o=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=m-((parseInt(a(o,"marginLeft").replace("px",""))||0)+(parseInt(a(o,"marginRight").replace("px",""))||0)+u+p);o.css("width",h+"px");for(var f=parseInt(a(l,"paddingLeft").replace("px",""))||0,D=parseInt(a(l,"paddingTop").replace("px",""))||0,v=parseInt(a(o,"marginLeft").replace("px",""))||0,g=parseInt(a(o,"marginTop").replace("px",""))||0,k=h/2,M=k/1.2,x=[],y=0;y<12;++y){var b=k+M*Math.sin(2*Math.PI*(y/12))+f/2-(f+v),T=k-M*Math.cos(2*Math.PI*(y/12))-g/2-(D+g),A={left:b,top:T,value:n?5*y:y,style:{"margin-left":b+"px","margin-top":T+"px"}};n?A.display=A.value<10?"0"+A.value:A.value:r.params.shortTime?A.display=0===y?12:y:A.display=y,x.push(A)}if(t.points=x,!r.params.shortTime&&!n){for(var w=[],Y=k/1.8,I=12;I<24;++I){var S=k+Y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),P=k-Y*Math.cos(2*Math.PI*(I/12))-g/2-(D+g),V={left:S,top:P,value:I,style:{"margin-left":S+"px","margin-top":P+"px"}};V.display=I,w.push(V)}t.points24=w}t.mode=i.mode,d(),o.css("height",h+"px");var H=e[0].querySelector(".dtp-clock-center"),O=H.offsetWidth/2||7.5,E=H.offsetHeight/2||7.5,C=k/(r.params.shortTime?1.8:2.3),N=k/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*v+"px",height:C+"px",marginTop:k-C-f+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*v+"px",height:N+"px",marginTop:k-N-f+"px"}).addClass(n?"on":""),angular.element(H).css({left:k+f+v-O+"px",marginTop:k-v/2-E+"px"}),c()},c=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=5*Math.round(i/5)*6;l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute(),a=r.params.shortTime?12:24;t.currentValue=n?e.minute():e.hour()%a};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),c()}),t.setTime=function(e){n?(e===t.currentValue&&r.ok(),r.currentDate.minute(e)):(e!==t.currentValue||r.params.autoOk||r.ok(),r.params.shortTime?r.currentDate.hour(r.isPM()?e+12:e):r.currentDate.hour(e),r.params.autoOk&&r.ok()),r.currentDate.second(0)},t.pointAvailable=function(t){return n?r.isMinuteAvailable(t.value):r.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){o(),m()})}}}])}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 6a4b929..e087cc0 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","deferred","defer","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","Date","now","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","left","sin","PI","top","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n this.selectDate(Date.now());\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","deferred","defer","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","left","sin","PI","top","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var date = moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index a388c79..cf4eebf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.4", + "version": "1.6.5", "keywords": [ "css", "js", From 5325085e6186de8f5ff2d49312de116e58e8118e Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 23 Jun 2017 23:28:01 -0400 Subject: [PATCH 057/226] merge PR #99 compatible require --- index.html | 2 +- js/angular-material-datetimepicker.js | 13 ++++++++++++- js/demo.js | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 4bc46c9..ae99060 100644 --- a/index.html +++ b/index.html @@ -175,7 +175,7 @@

Datetime Pickers

- + today diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 537c74e..fa85830 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -1,5 +1,7 @@ (function () { 'use strict'; + +function ngMaterialDatePicker(moment) { var moduleName = "ngMaterialDatePicker"; var VIEW_STATES = { @@ -1055,5 +1057,14 @@ } }; }]); - +} + + var isElectron = window && window.process && window.process.type; + if (typeof define === 'function' && define.amd) { + define(['moment'], ngMaterialDatePicker); + } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) { + module.exports = ngMaterialDatePicker(require('moment')); + } else { + ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment); + } })(); diff --git a/js/demo.js b/js/demo.js index b0ec05b..b535aaa 100644 --- a/js/demo.js +++ b/js/demo.js @@ -50,7 +50,7 @@ .then(function (date) { $scope.selectedDateTime = date; console.log('New Date / Time selected:', date); - }); + }, function(){}); }; $scope.displayDialogIn = function () { @@ -61,7 +61,7 @@ }) .then(function (date) { $scope.selectedDateTimeIn = date; - }); + }, function(){}); }; // Set and change the text direction From 8d45dff33bebf7ef8ce66f4e9eb8f0012342a380 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 23 Jun 2017 23:32:04 -0400 Subject: [PATCH 058/226] version 1.6.6 --- README.md | 13 +++++++------ bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e5585c9..9bb10f5 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Originally designed for Bootstrap Material, this has been modified to work with - Can disable dates, not selectable by user - Can disable minutes view - Compatible with right-to-left direction +- Support RequireJS ## Updates @@ -51,15 +52,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 2d45bc8..213ca06 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.5", + "version": "1.6.6", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 0b65d3c..af873eb 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";var t="ngMaterialDatePicker",e={DATE:0,HOUR:1,MINUTE:2},a=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},i='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(a,r,s,o){var c=!1;a.format||(a.date&&a.time?a.format="YYYY-MM-DD HH:mm":a.date?a.format="YYYY-MM-DD":a.format="HH:mm");var l=null;void 0!==a.showTodaysDate&&"false"!==a.showTodaysDate&&(l=moment()),angular.isString(a.currentDate)&&""!==a.currentDate&&(a.currentDate=moment(a.currentDate,a.format)),o&&o.$formatters.push(function(t){if(void 0!==t){var e=moment(t);return e.isValid()?e.format(a.format):""}}),r.on("focus",function(o){if(o.preventDefault(),r.blur(),r.parent().removeClass("md-input-focused"),!c){c=!0;var d={};for(var m in s)a.hasOwnProperty(m)&&!angular.isUndefined(a[m])&&(d[m]=a[m]);d.currentDate=a.currentDate,d.showTodaysDate=l;var u={options:d};t.show({template:i,controller:n,controllerAs:"picker",locals:u,openFrom:r,parent:angular.element(document.body),bindToController:!0,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){a.currentDate=t?t._d:t,c=!1,moment(a.currentDate).isSame(d.currentDate)||e(a.ngChange,0),r.parent().removeClass("md-input-focused")},function(){c=!1,r.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var r=Object.keys(a);return console.log(r),{show:function(s){var o=e.defer();angular.copy(a);for(var c in s)-1!=r.indexOf[c]&&s.hasOwnProperty(c)&&s[c];var l={options:s};return t.show({template:i,controller:n,controllerAs:"picker",locals:l,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;o.resolve(t?t._d:t)},function(){o.reject()}),o.promise}}}]);var n=function(t,a,i){this.currentView=e.DATE,this._dialog=a,this._attachedEvents=[],this.VIEWS=e,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var t=this.currentDate||moment(),e=5*Math.round(t.minute()/5);return e>=60&&(e=55),moment(t).minutes(e)},initDates:function(){var t=this,e=function(e,a){var i=null;if(angular.isDefined(e)&&null!==e&&""!==e)if(angular.isString(e))i=void 0!==t.params.format&&null!==t.params.format?moment(e,t.params.format).locale(t.params.lang):moment(e).locale(t.params.lang);else if("number"==typeof e)i=moment(e).locale(t.params.lang);else if(angular.isDate(e)){var n=e.getTime();i=moment(n,"x").locale(t.params.lang)}else e._isAMomentObject&&(i=e);else i=a;return i};this.currentDate=e(this.params.currentDate,moment()),this.minDate=e(this.params.minDate),this.maxDate=e(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return moment(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=e.DATE},initHours:function(){this.currentView=e.HOUR},initMinutes:function(){this.currentView=e.MINUTE},isAfterMinDate:function(t,e,a){var i=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=moment(this.minDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))>=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))>=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(t,e,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=moment(this.maxDate),r=moment(t);e||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a?i=parseInt(r.format("X"))<=parseInt(n.format("X")):(r.minute(0),n.minute(0),i=parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(t){t&&(this.currentDate=moment(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=moment(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=moment(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=moment(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var e=moment(this.currentDate);return this.params.shortTime?e.hour(this.convertHours(t)).minute(0).second(0):e.hour(t).minute(0).second(0),this.isAfterMinDate(e,!0,!1)&&this.isBeforeMaxDate(e,!0,!1)},isMinuteAvailable:function(t){var e=moment(this.currentDate);return e.minute(t).second(0),this.isAfterMinDate(e,!0,!0)&&this.isBeforeMaxDate(e,!0,!0)},start:function(){this.currentView=e.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=moment(),e=5*Math.round(t.minute()/5);e>=60&&(e=55),this.selectDate(moment(t).minutes(e))},ok:function(){switch(this.currentView){case e.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case e.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case e.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case e.DATE:this.hide();break;case e.HOUR:this.params.date?this.initDate():this.hide();break;case e.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),e=[],a=0;a6&&(s=0),a.push(s.toString());if(r.week=a,n.maxDate||n.minDate){var o=n.minDate?i(n.minDate):0,c=n.maxDate?i(n.maxDate)+1:t;r.months=e.slice(o,c)}else r.months=e;r.topIndex=i(n.currentDate)-r.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),r.getItemAtIndex=function(t){var e=(t+1)%12||12,a=1920+Math.floor(t/12),i=moment(n.currentDate).year(a).month(e);return s(i)},a.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,e){if(t!=e){var a=moment(t,"YYYY-MM"),s=n.minDate?i(n.minDate):0,o=i(a,s);r.topIndex!=o&&(r.topIndex=o)}});var s=function(t){var e={};if(null!==t){e.name=t.format("MMMM YYYY");var a=moment(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),i=a.format("d");e.days=[];for(var s=a.date();s<=a.daysInMonth();s++){if(s===a.date()){var o=r.week.indexOf(i.toString());if(o>0)for(var c=0;c
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(t,e){r.push(""),t.forEach(function(t,a){if(r.push(""),t)if(n.isInRange(t)){var i="month['days']["+e+"]["+a+"]";r.push(''),r.push(t.format("D")),r.push("")}else r.push(''),r.push(t.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,n){t.cal=n,t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,r){i!=r&&(t.month=n.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",[function(){return{restrict:"E",template:'',link:function(t,e,i){var n="minutes"===i.mode,r=t.picker,s=document.querySelector("md-dialog.dtp"),o=function(){var o=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),m=s.querySelector(".dtp-content").offsetWidth,u=parseInt(a(l,"paddingLeft").replace("px",""))||0,p=parseInt(a(l,"paddingRight").replace("px",""))||0,h=m-((parseInt(a(o,"marginLeft").replace("px",""))||0)+(parseInt(a(o,"marginRight").replace("px",""))||0)+u+p);o.css("width",h+"px");for(var f=parseInt(a(l,"paddingLeft").replace("px",""))||0,D=parseInt(a(l,"paddingTop").replace("px",""))||0,v=parseInt(a(o,"marginLeft").replace("px",""))||0,g=parseInt(a(o,"marginTop").replace("px",""))||0,k=h/2,M=k/1.2,x=[],y=0;y<12;++y){var b=k+M*Math.sin(2*Math.PI*(y/12))+f/2-(f+v),T=k-M*Math.cos(2*Math.PI*(y/12))-g/2-(D+g),A={left:b,top:T,value:n?5*y:y,style:{"margin-left":b+"px","margin-top":T+"px"}};n?A.display=A.value<10?"0"+A.value:A.value:r.params.shortTime?A.display=0===y?12:y:A.display=y,x.push(A)}if(t.points=x,!r.params.shortTime&&!n){for(var w=[],Y=k/1.8,I=12;I<24;++I){var S=k+Y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),P=k-Y*Math.cos(2*Math.PI*(I/12))-g/2-(D+g),V={left:S,top:P,value:I,style:{"margin-left":S+"px","margin-top":P+"px"}};V.display=I,w.push(V)}t.points24=w}t.mode=i.mode,d(),o.css("height",h+"px");var H=e[0].querySelector(".dtp-clock-center"),O=H.offsetWidth/2||7.5,E=H.offsetHeight/2||7.5,C=k/(r.params.shortTime?1.8:2.3),N=k/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*v+"px",height:C+"px",marginTop:k-C-f+"px"}).addClass(n?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*v+"px",height:N+"px",marginTop:k-N-f+"px"}).addClass(n?"on":""),angular.element(H).css({left:k+f+v-O+"px",marginTop:k-v/2-E+"px"}),c()},c=function(){var t=r.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var n=5*Math.round(i/5)*6;l(angular.element(e[0].querySelector(".dtp-minute-hand")),n)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=r.currentNearest5Minute(),a=r.params.shortTime?12:24;t.currentValue=n?e.minute():e.hour()%a};t.$watch(function(){var t=r.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),c()}),t.setTime=function(e){n?(e===t.currentValue&&r.ok(),r.currentDate.minute(e)):(e!==t.currentValue||r.params.autoOk||r.ok(),r.params.shortTime?r.currentDate.hour(r.isPM()?e+12:e):r.currentDate.hour(e),r.params.autoOk&&r.ok()),r.currentDate.second(0)},t.pointAvailable=function(t){return n?r.isMinuteAvailable(t.value):r.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){o(),m()})}}}])}(); +!function(){"use strict";function t(t){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},r='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(e,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(i,s,c,o){var l=!1;i.format||(i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=t()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=t(i.currentDate,i.format)),o&&o.$formatters.push(function(e){if(void 0!==e){var a=t(e);return a.isValid()?a.format(i.format):""}}),s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!l){l=!0;var u={};for(var m in c)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=d;var p={options:u};e.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(e){i.currentDate=e?e._d:e,l=!1,t(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){l=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var i=Object.keys(a);return console.log(i),{show:function(s){var c=e.defer();angular.copy(a);for(var o in s)-1!=i.indexOf[o]&&s.hasOwnProperty(o)&&s[o];var l={options:s};return t.show({template:r,controller:n,controllerAs:"picker",locals:l,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}}}]);var n=function(t,e,i){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var e=this.currentDate||t(),a=5*Math.round(e.minute()/5);return a>=60&&(a=55),t(e).minutes(a)},initDates:function(){var e=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==e.params.format&&null!==e.params.format?t(a,e.params.format).locale(e.params.lang):t(a).locale(e.params.lang);else if("number"==typeof a)r=t(a).locale(e.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,t()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(e){return t(e).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=t(this.minDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(e,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=t(this.maxDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(e){e&&(this.currentDate=t(e),this.isAfterMinDate(this.currentDate)||(this.currentDate=t(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=t(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=t(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(e){var a=t(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(e)).minute(0).second(0):a.hour(e).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(e){var a=t(this.currentDate);return a.minute(e).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var e=t(),a=5*Math.round(e.minute()/5);a>=60&&(a=55),this.selectDate(t(e).minutes(a))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(e).directive("mdcDatetimePickerCalendar",[function(){for(var e=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),t.push(i.toString());if(s.week=t,n.maxDate||n.minDate){var c=n.minDate?r(n.minDate):0,o=n.maxDate?r(n.maxDate)+1:e;s.months=a.slice(c,o)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(e){var a=(e+1)%12||12,i=1920+Math.floor(e/12),r=t(n.currentDate).year(i).month(a);return c(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(e,a){if(e!=a){var i=t(e,"YYYY-MM"),c=n.minDate?r(n.minDate):0,o=r(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(e){var a={};if(null!==e){a.name=e.format("MMMM YYYY");var i=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute()),r=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(r.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",[function(){return{restrict:"E",template:'',link:function(t,e,a){var r="minutes"===a.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),u=s.querySelector(".dtp-content").offsetWidth,m=parseInt(i(l,"paddingLeft").replace("px",""))||0,p=parseInt(i(l,"paddingRight").replace("px",""))||0,h=u-((parseInt(i(c,"marginLeft").replace("px",""))||0)+(parseInt(i(c,"marginRight").replace("px",""))||0)+m+p);c.css("width",h+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,D=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(c,"marginLeft").replace("px",""))||0,g=parseInt(i(c,"marginTop").replace("px",""))||0,k=h/2,M=k/1.2,y=[],x=0;x<12;++x){var b=k+M*Math.sin(2*Math.PI*(x/12))+f/2-(f+v),T=k-M*Math.cos(2*Math.PI*(x/12))-g/2-(D+g),w={left:b,top:T,value:r?5*x:x,style:{"margin-left":b+"px","margin-top":T+"px"}};r?w.display=w.value<10?"0"+w.value:w.value:n.params.shortTime?w.display=0===x?12:x:w.display=x,y.push(w)}if(t.points=y,!n.params.shortTime&&!r){for(var A=[],Y=k/1.8,I=12;I<24;++I){var S=k+Y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),P=k-Y*Math.cos(2*Math.PI*(I/12))-g/2-(D+g),V={left:S,top:P,value:I,style:{"margin-left":S+"px","margin-top":P+"px"}};V.display=I,A.push(V)}t.points24=A}t.mode=a.mode,d(),c.css("height",h+"px");var H=e[0].querySelector(".dtp-clock-center"),O=H.offsetWidth/2||7.5,E=H.offsetHeight/2||7.5,C=k/(n.params.shortTime?1.8:2.3),N=k/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*v+"px",height:C+"px",marginTop:k-C-f+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*v+"px",height:N+"px",marginTop:k-N-f+"px"}).addClass(r?"on":""),angular.element(H).css({left:k+f+v-O+"px",marginTop:k-v/2-E+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=5*Math.round(i/5)*6;l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute(),a=n.params.shortTime?12:24;t.currentValue=r?e.minute():e.hour()%a};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){r?(e===t.currentValue&&n.ok(),n.currentDate.minute(e)):(e!==t.currentValue||n.params.autoOk||n.ok(),n.params.shortTime?n.currentDate.hour(n.isPM()?e+12:e):n.currentDate.hour(e),n.params.autoOk&&n.ok()),n.currentDate.second(0)},t.pointAvailable=function(t){return r?n.isMinuteAvailable(t.value):n.isHourAvailable(t.value)};var u=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),u()})}}}])}var e=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],t):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!e?module.exports=t(require("moment")):t(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index e087cc0..3953b0e 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","moment","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","deferred","defer","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","left","sin","PI","top","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var date = moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","deferred","defer","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","left","sin","PI","top","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\nfunction ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var date = moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n}\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index cf4eebf..5d2ef46 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.5", + "version": "1.6.6", "keywords": [ "css", "js", From ff162100618ec3e19110c429dab1a35b02363220 Mon Sep 17 00:00:00 2001 From: Emiel Hollander Date: Tue, 27 Jun 2017 14:13:30 +0200 Subject: [PATCH 059/226] Adds parameter disableClick to allow for typing in the datetimefield --- js/angular-material-datetimepicker.js | 106 +++++++++++++++----------- 1 file changed, 60 insertions(+), 46 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index fa85830..441d159 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -99,7 +99,8 @@ function ngMaterialDatePicker(moment) { todayText: 'Today', disableDates: [], disableParentScroll: false, - autoOk: false + autoOk: false, + disableClick: false }; return default_params; }]) @@ -129,7 +130,8 @@ function ngMaterialDatePicker(moment) { showTodaysDate: '@', todayText: '@', disableParentScroll: '=', - autoOk: '=' + autoOk: '=', + disableClick: '=' }, link: function (scope, element, attrs, ngModel) { var isOn = false; @@ -153,6 +155,10 @@ function ngMaterialDatePicker(moment) { } if (ngModel) { + ngModel.$options = ngModel.$options.createChild({ + '*': '$inherit', + debounce: 500 + }); ngModel.$formatters.push(function (value) { if (typeof value === 'undefined') { return; @@ -160,57 +166,65 @@ function ngMaterialDatePicker(moment) { var m = moment(value); return m.isValid() ? m.format(scope.format) : ''; }); + ngModel.$parsers.push(function (value) { + if (typeof value === 'undefined') { + return; + } + var m = moment(value, scope.format); + return m.isValid() ? m._d : scope.currentDate; + }); } //@TODO custom event to trigger input - element.on('focus', function (e) { - e.preventDefault(); - element.blur(); - element.parent().removeClass('md-input-focused'); - if (isOn) { - return; - } - isOn = true; - var options = {}; - for (var i in attrs) { - if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) { - options[i] = scope[i]; + if (!scope.disableClick) { + element.on('focus', function (e) { + e.preventDefault(); + element.blur(); + element.parent().removeClass('md-input-focused'); + if (isOn) { + return; } - } - options.currentDate = scope.currentDate; - options.showTodaysDate = dateOfTheDay; - - var locals = {options: options}; - $mdDialog.show({ - template: template, - controller: PluginController, - controllerAs: 'picker', - locals: locals, - openFrom: element, - parent: angular.element(document.body), - bindToController: true, - disableParentScroll: options.disableParentScroll || false, - hasBackDrop: false, - skipHide: true, - multiple: true - }) - .then(function (v) { - scope.currentDate = v ? v._d : v; - isOn = false; - - if (!moment(scope.currentDate).isSame(options.currentDate)) { - $timeout(scope.ngChange, 0); + isOn = true; + var options = {}; + for (var i in attrs) { + if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) { + options[i] = scope[i]; } + } + options.currentDate = scope.currentDate; + options.showTodaysDate = dateOfTheDay; + + var locals = {options: options}; + $mdDialog.show({ + template: template, + controller: PluginController, + controllerAs: 'picker', + locals: locals, + openFrom: element, + parent: angular.element(document.body), + bindToController: true, + disableParentScroll: options.disableParentScroll || false, + hasBackDrop: false, + skipHide: true, + multiple: true + }) + .then(function (v) { + scope.currentDate = v ? v._d : v; + isOn = false; - element.parent().removeClass('md-input-focused'); + if (!moment(scope.currentDate).isSame(options.currentDate)) { + $timeout(scope.ngChange, 0); + } - }, function () { - isOn = false; - element.parent().removeClass('md-input-focused'); - }) - ; - }); - + element.parent().removeClass('md-input-focused'); + + }, function () { + isOn = false; + element.parent().removeClass('md-input-focused'); + }) + ; + }); + } } }; }]) From 42533abee4eb3d39ce1387dbb2d91243c4cc5d1d Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 28 Jun 2017 23:20:23 -0400 Subject: [PATCH 060/226] #110 return module name --- js/angular-material-datetimepicker.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index fa85830..27f0c16 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -1057,6 +1057,7 @@ function ngMaterialDatePicker(moment) { } }; }]); + return moduleName; } var isElectron = window && window.process && window.process.type; From df584f64a564955d938479be37f67ec9212a9d42 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 28 Jun 2017 23:43:00 -0400 Subject: [PATCH 061/226] #10 fix next and prev buttons for rtl --- css/material-datetimepicker.css | 6 ++++++ js/angular-material-datetimepicker.js | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index 3293fcf..a04263d 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -357,3 +357,9 @@ md-dialog.dtp { text-align: center; } +[dir=rtl] .dtp div.dtp-year-btn-next, [dir=rtl] .dtp div.dtp-month-btn-next, +[dir=rtl] .dtp div.dtp-year-btn-prev, [dir=rtl] .dtp div.dtp-month-btn-prev { + -ms-transform: rotate(180deg); + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 27f0c16..8474a60 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -28,13 +28,13 @@ function ngMaterialDatePicker(moment) { ' ' + '
' + '
' + - '
' + + '
' + '
{{picker.currentDate.format("MMM") | uppercase}}
' + '
' + '
' + '
{{picker.currentDate.format("DD")}}
' + '
' + - '
' + + '
' + '
{{picker.currentDate.format("YYYY")}}
' + '
' + '
'+ From b8a34fc4345907beb32125a38d2a971eb3e031d2 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 29 Jun 2017 11:59:18 -0400 Subject: [PATCH 062/226] #12 add demo and change to editInput --- index.html | 16 ++++++++++++++++ js/angular-material-datetimepicker.js | 6 +++--- js/demo.js | 11 +++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index ae99060..f5c5fc9 100644 --- a/index.html +++ b/index.html @@ -94,6 +94,22 @@

Datetime Pickers

+
+ + + + +
+ + today + +
+
+
+
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index ee7bc22..e504725 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -100,7 +100,7 @@ function ngMaterialDatePicker(moment) { disableDates: [], disableParentScroll: false, autoOk: false, - disableClick: false + editInput: false }; return default_params; }]) @@ -131,7 +131,7 @@ function ngMaterialDatePicker(moment) { todayText: '@', disableParentScroll: '=', autoOk: '=', - disableClick: '=' + editInput: '=' }, link: function (scope, element, attrs, ngModel) { var isOn = false; @@ -176,7 +176,7 @@ function ngMaterialDatePicker(moment) { } //@TODO custom event to trigger input - if (!scope.disableClick) { + if (!scope.editInput) { element.on('focus', function (e) { e.preventDefault(); element.blur(); diff --git a/js/demo.js b/js/demo.js index b535aaa..7b20048 100644 --- a/js/demo.js +++ b/js/demo.js @@ -64,6 +64,17 @@ }, function(){}); }; + $scope.displayDialogEdit = function () { + mdcDateTimeDialog.show({ + currentDate: $scope.dateTimeEdit || moment().startOf('day'), + maxDate: $scope.maxDate, + time: true + }) + .then(function (date) { + $scope.dateTimeEdit = date; + }, function(){}); + }; + // Set and change the text direction $scope.txtdir = document.documentElement.dir || 'ltr'; $scope.changeDir = function () { From 10f290b1160092133aeed603efcd33442ea0a7e2 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 29 Jun 2017 23:21:45 -0400 Subject: [PATCH 063/226] #112 add click outside to close as attribute --- README.md | 14 ++++++++++---- index.html | 25 ++++++------------------- js/angular-material-datetimepicker.js | 20 ++++++++++++++++---- js/demo.js | 16 ++++------------ 4 files changed, 36 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 9bb10f5..64691a1 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Originally designed for Bootstrap Material, this has been modified to work with - Can disable dates, not selectable by user - Can disable minutes view - Compatible with right-to-left direction -- Support RequireJS +- Support RequireJS and Webpack ## Updates @@ -85,8 +85,8 @@ This plugin exposes a directive which should be used as an attribute for an inpu Sunday) | | **disable-dates** | Date[] | Dates to be disabled or not selectable by user. | +| **show-todays-date** | Empty string | Show today's date (default: undefined) | | **disable-parent-scroll** | Boolean | true => Disable scrolling while the dialog is open (default : false) | | **auto-ok** | Boolean | true => Single click (default: false) | +| **edit-input** | Boolean | true => Input editable and don't show dialog (default: false) | +| **click-outside-to-close**| Boolean | true => A click outside close the dialog (default: false) | ### Date/Time Dialog Service @@ -158,11 +161,14 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. shortTime: {boolean} =false, cancelText: {string} ='Cancel', todayText: {string} ='Today', + showTodaysDate: {string} ='', okText: {string} ='OK', amText: {string} ='AM', pmText: {string} ='PM', disableDates: {date[]} =[], disableParentScroll: {boolean} = false, - autoOk: {boolean} =false + autoOk: {boolean} =false, + editInput: {boolean} =false, + clickOutsideToClose: {boolean} =false, } ``` diff --git a/index.html b/index.html index f5c5fc9..67fc252 100644 --- a/index.html +++ b/index.html @@ -53,7 +53,7 @@

Datetime Pickers

@@ -87,7 +87,7 @@

Datetime Pickers

@@ -98,7 +98,7 @@

Datetime Pickers

@@ -114,7 +114,7 @@

Datetime Pickers

@@ -125,7 +125,7 @@

Datetime Pickers

@@ -137,7 +137,7 @@

Datetime Pickers

+ placeholder="Date" show-todays-date="" min-date="date" ng-model="dateTimeNoMin">
@@ -186,19 +186,6 @@

Datetime Pickers

-
- -
-
- - - - - today - -
-
-
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index e504725..534e044 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -100,7 +100,8 @@ function ngMaterialDatePicker(moment) { disableDates: [], disableParentScroll: false, autoOk: false, - editInput: false + editInput: false, + clickOutsideToClose: false }; return default_params; }]) @@ -131,7 +132,8 @@ function ngMaterialDatePicker(moment) { todayText: '@', disableParentScroll: '=', autoOk: '=', - editInput: '=' + editInput: '=', + clickOutsideToClose: '=', }, link: function (scope, element, attrs, ngModel) { var isOn = false; @@ -203,6 +205,7 @@ function ngMaterialDatePicker(moment) { openFrom: element, parent: angular.element(document.body), bindToController: true, + clickOutsideToClose: options.clickOutsideToClose || false, disableParentScroll: options.disableParentScroll || false, hasBackDrop: false, skipHide: true, @@ -244,13 +247,16 @@ function ngMaterialDatePicker(moment) { weekStart: {int} =0, shortTime: {boolean} =false, cancelText: {string} ='Cancel', + showTodaysDate: {string} ='', todayText: {string} ='Today', okText: {string} ='OK', amText: {string} ='AM', pmText: {string} ='PM', disableDates: {date[]} =[], disableParentScroll: {boolean} =false, - autoOk: {boolean} =false + autoOk: {boolean} =false, + editInput: {boolean} =false, + clickOutsideToClose: {boolean} =false } @return promise */ @@ -267,6 +273,12 @@ function ngMaterialDatePicker(moment) { } } + var dateOfTheDay = null; + if (options.showTodaysDate !== undefined && options.showTodaysDate !== "false") { + dateOfTheDay = moment(); + } + options.showTodaysDate = dateOfTheDay; + var locals = {options: options}; $mdDialog.show({ template: template, @@ -275,7 +287,7 @@ function ngMaterialDatePicker(moment) { locals: locals, parent: angular.element(document.body), bindToController: true, - clickOutsideToClose: true, + clickOutsideToClose: options.clickOutsideToClose || false, disableParentScroll: options.disableParentScroll || false, skipHide: true, multiple: true diff --git a/js/demo.js b/js/demo.js index 7b20048..e496992 100644 --- a/js/demo.js +++ b/js/demo.js @@ -45,7 +45,9 @@ mdcDateTimeDialog.show({ currentDate: moment().startOf('day'), maxDate: $scope.maxDate, - time: false + showTodaysDate: '', + time: false, + clickOutsideToClose: true }) .then(function (date) { $scope.selectedDateTime = date; @@ -53,21 +55,11 @@ }, function(){}); }; - $scope.displayDialogIn = function () { - mdcDateTimeDialog.show({ - currentDate: $scope.selectedDateTimeIn || moment().startOf('day'), - maxDate: $scope.maxDate, - time: false - }) - .then(function (date) { - $scope.selectedDateTimeIn = date; - }, function(){}); - }; - $scope.displayDialogEdit = function () { mdcDateTimeDialog.show({ currentDate: $scope.dateTimeEdit || moment().startOf('day'), maxDate: $scope.maxDate, + showTodaysDate: '', time: true }) .then(function (date) { From 4919c35c65d2d22672b3c3eef8ff4ca0ec6f6865 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 6 Jul 2017 23:06:43 -0400 Subject: [PATCH 064/226] fix parsers to validate each change --- js/angular-material-datetimepicker.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 534e044..9ae56ba 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -162,19 +162,18 @@ function ngMaterialDatePicker(moment) { debounce: 500 }); ngModel.$formatters.push(function (value) { - if (typeof value === 'undefined') { - return; - } + if (typeof value === 'undefined') return; var m = moment(value); return m.isValid() ? m.format(scope.format) : ''; }); + ngModel.$parsers.push(function (value) { - if (typeof value === 'undefined') { - return; - } + if (typeof value === 'undefined') return; var m = moment(value, scope.format); - return m.isValid() ? m._d : scope.currentDate; + if (m.isValid()) return m._d; + return; }); + } //@TODO custom event to trigger input From 0c84d85ab66ff10077775dcec5566e9c668ac217 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 6 Jul 2017 23:10:39 -0400 Subject: [PATCH 065/226] version 1.6.7 --- README.md | 12 ++-- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- package.json | 10 ++-- yarn.lock | 58 +++++++++---------- 7 files changed, 44 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 64691a1..9d1a13c 100644 --- a/README.md +++ b/README.md @@ -52,15 +52,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 213ca06..ee3c958 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.6", + "version": "1.6.7", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index af873eb..14533bd 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function t(t){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},r='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(e,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"="},link:function(i,s,c,o){var l=!1;i.format||(i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=t()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=t(i.currentDate,i.format)),o&&o.$formatters.push(function(e){if(void 0!==e){var a=t(e);return a.isValid()?a.format(i.format):""}}),s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!l){l=!0;var u={};for(var m in c)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=d;var p={options:u};e.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(e){i.currentDate=e?e._d:e,l=!1,t(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){l=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,e,a){var i=Object.keys(a);return console.log(i),{show:function(s){var c=e.defer();angular.copy(a);for(var o in s)-1!=i.indexOf[o]&&s.hasOwnProperty(o)&&s[o];var l={options:s};return t.show({template:r,controller:n,controllerAs:"picker",locals:l,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:!0,disableParentScroll:s.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}}}]);var n=function(t,e,i){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var e=this.currentDate||t(),a=5*Math.round(e.minute()/5);return a>=60&&(a=55),t(e).minutes(a)},initDates:function(){var e=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==e.params.format&&null!==e.params.format?t(a,e.params.format).locale(e.params.lang):t(a).locale(e.params.lang);else if("number"==typeof a)r=t(a).locale(e.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,t()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(e){return t(e).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=t(this.minDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(e,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=t(this.maxDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(e){e&&(this.currentDate=t(e),this.isAfterMinDate(this.currentDate)||(this.currentDate=t(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=t(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=t(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(e){var a=t(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(e)).minute(0).second(0):a.hour(e).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(e){var a=t(this.currentDate);return a.minute(e).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var e=t(),a=5*Math.round(e.minute()/5);a>=60&&(a=55),this.selectDate(t(e).minutes(a))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(e).directive("mdcDatetimePickerCalendar",[function(){for(var e=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),t.push(i.toString());if(s.week=t,n.maxDate||n.minDate){var c=n.minDate?r(n.minDate):0,o=n.maxDate?r(n.maxDate)+1:e;s.months=a.slice(c,o)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(e){var a=(e+1)%12||12,i=1920+Math.floor(e/12),r=t(n.currentDate).year(i).month(a);return c(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(e,a){if(e!=a){var i=t(e,"YYYY-MM"),c=n.minDate?r(n.minDate):0,o=r(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(e){var a={};if(null!==e){a.name=e.format("MMMM YYYY");var i=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute()),r=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(r.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",[function(){return{restrict:"E",template:'',link:function(t,e,a){var r="minutes"===a.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),u=s.querySelector(".dtp-content").offsetWidth,m=parseInt(i(l,"paddingLeft").replace("px",""))||0,p=parseInt(i(l,"paddingRight").replace("px",""))||0,h=u-((parseInt(i(c,"marginLeft").replace("px",""))||0)+(parseInt(i(c,"marginRight").replace("px",""))||0)+m+p);c.css("width",h+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,D=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(c,"marginLeft").replace("px",""))||0,g=parseInt(i(c,"marginTop").replace("px",""))||0,k=h/2,M=k/1.2,y=[],x=0;x<12;++x){var b=k+M*Math.sin(2*Math.PI*(x/12))+f/2-(f+v),T=k-M*Math.cos(2*Math.PI*(x/12))-g/2-(D+g),w={left:b,top:T,value:r?5*x:x,style:{"margin-left":b+"px","margin-top":T+"px"}};r?w.display=w.value<10?"0"+w.value:w.value:n.params.shortTime?w.display=0===x?12:x:w.display=x,y.push(w)}if(t.points=y,!n.params.shortTime&&!r){for(var A=[],Y=k/1.8,I=12;I<24;++I){var S=k+Y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),P=k-Y*Math.cos(2*Math.PI*(I/12))-g/2-(D+g),V={left:S,top:P,value:I,style:{"margin-left":S+"px","margin-top":P+"px"}};V.display=I,A.push(V)}t.points24=A}t.mode=a.mode,d(),c.css("height",h+"px");var H=e[0].querySelector(".dtp-clock-center"),O=H.offsetWidth/2||7.5,E=H.offsetHeight/2||7.5,C=k/(n.params.shortTime?1.8:2.3),N=k/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*v+"px",height:C+"px",marginTop:k-C-f+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*v+"px",height:N+"px",marginTop:k-N-f+"px"}).addClass(r?"on":""),angular.element(H).css({left:k+f+v-O+"px",marginTop:k-v/2-E+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=5*Math.round(i/5)*6;l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute(),a=n.params.shortTime?12:24;t.currentValue=r?e.minute():e.hour()%a};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){r?(e===t.currentValue&&n.ok(),n.currentDate.minute(e)):(e!==t.currentValue||n.params.autoOk||n.ok(),n.params.shortTime?n.currentDate.hour(n.isPM()?e+12:e):n.currentDate.hour(e),n.params.autoOk&&n.ok()),n.currentDate.second(0)},t.pointAvailable=function(t){return r?n.isMinuteAvailable(t.value):n.isHourAvailable(t.value)};var u=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),u()})}}}])}var e=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],t):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!e?module.exports=t(require("moment")):t(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function t(t){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},r='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(e,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"="},link:function(i,s,c,o){var l=!1;i.format||(i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=t()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=t(i.currentDate,i.format)),o&&(o.$options=o.$options.createChild({"*":"$inherit",debounce:500}),o.$formatters.push(function(e){if(void 0!==e){var a=t(e);return a.isValid()?a.format(i.format):""}}),o.$parsers.push(function(e){if(void 0!==e){var a=t(e,i.format);return a.isValid()?a._d:void 0}})),i.editInput||s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!l){l=!0;var u={};for(var m in c)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=d;var p={options:u};e.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(e){i.currentDate=e?e._d:e,l=!1,t(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){l=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(e,a,i){var s=Object.keys(i);return console.log(s),{show:function(c){var o=a.defer();angular.copy(i);for(var l in c)-1!=s.indexOf[l]&&c.hasOwnProperty(l)&&c[l];var d=null;void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(d=t()),c.showTodaysDate=d;var u={options:c};return e.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:c.clickOutsideToClose||!1,disableParentScroll:c.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;o.resolve(t?t._d:t)},function(){o.reject()}),o.promise}}}]);var n=function(t,e,i){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var e=this.currentDate||t(),a=5*Math.round(e.minute()/5);return a>=60&&(a=55),t(e).minutes(a)},initDates:function(){var e=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==e.params.format&&null!==e.params.format?t(a,e.params.format).locale(e.params.lang):t(a).locale(e.params.lang);else if("number"==typeof a)r=t(a).locale(e.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,t()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(e){return t(e).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=t(this.minDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(e,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=t(this.maxDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(e){e&&(this.currentDate=t(e),this.isAfterMinDate(this.currentDate)||(this.currentDate=t(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=t(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=t(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(e){var a=t(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(e)).minute(0).second(0):a.hour(e).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(e){var a=t(this.currentDate);return a.minute(e).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var e=t(),a=5*Math.round(e.minute()/5);a>=60&&(a=55),this.selectDate(t(e).minutes(a))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(e).directive("mdcDatetimePickerCalendar",[function(){for(var e=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),t.push(i.toString());if(s.week=t,n.maxDate||n.minDate){var c=n.minDate?r(n.minDate):0,o=n.maxDate?r(n.maxDate)+1:e;s.months=a.slice(c,o)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(e){var a=(e+1)%12||12,i=1920+Math.floor(e/12),r=t(n.currentDate).year(i).month(a);return c(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(e,a){if(e!=a){var i=t(e,"YYYY-MM"),c=n.minDate?r(n.minDate):0,o=r(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(e){var a={};if(null!==e){a.name=e.format("MMMM YYYY");var i=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute()),r=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(r.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",[function(){return{restrict:"E",template:'',link:function(t,e,a){var r="minutes"===a.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),u=s.querySelector(".dtp-content").offsetWidth,m=parseInt(i(l,"paddingLeft").replace("px",""))||0,p=parseInt(i(l,"paddingRight").replace("px",""))||0,h=u-((parseInt(i(c,"marginLeft").replace("px",""))||0)+(parseInt(i(c,"marginRight").replace("px",""))||0)+m+p);c.css("width",h+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,D=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(c,"marginLeft").replace("px",""))||0,g=parseInt(i(c,"marginTop").replace("px",""))||0,k=h/2,M=k/1.2,y=[],x=0;x<12;++x){var b=k+M*Math.sin(2*Math.PI*(x/12))+f/2-(f+v),T=k-M*Math.cos(2*Math.PI*(x/12))-g/2-(D+g),w={left:b,top:T,value:r?5*x:x,style:{"margin-left":b+"px","margin-top":T+"px"}};r?w.display=w.value<10?"0"+w.value:w.value:n.params.shortTime?w.display=0===x?12:x:w.display=x,y.push(w)}if(t.points=y,!n.params.shortTime&&!r){for(var A=[],I=k/1.8,Y=12;Y<24;++Y){var S=k+I*Math.sin(2*Math.PI*(Y/12))+f/2-(f+v),P=k-I*Math.cos(2*Math.PI*(Y/12))-g/2-(D+g),V={left:S,top:P,value:Y,style:{"margin-left":S+"px","margin-top":P+"px"}};V.display=Y,A.push(V)}t.points24=A}t.mode=a.mode,d(),c.css("height",h+"px");var H=e[0].querySelector(".dtp-clock-center"),O=H.offsetWidth/2||7.5,C=H.offsetHeight/2||7.5,E=k/(n.params.shortTime?1.8:2.3),$=k/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*v+"px",height:E+"px",marginTop:k-E-f+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*v+"px",height:$+"px",marginTop:k-$-f+"px"}).addClass(r?"on":""),angular.element(H).css({left:k+f+v-O+"px",marginTop:k-v/2-C+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=5*Math.round(i/5)*6;l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute(),a=n.params.shortTime?12:24;t.currentValue=r?e.minute():e.hour()%a};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){r?(e===t.currentValue&&n.ok(),n.currentDate.minute(e)):(e!==t.currentValue||n.params.autoOk||n.ok(),n.params.shortTime?n.currentDate.hour(n.isPM()?e+12:e):n.currentDate.hour(e),n.params.autoOk&&n.ok()),n.currentDate.second(0)},t.pointAvailable=function(t){return r?n.isMinuteAvailable(t.value):n.isHourAvailable(t.value)};var u=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),u()})}}}]),e}var e=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],t):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!e?module.exports=t(require("moment")):t(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 3953b0e..ffadbf6 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","$formatters","push","value","m","isValid","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","deferred","defer","copy","indexOf","clickOutsideToClose","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","left","sin","PI","top","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\nfunction ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n }\r\n\r\n //@TODO custom event to trigger input\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n \r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var date = moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n}\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","editInput","clickOutsideToClose","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","$options","createChild","*","debounce","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","left","sin","PI","top","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\nfunction ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$options = ngModel.$options.createChild({\r\n '*': '$inherit',\r\n debounce: 500\r\n });\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var date = moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n}\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 1f8371f..4e01b31 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:1px;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:1px;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)} \ No newline at end of file diff --git a/package.json b/package.json index 5d2ef46..41f7ee8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.6", + "version": "1.6.7", "keywords": [ "css", "js", @@ -29,16 +29,16 @@ "devDependencies": { "gulp": "^3.9.1", "gulp-bump": "^2.7.0", - "gulp-clean-css": "^3.4.1", + "gulp-clean-css": "^3.5.0", "gulp-filter": "^5.0.0", - "gulp-git": "^2.4.0", + "gulp-git": "^2.4.1", "gulp-git-push": "^1.0.1", "gulp-rename": "^1.2.2", "gulp-sourcemaps": "^2.6.0", "gulp-tag-version": "^1.3.0", "gulp-uglify": "^3.0.0", "pump": "^1.0.2", - "run-sequence": "^1.2.2", - "yargs": "^8.0.1" + "run-sequence": "^2.0.0", + "yargs": "^8.0.2" } } diff --git a/yarn.lock b/yarn.lock index def81d6..d2dfedc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -195,16 +195,6 @@ camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" -chalk@*, chalk@^1.0.0, chalk@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" @@ -215,9 +205,19 @@ chalk@^0.5.0: strip-ansi "^0.3.0" supports-color "^0.2.0" -clean-css@4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.3.tgz#07cfe8980edb20d455ddc23aadcf1e04c6e509ce" +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +clean-css@4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.5.tgz#d09a87a02a5375117589796ae76a063cacdb541a" dependencies: source-map "0.5.x" @@ -642,11 +642,11 @@ gulp-bump@^2.7.0: semver "^5.3.0" through2 "^2.0.1" -gulp-clean-css@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.4.1.tgz#b61a449ea056c038b8dcdc857041b2382b09b0d5" +gulp-clean-css@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.5.0.tgz#d43e747c41957995ec49bb9612f862b64329f1b0" dependencies: - clean-css "4.1.3" + clean-css "4.1.5" gulp-util "3.0.8" through2 "2.0.3" vinyl-sourcemaps-apply "0.2.1" @@ -677,9 +677,9 @@ gulp-git@^1.7.1: require-dir "^0.1.0" through2 "^0.6.5" -gulp-git@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.4.0.tgz#96e4ceebfa53385c5f266c15781e821f099e3585" +gulp-git@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.4.1.tgz#ec9eaa4e0097866cfbd6aa92ccb1016a77df03a5" dependencies: any-shell-escape "^0.1.1" gulp-util "^3.0.8" @@ -738,7 +738,7 @@ gulp-uglify@^3.0.0: uglify-js "^3.0.5" vinyl-sourcemaps-apply "^0.2.0" -gulp-util@*, gulp-util@3.0.8, gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7, gulp-util@^3.0.8: +gulp-util@3.0.8, gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7, gulp-util@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" dependencies: @@ -1742,12 +1742,12 @@ resolve@^1.1.6, resolve@^1.1.7: version "1.2.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" -run-sequence@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-1.2.2.tgz#5095a0bebe98733b0140bd08dd80ec030ddacdeb" +run-sequence@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.0.0.tgz#6ab754fe53cd771d47dbdee63c254882344d5896" dependencies: - chalk "*" - gulp-util "*" + chalk "^1.1.3" + gulp-util "^3.0.8" "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: version "5.3.0" @@ -2098,9 +2098,9 @@ yargs-parser@^7.0.0: dependencies: camelcase "^4.1.0" -yargs@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.1.tgz#420ef75e840c1457a80adcca9bc6fa3849de51aa" +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" dependencies: camelcase "^4.1.0" cliui "^3.2.0" From 8b973f9731a15e0ecd4dc30e672b7289912180c5 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 14 Jul 2017 23:15:52 -0400 Subject: [PATCH 066/226] show-todays-date with just the attribute --- README.md | 4 ++-- index.html | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 9d1a13c..6ee237f 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ This plugin exposes a directive which should be used as an attribute for an inpu Sunday) | | **disable-dates** | Date[] | Dates to be disabled or not selectable by user. | -| **show-todays-date** | Empty string | Show today's date (default: undefined) | +| **show-todays-date** | Attribute | Show today's date (default: undefined) | | **disable-parent-scroll** | Boolean | true => Disable scrolling while the dialog is open (default : false) | | **auto-ok** | Boolean | true => Single click (default: false) | | **edit-input** | Boolean | true => Input editable and don't show dialog (default: false) | diff --git a/index.html b/index.html index 67fc252..0535f76 100644 --- a/index.html +++ b/index.html @@ -53,7 +53,7 @@

Datetime Pickers

@@ -87,7 +87,7 @@

Datetime Pickers

@@ -98,7 +98,7 @@

Datetime Pickers

@@ -114,7 +114,7 @@

Datetime Pickers

@@ -125,7 +125,7 @@

Datetime Pickers

@@ -137,7 +137,7 @@

Datetime Pickers

+ placeholder="Date" show-todays-date min-date="date" ng-model="dateTimeNoMin">
From 46517fc4962cabd5e9434e42c4cbbb9ef5173593 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 22 Jul 2017 23:48:59 -0400 Subject: [PATCH 067/226] Fix #65 minute steps param, fix #113 console log --- README.md | 6 +- css/material-datetimepicker.css | 17 +++- index.html | 6 +- js/angular-material-datetimepicker.js | 113 +++++++++++++++++++++----- js/demo.js | 2 +- 5 files changed, 115 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 6ee237f..971bef0 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,13 @@ Originally designed for Bootstrap Material, this has been modified to work with [Angular Material](https://material.angularjs.org/). This is an Android style date-time picker for Angular Material. Some added features include: - Double or single click to select date and/or time +- Mouse click down with mouse move or touch move to select time - Swipe left to go to next month or Swipe right to go to previous month - Configurable first day of the week - Support 24-hour format display - Can disable dates, not selectable by user - Can disable minutes view +- 1 to 59 minute steps (normally 1, 5, 10, 15) - Compatible with right-to-left direction - Support RequireJS and Webpack @@ -87,7 +89,7 @@ This plugin exposes a directive which should be used as an attribute for an inpu @@ -120,6 +122,7 @@ The directive accepts several attributes which are described below: | **auto-ok** | Boolean | true => Single click (default: false) | | **edit-input** | Boolean | true => Input editable and don't show dialog (default: false) | | **click-outside-to-close**| Boolean | true => A click outside close the dialog (default: false) | +| **minute-steps** | Number | 1 to 59 minute steps (default: 5) | ### Date/Time Dialog Service @@ -170,5 +173,6 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. autoOk: {boolean} =false, editInput: {boolean} =false, clickOutsideToClose: {boolean} =false, + minuteSteps: {int} =5, } ``` diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index a04263d..7133a35 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -49,7 +49,6 @@ md-dialog.dtp { background: #689F38; color: #fff; text-align: center; - padding: 3px; } .dtp div.dtp-date, .dtp div.dtp-time { @@ -114,7 +113,7 @@ md-dialog.dtp { } .dtp div.dtp-picker { - padding: 10px; + padding: 10px 10px 0 10px; text-align: center; /* Prevent dialog resizing when switcing between date/time */ @@ -239,9 +238,20 @@ md-dialog.dtp { display: inline-block; } +.dtp div.dtp-picker-datetime { + padding-bottom: 25px; +} + +.dtp span.dtp-actual-meridien { + font-size: 0.6em; +} + +.dtp div.dtp-actual-meridien { + height: 20px; +} + .dtp a.dtp-meridien-am, .dtp a.dtp-meridien-pm { position: relative; - top: 10px; color: #212121; font-weight: 500; padding: 7px 5px; @@ -292,6 +302,7 @@ md-dialog.dtp { border-radius: 50% !important; background: #eee; direction: ltr; + cursor: default; } .dtp-clock-center { diff --git a/index.html b/index.html index 0535f76..c9fb3d4 100644 --- a/index.html +++ b/index.html @@ -76,7 +76,7 @@

Datetime Pickers

@@ -115,7 +115,7 @@

Datetime Pickers

@@ -181,7 +181,7 @@

Datetime Pickers

Display Picker -

Date: {{selectedDateTime|date}}

+

Date: {{selectedDateTime|date:'medium'}}

diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 9ae56ba..0d56711 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -20,8 +20,8 @@ function ngMaterialDatePicker(moment) { ' ' + '
' + '
' + - '
{{picker.currentDate.format("dddd")}}
' + - '
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
' + + '
{{picker.currentNearestMinute().format("dddd")}}
' + + '
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
' + '
' + ' ×' + '
' + @@ -40,7 +40,7 @@ function ngMaterialDatePicker(moment) { '
'+ '
' + //start time '
' + - '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' + + '
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}} {{picker.currentDate.format("A")}}
' + '
' + '
' + ' ' + @@ -49,7 +49,7 @@ function ngMaterialDatePicker(moment) { ' ' + - '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' + + '
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' + ' ' + @@ -101,7 +101,8 @@ function ngMaterialDatePicker(moment) { disableParentScroll: false, autoOk: false, editInput: false, - clickOutsideToClose: false + clickOutsideToClose: false, + minuteSteps: 5 }; return default_params; }]) @@ -134,6 +135,7 @@ function ngMaterialDatePicker(moment) { autoOk: '=', editInput: '=', clickOutsideToClose: '=', + minuteSteps: '=' }, link: function (scope, element, attrs, ngModel) { var isOn = false; @@ -255,13 +257,13 @@ function ngMaterialDatePicker(moment) { disableParentScroll: {boolean} =false, autoOk: {boolean} =false, editInput: {boolean} =false, - clickOutsideToClose: {boolean} =false + clickOutsideToClose: {boolean} =false, + minuteSteps: {int} =5 } @return promise */ .factory('mdcDateTimeDialog', ["$mdDialog", "$q", "mdcDefaultParams", function ($mdDialog, $q, mdcDefaultParams) { var accepted_options = Object.keys(mdcDefaultParams); - console.log(accepted_options); var service = { show: function (options) { var deferred = $q.defer(); @@ -326,11 +328,14 @@ function ngMaterialDatePicker(moment) { this.initDates(); this.start(); }, - currentNearest5Minute: function () { + currentNearestMinute: function () { + var nearestMin = this.params.minuteSteps; + if (nearestMin < 1 || nearestMin > 59) nearestMin = 1; + var date = this.currentDate || moment(); - var minutes = (5 * Math.round(date.minute() / 5)); + var minutes = (nearestMin * Math.round(date.minute() / nearestMin)); if (minutes >= 60) { - minutes = 55; //always push down + minutes = 60 - nearestMin; //always push down } return moment(date).minutes(minutes); }, @@ -536,10 +541,11 @@ function ngMaterialDatePicker(moment) { } }, today: function () { + var nearestMin = this.params.minuteSteps; var date = moment(); - var minutes = (5 * Math.round(date.minute() / 5)); + var minutes = (nearestMin * Math.round(date.minute() / nearestMin)); if (minutes >= 60) { - minutes = 55; //always push down + minutes = 60 - nearestMin; //always push down } this.selectDate(moment(date).minutes(minutes)); }, @@ -878,11 +884,11 @@ function ngMaterialDatePicker(moment) { }; }); angular.module(moduleName) - .directive('mdcDatetimePickerClock', [ - function () { + .directive('mdcDatetimePickerClock', ['$timeout', + function ($timeout) { var template = - '
 ' + + '
 ' + '
' + ' {{point.display}}' + ' {{point.display}}' + @@ -904,6 +910,70 @@ function ngMaterialDatePicker(moment) { var picker = scope.picker; //banking on the fact that there will only be one at a time var componentRoot = document.querySelector('md-dialog.dtp'); + + var setTimeDegRay = function(deg, ray) { + var val = 0; + deg = deg >= 360 ? 0 : deg; + if (deg !== 0) { + var divider = minuteMode ? 60 : 12; + val = Math.round(divider / 360 * deg); + } + + if (minuteMode) { + var nearestMin = picker.params.minuteSteps; + if (nearestMin < 1 || nearestMin > 59) nearestMin = 1; + + var minutes = (nearestMin * Math.round(val / nearestMin)); + if (minutes >= 60) { + minutes = 60 - nearestMin; //always push down + } + picker.currentDate.minute(minutes); + } else { + if (val === 12) val = 0; + if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM'; + picker.currentDate.hour(picker.isPM() ? val + 12 : val); + } + picker.currentDate.second(0); + }; + + var isTouchSupported = ('ontouchstart' in window) ? true : false, + EVENTS = { + POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown', + POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup', + POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove' + }; + + var onMoveEvent = function(e) { + e.preventDefault(); + + var closestTarget = e.currentTarget.closest('div'), + clientRect = closestTarget.getClientRects()[0]; + + if (isTouchSupported) e = e.changedTouches[0]; + + var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)), + y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2)); + + var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); + var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI))); + + $timeout(function() { + setTimeDegRay(deg+180, ray); + }); + }; + + element.on(EVENTS.POINTER_DOWN, function() { + element.on(EVENTS.POINTER_MOVE, onMoveEvent); + }); + + element.on(EVENTS.POINTER_UP, function() { + element.off(EVENTS.POINTER_MOVE); + }); + + scope.$on("$destroy", function() { + element.off(EVENTS.POINTER_MOVE, onMoveEvent); + }); + var exec = function () { var clock = angular.element(element[0].querySelector('.dtp-picker-clock')), pickerEl = angular.element(componentRoot.querySelector('.dtp-picker')); @@ -1010,13 +1080,12 @@ function ngMaterialDatePicker(moment) { }; var animateHands = function () { - var _date = picker.currentNearest5Minute(); + var _date = picker.currentNearestMinute(); var h = _date.hour(); var m = _date.minute(); - rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h); - var mdg = ((360 / 60) * (5 * Math.round(m / 5))); - rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg); + rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h); + rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m); }; var rotateElement = function (el, deg) { @@ -1030,13 +1099,13 @@ function ngMaterialDatePicker(moment) { var setCurrentValue = function () { - var date = picker.currentNearest5Minute(); + var date = picker.currentNearestMinute(); var nbH = picker.params.shortTime ? 12 : 24; scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH); }; scope.$watch(function () { - var tmp = picker.currentNearest5Minute(); + var tmp = picker.currentNearestMinute(); return tmp ? tmp.format('HH:mm') : ''; }, function () { setCurrentValue(); @@ -1054,6 +1123,8 @@ function ngMaterialDatePicker(moment) { picker.currentDate.hour(picker.isPM() ? (val + 12) : val); } else { picker.currentDate.hour(val); + if (val >= 12) picker.meridien = 'PM'; + else picker.meridien = 'AM'; } // single click if (picker.params.autoOk) { diff --git a/js/demo.js b/js/demo.js index e496992..169b48d 100644 --- a/js/demo.js +++ b/js/demo.js @@ -46,7 +46,7 @@ currentDate: moment().startOf('day'), maxDate: $scope.maxDate, showTodaysDate: '', - time: false, + time: true, clickOutsideToClose: true }) .then(function (date) { From 56c09bc4b56042c4942e0fc149cba1934995e6fc Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 22 Jul 2017 23:57:58 -0400 Subject: [PATCH 068/226] version 1.7.0 --- README.md | 31 ++++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- package.json | 4 +-- yarn.lock | 14 ++++----- 7 files changed, 29 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 971bef0..b369ce7 100644 --- a/README.md +++ b/README.md @@ -15,15 +15,16 @@ Originally designed for Bootstrap Material, this has been modified to work with ## Updates -| Date | Author | Description | -| ---------- | -------- | ---------------------------------------------------- | -| 2017-04-26 | hexadecy | New 24-hour clock face | -| 2017-04-17 | hexadecy | Single click to select | -| 2017-02-27 | hexadecy | Can hide minutes view, Month next and prev buttons | -| 2017-02-22 | hexadecy | Fix for rtl website | -| 2017-02-15 | hexadecy | Fix inputs are not bluring after selection is made | -| 2017-01-30 | hexadecy | Add support for angular 1.6.x | -| 2015-11-12 | logbon72 | Adapted plugin for Angular Material | +| Date | Author | Description | +| ---------- | -------- | ------------------------------------------------------ | +| 2017-07-22 | hexadecy | Mouse or touch move to select time, minute steps param | +| 2017-04-26 | hexadecy | New 24-hour clock face | +| 2017-04-17 | hexadecy | Single click to select | +| 2017-02-27 | hexadecy | Can hide minutes view, Month next and prev buttons | +| 2017-02-22 | hexadecy | Fix for rtl website | +| 2017-02-15 | hexadecy | Fix inputs are not bluring after selection is made | +| 2017-01-30 | hexadecy | Add support for angular 1.6.x | +| 2015-11-12 | logbon72 | Adapted plugin for Angular Material | ### Dependencies @@ -54,15 +55,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index ee3c958..c6cd6f0 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.7", + "version": "1.7.0", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 14533bd..5af41d4 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function t(t){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},r='
{{picker.currentDate.format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(e,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"="},link:function(i,s,c,o){var l=!1;i.format||(i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=t()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=t(i.currentDate,i.format)),o&&(o.$options=o.$options.createChild({"*":"$inherit",debounce:500}),o.$formatters.push(function(e){if(void 0!==e){var a=t(e);return a.isValid()?a.format(i.format):""}}),o.$parsers.push(function(e){if(void 0!==e){var a=t(e,i.format);return a.isValid()?a._d:void 0}})),i.editInput||s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!l){l=!0;var u={};for(var m in c)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=d;var p={options:u};e.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(e){i.currentDate=e?e._d:e,l=!1,t(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){l=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(e,a,i){var s=Object.keys(i);return console.log(s),{show:function(c){var o=a.defer();angular.copy(i);for(var l in c)-1!=s.indexOf[l]&&c.hasOwnProperty(l)&&c[l];var d=null;void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(d=t()),c.showTodaysDate=d;var u={options:c};return e.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:c.clickOutsideToClose||!1,disableParentScroll:c.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;o.resolve(t?t._d:t)},function(){o.reject()}),o.promise}}}]);var n=function(t,e,i){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearest5Minute:function(){var e=this.currentDate||t(),a=5*Math.round(e.minute()/5);return a>=60&&(a=55),t(e).minutes(a)},initDates:function(){var e=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==e.params.format&&null!==e.params.format?t(a,e.params.format).locale(e.params.lang):t(a).locale(e.params.lang);else if("number"==typeof a)r=t(a).locale(e.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,t()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(e){return t(e).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=t(this.minDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(e,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=t(this.maxDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(e){e&&(this.currentDate=t(e),this.isAfterMinDate(this.currentDate)||(this.currentDate=t(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=t(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=t(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(e){var a=t(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(e)).minute(0).second(0):a.hour(e).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(e){var a=t(this.currentDate);return a.minute(e).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var e=t(),a=5*Math.round(e.minute()/5);a>=60&&(a=55),this.selectDate(t(e).minutes(a))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(e).directive("mdcDatetimePickerCalendar",[function(){for(var e=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),t.push(i.toString());if(s.week=t,n.maxDate||n.minDate){var c=n.minDate?r(n.minDate):0,o=n.maxDate?r(n.maxDate)+1:e;s.months=a.slice(c,o)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(e){var a=(e+1)%12||12,i=1920+Math.floor(e/12),r=t(n.currentDate).year(i).month(a);return c(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(e,a){if(e!=a){var i=t(e,"YYYY-MM"),c=n.minDate?r(n.minDate):0,o=r(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(e){var a={};if(null!==e){a.name=e.format("MMMM YYYY");var i=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute()),r=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(r.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",[function(){return{restrict:"E",template:'',link:function(t,e,a){var r="minutes"===a.mode,n=t.picker,s=document.querySelector("md-dialog.dtp"),c=function(){var c=angular.element(e[0].querySelector(".dtp-picker-clock")),l=angular.element(s.querySelector(".dtp-picker")),u=s.querySelector(".dtp-content").offsetWidth,m=parseInt(i(l,"paddingLeft").replace("px",""))||0,p=parseInt(i(l,"paddingRight").replace("px",""))||0,h=u-((parseInt(i(c,"marginLeft").replace("px",""))||0)+(parseInt(i(c,"marginRight").replace("px",""))||0)+m+p);c.css("width",h+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,D=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(c,"marginLeft").replace("px",""))||0,g=parseInt(i(c,"marginTop").replace("px",""))||0,k=h/2,M=k/1.2,y=[],x=0;x<12;++x){var b=k+M*Math.sin(2*Math.PI*(x/12))+f/2-(f+v),T=k-M*Math.cos(2*Math.PI*(x/12))-g/2-(D+g),w={left:b,top:T,value:r?5*x:x,style:{"margin-left":b+"px","margin-top":T+"px"}};r?w.display=w.value<10?"0"+w.value:w.value:n.params.shortTime?w.display=0===x?12:x:w.display=x,y.push(w)}if(t.points=y,!n.params.shortTime&&!r){for(var A=[],I=k/1.8,Y=12;Y<24;++Y){var S=k+I*Math.sin(2*Math.PI*(Y/12))+f/2-(f+v),P=k-I*Math.cos(2*Math.PI*(Y/12))-g/2-(D+g),V={left:S,top:P,value:Y,style:{"margin-left":S+"px","margin-top":P+"px"}};V.display=Y,A.push(V)}t.points24=A}t.mode=a.mode,d(),c.css("height",h+"px");var H=e[0].querySelector(".dtp-clock-center"),O=H.offsetWidth/2||7.5,C=H.offsetHeight/2||7.5,E=k/(n.params.shortTime?1.8:2.3),$=k/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*v+"px",height:E+"px",marginTop:k-E-f+"px"}).addClass(r?"":"on"),angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*v+"px",height:$+"px",marginTop:k-$-f+"px"}).addClass(r?"on":""),angular.element(H).css({left:k+f+v-O+"px",marginTop:k-v/2-C+"px"}),o()},o=function(){var t=n.currentNearest5Minute(),a=t.hour(),i=t.minute();l(angular.element(e[0].querySelector(".dtp-hour-hand")),30*a);var r=5*Math.round(i/5)*6;l(angular.element(e[0].querySelector(".dtp-minute-hand")),r)},l=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},d=function(){var e=n.currentNearest5Minute(),a=n.params.shortTime?12:24;t.currentValue=r?e.minute():e.hour()%a};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(){d(),o()}),t.setTime=function(e){r?(e===t.currentValue&&n.ok(),n.currentDate.minute(e)):(e!==t.currentValue||n.params.autoOk||n.ok(),n.params.shortTime?n.currentDate.hour(n.isPM()?e+12:e):n.currentDate.hour(e),n.params.autoOk&&n.ok()),n.currentDate.second(0)},t.pointAvailable=function(t){return r?n.isMinuteAvailable(t.value):n.isHourAvailable(t.value)};var u=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c(),u()})}}}]),e}var e=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],t):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!e?module.exports=t(require("moment")):t(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function t(t){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(e,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,o,c){var l=!1;i.format||(i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=t()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=t(i.currentDate,i.format)),c&&(c.$options=c.$options.createChild({"*":"$inherit",debounce:500}),c.$formatters.push(function(e){if(void 0!==e){var a=t(e);return a.isValid()?a.format(i.format):""}}),c.$parsers.push(function(e){if(void 0!==e){var a=t(e,i.format);return a.isValid()?a._d:void 0}})),i.editInput||s.on("focus",function(c){if(c.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!l){l=!0;var u={};for(var m in o)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=d;var p={options:u};e.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(e){i.currentDate=e?e._d:e,l=!1,t(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){l=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(e,a,i){var s=Object.keys(i);return{show:function(o){var c=a.defer();angular.copy(i);for(var l in o)-1!=s.indexOf[l]&&o.hasOwnProperty(l)&&o[l];var d=null;void 0!==o.showTodaysDate&&"false"!==o.showTodaysDate&&(d=t()),o.showTodaysDate=d;var u={options:o};return e.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:o.clickOutsideToClose||!1,disableParentScroll:o.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}}}]);var n=function(t,e,i){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||e>59)&&(e=1);var a=this.currentDate||t(),i=e*Math.round(a.minute()/e);return i>=60&&(i=60-e),t(a).minutes(i)},initDates:function(){var e=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==e.params.format&&null!==e.params.format?t(a,e.params.format).locale(e.params.lang):t(a).locale(e.params.lang);else if("number"==typeof a)r=t(a).locale(e.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,t()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(e){return t(e).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=t(this.minDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(e,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=t(this.maxDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(e){e&&(this.currentDate=t(e),this.isAfterMinDate(this.currentDate)||(this.currentDate=t(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=t(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=t(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(e){var a=t(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(e)).minute(0).second(0):a.hour(e).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(e){var a=t(this.currentDate);return a.minute(e).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var e=this.params.minuteSteps,a=t(),i=e*Math.round(a.minute()/e);i>=60&&(i=60-e),this.selectDate(t(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(e).directive("mdcDatetimePickerCalendar",[function(){for(var e=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),t.push(i.toString());if(s.week=t,n.maxDate||n.minDate){var o=n.minDate?r(n.minDate):0,c=n.maxDate?r(n.maxDate)+1:e;s.months=a.slice(o,c)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(e){var a=(e+1)%12||12,i=1920+Math.floor(e/12),r=t(n.currentDate).year(i).month(a);return o(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(e,a){if(e!=a){var i=t(e,"YYYY-MM"),o=n.minDate?r(n.minDate):0,c=r(i,o);s.topIndex!=c&&(s.topIndex=c)}});var o=function(e){var a={};if(null!==e){a.name=e.format("MMMM YYYY");var i=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute()),r=i.format("d");a.days=[];for(var o=i.date();o<=i.daysInMonth();o++){if(o===i.date()){var c=s.week.indexOf(r.toString());if(c>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(t){return{restrict:"E",template:'',link:function(e,a,r){var n="minutes"===r.mode,s=e.picker,o=document.querySelector("md-dialog.dtp"),c=function(t,e){var a=0;if(0!==(t=t>=360?0:t)){var i=n?60:12;a=Math.round(i/360*t)}if(n){var r=s.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),s.currentDate.minute(o)}else 12===a&&(a=0),s.params.shortTime||(s.meridien=e>84?"AM":"PM"),s.currentDate.hour(s.isPM()?a+12:a);s.currentDate.second(0)},l="ontouchstart"in window,d={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},u=function(e){e.preventDefault();var a=e.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(e=e.changedTouches[0]);var r=a.offsetWidth/2-(e.pageX-i.left),n=e.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),o=Math.round(Math.atan2(r,n)*(180/Math.PI));t(function(){c(o+180,s)})};a.on(d.POINTER_DOWN,function(){a.on(d.POINTER_MOVE,u)}),a.on(d.POINTER_UP,function(){a.off(d.POINTER_MOVE)}),e.$on("$destroy",function(){a.off(d.POINTER_MOVE,u)});var m=function(){var t=angular.element(a[0].querySelector(".dtp-picker-clock")),c=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,d=parseInt(i(c,"paddingLeft").replace("px",""))||0,u=parseInt(i(c,"paddingRight").replace("px",""))||0,m=l-((parseInt(i(t,"marginLeft").replace("px",""))||0)+(parseInt(i(t,"marginRight").replace("px",""))||0)+d+u);t.css("width",m+"px");for(var h=parseInt(i(c,"paddingLeft").replace("px",""))||0,v=parseInt(i(c,"paddingTop").replace("px",""))||0,D=parseInt(i(t,"marginLeft").replace("px",""))||0,g=parseInt(i(t,"marginTop").replace("px",""))||0,k=m/2,M=k/1.2,y=[],x=0;x<12;++x){var b=k+M*Math.sin(2*Math.PI*(x/12))+h/2-(h+D),T=k-M*Math.cos(2*Math.PI*(x/12))-g/2-(v+g),w={left:b,top:T,value:n?5*x:x,style:{"margin-left":b+"px","margin-top":T+"px"}};n?w.display=w.value<10?"0"+w.value:w.value:s.params.shortTime?w.display=0===x?12:x:w.display=x,y.push(w)}if(e.points=y,!s.params.shortTime&&!n){for(var I=[],A=k/1.8,P=12;P<24;++P){var S=k+A*Math.sin(2*Math.PI*(P/12))+h/2-(h+D),Y=k-A*Math.cos(2*Math.PI*(P/12))-g/2-(v+g),O={left:S,top:Y,value:P,style:{"margin-left":S+"px","margin-top":Y+"px"}};O.display=P,I.push(O)}e.points24=I}e.mode=r.mode,f(),t.css("height",m+"px");var V=a[0].querySelector(".dtp-clock-center"),E=V.offsetWidth/2||7.5,H=V.offsetHeight/2||7.5,N=k/(s.params.shortTime?1.8:2.3),C=k/1.5;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*D+"px",height:N+"px",marginTop:k-N-h+"px"}).addClass(n?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*D+"px",height:C+"px",marginTop:k-C-h+"px"}).addClass(n?"on":""),angular.element(V).css({left:k+h+D-E+"px",marginTop:k-D/2-H+"px"}),p()},p=function(){var t=s.currentNearestMinute(),e=t.hour(),i=t.minute();h(angular.element(a[0].querySelector(".dtp-hour-hand")),30*e),h(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i)},h=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},f=function(){var t=s.currentNearestMinute(),a=s.params.shortTime?12:24;e.currentValue=n?t.minute():t.hour()%a};e.$watch(function(){var t=s.currentNearestMinute();return t?t.format("HH:mm"):""},function(){f(),p()}),e.setTime=function(t){n?(t===e.currentValue&&s.ok(),s.currentDate.minute(t)):(t!==e.currentValue||s.params.autoOk||s.ok(),s.params.shortTime?s.currentDate.hour(s.isPM()?t+12:t):(s.currentDate.hour(t),s.meridien=t>=12?"PM":"AM"),s.params.autoOk&&s.ok()),s.currentDate.second(0)},e.pointAvailable=function(t){return n?s.isMinuteAvailable(t.value):s.isHourAvailable(t.value)};var v=e.$watch(function(){return a[0].querySelectorAll("div").length},function(){m(),v()})}}}]),e}var e=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],t):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!e?module.exports=t(require("moment")):t(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index ffadbf6..99670cf 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","editInput","clickOutsideToClose","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","$options","createChild","*","debounce","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","console","log","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","left","sin","PI","top","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","val","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\nfunction ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearest5Minute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$options = ngModel.$options.createChild({\r\n '*': '$inherit',\r\n debounce: 500\r\n });\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n console.log(accepted_options);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearest5Minute: function () {\r\n var date = this.currentDate || moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var date = moment();\r\n var minutes = (5 * Math.round(date.minute() / 5));\r\n if (minutes >= 60) {\r\n minutes = 55; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', [\r\n function () {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearest5Minute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), (360 / 12) * h);\r\n var mdg = ((360 / 60) * (5 * Math.round(m / 5)));\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), mdg);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearest5Minute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearest5Minute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n}\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","$options","createChild","*","debounce","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\nfunction ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}} {{picker.currentDate.format(\"A\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$options = ngModel.$options.createChild({\r\n '*': '$inherit',\r\n debounce: 500\r\n });\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else {\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n}\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 4e01b31..e47f075 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:1px;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:1px;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)} \ No newline at end of file diff --git a/package.json b/package.json index 41f7ee8..f33e1e6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.6.7", + "version": "1.7.0", "keywords": [ "css", "js", @@ -29,7 +29,7 @@ "devDependencies": { "gulp": "^3.9.1", "gulp-bump": "^2.7.0", - "gulp-clean-css": "^3.5.0", + "gulp-clean-css": "^3.7.0", "gulp-filter": "^5.0.0", "gulp-git": "^2.4.1", "gulp-git-push": "^1.0.1", diff --git a/yarn.lock b/yarn.lock index d2dfedc..9cf2cb8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -215,9 +215,9 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -clean-css@4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.5.tgz#d09a87a02a5375117589796ae76a063cacdb541a" +clean-css@4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.7.tgz#b9aea4f85679889cf3eae8b40349ec4ebdfdd032" dependencies: source-map "0.5.x" @@ -642,11 +642,11 @@ gulp-bump@^2.7.0: semver "^5.3.0" through2 "^2.0.1" -gulp-clean-css@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.5.0.tgz#d43e747c41957995ec49bb9612f862b64329f1b0" +gulp-clean-css@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.7.0.tgz#54b33526dc899930949fb37b4cacf851c5d5d93b" dependencies: - clean-css "4.1.5" + clean-css "4.1.7" gulp-util "3.0.8" through2 "2.0.3" vinyl-sourcemaps-apply "0.2.1" From 26b76bd7fd789963e8cd5bb2aee0dd2b4d320eaa Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 23 Jul 2017 00:13:14 -0400 Subject: [PATCH 069/226] align close button --- css/material-datetimepicker.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index 7133a35..204a07b 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -127,7 +127,7 @@ md-dialog.dtp { .dtp .dtp-close { position: absolute; - top: 1px; + top: 0; right: 5px; font-size: 16px; } From 78987791e718eefcc045bd338bf7ce90fc20820c Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 24 Jul 2017 17:10:55 -0400 Subject: [PATCH 070/226] fix #14 ngModelOptions for Angular 1.5- --- js/angular-material-datetimepicker.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 0d56711..e484ee0 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -159,10 +159,9 @@ function ngMaterialDatePicker(moment) { } if (ngModel) { - ngModel.$options = ngModel.$options.createChild({ - '*': '$inherit', - debounce: 500 - }); + var ngModelOptions = {'*': '$inherit', debounce: 500}; + ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions; + ngModel.$formatters.push(function (value) { if (typeof value === 'undefined') return; var m = moment(value); From 93488569f9c89af62d212c5d53bc24f39afbd13b Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 24 Jul 2017 17:14:20 -0400 Subject: [PATCH 071/226] version 1.7.1 --- README.md | 12 ++++++------ bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- package.json | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index b369ce7..33f5ce7 100644 --- a/README.md +++ b/README.md @@ -55,15 +55,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index c6cd6f0..5624e9f 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.7.0", + "version": "1.7.1", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 5af41d4..721420d 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function t(t){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(e,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,o,c){var l=!1;i.format||(i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=t()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=t(i.currentDate,i.format)),c&&(c.$options=c.$options.createChild({"*":"$inherit",debounce:500}),c.$formatters.push(function(e){if(void 0!==e){var a=t(e);return a.isValid()?a.format(i.format):""}}),c.$parsers.push(function(e){if(void 0!==e){var a=t(e,i.format);return a.isValid()?a._d:void 0}})),i.editInput||s.on("focus",function(c){if(c.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!l){l=!0;var u={};for(var m in o)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=d;var p={options:u};e.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(e){i.currentDate=e?e._d:e,l=!1,t(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){l=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(e,a,i){var s=Object.keys(i);return{show:function(o){var c=a.defer();angular.copy(i);for(var l in o)-1!=s.indexOf[l]&&o.hasOwnProperty(l)&&o[l];var d=null;void 0!==o.showTodaysDate&&"false"!==o.showTodaysDate&&(d=t()),o.showTodaysDate=d;var u={options:o};return e.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:o.clickOutsideToClose||!1,disableParentScroll:o.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}}}]);var n=function(t,e,i){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||e>59)&&(e=1);var a=this.currentDate||t(),i=e*Math.round(a.minute()/e);return i>=60&&(i=60-e),t(a).minutes(i)},initDates:function(){var e=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==e.params.format&&null!==e.params.format?t(a,e.params.format).locale(e.params.lang):t(a).locale(e.params.lang);else if("number"==typeof a)r=t(a).locale(e.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,t()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(e){return t(e).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=t(this.minDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(e,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=t(this.maxDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(e){e&&(this.currentDate=t(e),this.isAfterMinDate(this.currentDate)||(this.currentDate=t(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=t(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=t(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(e){var a=t(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(e)).minute(0).second(0):a.hour(e).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(e){var a=t(this.currentDate);return a.minute(e).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var e=this.params.minuteSteps,a=t(),i=e*Math.round(a.minute()/e);i>=60&&(i=60-e),this.selectDate(t(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(e).directive("mdcDatetimePickerCalendar",[function(){for(var e=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),t.push(i.toString());if(s.week=t,n.maxDate||n.minDate){var o=n.minDate?r(n.minDate):0,c=n.maxDate?r(n.maxDate)+1:e;s.months=a.slice(o,c)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(e){var a=(e+1)%12||12,i=1920+Math.floor(e/12),r=t(n.currentDate).year(i).month(a);return o(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(e,a){if(e!=a){var i=t(e,"YYYY-MM"),o=n.minDate?r(n.minDate):0,c=r(i,o);s.topIndex!=c&&(s.topIndex=c)}});var o=function(e){var a={};if(null!==e){a.name=e.format("MMMM YYYY");var i=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute()),r=i.format("d");a.days=[];for(var o=i.date();o<=i.daysInMonth();o++){if(o===i.date()){var c=s.week.indexOf(r.toString());if(c>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(t){return{restrict:"E",template:'',link:function(e,a,r){var n="minutes"===r.mode,s=e.picker,o=document.querySelector("md-dialog.dtp"),c=function(t,e){var a=0;if(0!==(t=t>=360?0:t)){var i=n?60:12;a=Math.round(i/360*t)}if(n){var r=s.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),s.currentDate.minute(o)}else 12===a&&(a=0),s.params.shortTime||(s.meridien=e>84?"AM":"PM"),s.currentDate.hour(s.isPM()?a+12:a);s.currentDate.second(0)},l="ontouchstart"in window,d={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},u=function(e){e.preventDefault();var a=e.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(e=e.changedTouches[0]);var r=a.offsetWidth/2-(e.pageX-i.left),n=e.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),o=Math.round(Math.atan2(r,n)*(180/Math.PI));t(function(){c(o+180,s)})};a.on(d.POINTER_DOWN,function(){a.on(d.POINTER_MOVE,u)}),a.on(d.POINTER_UP,function(){a.off(d.POINTER_MOVE)}),e.$on("$destroy",function(){a.off(d.POINTER_MOVE,u)});var m=function(){var t=angular.element(a[0].querySelector(".dtp-picker-clock")),c=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,d=parseInt(i(c,"paddingLeft").replace("px",""))||0,u=parseInt(i(c,"paddingRight").replace("px",""))||0,m=l-((parseInt(i(t,"marginLeft").replace("px",""))||0)+(parseInt(i(t,"marginRight").replace("px",""))||0)+d+u);t.css("width",m+"px");for(var h=parseInt(i(c,"paddingLeft").replace("px",""))||0,v=parseInt(i(c,"paddingTop").replace("px",""))||0,D=parseInt(i(t,"marginLeft").replace("px",""))||0,g=parseInt(i(t,"marginTop").replace("px",""))||0,k=m/2,M=k/1.2,y=[],x=0;x<12;++x){var b=k+M*Math.sin(2*Math.PI*(x/12))+h/2-(h+D),T=k-M*Math.cos(2*Math.PI*(x/12))-g/2-(v+g),w={left:b,top:T,value:n?5*x:x,style:{"margin-left":b+"px","margin-top":T+"px"}};n?w.display=w.value<10?"0"+w.value:w.value:s.params.shortTime?w.display=0===x?12:x:w.display=x,y.push(w)}if(e.points=y,!s.params.shortTime&&!n){for(var I=[],A=k/1.8,P=12;P<24;++P){var S=k+A*Math.sin(2*Math.PI*(P/12))+h/2-(h+D),Y=k-A*Math.cos(2*Math.PI*(P/12))-g/2-(v+g),O={left:S,top:Y,value:P,style:{"margin-left":S+"px","margin-top":Y+"px"}};O.display=P,I.push(O)}e.points24=I}e.mode=r.mode,f(),t.css("height",m+"px");var V=a[0].querySelector(".dtp-clock-center"),E=V.offsetWidth/2||7.5,H=V.offsetHeight/2||7.5,N=k/(s.params.shortTime?1.8:2.3),C=k/1.5;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*D+"px",height:N+"px",marginTop:k-N-h+"px"}).addClass(n?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*D+"px",height:C+"px",marginTop:k-C-h+"px"}).addClass(n?"on":""),angular.element(V).css({left:k+h+D-E+"px",marginTop:k-D/2-H+"px"}),p()},p=function(){var t=s.currentNearestMinute(),e=t.hour(),i=t.minute();h(angular.element(a[0].querySelector(".dtp-hour-hand")),30*e),h(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i)},h=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},f=function(){var t=s.currentNearestMinute(),a=s.params.shortTime?12:24;e.currentValue=n?t.minute():t.hour()%a};e.$watch(function(){var t=s.currentNearestMinute();return t?t.format("HH:mm"):""},function(){f(),p()}),e.setTime=function(t){n?(t===e.currentValue&&s.ok(),s.currentDate.minute(t)):(t!==e.currentValue||s.params.autoOk||s.ok(),s.params.shortTime?s.currentDate.hour(s.isPM()?t+12:t):(s.currentDate.hour(t),s.meridien=t>=12?"PM":"AM"),s.params.autoOk&&s.ok()),s.currentDate.second(0)},e.pointAvailable=function(t){return n?s.isMinuteAvailable(t.value):s.isHourAvailable(t.value)};var v=e.$watch(function(){return a[0].querySelectorAll("div").length},function(){m(),v()})}}}]),e}var e=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],t):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!e?module.exports=t(require("moment")):t(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function t(t){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(e,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,o,c){var l=!1;i.format||(i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var d=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=t()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=t(i.currentDate,i.format)),c){var u={"*":"$inherit",debounce:500};c.$options=c.$options?c.$options.createChild(u):u,c.$formatters.push(function(e){if(void 0!==e){var a=t(e);return a.isValid()?a.format(i.format):""}}),c.$parsers.push(function(e){if(void 0!==e){var a=t(e,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(c){if(c.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!l){l=!0;var u={};for(var m in o)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=d;var p={options:u};e.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(e){i.currentDate=e?e._d:e,l=!1,t(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){l=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(e,a,i){var s=Object.keys(i);return{show:function(o){var c=a.defer();angular.copy(i);for(var l in o)-1!=s.indexOf[l]&&o.hasOwnProperty(l)&&o[l];var d=null;void 0!==o.showTodaysDate&&"false"!==o.showTodaysDate&&(d=t()),o.showTodaysDate=d;var u={options:o};return e.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:o.clickOutsideToClose||!1,disableParentScroll:o.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}}}]);var n=function(t,e,i){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||e>59)&&(e=1);var a=this.currentDate||t(),i=e*Math.round(a.minute()/e);return i>=60&&(i=60-e),t(a).minutes(i)},initDates:function(){var e=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==e.params.format&&null!==e.params.format?t(a,e.params.format).locale(e.params.lang):t(a).locale(e.params.lang);else if("number"==typeof a)r=t(a).locale(e.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,t()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(e){return t(e).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=t(this.minDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(e,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=t(this.maxDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(e){e&&(this.currentDate=t(e),this.isAfterMinDate(this.currentDate)||(this.currentDate=t(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=t(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=t(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(e){var a=t(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(e)).minute(0).second(0):a.hour(e).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(e){var a=t(this.currentDate);return a.minute(e).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var e=this.params.minuteSteps,a=t(),i=e*Math.round(a.minute()/e);i>=60&&(i=60-e),this.selectDate(t(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(e).directive("mdcDatetimePickerCalendar",[function(){for(var e=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),t.push(i.toString());if(s.week=t,n.maxDate||n.minDate){var o=n.minDate?r(n.minDate):0,c=n.maxDate?r(n.maxDate)+1:e;s.months=a.slice(o,c)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(e){var a=(e+1)%12||12,i=1920+Math.floor(e/12),r=t(n.currentDate).year(i).month(a);return o(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(e,a){if(e!=a){var i=t(e,"YYYY-MM"),o=n.minDate?r(n.minDate):0,c=r(i,o);s.topIndex!=c&&(s.topIndex=c)}});var o=function(e){var a={};if(null!==e){a.name=e.format("MMMM YYYY");var i=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute()),r=i.format("d");a.days=[];for(var o=i.date();o<=i.daysInMonth();o++){if(o===i.date()){var c=s.week.indexOf(r.toString());if(c>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(t){return{restrict:"E",template:'',link:function(e,a,r){var n="minutes"===r.mode,s=e.picker,o=document.querySelector("md-dialog.dtp"),c=function(t,e){var a=0;if(0!==(t=t>=360?0:t)){var i=n?60:12;a=Math.round(i/360*t)}if(n){var r=s.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),s.currentDate.minute(o)}else 12===a&&(a=0),s.params.shortTime||(s.meridien=e>84?"AM":"PM"),s.currentDate.hour(s.isPM()?a+12:a);s.currentDate.second(0)},l="ontouchstart"in window,d={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},u=function(e){e.preventDefault();var a=e.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(e=e.changedTouches[0]);var r=a.offsetWidth/2-(e.pageX-i.left),n=e.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),o=Math.round(Math.atan2(r,n)*(180/Math.PI));t(function(){c(o+180,s)})};a.on(d.POINTER_DOWN,function(){a.on(d.POINTER_MOVE,u)}),a.on(d.POINTER_UP,function(){a.off(d.POINTER_MOVE)}),e.$on("$destroy",function(){a.off(d.POINTER_MOVE,u)});var m=function(){var t=angular.element(a[0].querySelector(".dtp-picker-clock")),c=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,d=parseInt(i(c,"paddingLeft").replace("px",""))||0,u=parseInt(i(c,"paddingRight").replace("px",""))||0,m=l-((parseInt(i(t,"marginLeft").replace("px",""))||0)+(parseInt(i(t,"marginRight").replace("px",""))||0)+d+u);t.css("width",m+"px");for(var h=parseInt(i(c,"paddingLeft").replace("px",""))||0,v=parseInt(i(c,"paddingTop").replace("px",""))||0,D=parseInt(i(t,"marginLeft").replace("px",""))||0,g=parseInt(i(t,"marginTop").replace("px",""))||0,k=m/2,M=k/1.2,y=[],x=0;x<12;++x){var b=k+M*Math.sin(2*Math.PI*(x/12))+h/2-(h+D),T=k-M*Math.cos(2*Math.PI*(x/12))-g/2-(v+g),w={left:b,top:T,value:n?5*x:x,style:{"margin-left":b+"px","margin-top":T+"px"}};n?w.display=w.value<10?"0"+w.value:w.value:s.params.shortTime?w.display=0===x?12:x:w.display=x,y.push(w)}if(e.points=y,!s.params.shortTime&&!n){for(var I=[],A=k/1.8,P=12;P<24;++P){var S=k+A*Math.sin(2*Math.PI*(P/12))+h/2-(h+D),Y=k-A*Math.cos(2*Math.PI*(P/12))-g/2-(v+g),O={left:S,top:Y,value:P,style:{"margin-left":S+"px","margin-top":Y+"px"}};O.display=P,I.push(O)}e.points24=I}e.mode=r.mode,f(),t.css("height",m+"px");var V=a[0].querySelector(".dtp-clock-center"),E=V.offsetWidth/2||7.5,H=V.offsetHeight/2||7.5,N=k/(s.params.shortTime?1.8:2.3),C=k/1.5;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*D+"px",height:N+"px",marginTop:k-N-h+"px"}).addClass(n?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*D+"px",height:C+"px",marginTop:k-C-h+"px"}).addClass(n?"on":""),angular.element(V).css({left:k+h+D-E+"px",marginTop:k-D/2-H+"px"}),p()},p=function(){var t=s.currentNearestMinute(),e=t.hour(),i=t.minute();h(angular.element(a[0].querySelector(".dtp-hour-hand")),30*e),h(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i)},h=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},f=function(){var t=s.currentNearestMinute(),a=s.params.shortTime?12:24;e.currentValue=n?t.minute():t.hour()%a};e.$watch(function(){var t=s.currentNearestMinute();return t?t.format("HH:mm"):""},function(){f(),p()}),e.setTime=function(t){n?(t===e.currentValue&&s.ok(),s.currentDate.minute(t)):(t!==e.currentValue||s.params.autoOk||s.ok(),s.params.shortTime?s.currentDate.hour(s.isPM()?t+12:t):(s.currentDate.hour(t),s.meridien=t>=12?"PM":"AM"),s.params.autoOk&&s.ok()),s.currentDate.second(0)},e.pointAvailable=function(t){return n?s.isMinuteAvailable(t.value):s.isHourAvailable(t.value)};var v=e.$watch(function(){return a[0].querySelectorAll("div").length},function(){m(),v()})}}}]),e}var e=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],t):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!e?module.exports=t(require("moment")):t(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 99670cf..30e9760 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","$options","createChild","*","debounce","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\nfunction ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}} {{picker.currentDate.format(\"A\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n ngModel.$options = ngModel.$options.createChild({\r\n '*': '$inherit',\r\n debounce: 500\r\n });\r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else {\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n}\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\nfunction ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}} {{picker.currentDate.format(\"A\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else {\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n}\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index e47f075..4ae7c1d 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:1px;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)} \ No newline at end of file diff --git a/package.json b/package.json index f33e1e6..95a47b5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.7.0", + "version": "1.7.1", "keywords": [ "css", "js", From 541ff02a843d6cfeb8e651075382557ba109794a Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 30 Jul 2017 23:29:18 -0400 Subject: [PATCH 072/226] fix #105 weekDays param --- README.md | 4 +++ dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- index.html | 27 ++++++++++++------- js/angular-material-datetimepicker.js | 14 ++++++++++ package.json | 8 +++--- yarn.lock | 24 ++++++++--------- 7 files changed, 54 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 33f5ce7..ad5deb9 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Originally designed for Bootstrap Material, this has been modified to work with - Configurable first day of the week - Support 24-hour format display - Can disable dates, not selectable by user +- Highlight Week days (Business Days) - Can disable minutes view - 1 to 59 minute steps (normally 1, 5, 10, 15) - Compatible with right-to-left direction @@ -17,6 +18,7 @@ Originally designed for Bootstrap Material, this has been modified to work with | Date | Author | Description | | ---------- | -------- | ------------------------------------------------------ | +| 2017-07-30 | hexadecy | Highlight only week-days (business days) | | 2017-07-22 | hexadecy | Mouse or touch move to select time, minute steps param | | 2017-04-26 | hexadecy | New 24-hour clock face | | 2017-04-17 | hexadecy | Single click to select | @@ -118,6 +120,7 @@ The directive accepts several attributes which are described below: | **ok-text** | String | Text for the OK button (default: OK) | | **week-start** | Number | First day of the week (default: 0 => Sunday) | | **disable-dates** | Date[] | Dates to be disabled or not selectable by user. | +| **week-days** | Boolean | true => Highlight only week-days (default: false) | | **show-todays-date** | Attribute | Show today's date (default: undefined) | | **disable-parent-scroll** | Boolean | true => Disable scrolling while the dialog is open (default : false) | | **auto-ok** | Boolean | true => Single click (default: false) | @@ -170,6 +173,7 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. amText: {string} ='AM', pmText: {string} ='PM', disableDates: {date[]} =[], + weekDays: {boolean} =false, disableParentScroll: {boolean} = false, autoOk: {boolean} =false, editInput: {boolean} =false, diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 721420d..e43db83 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function t(t){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(e,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,o,c){var l=!1;i.format||(i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var d=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=t()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=t(i.currentDate,i.format)),c){var u={"*":"$inherit",debounce:500};c.$options=c.$options?c.$options.createChild(u):u,c.$formatters.push(function(e){if(void 0!==e){var a=t(e);return a.isValid()?a.format(i.format):""}}),c.$parsers.push(function(e){if(void 0!==e){var a=t(e,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(c){if(c.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!l){l=!0;var u={};for(var m in o)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=d;var p={options:u};e.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(e){i.currentDate=e?e._d:e,l=!1,t(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){l=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(e,a,i){var s=Object.keys(i);return{show:function(o){var c=a.defer();angular.copy(i);for(var l in o)-1!=s.indexOf[l]&&o.hasOwnProperty(l)&&o[l];var d=null;void 0!==o.showTodaysDate&&"false"!==o.showTodaysDate&&(d=t()),o.showTodaysDate=d;var u={options:o};return e.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:o.clickOutsideToClose||!1,disableParentScroll:o.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}}}]);var n=function(t,e,i){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||e>59)&&(e=1);var a=this.currentDate||t(),i=e*Math.round(a.minute()/e);return i>=60&&(i=60-e),t(a).minutes(i)},initDates:function(){var e=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==e.params.format&&null!==e.params.format?t(a,e.params.format).locale(e.params.lang):t(a).locale(e.params.lang);else if("number"==typeof a)r=t(a).locale(e.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,t()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(e){return t(e).format("MMMM Do YYYY")}),this.selectDate(this.currentDate)},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=t(this.minDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(e,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=t(this.maxDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},selectDate:function(e){e&&(this.currentDate=t(e),this.isAfterMinDate(this.currentDate)||(this.currentDate=t(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=t(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=t(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(e){var a=t(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(e)).minute(0).second(0):a.hour(e).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(e){var a=t(this.currentDate);return a.minute(e).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var e=this.params.minuteSteps,a=t(),i=e*Math.round(a.minute()/e);i>=60&&(i=60-e),this.selectDate(t(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(e).directive("mdcDatetimePickerCalendar",[function(){for(var e=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),t.push(i.toString());if(s.week=t,n.maxDate||n.minDate){var o=n.minDate?r(n.minDate):0,c=n.maxDate?r(n.maxDate)+1:e;s.months=a.slice(o,c)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(e){var a=(e+1)%12||12,i=1920+Math.floor(e/12),r=t(n.currentDate).year(i).month(a);return o(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(e,a){if(e!=a){var i=t(e,"YYYY-MM"),o=n.minDate?r(n.minDate):0,c=r(i,o);s.topIndex!=c&&(s.topIndex=c)}});var o=function(e){var a={};if(null!==e){a.name=e.format("MMMM YYYY");var i=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute()),r=i.format("d");a.days=[];for(var o=i.date();o<=i.daysInMonth();o++){if(o===i.date()){var c=s.week.indexOf(r.toString());if(c>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(t){return{restrict:"E",template:'',link:function(e,a,r){var n="minutes"===r.mode,s=e.picker,o=document.querySelector("md-dialog.dtp"),c=function(t,e){var a=0;if(0!==(t=t>=360?0:t)){var i=n?60:12;a=Math.round(i/360*t)}if(n){var r=s.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),s.currentDate.minute(o)}else 12===a&&(a=0),s.params.shortTime||(s.meridien=e>84?"AM":"PM"),s.currentDate.hour(s.isPM()?a+12:a);s.currentDate.second(0)},l="ontouchstart"in window,d={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},u=function(e){e.preventDefault();var a=e.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(e=e.changedTouches[0]);var r=a.offsetWidth/2-(e.pageX-i.left),n=e.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),o=Math.round(Math.atan2(r,n)*(180/Math.PI));t(function(){c(o+180,s)})};a.on(d.POINTER_DOWN,function(){a.on(d.POINTER_MOVE,u)}),a.on(d.POINTER_UP,function(){a.off(d.POINTER_MOVE)}),e.$on("$destroy",function(){a.off(d.POINTER_MOVE,u)});var m=function(){var t=angular.element(a[0].querySelector(".dtp-picker-clock")),c=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,d=parseInt(i(c,"paddingLeft").replace("px",""))||0,u=parseInt(i(c,"paddingRight").replace("px",""))||0,m=l-((parseInt(i(t,"marginLeft").replace("px",""))||0)+(parseInt(i(t,"marginRight").replace("px",""))||0)+d+u);t.css("width",m+"px");for(var h=parseInt(i(c,"paddingLeft").replace("px",""))||0,v=parseInt(i(c,"paddingTop").replace("px",""))||0,D=parseInt(i(t,"marginLeft").replace("px",""))||0,g=parseInt(i(t,"marginTop").replace("px",""))||0,k=m/2,M=k/1.2,y=[],x=0;x<12;++x){var b=k+M*Math.sin(2*Math.PI*(x/12))+h/2-(h+D),T=k-M*Math.cos(2*Math.PI*(x/12))-g/2-(v+g),w={left:b,top:T,value:n?5*x:x,style:{"margin-left":b+"px","margin-top":T+"px"}};n?w.display=w.value<10?"0"+w.value:w.value:s.params.shortTime?w.display=0===x?12:x:w.display=x,y.push(w)}if(e.points=y,!s.params.shortTime&&!n){for(var I=[],A=k/1.8,P=12;P<24;++P){var S=k+A*Math.sin(2*Math.PI*(P/12))+h/2-(h+D),Y=k-A*Math.cos(2*Math.PI*(P/12))-g/2-(v+g),O={left:S,top:Y,value:P,style:{"margin-left":S+"px","margin-top":Y+"px"}};O.display=P,I.push(O)}e.points24=I}e.mode=r.mode,f(),t.css("height",m+"px");var V=a[0].querySelector(".dtp-clock-center"),E=V.offsetWidth/2||7.5,H=V.offsetHeight/2||7.5,N=k/(s.params.shortTime?1.8:2.3),C=k/1.5;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:k+1.5*D+"px",height:N+"px",marginTop:k-N-h+"px"}).addClass(n?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:k+1.5*D+"px",height:C+"px",marginTop:k-C-h+"px"}).addClass(n?"on":""),angular.element(V).css({left:k+h+D-E+"px",marginTop:k-D/2-H+"px"}),p()},p=function(){var t=s.currentNearestMinute(),e=t.hour(),i=t.minute();h(angular.element(a[0].querySelector(".dtp-hour-hand")),30*e),h(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i)},h=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},f=function(){var t=s.currentNearestMinute(),a=s.params.shortTime?12:24;e.currentValue=n?t.minute():t.hour()%a};e.$watch(function(){var t=s.currentNearestMinute();return t?t.format("HH:mm"):""},function(){f(),p()}),e.setTime=function(t){n?(t===e.currentValue&&s.ok(),s.currentDate.minute(t)):(t!==e.currentValue||s.params.autoOk||s.ok(),s.params.shortTime?s.currentDate.hour(s.isPM()?t+12:t):(s.currentDate.hour(t),s.meridien=t>=12?"PM":"AM"),s.params.autoOk&&s.ok()),s.currentDate.second(0)},e.pointAvailable=function(t){return n?s.isMinuteAvailable(t.value):s.isHourAvailable(t.value)};var v=e.$watch(function(){return a[0].querySelectorAll("div").length},function(){m(),v()})}}}]),e}var e=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],t):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!e?module.exports=t(require("moment")):t(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function t(t){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(e,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,o,c){var l=!1;i.format||(i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var d=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=t()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=t(i.currentDate,i.format)),c){var u={"*":"$inherit",debounce:500};c.$options=c.$options?c.$options.createChild(u):u,c.$formatters.push(function(e){if(void 0!==e){var a=t(e);return a.isValid()?a.format(i.format):""}}),c.$parsers.push(function(e){if(void 0!==e){var a=t(e,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(c){if(c.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!l){l=!0;var u={};for(var m in o)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=d;var p={options:u};e.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(e){i.currentDate=e?e._d:e,l=!1,t(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){l=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(e,a,i){var s=Object.keys(i);return{show:function(o){var c=a.defer();angular.copy(i);for(var l in o)-1!=s.indexOf[l]&&o.hasOwnProperty(l)&&o[l];var d=null;void 0!==o.showTodaysDate&&"false"!==o.showTodaysDate&&(d=t()),o.showTodaysDate=d;var u={options:o};return e.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:o.clickOutsideToClose||!1,disableParentScroll:o.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}}}]);var n=function(t,e,i){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||e>59)&&(e=1);var a=this.currentDate||t(),i=e*Math.round(a.minute()/e);return i>=60&&(i=60-e),t(a).minutes(i)},initDates:function(){var e=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==e.params.format&&null!==e.params.format?t(a,e.params.format).locale(e.params.lang):t(a).locale(e.params.lang);else if("number"==typeof a)r=t(a).locale(e.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,t()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(e){return t(e).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=t(this.minDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(e,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=t(this.maxDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},isWeekDay:function(t){return!this.weekDays||t.isoWeekday()<=5},selectDate:function(e){e&&(this.currentDate=t(e),this.isAfterMinDate(this.currentDate)||(this.currentDate=t(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=t(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=t(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(e){var a=t(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(e)).minute(0).second(0):a.hour(e).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(e){var a=t(this.currentDate);return a.minute(e).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var e=this.params.minuteSteps,a=t(),i=e*Math.round(a.minute()/e);i>=60&&(i=60-e),this.selectDate(t(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(e).directive("mdcDatetimePickerCalendar",[function(){for(var e=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),t.push(i.toString());if(s.week=t,n.maxDate||n.minDate){var o=n.minDate?r(n.minDate):0,c=n.maxDate?r(n.maxDate)+1:e;s.months=a.slice(o,c)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(e){var a=(e+1)%12||12,i=1920+Math.floor(e/12),r=t(n.currentDate).year(i).month(a);return o(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(e,a){if(e!=a){var i=t(e,"YYYY-MM"),o=n.minDate?r(n.minDate):0,c=r(i,o);s.topIndex!=c&&(s.topIndex=c)}});var o=function(e){var a={};if(null!==e){a.name=e.format("MMMM YYYY");var i=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute()),r=i.format("d");a.days=[];for(var o=i.date();o<=i.daysInMonth();o++){if(o===i.date()){var c=s.week.indexOf(r.toString());if(c>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(t){return{restrict:"E",template:'',link:function(e,a,r){var n="minutes"===r.mode,s=e.picker,o=document.querySelector("md-dialog.dtp"),c=function(t,e){var a=0;if(0!==(t=t>=360?0:t)){var i=n?60:12;a=Math.round(i/360*t)}if(n){var r=s.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),s.currentDate.minute(o)}else 12===a&&(a=0),s.params.shortTime||(s.meridien=e>84?"AM":"PM"),s.currentDate.hour(s.isPM()?a+12:a);s.currentDate.second(0)},l="ontouchstart"in window,d={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},u=function(e){e.preventDefault();var a=e.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(e=e.changedTouches[0]);var r=a.offsetWidth/2-(e.pageX-i.left),n=e.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),o=Math.round(Math.atan2(r,n)*(180/Math.PI));t(function(){c(o+180,s)})};a.on(d.POINTER_DOWN,function(){a.on(d.POINTER_MOVE,u)}),a.on(d.POINTER_UP,function(){a.off(d.POINTER_MOVE)}),e.$on("$destroy",function(){a.off(d.POINTER_MOVE,u)});var m=function(){var t=angular.element(a[0].querySelector(".dtp-picker-clock")),c=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,d=parseInt(i(c,"paddingLeft").replace("px",""))||0,u=parseInt(i(c,"paddingRight").replace("px",""))||0,m=l-((parseInt(i(t,"marginLeft").replace("px",""))||0)+(parseInt(i(t,"marginRight").replace("px",""))||0)+d+u);t.css("width",m+"px");for(var h=parseInt(i(c,"paddingLeft").replace("px",""))||0,D=parseInt(i(c,"paddingTop").replace("px",""))||0,v=parseInt(i(t,"marginLeft").replace("px",""))||0,k=parseInt(i(t,"marginTop").replace("px",""))||0,g=m/2,M=g/1.2,y=[],x=0;x<12;++x){var b=g+M*Math.sin(2*Math.PI*(x/12))+h/2-(h+v),T=g-M*Math.cos(2*Math.PI*(x/12))-k/2-(D+k),w={left:b,top:T,value:n?5*x:x,style:{"margin-left":b+"px","margin-top":T+"px"}};n?w.display=w.value<10?"0"+w.value:w.value:s.params.shortTime?w.display=0===x?12:x:w.display=x,y.push(w)}if(e.points=y,!s.params.shortTime&&!n){for(var I=[],A=g/1.8,P=12;P<24;++P){var S=g+A*Math.sin(2*Math.PI*(P/12))+h/2-(h+v),Y=g-A*Math.cos(2*Math.PI*(P/12))-k/2-(D+k),O={left:S,top:Y,value:P,style:{"margin-left":S+"px","margin-top":Y+"px"}};O.display=P,I.push(O)}e.points24=I}e.mode=r.mode,f(),t.css("height",m+"px");var V=a[0].querySelector(".dtp-clock-center"),E=V.offsetWidth/2||7.5,H=V.offsetHeight/2||7.5,N=g/(s.params.shortTime?1.8:2.3),C=g/1.5;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:g+1.5*v+"px",height:N+"px",marginTop:g-N-h+"px"}).addClass(n?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:g+1.5*v+"px",height:C+"px",marginTop:g-C-h+"px"}).addClass(n?"on":""),angular.element(V).css({left:g+h+v-E+"px",marginTop:g-v/2-H+"px"}),p()},p=function(){var t=s.currentNearestMinute(),e=t.hour(),i=t.minute();h(angular.element(a[0].querySelector(".dtp-hour-hand")),30*e),h(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i)},h=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},f=function(){var t=s.currentNearestMinute(),a=s.params.shortTime?12:24;e.currentValue=n?t.minute():t.hour()%a};e.$watch(function(){var t=s.currentNearestMinute();return t?t.format("HH:mm"):""},function(){f(),p()}),e.setTime=function(t){n?(t===e.currentValue&&s.ok(),s.currentDate.minute(t)):(t!==e.currentValue||s.params.autoOk||s.ok(),s.params.shortTime?s.currentDate.hour(s.isPM()?t+12:t):(s.currentDate.hour(t),s.meridien=t>=12?"PM":"AM"),s.params.autoOk&&s.ok()),s.currentDate.second(0)},e.pointAvailable=function(t){return n?s.isMinuteAvailable(t.value):s.isHourAvailable(t.value)};var D=e.$watch(function(){return a[0].querySelectorAll("div").length},function(){m(),D()})}}}]),e}var e=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],t):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!e?module.exports=t(require("moment")):t(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 30e9760..1471a64 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDays","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\nfunction ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}} {{picker.currentDate.format(\"A\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else {\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n}\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\nfunction ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}} {{picker.currentDate.format(\"A\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else {\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n}\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/index.html b/index.html index c9fb3d4..de53270 100644 --- a/index.html +++ b/index.html @@ -8,20 +8,20 @@ - + - - - + + + - - + + - - - + + + @@ -175,6 +175,15 @@

Datetime Pickers

+
+ + + + +
+
+

mdcDateTimeDialog Service

diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index e484ee0..6de071e 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -98,6 +98,7 @@ function ngMaterialDatePicker(moment) { pmText: 'PM', todayText: 'Today', disableDates: [], + weekDays: false, disableParentScroll: false, autoOk: false, editInput: false, @@ -121,6 +122,7 @@ function ngMaterialDatePicker(moment) { minDate: '=', maxDate: '=', disableDates: '=', + weekDays: '=', shortTime: '=', weekStart: '=', format: '@', @@ -253,6 +255,7 @@ function ngMaterialDatePicker(moment) { amText: {string} ='AM', pmText: {string} ='PM', disableDates: {date[]} =[], + weekDays: {boolean} =false, disableParentScroll: {boolean} =false, autoOk: {boolean} =false, editInput: {boolean} =false, @@ -374,6 +377,7 @@ function ngMaterialDatePicker(moment) { return moment(x).format('MMMM Do YYYY'); }); this.selectDate(this.currentDate); + this.weekDays = this.params.weekDays; }, initDate: function () { this.currentView = VIEW_STATES.DATE; @@ -457,6 +461,15 @@ function ngMaterialDatePicker(moment) { } return true; }, + isWeekDay: function(date) { + if (this.weekDays) { + if (date.isoWeekday() <= 5) { + return true; + } + return false; + } + return true; + }, selectDate: function (date) { if (date) { this.currentDate = moment(date); @@ -766,6 +779,7 @@ function ngMaterialDatePicker(moment) { calendar.isInRange = function (date) { return picker.isAfterMinDate(moment(date), false, false) && picker.isBeforeMaxDate(moment(date), false, false) && + picker.isWeekDay(moment(date)) && picker.isInDisableDates(moment(date)); }; diff --git a/package.json b/package.json index 95a47b5..a9e1008 100644 --- a/package.json +++ b/package.json @@ -16,9 +16,9 @@ "homepage": "https://beenote.github.io/angular-material-datetimepicker/", "main": "js/angular-material-datetimepicker.js", "dependencies": { - "angular": "^1.6.4", - "angular-animate": "^1.6.4", - "angular-aria": "^1.6.4", + "angular": "^1.6.5", + "angular-animate": "^1.6.5", + "angular-aria": "^1.6.5", "angular-material": "^1.1.4", "moment": "^2.18.1" }, @@ -38,7 +38,7 @@ "gulp-tag-version": "^1.3.0", "gulp-uglify": "^3.0.0", "pump": "^1.0.2", - "run-sequence": "^2.0.0", + "run-sequence": "^2.1.0", "yargs": "^8.0.2" } } diff --git a/yarn.lock b/yarn.lock index 9cf2cb8..51e9d15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,21 +31,21 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.4.tgz#d3eb906d39834f2dfbdd982e6b8d7a3b4d9001d2" +angular-animate@^1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.5.tgz#3817c75880d05fc899a6c8d4b09d1cc62a71e93a" -angular-aria@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.4.tgz#c8683666ace196668f68e7220811bdcfc9e106e4" +angular-aria@^1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.5.tgz#37d9d35349df57934968dc7e1679d97ea96f863c" angular-material@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.4.tgz#27de35646f54ccd320080af0c708e1b438af87f6" -angular@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.4.tgz#03b7b15c01a0802d7e2cf593240e604054dc77fb" +angular@^1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.5.tgz#37f788eebec5ce2e3fa02b17bbcb2a231576a0d6" ansi-cyan@^0.1.1: version "0.1.1" @@ -1742,9 +1742,9 @@ resolve@^1.1.6, resolve@^1.1.7: version "1.2.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" -run-sequence@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.0.0.tgz#6ab754fe53cd771d47dbdee63c254882344d5896" +run-sequence@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.1.0.tgz#149da012516f21dcf79db6dc99a2a95603631b21" dependencies: chalk "^1.1.3" gulp-util "^3.0.8" From 3f579320016992d4f17592a8248b21d4f3c3b0de Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 30 Jul 2017 23:31:47 -0400 Subject: [PATCH 073/226] version 1.7.2 --- README.md | 12 ++++++------ bower.json | 2 +- package.json | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ad5deb9..5d18115 100644 --- a/README.md +++ b/README.md @@ -57,15 +57,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 5624e9f..8a51c5a 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.7.1", + "version": "1.7.2", "keywords": [ "css", "js", diff --git a/package.json b/package.json index a9e1008..26d57ed 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.7.1", + "version": "1.7.2", "keywords": [ "css", "js", From a4935628085225721f97e28b5f1fd41ee0405ed4 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 12 Aug 2017 15:55:03 -0400 Subject: [PATCH 074/226] #14 new seconds selection clock --- README.md | 35 +- bower.json | 2 +- css/material-datetimepicker.css | 5 + dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- gulpfile.js | 24 +- index.html | 25 +- js/angular-material-datetimepicker.js | 150 +-- package.json | 10 +- yarn.lock | 924 +----------------- 11 files changed, 164 insertions(+), 1017 deletions(-) diff --git a/README.md b/README.md index 5d18115..0766106 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Originally designed for Bootstrap Material, this has been modified to work with - Highlight Week days (Business Days) - Can disable minutes view - 1 to 59 minute steps (normally 1, 5, 10, 15) +- Optionnal seconds clock - Compatible with right-to-left direction - Support RequireJS and Webpack @@ -18,7 +19,8 @@ Originally designed for Bootstrap Material, this has been modified to work with | Date | Author | Description | | ---------- | -------- | ------------------------------------------------------ | -| 2017-07-30 | hexadecy | Highlight only week-days (business days) | +| 2017-08-12 | hexadecy | Add optionnal seconds clock | +| 2017-07-30 | hexadecy | Highlight only week-days (business days) | | 2017-07-22 | hexadecy | Mouse or touch move to select time, minute steps param | | 2017-04-26 | hexadecy | New 24-hour clock face | | 2017-04-17 | hexadecy | Single click to select | @@ -57,15 +59,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example @@ -107,7 +109,7 @@ The directive accepts several attributes which are described below: | Name | Type | Description | | ------------------------- | ----------------------- | -------------------------------------------------------------------- | | **ng-model** | (String\|Date\|Moment | Initial Date or model to assign the date to | -| **ng-change** | Function | A function to call when the input value changes. | +| **ng-change** | Function | A function to call when the input value changes | | **format** | String | [MomentJS Format](momentjs.com/docs/#/parsing/string-format/),defaults to `HH:mm` for time picker only, `YYYY-MM-DD` for date picker only and `YYYY-MM-DD HH:mm` for both timepicker and date picker | | **short-time** | Boolean | true => Display 12 hours AM\|PM (default: false) | | **min-date** | (String\|Date\|Moment) | Minimum selectable date | @@ -115,11 +117,12 @@ The directive accepts several attributes which are described below: | **date** | Boolean | true => Has Datepicker (default: true) | | **time** | Boolean | true => Has Timepicker (default: true) | | **minutes** | Boolean | true => Has Timepicker minutes (default: true) | +| **seconds** | Boolean | true => Has Timepicker seconds (default: false) | | **cancel-text** | String | Text for the cancel button (default: Cancel) | | **today-text** | String | Text for the today button (default: Today) | | **ok-text** | String | Text for the OK button (default: OK) | | **week-start** | Number | First day of the week (default: 0 => Sunday) | -| **disable-dates** | Date[] | Dates to be disabled or not selectable by user. | +| **disable-dates** | Date[] | Dates to be disabled or not selectable by user | | **week-days** | Boolean | true => Highlight only week-days (default: false) | | **show-todays-date** | Attribute | Show today's date (default: undefined) | | **disable-parent-scroll** | Boolean | true => Disable scrolling while the dialog is open (default : false) | @@ -141,13 +144,12 @@ Example usage: mdcDateTimeDialog.show({ maxDate: $scope.maxDate, time: false - }) - .then(function (date) { - $scope.selectedDateTime = date; - console.log('New Date / Time selected:', date); - }, function() { - console.log('Selection canceled'); - }); + }).then(function (date) { + $scope.selectedDateTime = date; + console.log('New Date / Time selected:', date); + }, function() { + console.log('Selection canceled'); + }); }; }) ``` @@ -159,6 +161,7 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. date: {boolean} =true, time: {boolean} =true, minutes: {boolean} =true, + seconds: {boolean} =true, format: {string} ='YYYY-MM-DD', minDate: {strign} =null, maxDate: {string} =null, diff --git a/bower.json b/bower.json index 8a51c5a..ba98ff0 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.7.2", + "version": "1.8.0", "keywords": [ "css", "js", diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index 204a07b..750f25c 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -335,6 +335,11 @@ md-dialog.dtp { margin-left: -1px; } +.dtp .dtp-second-hand { + width: 1px; + margin-left: -1px; +} + .dtp .dtp-hand.on { background: #8BC34A; } diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index e43db83..f7ef36c 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function t(t){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(t,e){return t=angular.element(t),"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(t){this.locale=t}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(t){return{date:!0,time:!0,minutes:!0,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:t.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(e,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,o,c){var l=!1;i.format||(i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var d=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=t()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=t(i.currentDate,i.format)),c){var u={"*":"$inherit",debounce:500};c.$options=c.$options?c.$options.createChild(u):u,c.$formatters.push(function(e){if(void 0!==e){var a=t(e);return a.isValid()?a.format(i.format):""}}),c.$parsers.push(function(e){if(void 0!==e){var a=t(e,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(c){if(c.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!l){l=!0;var u={};for(var m in o)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=d;var p={options:u};e.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(e){i.currentDate=e?e._d:e,l=!1,t(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){l=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(e,a,i){var s=Object.keys(i);return{show:function(o){var c=a.defer();angular.copy(i);for(var l in o)-1!=s.indexOf[l]&&o.hasOwnProperty(l)&&o[l];var d=null;void 0!==o.showTodaysDate&&"false"!==o.showTodaysDate&&(d=t()),o.showTodaysDate=d;var u={options:o};return e.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:o.clickOutsideToClose||!1,disableParentScroll:o.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(t){t&&t._d;c.resolve(t?t._d:t)},function(){c.reject()}),c.promise}}}]);var n=function(t,e,i){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||e>59)&&(e=1);var a=this.currentDate||t(),i=e*Math.round(a.minute()/e);return i>=60&&(i=60-e),t(a).minutes(i)},initDates:function(){var e=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==e.params.format&&null!==e.params.format?t(a,e.params.format).locale(e.params.lang):t(a).locale(e.params.lang);else if("number"==typeof a)r=t(a).locale(e.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,t()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(e){return t(e).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=t(this.minDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(e,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=t(this.maxDate),s=t(e);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(t){var e=t.format("MMMM Do YYYY");return!(this.disableDates.indexOf(e)>-1)},isWeekDay:function(t){return!this.weekDays||t.isoWeekday()<=5},selectDate:function(e){e&&(this.currentDate=t(e),this.isAfterMinDate(this.currentDate)||(this.currentDate=t(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=t(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=t(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},setName:function(){for(var t="",e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",a=0;a<5;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t},isPM:function(){return"PM"===this.meridien},incrementMonth:function(t){1===t&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(t,"month")),-1===t&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(t,"month"))},incrementYear:function(t){1===t&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(t,"year")),-1===t&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(t,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(e){var a=t(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(e)).minute(0).second(0):a.hour(e).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(e){var a=t(this.currentDate);return a.minute(e).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var e=this.params.minuteSteps,a=t(),i=e*Math.round(a.minute()/e);i>=60&&(i=60-e),this.selectDate(t(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(t){var e=t;return t<12&&this.isPM()&&(e+=12),e},hide:function(t){t?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(e).directive("mdcDatetimePickerCalendar",[function(){for(var e=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),t.push(i.toString());if(s.week=t,n.maxDate||n.minDate){var o=n.minDate?r(n.minDate):0,c=n.maxDate?r(n.maxDate)+1:e;s.months=a.slice(o,c)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(e){var a=(e+1)%12||12,i=1920+Math.floor(e/12),r=t(n.currentDate).year(i).month(a);return o(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(e,a){if(e!=a){var i=t(e,"YYYY-MM"),o=n.minDate?r(n.minDate):0,c=r(i,o);s.topIndex!=c&&(s.topIndex=c)}});var o=function(e){var a={};if(null!==e){a.name=e.format("MMMM YYYY");var i=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute()),r=i.format("d");a.days=[];for(var o=i.date();o<=i.daysInMonth();o++){if(o===i.date()){var c=s.week.indexOf(r.toString());if(c>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(t,e){n.push(""),t.forEach(function(t,a){if(n.push(""),t)if(r.isInRange(t)){var i="month['days']["+e+"]["+a+"]";n.push(''),n.push(t.format("D")),n.push("")}else n.push(''),n.push(t.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(t,a,i,r){t.cal=r,t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t),t.$watch(function(){return t.idx},function(i,n){i!=n&&(t.month=r.getItemAtIndex(parseInt(t.idx)),e(a,t))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(t){return{restrict:"E",template:'',link:function(e,a,r){var n="minutes"===r.mode,s=e.picker,o=document.querySelector("md-dialog.dtp"),c=function(t,e){var a=0;if(0!==(t=t>=360?0:t)){var i=n?60:12;a=Math.round(i/360*t)}if(n){var r=s.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),s.currentDate.minute(o)}else 12===a&&(a=0),s.params.shortTime||(s.meridien=e>84?"AM":"PM"),s.currentDate.hour(s.isPM()?a+12:a);s.currentDate.second(0)},l="ontouchstart"in window,d={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},u=function(e){e.preventDefault();var a=e.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(e=e.changedTouches[0]);var r=a.offsetWidth/2-(e.pageX-i.left),n=e.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),o=Math.round(Math.atan2(r,n)*(180/Math.PI));t(function(){c(o+180,s)})};a.on(d.POINTER_DOWN,function(){a.on(d.POINTER_MOVE,u)}),a.on(d.POINTER_UP,function(){a.off(d.POINTER_MOVE)}),e.$on("$destroy",function(){a.off(d.POINTER_MOVE,u)});var m=function(){var t=angular.element(a[0].querySelector(".dtp-picker-clock")),c=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,d=parseInt(i(c,"paddingLeft").replace("px",""))||0,u=parseInt(i(c,"paddingRight").replace("px",""))||0,m=l-((parseInt(i(t,"marginLeft").replace("px",""))||0)+(parseInt(i(t,"marginRight").replace("px",""))||0)+d+u);t.css("width",m+"px");for(var h=parseInt(i(c,"paddingLeft").replace("px",""))||0,D=parseInt(i(c,"paddingTop").replace("px",""))||0,v=parseInt(i(t,"marginLeft").replace("px",""))||0,k=parseInt(i(t,"marginTop").replace("px",""))||0,g=m/2,M=g/1.2,y=[],x=0;x<12;++x){var b=g+M*Math.sin(2*Math.PI*(x/12))+h/2-(h+v),T=g-M*Math.cos(2*Math.PI*(x/12))-k/2-(D+k),w={left:b,top:T,value:n?5*x:x,style:{"margin-left":b+"px","margin-top":T+"px"}};n?w.display=w.value<10?"0"+w.value:w.value:s.params.shortTime?w.display=0===x?12:x:w.display=x,y.push(w)}if(e.points=y,!s.params.shortTime&&!n){for(var I=[],A=g/1.8,P=12;P<24;++P){var S=g+A*Math.sin(2*Math.PI*(P/12))+h/2-(h+v),Y=g-A*Math.cos(2*Math.PI*(P/12))-k/2-(D+k),O={left:S,top:Y,value:P,style:{"margin-left":S+"px","margin-top":Y+"px"}};O.display=P,I.push(O)}e.points24=I}e.mode=r.mode,f(),t.css("height",m+"px");var V=a[0].querySelector(".dtp-clock-center"),E=V.offsetWidth/2||7.5,H=V.offsetHeight/2||7.5,N=g/(s.params.shortTime?1.8:2.3),C=g/1.5;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:g+1.5*v+"px",height:N+"px",marginTop:g-N-h+"px"}).addClass(n?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:g+1.5*v+"px",height:C+"px",marginTop:g-C-h+"px"}).addClass(n?"on":""),angular.element(V).css({left:g+h+v-E+"px",marginTop:g-v/2-H+"px"}),p()},p=function(){var t=s.currentNearestMinute(),e=t.hour(),i=t.minute();h(angular.element(a[0].querySelector(".dtp-hour-hand")),30*e),h(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i)},h=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)","-ms-transform":"rotate("+e+"deg)",transform:"rotate("+e+"deg)"})},f=function(){var t=s.currentNearestMinute(),a=s.params.shortTime?12:24;e.currentValue=n?t.minute():t.hour()%a};e.$watch(function(){var t=s.currentNearestMinute();return t?t.format("HH:mm"):""},function(){f(),p()}),e.setTime=function(t){n?(t===e.currentValue&&s.ok(),s.currentDate.minute(t)):(t!==e.currentValue||s.params.autoOk||s.ok(),s.params.shortTime?s.currentDate.hour(s.isPM()?t+12:t):(s.currentDate.hour(t),s.meridien=t>=12?"PM":"AM"),s.params.autoOk&&s.ok()),s.currentDate.second(0)},e.pointAvailable=function(t){return n?s.isMinuteAvailable(t.value):s.isHourAvailable(t.value)};var D=e.$watch(function(){return a[0].querySelectorAll("div").length},function(){m(),D()})}}}]),e}var e=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],t):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!e?module.exports=t(require("moment")):t(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm:ss" : "HH:mm:ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm:ss" : "HH:mm:ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(e){this.locale=e}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(e){return{date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:e.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,c,o){var d=!1;i.format||(i.date&&i.time&&i.seconds?i.format="YYYY-MM-DD HH:mm:ss":i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var l=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=e(i.currentDate,i.format)),o){var u={"*":"$inherit",debounce:500};o.$options=o.$options?o.$options.createChild(u):u,o.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(i.format):""}}),o.$parsers.push(function(t){if(void 0!==t){var a=e(t,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var u={};for(var m in c)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=l;var p={options:u};t.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){i.currentDate=t?t._d:t,d=!1,e(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=Object.keys(i);return{show:function(c){var o=a.defer();angular.copy(i);for(var d in c)-1!=s.indexOf[d]&&c.hasOwnProperty(d)&&c[d];var l=null;void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(l=e()),c.showTodaysDate=l;var u={options:c};return t.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:c.clickOutsideToClose||!1,disableParentScroll:c.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var n=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var r=a.second();return e(a).minutes(i).seconds(r)},initDates:function(){var t=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)r=e(a).locale(t.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=e(n,"x").locale(t.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,e()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=e(this.minDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(t,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=e(this.maxDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var a=e(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(t)).minute(0).second(0):a.hour(t).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(t){var a=e(this.currentDate);return a.minute(t).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,n.maxDate||n.minDate){var c=n.minDate?r(n.minDate):0,o=n.maxDate?r(n.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),r=e(n.currentDate).year(i).month(a);return c(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=n.minDate?r(n.minDate):0,o=r(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(r.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(e,t){n.push(""),e.forEach(function(e,a){if(n.push(""),e)if(r.isInRange(e)){var i="month['days']["+t+"]["+a+"]";n.push(''),n.push(e.format("D")),n.push("")}else n.push(''),n.push(e.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,r){e.cal=r,e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,n){i!=n&&(e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,r){var n="minutes"===r.mode,s="seconds"===r.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=n||s?60:12;a=Math.round(i/360*e)}if(n){var r=c.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),c.currentDate.minute(o)}else s?c.currentDate.second(a):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var r=a.offsetWidth/2-(t.pageX-i.left),n=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),c=Math.round(Math.atan2(r,n)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,v=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+k),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(v+g),S={left:T,top:w,value:n||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};n||s?S.display=S.value<10?"0"+S.value:S.value:c.params.shortTime?S.display=0===b?12:b:S.display=b,x.push(S)}if(t.points=x,!c.params.shortTime&&!n&&!s){for(var I=[],A=M/1.8,Y=12;Y<24;++Y){var P=M+A*Math.sin(2*Math.PI*(Y/12))+f/2-(f+k),O=M-A*Math.cos(2*Math.PI*(Y/12))-g/2-(v+g),V={left:P,top:O,value:Y,style:{"margin-left":P+"px","margin-top":O+"px"}};V.display=Y,I.push(V)}t.points24=I}t.mode=r.mode,D(),e.css("height",p+"px");var E=a[0].querySelector(".dtp-clock-center"),H=E.offsetWidth/2||7.5,N=E.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,q=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(n||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(n?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:q+"px",marginTop:M-q-f+"px"}).addClass(s?"on":""),angular.element(E).css({left:M+f+k-H+"px",marginTop:M-k/2-N+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),r=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*r)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=n?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){n||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return n?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 1471a64..581f42d 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","height","marginTop","addClass","animateHands","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\nfunction ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\") : \" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}} {{picker.currentDate.format(\"A\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n return moment(date).minutes(minutes);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n setName: function () {\r\n var text = \"\";\r\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n for (var i = 0; i < 5; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else {\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.5;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH);\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode) {\r\n // double click\r\n if (val === scope.currentValue && !picker.params.autoOk){\r\n picker.ok();\r\n }\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n // single click\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n } else {\r\n // double click\r\n if (val === scope.currentValue){\r\n picker.ok();\r\n }\r\n picker.currentDate.minute(val);\r\n }\r\n picker.currentDate.second(0);\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n}\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","addClass","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"CAAA,WACE,aAEA,SAASA,EAAqBC,GAC9B,IAAIC,EAAa,uBAEbC,GACFC,KAAM,EACNC,KAAM,EACNC,OAAQ,GAGNC,EAAM,SAAUC,EAAIC,GAEtB,OADAD,EAAKE,QAAQC,QAAQH,GACb,qBAAsBI,OAAUA,OAAOC,iBAAiBL,EAAG,IAAIC,GAAQD,EAAGD,IAAIE,IAGpFK,EACF,owJAyDFJ,QAAQK,OAAOb,GAAa,eACzBc,SAAS,iCAAkC,WAC1CC,KAAKC,OAASN,OAAOO,UAAUC,cAAgBR,OAAOO,UAAUE,UAAY,KAE5EJ,KAAKK,KAAO,WACV,OAAOL,MAGTA,KAAKM,iBAAmB,SAAUC,GAChCP,KAAKC,OAASM,KAGjBC,QAAQ,oBAAqB,iCAAkC,SAAUC,GA0BxE,OAxBEC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,SAAS,EACTC,OAAQ,aACRC,QAAS,KACTC,QAAS,KACTC,YAAa,KACbC,KAAMT,EAA+BR,OACrCkB,UAAW,EACXC,WAAW,EACXC,WAAY,SACZC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,UAAW,QACXC,gBACAC,UAAU,EACVC,qBAAqB,EACrBC,QAAQ,EACRC,WAAW,EACXC,qBAAqB,EACrBC,YAAa,MAIhBC,UAAU,qBAAsB,YAAa,WAC5C,SAAUC,EAAWC,GAEnB,OACEC,SAAU,IACVC,QAAS,UACTC,OACErB,YAAa,WACbsB,SAAU,IACV5B,KAAM,IACND,KAAM,IACNE,QAAS,IACTC,QAAS,IACTE,QAAS,IACTC,QAAS,IACTU,aAAc,IACdC,SAAU,IACVP,UAAW,IACXD,UAAW,IACXL,OAAQ,IACRO,WAAY,IACZC,OAAQ,IACRJ,KAAM,IACNK,OAAQ,IACRC,OAAQ,IACRgB,eAAgB,IAChBf,UAAW,IACXG,oBAAqB,IACrBC,OAAQ,IACRC,UAAW,IACXC,oBAAqB,IACrBC,YAAa,KAEfS,KAAM,SAAUH,EAAO5C,EAASgD,EAAOC,GACrC,IAAIC,GAAO,EACNN,EAAMxB,SACLwB,EAAM5B,MAAQ4B,EAAM3B,MAAQ2B,EAAMzB,QACpCyB,EAAMxB,OAAS,sBACNwB,EAAM5B,MAAQ4B,EAAM3B,KAC7B2B,EAAMxB,OAAS,mBACNwB,EAAM5B,KACf4B,EAAMxB,OAAS,aAEfwB,EAAMxB,OAAS,SAInB,IAAI+B,EAAe,KASnB,QAR6BC,IAAzBR,EAAME,gBAAyD,UAAzBF,EAAME,iBAC9CK,EAAe7D,KAGbS,QAAQsD,SAAST,EAAMrB,cAAsC,KAAtBqB,EAAMrB,cAC/CqB,EAAMrB,YAAcjC,EAAOsD,EAAMrB,YAAaqB,EAAMxB,SAGlD6B,EAAS,CACX,IAAIK,GAAkBC,IAAK,WAAYC,SAAU,KACjDP,EAAQQ,SAAWR,EAAQQ,SAAWR,EAAQQ,SAASC,YAAYJ,GAAkBA,EAErFL,EAAQU,YAAYC,KAAK,SAAUC,GACjC,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAIxE,EAAOuE,GACf,OAAOC,EAAEC,UAAYD,EAAE1C,OAAOwB,EAAMxB,QAAU,MAGhD6B,EAAQe,SAASJ,KAAK,SAAUC,GAC9B,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAIxE,EAAOuE,EAAOjB,EAAMxB,QAC5B,OAAI0C,EAAEC,UAAkBD,EAAEG,QAA1B,KAOCrB,EAAMR,WACTpC,EAAQkE,GAAG,QAAS,SAAUC,GAI5B,GAHAA,EAAEC,iBACFpE,EAAQqE,OACRrE,EAAQsE,SAASC,YAAY,qBACzBrB,EAAJ,CAGAA,GAAO,EACP,IAAIsB,KACJ,IAAK,IAAIC,KAAKzB,EACRJ,EAAM8B,eAAeD,KAAO1E,QAAQ4E,YAAY/B,EAAM6B,MACxDD,EAAQC,GAAK7B,EAAM6B,IAGvBD,EAAQjD,YAAcqB,EAAMrB,YAC5BiD,EAAQ1B,eAAiBK,EAEzB,IAAIyB,GAAUJ,QAASA,GACvBhC,EAAUqC,MACR1E,SAAUA,EACV2E,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRK,SAAUjF,EACVsE,OAAQvE,QAAQC,QAAQkF,SAASC,MACjCC,kBAAkB,EAClB/C,oBAAqBmC,EAAQnC,sBAAuB,EACpDH,oBAAqBsC,EAAQtC,sBAAuB,EACpDmD,aAAa,EACbC,UAAU,EACVC,UAAU,IAETC,KAAK,SAAUC,GACd7C,EAAMrB,YAAckE,EAAIA,EAAExB,GAAKwB,EAC/BvC,GAAO,EAEF5D,EAAOsD,EAAMrB,aAAamE,OAAOlB,EAAQjD,cAC5CkB,EAASG,EAAMC,SAAU,GAG3B7C,EAAQsE,SAASC,YAAY,qBAE5B,WACDrB,GAAO,EACPlD,EAAQsE,SAASC,YAAY,8BAwC5CzD,QAAQ,qBAAsB,YAAa,KAAM,mBAAoB,SAAU0B,EAAWmD,EAAIC,GAC7F,IAAIC,EAAmBC,OAAOC,KAAKH,GAuCnC,OArCEf,KAAM,SAAUL,GACd,IAAIwB,EAAWL,EAAGM,QACLlG,QAAQmG,KAAKN,GAC1B,IAAK,IAAInB,KAAKD,GACwB,GAAhCqB,EAAiBM,QAAQ1B,IAAYD,EAAQE,eAAeD,IACrDD,EAAQC,GAIrB,IAAItB,EAAe,UACYC,IAA3BoB,EAAQ1B,gBAA2D,UAA3B0B,EAAQ1B,iBAClDK,EAAe7D,KAEjBkF,EAAQ1B,eAAiBK,EAEzB,IAAIyB,GAAUJ,QAASA,GAkBvB,OAjBAhC,EAAUqC,MACR1E,SAAUA,EACV2E,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRN,OAAQvE,QAAQC,QAAQkF,SAASC,MACjCC,kBAAkB,EAClB/C,oBAAqBmC,EAAQnC,sBAAuB,EACpDH,oBAAqBsC,EAAQtC,sBAAuB,EACpDoD,UAAU,EACVC,UAAU,IACTC,KAAK,SAAUC,GACEA,GAAIA,EAAExB,GACxB+B,EAASI,QAAQX,EAAIA,EAAExB,GAAKwB,IAC3B,WACDO,EAASK,WAEJL,EAASM,aAQxB,IAAIvB,EAAmB,SAAUwB,EAAQ/D,EAAWoD,GAClDtF,KAAKkG,YAAchH,EAAYC,KAC/Ba,KAAKmG,QAAUjE,EAEflC,KAAKoG,mBACLpG,KAAKqG,MAAQnH,EACbc,KAAKsG,OAAS7G,QAAQmG,KAAKN,GAC3BtF,KAAKuG,SAAW,KAChBvG,KAAKsG,OAAS7G,QAAQ+G,OAAOxG,KAAKsG,OAAQtG,KAAKkE,SAE/ClE,KAAKyG,QA42BL,OAz2BFhC,EAAiBiC,SAAW,SAAU,YAAa,oBACnDjC,EAAiBkC,WACfF,KAAM,WACJzG,KAAK4G,SAAW5G,KAAKsG,OAAO3F,OAASX,KAAKsG,OAAO5F,KACjDV,KAAK6G,SAAW7G,KAAKsG,OAAO5F,KAC5BV,KAAK8G,YACL9G,KAAK+G,SAEPC,qBAAsB,WACpB,IAAIC,EAAajH,KAAKsG,OAAOtE,aACzBiF,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAIvG,EAAOV,KAAKiB,aAAejC,IAC3B4B,EAAWqG,EAAaC,KAAKC,MAAMzG,EAAK0G,SAAWH,GACnDrG,GAAW,KACbA,EAAU,GAAKqG,GAEjB,IAAIpG,EAAUH,EAAK2G,SACnB,OAAOrI,EAAO0B,GAAME,QAAQA,GAASC,QAAQA,IAE/CiG,UAAW,WACT,IAAIQ,EAAOtH,KACPuH,EAAa,SAAUC,EAAOC,GAChC,IAAIC,EAAM,KACV,GAAIjI,QAAQkI,UAAUH,IAAoB,OAAVA,GAA4B,KAAVA,EAChD,GAAI/H,QAAQsD,SAASyE,GAEjBE,OADiC,IAAxBJ,EAAKhB,OAAa,QAA4C,OAAvBgB,EAAKhB,OAAOxF,OACtD9B,EAAOwI,EAAOF,EAAKhB,OAAOxF,QAAQb,OAAOqH,EAAKhB,OAAOpF,MAGrDlC,EAAOwI,GAAOvH,OAAOqH,EAAKhB,OAAOpF,WAEpC,GAAqB,iBAAVsG,EAChBE,EAAM1I,EAAOwI,GAAOvH,OAAOqH,EAAKhB,OAAOpF,WAEvC,GAAIzB,QAAQmI,OAAOJ,GAAQ,CACzB,IAAIK,EAAIL,EAAMM,UACdJ,EAAM1I,EAAO6I,EAAG,KAAK5H,OAAOqH,EAAKhB,OAAOpF,WAC/BsG,EAAMO,mBACfL,EAAMF,QAKVE,EAAMD,EAER,OAAOC,GAGT1H,KAAKiB,YAAcsG,EAAWvH,KAAKsG,OAAOrF,YAAajC,KACvDgB,KAAKe,QAAUwG,EAAWvH,KAAKsG,OAAOvF,SACtCf,KAAKgB,QAAUuG,EAAWvH,KAAKsG,OAAOtF,SACtChB,KAAK0B,aAAe1B,KAAKsG,OAAO5E,aAAasG,IAAI,SAAUH,GACzD,OAAO7I,EAAO6I,GAAG/G,OAAO,kBAE1Bd,KAAKiI,WAAWjI,KAAKiB,aACrBjB,KAAK2B,SAAW3B,KAAKsG,OAAO3E,UAE9BuG,SAAU,WACRlI,KAAKkG,YAAchH,EAAYC,MAEjCgJ,UAAW,WACTnI,KAAKkG,YAAchH,EAAYE,MAEjCgJ,YAAa,WACXpI,KAAKkG,YAAchH,EAAYG,QAEjCgJ,YAAa,WACXrI,KAAKkG,YAAchH,EAAYoJ,QAEjCC,eAAgB,SAAU7H,EAAM8H,EAAWC,GACzC,IAAIC,GAAU,EAEd,QAA6B,IAAlB1I,KAAY,SAAsC,OAAjBA,KAAKe,QAAkB,CACjE,IAAI4H,EAAW3J,EAAOgB,KAAKe,SACvB6H,EAAQ5J,EAAO0B,GAEd8H,GAAcC,IACjBE,EAASE,KAAK,GACdF,EAASvB,OAAO,GAEhBwB,EAAMC,KAAK,GACXD,EAAMxB,OAAO,IAGfuB,EAAStB,OAAO,GAChBuB,EAAMvB,OAAO,GACbsB,EAASG,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAM9H,OAAO,OAASiI,SAASJ,EAAS7H,OAAO,OANnE8H,EAAMxB,OAAO,GACbuB,EAASvB,OAAO,GAEhBsB,EAAWK,SAASH,EAAM9H,OAAO,OAASiI,SAASJ,EAAS7H,OAAO,OAOvE,OAAO4H,GAETM,gBAAiB,SAAUtI,EAAMuI,EAAWR,GAC1C,IAAIC,GAAU,EAEd,QAA6B,IAAlB1I,KAAY,SAAsC,OAAjBA,KAAKgB,QAAkB,CACjE,IAAIkI,EAAWlK,EAAOgB,KAAKgB,SACvB4H,EAAQ5J,EAAO0B,GAEduI,GAAcR,IACjBS,EAASL,KAAK,GACdK,EAAS9B,OAAO,GAEhBwB,EAAMC,KAAK,GACXD,EAAMxB,OAAO,IAGf8B,EAAS7B,OAAO,GAChBuB,EAAMvB,OAAO,GACb6B,EAASJ,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAM9H,OAAO,OAASiI,SAASG,EAASpI,OAAO,OANnE8H,EAAMxB,OAAO,GACb8B,EAAS9B,OAAO,GAEhBsB,EAAWK,SAASH,EAAM9H,OAAO,OAASiI,SAASG,EAASpI,OAAO,OAOvE,OAAO4H,GAETS,iBAAkB,SAAUzI,GAC1B,IAAI0I,EAAM1I,EAAKI,OAAO,gBACtB,QAAId,KAAK0B,aAAamE,QAAQuD,IAAQ,IAKxCC,UAAW,SAAS3I,GAClB,OAAIV,KAAK2B,UACHjB,EAAK4I,cAAgB,GAO7BrB,WAAY,SAAUvH,GAChBA,IACFV,KAAKiB,YAAcjC,EAAO0B,GACrBV,KAAKuI,eAAevI,KAAKiB,eAC5BjB,KAAKiB,YAAcjC,EAAOgB,KAAKe,UAG5Bf,KAAKgJ,gBAAgBhJ,KAAKiB,eAC7BjB,KAAKiB,YAAcjC,EAAOgB,KAAKgB,UAEjChB,KAAKiB,YAAYhB,OAAOD,KAAKsG,OAAOpF,MACpClB,KAAKuJ,cAAgBvK,EAAOgB,KAAKiB,aACjCjB,KAAKuG,SAAWvG,KAAKiB,YAAY4H,QAAU,GAAK,KAAO,OAG3DW,KAAM,WACJ,MAAyB,OAAlBxJ,KAAKuG,UAEdkD,eAAgB,SAAUC,GACT,IAAXA,GAAgB1J,KAAK2J,sBACvB3J,KAAKiI,WAAWjI,KAAKiB,YAAY2I,IAAIF,EAAQ,WAG/B,IAAZA,GAAiB1J,KAAK6J,0BACxB7J,KAAKiI,WAAWjI,KAAKiB,YAAY2I,IAAIF,EAAQ,WAGjDI,cAAe,SAAUJ,GACR,IAAXA,GAAgB1J,KAAK+J,qBACvB/J,KAAKiI,WAAWjI,KAAKiB,YAAY2I,IAAIF,EAAQ,UAG/B,IAAZA,GAAiB1J,KAAKgK,yBACxBhK,KAAKiI,WAAWjI,KAAKiB,YAAY2I,IAAIF,EAAQ,UAGjDG,uBAAwB,WACtB,OAAO7J,KAAKuJ,eAAiBvJ,KAAKuI,eAAevJ,EAAOgB,KAAKuJ,eAAeU,QAAQ,UAAU,GAAO,IAEvGN,mBAAoB,WAClB,OAAO3J,KAAKuJ,eAAiBvJ,KAAKgJ,gBAAgBhK,EAAOgB,KAAKuJ,eAAeW,MAAM,UAAU,GAAO,IAEtGF,sBAAuB,WACrB,OAAOhK,KAAKuJ,eAAiBvJ,KAAKuI,eAAevJ,EAAOgB,KAAKuJ,eAAeU,QAAQ,SAAS,GAAO,IAEtGF,kBAAmB,WACjB,OAAO/J,KAAKuJ,eAAiBvJ,KAAKgJ,gBAAgBhK,EAAOgB,KAAKuJ,eAAeW,MAAM,SAAS,GAAO,IAErGC,gBAAiB,SAAUtB,GACzB,IAAID,EAAQ5J,EAAOgB,KAAKiB,aAMxB,OALIjB,KAAKsG,OAAOlF,UACdwH,EAAMC,KAAK7I,KAAKoK,aAAavB,IAAOzB,OAAO,GAAGC,OAAO,GAErDuB,EAAMC,KAAKA,GAAMzB,OAAO,GAAGC,OAAO,GAE7BrH,KAAKuI,eAAeK,GAAO,GAAM,IAAU5I,KAAKgJ,gBAAgBJ,GAAO,GAAM,IAEtFyB,kBAAmB,SAAUjD,GAC3B,IAAIwB,EAAQ5J,EAAOgB,KAAKiB,aAExB,OADA2H,EAAMxB,OAAOA,GAAQC,OAAO,GACrBrH,KAAKuI,eAAeK,GAAO,GAAM,IAAS5I,KAAKgJ,gBAAgBJ,GAAO,GAAM,IAErF0B,kBAAmB,SAAUjD,GAC3B,OAAO,GAETN,MAAO,WACL/G,KAAKkG,YAAchH,EAAYC,KAC3Ba,KAAKsG,OAAO5F,KACdV,KAAKkI,WAEDlI,KAAKsG,OAAO3F,MACdX,KAAKmI,aAIXoC,MAAO,WACL,IAAItD,EAAajH,KAAKsG,OAAOtE,YACzBtB,EAAO1B,IACP4B,EAAWqG,EAAaC,KAAKC,MAAMzG,EAAK0G,SAAWH,GACnDrG,GAAW,KACbA,EAAU,GAAKqG,GAEjBjH,KAAKiI,WAAWjJ,EAAO0B,GAAME,QAAQA,KAEvC4J,GAAI,WACF,OAAQxK,KAAKkG,aACX,KAAKhH,EAAYC,MACU,IAArBa,KAAKsG,OAAO3F,KACdX,KAAKmI,YAELnI,KAAKyK,MAAK,GAEZ,MACF,KAAKvL,EAAYE,MACa,IAAxBY,KAAKsG,OAAO1F,QACdZ,KAAKoI,cAELpI,KAAKyK,MAAK,GAEZ,MACF,KAAKvL,EAAYG,QACa,IAAxBW,KAAKsG,OAAOzF,QACdb,KAAKqI,cAELrI,KAAKyK,MAAK,GAEZ,MACF,KAAKvL,EAAYoJ,OACftI,KAAKyK,MAAK,KAIhBC,OAAQ,WACN,GAAI1K,KAAKsG,OAAO3F,KACd,OAAQX,KAAKkG,aACX,KAAKhH,EAAYC,KACfa,KAAKyK,OACL,MACF,KAAKvL,EAAYE,KACXY,KAAKsG,OAAO5F,KACdV,KAAKkI,WAGLlI,KAAKyK,OAEP,MACF,KAAKvL,EAAYG,OACfW,KAAKmI,YACL,MACF,KAAKjJ,EAAYoJ,OACftI,KAAKoI,mBAKTpI,KAAKyK,QAGTE,kBAAmB,WACjB3K,KAAKuJ,cAAcqB,SAAS,EAAG,WAEjCC,iBAAkB,WAChB7K,KAAKuJ,cAAcK,IAAI,EAAG,WAE5BkB,iBAAkB,WAChB9K,KAAKuJ,cAAcqB,SAAS,EAAG,UAEjCG,gBAAiB,WACf/K,KAAKuJ,cAAcK,IAAI,EAAG,UAE5BoB,SAAU,YACJhL,KAAKmK,gBAAgB,IAAMnK,KAAKmK,gBAAgB,OAC9CnK,KAAKiB,YAAY4H,QAAU,IAC7B7I,KAAKiI,WAAWjI,KAAKiB,YAAY2J,SAAS,GAAI,UAE3C5K,KAAKmK,gBAAgBnK,KAAKiB,YAAY4H,SACzC7I,KAAKiI,WAAWjI,KAAKiB,YAAY4H,KAAK7I,KAAKe,QAAQ8H,SAEhD7I,KAAKqK,kBAAkBrK,KAAKiB,YAAYmG,WAC3CpH,KAAKiI,WAAWjI,KAAKiB,YAAYmG,OAAOpH,KAAKe,QAAQqG,aAI3D6D,SAAU,YACJjL,KAAKmK,gBAAgB,KAAOnK,KAAKmK,gBAAgB,OAC/CnK,KAAKiB,YAAY4H,OAAS,IAC5B7I,KAAKiI,WAAWjI,KAAKiB,YAAY2I,IAAI,GAAI,UAEtC5J,KAAKmK,gBAAgBnK,KAAKiB,YAAY4H,SACzC7I,KAAKiI,WAAWjI,KAAKiB,YAAY4H,KAAK7I,KAAKgB,QAAQ6H,SAEhD7I,KAAKqK,kBAAkBrK,KAAKiB,YAAYmG,WAC3CpH,KAAKiI,WAAWjI,KAAKiB,YAAYmG,OAAOpH,KAAKgB,QAAQoG,aAI3DgD,aAAc,SAAUc,GACtB,IAAIxC,EAAUwC,EAId,OAHKA,EAAI,IAAOlL,KAAKwJ,SACnBd,GAAW,IAENA,GAET+B,KAAM,SAAUU,GACVA,EACFnL,KAAKmG,QAAQsE,KAAKzK,KAAKiB,aAEvBjB,KAAKmG,QAAQuE,WAKnBjL,QAAQK,OAAOb,GACZgD,UAAU,6BACT,WAOE,IAAK,IAHHmJ,EAA4C,KADjC,IAAIC,MAAOC,cAAgB,GADzB,KAE0B,GAEvCC,KACOpH,EAAI,EAAGA,EAAIiH,EAAejH,IACjCoH,EAAOjI,KAAKa,GAGd,IAAIqH,EAAoB,SAAU9K,EAAM+K,GAItC,OAHAA,EAAMA,GAAY,EAGW,IAFlB/K,EAAKgL,OAXH,MAYDhL,EAAKiL,QAC0B,EAAMF,GAGnD,OACErJ,SAAU,IACVE,OACEsJ,OAAQ,IACRlL,KAAM,KAERoE,kBAAkB,EAClBJ,aAAc,MACdF,YAAa,SAAU,SAAUyB,GAC/B,IAAqB2F,EAAjBC,EAAW7L,KAEfA,KAAK8L,QAAU,WAIb,IAAK,IADDC,KACK5H,GAHTyH,EAAS5L,KAAK4L,QAGMtF,OAAOnF,UAAW4K,EAAKC,OAAS,EAAG7H,IACjDA,EAAI,IACNA,EAAI,GAEN4H,EAAKzI,KAAKa,EAAE8H,YAId,GAFAJ,EAASK,KAAOH,EAEXH,EAAO5K,SAAY4K,EAAO7K,QAExB,CACL,IAAI0K,EAAMG,EAAO7K,QAAUyK,EAAkBI,EAAO7K,SAAW,EAC3DoL,EAAOP,EAAO5K,QAAWwK,EAAkBI,EAAO5K,SAAW,EAAKoK,EACtES,EAASO,OAASb,EAAOc,MAAMZ,EAAKU,QAJpCN,EAASO,OAASb,EAOpBM,EAASS,SAAWd,EAAkBI,EAAO3K,aAAe4K,EAASO,OAAO,IAGhD,IAA1B3M,QAAQ8M,QAAQC,OAAe/M,QAAQ8M,QAAQE,MAAQ,GACzDzM,KAAK8L,UAGPD,EAASa,eAAiB,SAAUC,GAClC,IAAIhB,GAAUgB,EAAQ,GAAK,IAAO,GAC9BjB,EAxDK,KAwDaxE,KAAK0F,MAAMD,EAAQ,IACrCE,EAAW7N,EAAO4M,EAAO3K,aAAayK,KAAKA,GAAMC,MAAMA,GAC3D,OAAOmB,EAAsBD,IAG/B5G,EAAO8G,OAAO,WACZ,OAAOnB,EAAO3K,YAAc2K,EAAO3K,YAAYH,OAAO,WAAa,IAClE,SAAUkM,EAAMC,GACjB,GAAID,GAAQC,EAAM,CAChB,IAAIC,EAAQlO,EAAOgO,EAAM,WACrBvB,EAAMG,EAAO7K,QAAUyK,EAAkBI,EAAO7K,SAAW,EAC3D4L,EAAQnB,EAAkB0B,EAAOzB,GACjCI,EAASS,UAAYK,IACvBd,EAASS,SAAWK,MAK1B,IAAIG,EAAwB,SAAUpM,GACpC,IAAIiL,KACJ,GAAa,OAATjL,EAAe,CACjBiL,EAAMnM,KAAOkB,EAAKI,OAAO,aACzB,IAAIqM,EAAenO,EAAO0B,GAAMT,OAAO2L,EAAOtF,OAAOpF,MAAM+I,QAAQ,SAC9DpB,KAAKnI,EAAKmI,QACVzB,OAAO1G,EAAK0G,UACbgG,EAAUD,EAAarM,OAAO,KAClC6K,EAAMI,QACN,IAAK,IAAI5H,EAAIgJ,EAAazM,OAAQyD,GAAKgJ,EAAaE,cAAelJ,IAAK,CACtE,GAAIA,IAAMgJ,EAAazM,OAAQ,CAC7B,IAAI4M,EAAQzB,EAASK,KAAKrG,QAAQuH,EAAQnB,YAC1C,GAAIqB,EAAQ,EACV,IAAK,IAAIzF,EAAI,EAAGA,EAAIyF,EAAOzF,IACzB8D,EAAMI,KAAKzI,KAAK,GAItBqI,EAAMI,KAAKzI,KAAKtE,EAAOmO,GAAclN,OAAO2L,EAAOtF,OAAOpF,MAAMR,KAAKyD,IAIvE,IAAK,IADgBoJ,KAAcC,EAAStG,KAAKuG,KAAK9B,EAAMI,KAAKC,OAA/C,GACT0B,EAAI,EAAGA,EAAIF,EAAQE,IAC1BH,EAAQjK,KAAKqI,EAAMI,KAAKM,MAFR,EAEcqB,EAFd,GAEgCA,EAAI,KAGtD,OADA/B,EAAMI,KAAOwB,EACN5B,IAKXE,EAAS8B,MAAQ,SAAUxJ,GACzB,OAAOnF,EAAO+J,SAAS5E,GAAI,KACxBlE,OAAO2L,EAAOtF,OAAOpF,MACrBJ,OAAO,MACP8M,UAAU,EAAG,IAGlB/B,EAASgC,UAAY,SAAUnN,GAC7B,OAAOkL,EAAOrD,eAAevJ,EAAO0B,IAAO,GAAO,IAChDkL,EAAO5C,gBAAgBhK,EAAO0B,IAAO,GAAO,IAC5CkL,EAAOvC,UAAUrK,EAAO0B,KACxBkL,EAAOzC,iBAAiBnK,EAAO0B,KAGnCmL,EAAS5D,WAAa,SAAUvH,GAC9B,GAAIA,EAAM,CACR,GAAImL,EAASiC,cAAcpN,GACzB,OAAOkL,EAAOpB,KAEhBoB,EAAO3D,WAAWjJ,EAAO0B,GAAMmI,KAAKgD,EAASnL,KAAKmI,QAAQzB,OAAOyE,EAASnL,KAAK0G,WAC3EwE,EAAOtF,OAAOzE,QAChB+J,EAAOpB,OAKbqB,EAASiC,cAAgB,SAAUtK,GACjC,OAAOA,GAAKqI,EAASnL,KAAKA,SAAW8C,EAAE9C,QAAUmL,EAASnL,KAAKiL,UAAYnI,EAAEmI,SAAWE,EAASnL,KAAKgL,SAAWlI,EAAEkI,QAGrHG,EAASkC,eAAiB,SAAUvK,GAClC,IAAI+G,EAAQsB,EAASD,OAAO1H,QAAQ1B,eACpC,QAAK+H,IAIE/G,GAAK+G,EAAM7J,SAAW8C,EAAE9C,QAAU6J,EAAMoB,UAAYnI,EAAEmI,SAAWpB,EAAMmB,SAAWlI,EAAEkI,WAG/F7L,SACA,+PAOLoC,UAAU,kCAAmC,WAC5C,SAAU+L,GACR,IAAIC,EAAuB,SAAUvO,EAAS4C,GAC5C,IAAI4L,EAAQzO,QAAQC,QAAQA,EAAQ,GAAGyO,cAAc,UACjDtC,EAAWvJ,EAAM8L,IAEjBC,KAF8B/L,EAAMqJ,MAIlCI,KAAKuC,QAAQ,SAAU3M,EAAUwC,GACrCkK,EAAU/K,KAAK,QACf3B,EAAS2M,QAAQ,SAAUC,EAASb,GAElC,GADAW,EAAU/K,KAAK,QACXiL,EACF,GAAI1C,EAASgC,UAAUU,GAAU,CAE/B,IAAIC,EAAW,iBAAqBrK,EAAI,KAAOuJ,EAAI,IAEnDW,EAAU/K,KAAK,eAAiBiL,EAAQzN,OAAO,cAAgB,4FAA8F0N,EAAW,iCAAmCA,EAAW,gCAAkCA,EAAW,OACnQH,EAAU/K,KAAKiL,EAAQzN,OAAO,MAC9BuN,EAAU/K,KAAK,aAEf+K,EAAU/K,KAAK,iCACf+K,EAAU/K,KAAKiL,EAAQzN,OAAO,MAC9BuN,EAAU/K,KAAK,WAGnB+K,EAAU/K,KAAK,WAEjB+K,EAAU/K,KAAK,WAGjB4K,EAAMO,KAAKJ,EAAUK,KAAK,KAC1BV,EAASE,GAAO5L,IAGlB,OACEA,OACEqM,IAAK,KAEPtM,QAAS,6BACTD,SAAU,KACVvC,SACE,gPAUF4C,KAAM,SAAUH,EAAO5C,EAASgD,EAAOmJ,GACrCvJ,EAAM8L,IAAMvC,EACZvJ,EAAMqJ,MAAQE,EAASa,eAAe3D,SAASzG,EAAMqM,MACrDV,EAAqBvO,EAAS4C,GAC9BA,EAAMyK,OAAO,WACX,OAAOzK,EAAMqM,KACZ,SAAUA,EAAKC,GACZD,GAAOC,IACTtM,EAAMqJ,MAAQE,EAASa,eAAe3D,SAASzG,EAAMqM,MACrDV,EAAqBvO,EAAS4C,WAS5C7C,QAAQK,OAAOb,GACZgD,UAAU,gBAAiB,WAC1B,OACEQ,KAAM,SAAUH,EAAO/C,GACrBA,EAAGqE,GAAG,QAAS,SAAUC,GACvBA,EAAEC,uBAKZrE,QAAQK,OAAOb,GACZgD,UAAU,0BAA2B,WACpC,SAAUE,GAkBR,OACEC,SAAU,IACVvC,SAjBA,ssCAkBA4C,KAAM,SAAUH,EAAO5C,EAASgD,GAC9B,IAAImM,EAA4B,YAAfnM,EAAMoM,KACnBC,EAA4B,YAAfrM,EAAMoM,KACnBlD,EAAStJ,EAAMsJ,OAEfoD,EAAgBpK,SAASuJ,cAAc,iBAEvCc,EAAgB,SAASC,EAAKC,GAChC,IAAIC,EAAM,EAEV,GAAY,KADZF,EAAMA,GAAO,IAAM,EAAIA,GACR,CACb,IAAIG,EAAUR,GAAYE,EAAa,GAAK,GAC5CK,EAAMlI,KAAKC,MAAMkI,EAAU,IAAMH,GAGnC,GAAIL,EAAY,CACd,IAAI5H,EAAa2E,EAAOtF,OAAOtE,aAC3BiF,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAIrG,EAAWqG,EAAaC,KAAKC,MAAMiI,EAAMnI,GACzCrG,GAAW,KACbA,EAAU,GAAKqG,GAEjB2E,EAAO3K,YAAYmG,OAAOxG,QAChBmO,EAKVnD,EAAO3K,YAAYoG,OAAO+H,IAJd,KAARA,IAAYA,EAAM,GACjBxD,EAAOtF,OAAOlF,YAAWwK,EAAOrF,SAAW4I,EAAM,GAAK,KAAO,MAClEvD,EAAO3K,YAAY4H,KAAK+C,EAAOpC,OAAS4F,EAAM,GAAKA,KAOnDE,EAAoB,iBAAkB3P,OAC1C4P,GACEC,aAAeF,EAAmB,aAAe,YACjDG,WAAeH,EAAmB,WAAe,UACjDI,aAAeJ,EAAmB,YAAe,aAG/CK,EAAc,SAAS9L,GACzBA,EAAEC,iBAEF,IAAI8L,EAAgB/L,EAAEgM,cAAcC,QAAQ,OAC5CC,EAAaH,EAAcI,iBAAiB,GAExCV,IAAkBzL,EAAIA,EAAEoM,eAAe,IAE3C,IAAIpI,EAAM+H,EAAcM,YAAc,GAAMrM,EAAEsM,MAAQJ,EAAWK,MAC7DC,EAAMxM,EAAEyM,MAAQP,EAAWQ,IAAQX,EAAcY,aAAe,EAEhErB,EAAMjI,KAAKuJ,KAAKvJ,KAAKwJ,IAAI7I,EAAG,GAAKX,KAAKwJ,IAAIL,EAAG,IAC7CnB,EAAMhI,KAAKC,MAAOD,KAAKyJ,MAAM9I,EAAGwI,IAAM,IAAMnJ,KAAK0J,KAErDzO,EAAS,WACP8M,EAAcC,EAAI,IAAKC,MAI3BzP,EAAQkE,GAAG2L,EAAOC,aAAc,WAC7B9P,EAAQkE,GAAG2L,EAAOG,aAAcC,KAGnCjQ,EAAQkE,GAAG2L,EAAOE,WAAY,WAC1B/P,EAAQmR,IAAItB,EAAOG,gBAGvBpN,EAAMwO,IAAI,WAAY,WAClBpR,EAAQmR,IAAItB,EAAOG,aAAcC,KAGrC,IAAIoB,EAAO,WACT,IAAIC,EAAQvR,QAAQC,QAAQA,EAAQ,GAAGyO,cAAc,sBACjD8C,EAAWxR,QAAQC,QAAQsP,EAAcb,cAAc,gBAEvD+C,EAAIlC,EAAcb,cAAc,gBAAgB+B,YAChDiB,EAAKpI,SAASzJ,EAAI2R,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEC,EAAKtI,SAASzJ,EAAI2R,EAAU,gBAAgBG,QAAQ,KAAM,MAAQ,EAIlEE,EAAcJ,IAHTnI,SAASzJ,EAAI0R,EAAO,cAAcI,QAAQ,KAAM,MAAQ,IACxDrI,SAASzJ,EAAI0R,EAAO,eAAeI,QAAQ,KAAM,MAAQ,GAEjCD,EAAKE,GACtCL,EAAM1R,IAAI,QAAS,EAAe,MAYlC,IAAK,IAVDiS,EAAKxI,SAASzJ,EAAI2R,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEI,EAAKzI,SAASzJ,EAAI2R,EAAU,cAAcG,QAAQ,KAAM,MAAQ,EAChEK,EAAK1I,SAASzJ,EAAI0R,EAAO,cAAcI,QAAQ,KAAM,MAAQ,EAC7DM,EAAK3I,SAASzJ,EAAI0R,EAAO,aAAaI,QAAQ,KAAM,MAAQ,EAE5DO,EAAKL,EAAa,EAClB5D,EAAIiE,EAAI,IAERC,KAEK1G,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAEIkF,EAAQuB,EAFJjE,EAAIxG,KAAK2K,IAAc,EAAV3K,KAAK0J,IAAU1F,EAAI,KAEpBqG,EAAK,GAAMA,EAAKE,GAChClB,EAAOoB,EAFHjE,EAAIxG,KAAK4K,IAAc,EAAV5K,KAAK0J,IAAU1F,EAAI,KAErBwG,EAAK,GAAMF,EAAKE,GAE/B7I,GACFuH,KAAMA,EACNG,IAAKA,EACLhN,MAAQsL,GAAYE,EAAkB,EAAJ7D,EAASA,EAC3C6G,OAAQC,cAAe5B,EAAO,KAAM6B,aAAc1B,EAAM,OAGtD1B,GAAcE,EAChBlG,EAAKqJ,QAAUrJ,EAAKtF,MAAQ,GAAM,IAAMsF,EAAKtF,MAASsF,EAAKtF,MAEvDqI,EAAOtF,OAAOlF,UAChByH,EAAKqJ,QAAiB,IAANhH,EAAW,GAAKA,EAEhCrC,EAAKqJ,QAAUhH,EAInB0G,EAAOtO,KAAKuF,GAId,GAFAvG,EAAMsP,OAASA,GAEVhG,EAAOtF,OAAOlF,YAAcyN,IAAeE,EAAY,CAI1D,IAAK,IAHDoD,KAEAC,EAAMT,EAAI,IACLU,EAAM,GAAIA,EAAM,KAAMA,EAAK,CAClC,IAEIC,EAAUX,EAFJS,EAAMlL,KAAK2K,IAAc,EAAV3K,KAAK0J,IAAUyB,EAAM,KAEtBd,EAAK,GAAMA,EAAKE,GACpCc,EAASZ,EAFHS,EAAMlL,KAAK4K,IAAc,EAAV5K,KAAK0J,IAAUyB,EAAM,KAEvBX,EAAK,GAAMF,EAAKE,GAEnCc,GACFpC,KAAMkC,EACN/B,IAAKgC,EACLhP,MAAO8O,EACPN,OAAQC,cAAeM,EAAS,KAAML,aAAcM,EAAQ,OAG9DC,EAAON,QAAUG,EAEjBF,EAAS7O,KAAKkP,GAEhBlQ,EAAM6P,SAAWA,EAGnB7P,EAAMwM,KAAOpM,EAAMoM,KACnB2D,IACAzB,EAAM1R,IAAI,SAAUgS,EAAa,MAEjC,IAAIoB,EAAchT,EAAQ,GAAGyO,cAAc,qBACvCwE,EAAeD,EAAYxC,YAAc,GAAM,IACjD0C,EAAgBF,EAAYlC,aAAe,GAAM,IAC/CqC,EAAMlB,GAAK/F,EAAOtF,OAAOlF,UAAY,IAAM,KAC3C0R,EAAMnB,EAAI,IACVoB,EAAMpB,EAAI,EAEdlS,QAAQC,QAAQA,EAAQ,GAAGyO,cAAc,mBAAmB7O,KAC1D8Q,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQH,EAAM,KACdI,UAAYtB,EAAIkB,EAAMtB,EAAM,OAC3B2B,SAAUrE,GAAeE,EAAoB,GAAP,MAEzCtP,QAAQC,QAAQA,EAAQ,GAAGyO,cAAc,qBAAqB7O,KAE5D8Q,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQF,EAAM,KACdG,UAAYtB,EAAImB,EAAMvB,EAAM,OAC3B2B,SAASrE,EAAa,KAAO,IAEhCpP,QAAQC,QAAQA,EAAQ,GAAGyO,cAAc,qBAAqB7O,KAE5D8Q,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQD,EAAM,KACdE,UAAYtB,EAAIoB,EAAMxB,EAAM,OAC3B2B,SAASnE,EAAa,KAAO,IAEhCtP,QAAQC,QAAQgT,GAAapT,KAC3B8Q,KAAOuB,EAAIJ,EAAKE,EAAKkB,EAAe,KACpCM,UAAYtB,EAAKF,EAAK,EAAMmB,EAAe,OAE7CO,KAGEA,EAAe,WACjB,IAAIvK,EAAQgD,EAAO5E,uBACfkE,EAAItC,EAAMC,OACVrF,EAAIoF,EAAMxB,SACVgM,EAAIxK,EAAMvB,SAEdgM,EAAc5T,QAAQC,QAAQA,EAAQ,GAAGyO,cAAc,mBAAoB,GAAKjD,GAChFmI,EAAc5T,QAAQC,QAAQA,EAAQ,GAAGyO,cAAc,qBAAsB,EAAI3K,GACjF6P,EAAc5T,QAAQC,QAAQA,EAAQ,GAAGyO,cAAc,qBAAsB,EAAIiF,IAG/EC,EAAgB,SAAU9T,EAAI2P,GAChCzP,QAAQC,QAAQH,GAAID,KAClBgU,gBAAiB,UAAYpE,EAAM,OACnCqE,iBAAkB,UAAYrE,EAAM,OACpCsE,gBAAiB,UAAYtE,EAAM,OACnCuE,UAAa,UAAYvE,EAAM,UAK/BuD,EAAkB,WACpB,IAAI/R,EAAOkL,EAAO5E,uBACd0M,EAAM9H,EAAOtF,OAAOlF,UAAY,GAAK,GAEvCkB,EAAMqR,aADJ9E,EACmBnO,EAAK0G,SACjB2H,EACYrO,EAAK2G,SAEL3G,EAAKmI,OAAS6K,GAIvCpR,EAAMyK,OAAO,WACX,IAAI6G,EAAMhI,EAAO5E,uBACjB,OAAO4M,EAAMA,EAAI9S,OAAO,YAAc,IACrC,WACD2R,IACAU,MAGF7Q,EAAMuR,QAAU,SAAUzE,GACnBP,GAAeE,EAWRA,GASNK,IAAQ9M,EAAMqR,cAAc/H,EAAOpB,KACvCoB,EAAO3K,YAAYoG,OAAO+H,KATtBA,IAAQ9M,EAAMqR,cAAc/H,EAAOpB,KACvCoB,EAAO3K,YAAYmG,OAAOgI,GACrBxD,EAAOtF,OAAOzF,QAGb+K,EAAOtF,OAAOzE,QAAQ+J,EAAOpB,KAFjCoB,EAAO3K,YAAYoG,OAAO,KAdxB+H,IAAQ9M,EAAMqR,cAAiB/H,EAAOtF,OAAOzE,QAAQ+J,EAAOpB,KAE5DoB,EAAOtF,OAAOlF,UAChBwK,EAAO3K,YAAY4H,KAAK+C,EAAOpC,OAAU4F,EAAM,GAAMA,IAErDxD,EAAO3K,YAAY4H,KAAKuG,GACTxD,EAAOrF,SAAlB6I,GAAO,GAAsB,KACV,MAErBxD,EAAOtF,OAAOzE,QAAQ+J,EAAOpB,OAerClI,EAAMwR,eAAiB,SAAUC,GAC/B,OAAIlF,EACKjD,EAAOvB,kBAAkB0J,EAAMxQ,OAC7BwL,EACFnD,EAAOtB,kBAAkByJ,EAAMxQ,OAE/BqI,EAAOzB,gBAAgB4J,EAAMxQ,QAIxC,IAAIyQ,EAAY1R,EAAMyK,OAAO,WAC3B,OAAOrN,EAAQ,GAAGuU,iBAAiB,OAAOjI,QACzC,WACD+E,IACAiD,WAKH/U,EAGT,IAAIiV,EAAavU,QAAUA,OAAOwU,SAAWxU,OAAOwU,QAAQC,KACtC,mBAAXC,QAAyBA,OAAOC,IACzCD,QAAQ,UAAWtV,GACQ,oBAAXe,QAA0BA,QAAUA,OAAOyU,SAA+B,mBAAZlS,UAA4B6R,EAC1GpU,OAAOyU,QAAUxV,EAAqBsD,QAAQ,WAE9CtD,GAAwC,oBAAXyV,OAAyBA,OAAS7U,QAAQX","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm:ss\" : \"HH:mm:ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm:ss\" : \"HH:mm:ss\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 4ae7c1d..ad97dea 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index c854562..992daa3 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,17 +4,7 @@ var gulp = require('gulp'), cleanCSS = require('gulp-clean-css'), sourcemaps = require('gulp-sourcemaps'), rename = require('gulp-rename'), - runSequence = require('run-sequence'), - bump = require('gulp-bump'), - git = require('gulp-git'), - filter = require('gulp-filter'), - push = require('gulp-git-push'), - tag = require('gulp-tag-version'), - argv = require('yargs') - .option('type', { - alias: 't', - choices: ['patch', 'minor', 'major'] - }).argv; + runSequence = require('run-sequence'); gulp.task('default', function(cb) { runSequence(['js', 'css'], cb); @@ -42,16 +32,4 @@ gulp.task('css', function(cb) { rename({extname: '.min.css'}), gulp.dest('./dist/') ], cb); -}); - -gulp.task('bump push', function(cb) { - pump([ - gulp.src(['./package.json', './bower.json']), - bump({type: argv.type || 'patch'}), - gulp.dest('./'), - git.commit('bump version '), - filter('package.json'), - tag(), - push() - ], cb); }); \ No newline at end of file diff --git a/index.html b/index.html index de53270..f62aa7e 100644 --- a/index.html +++ b/index.html @@ -29,7 +29,7 @@
-

Angular Material DatePicker

+

Angular Material DateTimePicker

@@ -76,13 +76,25 @@

Datetime Pickers

+
+ + + + +
+
+
@@ -142,6 +154,15 @@

Datetime Pickers

+
+ + + + +
+
+
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 6de071e..d405ec3 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -1,7 +1,7 @@ (function () { 'use strict'; -function ngMaterialDatePicker(moment) { + function ngMaterialDatePicker(moment) { var moduleName = "ngMaterialDatePicker"; var VIEW_STATES = { @@ -20,13 +20,13 @@ function ngMaterialDatePicker(moment) { ' ' + '
' + '
' + - '
{{picker.currentNearestMinute().format("dddd")}}
' + - '
{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}
' + + '
{{picker.currentNearestMinute().format("dddd")}}
' + + '
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
' + '
' + ' ×' + '
' + '
' + - '
' + + '
' + '
' + '
' + '
{{picker.currentDate.format("MMM") | uppercase}}
' + @@ -39,17 +39,21 @@ function ngMaterialDatePicker(moment) { '
' + '
'+ '
' + //start time - '
' + - '
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}} {{picker.currentDate.format("A")}}
' + + '
' + + '
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}'+ + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm:ss" : "HH:mm:ss")}}'+ + ' {{picker.currentDate.format("A")}}'+ + '
' + '
' + '
' + - ' ' + + ' ' + '
' + '
' + ' ' + - '
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' + + '
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' + + '
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm:ss" : "HH:mm:ss")}}
' + ' ' + @@ -57,6 +61,7 @@ function ngMaterialDatePicker(moment) { '
' + ' ' + ' ' + + ' ' + '
' + '
' + '
' + @@ -85,6 +90,7 @@ function ngMaterialDatePicker(moment) { date: true, time: true, minutes: true, + seconds: false, format: 'YYYY-MM-DD', minDate: null, maxDate: null, @@ -119,6 +125,7 @@ function ngMaterialDatePicker(moment) { time: '=', date: '=', minutes: '=', + seconds: '=', minDate: '=', maxDate: '=', disableDates: '=', @@ -142,7 +149,9 @@ function ngMaterialDatePicker(moment) { link: function (scope, element, attrs, ngModel) { var isOn = false; if (!scope.format) { - if (scope.date && scope.time) { + if (scope.date && scope.time && scope.seconds) { + scope.format = 'YYYY-MM-DD HH:mm:ss'; + } else if (scope.date && scope.time) { scope.format = 'YYYY-MM-DD HH:mm'; } else if (scope.date) { scope.format = 'YYYY-MM-DD'; @@ -241,6 +250,7 @@ function ngMaterialDatePicker(moment) { date: {boolean} =true, time: {boolean} =true, minutes: {boolean} =true, + seconds: {boolean} =false, format: {string} ='YYYY-MM-DD', minDate: {strign} =null, maxDate: {string} =null, @@ -294,13 +304,12 @@ function ngMaterialDatePicker(moment) { disableParentScroll: options.disableParentScroll || false, skipHide: true, multiple: true - }) - .then(function (v) { - var currentDate = v ? v._d : v; - deferred.resolve(v ? v._d : v); - }, function () { - deferred.reject(); - }); + }).then(function (v) { + var currentDate = v ? v._d : v; + deferred.resolve(v ? v._d : v); + }, function () { + deferred.reject(); + }); return deferred.promise; } }; @@ -339,7 +348,8 @@ function ngMaterialDatePicker(moment) { if (minutes >= 60) { minutes = 60 - nearestMin; //always push down } - return moment(date).minutes(minutes); + var seconds = date.second(); + return moment(date).minutes(minutes).seconds(seconds); }, initDates: function () { var that = this; @@ -388,6 +398,9 @@ function ngMaterialDatePicker(moment) { initMinutes: function () { this.currentView = VIEW_STATES.MINUTE; }, + initSeconds: function () { + this.currentView = VIEW_STATES.SECOND; + }, isAfterMinDate: function (date, checkHour, checkMinute) { var _return = true; @@ -485,16 +498,6 @@ function ngMaterialDatePicker(moment) { this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM'; } }, - setName: function () { - var text = ""; - var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - - for (var i = 0; i < 5; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - - return text; - }, isPM: function () { return this.meridien === 'PM'; }, @@ -542,6 +545,9 @@ function ngMaterialDatePicker(moment) { _date.minute(minute).second(0); return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true); }, + isSecondAvailable: function (second) { + return true; + }, start: function () { this.currentView = VIEW_STATES.DATE; if (this.params.date) { @@ -578,6 +584,13 @@ function ngMaterialDatePicker(moment) { } break; case VIEW_STATES.MINUTE: + if (this.params.seconds === true) { + this.initSeconds(); + } else { + this.hide(true); + } + break; + case VIEW_STATES.SECOND: this.hide(true); break; } @@ -599,6 +612,9 @@ function ngMaterialDatePicker(moment) { case VIEW_STATES.MINUTE: this.initHours(); break; + case VIEW_STATES.SECOND: + this.initMinutes(); + break; } } else { @@ -659,7 +675,6 @@ function ngMaterialDatePicker(moment) { } }; - angular.module(moduleName) .directive('mdcDatetimePickerCalendar', [ function () { @@ -912,6 +927,7 @@ function ngMaterialDatePicker(moment) { '
' + '
' + '
' + + '
' + '
' + '
'; @@ -920,6 +936,7 @@ function ngMaterialDatePicker(moment) { template: template, link: function (scope, element, attrs) { var minuteMode = attrs.mode === 'minutes'; + var secondMode = attrs.mode === 'seconds'; var picker = scope.picker; //banking on the fact that there will only be one at a time var componentRoot = document.querySelector('md-dialog.dtp'); @@ -928,7 +945,7 @@ function ngMaterialDatePicker(moment) { var val = 0; deg = deg >= 360 ? 0 : deg; if (deg !== 0) { - var divider = minuteMode ? 60 : 12; + var divider = minuteMode||secondMode ? 60 : 12; val = Math.round(divider / 360 * deg); } @@ -941,12 +958,14 @@ function ngMaterialDatePicker(moment) { minutes = 60 - nearestMin; //always push down } picker.currentDate.minute(minutes); - } else { + } else if (!secondMode){ if (val === 12) val = 0; if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM'; picker.currentDate.hour(picker.isPM() ? val + 12 : val); + } else { + picker.currentDate.second(val); } - picker.currentDate.second(0); + }; var isTouchSupported = ('ontouchstart' in window) ? true : false, @@ -1019,14 +1038,13 @@ function ngMaterialDatePicker(moment) { var hour = { left: left, top: top, - value: (minuteMode ? (h * 5) : h), //5 for minute 60/12 + value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12 style: {'margin-left': left + 'px', 'margin-top': top + 'px'} }; - if (minuteMode) { + if (minuteMode || secondMode) { hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value; } else { - if (picker.params.shortTime) { hour.display = (h === 0) ? 12 : h; } else { @@ -1038,7 +1056,7 @@ function ngMaterialDatePicker(moment) { } scope.points = points; - if (!picker.params.shortTime && !minuteMode) { + if (!picker.params.shortTime && !minuteMode && !secondMode) { var points24 = []; var j24 = r / 1.8; // radius for high number @@ -1070,13 +1088,14 @@ function ngMaterialDatePicker(moment) { var centerWidth = (clockCenter.offsetWidth / 2) || 7.5, centerHeight = (clockCenter.offsetHeight / 2) || 7.5; var _hL = r / (picker.params.shortTime ? 1.8 : 2.3); - var _mL = r / 1.5; + var _mL = r / 1.4; + var _sL = r / 1; angular.element(element[0].querySelector('.dtp-hour-hand')).css({ left: r + (mL * 1.5) + 'px', height: _hL + 'px', marginTop: (r - _hL - pL) + 'px' - }).addClass(!minuteMode ? 'on' : ''); + }).addClass(!minuteMode && !secondMode ? 'on' : ''); angular.element(element[0].querySelector('.dtp-minute-hand')).css ({ @@ -1085,6 +1104,13 @@ function ngMaterialDatePicker(moment) { marginTop: (r - _mL - pL) + 'px' }).addClass(minuteMode ? 'on' : ''); + angular.element(element[0].querySelector('.dtp-second-hand')).css + ({ + left: r + (mL * 1.5) + 'px', + height: _sL + 'px', + marginTop: (r - _sL - pL) + 'px' + }).addClass(secondMode ? 'on' : ''); + angular.element(clockCenter).css({ left: (r + pL + mL - centerWidth) + 'px', marginTop: (r - (mL / 2)) - centerHeight + 'px' @@ -1096,9 +1122,11 @@ function ngMaterialDatePicker(moment) { var _date = picker.currentNearestMinute(); var h = _date.hour(); var m = _date.minute(); + var s = _date.second(); rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h); rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m); + rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s); }; var rotateElement = function (el, deg) { @@ -1114,23 +1142,26 @@ function ngMaterialDatePicker(moment) { var setCurrentValue = function () { var date = picker.currentNearestMinute(); var nbH = picker.params.shortTime ? 12 : 24; - scope.currentValue = minuteMode ? date.minute() : (date.hour() % nbH); + if (minuteMode) { + scope.currentValue = date.minute(); + } else if (secondMode) { + scope.currentValue = date.second(); + } else { + scope.currentValue = date.hour() % nbH; + } }; scope.$watch(function () { var tmp = picker.currentNearestMinute(); - return tmp ? tmp.format('HH:mm') : ''; + return tmp ? tmp.format('HH:mm:ss') : ''; }, function () { setCurrentValue(); animateHands(); }); scope.setTime = function (val) { - if (!minuteMode) { - // double click - if (val === scope.currentValue && !picker.params.autoOk){ - picker.ok(); - } + if (!minuteMode && !secondMode) { + if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click if (picker.params.shortTime) { picker.currentDate.hour(picker.isPM() ? (val + 12) : val); @@ -1139,22 +1170,29 @@ function ngMaterialDatePicker(moment) { if (val >= 12) picker.meridien = 'PM'; else picker.meridien = 'AM'; } - // single click - if (picker.params.autoOk) { - picker.ok(); - } - } else { - // double click - if (val === scope.currentValue){ - picker.ok(); - } + if (picker.params.autoOk) picker.ok(); // single click + } else if (!secondMode){ + if (val === scope.currentValue) picker.ok(); // double click picker.currentDate.minute(val); + if (!picker.params.seconds) { + picker.currentDate.second(0); + } else { + if (picker.params.autoOk) picker.ok(); // single click + } + } else { + if (val === scope.currentValue) picker.ok(); // double click + picker.currentDate.second(val); } - picker.currentDate.second(0); }; scope.pointAvailable = function (point) { - return minuteMode ? picker.isMinuteAvailable(point.value) : picker.isHourAvailable(point.value); + if (minuteMode) { + return picker.isMinuteAvailable(point.value); + } else if (secondMode) { + return picker.isSecondAvailable(point.value); + } else { + return picker.isHourAvailable(point.value); + } }; var unWatcher = scope.$watch(function () { @@ -1167,7 +1205,7 @@ function ngMaterialDatePicker(moment) { }; }]); return moduleName; -} + } var isElectron = window && window.process && window.process.type; if (typeof define === 'function' && define.amd) { diff --git a/package.json b/package.json index 26d57ed..8d09909 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.7.2", + "version": "1.8.0", "keywords": [ "css", "js", @@ -28,17 +28,11 @@ }, "devDependencies": { "gulp": "^3.9.1", - "gulp-bump": "^2.7.0", "gulp-clean-css": "^3.7.0", - "gulp-filter": "^5.0.0", - "gulp-git": "^2.4.1", - "gulp-git-push": "^1.0.1", "gulp-rename": "^1.2.2", "gulp-sourcemaps": "^2.6.0", - "gulp-tag-version": "^1.3.0", "gulp-uglify": "^3.0.0", "pump": "^1.0.2", - "run-sequence": "^2.1.0", - "yargs": "^8.0.2" + "run-sequence": "^2.1.0" } } diff --git a/yarn.lock b/yarn.lock index 51e9d15..fad788e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -47,53 +47,18 @@ angular@^1.6.5: version "1.6.5" resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.5.tgz#37f788eebec5ce2e3fa02b17bbcb2a231576a0d6" -ansi-cyan@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" - dependencies: - ansi-wrap "0.1.0" - -ansi-red@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" - dependencies: - ansi-wrap "0.1.0" - -ansi-regex@^0.2.0, ansi-regex@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" -ansi-styles@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" - ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-wrap@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - -any-shell-escape@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/any-shell-escape/-/any-shell-escape-0.1.1.tgz#d55ab972244c71a9a5e1ab0879f30bf110806959" - archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" -arr-diff@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" - dependencies: - arr-flatten "^1.0.1" - array-slice "^0.2.3" - arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -104,29 +69,11 @@ arr-flatten@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" -arr-union@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" - array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1, array-uniq@^1.0.2: +array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -134,10 +81,6 @@ array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - atob@~1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" @@ -169,42 +112,6 @@ buffer-shims@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -bump-regex@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/bump-regex/-/bump-regex-2.7.0.tgz#4a21e2537113476c026be588b8a7dddef1934641" - dependencies: - semver "^5.1.0" - xtend "^4.0.1" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -chalk@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" - dependencies: - ansi-styles "^1.1.0" - escape-string-regexp "^1.0.0" - has-ansi "^0.1.0" - strip-ansi "^0.3.0" - supports-color "^0.2.0" - chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -221,26 +128,10 @@ clean-css@4.1.7: dependencies: source-map "0.5.x" -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - -clone-stats@^0.0.1, clone-stats@~0.0.1: +clone-stats@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - clone@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" @@ -249,18 +140,6 @@ clone@^1.0.0, clone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" -cloneable-readable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" - dependencies: - inherits "^2.0.1" - process-nextick-args "^1.0.6" - through2 "^2.0.1" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - commander@~2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" @@ -279,13 +158,6 @@ core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -cross-spawn@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - css@2.X, css@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" @@ -295,19 +167,6 @@ css@2.X, css@^2.2.1: source-map-resolve "^0.3.0" urix "^0.1.0" -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -dateformat@^1.0.11, dateformat@^1.0.7-1.2.3: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" - dateformat@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" @@ -325,10 +184,6 @@ debug@2.X: dependencies: ms "0.7.2" -decamelize@^1.1.1, decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - defaults@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -367,28 +222,10 @@ end-of-stream@~0.1.5: dependencies: once "~1.3.0" -error-ex@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" - dependencies: - is-arrayish "^0.2.1" - -escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2: +escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -execa@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36" - dependencies: - cross-spawn "^4.0.0" - get-stream "^2.2.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -407,12 +244,6 @@ expand-tilde@^1.2.1, expand-tilde@^1.2.2: dependencies: os-homedir "^1.0.1" -extend-shallow@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" - dependencies: - kind-of "^1.1.0" - extend@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" @@ -448,19 +279,6 @@ find-index@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - findup-sync@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" @@ -486,12 +304,6 @@ first-chunk-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" -first-chunk-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" - dependencies: - readable-stream "^2.0.2" - flagged-respawn@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" @@ -516,21 +328,6 @@ gaze@^0.5.1: dependencies: globule "~0.1.0" -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -614,7 +411,7 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" -graceful-fs@4.X, graceful-fs@^4.1.2: +graceful-fs@4.X: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -632,16 +429,6 @@ graceful-fs@~1.2.0: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -gulp-bump@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/gulp-bump/-/gulp-bump-2.7.0.tgz#4c3750bce93c5d816fe9a154e6619dd509a852d8" - dependencies: - bump-regex "^2.7.0" - plugin-error "^0.1.2" - plugin-log "^0.1.0" - semver "^5.3.0" - through2 "^2.0.1" - gulp-clean-css@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.7.0.tgz#54b33526dc899930949fb37b4cacf851c5d5d93b" @@ -651,52 +438,6 @@ gulp-clean-css@^3.7.0: through2 "2.0.3" vinyl-sourcemaps-apply "0.2.1" -gulp-filter@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/gulp-filter/-/gulp-filter-5.0.0.tgz#cfa81966fb67884f2ba754b067152929428d59bc" - dependencies: - gulp-util "^3.0.6" - multimatch "^2.0.0" - streamfilter "^1.0.5" - -gulp-git-push@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gulp-git-push/-/gulp-git-push-1.0.1.tgz#91cd48eb4e6ca013aa62a4aac2010ef9ec844cd9" - dependencies: - gulp-git "^1.7.1" - gulp-util "^3.0.7" - map-stream "^0.1.0" - object-assign "^4.0.1" - -gulp-git@^1.7.1: - version "1.15.1" - resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-1.15.1.tgz#cdd9d354fc41d8dcb52cef47256dfba366785979" - dependencies: - any-shell-escape "^0.1.1" - gulp-util "^3.0.6" - require-dir "^0.1.0" - through2 "^0.6.5" - -gulp-git@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-2.4.1.tgz#ec9eaa4e0097866cfbd6aa92ccb1016a77df03a5" - dependencies: - any-shell-escape "^0.1.1" - gulp-util "^3.0.8" - require-dir "^0.3.2" - strip-bom-stream "^3.0.0" - through2 "^2.0.3" - vinyl "^2.0.1" - -gulp-git@~0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/gulp-git/-/gulp-git-0.3.6.tgz#77ec3da22925c246edd796ca10d4163965d8140a" - dependencies: - any-shell-escape "^0.1.1" - gulp-util "~2.2.14" - map-stream "~0.1.0" - through2 "^0.4.1" - gulp-rename@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" @@ -718,14 +459,6 @@ gulp-sourcemaps@^2.6.0: through2 "2.X" vinyl "1.X" -gulp-tag-version@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/gulp-tag-version/-/gulp-tag-version-1.3.0.tgz#8448c87eed1866db8e6cb598bc419be2df7c47db" - dependencies: - gulp-git "~0.3.6" - gulp-util "~2.2.14" - map-stream "~0.1.0" - gulp-uglify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.0.tgz#0df0331d72a0d302e3e37e109485dddf33c6d1ca" @@ -738,7 +471,7 @@ gulp-uglify@^3.0.0: uglify-js "^3.0.5" vinyl-sourcemaps-apply "^0.2.0" -gulp-util@3.0.8, gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7, gulp-util@^3.0.8: +gulp-util@3.0.8, gulp-util@^3.0.0, gulp-util@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" dependencies: @@ -761,19 +494,6 @@ gulp-util@3.0.8, gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7, gulp-util through2 "^2.0.0" vinyl "^0.5.0" -gulp-util@~2.2.14: - version "2.2.20" - resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-2.2.20.tgz#d7146e5728910bd8f047a6b0b1e549bc22dbd64c" - dependencies: - chalk "^0.5.0" - dateformat "^1.0.7-1.2.3" - lodash._reinterpolate "^2.4.1" - lodash.template "^2.4.1" - minimist "^0.2.0" - multipipe "^0.1.0" - through2 "^0.5.0" - vinyl "^0.2.1" - gulp@^3.9.1: version "3.9.1" resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" @@ -798,12 +518,6 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -has-ansi@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" - dependencies: - ansi-regex "^0.2.0" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -822,16 +536,6 @@ homedir-polyfill@^1.0.0: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -855,10 +559,6 @@ interpret@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - is-absolute@^0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" @@ -866,20 +566,10 @@ is-absolute@^0.2.3: is-relative "^0.2.1" is-windows "^0.2.0" -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - is-buffer@^1.0.2: version "1.1.4" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - is-dotfile@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" @@ -898,22 +588,6 @@ is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -940,17 +614,13 @@ is-relative@^0.2.1: dependencies: is-unc-path "^0.1.1" -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - is-unc-path@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" dependencies: unc-path-regex "^0.1.0" -is-utf8@^0.2.0, is-utf8@^0.2.1: +is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -976,22 +646,12 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" -kind-of@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" - kind-of@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" dependencies: is-buffer "^1.0.2" -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - liftoff@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" @@ -1006,32 +666,6 @@ liftoff@^2.1.0: rechoir "^0.6.2" resolve "^1.1.7" -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" @@ -1044,36 +678,14 @@ lodash._basevalues@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" -lodash._escapehtmlchar@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz#df67c3bb6b7e8e1e831ab48bfa0795b92afe899d" - dependencies: - lodash._htmlescapes "~2.4.1" - -lodash._escapestringchar@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz#ecfe22618a2ade50bfeea43937e51df66f0edb72" - lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" -lodash._htmlescapes@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz#32d14bf0844b6de6f8b62a051b4f67c228b624cb" - lodash._isiterateecall@^3.0.0: version "3.0.9" resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" -lodash._isnative@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c" - -lodash._objecttypes@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" - lodash._reescape@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" @@ -1082,56 +694,24 @@ lodash._reevaluate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" -lodash._reinterpolate@^2.4.1, lodash._reinterpolate@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz#4f1227aa5a8711fc632f5b07a1f4607aab8b3222" - lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" -lodash._reunescapedhtml@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz#747c4fc40103eb3bb8a0976e571f7a2659e93ba7" - dependencies: - lodash._htmlescapes "~2.4.1" - lodash.keys "~2.4.1" - lodash._root@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" -lodash._shimkeys@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" - dependencies: - lodash._objecttypes "~2.4.1" - lodash.assignwith@^4.0.7: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz#127a97f02adc41751a954d24b0de17e100e038eb" -lodash.defaults@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz#a7e8885f05e68851144b6e12a8f3678026bc4c54" - dependencies: - lodash._objecttypes "~2.4.1" - lodash.keys "~2.4.1" - lodash.escape@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" dependencies: lodash._root "^3.0.0" -lodash.escape@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-2.4.1.tgz#2ce12c5e084db0a57dda5e5d1eeeb9f5d175a3b4" - dependencies: - lodash._escapehtmlchar "~2.4.1" - lodash._reunescapedhtml "~2.4.1" - lodash.keys "~2.4.1" - lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -1144,12 +724,6 @@ lodash.isempty@^4.2.1: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" -lodash.isobject@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" - dependencies: - lodash._objecttypes "~2.4.1" - lodash.isplainobject@^4.0.4: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -1166,14 +740,6 @@ lodash.keys@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" -lodash.keys@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz#48dea46df8ff7632b10d706b8acb26591e2b3727" - dependencies: - lodash._isnative "~2.4.1" - lodash._shimkeys "~2.4.1" - lodash.isobject "~2.4.1" - lodash.mapvalues@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" @@ -1186,18 +752,6 @@ lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" -lodash.template@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-2.4.1.tgz#9e611007edf629129a974ab3c48b817b3e1cf20d" - dependencies: - lodash._escapestringchar "~2.4.1" - lodash._reinterpolate "~2.4.1" - lodash.defaults "~2.4.1" - lodash.escape "~2.4.1" - lodash.keys "~2.4.1" - lodash.templatesettings "~2.4.1" - lodash.values "~2.4.1" - lodash.template@^3.0.0: version "3.6.2" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" @@ -1219,19 +773,6 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" -lodash.templatesettings@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz#ea76c75d11eb86d4dbe89a83893bb861929ac699" - dependencies: - lodash._reinterpolate "~2.4.1" - lodash.escape "~2.4.1" - -lodash.values@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-2.4.1.tgz#abf514436b3cb705001627978cbcf30b1280eea4" - dependencies: - lodash.keys "~2.4.1" - lodash@^4.13.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -1240,24 +781,10 @@ lodash@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - lru-cache@2: version "2.7.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" -lru-cache@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - make-error-cause@^1.1.1: version "1.2.2" resolved "https://registry.yarnpkg.com/make-error-cause/-/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d" @@ -1272,35 +799,6 @@ map-cache@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -map-stream@^0.1.0, map-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -1319,22 +817,12 @@ micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - minimatch@^2.0.1: version "2.0.10" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" dependencies: brace-expansion "^1.0.0" -minimatch@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" - dependencies: - brace-expansion "^1.0.0" - minimatch@~0.2.11: version "0.2.14" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" @@ -1346,11 +834,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.0.tgz#4dffe525dae2b864c66c2e23c6271d7afdecefce" - -minimist@^1.1.0, minimist@^1.1.3: +minimist@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -1368,16 +852,7 @@ ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" -multimatch@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - -multipipe@^0.1.0, multipipe@^0.1.2: +multipipe@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" dependencies: @@ -1387,31 +862,12 @@ natives@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - object-assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" @@ -1420,14 +876,6 @@ object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -1457,28 +905,6 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-locale@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4" - dependencies: - execa "^0.5.0" - lcid "^1.0.0" - mem "^1.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - parse-filepath@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" @@ -1496,30 +922,10 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" @@ -1530,51 +936,6 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -plugin-error@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" - dependencies: - ansi-cyan "^0.1.1" - ansi-red "^0.1.1" - arr-diff "^1.0.1" - arr-union "^2.0.1" - extend-shallow "^1.1.2" - -plugin-log@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/plugin-log/-/plugin-log-0.1.0.tgz#86049cf6ab10833398a931f3689cbaee7b5e1333" - dependencies: - chalk "^1.1.1" - dateformat "^1.0.11" - preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -1583,14 +944,10 @@ pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" -process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: +process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - pump@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" @@ -1605,37 +962,7 @@ randomatic@^1.1.3: is-number "^2.0.2" kind-of "^3.0.2" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17: +"readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" dependencies: @@ -1644,7 +971,7 @@ read-pkg@^2.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.2, readable-stream@^2.1.5: +readable-stream@^2.1.5: version "2.2.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" dependencies: @@ -1671,13 +998,6 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - regex-cache@^0.4.2: version "0.4.3" resolved "http://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -1697,36 +1017,10 @@ repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" -replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - -require-dir@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-0.1.0.tgz#81e01e299faf5b74c34b6594f8e5add5985ddec5" - -require-dir@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-0.3.2.tgz#c1d5c75e9fbffde9f2e6b33e383db4f594b5a6a9" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - resolve-dir@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" @@ -1749,10 +1043,6 @@ run-sequence@^2.1.0: chalk "^1.1.3" gulp-util "^3.0.8" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - semver@^4.1.0: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -1761,18 +1051,10 @@ sequencify@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - sigmund@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - source-map-resolve@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" @@ -1800,74 +1082,20 @@ sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" - stream-consume@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" -streamfilter@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/streamfilter/-/streamfilter-1.0.5.tgz#87507111beb8e298451717b511cfed8f002abf53" - dependencies: - readable-stream "^2.0.2" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^3.0.0" - string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" -strip-ansi@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" - dependencies: - ansi-regex "^0.2.1" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" dependencies: ansi-regex "^2.0.0" -strip-bom-buf@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" - dependencies: - is-utf8 "^0.2.1" - -strip-bom-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz#956bcc5d84430f69256a90ed823765cd858e159c" - dependencies: - first-chunk-stream "^2.0.0" - strip-bom-buf "^1.0.0" - strip-bom-string@1.X: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" @@ -1879,56 +1107,18 @@ strip-bom@^1.0.0: first-chunk-stream "^1.0.0" is-utf8 "^0.2.0" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -supports-color@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -through2@2.0.3, through2@2.X, through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: +through2@2.0.3, through2@2.X, through2@^2.0.0, through2@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" dependencies: readable-stream "^2.1.5" xtend "~4.0.1" -through2@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" - dependencies: - readable-stream "~1.0.17" - xtend "~2.1.1" - -through2@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7" - dependencies: - readable-stream "~1.0.17" - xtend "~3.0.0" - -through2@^0.6.1, through2@^0.6.5: +through2@^0.6.1: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" dependencies: @@ -1945,10 +1135,6 @@ time-stamp@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - uglify-js@^3.0.5: version "3.0.15" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.15.tgz#aacb323a846b234602270dead8a32441a8806f42" @@ -1982,13 +1168,6 @@ v8flags@^2.0.2: dependencies: user-home "^1.1.1" -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" - vinyl-fs@^0.3.0: version "0.3.14" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" @@ -2016,12 +1195,6 @@ vinyl@1.X: clone-stats "^0.0.1" replace-ext "0.0.1" -vinyl@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.2.3.tgz#bca938209582ec5a49ad538a00fa1f125e513252" - dependencies: - clone-stats "~0.0.1" - vinyl@^0.4.0: version "0.4.6" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" @@ -2037,81 +1210,16 @@ vinyl@^0.5.0: clone-stats "^0.0.1" replace-ext "0.0.1" -vinyl@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.1.tgz#1c3b4931e7ac4c1efee743f3b91a74c094407bb6" - dependencies: - clone "^1.0.0" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - is-stream "^1.1.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@^1.2.12, which@^1.2.9: +which@^1.2.12: version "1.2.12" resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" dependencies: isexe "^1.1.1" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.1, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - dependencies: - object-keys "~0.4.0" - -xtend@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yallist@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - dependencies: - camelcase "^4.1.0" - -yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" From 713cbefb17d4b04c5dfd01a599611aa5712d40dd Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 12 Aug 2017 23:01:31 -0400 Subject: [PATCH 075/226] change color when selecting hours, minutes or seconds --- css/material-datetimepicker.css | 10 ++++++++++ js/angular-material-datetimepicker.js | 23 ++++++++++++++--------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index 750f25c..a7add0d 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -75,6 +75,11 @@ md-dialog.dtp { .dtp div.dtp-actual-maxtime { font-size: 2em; line-height: 0.9; + color: #DCEDC8; +} + +.dtp div.dtp-actual-maxtime span.selected { + color: #fff; } .dtp div.dtp-actual-year { @@ -121,10 +126,15 @@ md-dialog.dtp { } .dtp div.dtp-picker-month, .dtp div.dtp-actual-time { + font-size: 1.2em; font-weight: 500; text-align: center; } +.dtp div.dtp-actual-time.p60 span.selected { + color: #689F38; +} + .dtp .dtp-close { position: absolute; top: 0; diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index d405ec3..d9e6551 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -40,8 +40,9 @@ '
'+ '
' + //start time '
' + - '
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}'+ - ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm:ss" : "HH:mm:ss")}}'+ + '
' + + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}'+ + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}'+ ' {{picker.currentDate.format("A")}}'+ '
' + '
' + @@ -50,18 +51,22 @@ '
' + '
' + ' ' + + '
' + + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}' + + '
' + + '
' + + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}' + '
' + - '
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
' + - '
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm:ss" : "HH:mm:ss")}}
' + ' ' + '
' + '
' + - ' ' + - ' ' + - ' ' + + ' ' + + ' ' + + ' ' + '
' + '
' + '
' + From 7e0fbced0b99e95ea4ca39d53108a0b8c9830864 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 13 Aug 2017 00:12:13 -0400 Subject: [PATCH 076/226] fix seconds selection can add to minutes if 60 is selected --- js/angular-material-datetimepicker.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index d9e6551..5529580 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -354,6 +354,9 @@ minutes = 60 - nearestMin; //always push down } var seconds = date.second(); + if (seconds >= 60) { + seconds = 60 - 1; //always push down + } return moment(date).minutes(minutes).seconds(seconds); }, initDates: function () { @@ -968,6 +971,7 @@ if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM'; picker.currentDate.hour(picker.isPM() ? val + 12 : val); } else { + if (val >= 60) val = 0; picker.currentDate.second(val); } From 12ae1901e30a7a63a1dd4784ea1abbdd80b5c392 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 13 Aug 2017 00:14:18 -0400 Subject: [PATCH 077/226] version 1.8.1 --- README.md | 12 ++++++------ bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- package.json | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 0766106..bb498cf 100644 --- a/README.md +++ b/README.md @@ -59,15 +59,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index ba98ff0..dae2b4c 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.0", + "version": "1.8.1", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index f7ef36c..4805dec 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm:ss" : "HH:mm:ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh:mm:ss" : "HH:mm:ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(e){this.locale=e}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(e){return{date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:e.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,c,o){var d=!1;i.format||(i.date&&i.time&&i.seconds?i.format="YYYY-MM-DD HH:mm:ss":i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var l=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=e(i.currentDate,i.format)),o){var u={"*":"$inherit",debounce:500};o.$options=o.$options?o.$options.createChild(u):u,o.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(i.format):""}}),o.$parsers.push(function(t){if(void 0!==t){var a=e(t,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var u={};for(var m in c)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=l;var p={options:u};t.show({template:r,controller:n,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){i.currentDate=t?t._d:t,d=!1,e(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=Object.keys(i);return{show:function(c){var o=a.defer();angular.copy(i);for(var d in c)-1!=s.indexOf[d]&&c.hasOwnProperty(d)&&c[d];var l=null;void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(l=e()),c.showTodaysDate=l;var u={options:c};return t.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:c.clickOutsideToClose||!1,disableParentScroll:c.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var n=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var r=a.second();return e(a).minutes(i).seconds(r)},initDates:function(){var t=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)r=e(a).locale(t.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=e(n,"x").locale(t.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,e()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=e(this.minDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(t,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=e(this.maxDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var a=e(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(t)).minute(0).second(0):a.hour(t).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(t){var a=e(this.currentDate);return a.minute(t).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,n.maxDate||n.minDate){var c=n.minDate?r(n.minDate):0,o=n.maxDate?r(n.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),r=e(n.currentDate).year(i).month(a);return c(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=n.minDate?r(n.minDate):0,o=r(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(r.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(e,t){n.push(""),e.forEach(function(e,a){if(n.push(""),e)if(r.isInRange(e)){var i="month['days']["+t+"]["+a+"]";n.push(''),n.push(e.format("D")),n.push("")}else n.push(''),n.push(e.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,r){e.cal=r,e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,n){i!=n&&(e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,r){var n="minutes"===r.mode,s="seconds"===r.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=n||s?60:12;a=Math.round(i/360*e)}if(n){var r=c.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),c.currentDate.minute(o)}else s?c.currentDate.second(a):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var r=a.offsetWidth/2-(t.pageX-i.left),n=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),c=Math.round(Math.atan2(r,n)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,v=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+k),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(v+g),S={left:T,top:w,value:n||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};n||s?S.display=S.value<10?"0"+S.value:S.value:c.params.shortTime?S.display=0===b?12:b:S.display=b,x.push(S)}if(t.points=x,!c.params.shortTime&&!n&&!s){for(var I=[],A=M/1.8,Y=12;Y<24;++Y){var P=M+A*Math.sin(2*Math.PI*(Y/12))+f/2-(f+k),O=M-A*Math.cos(2*Math.PI*(Y/12))-g/2-(v+g),V={left:P,top:O,value:Y,style:{"margin-left":P+"px","margin-top":O+"px"}};V.display=Y,I.push(V)}t.points24=I}t.mode=r.mode,D(),e.css("height",p+"px");var E=a[0].querySelector(".dtp-clock-center"),H=E.offsetWidth/2||7.5,N=E.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,q=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(n||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(n?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:q+"px",marginTop:M-q-f+"px"}).addClass(s?"on":""),angular.element(E).css({left:M+f+k-H+"px",marginTop:M-k/2-N+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),r=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*r)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=n?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){n||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return n?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(e){this.locale=e}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(e){return{date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:e.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,c,o){var d=!1;i.format||(i.date&&i.time&&i.seconds?i.format="YYYY-MM-DD HH:mm:ss":i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var l=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=e(i.currentDate,i.format)),o){var u={"*":"$inherit",debounce:500};o.$options=o.$options?o.$options.createChild(u):u,o.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(i.format):""}}),o.$parsers.push(function(t){if(void 0!==t){var a=e(t,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var u={};for(var p in c)i.hasOwnProperty(p)&&!angular.isUndefined(i[p])&&(u[p]=i[p]);u.currentDate=i.currentDate,u.showTodaysDate=l;var m={options:u};t.show({template:r,controller:n,controllerAs:"picker",locals:m,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){i.currentDate=t?t._d:t,d=!1,e(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=Object.keys(i);return{show:function(c){var o=a.defer();angular.copy(i);for(var d in c)-1!=s.indexOf[d]&&c.hasOwnProperty(d)&&c[d];var l=null;void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(l=e()),c.showTodaysDate=l;var u={options:c};return t.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:c.clickOutsideToClose||!1,disableParentScroll:c.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var n=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var r=a.second();return r>=60&&(r=59),e(a).minutes(i).seconds(r)},initDates:function(){var t=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)r=e(a).locale(t.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=e(n,"x").locale(t.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,e()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=e(this.minDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(t,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=e(this.maxDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var a=e(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(t)).minute(0).second(0):a.hour(t).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(t){var a=e(this.currentDate);return a.minute(t).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,n.maxDate||n.minDate){var c=n.minDate?r(n.minDate):0,o=n.maxDate?r(n.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),r=e(n.currentDate).year(i).month(a);return c(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=n.minDate?r(n.minDate):0,o=r(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(r.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(e,t){n.push(""),e.forEach(function(e,a){if(n.push(""),e)if(r.isInRange(e)){var i="month['days']["+t+"]["+a+"]";n.push(''),n.push(e.format("D")),n.push("")}else n.push(''),n.push(e.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,r){e.cal=r,e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,n){i!=n&&(e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,r){var n="minutes"===r.mode,s="seconds"===r.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=n||s?60:12;a=Math.round(i/360*e)}if(n){var r=c.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},p=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var r=a.offsetWidth/2-(t.pageX-i.left),n=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),c=Math.round(Math.atan2(r,n)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,p)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,p)});var m=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,p=parseInt(i(d,"paddingRight").replace("px",""))||0,m=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+p);e.css("width",m+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,D=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=m/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(D+g),I={left:T,top:w,value:n||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};n||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!n&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var E=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+v),Y=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(D+g),O={left:E,top:Y,value:A,style:{"margin-left":E+"px","margin-top":Y+"px"}};O.display=A,S.push(O)}t.points24=S}t.mode=r.mode,k(),e.css("height",m+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(n||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(n?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),r=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*r)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},k=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=n?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){k(),h()}),t.setTime=function(e){n||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return n?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var D=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){m(),D()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 581f42d..74d318c 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","addClass","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm:ss\" : \"HH:mm:ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm\" : \"HH:mm\")}}
' +\r\n '
{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh:mm:ss\" : \"HH:mm:ss\")}}
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","addClass","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index ad97dea..66f11a5 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)} \ No newline at end of file diff --git a/package.json b/package.json index 8d09909..f7a85e1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.0", + "version": "1.8.1", "keywords": [ "css", "js", From 39febfbca9733b6ab49e7f6dac128dd22e229940 Mon Sep 17 00:00:00 2001 From: Simon Schick Date: Tue, 15 Aug 2017 11:55:46 +0400 Subject: [PATCH 078/226] Refactored factory mdcDefaultParams to allow updating every parameter after first initialization --- js/angular-material-datetimepicker.js | 38 +++++++++++++++++---------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 5529580..676b214 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -79,18 +79,16 @@ ''; angular.module(moduleName, ['ngMaterial']) - .provider('mdcDatetimePickerDefaultLocale', function () { - this.locale = window.navigator.userLanguage || window.navigator.language || 'en'; - + .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) { this.$get = function () { - return this; + return mdcDefaultParams().lang; }; this.setDefaultLocale = function (localeString) { - this.locale = localeString; + mdcDefaultParams({ lang: localeString }); }; - }) - .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) { + }]) + .factory('mdcDefaultParams', function () { var default_params = { date: true, time: true, @@ -100,7 +98,7 @@ minDate: null, maxDate: null, currentDate: null, - lang: mdcDatetimePickerDefaultLocale.locale, + lang: window.navigator.userLanguage || window.navigator.language || 'en', weekStart: 0, shortTime: false, cancelText: 'Cancel', @@ -116,8 +114,19 @@ clickOutsideToClose: false, minuteSteps: 5 }; - return default_params; - }]) + + return function (params) { + if (params) { + for (var i in params) { + if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) { + default_params[i] = params[i]; + } + } + } + + return default_params; + }; + }) .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', function ($mdDialog, $timeout) { @@ -260,7 +269,7 @@ minDate: {strign} =null, maxDate: {string} =null, currentDate: {string} =null, - lang: {string} =mdcDatetimePickerDefaultLocale, + lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en', weekStart: {int} =0, shortTime: {boolean} =false, cancelText: {string} ='Cancel', @@ -280,11 +289,12 @@ @return promise */ .factory('mdcDateTimeDialog', ["$mdDialog", "$q", "mdcDefaultParams", function ($mdDialog, $q, mdcDefaultParams) { - var accepted_options = Object.keys(mdcDefaultParams); + var defaultParams = mdcDefaultParams(); + var accepted_options = Object.keys(defaultParams); var service = { show: function (options) { var deferred = $q.defer(); - var params = angular.copy(mdcDefaultParams); + var params = angular.copy(defaultParams); for (var i in options) { if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) { params = options[i]; @@ -329,7 +339,7 @@ this._attachedEvents = []; this.VIEWS = VIEW_STATES; - this.params = angular.copy(mdcDefaultParams); + this.params = angular.copy(mdcDefaultParams()); this.meridien = 'AM'; this.params = angular.extend(this.params, this.options); From ab8c6778a9411bd09cc7abdb0b3a4dcd1790d51b Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 15 Aug 2017 09:05:12 -0400 Subject: [PATCH 079/226] Add setDefaultLocale example --- README.md | 12 ++++++++++-- js/demo.js | 3 ++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bb498cf..c758469 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,6 @@ This plugin exposes a directive which should be used as an attribute for an inpu ``` - ### Directive Attributes The directive accepts several attributes which are described below: @@ -166,7 +165,7 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. minDate: {strign} =null, maxDate: {string} =null, currentDate: {string} =null, - lang: {string} =mdcDatetimePickerDefaultLocale.locale, + lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en', weekStart: {int} =0, shortTime: {boolean} =false, cancelText: {string} ='Cancel', @@ -184,3 +183,12 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. minuteSteps: {int} =5, } ``` + +### Change locale + +To change locale you can use this method after injecting mdcDatetimePickerDefaultLocale provider in your controller. +```javascript + mdcDatetimePickerDefaultLocale.setDefaultLocale('fr'); +``` + +If you use https://github.com/lgalfaso/angular-dynamic-locale it will override this default. diff --git a/js/demo.js b/js/demo.js index 169b48d..4b7d445 100644 --- a/js/demo.js +++ b/js/demo.js @@ -19,7 +19,7 @@ $translateProvider.preferredLanguage('en'); $translateProvider.useSanitizeValueStrategy('sceParameters'); }) - .controller('DemoCtrl', function ($scope, mdcDateTimeDialog, $translate) { + .controller('DemoCtrl', function ($scope, mdcDateTimeDialog, $translate, mdcDatetimePickerDefaultLocale) { $scope.date = moment().startOf('day'); $scope.dateLang = new Date(); $scope.time = new Date(); @@ -76,6 +76,7 @@ $scope.changeLanguage = function() { $translate.use($scope.selectedLang); moment.locale($scope.selectedLang); + mdcDatetimePickerDefaultLocale.setDefaultLocale($scope.selectedLang); }; }) From ecdb7af5eb3c0b8cc8fcd5af3fa042ef640c9c09 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 15 Aug 2017 09:14:22 -0400 Subject: [PATCH 080/226] version 1.8.2 --- README.md | 12 ++++++------ bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c758469..25c9ada 100644 --- a/README.md +++ b/README.md @@ -59,15 +59,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index dae2b4c..e6c4749 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.1", + "version": "1.8.2", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 4805dec..2b3c68a 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale=window.navigator.userLanguage||window.navigator.language||"en",this.$get=function(){return this},this.setDefaultLocale=function(e){this.locale=e}}).factory("mdcDefaultParams",["mdcDatetimePickerDefaultLocale",function(e){return{date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:e.locale,weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5}}]).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,c,o){var d=!1;i.format||(i.date&&i.time&&i.seconds?i.format="YYYY-MM-DD HH:mm:ss":i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var l=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=e(i.currentDate,i.format)),o){var u={"*":"$inherit",debounce:500};o.$options=o.$options?o.$options.createChild(u):u,o.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(i.format):""}}),o.$parsers.push(function(t){if(void 0!==t){var a=e(t,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var u={};for(var p in c)i.hasOwnProperty(p)&&!angular.isUndefined(i[p])&&(u[p]=i[p]);u.currentDate=i.currentDate,u.showTodaysDate=l;var m={options:u};t.show({template:r,controller:n,controllerAs:"picker",locals:m,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){i.currentDate=t?t._d:t,d=!1,e(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=Object.keys(i);return{show:function(c){var o=a.defer();angular.copy(i);for(var d in c)-1!=s.indexOf[d]&&c.hasOwnProperty(d)&&c[d];var l=null;void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(l=e()),c.showTodaysDate=l;var u={options:c};return t.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:c.clickOutsideToClose||!1,disableParentScroll:c.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var n=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var r=a.second();return r>=60&&(r=59),e(a).minutes(i).seconds(r)},initDates:function(){var t=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)r=e(a).locale(t.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=e(n,"x").locale(t.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,e()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=e(this.minDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(t,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=e(this.maxDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var a=e(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(t)).minute(0).second(0):a.hour(t).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(t){var a=e(this.currentDate);return a.minute(t).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,n.maxDate||n.minDate){var c=n.minDate?r(n.minDate):0,o=n.maxDate?r(n.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),r=e(n.currentDate).year(i).month(a);return c(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=n.minDate?r(n.minDate):0,o=r(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(r.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(e,t){n.push(""),e.forEach(function(e,a){if(n.push(""),e)if(r.isInRange(e)){var i="month['days']["+t+"]["+a+"]";n.push(''),n.push(e.format("D")),n.push("")}else n.push(''),n.push(e.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,r){e.cal=r,e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,n){i!=n&&(e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,r){var n="minutes"===r.mode,s="seconds"===r.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=n||s?60:12;a=Math.round(i/360*e)}if(n){var r=c.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},p=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var r=a.offsetWidth/2-(t.pageX-i.left),n=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),c=Math.round(Math.atan2(r,n)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,p)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,p)});var m=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,p=parseInt(i(d,"paddingRight").replace("px",""))||0,m=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+p);e.css("width",m+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,D=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=m/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(D+g),I={left:T,top:w,value:n||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};n||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!n&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var E=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+v),Y=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(D+g),O={left:E,top:Y,value:A,style:{"margin-left":E+"px","margin-top":Y+"px"}};O.display=A,S.push(O)}t.points24=S}t.mode=r.mode,k(),e.css("height",m+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(n||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(n?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),r=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*r)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},k=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=n?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){k(),h()}),t.setTime=function(e){n||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return n?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var D=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){m(),D()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,c,o){var d=!1;i.format||(i.date&&i.time&&i.seconds?i.format="YYYY-MM-DD HH:mm:ss":i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var l=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=e(i.currentDate,i.format)),o){var u={"*":"$inherit",debounce:500};o.$options=o.$options?o.$options.createChild(u):u,o.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(i.format):""}}),o.$parsers.push(function(t){if(void 0!==t){var a=e(t,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var u={};for(var p in c)i.hasOwnProperty(p)&&!angular.isUndefined(i[p])&&(u[p]=i[p]);u.currentDate=i.currentDate,u.showTodaysDate=l;var m={options:u};t.show({template:r,controller:n,controllerAs:"picker",locals:m,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){i.currentDate=t?t._d:t,d=!1,e(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var d in i)-1!=c.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var n=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var r=a.second();return r>=60&&(r=59),e(a).minutes(i).seconds(r)},initDates:function(){var t=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)r=e(a).locale(t.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=e(n,"x").locale(t.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,e()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=e(this.minDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(t,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=e(this.maxDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var a=e(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(t)).minute(0).second(0):a.hour(t).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(t){var a=e(this.currentDate);return a.minute(t).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,n.maxDate||n.minDate){var c=n.minDate?r(n.minDate):0,o=n.maxDate?r(n.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),r=e(n.currentDate).year(i).month(a);return c(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=n.minDate?r(n.minDate):0,o=r(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(r.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(e,t){n.push(""),e.forEach(function(e,a){if(n.push(""),e)if(r.isInRange(e)){var i="month['days']["+t+"]["+a+"]";n.push(''),n.push(e.format("D")),n.push("")}else n.push(''),n.push(e.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,r){e.cal=r,e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,n){i!=n&&(e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,r){var n="minutes"===r.mode,s="seconds"===r.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=n||s?60:12;a=Math.round(i/360*e)}if(n){var r=c.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},p=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var r=a.offsetWidth/2-(t.pageX-i.left),n=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),c=Math.round(Math.atan2(r,n)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,p)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,p)});var m=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,p=parseInt(i(d,"paddingRight").replace("px",""))||0,m=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+p);e.css("width",m+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,D=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=m/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(D+g),I={left:T,top:w,value:n||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};n||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!n&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var O=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+v),E=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(D+g),Y={left:O,top:E,value:A,style:{"margin-left":O+"px","margin-top":E+"px"}};Y.display=A,S.push(Y)}t.points24=S}t.mode=r.mode,k(),e.css("height",m+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(n||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(n?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),r=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*r)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},k=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=n?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){k(),h()}),t.setTime=function(e){n||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return n?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var D=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){m(),D()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 74d318c..9ad5962 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","provider","this","locale","navigator","userLanguage","language","$get","setDefaultLocale","localeString","factory","mdcDatetimePickerDefaultLocale","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","mdcDefaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","params","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","addClass","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .provider('mdcDatetimePickerDefaultLocale', function () {\r\n this.locale = window.navigator.userLanguage || window.navigator.language || 'en';\r\n\r\n this.$get = function () {\r\n return this;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n this.locale = localeString;\r\n };\r\n })\r\n .factory('mdcDefaultParams', ['mdcDatetimePickerDefaultLocale', function (mdcDatetimePickerDefaultLocale) {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: mdcDatetimePickerDefaultLocale.locale,\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n return default_params;\r\n }])\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =mdcDatetimePickerDefaultLocale,\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var accepted_options = Object.keys(mdcDefaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(mdcDefaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams);\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","addClass","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index f7a85e1..bb33992 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.1", + "version": "1.8.2", "keywords": [ "css", "js", From 6d4a28d6dd6115bea1be29c4453721e01e75e255 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 15 Aug 2017 22:48:10 -0400 Subject: [PATCH 081/226] Add theming info to readme --- README.md | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 25c9ada..1e1c197 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ # Angular Material DateTimePicker - Originally designed for Bootstrap Material, this has been modified to work with [Angular Material](https://material.angularjs.org/). This is an Android style date-time picker for Angular Material. Some added features include: - Double or single click to select date and/or time @@ -16,7 +15,6 @@ Originally designed for Bootstrap Material, this has been modified to work with - Support RequireJS and Webpack ## Updates - | Date | Author | Description | | ---------- | -------- | ------------------------------------------------------ | | 2017-08-12 | hexadecy | Add optionnal seconds clock | @@ -31,7 +29,6 @@ Originally designed for Bootstrap Material, this has been modified to work with | 2015-11-12 | logbon72 | Adapted plugin for Angular Material | ### Dependencies - Depends on the following library: - AngularJS Material @@ -50,7 +47,6 @@ Depends on the following library: ``` ## Installing via yarn, npm or bower - ``` yarn add ng-material-datetimepicker npm i ng-material-datetimepicker @@ -71,11 +67,9 @@ or ``` ## Live Example - Click [here](https://beenote.github.io/angular-material-datetimepicker/) to see live examples. ## Usage - Add the plugin module as a dependency to your AngularJS module: ```js @@ -102,7 +96,6 @@ This plugin exposes a directive which should be used as an attribute for an inpu ``` ### Directive Attributes - The directive accepts several attributes which are described below: | Name | Type | Description | @@ -131,7 +124,6 @@ The directive accepts several attributes which are described below: | **minute-steps** | Number | 1 to 59 minute steps (default: 5) | ### Date/Time Dialog Service - You can also use the Date Time picker as a service, using the `mdcDateTimeDialog` service. The dialog returns a promise which is resolved with the selected date-time value and rejected on cancellation. Example usage: @@ -185,10 +177,34 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. ``` ### Change locale - To change locale you can use this method after injecting mdcDatetimePickerDefaultLocale provider in your controller. ```javascript mdcDatetimePickerDefaultLocale.setDefaultLocale('fr'); ``` If you use https://github.com/lgalfaso/angular-dynamic-locale it will override this default. + +### Theming +Copy this css in your project to change color and background color. +```css +.dtp table.dtp-picker-days tr > td > a.selected, +.dtp table.dtp-picker-days tr > td > a.selected.hilite, +.dtp div.dtp-date, .dtp div.dtp-time, .dtp .dtp-hand.on, +.dtp .dtp-actual-meridien a.selected, +.dtp .dtp-picker-time > a.dtp-select-hour.selected { + background: #2abab9; +} + +.dtp table.dtp-picker-days tr > td > a.hilite:not(.selected), +.dtp div.dtp-actual-time.p60 span.selected { + color: #2abab9; +} + +.dtp div.dtp-year-btn, .dtp div.dtp-actual-year, .dtp div.dtp-actual-maxtime { + color: #d0f0f0; +} + +.dtp > .dtp-content > .dtp-date-view > header.dtp-header { + background: #009796; +} +``` From 111074424df7dfdf7bb5b436e7a0d85f9bcea3ac Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 16 Aug 2017 09:45:00 -0400 Subject: [PATCH 082/226] smaller width for actions buttons and more info on mdcDefaultParams useful for translation --- README.md | 24 ++++++++++++++---------- css/material-datetimepicker.css | 4 ++++ index.html | 12 ------------ js/demo.js | 8 ++++++-- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 1e1c197..8aed9a5 100644 --- a/README.md +++ b/README.md @@ -116,13 +116,25 @@ The directive accepts several attributes which are described below: | **week-start** | Number | First day of the week (default: 0 => Sunday) | | **disable-dates** | Date[] | Dates to be disabled or not selectable by user | | **week-days** | Boolean | true => Highlight only week-days (default: false) | -| **show-todays-date** | Attribute | Show today's date (default: undefined) | +| **show-todays-date** | Attribute | Show today's date (default: false) | | **disable-parent-scroll** | Boolean | true => Disable scrolling while the dialog is open (default : false) | | **auto-ok** | Boolean | true => Single click (default: false) | | **edit-input** | Boolean | true => Input editable and don't show dialog (default: false) | | **click-outside-to-close**| Boolean | true => A click outside close the dialog (default: false) | | **minute-steps** | Number | 1 to 59 minute steps (default: 5) | +### Set or update params by injecting `mdcDefaultParams` provider +To change params like the locale you can use this method instead of attributes for all datetimepicker: +```javascript + mdcDefaultParams({ lang: 'fr', cancelText: 'annuler', todayText: 'maintenant', okText: 'ok' }); + ... + mdcDefaultParams({ lang: 'en', cancelText: 'cancel', todayText: 'now', okText: 'ok' }); +``` +#### Notes +`mdcDatetimePickerDefaultLocale` will be deprecated. + +If you use https://github.com/lgalfaso/angular-dynamic-locale it will always override the locale. + ### Date/Time Dialog Service You can also use the Date Time picker as a service, using the `mdcDateTimeDialog` service. The dialog returns a promise which is resolved with the selected date-time value and rejected on cancellation. @@ -176,16 +188,8 @@ The `mdcDateTimeDialog.show` accepts the same options as the directive. } ``` -### Change locale -To change locale you can use this method after injecting mdcDatetimePickerDefaultLocale provider in your controller. -```javascript - mdcDatetimePickerDefaultLocale.setDefaultLocale('fr'); -``` - -If you use https://github.com/lgalfaso/angular-dynamic-locale it will override this default. - ### Theming -Copy this css in your project to change color and background color. +Copy this css code in your project to override default color. ```css .dtp table.dtp-picker-days tr > td > a.selected, .dtp table.dtp-picker-days tr > td > a.selected.hilite, diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index a7add0d..7dac812 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -388,4 +388,8 @@ md-dialog.dtp { -ms-transform: rotate(180deg); -webkit-transform: rotate(180deg); transform: rotate(180deg); +} + +.dtp-btn-today, .dtp-btn-ok, .dtp-btn-cancel { + min-width: 70px; } \ No newline at end of file diff --git a/index.html b/index.html index f62aa7e..e0119ff 100644 --- a/index.html +++ b/index.html @@ -133,18 +133,6 @@

Datetime Pickers

-
- - - - -
-
-
diff --git a/js/demo.js b/js/demo.js index 4b7d445..7eec5b0 100644 --- a/js/demo.js +++ b/js/demo.js @@ -19,7 +19,7 @@ $translateProvider.preferredLanguage('en'); $translateProvider.useSanitizeValueStrategy('sceParameters'); }) - .controller('DemoCtrl', function ($scope, mdcDateTimeDialog, $translate, mdcDatetimePickerDefaultLocale) { + .controller('DemoCtrl', function ($scope, mdcDateTimeDialog, $translate, mdcDefaultParams) { $scope.date = moment().startOf('day'); $scope.dateLang = new Date(); $scope.time = new Date(); @@ -76,7 +76,11 @@ $scope.changeLanguage = function() { $translate.use($scope.selectedLang); moment.locale($scope.selectedLang); - mdcDatetimePickerDefaultLocale.setDefaultLocale($scope.selectedLang); + mdcDefaultParams({ + lang: $scope.selectedLang, + cancelText: $translate.instant('CANCEL'), + todayText: $translate.instant('TODAY') + }); }; }) From 5408d2c190c42d4dc801525caec1db58d5812f2a Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 16 Aug 2017 10:23:04 -0400 Subject: [PATCH 083/226] version 1.8.3 --- README.md | 12 ++++++------ bower.json | 2 +- dist/material-datetimepicker.min.css | 2 +- package.json | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 8aed9a5..085e1fb 100644 --- a/README.md +++ b/README.md @@ -55,15 +55,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index e6c4749..12f85f4 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.2", + "version": "1.8.3", "keywords": [ "css", "js", diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 66f11a5..82233fe 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px} \ No newline at end of file diff --git a/package.json b/package.json index bb33992..94ef1ca 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.2", + "version": "1.8.3", "keywords": [ "css", "js", From eae223e52013b8a94a92d3fba3afc1851152dcbe Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 19 Aug 2017 23:28:57 -0400 Subject: [PATCH 084/226] year and month menu picker --- css/material-datetimepicker.css | 2 + js/angular-material-datetimepicker.js | 71 +++++++++++++++++++++++++-- js/demo.js | 4 +- 3 files changed, 72 insertions(+), 5 deletions(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index 7dac812..da728e3 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -65,6 +65,7 @@ md-dialog.dtp { .dtp div.dtp-actual-month { font-size: 1.5em; + cursor: pointer; } .dtp div.dtp-actual-num { @@ -85,6 +86,7 @@ md-dialog.dtp { .dtp div.dtp-actual-year { font-size: 1.6em; color: #DCEDC8; + cursor: pointer; } .dtp div.dtp-month-btn { diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 676b214..680354c 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -29,13 +29,27 @@ '
' + '
' + '
' + - '
{{picker.currentDate.format("MMM") | uppercase}}
' + + ' ' + + '
{{picker.currentDate.format("MMM") | uppercase}}
' + + ' ' + + ' ' + + ' {{itemMonth}}' + + ' ' + + ' ' + + '
' + '
' + '
' + '
{{picker.currentDate.format("DD")}}
' + '
' + '
' + - '
{{picker.currentDate.format("YYYY")}}
' + + ' ' + + '
{{picker.currentDate.format("YYYY")}}
' + + ' ' + + ' ' + + ' {{itemYear}}' + + ' ' + + ' ' + + '
' + '
' + '
'+ '
' + //start time @@ -288,7 +302,7 @@ } @return promise */ - .factory('mdcDateTimeDialog', ["$mdDialog", "$q", "mdcDefaultParams", function ($mdDialog, $q, mdcDefaultParams) { + .factory('mdcDateTimeDialog', ["$mdDialog", "$q", "$mdMenu", "mdcDefaultParams", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) { var defaultParams = mdcDefaultParams(); var accepted_options = Object.keys(defaultParams); var service = { @@ -537,6 +551,57 @@ this.selectDate(this.currentDate.add(amount, 'year')); } }, + openMenu: function ($mdMenu, ev) { + $mdMenu.open(ev); + }, + monthsAvailable: function () { + var monthsArr = [], + _date = moment(this.currentDate); + + for (var m = 0; m < 12; m++) { + var curMonth = _date.month(m); + if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) { + monthsArr.push(curMonth.format('MMMM')); + } + } + return monthsArr; + }, + selectMonth: function (month) { + this.selectDate(this.currentDate.month(month)); + }, + yearsAvailable: function () { + var _minDate, _maxDate, len, startYear, yearsArr = [], + _date = this.currentDate.year(); + + if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) { + _minDate = moment(this.minDate).year(); + } + if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) { + _maxDate = moment(this.maxDate).year(); + } + + if (_maxDate && _minDate) { + len = _maxDate - _minDate; + startYear = _minDate; + } else if (_minDate) { + len = 115; + startYear = _minDate; + } else if (_maxDate) { + len = 30; + startYear = _maxDate - len; + } else { + len = 60; + startYear = _date - len/2; + } + + for (var i=0; i < len; i++) { + yearsArr.push(startYear+i); + } + return yearsArr; + }, + selectYear: function (year) { + this.selectDate(this.currentDate.year(year)); + }, isPreviousMonthVisible: function () { return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false); }, diff --git a/js/demo.js b/js/demo.js index 7eec5b0..52a8150 100644 --- a/js/demo.js +++ b/js/demo.js @@ -33,8 +33,8 @@ newDate.setMilliseconds(0); $scope.dateTimeNoMin = newDate; - $scope.minDate = moment().subtract(3, 'year'); - $scope.maxDate = moment().add(3, 'year'); + $scope.minDate = moment().subtract(6, 'year'); + $scope.maxDate = moment().add(6, 'year'); $scope.dates = [new Date('2017-11-14T00:00:00'), new Date('2017-11-15T00:00:00'), new Date('2017-11-30T00:00:00'), new Date('2017-12-12T00:00:00'), new Date('2017-12-13T00:00:00'), new Date('2017-12-31T00:00:00')]; From ab42de373da89e6e31ecbaa28f1755e1a7404c0b Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 19 Aug 2017 23:35:50 -0400 Subject: [PATCH 085/226] version 1.8.4 --- README.md | 20 +-- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- index.html | 12 +- package.json | 10 +- yarn.lock | 119 +++++++++++++++--- 8 files changed, 125 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 085e1fb..8774924 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ Originally designed for Bootstrap Material, this has been modified to work with - Double or single click to select date and/or time - Mouse click down with mouse move or touch move to select time - Swipe left to go to next month or Swipe right to go to previous month +- Quick year and month menu selector - Configurable first day of the week - Support 24-hour format display - Can disable dates, not selectable by user @@ -17,6 +18,7 @@ Originally designed for Bootstrap Material, this has been modified to work with ## Updates | Date | Author | Description | | ---------- | -------- | ------------------------------------------------------ | +| 2017-08-19 | hexadecy | Quick year and month menu selector | | 2017-08-12 | hexadecy | Add optionnal seconds clock | | 2017-07-30 | hexadecy | Highlight only week-days (business days) | | 2017-07-22 | hexadecy | Mouse or touch move to select time, minute steps param | @@ -38,9 +40,9 @@ Depends on the following library: - Moment ``` - - - + + + @@ -55,15 +57,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 12f85f4..c823e2b 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.3", + "version": "1.8.4", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 2b3c68a..0a645a6 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},r='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,c,o){var d=!1;i.format||(i.date&&i.time&&i.seconds?i.format="YYYY-MM-DD HH:mm:ss":i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var l=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=e(i.currentDate,i.format)),o){var u={"*":"$inherit",debounce:500};o.$options=o.$options?o.$options.createChild(u):u,o.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(i.format):""}}),o.$parsers.push(function(t){if(void 0!==t){var a=e(t,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var u={};for(var p in c)i.hasOwnProperty(p)&&!angular.isUndefined(i[p])&&(u[p]=i[p]);u.currentDate=i.currentDate,u.showTodaysDate=l;var m={options:u};t.show({template:r,controller:n,controllerAs:"picker",locals:m,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){i.currentDate=t?t._d:t,d=!1,e(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var d in i)-1!=c.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:r,controller:n,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var n=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return n.$inject=["$scope","$mdDialog","mdcDefaultParams"],n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var r=a.second();return r>=60&&(r=59),e(a).minutes(i).seconds(r)},initDates:function(){var t=this,a=function(a,i){var r=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))r=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)r=e(a).locale(t.params.lang);else if(angular.isDate(a)){var n=a.getTime();r=e(n,"x").locale(t.params.lang)}else a._isAMomentObject&&(r=a);else r=i;return r};this.currentDate=a(this.params.currentDate,e()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var r=!0;if(void 0!==this.minDate&&null!==this.minDate){var n=e(this.minDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))>=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))>=parseInt(n.format("X")))}return r},isBeforeMaxDate:function(t,a,i){var r=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=e(this.maxDate),s=e(t);a||i||(n.hour(0),n.minute(0),s.hour(0),s.minute(0)),n.second(0),s.second(0),n.millisecond(0),s.millisecond(0),i?r=parseInt(s.format("X"))<=parseInt(n.format("X")):(s.minute(0),n.minute(0),r=parseInt(s.format("X"))<=parseInt(n.format("X")))}return r},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(e(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(e(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(t){var a=e(this.currentDate);return this.params.shortTime?a.hour(this.convertHours(t)).minute(0).second(0):a.hour(t).minute(0).second(0),this.isAfterMinDate(a,!0,!1)&&this.isBeforeMaxDate(a,!0,!1)},isMinuteAvailable:function(t){var a=e(this.currentDate);return a.minute(t).second(0),this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,n.maxDate||n.minDate){var c=n.minDate?r(n.minDate):0,o=n.maxDate?r(n.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=r(n.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),r=e(n.currentDate).year(i).month(a);return c(r)},i.$watch(function(){return n.currentDate?n.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=n.minDate?r(n.minDate):0,o=r(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(n.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),r=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(r.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),r=a.cal,n=[];a.month.days.forEach(function(e,t){n.push(""),e.forEach(function(e,a){if(n.push(""),e)if(r.isInRange(e)){var i="month['days']["+t+"]["+a+"]";n.push(''),n.push(e.format("D")),n.push("")}else n.push(''),n.push(e.format("D")),n.push("");n.push("")}),n.push("")}),i.html(n.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,r){e.cal=r,e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,n){i!=n&&(e.month=r.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,r){var n="minutes"===r.mode,s="seconds"===r.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=n||s?60:12;a=Math.round(i/360*e)}if(n){var r=c.params.minuteSteps;(r<1||r>59)&&(r=1);var o=r*Math.round(a/r);o>=60&&(o=60-r),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},p=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var r=a.offsetWidth/2-(t.pageX-i.left),n=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(r,2)+Math.pow(n,2)),c=Math.round(Math.atan2(r,n)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,p)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,p)});var m=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,p=parseInt(i(d,"paddingRight").replace("px",""))||0,m=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+p);e.css("width",m+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,D=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=m/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(D+g),I={left:T,top:w,value:n||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};n||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!n&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var O=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+v),E=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(D+g),Y={left:O,top:E,value:A,style:{"margin-left":O+"px","margin-top":E+"px"}};Y.display=A,S.push(Y)}t.points24=S}t.mode=r.mode,k(),e.css("height",m+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(n||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(n?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),r=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*r)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},k=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=n?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){k(),h()}),t.setTime=function(e){n||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return n?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var D=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){m(),D()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,c,o){var d=!1;i.format||(i.date&&i.time&&i.seconds?i.format="YYYY-MM-DD HH:mm:ss":i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var l=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=e(i.currentDate,i.format)),o){var u={"*":"$inherit",debounce:500};o.$options=o.$options?o.$options.createChild(u):u,o.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(i.format):""}}),o.$parsers.push(function(t){if(void 0!==t){var a=e(t,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var u={};for(var m in c)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=l;var p={options:u};t.show({template:n,controller:r,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){i.currentDate=t?t._d:t,d=!1,e(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,k=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(k+g),I={left:T,top:w,value:r||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};r||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var S=[],A=M/1.8,V=12;V<24;++V){var Y=M+A*Math.sin(2*Math.PI*(V/12))+f/2-(f+v),O=M-A*Math.cos(2*Math.PI*(V/12))-g/2-(k+g),E={left:Y,top:O,value:V,style:{"margin-left":Y+"px","margin-top":O+"px"}};E.display=V,S.push(E)}t.points24=S}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var k=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),k()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 9ad5962..1d18713 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","startOf","endOf","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","year","month","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","addClass","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","addClass","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 82233fe..dc8dfd8 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px} \ No newline at end of file diff --git a/index.html b/index.html index e0119ff..8fb37f1 100644 --- a/index.html +++ b/index.html @@ -12,15 +12,15 @@ - - - + + + - + - - + + diff --git a/package.json b/package.json index 94ef1ca..3a7b1aa 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.3", + "version": "1.8.4", "keywords": [ "css", "js", @@ -16,9 +16,9 @@ "homepage": "https://beenote.github.io/angular-material-datetimepicker/", "main": "js/angular-material-datetimepicker.js", "dependencies": { - "angular": "^1.6.5", - "angular-animate": "^1.6.5", - "angular-aria": "^1.6.5", + "angular": "^1.6.6", + "angular-animate": "^1.6.6", + "angular-aria": "^1.6.6", "angular-material": "^1.1.4", "moment": "^2.18.1" }, @@ -30,7 +30,7 @@ "gulp": "^3.9.1", "gulp-clean-css": "^3.7.0", "gulp-rename": "^1.2.2", - "gulp-sourcemaps": "^2.6.0", + "gulp-sourcemaps": "^2.6.1", "gulp-uglify": "^3.0.0", "pump": "^1.0.2", "run-sequence": "^2.1.0" diff --git a/yarn.lock b/yarn.lock index fad788e..e136bb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,21 +31,21 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.6.5: - version "1.6.5" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.5.tgz#3817c75880d05fc899a6c8d4b09d1cc62a71e93a" +angular-animate@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.6.tgz#6925647b141a040d241bf125040f1a150fcd8a70" -angular-aria@^1.6.5: - version "1.6.5" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.5.tgz#37d9d35349df57934968dc7e1679d97ea96f863c" +angular-aria@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.6.tgz#58dd748e09564bc8409f739bde57b35fbee5b6a5" angular-material@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.4.tgz#27de35646f54ccd320080af0c708e1b438af87f6" -angular@^1.6.5: - version "1.6.5" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.5.tgz#37f788eebec5ce2e3fa02b17bbcb2a231576a0d6" +angular@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.6.tgz#fd5a3cfb437ce382d854ee01120797978527cb64" ansi-regex@^2.0.0: version "2.1.1" @@ -167,20 +167,27 @@ css@2.X, css@^2.2.1: source-map-resolve "^0.3.0" urix "^0.1.0" +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + dateformat@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" -debug-fabulous@0.1.X: - version "0.1.0" - resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.1.0.tgz#ad0ea07a5d519324fb55842a8f34ee59c7f8ff6c" +debug-fabulous@>=0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.1.1.tgz#1b970878c9fa4fbd1c88306eab323c830c58f1d6" dependencies: - debug "2.X" + debug "2.3.0" + memoizee "^0.4.5" object-assign "4.1.0" -debug@2.X: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" +debug@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.0.tgz#3912dc55d7167fc3af17d2b85c13f93deaedaa43" dependencies: ms "0.7.2" @@ -222,10 +229,48 @@ end-of-stream@~0.1.5: dependencies: once "~1.3.0" +es5-ext@^0.10.13, es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: + version "0.10.29" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.29.tgz#768eb2dfc4957bcf35fa0568f193ab71ede53fd8" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-iterator@2, es6-iterator@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" + +es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +event-emitter@^0.3.4: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -442,16 +487,16 @@ gulp-rename@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" -gulp-sourcemaps@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.0.tgz#7ccce899a8a3bfca1593a3348d0fbf41dd3f51e5" +gulp-sourcemaps@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.1.tgz#833a4e28f0b8f4661075032cd782417f7cd8fb0b" dependencies: "@gulp-sourcemaps/identity-map" "1.X" "@gulp-sourcemaps/map-sources" "1.X" acorn "4.X" convert-source-map "1.X" css "2.X" - debug-fabulous "0.1.X" + debug-fabulous ">=0.1.1" detect-newline "2.X" graceful-fs "4.X" source-map "0.X" @@ -608,6 +653,10 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-promise@^2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + is-relative@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" @@ -785,6 +834,12 @@ lru-cache@2: version "2.7.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" +lru-queue@0.1: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + dependencies: + es5-ext "~0.10.2" + make-error-cause@^1.1.1: version "1.2.2" resolved "https://registry.yarnpkg.com/make-error-cause/-/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d" @@ -799,6 +854,19 @@ map-cache@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" +memoizee@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.5.tgz#1bc3ea1e4be056dd475d521979d7be3d5e5b21c8" + dependencies: + d "1" + es5-ext "^0.10.13" + es6-weak-map "^2.0.1" + event-emitter "^0.3.4" + is-promise "^2.1" + lru-queue "0.1" + next-tick "1" + timers-ext "0.1" + micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -862,6 +930,10 @@ natives@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" +next-tick@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -1135,6 +1207,13 @@ time-stamp@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" +timers-ext@0.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.2.tgz#61cc47a76c1abd3195f14527f978d58ae94c5204" + dependencies: + es5-ext "~0.10.14" + next-tick "1" + uglify-js@^3.0.5: version "3.0.15" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.15.tgz#aacb323a846b234602270dead8a32441a8806f42" From c294b39861fa151e6e10d0e7e8fe964f8dca6d15 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 1 Sep 2017 00:14:29 -0400 Subject: [PATCH 086/226] #118 clear button for edit-input --- css/material-datetimepicker.css | 16 +++++++++++++++- js/angular-material-datetimepicker.js | 16 +++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index da728e3..8861e6f 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -394,4 +394,18 @@ md-dialog.dtp { .dtp-btn-today, .dtp-btn-ok, .dtp-btn-cancel { min-width: 70px; -} \ No newline at end of file +} + +.dtp-clear { + position: absolute; + top: 0; + right: -10px; +} + +/* Remove IE clear button */ +.dtp-no-msclear::-ms-clear { + display: none; + width : 0; + height: 0; +} + diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 680354c..fa09f97 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -141,8 +141,8 @@ return default_params; }; }) - .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', - function ($mdDialog, $timeout) { + .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', + function ($mdDialog, $timeout, $compile) { return { restrict: 'A', @@ -216,7 +216,6 @@ } - //@TODO custom event to trigger input if (!scope.editInput) { element.on('focus', function (e) { e.preventDefault(); @@ -266,6 +265,17 @@ }) ; }); + } else { + element.addClass('dtp-no-msclear'); + element.after($compile('')(scope)); + + scope.clear = function() { + ngModel.$setViewValue(null); + ngModel.$render(); + $timeout(function() { + element[0].focus(); + }, 0, false); + }; } } }; From 6b257a72852dea41f6c559fcbd3a5ec36653ccde Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 1 Sep 2017 00:19:11 -0400 Subject: [PATCH 087/226] version 1.8.5 --- README.md | 18 ++++++++++++------ bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- .../angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- package.json | 2 +- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 8774924..95a7947 100644 --- a/README.md +++ b/README.md @@ -57,15 +57,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + +``` +or +``` + + + ``` ## Live Example diff --git a/bower.json b/bower.json index c823e2b..1572193 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.4", + "version": "1.8.5", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 0a645a6..2f3d263 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout",function(t,a){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(i,s,c,o){var d=!1;i.format||(i.date&&i.time&&i.seconds?i.format="YYYY-MM-DD HH:mm:ss":i.date&&i.time?i.format="YYYY-MM-DD HH:mm":i.date?i.format="YYYY-MM-DD":i.format="HH:mm");var l=null;if(void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),angular.isString(i.currentDate)&&""!==i.currentDate&&(i.currentDate=e(i.currentDate,i.format)),o){var u={"*":"$inherit",debounce:500};o.$options=o.$options?o.$options.createChild(u):u,o.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(i.format):""}}),o.$parsers.push(function(t){if(void 0!==t){var a=e(t,i.format);return a.isValid()?a._d:void 0}})}i.editInput||s.on("focus",function(o){if(o.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var u={};for(var m in c)i.hasOwnProperty(m)&&!angular.isUndefined(i[m])&&(u[m]=i[m]);u.currentDate=i.currentDate,u.showTodaysDate=l;var p={options:u};t.show({template:n,controller:r,controllerAs:"picker",locals:p,openFrom:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:u.clickOutsideToClose||!1,disableParentScroll:u.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){i.currentDate=t?t._d:t,d=!1,e(i.currentDate).isSame(u.currentDate)||a(i.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,k=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(k+g),I={left:T,top:w,value:r||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};r||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var S=[],A=M/1.8,V=12;V<24;++V){var Y=M+A*Math.sin(2*Math.PI*(V/12))+f/2-(f+v),O=M-A*Math.cos(2*Math.PI*(V/12))-g/2-(k+g),E={left:Y,top:O,value:V,style:{"margin-left":Y+"px","margin-top":O+"px"}};E.display=V,S.push(E)}t.points24=S}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var k=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),k()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(s,c,o,d){var l=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var u=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(u=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var m={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(m):m,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}s.editInput?(c.addClass("dtp-no-msclear"),c.after(i('')(s)),s.clear=function(){d.$setViewValue(null),d.$render(),a(function(){c[0].focus()},0,!1)}):c.on("focus",function(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!l){l=!0;var d={};for(var m in o)s.hasOwnProperty(m)&&!angular.isUndefined(s[m])&&(d[m]=s[m]);d.currentDate=s.currentDate,d.showTodaysDate=u;var p={options:d};t.show({template:n,controller:r,controllerAs:"picker",locals:p,openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){s.currentDate=t?t._d:t,l=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){l=!1,c.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,k=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(k+g),I={left:T,top:w,value:r||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};r||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var Y=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+v),O=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(k+g),E={left:Y,top:O,value:A,style:{"margin-left":Y+"px","margin-top":O+"px"}};E.display=A,S.push(E)}t.points24=S}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var k=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),k()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 1d18713..dd7505a 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","on","e","preventDefault","blur","parent","removeClass","options","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","$compile","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","addClass","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout',\r\n function ($mdDialog, $timeout) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n //@TODO custom event to trigger input\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","addClass","after","clear","$setViewValue","$render","focus","on","e","preventDefault","blur","parent","removeClass","options","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"CAAA,WACE,aAEA,SAASA,EAAqBC,GAC9B,IAAIC,EAAa,uBAEbC,GACFC,KAAM,EACNC,KAAM,EACNC,OAAQ,GAGNC,EAAM,SAAUC,EAAIC,GAEtB,OADAD,EAAKE,QAAQC,QAAQH,GACb,qBAAsBI,OAAUA,OAAOC,iBAAiBL,EAAG,IAAIC,GAAQD,EAAGD,IAAIE,IAGpFK,EACF,ouNA4EFJ,QAAQK,OAAOb,GAAa,eACzBc,QAAQ,kCAAmC,mBAAoB,SAAUC,GACxEC,KAAKC,KAAO,WACV,OAAOF,IAAmBG,MAG5BF,KAAKG,iBAAmB,SAAUC,GAChCL,GAAmBG,KAAME,QAG5BC,QAAQ,mBAAoB,WAC3B,IAAIC,GACFC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,SAAS,EACTC,OAAQ,aACRC,QAAS,KACTC,QAAS,KACTC,YAAa,KACbZ,KAAMR,OAAOqB,UAAUC,cAAgBtB,OAAOqB,UAAUE,UAAY,KACpEC,UAAW,EACXC,WAAW,EACXC,WAAY,SACZC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,UAAW,QACXC,gBACAC,UAAU,EACVC,qBAAqB,EACrBC,QAAQ,EACRC,WAAW,EACXC,qBAAqB,EACrBC,YAAa,GAGf,OAAO,SAAUC,GACf,GAAIA,EACF,IAAK,IAAIC,KAAKD,EACR1B,EAAe4B,eAAeD,IAAMD,EAAOE,eAAeD,KAC5D3B,EAAe2B,GAAKD,EAAOC,IAKjC,OAAO3B,KAGV6B,UAAU,qBAAsB,YAAa,WAAY,WACxD,SAAUC,EAAWC,EAAUC,GAE7B,OACEC,SAAU,IACVC,QAAS,UACTC,OACE3B,YAAa,WACb4B,SAAU,IACVlC,KAAM,IACND,KAAM,IACNE,QAAS,IACTC,QAAS,IACTE,QAAS,IACTC,QAAS,IACTY,aAAc,IACdC,SAAU,IACVP,UAAW,IACXD,UAAW,IACXP,OAAQ,IACRS,WAAY,IACZC,OAAQ,IACRnB,KAAM,IACNoB,OAAQ,IACRC,OAAQ,IACRoB,eAAgB,IAChBnB,UAAW,IACXG,oBAAqB,IACrBC,OAAQ,IACRC,UAAW,IACXC,oBAAqB,IACrBC,YAAa,KAEfa,KAAM,SAAUH,EAAOhD,EAASoD,EAAOC,GACrC,IAAIC,GAAO,EACNN,EAAM9B,SACL8B,EAAMlC,MAAQkC,EAAMjC,MAAQiC,EAAM/B,QACpC+B,EAAM9B,OAAS,sBACN8B,EAAMlC,MAAQkC,EAAMjC,KAC7BiC,EAAM9B,OAAS,mBACN8B,EAAMlC,KACfkC,EAAM9B,OAAS,aAEf8B,EAAM9B,OAAS,SAInB,IAAIqC,EAAe,KASnB,QAR6BC,IAAzBR,EAAME,gBAAyD,UAAzBF,EAAME,iBAC9CK,EAAejE,KAGbS,QAAQ0D,SAAST,EAAM3B,cAAsC,KAAtB2B,EAAM3B,cAC/C2B,EAAM3B,YAAc/B,EAAO0D,EAAM3B,YAAa2B,EAAM9B,SAGlDmC,EAAS,CACX,IAAIK,GAAkBC,IAAK,WAAYC,SAAU,KACjDP,EAAQQ,SAAWR,EAAQQ,SAAWR,EAAQQ,SAASC,YAAYJ,GAAkBA,EAErFL,EAAQU,YAAYC,KAAK,SAAUC,GACjC,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAI5E,EAAO2E,GACf,OAAOC,EAAEC,UAAYD,EAAEhD,OAAO8B,EAAM9B,QAAU,MAGhDmC,EAAQe,SAASJ,KAAK,SAAUC,GAC9B,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAI5E,EAAO2E,EAAOjB,EAAM9B,QAC5B,OAAIgD,EAAEC,UAAkBD,EAAEG,QAA1B,KAMCrB,EAAMZ,WAkDTpC,EAAQsE,SAAS,kBACjBtE,EAAQuE,MAAM1B,EAAS,uFAAuFG,IAE9GA,EAAMwB,MAAQ,WACZnB,EAAQoB,cAAc,MACtBpB,EAAQqB,UACR9B,EAAS,WACP5C,EAAQ,GAAG2E,SACV,GAAG,KAzDR3E,EAAQ4E,GAAG,QAAS,SAAUC,GAI5B,GAHAA,EAAEC,iBACF9E,EAAQ+E,OACR/E,EAAQgF,SAASC,YAAY,qBACzB3B,EAAJ,CAGAA,GAAO,EACP,IAAI4B,KACJ,IAAK,IAAI1C,KAAKY,EACRJ,EAAMP,eAAeD,KAAOzC,QAAQoF,YAAYnC,EAAMR,MACxD0C,EAAQ1C,GAAKQ,EAAMR,IAGvB0C,EAAQ7D,YAAc2B,EAAM3B,YAC5B6D,EAAQhC,eAAiBK,EAEzB,IAAI6B,GAAUF,QAASA,GACvBvC,EAAU0C,MACRlF,SAAUA,EACVmF,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRK,SAAUzF,EACVgF,OAAQjF,QAAQC,QAAQ0F,SAASC,MACjCC,kBAAkB,EAClBvD,oBAAqB6C,EAAQ7C,sBAAuB,EACpDH,oBAAqBgD,EAAQhD,sBAAuB,EACpD2D,aAAa,EACbC,UAAU,EACVC,UAAU,IAETC,KAAK,SAAUC,GACdjD,EAAM3B,YAAc4E,EAAIA,EAAE5B,GAAK4B,EAC/B3C,GAAO,EAEFhE,EAAO0D,EAAM3B,aAAa6E,OAAOhB,EAAQ7D,cAC5CuB,EAASI,EAAMC,SAAU,GAG3BjD,EAAQgF,SAASC,YAAY,qBAE5B,WACD3B,GAAO,EACPtD,EAAQgF,SAASC,YAAY,8BAmD5CrE,QAAQ,qBAAsB,YAAa,KAAM,UAAW,mBAAoB,SAAU+B,EAAWwD,EAAIC,EAAS9F,GACjH,IAAI+F,EAAgB/F,IAChBgG,EAAmBC,OAAOC,KAAKH,GAuCnC,OArCEhB,KAAM,SAAUH,GACd,IAAIuB,EAAWN,EAAGO,QACL3G,QAAQ4G,KAAKN,GAC1B,IAAK,IAAI7D,KAAK0C,GACwB,GAAhCoB,EAAiBM,QAAQpE,IAAY0C,EAAQzC,eAAeD,IACrD0C,EAAQ1C,GAIrB,IAAIe,EAAe,UACYC,IAA3B0B,EAAQhC,gBAA2D,UAA3BgC,EAAQhC,iBAClDK,EAAejE,KAEjB4F,EAAQhC,eAAiBK,EAEzB,IAAI6B,GAAUF,QAASA,GAkBvB,OAjBAvC,EAAU0C,MACRlF,SAAUA,EACVmF,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRJ,OAAQjF,QAAQC,QAAQ0F,SAASC,MACjCC,kBAAkB,EAClBvD,oBAAqB6C,EAAQ7C,sBAAuB,EACpDH,oBAAqBgD,EAAQhD,sBAAuB,EACpD4D,UAAU,EACVC,UAAU,IACTC,KAAK,SAAUC,GACEA,GAAIA,EAAE5B,GACxBoC,EAASI,QAAQZ,EAAIA,EAAE5B,GAAK4B,IAC3B,WACDQ,EAASK,WAEJL,EAASM,aAQxB,IAAIxB,EAAmB,SAAUyB,EAAQrE,EAAWrC,GAClDC,KAAK0G,YAAczH,EAAYC,KAC/Bc,KAAK2G,QAAUvE,EAEfpC,KAAK4G,mBACL5G,KAAK6G,MAAQ5H,EACbe,KAAKgC,OAASxC,QAAQ4G,KAAKrG,KAC3BC,KAAK8G,SAAW,KAChB9G,KAAKgC,OAASxC,QAAQuH,OAAO/G,KAAKgC,OAAQhC,KAAK2E,SAE/C3E,KAAKgH,QAm6BL,OAh6BFhC,EAAiBiC,SAAW,SAAU,YAAa,oBACnDjC,EAAiBkC,WACfF,KAAM,WACJhH,KAAKmH,SAAWnH,KAAKgC,OAAOxB,OAASR,KAAKgC,OAAOzB,KACjDP,KAAKoH,SAAWpH,KAAKgC,OAAOzB,KAC5BP,KAAKqH,YACLrH,KAAKsH,SAEPC,qBAAsB,WACpB,IAAIC,EAAaxH,KAAKgC,OAAOD,aACzByF,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAIjH,EAAOP,KAAKc,aAAe/B,IAC3B0B,EAAW+G,EAAaC,KAAKC,MAAMnH,EAAKoH,SAAWH,GACnD/G,GAAW,KACbA,EAAU,GAAK+G,GAEjB,IAAI9G,EAAUH,EAAKqH,SAInB,OAHIlH,GAAW,KACbA,EAAU,IAEL3B,EAAOwB,GAAME,QAAQA,GAASC,QAAQA,IAE/C2G,UAAW,WACT,IAAIQ,EAAO7H,KACP8H,EAAa,SAAUC,EAAOC,GAChC,IAAIC,EAAM,KACV,GAAIzI,QAAQ0I,UAAUH,IAAoB,OAAVA,GAA4B,KAAVA,EAChD,GAAIvI,QAAQ0D,SAAS6E,GAEjBE,OADiC,IAAxBJ,EAAK7F,OAAa,QAA4C,OAAvB6F,EAAK7F,OAAOrB,OACtD5B,EAAOgJ,EAAOF,EAAK7F,OAAOrB,QAAQwH,OAAON,EAAK7F,OAAO9B,MAGrDnB,EAAOgJ,GAAOI,OAAON,EAAK7F,OAAO9B,WAEpC,GAAqB,iBAAV6H,EAChBE,EAAMlJ,EAAOgJ,GAAOI,OAAON,EAAK7F,OAAO9B,WAEvC,GAAIV,QAAQ4I,OAAOL,GAAQ,CACzB,IAAIM,EAAIN,EAAMO,UACdL,EAAMlJ,EAAOsJ,EAAG,KAAKF,OAAON,EAAK7F,OAAO9B,WAC/B6H,EAAMQ,mBACfN,EAAMF,QAKVE,EAAMD,EAER,OAAOC,GAGTjI,KAAKc,YAAcgH,EAAW9H,KAAKgC,OAAOlB,YAAa/B,KACvDiB,KAAKY,QAAUkH,EAAW9H,KAAKgC,OAAOpB,SACtCZ,KAAKa,QAAUiH,EAAW9H,KAAKgC,OAAOnB,SACtCb,KAAKyB,aAAezB,KAAKgC,OAAOP,aAAa+G,IAAI,SAAUH,GACzD,OAAOtJ,EAAOsJ,GAAG1H,OAAO,kBAE1BX,KAAKyI,WAAWzI,KAAKc,aACrBd,KAAK0B,SAAW1B,KAAKgC,OAAON,UAE9BgH,SAAU,WACR1I,KAAK0G,YAAczH,EAAYC,MAEjCyJ,UAAW,WACT3I,KAAK0G,YAAczH,EAAYE,MAEjCyJ,YAAa,WACX5I,KAAK0G,YAAczH,EAAYG,QAEjCyJ,YAAa,WACX7I,KAAK0G,YAAczH,EAAY6J,QAEjCC,eAAgB,SAAUxI,EAAMyI,EAAWC,GACzC,IAAIC,GAAU,EAEd,QAA6B,IAAlBlJ,KAAY,SAAsC,OAAjBA,KAAKY,QAAkB,CACjE,IAAIuI,EAAWpK,EAAOiB,KAAKY,SACvBwI,EAAQrK,EAAOwB,GAEdyI,GAAcC,IACjBE,EAASE,KAAK,GACdF,EAASxB,OAAO,GAEhByB,EAAMC,KAAK,GACXD,EAAMzB,OAAO,IAGfwB,EAASvB,OAAO,GAChBwB,EAAMxB,OAAO,GACbuB,EAASG,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAMzI,OAAO,OAAS4I,SAASJ,EAASxI,OAAO,OANnEyI,EAAMzB,OAAO,GACbwB,EAASxB,OAAO,GAEhBuB,EAAWK,SAASH,EAAMzI,OAAO,OAAS4I,SAASJ,EAASxI,OAAO,OAOvE,OAAOuI,GAETM,gBAAiB,SAAUjJ,EAAMkJ,EAAWR,GAC1C,IAAIC,GAAU,EAEd,QAA6B,IAAlBlJ,KAAY,SAAsC,OAAjBA,KAAKa,QAAkB,CACjE,IAAI6I,EAAW3K,EAAOiB,KAAKa,SACvBuI,EAAQrK,EAAOwB,GAEdkJ,GAAcR,IACjBS,EAASL,KAAK,GACdK,EAAS/B,OAAO,GAEhByB,EAAMC,KAAK,GACXD,EAAMzB,OAAO,IAGf+B,EAAS9B,OAAO,GAChBwB,EAAMxB,OAAO,GACb8B,EAASJ,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAMzI,OAAO,OAAS4I,SAASG,EAAS/I,OAAO,OANnEyI,EAAMzB,OAAO,GACb+B,EAAS/B,OAAO,GAEhBuB,EAAWK,SAASH,EAAMzI,OAAO,OAAS4I,SAASG,EAAS/I,OAAO,OAOvE,OAAOuI,GAETS,iBAAkB,SAAUpJ,GAC1B,IAAIqJ,EAAMrJ,EAAKI,OAAO,gBACtB,QAAIX,KAAKyB,aAAa4E,QAAQuD,IAAQ,IAKxCC,UAAW,SAAStJ,GAClB,OAAIP,KAAK0B,UACHnB,EAAKuJ,cAAgB,GAO7BrB,WAAY,SAAUlI,GAChBA,IACFP,KAAKc,YAAc/B,EAAOwB,GACrBP,KAAK+I,eAAe/I,KAAKc,eAC5Bd,KAAKc,YAAc/B,EAAOiB,KAAKY,UAG5BZ,KAAKwJ,gBAAgBxJ,KAAKc,eAC7Bd,KAAKc,YAAc/B,EAAOiB,KAAKa,UAEjCb,KAAKc,YAAYqH,OAAOnI,KAAKgC,OAAO9B,MACpCF,KAAK+J,cAAgBhL,EAAOiB,KAAKc,aACjCd,KAAK8G,SAAW9G,KAAKc,YAAYuI,QAAU,GAAK,KAAO,OAG3DW,KAAM,WACJ,MAAyB,OAAlBhK,KAAK8G,UAEdmD,eAAgB,SAAUC,GACT,IAAXA,GAAgBlK,KAAKmK,sBACvBnK,KAAKyI,WAAWzI,KAAKc,YAAYsJ,IAAIF,EAAQ,WAG/B,IAAZA,GAAiBlK,KAAKqK,0BACxBrK,KAAKyI,WAAWzI,KAAKc,YAAYsJ,IAAIF,EAAQ,WAGjDI,cAAe,SAAUJ,GACR,IAAXA,GAAgBlK,KAAKuK,qBACvBvK,KAAKyI,WAAWzI,KAAKc,YAAYsJ,IAAIF,EAAQ,UAG/B,IAAZA,GAAiBlK,KAAKwK,yBACxBxK,KAAKyI,WAAWzI,KAAKc,YAAYsJ,IAAIF,EAAQ,UAGjDO,SAAU,SAAU5E,EAAS6E,GAC3B7E,EAAQ8E,KAAKD,IAEfE,gBAAiB,WAIf,IAAK,IAHDC,KACAzB,EAAQrK,EAAOiB,KAAKc,aAEf6C,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAImH,EAAW1B,EAAM2B,MAAMpH,GACvB3D,KAAK+I,eAAe+B,EAASE,MAAM,WAAahL,KAAKwJ,gBAAgBsB,EAASG,QAAQ,WACxFJ,EAAUpH,KAAKqH,EAASnK,OAAO,SAGnC,OAAOkK,GAETK,YAAa,SAAUH,GACrB/K,KAAKyI,WAAWzI,KAAKc,YAAYiK,MAAMA,KAEzCI,eAAgB,WACd,IAAIhC,EAAUO,EAAU0B,EAAKC,EAAWC,KACxClC,EAAQpJ,KAAKc,YAAYyK,YAEI,IAAlBvL,KAAY,SAAsC,OAAjBA,KAAKY,UAC/CuI,EAAWpK,EAAOiB,KAAKY,SAAS2K,aAEL,IAAlBvL,KAAY,SAAsC,OAAjBA,KAAKa,UAC/C6I,EAAW3K,EAAOiB,KAAKa,SAAS0K,QAG9B7B,GAAYP,GACdiC,EAAM1B,EAAWP,EACjBkC,EAAYlC,GACHA,GACTiC,EAAM,IACNC,EAAYlC,GAGZkC,EAFS3B,EAEGA,GADZ0B,EAAM,IAIMhC,GADZgC,EAAM,IACkB,EAG1B,IAAK,IAAInJ,EAAE,EAAGA,EAAImJ,EAAKnJ,IACrBqJ,EAAS7H,KAAK4H,EAAUpJ,GAE1B,OAAOqJ,GAETE,WAAY,SAAUD,GACpBvL,KAAKyI,WAAWzI,KAAKc,YAAYyK,KAAKA,KAExClB,uBAAwB,WACtB,OAAOrK,KAAK+J,eAAiB/J,KAAK+I,eAAehK,EAAOiB,KAAK+J,eAAekB,QAAQ,UAAU,GAAO,IAEvGd,mBAAoB,WAClB,OAAOnK,KAAK+J,eAAiB/J,KAAKwJ,gBAAgBzK,EAAOiB,KAAK+J,eAAeiB,MAAM,UAAU,GAAO,IAEtGR,sBAAuB,WACrB,OAAOxK,KAAK+J,eAAiB/J,KAAK+I,eAAehK,EAAOiB,KAAK+J,eAAekB,QAAQ,SAAS,GAAO,IAEtGV,kBAAmB,WACjB,OAAOvK,KAAK+J,eAAiB/J,KAAKwJ,gBAAgBzK,EAAOiB,KAAK+J,eAAeiB,MAAM,SAAS,GAAO,IAErGS,gBAAiB,SAAUpC,GACzB,IAAID,EAAQrK,EAAOiB,KAAKc,aAMxB,OALId,KAAKgC,OAAOb,UACdiI,EAAMC,KAAKrJ,KAAK0L,aAAarC,IAAO1B,OAAO,GAAGC,OAAO,GAErDwB,EAAMC,KAAKA,GAAM1B,OAAO,GAAGC,OAAO,GAE7B5H,KAAK+I,eAAeK,GAAO,GAAM,IAAUpJ,KAAKwJ,gBAAgBJ,GAAO,GAAM,IAEtFuC,kBAAmB,SAAUhE,GAC3B,IAAIyB,EAAQrK,EAAOiB,KAAKc,aAExB,OADAsI,EAAMzB,OAAOA,GAAQC,OAAO,GACrB5H,KAAK+I,eAAeK,GAAO,GAAM,IAASpJ,KAAKwJ,gBAAgBJ,GAAO,GAAM,IAErFwC,kBAAmB,SAAUhE,GAC3B,OAAO,GAETN,MAAO,WACLtH,KAAK0G,YAAczH,EAAYC,KAC3Bc,KAAKgC,OAAOzB,KACdP,KAAK0I,WAED1I,KAAKgC,OAAOxB,MACdR,KAAK2I,aAIXkD,MAAO,WACL,IAAIrE,EAAaxH,KAAKgC,OAAOD,YACzBxB,EAAOxB,IACP0B,EAAW+G,EAAaC,KAAKC,MAAMnH,EAAKoH,SAAWH,GACnD/G,GAAW,KACbA,EAAU,GAAK+G,GAEjBxH,KAAKyI,WAAW1J,EAAOwB,GAAME,QAAQA,KAEvCqL,GAAI,WACF,OAAQ9L,KAAK0G,aACX,KAAKzH,EAAYC,MACU,IAArBc,KAAKgC,OAAOxB,KACdR,KAAK2I,YAEL3I,KAAK+L,MAAK,GAEZ,MACF,KAAK9M,EAAYE,MACa,IAAxBa,KAAKgC,OAAOvB,QACdT,KAAK4I,cAEL5I,KAAK+L,MAAK,GAEZ,MACF,KAAK9M,EAAYG,QACa,IAAxBY,KAAKgC,OAAOtB,QACdV,KAAK6I,cAEL7I,KAAK+L,MAAK,GAEZ,MACF,KAAK9M,EAAY6J,OACf9I,KAAK+L,MAAK,KAIhBC,OAAQ,WACN,GAAIhM,KAAKgC,OAAOxB,KACd,OAAQR,KAAK0G,aACX,KAAKzH,EAAYC,KACfc,KAAK+L,OACL,MACF,KAAK9M,EAAYE,KACXa,KAAKgC,OAAOzB,KACdP,KAAK0I,WAGL1I,KAAK+L,OAEP,MACF,KAAK9M,EAAYG,OACfY,KAAK2I,YACL,MACF,KAAK1J,EAAY6J,OACf9I,KAAK4I,mBAKT5I,KAAK+L,QAGTE,kBAAmB,WACjBjM,KAAK+J,cAAcmC,SAAS,EAAG,WAEjCC,iBAAkB,WAChBnM,KAAK+J,cAAcK,IAAI,EAAG,WAE5BgC,iBAAkB,WAChBpM,KAAK+J,cAAcmC,SAAS,EAAG,UAEjCG,gBAAiB,WACfrM,KAAK+J,cAAcK,IAAI,EAAG,UAE5BkC,SAAU,YACJtM,KAAKyL,gBAAgB,IAAMzL,KAAKyL,gBAAgB,OAC9CzL,KAAKc,YAAYuI,QAAU,IAC7BrJ,KAAKyI,WAAWzI,KAAKc,YAAYoL,SAAS,GAAI,UAE3ClM,KAAKyL,gBAAgBzL,KAAKc,YAAYuI,SACzCrJ,KAAKyI,WAAWzI,KAAKc,YAAYuI,KAAKrJ,KAAKY,QAAQyI,SAEhDrJ,KAAK2L,kBAAkB3L,KAAKc,YAAY6G,WAC3C3H,KAAKyI,WAAWzI,KAAKc,YAAY6G,OAAO3H,KAAKY,QAAQ+G,aAI3D4E,SAAU,YACJvM,KAAKyL,gBAAgB,KAAOzL,KAAKyL,gBAAgB,OAC/CzL,KAAKc,YAAYuI,OAAS,IAC5BrJ,KAAKyI,WAAWzI,KAAKc,YAAYsJ,IAAI,GAAI,UAEtCpK,KAAKyL,gBAAgBzL,KAAKc,YAAYuI,SACzCrJ,KAAKyI,WAAWzI,KAAKc,YAAYuI,KAAKrJ,KAAKa,QAAQwI,SAEhDrJ,KAAK2L,kBAAkB3L,KAAKc,YAAY6G,WAC3C3H,KAAKyI,WAAWzI,KAAKc,YAAY6G,OAAO3H,KAAKa,QAAQ8G,aAI3D+D,aAAc,SAAUc,GACtB,IAAItD,EAAUsD,EAId,OAHKA,EAAI,IAAOxM,KAAKgK,SACnBd,GAAW,IAENA,GAET6C,KAAM,SAAUU,GACVA,EACFzM,KAAK2G,QAAQoF,KAAK/L,KAAKc,aAEvBd,KAAK2G,QAAQqF,WAKnBxM,QAAQK,OAAOb,GACZmD,UAAU,6BACT,WAOE,IAAK,IAHHuK,EAA4C,KADjC,IAAIC,MAAOC,cAAgB,GADzB,KAE0B,GAEvCC,KACO5K,EAAI,EAAGA,EAAIyK,EAAezK,IACjC4K,EAAOpJ,KAAKxB,GAGd,IAAI6K,EAAoB,SAAUvM,EAAMwM,GAItC,OAHAA,EAAMA,GAAY,EAGW,IAFlBxM,EAAKgL,OAXH,MAYDhL,EAAKwK,QAC0B,EAAMgC,GAGnD,OACExK,SAAU,IACVE,OACEuK,OAAQ,IACRzM,KAAM,KAER8E,kBAAkB,EAClBJ,aAAc,MACdF,YAAa,SAAU,SAAU0B,GAC/B,IAAqBuG,EAAjBC,EAAWjN,KAEfA,KAAKkN,QAAU,WAIb,IAAK,IADDC,KACKlL,GAHT+K,EAAShN,KAAKgN,QAGMhL,OAAOd,UAAWiM,EAAKC,OAAS,EAAGnL,IACjDA,EAAI,IACNA,EAAI,GAENkL,EAAK1J,KAAKxB,EAAEoL,YAId,GAFAJ,EAASK,KAAOH,EAEXH,EAAOnM,SAAYmM,EAAOpM,QAExB,CACL,IAAImM,EAAMC,EAAOpM,QAAUkM,EAAkBE,EAAOpM,SAAW,EAC3D2M,EAAOP,EAAOnM,QAAWiM,EAAkBE,EAAOnM,SAAW,EAAK6L,EACtEO,EAASO,OAASX,EAAOY,MAAMV,EAAKQ,QAJpCN,EAASO,OAASX,EAOpBI,EAASS,SAAWZ,EAAkBE,EAAOlM,aAAemM,EAASO,OAAO,IAGhD,IAA1BhO,QAAQmO,QAAQC,OAAepO,QAAQmO,QAAQE,MAAQ,GACzD7N,KAAKkN,UAGPD,EAASa,eAAiB,SAAUC,GAClC,IAAIhD,GAAUgD,EAAQ,GAAK,IAAO,GAC9BxC,EAxDK,KAwDa9D,KAAKuG,MAAMD,EAAQ,IACrCE,EAAWlP,EAAOiO,EAAOlM,aAAayK,KAAKA,GAAMR,MAAMA,GAC3D,OAAOmD,EAAsBD,IAG/BxH,EAAO0H,OAAO,WACZ,OAAOnB,EAAOlM,YAAckM,EAAOlM,YAAYH,OAAO,WAAa,IAClE,SAAUyN,EAAMC,GACjB,GAAID,GAAQC,EAAM,CAChB,IAAIC,EAAQvP,EAAOqP,EAAM,WACrBrB,EAAMC,EAAOpM,QAAUkM,EAAkBE,EAAOpM,SAAW,EAC3DmN,EAAQjB,EAAkBwB,EAAOvB,GACjCE,EAASS,UAAYK,IACvBd,EAASS,SAAWK,MAK1B,IAAIG,EAAwB,SAAU3N,GACpC,IAAIwK,KACJ,GAAa,OAATxK,EAAe,CACjBwK,EAAMxL,KAAOgB,EAAKI,OAAO,aACzB,IAAI4N,EAAexP,EAAOwB,GAAM4H,OAAO6E,EAAOhL,OAAO9B,MAAM+K,QAAQ,SAC9D5B,KAAK9I,EAAK8I,QACV1B,OAAOpH,EAAKoH,UACb6G,EAAUD,EAAa5N,OAAO,KAClCoK,EAAMoC,QACN,IAAK,IAAIlL,EAAIsM,EAAahO,OAAQ0B,GAAKsM,EAAaE,cAAexM,IAAK,CACtE,GAAIA,IAAMsM,EAAahO,OAAQ,CAC7B,IAAImO,EAAQzB,EAASK,KAAKjH,QAAQmI,EAAQnB,YAC1C,GAAIqB,EAAQ,EACV,IAAK,IAAIrG,EAAI,EAAGA,EAAIqG,EAAOrG,IACzB0C,EAAMoC,KAAK1J,KAAK,GAItBsH,EAAMoC,KAAK1J,KAAK1E,EAAOwP,GAAcpG,OAAO6E,EAAOhL,OAAO9B,MAAMK,KAAK0B,IAIvE,IAAK,IADgB0M,KAAcC,EAASnH,KAAKoH,KAAK9D,EAAMoC,KAAKC,OAA/C,GACT0B,EAAI,EAAGA,EAAIF,EAAQE,IAC1BH,EAAQlL,KAAKsH,EAAMoC,KAAKM,MAFR,EAEcqB,EAFd,GAEgCA,EAAI,KAGtD,OADA/D,EAAMoC,KAAOwB,EACN5D,IAKXkC,EAAS8B,MAAQ,SAAU9M,GACzB,OAAOlD,EAAOwK,SAAStH,GAAI,KACxBkG,OAAO6E,EAAOhL,OAAO9B,MACrBS,OAAO,MACPqO,UAAU,EAAG,IAGlB/B,EAASgC,UAAY,SAAU1O,GAC7B,OAAOyM,EAAOjE,eAAehK,EAAOwB,IAAO,GAAO,IAChDyM,EAAOxD,gBAAgBzK,EAAOwB,IAAO,GAAO,IAC5CyM,EAAOnD,UAAU9K,EAAOwB,KACxByM,EAAOrD,iBAAiB5K,EAAOwB,KAGnC0M,EAASxE,WAAa,SAAUlI,GAC9B,GAAIA,EAAM,CACR,GAAI0M,EAASiC,cAAc3O,GACzB,OAAOyM,EAAOlB,KAEhBkB,EAAOvE,WAAW1J,EAAOwB,GAAM8I,KAAK4D,EAAS1M,KAAK8I,QAAQ1B,OAAOsF,EAAS1M,KAAKoH,WAC3EqF,EAAOhL,OAAOJ,QAChBoL,EAAOlB,OAKbmB,EAASiC,cAAgB,SAAUvL,GACjC,OAAOA,GAAKsJ,EAAS1M,KAAKA,SAAWoD,EAAEpD,QAAU0M,EAAS1M,KAAKwK,UAAYpH,EAAEoH,SAAWkC,EAAS1M,KAAKgL,SAAW5H,EAAE4H,QAGrH0B,EAASkC,eAAiB,SAAUxL,GAClC,IAAIkI,EAAQoB,EAASD,OAAOrI,QAAQhC,eACpC,QAAKkJ,IAIElI,GAAKkI,EAAMtL,SAAWoD,EAAEpD,QAAUsL,EAAMd,UAAYpH,EAAEoH,SAAWc,EAAMN,SAAW5H,EAAE4H,WAG/F3L,SACA,+PAOLuC,UAAU,kCAAmC,WAC5C,SAAUG,GACR,IAAI8M,EAAuB,SAAU3P,EAASgD,GAC5C,IAAI4M,EAAQ7P,QAAQC,QAAQA,EAAQ,GAAG6P,cAAc,UACjDrC,EAAWxK,EAAM8M,IAEjBC,KAF8B/M,EAAMsI,MAIlCoC,KAAKsC,QAAQ,SAAU/N,EAAUO,GACrCuN,EAAU/L,KAAK,QACf/B,EAAS+N,QAAQ,SAAUC,EAASZ,GAElC,GADAU,EAAU/L,KAAK,QACXiM,EACF,GAAIzC,EAASgC,UAAUS,GAAU,CAE/B,IAAIC,EAAW,iBAAqB1N,EAAI,KAAO6M,EAAI,IAEnDU,EAAU/L,KAAK,eAAiBiM,EAAQ/O,OAAO,cAAgB,4FAA8FgP,EAAW,iCAAmCA,EAAW,gCAAkCA,EAAW,OACnQH,EAAU/L,KAAKiM,EAAQ/O,OAAO,MAC9B6O,EAAU/L,KAAK,aAEf+L,EAAU/L,KAAK,iCACf+L,EAAU/L,KAAKiM,EAAQ/O,OAAO,MAC9B6O,EAAU/L,KAAK,WAGnB+L,EAAU/L,KAAK,WAEjB+L,EAAU/L,KAAK,WAGjB4L,EAAMO,KAAKJ,EAAUK,KAAK,KAC1BvN,EAAS+M,GAAO5M,IAGlB,OACEA,OACEqN,IAAK,KAEPtN,QAAS,6BACTD,SAAU,KACV3C,SACE,gPAUFgD,KAAM,SAAUH,EAAOhD,EAASoD,EAAOoK,GACrCxK,EAAM8M,IAAMtC,EACZxK,EAAMsI,MAAQkC,EAASa,eAAevE,SAAS9G,EAAMqN,MACrDV,EAAqB3P,EAASgD,GAC9BA,EAAM0L,OAAO,WACX,OAAO1L,EAAMqN,KACZ,SAAUA,EAAKC,GACZD,GAAOC,IACTtN,EAAMsI,MAAQkC,EAASa,eAAevE,SAAS9G,EAAMqN,MACrDV,EAAqB3P,EAASgD,WAS5CjD,QAAQK,OAAOb,GACZmD,UAAU,gBAAiB,WAC1B,OACES,KAAM,SAAUH,EAAOnD,GACrBA,EAAG+E,GAAG,QAAS,SAAUC,GACvBA,EAAEC,uBAKZ/E,QAAQK,OAAOb,GACZmD,UAAU,0BAA2B,WACpC,SAAUE,GAkBR,OACEE,SAAU,IACV3C,SAjBA,ssCAkBAgD,KAAM,SAAUH,EAAOhD,EAASoD,GAC9B,IAAImN,EAA4B,YAAfnN,EAAMoN,KACnBC,EAA4B,YAAfrN,EAAMoN,KACnBjD,EAASvK,EAAMuK,OAEfmD,EAAgBhL,SAASmK,cAAc,iBAEvCc,EAAgB,SAASC,EAAKC,GAChC,IAAIC,EAAM,EAEV,GAAY,KADZF,EAAMA,GAAO,IAAM,EAAIA,GACR,CACb,IAAIG,EAAUR,GAAYE,EAAa,GAAK,GAC5CK,EAAM9I,KAAKC,MAAM8I,EAAU,IAAMH,GAGnC,GAAIL,EAAY,CACd,IAAIxI,EAAawF,EAAOhL,OAAOD,aAC3ByF,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAI/G,EAAW+G,EAAaC,KAAKC,MAAM6I,EAAM/I,GACzC/G,GAAW,KACbA,EAAU,GAAK+G,GAEjBwF,EAAOlM,YAAY6G,OAAOlH,QAChByP,GAKNK,GAAO,KAAIA,EAAM,GACrBvD,EAAOlM,YAAY8G,OAAO2I,KALd,KAARA,IAAYA,EAAM,GACjBvD,EAAOhL,OAAOb,YAAW6L,EAAOlG,SAAWwJ,EAAM,GAAK,KAAO,MAClEtD,EAAOlM,YAAYuI,KAAK2D,EAAOhD,OAASuG,EAAM,GAAKA,KAQnDE,EAAoB,iBAAkB/Q,OAC1CgR,GACEC,aAAeF,EAAmB,aAAe,YACjDG,WAAeH,EAAmB,WAAe,UACjDI,aAAeJ,EAAmB,YAAe,aAG/CK,EAAc,SAASxM,GACzBA,EAAEC,iBAEF,IAAIwM,EAAgBzM,EAAE0M,cAAcC,QAAQ,OAC5CC,EAAaH,EAAcI,iBAAiB,GAExCV,IAAkBnM,EAAIA,EAAE8M,eAAe,IAE3C,IAAI/I,EAAM0I,EAAcM,YAAc,GAAM/M,EAAEgN,MAAQJ,EAAWK,MAC7DC,EAAMlN,EAAEmN,MAAQP,EAAWQ,IAAQX,EAAcY,aAAe,EAEhErB,EAAM7I,KAAKmK,KAAKnK,KAAKoK,IAAIxJ,EAAG,GAAKZ,KAAKoK,IAAIL,EAAG,IAC7CnB,EAAM5I,KAAKC,MAAOD,KAAKqK,MAAMzJ,EAAGmJ,IAAM,IAAM/J,KAAKsK,KAErD1P,EAAS,WACP+N,EAAcC,EAAI,IAAKC,MAI3B7Q,EAAQ4E,GAAGqM,EAAOC,aAAc,WAC7BlR,EAAQ4E,GAAGqM,EAAOG,aAAcC,KAGnCrR,EAAQ4E,GAAGqM,EAAOE,WAAY,WAC1BnR,EAAQuS,IAAItB,EAAOG,gBAGvBpO,EAAMwP,IAAI,WAAY,WAClBxS,EAAQuS,IAAItB,EAAOG,aAAcC,KAGrC,IAAIoB,EAAO,WACT,IAAIC,EAAQ3S,QAAQC,QAAQA,EAAQ,GAAG6P,cAAc,sBACjD8C,EAAW5S,QAAQC,QAAQ0Q,EAAcb,cAAc,gBAEvD+C,EAAIlC,EAAcb,cAAc,gBAAgB+B,YAChDiB,EAAK/I,SAASlK,EAAI+S,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEC,EAAKjJ,SAASlK,EAAI+S,EAAU,gBAAgBG,QAAQ,KAAM,MAAQ,EAIlEE,EAAcJ,IAHT9I,SAASlK,EAAI8S,EAAO,cAAcI,QAAQ,KAAM,MAAQ,IACxDhJ,SAASlK,EAAI8S,EAAO,eAAeI,QAAQ,KAAM,MAAQ,GAEjCD,EAAKE,GACtCL,EAAM9S,IAAI,QAAS,EAAe,MAYlC,IAAK,IAVDqT,EAAKnJ,SAASlK,EAAI+S,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEI,EAAKpJ,SAASlK,EAAI+S,EAAU,cAAcG,QAAQ,KAAM,MAAQ,EAChEK,EAAKrJ,SAASlK,EAAI8S,EAAO,cAAcI,QAAQ,KAAM,MAAQ,EAC7DM,EAAKtJ,SAASlK,EAAI8S,EAAO,aAAaI,QAAQ,KAAM,MAAQ,EAE5DO,EAAKL,EAAa,EAClB3D,EAAIgE,EAAI,IAERC,KAEKvG,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAEI+E,EAAQuB,EAFJhE,EAAIrH,KAAKuL,IAAc,EAAVvL,KAAKsK,IAAUvF,EAAI,KAEpBkG,EAAK,GAAMA,EAAKE,GAChClB,EAAOoB,EAFHhE,EAAIrH,KAAKwL,IAAc,EAAVxL,KAAKsK,IAAUvF,EAAI,KAErBqG,EAAK,GAAMF,EAAKE,GAE/BxJ,GACFkI,KAAMA,EACNG,IAAKA,EACLhO,MAAQsM,GAAYE,EAAkB,EAAJ1D,EAASA,EAC3C0G,OAAQC,cAAe5B,EAAO,KAAM6B,aAAc1B,EAAM,OAGtD1B,GAAcE,EAChB7G,EAAKgK,QAAUhK,EAAK3F,MAAQ,GAAM,IAAM2F,EAAK3F,MAAS2F,EAAK3F,MAEvDsJ,EAAOhL,OAAOb,UAChBkI,EAAKgK,QAAiB,IAAN7G,EAAW,GAAKA,EAEhCnD,EAAKgK,QAAU7G,EAInBuG,EAAOtP,KAAK4F,GAId,GAFA5G,EAAMsQ,OAASA,GAEV/F,EAAOhL,OAAOb,YAAc6O,IAAeE,EAAY,CAI1D,IAAK,IAHDoD,KAEAC,EAAMT,EAAI,IACLU,EAAM,GAAIA,EAAM,KAAMA,EAAK,CAClC,IAEIC,EAAUX,EAFJS,EAAM9L,KAAKuL,IAAc,EAAVvL,KAAKsK,IAAUyB,EAAM,KAEtBd,EAAK,GAAMA,EAAKE,GACpCc,EAASZ,EAFHS,EAAM9L,KAAKwL,IAAc,EAAVxL,KAAKsK,IAAUyB,EAAM,KAEvBX,EAAK,GAAMF,EAAKE,GAEnCc,GACFpC,KAAMkC,EACN/B,IAAKgC,EACLhQ,MAAO8P,EACPN,OAAQC,cAAeM,EAAS,KAAML,aAAcM,EAAQ,OAG9DC,EAAON,QAAUG,EAEjBF,EAAS7P,KAAKkQ,GAEhBlR,EAAM6Q,SAAWA,EAGnB7Q,EAAMwN,KAAOpN,EAAMoN,KACnB2D,IACAzB,EAAM9S,IAAI,SAAUoT,EAAa,MAEjC,IAAIoB,EAAcpU,EAAQ,GAAG6P,cAAc,qBACvCwE,EAAeD,EAAYxC,YAAc,GAAM,IACjD0C,EAAgBF,EAAYlC,aAAe,GAAM,IAC/CqC,EAAMlB,GAAK9F,EAAOhL,OAAOb,UAAY,IAAM,KAC3C8S,EAAMnB,EAAI,IACVoB,EAAMpB,EAAI,EAEdtT,QAAQC,QAAQA,EAAQ,GAAG6P,cAAc,mBAAmBjQ,KAC1DkS,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQH,EAAM,KACdI,UAAYtB,EAAIkB,EAAMtB,EAAM,OAC3B3O,SAAUiM,GAAeE,EAAoB,GAAP,MAEzC1Q,QAAQC,QAAQA,EAAQ,GAAG6P,cAAc,qBAAqBjQ,KAE5DkS,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQF,EAAM,KACdG,UAAYtB,EAAImB,EAAMvB,EAAM,OAC3B3O,SAASiM,EAAa,KAAO,IAEhCxQ,QAAQC,QAAQA,EAAQ,GAAG6P,cAAc,qBAAqBjQ,KAE5DkS,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQD,EAAM,KACdE,UAAYtB,EAAIoB,EAAMxB,EAAM,OAC3B3O,SAASmM,EAAa,KAAO,IAEhC1Q,QAAQC,QAAQoU,GAAaxU,KAC3BkS,KAAOuB,EAAIJ,EAAKE,EAAKkB,EAAe,KACpCM,UAAYtB,EAAKF,EAAK,EAAMmB,EAAe,OAE7CM,KAGEA,EAAe,WACjB,IAAIjL,EAAQ4D,EAAOzF,uBACfiF,EAAIpD,EAAMC,OACV1F,EAAIyF,EAAMzB,SACV2M,EAAIlL,EAAMxB,SAEd2M,EAAc/U,QAAQC,QAAQA,EAAQ,GAAG6P,cAAc,mBAAoB,GAAK9C,GAChF+H,EAAc/U,QAAQC,QAAQA,EAAQ,GAAG6P,cAAc,qBAAsB,EAAI3L,GACjF4Q,EAAc/U,QAAQC,QAAQA,EAAQ,GAAG6P,cAAc,qBAAsB,EAAIgF,IAG/EC,EAAgB,SAAUjV,EAAI+Q,GAChC7Q,QAAQC,QAAQH,GAAID,KAClBmV,gBAAiB,UAAYnE,EAAM,OACnCoE,iBAAkB,UAAYpE,EAAM,OACpCqE,gBAAiB,UAAYrE,EAAM,OACnCsE,UAAa,UAAYtE,EAAM,UAK/BuD,EAAkB,WACpB,IAAIrT,EAAOyM,EAAOzF,uBACdqN,EAAM5H,EAAOhL,OAAOb,UAAY,GAAK,GAEvCsB,EAAMoS,aADJ7E,EACmBzP,EAAKoH,SACjBuI,EACY3P,EAAKqH,SAELrH,EAAK8I,OAASuL,GAIvCnS,EAAM0L,OAAO,WACX,IAAI2G,EAAM9H,EAAOzF,uBACjB,OAAOuN,EAAMA,EAAInU,OAAO,YAAc,IACrC,WACDiT,IACAS,MAGF5R,EAAMsS,QAAU,SAAUxE,GACnBP,GAAeE,EAWRA,GASNK,IAAQ9N,EAAMoS,cAAc7H,EAAOlB,KACvCkB,EAAOlM,YAAY8G,OAAO2I,KATtBA,IAAQ9N,EAAMoS,cAAc7H,EAAOlB,KACvCkB,EAAOlM,YAAY6G,OAAO4I,GACrBvD,EAAOhL,OAAOtB,QAGbsM,EAAOhL,OAAOJ,QAAQoL,EAAOlB,KAFjCkB,EAAOlM,YAAY8G,OAAO,KAdxB2I,IAAQ9N,EAAMoS,cAAiB7H,EAAOhL,OAAOJ,QAAQoL,EAAOlB,KAE5DkB,EAAOhL,OAAOb,UAChB6L,EAAOlM,YAAYuI,KAAK2D,EAAOhD,OAAUuG,EAAM,GAAMA,IAErDvD,EAAOlM,YAAYuI,KAAKkH,GACTvD,EAAOlG,SAAlByJ,GAAO,GAAsB,KACV,MAErBvD,EAAOhL,OAAOJ,QAAQoL,EAAOlB,OAerCrJ,EAAMuS,eAAiB,SAAUC,GAC/B,OAAIjF,EACKhD,EAAOrB,kBAAkBsJ,EAAMvR,OAC7BwM,EACFlD,EAAOpB,kBAAkBqJ,EAAMvR,OAE/BsJ,EAAOvB,gBAAgBwJ,EAAMvR,QAIxC,IAAIwR,EAAYzS,EAAM0L,OAAO,WAC3B,OAAO1O,EAAQ,GAAG0V,iBAAiB,OAAO/H,QACzC,WACD8E,IACAgD,WAKHlW,EAGT,IAAIoW,EAAa1V,QAAUA,OAAO2V,SAAW3V,OAAO2V,QAAQC,KACtC,mBAAXC,QAAyBA,OAAOC,IACzCD,QAAQ,UAAWzW,GACQ,oBAAXe,QAA0BA,QAAUA,OAAO4V,SAA+B,mBAAZjT,UAA4B4S,EAC1GvV,OAAO4V,QAAU3W,EAAqB0D,QAAQ,WAE9C1D,GAAwC,oBAAX4W,OAAyBA,OAAShW,QAAQX","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n } else {\r\n element.addClass('dtp-no-msclear');\r\n element.after($compile('')(scope));\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index dc8dfd8..455889d 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0} \ No newline at end of file diff --git a/package.json b/package.json index 3a7b1aa..24454ab 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.4", + "version": "1.8.5", "keywords": [ "css", "js", From cbbe2f9edbc24af0ef40776e4a135b775a571ffc Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 3 Sep 2017 22:29:48 -0400 Subject: [PATCH 088/226] #16 round minute to nearest step, default 5 minutes --- js/angular-material-datetimepicker.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index fa09f97..f67b30e 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -423,6 +423,7 @@ }; this.currentDate = _dateParam(this.params.currentDate, moment()); + this.currentNearestMinute(); this.minDate = _dateParam(this.params.minDate); this.maxDate = _dateParam(this.params.maxDate); this.disableDates = this.params.disableDates.map(function (x) { From 1bd49471c13e917c655fdf77fcadeb6fa70446ad Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 3 Sep 2017 22:31:03 -0400 Subject: [PATCH 089/226] version 1.8.6 --- README.md | 18 +++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- .../angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 95a7947..66f1421 100644 --- a/README.md +++ b/README.md @@ -57,21 +57,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 1572193..6bb1e03 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.5", + "version": "1.8.6", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 2f3d263..29b01e1 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(s,c,o,d){var l=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var u=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(u=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var m={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(m):m,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}s.editInput?(c.addClass("dtp-no-msclear"),c.after(i('')(s)),s.clear=function(){d.$setViewValue(null),d.$render(),a(function(){c[0].focus()},0,!1)}):c.on("focus",function(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!l){l=!0;var d={};for(var m in o)s.hasOwnProperty(m)&&!angular.isUndefined(s[m])&&(d[m]=s[m]);d.currentDate=s.currentDate,d.showTodaysDate=u;var p={options:d};t.show({template:n,controller:r,controllerAs:"picker",locals:p,openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){s.currentDate=t?t._d:t,l=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){l=!1,c.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,k=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(k+g),I={left:T,top:w,value:r||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};r||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var Y=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+v),O=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(k+g),E={left:Y,top:O,value:A,style:{"margin-left":Y+"px","margin-top":O+"px"}};E.display=A,S.push(E)}t.points24=S}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var k=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),k()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(s,c,o,d){var l=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var u=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(u=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var m={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(m):m,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}s.editInput?(c.addClass("dtp-no-msclear"),c.after(i('')(s)),s.clear=function(){d.$setViewValue(null),d.$render(),a(function(){c[0].focus()},0,!1)}):c.on("focus",function(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!l){l=!0;var d={};for(var m in o)s.hasOwnProperty(m)&&!angular.isUndefined(s[m])&&(d[m]=s[m]);d.currentDate=s.currentDate,d.showTodaysDate=u;var p={options:d};t.show({template:n,controller:r,controllerAs:"picker",locals:p,openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){s.currentDate=t?t._d:t,l=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){l=!1,c.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,k=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(k+g),I={left:T,top:w,value:r||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};r||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var Y=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+v),O=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(k+g),E={left:Y,top:O,value:A,style:{"margin-left":Y+"px","margin-top":O+"px"}};E.display=A,S.push(E)}t.points24=S}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var k=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),k()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index dd7505a..a7909f7 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","addClass","after","clear","$setViewValue","$render","focus","on","e","preventDefault","blur","parent","removeClass","options","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n } else {\r\n element.addClass('dtp-no-msclear');\r\n element.after($compile('')(scope));\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","addClass","after","clear","$setViewValue","$render","focus","on","e","preventDefault","blur","parent","removeClass","options","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n } else {\r\n element.addClass('dtp-no-msclear');\r\n element.after($compile('')(scope));\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 24454ab..549ed7b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.5", + "version": "1.8.6", "keywords": [ "css", "js", From bb70e74be920a4819ad375eaf47cb8ac97a89f54 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 5 Sep 2017 23:06:09 -0400 Subject: [PATCH 090/226] #16 fix missing currentDate assignment --- js/angular-material-datetimepicker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index f67b30e..a0c412d 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -423,7 +423,7 @@ }; this.currentDate = _dateParam(this.params.currentDate, moment()); - this.currentNearestMinute(); + this.currentDate = this.currentNearestMinute(); this.minDate = _dateParam(this.params.minDate); this.maxDate = _dateParam(this.params.maxDate); this.disableDates = this.params.disableDates.map(function (x) { From f43f77b88239517a6628f788e4e854739316c6bb Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 5 Sep 2017 23:08:57 -0400 Subject: [PATCH 091/226] version 1.8.7 --- README.md | 18 +++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- .../angular-material-datetimepicker.min.js.map | 2 +- package.json | 4 ++-- yarn.lock | 14 +++++++------- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 66f1421..d1d5fe2 100644 --- a/README.md +++ b/README.md @@ -57,21 +57,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 6bb1e03..0a00933 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.6", + "version": "1.8.7", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 29b01e1..7115cd6 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(s,c,o,d){var l=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var u=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(u=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var m={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(m):m,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}s.editInput?(c.addClass("dtp-no-msclear"),c.after(i('')(s)),s.clear=function(){d.$setViewValue(null),d.$render(),a(function(){c[0].focus()},0,!1)}):c.on("focus",function(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!l){l=!0;var d={};for(var m in o)s.hasOwnProperty(m)&&!angular.isUndefined(s[m])&&(d[m]=s[m]);d.currentDate=s.currentDate,d.showTodaysDate=u;var p={options:d};t.show({template:n,controller:r,controllerAs:"picker",locals:p,openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){s.currentDate=t?t._d:t,l=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){l=!1,c.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,k=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(k+g),I={left:T,top:w,value:r||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};r||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var Y=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+v),O=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(k+g),E={left:Y,top:O,value:A,style:{"margin-left":Y+"px","margin-top":O+"px"}};E.display=A,S.push(E)}t.points24=S}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var k=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),k()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(s,c,o,d){var l=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var u=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(u=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var m={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(m):m,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}s.editInput?(c.addClass("dtp-no-msclear"),c.after(i('')(s)),s.clear=function(){d.$setViewValue(null),d.$render(),a(function(){c[0].focus()},0,!1)}):c.on("focus",function(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!l){l=!0;var d={};for(var m in o)s.hasOwnProperty(m)&&!angular.isUndefined(s[m])&&(d[m]=s[m]);d.currentDate=s.currentDate,d.showTodaysDate=u;var p={options:d};t.show({template:n,controller:r,controllerAs:"picker",locals:p,openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){s.currentDate=t?t._d:t,l=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){l=!1,c.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,k=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(k+g),I={left:T,top:w,value:r||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};r||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var Y=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+v),O=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(k+g),E={left:Y,top:O,value:A,style:{"margin-left":Y+"px","margin-top":O+"px"}};E.display=A,S.push(E)}t.points24=S}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var k=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),k()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index a7909f7..a5bc811 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","addClass","after","clear","$setViewValue","$render","focus","on","e","preventDefault","blur","parent","removeClass","options","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n } else {\r\n element.addClass('dtp-no-msclear');\r\n element.after($compile('')(scope));\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","addClass","after","clear","$setViewValue","$render","focus","on","e","preventDefault","blur","parent","removeClass","options","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n } else {\r\n element.addClass('dtp-no-msclear');\r\n element.after($compile('')(scope));\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 549ed7b..2a91c3c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.6", + "version": "1.8.7", "keywords": [ "css", "js", @@ -28,7 +28,7 @@ }, "devDependencies": { "gulp": "^3.9.1", - "gulp-clean-css": "^3.7.0", + "gulp-clean-css": "^3.8.0", "gulp-rename": "^1.2.2", "gulp-sourcemaps": "^2.6.1", "gulp-uglify": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index e136bb2..2708cf8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -122,9 +122,9 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -clean-css@4.1.7: - version "4.1.7" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.7.tgz#b9aea4f85679889cf3eae8b40349ec4ebdfdd032" +clean-css@4.1.8: + version "4.1.8" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.8.tgz#061455b2494a750ac98f46d8d5ebb17c679ea9d1" dependencies: source-map "0.5.x" @@ -474,11 +474,11 @@ graceful-fs@~1.2.0: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -gulp-clean-css@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.7.0.tgz#54b33526dc899930949fb37b4cacf851c5d5d93b" +gulp-clean-css@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.8.0.tgz#3f7c17975fb8f3d311051e880d7ac99cd387d7ef" dependencies: - clean-css "4.1.7" + clean-css "4.1.8" gulp-util "3.0.8" through2 "2.0.3" vinyl-sourcemaps-apply "0.2.1" From 310bdea1428a0ee3ba6dcca408852e4b5d5cfd69 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 10 Sep 2017 00:53:23 -0400 Subject: [PATCH 092/226] Include icon to edit-input mode --- css/material-datetimepicker.css | 10 +++ index.html | 16 ++-- js/angular-material-datetimepicker.js | 108 ++++++++++++++------------ js/demo.js | 1 + yarn.lock | 4 +- 5 files changed, 77 insertions(+), 62 deletions(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index 8861e6f..dfd88dd 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -409,3 +409,13 @@ md-dialog.dtp { height: 0; } +.dtp-btn-calendar { + position: absolute; + top: -3px; + left: -10px; +} + +.dtp-input { + margin-left: 30px; + max-width: calc(100% - 30px); +} diff --git a/index.html b/index.html index 8fb37f1..dff62e6 100644 --- a/index.html +++ b/index.html @@ -7,15 +7,14 @@ - - + - + @@ -107,18 +106,13 @@

Datetime Pickers

- + -
- - today - -
@@ -209,4 +203,4 @@

Datetime Pickers

- + \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index a0c412d..6525795 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -141,8 +141,8 @@ return default_params; }; }) - .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', - function ($mdDialog, $timeout, $compile) { + .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$$mdSvgRegistry', + function ($mdDialog, $timeout, $compile, $$mdSvgRegistry) { return { restrict: 'A', @@ -216,58 +216,68 @@ } - if (!scope.editInput) { - element.on('focus', function (e) { - e.preventDefault(); - element.blur(); - element.parent().removeClass('md-input-focused'); - if (isOn) { - return; + function openCalendar (e) { + e.preventDefault(); + element.blur(); + element.parent().removeClass('md-input-focused'); + if (isOn) { + return; + } + isOn = true; + var options = {}; + for (var i in attrs) { + if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) { + options[i] = scope[i]; } - isOn = true; - var options = {}; - for (var i in attrs) { - if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) { - options[i] = scope[i]; - } + } + options.currentDate = scope.currentDate; + options.showTodaysDate = dateOfTheDay; + + var locals = {options: options}; + $mdDialog.show({ + template: template, + controller: PluginController, + controllerAs: 'picker', + locals: locals, + openFrom: element, + parent: angular.element(document.body), + bindToController: true, + clickOutsideToClose: options.clickOutsideToClose || false, + disableParentScroll: options.disableParentScroll || false, + hasBackDrop: false, + skipHide: true, + multiple: true + }).then(function (v) { + scope.currentDate = v ? v._d : v; + isOn = false; + + if (!moment(scope.currentDate).isSame(options.currentDate)) { + $timeout(scope.ngChange, 0); } - options.currentDate = scope.currentDate; - options.showTodaysDate = dateOfTheDay; - - var locals = {options: options}; - $mdDialog.show({ - template: template, - controller: PluginController, - controllerAs: 'picker', - locals: locals, - openFrom: element, - parent: angular.element(document.body), - bindToController: true, - clickOutsideToClose: options.clickOutsideToClose || false, - disableParentScroll: options.disableParentScroll || false, - hasBackDrop: false, - skipHide: true, - multiple: true - }) - .then(function (v) { - scope.currentDate = v ? v._d : v; - isOn = false; - - if (!moment(scope.currentDate).isSame(options.currentDate)) { - $timeout(scope.ngChange, 0); - } - element.parent().removeClass('md-input-focused'); - - }, function () { - isOn = false; - element.parent().removeClass('md-input-focused'); - }) - ; + element.parent().removeClass('md-input-focused'); + }, function () { + isOn = false; + element.parent().removeClass('md-input-focused'); }); + } + + if (!scope.editInput) { + element.on('focus', openCalendar); } else { - element.addClass('dtp-no-msclear'); - element.after($compile('')(scope)); + element.addClass('dtp-no-msclear dtp-input'); + var calendarButton = + '', + clearButton = ''; + element.after($compile(calendarButton + clearButton)(scope)); + + scope.openCalendarDiag = function(e) { + openCalendar(e); + }; scope.clear = function() { ngModel.$setViewValue(null); diff --git a/js/demo.js b/js/demo.js index 52a8150..abba82c 100644 --- a/js/demo.js +++ b/js/demo.js @@ -24,6 +24,7 @@ $scope.dateLang = new Date(); $scope.time = new Date(); $scope.dateTime = new Date(); + $scope.dateTimeEdit = new Date(); // current date + 1 hour, no minutes, no seconds, no milliseconds var newDate = new Date(); diff --git a/yarn.lock b/yarn.lock index 2708cf8..4612ee6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,8 +40,8 @@ angular-aria@^1.6.6: resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.6.tgz#58dd748e09564bc8409f739bde57b35fbee5b6a5" angular-material@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.4.tgz#27de35646f54ccd320080af0c708e1b438af87f6" + version "1.1.5" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.5.tgz#a5450cd8205e15a7691edc389476094cf86d592b" angular@^1.6.6: version "1.6.6" From 7b1aec4ede4b1d1cdb6d896b049b835634e15a56 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 10 Sep 2017 00:58:27 -0400 Subject: [PATCH 093/226] version 1.9.0 --- README.md | 18 +++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- .../angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- package.json | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index d1d5fe2..6baae9e 100644 --- a/README.md +++ b/README.md @@ -57,21 +57,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 0a00933..e3af76c 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.7", + "version": "1.9.0", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 7115cd6..b7eefad 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(s,c,o,d){var l=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var u=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(u=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var m={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(m):m,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}s.editInput?(c.addClass("dtp-no-msclear"),c.after(i('')(s)),s.clear=function(){d.$setViewValue(null),d.$render(),a(function(){c[0].focus()},0,!1)}):c.on("focus",function(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!l){l=!0;var d={};for(var m in o)s.hasOwnProperty(m)&&!angular.isUndefined(s[m])&&(d[m]=s[m]);d.currentDate=s.currentDate,d.showTodaysDate=u;var p={options:d};t.show({template:n,controller:r,controllerAs:"picker",locals:p,openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){s.currentDate=t?t._d:t,l=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){l=!1,c.parent().removeClass("md-input-focused")})}})}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,k=parseInt(i(d,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var T=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+v),w=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(k+g),I={left:T,top:w,value:r||s?5*b:b,style:{"margin-left":T+"px","margin-top":w+"px"}};r||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===b?12:b:I.display=b,x.push(I)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var Y=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+v),O=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(k+g),E={left:Y,top:O,value:A,style:{"margin-left":Y+"px","margin-top":O+"px"}};E.display=A,S.push(E)}t.points24=S}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var k=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),k()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$$mdSvgRegistry",function(t,a,i,s){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(c,o,d,l){function u(i){if(i.preventDefault(),o.blur(),o.parent().removeClass("md-input-focused"),!m){m=!0;var s={};for(var l in d)c.hasOwnProperty(l)&&!angular.isUndefined(c[l])&&(s[l]=c[l]);s.currentDate=c.currentDate,s.showTodaysDate=p;var u={options:s};t.show({template:n,controller:r,controllerAs:"picker",locals:u,openFrom:o,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:s.clickOutsideToClose||!1,disableParentScroll:s.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){c.currentDate=t?t._d:t,m=!1,e(c.currentDate).isSame(s.currentDate)||a(c.ngChange,0),o.parent().removeClass("md-input-focused")},function(){m=!1,o.parent().removeClass("md-input-focused")})}}var m=!1;c.format||(c.date&&c.time&&c.seconds?c.format="YYYY-MM-DD HH:mm:ss":c.date&&c.time?c.format="YYYY-MM-DD HH:mm":c.date?c.format="YYYY-MM-DD":c.format="HH:mm");var p=null;if(void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(p=e()),angular.isString(c.currentDate)&&""!==c.currentDate&&(c.currentDate=e(c.currentDate,c.format)),l){var h={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(h):h,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(c.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,c.format);return a.isValid()?a._d:void 0}})}if(c.editInput){o.addClass("dtp-no-msclear dtp-input");var f='';o.after(i(f+'')(c)),c.openCalendarDiag=function(e){u(e)},c.clear=function(){l.$setViewValue(null),l.$render(),a(function(){o[0].focus()},0,!1)}}else o.on("focus",u)}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,v=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,b=[],x=0;x<12;++x){var T=M+y*Math.sin(2*Math.PI*(x/12))+f/2-(f+k),w=M-y*Math.cos(2*Math.PI*(x/12))-g/2-(v+g),I={left:T,top:w,value:r||s?5*x:x,style:{"margin-left":T+"px","margin-top":w+"px"}};r||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===x?12:x:I.display=x,b.push(I)}if(t.points=b,!c.params.shortTime&&!r&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var Y=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+k),O=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(v+g),E={left:Y,top:O,value:A,style:{"margin-left":Y+"px","margin-top":O+"px"}};E.display=A,S.push(E)}t.points24=S}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+k-N+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index a5bc811..7a1404a 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","isOn","dateOfTheDay","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","_d","addClass","after","clear","$setViewValue","$render","focus","on","e","preventDefault","blur","parent","removeClass","options","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","isSame","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n if (!scope.editInput) {\r\n element.on('focus', function (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n })\r\n .then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n })\r\n ;\r\n });\r\n } else {\r\n element.addClass('dtp-no-msclear');\r\n element.after($compile('')(scope));\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$$mdSvgRegistry","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","addClass","calendarButton","mdCalendar","after","openCalendarDiag","clear","$setViewValue","$render","focus","on","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$$mdSvgRegistry',\r\n function ($mdDialog, $timeout, $compile, $$mdSvgRegistry) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n element.on('focus', openCalendar);\r\n } else {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 455889d..1dad1f0 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} \ No newline at end of file diff --git a/package.json b/package.json index 2a91c3c..9d777e2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.8.7", + "version": "1.9.0", "keywords": [ "css", "js", From f5bcfb552a9c69bce3e66e766ccf1d722340e751 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 10 Sep 2017 23:26:12 -0400 Subject: [PATCH 094/226] #17 Add time icon to edit-input mode --- index.html | 11 +++++++++++ js/angular-material-datetimepicker.js | 4 +++- js/demo.js | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index dff62e6..57f530f 100644 --- a/index.html +++ b/index.html @@ -116,6 +116,17 @@

Datetime Pickers

+
+ + + + +
+
+
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 6525795..25459fa 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -4,6 +4,8 @@ function ngMaterialDatePicker(moment) { var moduleName = "ngMaterialDatePicker"; + var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+'; + var VIEW_STATES = { DATE: 0, HOUR: 1, @@ -270,7 +272,7 @@ '', clearButton = ''; element.after($compile(calendarButton + clearButton)(scope)); diff --git a/js/demo.js b/js/demo.js index abba82c..33e9630 100644 --- a/js/demo.js +++ b/js/demo.js @@ -25,6 +25,7 @@ $scope.time = new Date(); $scope.dateTime = new Date(); $scope.dateTimeEdit = new Date(); + $scope.timeEdit = new Date(); // current date + 1 hour, no minutes, no seconds, no milliseconds var newDate = new Date(); From 4c0acaf96d06255a5996a066789ff6efb09c0044 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 10 Sep 2017 23:32:40 -0400 Subject: [PATCH 095/226] version 1.9.1 --- README.md | 23 ++++++++++--------- bower.json | 4 ++-- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- package.json | 4 ++-- yarn.lock | 2 +- 6 files changed, 19 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 6baae9e..aa3b38d 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ Originally designed for Bootstrap Material, this has been modified to work with ## Updates | Date | Author | Description | | ---------- | -------- | ------------------------------------------------------ | +| 2017-09-10 | hexadecy | Icon button when in edit-input mode | | 2017-08-19 | hexadecy | Quick year and month menu selector | | 2017-08-12 | hexadecy | Add optionnal seconds clock | | 2017-07-30 | hexadecy | Highlight only week-days (business days) | @@ -43,8 +44,8 @@ Depends on the following library: - - + + ``` @@ -57,21 +58,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index e3af76c..0ee190a 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.0", + "version": "1.9.1", "keywords": [ "css", "js", @@ -29,6 +29,6 @@ ], "dependencies": { "moment": "^2.18.1", - "angular-material": "^1.1.4" + "angular-material": "^1.1.5" } } diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index b7eefad..90c0040 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$$mdSvgRegistry",function(t,a,i,s){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(c,o,d,l){function u(i){if(i.preventDefault(),o.blur(),o.parent().removeClass("md-input-focused"),!m){m=!0;var s={};for(var l in d)c.hasOwnProperty(l)&&!angular.isUndefined(c[l])&&(s[l]=c[l]);s.currentDate=c.currentDate,s.showTodaysDate=p;var u={options:s};t.show({template:n,controller:r,controllerAs:"picker",locals:u,openFrom:o,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:s.clickOutsideToClose||!1,disableParentScroll:s.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){c.currentDate=t?t._d:t,m=!1,e(c.currentDate).isSame(s.currentDate)||a(c.ngChange,0),o.parent().removeClass("md-input-focused")},function(){m=!1,o.parent().removeClass("md-input-focused")})}}var m=!1;c.format||(c.date&&c.time&&c.seconds?c.format="YYYY-MM-DD HH:mm:ss":c.date&&c.time?c.format="YYYY-MM-DD HH:mm":c.date?c.format="YYYY-MM-DD":c.format="HH:mm");var p=null;if(void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(p=e()),angular.isString(c.currentDate)&&""!==c.currentDate&&(c.currentDate=e(c.currentDate,c.format)),l){var h={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(h):h,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(c.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,c.format);return a.isValid()?a._d:void 0}})}if(c.editInput){o.addClass("dtp-no-msclear dtp-input");var f='';o.after(i(f+'')(c)),c.openCalendarDiag=function(e){u(e)},c.clear=function(){l.$setViewValue(null),l.$render(),a(function(){o[0].focus()},0,!1)}}else o.on("focus",u)}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,v=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,b=[],x=0;x<12;++x){var T=M+y*Math.sin(2*Math.PI*(x/12))+f/2-(f+k),w=M-y*Math.cos(2*Math.PI*(x/12))-g/2-(v+g),I={left:T,top:w,value:r||s?5*x:x,style:{"margin-left":T+"px","margin-top":w+"px"}};r||s?I.display=I.value<10?"0"+I.value:I.value:c.params.shortTime?I.display=0===x?12:x:I.display=x,b.push(I)}if(t.points=b,!c.params.shortTime&&!r&&!s){for(var S=[],V=M/1.8,A=12;A<24;++A){var Y=M+V*Math.sin(2*Math.PI*(A/12))+f/2-(f+k),O=M-V*Math.cos(2*Math.PI*(A/12))-g/2-(v+g),E={left:Y,top:O,value:A,style:{"margin-left":Y+"px","margin-top":O+"px"}};E.display=A,S.push(E)}t.points24=S}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+k-N+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$$mdSvgRegistry",function(t,a,i,s){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(c,o,d,l){function u(i){if(i.preventDefault(),o.blur(),o.parent().removeClass("md-input-focused"),!m){m=!0;var s={};for(var l in d)c.hasOwnProperty(l)&&!angular.isUndefined(c[l])&&(s[l]=c[l]);s.currentDate=c.currentDate,s.showTodaysDate=p;var u={options:s};t.show({template:n,controller:r,controllerAs:"picker",locals:u,openFrom:o,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:s.clickOutsideToClose||!1,disableParentScroll:s.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){c.currentDate=t?t._d:t,m=!1,e(c.currentDate).isSame(s.currentDate)||a(c.ngChange,0),o.parent().removeClass("md-input-focused")},function(){m=!1,o.parent().removeClass("md-input-focused")})}}var m=!1;c.format||(c.date&&c.time&&c.seconds?c.format="YYYY-MM-DD HH:mm:ss":c.date&&c.time?c.format="YYYY-MM-DD HH:mm":c.date?c.format="YYYY-MM-DD":c.format="HH:mm");var p=null;if(void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(p=e()),angular.isString(c.currentDate)&&""!==c.currentDate&&(c.currentDate=e(c.currentDate,c.format)),l){var h={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(h):h,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(c.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,c.format);return a.isValid()?a._d:void 0}})}if(c.editInput){o.addClass("dtp-no-msclear dtp-input");var f='';o.after(i(f+'')(c)),c.openCalendarDiag=function(e){u(e)},c.clear=function(){l.$setViewValue(null),l.$render(),a(function(){o[0].focus()},0,!1)}}else o.on("focus",u)}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,v=parseInt(i(d,"paddingTop").replace("px",""))||0,g=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var I=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+g),T=M-y*Math.cos(2*Math.PI*(b/12))-k/2-(v+k),w={left:I,top:T,value:r||s?5*b:b,style:{"margin-left":I+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===b?12:b:w.display=b,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+g),V=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(v+k),N={left:E,top:V,value:O,style:{"margin-left":E+"px","margin-top":V+"px"}};N.display=O,A.push(N)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),Y=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*g+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*g+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*g+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+g-Y+"px",marginTop:M-g/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 7a1404a..38a047d 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$$mdSvgRegistry","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","addClass","calendarButton","mdCalendar","after","openCalendarDiag","clear","$setViewValue","$render","focus","on","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"CAAA,WACE,aAEA,SAASA,EAAqBC,GAC9B,IAAIC,EAAa,uBAEbC,GACFC,KAAM,EACNC,KAAM,EACNC,OAAQ,GAGNC,EAAM,SAAUC,EAAIC,GAEtB,OADAD,EAAKE,QAAQC,QAAQH,GACb,qBAAsBI,OAAUA,OAAOC,iBAAiBL,EAAG,IAAIC,GAAQD,EAAGD,IAAIE,IAGpFK,EACF,ouNA4EFJ,QAAQK,OAAOb,GAAa,eACzBc,QAAQ,kCAAmC,mBAAoB,SAAUC,GACxEC,KAAKC,KAAO,WACV,OAAOF,IAAmBG,MAG5BF,KAAKG,iBAAmB,SAAUC,GAChCL,GAAmBG,KAAME,QAG5BC,QAAQ,mBAAoB,WAC3B,IAAIC,GACFC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,SAAS,EACTC,OAAQ,aACRC,QAAS,KACTC,QAAS,KACTC,YAAa,KACbZ,KAAMR,OAAOqB,UAAUC,cAAgBtB,OAAOqB,UAAUE,UAAY,KACpEC,UAAW,EACXC,WAAW,EACXC,WAAY,SACZC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,UAAW,QACXC,gBACAC,UAAU,EACVC,qBAAqB,EACrBC,QAAQ,EACRC,WAAW,EACXC,qBAAqB,EACrBC,YAAa,GAGf,OAAO,SAAUC,GACf,GAAIA,EACF,IAAK,IAAIC,KAAKD,EACR1B,EAAe4B,eAAeD,IAAMD,EAAOE,eAAeD,KAC5D3B,EAAe2B,GAAKD,EAAOC,IAKjC,OAAO3B,KAGV6B,UAAU,qBAAsB,YAAa,WAAY,WAAY,kBACpE,SAAUC,EAAWC,EAAUC,EAAUC,GAEvC,OACEC,SAAU,IACVC,QAAS,UACTC,OACE5B,YAAa,WACb6B,SAAU,IACVnC,KAAM,IACND,KAAM,IACNE,QAAS,IACTC,QAAS,IACTE,QAAS,IACTC,QAAS,IACTY,aAAc,IACdC,SAAU,IACVP,UAAW,IACXD,UAAW,IACXP,OAAQ,IACRS,WAAY,IACZC,OAAQ,IACRnB,KAAM,IACNoB,OAAQ,IACRC,OAAQ,IACRqB,eAAgB,IAChBpB,UAAW,IACXG,oBAAqB,IACrBC,OAAQ,IACRC,UAAW,IACXC,oBAAqB,IACrBC,YAAa,KAEfc,KAAM,SAAUH,EAAOjD,EAASqD,EAAOC,GA0CrC,SAASC,EAAcC,GAIrB,GAHAA,EAAEC,iBACFzD,EAAQ0D,OACR1D,EAAQ2D,SAASC,YAAY,qBACzBC,EAAJ,CAGAA,GAAO,EACP,IAAIC,KACJ,IAAK,IAAItB,KAAKa,EACRJ,EAAMR,eAAeD,KAAOzC,QAAQgE,YAAYd,EAAMT,MACxDsB,EAAQtB,GAAKS,EAAMT,IAGvBsB,EAAQzC,YAAc4B,EAAM5B,YAC5ByC,EAAQX,eAAiBa,EAEzB,IAAIC,GAAUH,QAASA,GACvBnB,EAAUuB,MACR/D,SAAUA,EACVgE,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRK,SAAUtE,EACV2D,OAAQ5D,QAAQC,QAAQuE,SAASC,MACjCC,kBAAkB,EAClBpC,oBAAqByB,EAAQzB,sBAAuB,EACpDH,oBAAqB4B,EAAQ5B,sBAAuB,EACpDwC,aAAa,EACbC,UAAU,EACVC,UAAU,IACTC,KAAK,SAAUC,GAChB7B,EAAM5B,YAAcyD,EAAIA,EAAEC,GAAKD,EAC/BjB,GAAO,EAEFvE,EAAO2D,EAAM5B,aAAa2D,OAAOlB,EAAQzC,cAC5CuB,EAASK,EAAMC,SAAU,GAG3BlD,EAAQ2D,SAASC,YAAY,qBAC5B,WACDC,GAAO,EACP7D,EAAQ2D,SAASC,YAAY,uBAnFjC,IAAIC,GAAO,EACNZ,EAAM/B,SACL+B,EAAMnC,MAAQmC,EAAMlC,MAAQkC,EAAMhC,QACpCgC,EAAM/B,OAAS,sBACN+B,EAAMnC,MAAQmC,EAAMlC,KAC7BkC,EAAM/B,OAAS,mBACN+B,EAAMnC,KACfmC,EAAM/B,OAAS,aAEf+B,EAAM/B,OAAS,SAInB,IAAI8C,EAAe,KASnB,QAR6BiB,IAAzBhC,EAAME,gBAAyD,UAAzBF,EAAME,iBAC9Ca,EAAe1E,KAGbS,QAAQmF,SAASjC,EAAM5B,cAAsC,KAAtB4B,EAAM5B,cAC/C4B,EAAM5B,YAAc/B,EAAO2D,EAAM5B,YAAa4B,EAAM/B,SAGlDoC,EAAS,CACX,IAAI6B,GAAkBC,IAAK,WAAYC,SAAU,KACjD/B,EAAQgC,SAAWhC,EAAQgC,SAAWhC,EAAQgC,SAASC,YAAYJ,GAAkBA,EAErF7B,EAAQkC,YAAYC,KAAK,SAAUC,GACjC,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAIrG,EAAOoG,GACf,OAAOC,EAAEC,UAAYD,EAAEzE,OAAO+B,EAAM/B,QAAU,MAGhDoC,EAAQuC,SAASJ,KAAK,SAAUC,GAC9B,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAIrG,EAAOoG,EAAOzC,EAAM/B,QAC5B,OAAIyE,EAAEC,UAAkBD,EAAEZ,QAA1B,KAoDJ,GAAK9B,EAAMb,UAEJ,CACLpC,EAAQ8F,SAAS,4BACjB,IAAIC,EACJ,uLAGqDjD,EAAgBkD,WAAa,2BAGlFhG,EAAQiG,MAAMpD,EAASkD,EADT,gIACuC9C,IAErDA,EAAMiD,iBAAmB,SAAS1C,GAChCD,EAAaC,IAGfP,EAAMkD,MAAQ,WACZ7C,EAAQ8C,cAAc,MACtB9C,EAAQ+C,UACRzD,EAAS,WACP5C,EAAQ,GAAGsG,SACV,GAAG,SArBRtG,EAAQuG,GAAG,QAAShD,QA2D7B3C,QAAQ,qBAAsB,YAAa,KAAM,UAAW,mBAAoB,SAAU+B,EAAW6D,EAAIC,EAASnG,GACjH,IAAIoG,EAAgBpG,IAChBqG,EAAmBC,OAAOC,KAAKH,GAuCnC,OArCExC,KAAM,SAAUJ,GACd,IAAIgD,EAAWN,EAAGO,QACLhH,QAAQiH,KAAKN,GAC1B,IAAK,IAAIlE,KAAKsB,GACwB,GAAhC6C,EAAiBM,QAAQzE,IAAYsB,EAAQrB,eAAeD,IACrDsB,EAAQtB,GAIrB,IAAIwB,EAAe,UACYiB,IAA3BnB,EAAQX,gBAA2D,UAA3BW,EAAQX,iBAClDa,EAAe1E,KAEjBwE,EAAQX,eAAiBa,EAEzB,IAAIC,GAAUH,QAASA,GAkBvB,OAjBAnB,EAAUuB,MACR/D,SAAUA,EACVgE,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRN,OAAQ5D,QAAQC,QAAQuE,SAASC,MACjCC,kBAAkB,EAClBpC,oBAAqByB,EAAQzB,sBAAuB,EACpDH,oBAAqB4B,EAAQ5B,sBAAuB,EACpDyC,UAAU,EACVC,UAAU,IACTC,KAAK,SAAUC,GACEA,GAAIA,EAAEC,GACxB+B,EAASI,QAAQpC,EAAIA,EAAEC,GAAKD,IAC3B,WACDgC,EAASK,WAEJL,EAASM,aAQxB,IAAIhD,EAAmB,SAAUiD,EAAQ1E,EAAWrC,GAClDC,KAAK+G,YAAc9H,EAAYC,KAC/Bc,KAAKgH,QAAU5E,EAEfpC,KAAKiH,mBACLjH,KAAKkH,MAAQjI,EACbe,KAAKgC,OAASxC,QAAQiH,KAAK1G,KAC3BC,KAAKmH,SAAW,KAChBnH,KAAKgC,OAASxC,QAAQ4H,OAAOpH,KAAKgC,OAAQhC,KAAKuD,SAE/CvD,KAAKqH,QAo6BL,OAj6BFxD,EAAiByD,SAAW,SAAU,YAAa,oBACnDzD,EAAiB0D,WACfF,KAAM,WACJrH,KAAKwH,SAAWxH,KAAKgC,OAAOxB,OAASR,KAAKgC,OAAOzB,KACjDP,KAAKyH,SAAWzH,KAAKgC,OAAOzB,KAC5BP,KAAK0H,YACL1H,KAAK2H,SAEPC,qBAAsB,WACpB,IAAIC,EAAa7H,KAAKgC,OAAOD,aACzB8F,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAItH,EAAOP,KAAKc,aAAe/B,IAC3B0B,EAAWoH,EAAaC,KAAKC,MAAMxH,EAAKyH,SAAWH,GACnDpH,GAAW,KACbA,EAAU,GAAKoH,GAEjB,IAAInH,EAAUH,EAAK0H,SAInB,OAHIvH,GAAW,KACbA,EAAU,IAEL3B,EAAOwB,GAAME,QAAQA,GAASC,QAAQA,IAE/CgH,UAAW,WACT,IAAIQ,EAAOlI,KACPmI,EAAa,SAAUC,EAAOC,GAChC,IAAIC,EAAM,KACV,GAAI9I,QAAQ+I,UAAUH,IAAoB,OAAVA,GAA4B,KAAVA,EAChD,GAAI5I,QAAQmF,SAASyD,GAEjBE,OADiC,IAAxBJ,EAAKlG,OAAa,QAA4C,OAAvBkG,EAAKlG,OAAOrB,OACtD5B,EAAOqJ,EAAOF,EAAKlG,OAAOrB,QAAQ6H,OAAON,EAAKlG,OAAO9B,MAGrDnB,EAAOqJ,GAAOI,OAAON,EAAKlG,OAAO9B,WAEpC,GAAqB,iBAAVkI,EAChBE,EAAMvJ,EAAOqJ,GAAOI,OAAON,EAAKlG,OAAO9B,WAEvC,GAAIV,QAAQiJ,OAAOL,GAAQ,CACzB,IAAIM,EAAIN,EAAMO,UACdL,EAAMvJ,EAAO2J,EAAG,KAAKF,OAAON,EAAKlG,OAAO9B,WAC/BkI,EAAMQ,mBACfN,EAAMF,QAKVE,EAAMD,EAER,OAAOC,GAGTtI,KAAKc,YAAcqH,EAAWnI,KAAKgC,OAAOlB,YAAa/B,KACvDiB,KAAKc,YAAcd,KAAK4H,uBACxB5H,KAAKY,QAAUuH,EAAWnI,KAAKgC,OAAOpB,SACtCZ,KAAKa,QAAUsH,EAAWnI,KAAKgC,OAAOnB,SACtCb,KAAKyB,aAAezB,KAAKgC,OAAOP,aAAaoH,IAAI,SAAUH,GACzD,OAAO3J,EAAO2J,GAAG/H,OAAO,kBAE1BX,KAAK8I,WAAW9I,KAAKc,aACrBd,KAAK0B,SAAW1B,KAAKgC,OAAON,UAE9BqH,SAAU,WACR/I,KAAK+G,YAAc9H,EAAYC,MAEjC8J,UAAW,WACThJ,KAAK+G,YAAc9H,EAAYE,MAEjC8J,YAAa,WACXjJ,KAAK+G,YAAc9H,EAAYG,QAEjC8J,YAAa,WACXlJ,KAAK+G,YAAc9H,EAAYkK,QAEjCC,eAAgB,SAAU7I,EAAM8I,EAAWC,GACzC,IAAIC,GAAU,EAEd,QAA6B,IAAlBvJ,KAAY,SAAsC,OAAjBA,KAAKY,QAAkB,CACjE,IAAI4I,EAAWzK,EAAOiB,KAAKY,SACvB6I,EAAQ1K,EAAOwB,GAEd8I,GAAcC,IACjBE,EAASE,KAAK,GACdF,EAASxB,OAAO,GAEhByB,EAAMC,KAAK,GACXD,EAAMzB,OAAO,IAGfwB,EAASvB,OAAO,GAChBwB,EAAMxB,OAAO,GACbuB,EAASG,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASJ,EAAS7I,OAAO,OANnE8I,EAAMzB,OAAO,GACbwB,EAASxB,OAAO,GAEhBuB,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASJ,EAAS7I,OAAO,OAOvE,OAAO4I,GAETM,gBAAiB,SAAUtJ,EAAMuJ,EAAWR,GAC1C,IAAIC,GAAU,EAEd,QAA6B,IAAlBvJ,KAAY,SAAsC,OAAjBA,KAAKa,QAAkB,CACjE,IAAIkJ,EAAWhL,EAAOiB,KAAKa,SACvB4I,EAAQ1K,EAAOwB,GAEduJ,GAAcR,IACjBS,EAASL,KAAK,GACdK,EAAS/B,OAAO,GAEhByB,EAAMC,KAAK,GACXD,EAAMzB,OAAO,IAGf+B,EAAS9B,OAAO,GAChBwB,EAAMxB,OAAO,GACb8B,EAASJ,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASG,EAASpJ,OAAO,OANnE8I,EAAMzB,OAAO,GACb+B,EAAS/B,OAAO,GAEhBuB,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASG,EAASpJ,OAAO,OAOvE,OAAO4I,GAETS,iBAAkB,SAAUzJ,GAC1B,IAAI0J,EAAM1J,EAAKI,OAAO,gBACtB,QAAIX,KAAKyB,aAAaiF,QAAQuD,IAAQ,IAKxCC,UAAW,SAAS3J,GAClB,OAAIP,KAAK0B,UACHnB,EAAK4J,cAAgB,GAO7BrB,WAAY,SAAUvI,GAChBA,IACFP,KAAKc,YAAc/B,EAAOwB,GACrBP,KAAKoJ,eAAepJ,KAAKc,eAC5Bd,KAAKc,YAAc/B,EAAOiB,KAAKY,UAG5BZ,KAAK6J,gBAAgB7J,KAAKc,eAC7Bd,KAAKc,YAAc/B,EAAOiB,KAAKa,UAEjCb,KAAKc,YAAY0H,OAAOxI,KAAKgC,OAAO9B,MACpCF,KAAKoK,cAAgBrL,EAAOiB,KAAKc,aACjCd,KAAKmH,SAAWnH,KAAKc,YAAY4I,QAAU,GAAK,KAAO,OAG3DW,KAAM,WACJ,MAAyB,OAAlBrK,KAAKmH,UAEdmD,eAAgB,SAAUC,GACT,IAAXA,GAAgBvK,KAAKwK,sBACvBxK,KAAK8I,WAAW9I,KAAKc,YAAY2J,IAAIF,EAAQ,WAG/B,IAAZA,GAAiBvK,KAAK0K,0BACxB1K,KAAK8I,WAAW9I,KAAKc,YAAY2J,IAAIF,EAAQ,WAGjDI,cAAe,SAAUJ,GACR,IAAXA,GAAgBvK,KAAK4K,qBACvB5K,KAAK8I,WAAW9I,KAAKc,YAAY2J,IAAIF,EAAQ,UAG/B,IAAZA,GAAiBvK,KAAK6K,yBACxB7K,KAAK8I,WAAW9I,KAAKc,YAAY2J,IAAIF,EAAQ,UAGjDO,SAAU,SAAU5E,EAAS6E,GAC3B7E,EAAQ8E,KAAKD,IAEfE,gBAAiB,WAIf,IAAK,IAHDC,KACAzB,EAAQ1K,EAAOiB,KAAKc,aAEfsE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAI+F,EAAW1B,EAAM2B,MAAMhG,GACvBpF,KAAKoJ,eAAe+B,EAASE,MAAM,WAAarL,KAAK6J,gBAAgBsB,EAASG,QAAQ,WACxFJ,EAAUhG,KAAKiG,EAASxK,OAAO,SAGnC,OAAOuK,GAETK,YAAa,SAAUH,GACrBpL,KAAK8I,WAAW9I,KAAKc,YAAYsK,MAAMA,KAEzCI,eAAgB,WACd,IAAIhC,EAAUO,EAAU0B,EAAKC,EAAWC,KACxClC,EAAQzJ,KAAKc,YAAY8K,YAEI,IAAlB5L,KAAY,SAAsC,OAAjBA,KAAKY,UAC/C4I,EAAWzK,EAAOiB,KAAKY,SAASgL,aAEL,IAAlB5L,KAAY,SAAsC,OAAjBA,KAAKa,UAC/CkJ,EAAWhL,EAAOiB,KAAKa,SAAS+K,QAG9B7B,GAAYP,GACdiC,EAAM1B,EAAWP,EACjBkC,EAAYlC,GACHA,GACTiC,EAAM,IACNC,EAAYlC,GAGZkC,EAFS3B,EAEGA,GADZ0B,EAAM,IAIMhC,GADZgC,EAAM,IACkB,EAG1B,IAAK,IAAIxJ,EAAE,EAAGA,EAAIwJ,EAAKxJ,IACrB0J,EAASzG,KAAKwG,EAAUzJ,GAE1B,OAAO0J,GAETE,WAAY,SAAUD,GACpB5L,KAAK8I,WAAW9I,KAAKc,YAAY8K,KAAKA,KAExClB,uBAAwB,WACtB,OAAO1K,KAAKoK,eAAiBpK,KAAKoJ,eAAerK,EAAOiB,KAAKoK,eAAekB,QAAQ,UAAU,GAAO,IAEvGd,mBAAoB,WAClB,OAAOxK,KAAKoK,eAAiBpK,KAAK6J,gBAAgB9K,EAAOiB,KAAKoK,eAAeiB,MAAM,UAAU,GAAO,IAEtGR,sBAAuB,WACrB,OAAO7K,KAAKoK,eAAiBpK,KAAKoJ,eAAerK,EAAOiB,KAAKoK,eAAekB,QAAQ,SAAS,GAAO,IAEtGV,kBAAmB,WACjB,OAAO5K,KAAKoK,eAAiBpK,KAAK6J,gBAAgB9K,EAAOiB,KAAKoK,eAAeiB,MAAM,SAAS,GAAO,IAErGS,gBAAiB,SAAUpC,GACzB,IAAID,EAAQ1K,EAAOiB,KAAKc,aAMxB,OALId,KAAKgC,OAAOb,UACdsI,EAAMC,KAAK1J,KAAK+L,aAAarC,IAAO1B,OAAO,GAAGC,OAAO,GAErDwB,EAAMC,KAAKA,GAAM1B,OAAO,GAAGC,OAAO,GAE7BjI,KAAKoJ,eAAeK,GAAO,GAAM,IAAUzJ,KAAK6J,gBAAgBJ,GAAO,GAAM,IAEtFuC,kBAAmB,SAAUhE,GAC3B,IAAIyB,EAAQ1K,EAAOiB,KAAKc,aAExB,OADA2I,EAAMzB,OAAOA,GAAQC,OAAO,GACrBjI,KAAKoJ,eAAeK,GAAO,GAAM,IAASzJ,KAAK6J,gBAAgBJ,GAAO,GAAM,IAErFwC,kBAAmB,SAAUhE,GAC3B,OAAO,GAETN,MAAO,WACL3H,KAAK+G,YAAc9H,EAAYC,KAC3Bc,KAAKgC,OAAOzB,KACdP,KAAK+I,WAED/I,KAAKgC,OAAOxB,MACdR,KAAKgJ,aAIXkD,MAAO,WACL,IAAIrE,EAAa7H,KAAKgC,OAAOD,YACzBxB,EAAOxB,IACP0B,EAAWoH,EAAaC,KAAKC,MAAMxH,EAAKyH,SAAWH,GACnDpH,GAAW,KACbA,EAAU,GAAKoH,GAEjB7H,KAAK8I,WAAW/J,EAAOwB,GAAME,QAAQA,KAEvC0L,GAAI,WACF,OAAQnM,KAAK+G,aACX,KAAK9H,EAAYC,MACU,IAArBc,KAAKgC,OAAOxB,KACdR,KAAKgJ,YAELhJ,KAAKoM,MAAK,GAEZ,MACF,KAAKnN,EAAYE,MACa,IAAxBa,KAAKgC,OAAOvB,QACdT,KAAKiJ,cAELjJ,KAAKoM,MAAK,GAEZ,MACF,KAAKnN,EAAYG,QACa,IAAxBY,KAAKgC,OAAOtB,QACdV,KAAKkJ,cAELlJ,KAAKoM,MAAK,GAEZ,MACF,KAAKnN,EAAYkK,OACfnJ,KAAKoM,MAAK,KAIhBC,OAAQ,WACN,GAAIrM,KAAKgC,OAAOxB,KACd,OAAQR,KAAK+G,aACX,KAAK9H,EAAYC,KACfc,KAAKoM,OACL,MACF,KAAKnN,EAAYE,KACXa,KAAKgC,OAAOzB,KACdP,KAAK+I,WAGL/I,KAAKoM,OAEP,MACF,KAAKnN,EAAYG,OACfY,KAAKgJ,YACL,MACF,KAAK/J,EAAYkK,OACfnJ,KAAKiJ,mBAKTjJ,KAAKoM,QAGTE,kBAAmB,WACjBtM,KAAKoK,cAAcmC,SAAS,EAAG,WAEjCC,iBAAkB,WAChBxM,KAAKoK,cAAcK,IAAI,EAAG,WAE5BgC,iBAAkB,WAChBzM,KAAKoK,cAAcmC,SAAS,EAAG,UAEjCG,gBAAiB,WACf1M,KAAKoK,cAAcK,IAAI,EAAG,UAE5BkC,SAAU,YACJ3M,KAAK8L,gBAAgB,IAAM9L,KAAK8L,gBAAgB,OAC9C9L,KAAKc,YAAY4I,QAAU,IAC7B1J,KAAK8I,WAAW9I,KAAKc,YAAYyL,SAAS,GAAI,UAE3CvM,KAAK8L,gBAAgB9L,KAAKc,YAAY4I,SACzC1J,KAAK8I,WAAW9I,KAAKc,YAAY4I,KAAK1J,KAAKY,QAAQ8I,SAEhD1J,KAAKgM,kBAAkBhM,KAAKc,YAAYkH,WAC3ChI,KAAK8I,WAAW9I,KAAKc,YAAYkH,OAAOhI,KAAKY,QAAQoH,aAI3D4E,SAAU,YACJ5M,KAAK8L,gBAAgB,KAAO9L,KAAK8L,gBAAgB,OAC/C9L,KAAKc,YAAY4I,OAAS,IAC5B1J,KAAK8I,WAAW9I,KAAKc,YAAY2J,IAAI,GAAI,UAEtCzK,KAAK8L,gBAAgB9L,KAAKc,YAAY4I,SACzC1J,KAAK8I,WAAW9I,KAAKc,YAAY4I,KAAK1J,KAAKa,QAAQ6I,SAEhD1J,KAAKgM,kBAAkBhM,KAAKc,YAAYkH,WAC3ChI,KAAK8I,WAAW9I,KAAKc,YAAYkH,OAAOhI,KAAKa,QAAQmH,aAI3D+D,aAAc,SAAUc,GACtB,IAAItD,EAAUsD,EAId,OAHKA,EAAI,IAAO7M,KAAKqK,SACnBd,GAAW,IAENA,GAET6C,KAAM,SAAUU,GACVA,EACF9M,KAAKgH,QAAQoF,KAAKpM,KAAKc,aAEvBd,KAAKgH,QAAQqF,WAKnB7M,QAAQK,OAAOb,GACZmD,UAAU,6BACT,WAOE,IAAK,IAHH4K,EAA4C,KADjC,IAAIC,MAAOC,cAAgB,GADzB,KAE0B,GAEvCC,KACOjL,EAAI,EAAGA,EAAI8K,EAAe9K,IACjCiL,EAAOhI,KAAKjD,GAGd,IAAIkL,EAAoB,SAAU5M,EAAM6M,GAItC,OAHAA,EAAMA,GAAY,EAGW,IAFlB7M,EAAKqL,OAXH,MAYDrL,EAAK6K,QAC0B,EAAMgC,GAGnD,OACE5K,SAAU,IACVE,OACE2K,OAAQ,IACR9M,KAAM,KAER2D,kBAAkB,EAClBJ,aAAc,MACdF,YAAa,SAAU,SAAUkD,GAC/B,IAAqBuG,EAAjBC,EAAWtN,KAEfA,KAAKuN,QAAU,WAIb,IAAK,IADDC,KACKvL,GAHToL,EAASrN,KAAKqN,QAGMrL,OAAOd,UAAWsM,EAAKC,OAAS,EAAGxL,IACjDA,EAAI,IACNA,EAAI,GAENuL,EAAKtI,KAAKjD,EAAEyL,YAId,GAFAJ,EAASK,KAAOH,EAEXH,EAAOxM,SAAYwM,EAAOzM,QAExB,CACL,IAAIwM,EAAMC,EAAOzM,QAAUuM,EAAkBE,EAAOzM,SAAW,EAC3DgN,EAAOP,EAAOxM,QAAWsM,EAAkBE,EAAOxM,SAAW,EAAKkM,EACtEO,EAASO,OAASX,EAAOY,MAAMV,EAAKQ,QAJpCN,EAASO,OAASX,EAOpBI,EAASS,SAAWZ,EAAkBE,EAAOvM,aAAewM,EAASO,OAAO,IAGhD,IAA1BrO,QAAQwO,QAAQC,OAAezO,QAAQwO,QAAQE,MAAQ,GACzDlO,KAAKuN,UAGPD,EAASa,eAAiB,SAAUC,GAClC,IAAIhD,GAAUgD,EAAQ,GAAK,IAAO,GAC9BxC,EAxDK,KAwDa9D,KAAKuG,MAAMD,EAAQ,IACrCE,EAAWvP,EAAOsO,EAAOvM,aAAa8K,KAAKA,GAAMR,MAAMA,GAC3D,OAAOmD,EAAsBD,IAG/BxH,EAAO0H,OAAO,WACZ,OAAOnB,EAAOvM,YAAcuM,EAAOvM,YAAYH,OAAO,WAAa,IAClE,SAAU8N,EAAMC,GACjB,GAAID,GAAQC,EAAM,CAChB,IAAIC,EAAQ5P,EAAO0P,EAAM,WACrBrB,EAAMC,EAAOzM,QAAUuM,EAAkBE,EAAOzM,SAAW,EAC3DwN,EAAQjB,EAAkBwB,EAAOvB,GACjCE,EAASS,UAAYK,IACvBd,EAASS,SAAWK,MAK1B,IAAIG,EAAwB,SAAUhO,GACpC,IAAI6K,KACJ,GAAa,OAAT7K,EAAe,CACjB6K,EAAM7L,KAAOgB,EAAKI,OAAO,aACzB,IAAIiO,EAAe7P,EAAOwB,GAAMiI,OAAO6E,EAAOrL,OAAO9B,MAAMoL,QAAQ,SAC9D5B,KAAKnJ,EAAKmJ,QACV1B,OAAOzH,EAAKyH,UACb6G,EAAUD,EAAajO,OAAO,KAClCyK,EAAMoC,QACN,IAAK,IAAIvL,EAAI2M,EAAarO,OAAQ0B,GAAK2M,EAAaE,cAAe7M,IAAK,CACtE,GAAIA,IAAM2M,EAAarO,OAAQ,CAC7B,IAAIwO,EAAQzB,EAASK,KAAKjH,QAAQmI,EAAQnB,YAC1C,GAAIqB,EAAQ,EACV,IAAK,IAAIrG,EAAI,EAAGA,EAAIqG,EAAOrG,IACzB0C,EAAMoC,KAAKtI,KAAK,GAItBkG,EAAMoC,KAAKtI,KAAKnG,EAAO6P,GAAcpG,OAAO6E,EAAOrL,OAAO9B,MAAMK,KAAK0B,IAIvE,IAAK,IADgB+M,KAAcC,EAASnH,KAAKoH,KAAK9D,EAAMoC,KAAKC,OAA/C,GACT0B,EAAI,EAAGA,EAAIF,EAAQE,IAC1BH,EAAQ9J,KAAKkG,EAAMoC,KAAKM,MAFR,EAEcqB,EAFd,GAEgCA,EAAI,KAGtD,OADA/D,EAAMoC,KAAOwB,EACN5D,IAKXkC,EAAS8B,MAAQ,SAAUnN,GACzB,OAAOlD,EAAO6K,SAAS3H,GAAI,KACxBuG,OAAO6E,EAAOrL,OAAO9B,MACrBS,OAAO,MACP0O,UAAU,EAAG,IAGlB/B,EAASgC,UAAY,SAAU/O,GAC7B,OAAO8M,EAAOjE,eAAerK,EAAOwB,IAAO,GAAO,IAChD8M,EAAOxD,gBAAgB9K,EAAOwB,IAAO,GAAO,IAC5C8M,EAAOnD,UAAUnL,EAAOwB,KACxB8M,EAAOrD,iBAAiBjL,EAAOwB,KAGnC+M,EAASxE,WAAa,SAAUvI,GAC9B,GAAIA,EAAM,CACR,GAAI+M,EAASiC,cAAchP,GACzB,OAAO8M,EAAOlB,KAEhBkB,EAAOvE,WAAW/J,EAAOwB,GAAMmJ,KAAK4D,EAAS/M,KAAKmJ,QAAQ1B,OAAOsF,EAAS/M,KAAKyH,WAC3EqF,EAAOrL,OAAOJ,QAChByL,EAAOlB,OAKbmB,EAASiC,cAAgB,SAAUnK,GACjC,OAAOA,GAAKkI,EAAS/M,KAAKA,SAAW6E,EAAE7E,QAAU+M,EAAS/M,KAAK6K,UAAYhG,EAAEgG,SAAWkC,EAAS/M,KAAKqL,SAAWxG,EAAEwG,QAGrH0B,EAASkC,eAAiB,SAAUpK,GAClC,IAAI8G,EAAQoB,EAASD,OAAO9J,QAAQX,eACpC,QAAKsJ,IAIE9G,GAAK8G,EAAM3L,SAAW6E,EAAE7E,QAAU2L,EAAMd,UAAYhG,EAAEgG,SAAWc,EAAMN,SAAWxG,EAAEwG,WAG/FhM,SACA,+PAOLuC,UAAU,kCAAmC,WAC5C,SAAUG,GACR,IAAImN,EAAuB,SAAUhQ,EAASiD,GAC5C,IAAIgN,EAAQlQ,QAAQC,QAAQA,EAAQ,GAAGkQ,cAAc,UACjDrC,EAAW5K,EAAMkN,IAEjBC,KAF8BnN,EAAM0I,MAIlCoC,KAAKsC,QAAQ,SAAUpO,EAAUO,GACrC4N,EAAU3K,KAAK,QACfxD,EAASoO,QAAQ,SAAUC,EAASZ,GAElC,GADAU,EAAU3K,KAAK,QACX6K,EACF,GAAIzC,EAASgC,UAAUS,GAAU,CAE/B,IAAIC,EAAW,iBAAqB/N,EAAI,KAAOkN,EAAI,IAEnDU,EAAU3K,KAAK,eAAiB6K,EAAQpP,OAAO,cAAgB,4FAA8FqP,EAAW,iCAAmCA,EAAW,gCAAkCA,EAAW,OACnQH,EAAU3K,KAAK6K,EAAQpP,OAAO,MAC9BkP,EAAU3K,KAAK,aAEf2K,EAAU3K,KAAK,iCACf2K,EAAU3K,KAAK6K,EAAQpP,OAAO,MAC9BkP,EAAU3K,KAAK,WAGnB2K,EAAU3K,KAAK,WAEjB2K,EAAU3K,KAAK,WAGjBwK,EAAMO,KAAKJ,EAAUK,KAAK,KAC1B5N,EAASoN,GAAOhN,IAGlB,OACEA,OACEyN,IAAK,KAEP1N,QAAS,6BACTD,SAAU,KACV5C,SACE,gPAUFiD,KAAM,SAAUH,EAAOjD,EAASqD,EAAOwK,GACrC5K,EAAMkN,IAAMtC,EACZ5K,EAAM0I,MAAQkC,EAASa,eAAevE,SAASlH,EAAMyN,MACrDV,EAAqBhQ,EAASiD,GAC9BA,EAAM8L,OAAO,WACX,OAAO9L,EAAMyN,KACZ,SAAUA,EAAKC,GACZD,GAAOC,IACT1N,EAAM0I,MAAQkC,EAASa,eAAevE,SAASlH,EAAMyN,MACrDV,EAAqBhQ,EAASiD,WAS5ClD,QAAQK,OAAOb,GACZmD,UAAU,gBAAiB,WAC1B,OACEU,KAAM,SAAUH,EAAOpD,GACrBA,EAAG0G,GAAG,QAAS,SAAU/C,GACvBA,EAAEC,uBAKZ1D,QAAQK,OAAOb,GACZmD,UAAU,0BAA2B,WACpC,SAAUE,GAkBR,OACEG,SAAU,IACV5C,SAjBA,ssCAkBAiD,KAAM,SAAUH,EAAOjD,EAASqD,GAC9B,IAAIuN,EAA4B,YAAfvN,EAAMwN,KACnBC,EAA4B,YAAfzN,EAAMwN,KACnBjD,EAAS3K,EAAM2K,OAEfmD,EAAgBxM,SAAS2L,cAAc,iBAEvCc,EAAgB,SAASC,EAAKC,GAChC,IAAIC,EAAM,EAEV,GAAY,KADZF,EAAMA,GAAO,IAAM,EAAIA,GACR,CACb,IAAIG,EAAUR,GAAYE,EAAa,GAAK,GAC5CK,EAAM9I,KAAKC,MAAM8I,EAAU,IAAMH,GAGnC,GAAIL,EAAY,CACd,IAAIxI,EAAawF,EAAOrL,OAAOD,aAC3B8F,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAIpH,EAAWoH,EAAaC,KAAKC,MAAM6I,EAAM/I,GACzCpH,GAAW,KACbA,EAAU,GAAKoH,GAEjBwF,EAAOvM,YAAYkH,OAAOvH,QAChB8P,GAKNK,GAAO,KAAIA,EAAM,GACrBvD,EAAOvM,YAAYmH,OAAO2I,KALd,KAARA,IAAYA,EAAM,GACjBvD,EAAOrL,OAAOb,YAAWkM,EAAOlG,SAAWwJ,EAAM,GAAK,KAAO,MAClEtD,EAAOvM,YAAY4I,KAAK2D,EAAOhD,OAASuG,EAAM,GAAKA,KAQnDE,EAAoB,iBAAkBpR,OAC1CqR,GACEC,aAAeF,EAAmB,aAAe,YACjDG,WAAeH,EAAmB,WAAe,UACjDI,aAAeJ,EAAmB,YAAe,aAG/CK,EAAc,SAASlO,GACzBA,EAAEC,iBAEF,IAAIkO,EAAgBnO,EAAEoO,cAAcC,QAAQ,OAC5CC,EAAaH,EAAcI,iBAAiB,GAExCV,IAAkB7N,EAAIA,EAAEwO,eAAe,IAE3C,IAAI/I,EAAM0I,EAAcM,YAAc,GAAMzO,EAAE0O,MAAQJ,EAAWK,MAC7DC,EAAM5O,EAAE6O,MAAQP,EAAWQ,IAAQX,EAAcY,aAAe,EAEhErB,EAAM7I,KAAKmK,KAAKnK,KAAKoK,IAAIxJ,EAAG,GAAKZ,KAAKoK,IAAIL,EAAG,IAC7CnB,EAAM5I,KAAKC,MAAOD,KAAKqK,MAAMzJ,EAAGmJ,IAAM,IAAM/J,KAAKsK,KAErD/P,EAAS,WACPoO,EAAcC,EAAI,IAAKC,MAI3BlR,EAAQuG,GAAG+K,EAAOC,aAAc,WAC7BvR,EAAQuG,GAAG+K,EAAOG,aAAcC,KAGnC1R,EAAQuG,GAAG+K,EAAOE,WAAY,WAC1BxR,EAAQ4S,IAAItB,EAAOG,gBAGvBxO,EAAM4P,IAAI,WAAY,WAClB7S,EAAQ4S,IAAItB,EAAOG,aAAcC,KAGrC,IAAIoB,EAAO,WACT,IAAIC,EAAQhT,QAAQC,QAAQA,EAAQ,GAAGkQ,cAAc,sBACjD8C,EAAWjT,QAAQC,QAAQ+Q,EAAcb,cAAc,gBAEvD+C,EAAIlC,EAAcb,cAAc,gBAAgB+B,YAChDiB,EAAK/I,SAASvK,EAAIoT,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEC,EAAKjJ,SAASvK,EAAIoT,EAAU,gBAAgBG,QAAQ,KAAM,MAAQ,EAIlEE,EAAcJ,IAHT9I,SAASvK,EAAImT,EAAO,cAAcI,QAAQ,KAAM,MAAQ,IACxDhJ,SAASvK,EAAImT,EAAO,eAAeI,QAAQ,KAAM,MAAQ,GAEjCD,EAAKE,GACtCL,EAAMnT,IAAI,QAAS,EAAe,MAYlC,IAAK,IAVD0T,EAAKnJ,SAASvK,EAAIoT,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEI,EAAKpJ,SAASvK,EAAIoT,EAAU,cAAcG,QAAQ,KAAM,MAAQ,EAChEK,EAAKrJ,SAASvK,EAAImT,EAAO,cAAcI,QAAQ,KAAM,MAAQ,EAC7DM,EAAKtJ,SAASvK,EAAImT,EAAO,aAAaI,QAAQ,KAAM,MAAQ,EAE5DO,EAAKL,EAAa,EAClB3D,EAAIgE,EAAI,IAERC,KAEKvG,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAEI+E,EAAQuB,EAFJhE,EAAIrH,KAAKuL,IAAc,EAAVvL,KAAKsK,IAAUvF,EAAI,KAEpBkG,EAAK,GAAMA,EAAKE,GAChClB,EAAOoB,EAFHhE,EAAIrH,KAAKwL,IAAc,EAAVxL,KAAKsK,IAAUvF,EAAI,KAErBqG,EAAK,GAAMF,EAAKE,GAE/BxJ,GACFkI,KAAMA,EACNG,IAAKA,EACL5M,MAAQkL,GAAYE,EAAkB,EAAJ1D,EAASA,EAC3C0G,OAAQC,cAAe5B,EAAO,KAAM6B,aAAc1B,EAAM,OAGtD1B,GAAcE,EAChB7G,EAAKgK,QAAUhK,EAAKvE,MAAQ,GAAM,IAAMuE,EAAKvE,MAASuE,EAAKvE,MAEvDkI,EAAOrL,OAAOb,UAChBuI,EAAKgK,QAAiB,IAAN7G,EAAW,GAAKA,EAEhCnD,EAAKgK,QAAU7G,EAInBuG,EAAOlO,KAAKwE,GAId,GAFAhH,EAAM0Q,OAASA,GAEV/F,EAAOrL,OAAOb,YAAckP,IAAeE,EAAY,CAI1D,IAAK,IAHDoD,KAEAC,EAAMT,EAAI,IACLU,EAAM,GAAIA,EAAM,KAAMA,EAAK,CAClC,IAEIC,EAAUX,EAFJS,EAAM9L,KAAKuL,IAAc,EAAVvL,KAAKsK,IAAUyB,EAAM,KAEtBd,EAAK,GAAMA,EAAKE,GACpCc,EAASZ,EAFHS,EAAM9L,KAAKwL,IAAc,EAAVxL,KAAKsK,IAAUyB,EAAM,KAEvBX,EAAK,GAAMF,EAAKE,GAEnCc,GACFpC,KAAMkC,EACN/B,IAAKgC,EACL5O,MAAO0O,EACPN,OAAQC,cAAeM,EAAS,KAAML,aAAcM,EAAQ,OAG9DC,EAAON,QAAUG,EAEjBF,EAASzO,KAAK8O,GAEhBtR,EAAMiR,SAAWA,EAGnBjR,EAAM4N,KAAOxN,EAAMwN,KACnB2D,IACAzB,EAAMnT,IAAI,SAAUyT,EAAa,MAEjC,IAAIoB,EAAczU,EAAQ,GAAGkQ,cAAc,qBACvCwE,EAAeD,EAAYxC,YAAc,GAAM,IACjD0C,EAAgBF,EAAYlC,aAAe,GAAM,IAC/CqC,EAAMlB,GAAK9F,EAAOrL,OAAOb,UAAY,IAAM,KAC3CmT,EAAMnB,EAAI,IACVoB,EAAMpB,EAAI,EAEd3T,QAAQC,QAAQA,EAAQ,GAAGkQ,cAAc,mBAAmBtQ,KAC1DuS,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQH,EAAM,KACdI,UAAYtB,EAAIkB,EAAMtB,EAAM,OAC3BxN,SAAU8K,GAAeE,EAAoB,GAAP,MAEzC/Q,QAAQC,QAAQA,EAAQ,GAAGkQ,cAAc,qBAAqBtQ,KAE5DuS,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQF,EAAM,KACdG,UAAYtB,EAAImB,EAAMvB,EAAM,OAC3BxN,SAAS8K,EAAa,KAAO,IAEhC7Q,QAAQC,QAAQA,EAAQ,GAAGkQ,cAAc,qBAAqBtQ,KAE5DuS,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQD,EAAM,KACdE,UAAYtB,EAAIoB,EAAMxB,EAAM,OAC3BxN,SAASgL,EAAa,KAAO,IAEhC/Q,QAAQC,QAAQyU,GAAa7U,KAC3BuS,KAAOuB,EAAIJ,EAAKE,EAAKkB,EAAe,KACpCM,UAAYtB,EAAKF,EAAK,EAAMmB,EAAe,OAE7CM,KAGEA,EAAe,WACjB,IAAIjL,EAAQ4D,EAAOzF,uBACfiF,EAAIpD,EAAMC,OACVtE,EAAIqE,EAAMzB,SACV2M,EAAIlL,EAAMxB,SAEd2M,EAAcpV,QAAQC,QAAQA,EAAQ,GAAGkQ,cAAc,mBAAoB,GAAK9C,GAChF+H,EAAcpV,QAAQC,QAAQA,EAAQ,GAAGkQ,cAAc,qBAAsB,EAAIvK,GACjFwP,EAAcpV,QAAQC,QAAQA,EAAQ,GAAGkQ,cAAc,qBAAsB,EAAIgF,IAG/EC,EAAgB,SAAUtV,EAAIoR,GAChClR,QAAQC,QAAQH,GAAID,KAClBwV,gBAAiB,UAAYnE,EAAM,OACnCoE,iBAAkB,UAAYpE,EAAM,OACpCqE,gBAAiB,UAAYrE,EAAM,OACnCsE,UAAa,UAAYtE,EAAM,UAK/BuD,EAAkB,WACpB,IAAI1T,EAAO8M,EAAOzF,uBACdqN,EAAM5H,EAAOrL,OAAOb,UAAY,GAAK,GAEvCuB,EAAMwS,aADJ7E,EACmB9P,EAAKyH,SACjBuI,EACYhQ,EAAK0H,SAEL1H,EAAKmJ,OAASuL,GAIvCvS,EAAM8L,OAAO,WACX,IAAI2G,EAAM9H,EAAOzF,uBACjB,OAAOuN,EAAMA,EAAIxU,OAAO,YAAc,IACrC,WACDsT,IACAS,MAGFhS,EAAM0S,QAAU,SAAUxE,GACnBP,GAAeE,EAWRA,GASNK,IAAQlO,EAAMwS,cAAc7H,EAAOlB,KACvCkB,EAAOvM,YAAYmH,OAAO2I,KATtBA,IAAQlO,EAAMwS,cAAc7H,EAAOlB,KACvCkB,EAAOvM,YAAYkH,OAAO4I,GACrBvD,EAAOrL,OAAOtB,QAGb2M,EAAOrL,OAAOJ,QAAQyL,EAAOlB,KAFjCkB,EAAOvM,YAAYmH,OAAO,KAdxB2I,IAAQlO,EAAMwS,cAAiB7H,EAAOrL,OAAOJ,QAAQyL,EAAOlB,KAE5DkB,EAAOrL,OAAOb,UAChBkM,EAAOvM,YAAY4I,KAAK2D,EAAOhD,OAAUuG,EAAM,GAAMA,IAErDvD,EAAOvM,YAAY4I,KAAKkH,GACTvD,EAAOlG,SAAlByJ,GAAO,GAAsB,KACV,MAErBvD,EAAOrL,OAAOJ,QAAQyL,EAAOlB,OAerCzJ,EAAM2S,eAAiB,SAAUC,GAC/B,OAAIjF,EACKhD,EAAOrB,kBAAkBsJ,EAAMnQ,OAC7BoL,EACFlD,EAAOpB,kBAAkBqJ,EAAMnQ,OAE/BkI,EAAOvB,gBAAgBwJ,EAAMnQ,QAIxC,IAAIoQ,EAAY7S,EAAM8L,OAAO,WAC3B,OAAO/O,EAAQ,GAAG+V,iBAAiB,OAAO/H,QACzC,WACD8E,IACAgD,WAKHvW,EAGT,IAAIyW,EAAa/V,QAAUA,OAAOgW,SAAWhW,OAAOgW,QAAQC,KACtC,mBAAXC,QAAyBA,OAAOC,IACzCD,QAAQ,UAAW9W,GACQ,oBAAXe,QAA0BA,QAAUA,OAAOiW,SAA+B,mBAAZrT,UAA4BgT,EAC1G5V,OAAOiW,QAAUhX,EAAqB2D,QAAQ,WAE9C3D,GAAwC,oBAAXiX,OAAyBA,OAASrW,QAAQX","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$$mdSvgRegistry',\r\n function ($mdDialog, $timeout, $compile, $$mdSvgRegistry) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n element.on('focus', openCalendar);\r\n } else {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$$mdSvgRegistry","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","addClass","calendarButton","mdCalendar","after","openCalendarDiag","clear","$setViewValue","$render","focus","on","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$$mdSvgRegistry',\r\n function ($mdDialog, $timeout, $compile, $$mdSvgRegistry) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n element.on('focus', openCalendar);\r\n } else {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 9d777e2..412d377 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.0", + "version": "1.9.1", "keywords": [ "css", "js", @@ -19,7 +19,7 @@ "angular": "^1.6.6", "angular-animate": "^1.6.6", "angular-aria": "^1.6.6", - "angular-material": "^1.1.4", + "angular-material": "^1.1.5", "moment": "^2.18.1" }, "repository": { diff --git a/yarn.lock b/yarn.lock index 4612ee6..805f431 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,7 +39,7 @@ angular-aria@^1.6.6: version "1.6.6" resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.6.tgz#58dd748e09564bc8409f739bde57b35fbee5b6a5" -angular-material@^1.1.4: +angular-material@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.5.tgz#a5450cd8205e15a7691edc389476094cf86d592b" From 3daf5f5d4810f139cd2c6f0e6fe74dd16904fdd3 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 11 Sep 2017 22:29:33 -0400 Subject: [PATCH 096/226] Add show-icon param --- README.md | 23 ++++++++++---------- bower.json | 2 +- index.html | 6 +++--- js/angular-material-datetimepicker.js | 31 +++++++++++++++++---------- package.json | 2 +- 5 files changed, 37 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index aa3b38d..1ecab72 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Originally designed for Bootstrap Material, this has been modified to work with ## Updates | Date | Author | Description | | ---------- | -------- | ------------------------------------------------------ | -| 2017-09-10 | hexadecy | Icon button when in edit-input mode | +| 2017-09-11 | hexadecy | show-icon button, useful when in edit-input mode | | 2017-08-19 | hexadecy | Quick year and month menu selector | | 2017-08-12 | hexadecy | Add optionnal seconds clock | | 2017-07-30 | hexadecy | Highlight only week-days (business days) | @@ -58,21 +58,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example @@ -131,6 +131,7 @@ The directive accepts several attributes which are described below: | **edit-input** | Boolean | true => Input editable and don't show dialog (default: false) | | **click-outside-to-close**| Boolean | true => A click outside close the dialog (default: false) | | **minute-steps** | Number | 1 to 59 minute steps (default: 5) | +| **show-icon** | Boolean | true => Show calendar or time icon (default: false) | ### Set or update params by injecting `mdcDefaultParams` provider To change params like the locale you can use this method instead of attributes for all datetimepicker: @@ -166,7 +167,7 @@ Example usage: }) ``` -The `mdcDateTimeDialog.show` accepts the same options as the directive. +The `mdcDateTimeDialog.show` accepts almost the same options as the directive. ```javascript { diff --git a/bower.json b/bower.json index 0ee190a..f6ac4ba 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.1", + "version": "1.9.2", "keywords": [ "css", "js", diff --git a/index.html b/index.html index 57f530f..1ce654c 100644 --- a/index.html +++ b/index.html @@ -99,7 +99,7 @@

Datetime Pickers

@@ -110,7 +110,7 @@

Datetime Pickers

@@ -121,7 +121,7 @@

Datetime Pickers

diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 25459fa..736a86b 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -128,7 +128,8 @@ autoOk: false, editInput: false, clickOutsideToClose: false, - minuteSteps: 5 + minuteSteps: 5, + showIcon: false, }; return function (params) { @@ -174,7 +175,8 @@ autoOk: '=', editInput: '=', clickOutsideToClose: '=', - minuteSteps: '=' + minuteSteps: '=', + showIcon: '=' }, link: function (scope, element, attrs, ngModel) { var isOn = false; @@ -265,8 +267,14 @@ } if (!scope.editInput) { - element.on('focus', openCalendar); - } else { + if (scope.showIcon) { + element.on('click', openCalendar); + } else { + element.on('focus', openCalendar); + } + } + + if (scope.showIcon) { element.addClass('dtp-no-msclear dtp-input'); var calendarButton = '= 12) picker.meridien = 'PM'; else picker.meridien = 'AM'; } + if (picker.params.autoOk) picker.ok(); // single click - } else if (!secondMode){ - if (val === scope.currentValue) picker.ok(); // double click + } else if (!secondMode) { + if (val === scope.currentValue && !picker.params.seconds) { + picker.ok(); // double click + } picker.currentDate.minute(val); if (!picker.params.seconds) { picker.currentDate.second(0); - } else { - if (picker.params.autoOk) picker.ok(); // single click - } - } else { + } else if (picker.params.autoOk) picker.ok(); // single click + } else { if (val === scope.currentValue) picker.ok(); // double click picker.currentDate.second(val); } diff --git a/package.json b/package.json index 412d377..004c53b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.1", + "version": "1.9.2", "keywords": [ "css", "js", From 16bb19f782e81691024c64421dc11c7fd59dc0e2 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 11 Sep 2017 22:30:04 -0400 Subject: [PATCH 097/226] version 1.9.2 --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 90c0040..7e18d0d 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$$mdSvgRegistry",function(t,a,i,s){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"="},link:function(c,o,d,l){function u(i){if(i.preventDefault(),o.blur(),o.parent().removeClass("md-input-focused"),!m){m=!0;var s={};for(var l in d)c.hasOwnProperty(l)&&!angular.isUndefined(c[l])&&(s[l]=c[l]);s.currentDate=c.currentDate,s.showTodaysDate=p;var u={options:s};t.show({template:n,controller:r,controllerAs:"picker",locals:u,openFrom:o,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:s.clickOutsideToClose||!1,disableParentScroll:s.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){c.currentDate=t?t._d:t,m=!1,e(c.currentDate).isSame(s.currentDate)||a(c.ngChange,0),o.parent().removeClass("md-input-focused")},function(){m=!1,o.parent().removeClass("md-input-focused")})}}var m=!1;c.format||(c.date&&c.time&&c.seconds?c.format="YYYY-MM-DD HH:mm:ss":c.date&&c.time?c.format="YYYY-MM-DD HH:mm":c.date?c.format="YYYY-MM-DD":c.format="HH:mm");var p=null;if(void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(p=e()),angular.isString(c.currentDate)&&""!==c.currentDate&&(c.currentDate=e(c.currentDate,c.format)),l){var h={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(h):h,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(c.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,c.format);return a.isValid()?a._d:void 0}})}if(c.editInput){o.addClass("dtp-no-msclear dtp-input");var f='';o.after(i(f+'')(c)),c.openCalendarDiag=function(e){u(e)},c.clear=function(){l.$setViewValue(null),l.$render(),a(function(){o[0].focus()},0,!1)}}else o.on("focus",u)}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,v=parseInt(i(d,"paddingTop").replace("px",""))||0,g=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var I=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+g),T=M-y*Math.cos(2*Math.PI*(b/12))-k/2-(v+k),w={left:I,top:T,value:r||s?5*b:b,style:{"margin-left":I+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===b?12:b:w.display=b,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+g),V=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(v+k),N={left:E,top:V,value:O,style:{"margin-left":E+"px","margin-top":V+"px"}};N.display=O,A.push(N)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),Y=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*g+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*g+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*g+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+g-Y+"px",marginTop:M-g/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e===t.currentValue&&c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$$mdSvgRegistry",function(t,a,i,s){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"="},link:function(c,o,d,l){function u(i){if(i.preventDefault(),o.blur(),o.parent().removeClass("md-input-focused"),!m){m=!0;var s={};for(var l in d)c.hasOwnProperty(l)&&!angular.isUndefined(c[l])&&(s[l]=c[l]);s.currentDate=c.currentDate,s.showTodaysDate=p;var u={options:s};t.show({template:n,controller:r,controllerAs:"picker",locals:u,openFrom:o,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:s.clickOutsideToClose||!1,disableParentScroll:s.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){c.currentDate=t?t._d:t,m=!1,e(c.currentDate).isSame(s.currentDate)||a(c.ngChange,0),o.parent().removeClass("md-input-focused")},function(){m=!1,o.parent().removeClass("md-input-focused")})}}var m=!1;c.format||(c.date&&c.time&&c.seconds?c.format="YYYY-MM-DD HH:mm:ss":c.date&&c.time?c.format="YYYY-MM-DD HH:mm":c.date?c.format="YYYY-MM-DD":c.format="HH:mm");var p=null;if(void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(p=e()),angular.isString(c.currentDate)&&""!==c.currentDate&&(c.currentDate=e(c.currentDate,c.format)),l){var h={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(h):h,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(c.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,c.format);return a.isValid()?a._d:void 0}})}if(c.editInput||(c.showIcon?o.on("click",u):o.on("focus",u)),c.showIcon){o.addClass("dtp-no-msclear dtp-input");var f='';o.after(i(f+'')(c)),c.openCalendarDiag=function(e){u(e)},c.clear=function(){l.$setViewValue(null),l.$render(),a(function(){o[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,v=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var I=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(v+g),w={left:I,top:T,value:r||s?5*b:b,style:{"margin-left":I+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===b?12:b:w.display=b,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+k),V=M-S*Math.cos(2*Math.PI*(O/12))-g/2-(v+g),N={left:E,top:V,value:O,style:{"margin-left":E+"px","margin-top":V+"px"}};N.display=O,A.push(N)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),Y=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+k-Y+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 38a047d..6f6f28b 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$$mdSvgRegistry","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","addClass","calendarButton","mdCalendar","after","openCalendarDiag","clear","$setViewValue","$render","focus","on","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$$mdSvgRegistry',\r\n function ($mdDialog, $timeout, $compile, $$mdSvgRegistry) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n element.on('focus', openCalendar);\r\n } else {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode){\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else {\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n }\r\n } else { \r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$$mdSvgRegistry","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","mdCalendar","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$$mdSvgRegistry',\r\n function ($mdDialog, $timeout, $compile, $$mdSvgRegistry) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5,\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file From f455cb31d30bccc37a8e28d8dd9161df3a9534e2 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 11 Sep 2017 22:33:23 -0400 Subject: [PATCH 098/226] readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ecab72..ae7b1ad 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ The directive accepts several attributes which are described below: | **edit-input** | Boolean | true => Input editable and don't show dialog (default: false) | | **click-outside-to-close**| Boolean | true => A click outside close the dialog (default: false) | | **minute-steps** | Number | 1 to 59 minute steps (default: 5) | -| **show-icon** | Boolean | true => Show calendar or time icon (default: false) | +| **show-icon** | Boolean | true => Show calendar or time icon before + clear (default: false | ### Set or update params by injecting `mdcDefaultParams` provider To change params like the locale you can use this method instead of attributes for all datetimepicker: From 69828f50823cfd5331bbd6557bf5e0424fee28fa Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 11 Sep 2017 22:33:40 -0400 Subject: [PATCH 099/226] minor --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ae7b1ad..d188228 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ The directive accepts several attributes which are described below: | **edit-input** | Boolean | true => Input editable and don't show dialog (default: false) | | **click-outside-to-close**| Boolean | true => A click outside close the dialog (default: false) | | **minute-steps** | Number | 1 to 59 minute steps (default: 5) | -| **show-icon** | Boolean | true => Show calendar or time icon before + clear (default: false | +| **show-icon** | Boolean | true => Show calendar or time icon before + clear (default: false) | ### Set or update params by injecting `mdcDefaultParams` provider To change params like the locale you can use this method instead of attributes for all datetimepicker: From 05225d3d58fa5a5109188265217d568f3aec9a93 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 14 Sep 2017 23:37:16 -0400 Subject: [PATCH 100/226] Add an example for #16 --- index.html | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/index.html b/index.html index 1ce654c..1216f60 100644 --- a/index.html +++ b/index.html @@ -61,10 +61,22 @@

Datetime Pickers

- + +
+
+ +
+ + +
@@ -73,10 +85,10 @@

Datetime Pickers

-
@@ -85,10 +97,10 @@

Datetime Pickers

-
From f4cc47521889a558b03c415ae9722210e82e2f27 Mon Sep 17 00:00:00 2001 From: abrararies Date: Fri, 22 Sep 2017 17:53:51 +0500 Subject: [PATCH 101/226] Update angular-material-datetimepicker.js --- js/angular-material-datetimepicker.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 736a86b..18522c9 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -291,6 +291,7 @@ scope.clear = function() { ngModel.$setViewValue(null); + scope.currentDate = null; ngModel.$render(); $timeout(function() { element[0].focus(); From 42a6fd3e824bbbaf4cd687353c81b411449eec4a Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 23 Sep 2017 22:32:47 -0400 Subject: [PATCH 102/226] version 1.9.3 --- README.md | 18 +++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- .../angular-material-datetimepicker.min.js.map | 2 +- yarn.lock | 16 ++++++++-------- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index d188228..b79883a 100644 --- a/README.md +++ b/README.md @@ -58,21 +58,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index f6ac4ba..ae6148c 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.2", + "version": "1.9.3", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 7e18d0d..a7befbd 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$$mdSvgRegistry",function(t,a,i,s){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"="},link:function(c,o,d,l){function u(i){if(i.preventDefault(),o.blur(),o.parent().removeClass("md-input-focused"),!m){m=!0;var s={};for(var l in d)c.hasOwnProperty(l)&&!angular.isUndefined(c[l])&&(s[l]=c[l]);s.currentDate=c.currentDate,s.showTodaysDate=p;var u={options:s};t.show({template:n,controller:r,controllerAs:"picker",locals:u,openFrom:o,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:s.clickOutsideToClose||!1,disableParentScroll:s.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){c.currentDate=t?t._d:t,m=!1,e(c.currentDate).isSame(s.currentDate)||a(c.ngChange,0),o.parent().removeClass("md-input-focused")},function(){m=!1,o.parent().removeClass("md-input-focused")})}}var m=!1;c.format||(c.date&&c.time&&c.seconds?c.format="YYYY-MM-DD HH:mm:ss":c.date&&c.time?c.format="YYYY-MM-DD HH:mm":c.date?c.format="YYYY-MM-DD":c.format="HH:mm");var p=null;if(void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(p=e()),angular.isString(c.currentDate)&&""!==c.currentDate&&(c.currentDate=e(c.currentDate,c.format)),l){var h={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(h):h,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(c.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,c.format);return a.isValid()?a._d:void 0}})}if(c.editInput||(c.showIcon?o.on("click",u):o.on("focus",u)),c.showIcon){o.addClass("dtp-no-msclear dtp-input");var f='';o.after(i(f+'')(c)),c.openCalendarDiag=function(e){u(e)},c.clear=function(){l.$setViewValue(null),l.$render(),a(function(){o[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,v=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var I=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(v+g),w={left:I,top:T,value:r||s?5*b:b,style:{"margin-left":I+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===b?12:b:w.display=b,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+k),V=M-S*Math.cos(2*Math.PI*(O/12))-g/2-(v+g),N={left:E,top:V,value:O,style:{"margin-left":E+"px","margin-top":V+"px"}};N.display=O,A.push(N)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),Y=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+k-Y+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$$mdSvgRegistry",function(t,a,i,s){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"="},link:function(c,o,d,l){function u(i){if(i.preventDefault(),o.blur(),o.parent().removeClass("md-input-focused"),!m){m=!0;var s={};for(var l in d)c.hasOwnProperty(l)&&!angular.isUndefined(c[l])&&(s[l]=c[l]);s.currentDate=c.currentDate,s.showTodaysDate=p;var u={options:s};t.show({template:n,controller:r,controllerAs:"picker",locals:u,openFrom:o,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:s.clickOutsideToClose||!1,disableParentScroll:s.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){c.currentDate=t?t._d:t,m=!1,e(c.currentDate).isSame(s.currentDate)||a(c.ngChange,0),o.parent().removeClass("md-input-focused")},function(){m=!1,o.parent().removeClass("md-input-focused")})}}var m=!1;c.format||(c.date&&c.time&&c.seconds?c.format="YYYY-MM-DD HH:mm:ss":c.date&&c.time?c.format="YYYY-MM-DD HH:mm":c.date?c.format="YYYY-MM-DD":c.format="HH:mm");var p=null;if(void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(p=e()),angular.isString(c.currentDate)&&""!==c.currentDate&&(c.currentDate=e(c.currentDate,c.format)),l){var h={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(h):h,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(c.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,c.format);return a.isValid()?a._d:void 0}})}if(c.editInput||(c.showIcon?o.on("click",u):o.on("focus",u)),c.showIcon){o.addClass("dtp-no-msclear dtp-input");var f='';o.after(i(f+'')(c)),c.openCalendarDiag=function(e){u(e)},c.clear=function(){l.$setViewValue(null),c.currentDate=null,l.$render(),a(function(){o[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,v=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var I=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(v+g),w={left:I,top:T,value:r||s?5*b:b,style:{"margin-left":I+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===b?12:b:w.display=b,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+k),V=M-S*Math.cos(2*Math.PI*(O/12))-g/2-(v+g),N={left:E,top:V,value:O,style:{"margin-left":E+"px","margin-top":V+"px"}};N.display=O,A.push(N)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),Y=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+k-Y+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 6f6f28b..b35a76b 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$$mdSvgRegistry","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","mdCalendar","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$$mdSvgRegistry',\r\n function ($mdDialog, $timeout, $compile, $$mdSvgRegistry) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5,\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$$mdSvgRegistry","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","mdCalendar","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"CAAA,WACE,aAEA,SAASA,EAAqBC,GAC9B,IAAIC,EAAa,uBAIbC,GACFC,KAAM,EACNC,KAAM,EACNC,OAAQ,GAGNC,EAAM,SAAUC,EAAIC,GAEtB,OADAD,EAAKE,QAAQC,QAAQH,GACb,qBAAsBI,OAAUA,OAAOC,iBAAiBL,EAAG,IAAIC,GAAQD,EAAGD,IAAIE,IAGpFK,EACF,ouNA4EFJ,QAAQK,OAAOb,GAAa,eACzBc,QAAQ,kCAAmC,mBAAoB,SAAUC,GACxEC,KAAKC,KAAO,WACV,OAAOF,IAAmBG,MAG5BF,KAAKG,iBAAmB,SAAUC,GAChCL,GAAmBG,KAAME,QAG5BC,QAAQ,mBAAoB,WAC3B,IAAIC,GACFC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,SAAS,EACTC,OAAQ,aACRC,QAAS,KACTC,QAAS,KACTC,YAAa,KACbZ,KAAMR,OAAOqB,UAAUC,cAAgBtB,OAAOqB,UAAUE,UAAY,KACpEC,UAAW,EACXC,WAAW,EACXC,WAAY,SACZC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,UAAW,QACXC,gBACAC,UAAU,EACVC,qBAAqB,EACrBC,QAAQ,EACRC,WAAW,EACXC,qBAAqB,EACrBC,YAAa,EACbC,UAAU,GAGZ,OAAO,SAAUC,GACf,GAAIA,EACF,IAAK,IAAIC,KAAKD,EACR3B,EAAe6B,eAAeD,IAAMD,EAAOE,eAAeD,KAC5D5B,EAAe4B,GAAKD,EAAOC,IAKjC,OAAO5B,KAGV8B,UAAU,qBAAsB,YAAa,WAAY,WAAY,kBACpE,SAAUC,EAAWC,EAAUC,EAAUC,GAEvC,OACEC,SAAU,IACVC,QAAS,UACTC,OACE7B,YAAa,WACb8B,SAAU,IACVpC,KAAM,IACND,KAAM,IACNE,QAAS,IACTC,QAAS,IACTE,QAAS,IACTC,QAAS,IACTY,aAAc,IACdC,SAAU,IACVP,UAAW,IACXD,UAAW,IACXP,OAAQ,IACRS,WAAY,IACZC,OAAQ,IACRnB,KAAM,IACNoB,OAAQ,IACRC,OAAQ,IACRsB,eAAgB,IAChBrB,UAAW,IACXG,oBAAqB,IACrBC,OAAQ,IACRC,UAAW,IACXC,oBAAqB,IACrBC,YAAa,IACbC,SAAU,KAEZc,KAAM,SAAUH,EAAOlD,EAASsD,EAAOC,GA0CrC,SAASC,EAAcC,GAIrB,GAHAA,EAAEC,iBACF1D,EAAQ2D,OACR3D,EAAQ4D,SAASC,YAAY,qBACzBC,EAAJ,CAGAA,GAAO,EACP,IAAIC,KACJ,IAAK,IAAItB,KAAKa,EACRJ,EAAMR,eAAeD,KAAO1C,QAAQiE,YAAYd,EAAMT,MACxDsB,EAAQtB,GAAKS,EAAMT,IAGvBsB,EAAQ1C,YAAc6B,EAAM7B,YAC5B0C,EAAQX,eAAiBa,EAEzB,IAAIC,GAAUH,QAASA,GACvBnB,EAAUuB,MACRhE,SAAUA,EACViE,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRK,SAAUvE,EACV4D,OAAQ7D,QAAQC,QAAQwE,SAASC,MACjCC,kBAAkB,EAClBrC,oBAAqB0B,EAAQ1B,sBAAuB,EACpDH,oBAAqB6B,EAAQ7B,sBAAuB,EACpDyC,aAAa,EACbC,UAAU,EACVC,UAAU,IACTC,KAAK,SAAUC,GAChB7B,EAAM7B,YAAc0D,EAAIA,EAAEC,GAAKD,EAC/BjB,GAAO,EAEFxE,EAAO4D,EAAM7B,aAAa4D,OAAOlB,EAAQ1C,cAC5CwB,EAASK,EAAMC,SAAU,GAG3BnD,EAAQ4D,SAASC,YAAY,qBAC5B,WACDC,GAAO,EACP9D,EAAQ4D,SAASC,YAAY,uBAnFjC,IAAIC,GAAO,EACNZ,EAAMhC,SACLgC,EAAMpC,MAAQoC,EAAMnC,MAAQmC,EAAMjC,QACpCiC,EAAMhC,OAAS,sBACNgC,EAAMpC,MAAQoC,EAAMnC,KAC7BmC,EAAMhC,OAAS,mBACNgC,EAAMpC,KACfoC,EAAMhC,OAAS,aAEfgC,EAAMhC,OAAS,SAInB,IAAI+C,EAAe,KASnB,QAR6BiB,IAAzBhC,EAAME,gBAAyD,UAAzBF,EAAME,iBAC9Ca,EAAe3E,KAGbS,QAAQoF,SAASjC,EAAM7B,cAAsC,KAAtB6B,EAAM7B,cAC/C6B,EAAM7B,YAAc/B,EAAO4D,EAAM7B,YAAa6B,EAAMhC,SAGlDqC,EAAS,CACX,IAAI6B,GAAkBC,IAAK,WAAYC,SAAU,KACjD/B,EAAQgC,SAAWhC,EAAQgC,SAAWhC,EAAQgC,SAASC,YAAYJ,GAAkBA,EAErF7B,EAAQkC,YAAYC,KAAK,SAAUC,GACjC,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAItG,EAAOqG,GACf,OAAOC,EAAEC,UAAYD,EAAE1E,OAAOgC,EAAMhC,QAAU,MAGhDqC,EAAQuC,SAASJ,KAAK,SAAUC,GAC9B,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAItG,EAAOqG,EAAOzC,EAAMhC,QAC5B,OAAI0E,EAAEC,UAAkBD,EAAEZ,QAA1B,KA4DJ,GARK9B,EAAMd,YACLc,EAAMX,SACRvC,EAAQ+F,GAAG,QAASvC,GAEpBxD,EAAQ+F,GAAG,QAASvC,IAIpBN,EAAMX,SAAU,CAClBvC,EAAQgG,SAAS,4BACjB,IAAIC,EACJ,wLAGsD/C,EAAMpC,KAAOiC,EAAgBmD,WApR7E,8fAoRyG,2BAG/GlG,EAAQmG,MAAMrD,EAASmD,EADT,gIACuC/C,IAErDA,EAAMkD,iBAAmB,SAAS3C,GAChCD,EAAaC,IAGfP,EAAMmD,MAAQ,WACZ9C,EAAQ+C,cAAc,MACtBpD,EAAM7B,YAAc,KACpBkC,EAAQgD,UACR1D,EAAS,WACP7C,EAAQ,GAAGwG,SACV,GAAG,UAsCjB5F,QAAQ,qBAAsB,YAAa,KAAM,UAAW,mBAAoB,SAAUgC,EAAW6D,EAAIC,EAASpG,GACjH,IAAIqG,EAAgBrG,IAChBsG,EAAmBC,OAAOC,KAAKH,GAuCnC,OArCExC,KAAM,SAAUJ,GACd,IAAIgD,EAAWN,EAAGO,QACLjH,QAAQkH,KAAKN,GAC1B,IAAK,IAAIlE,KAAKsB,GACwB,GAAhC6C,EAAiBM,QAAQzE,IAAYsB,EAAQrB,eAAeD,IACrDsB,EAAQtB,GAIrB,IAAIwB,EAAe,UACYiB,IAA3BnB,EAAQX,gBAA2D,UAA3BW,EAAQX,iBAClDa,EAAe3E,KAEjByE,EAAQX,eAAiBa,EAEzB,IAAIC,GAAUH,QAASA,GAkBvB,OAjBAnB,EAAUuB,MACRhE,SAAUA,EACViE,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRN,OAAQ7D,QAAQC,QAAQwE,SAASC,MACjCC,kBAAkB,EAClBrC,oBAAqB0B,EAAQ1B,sBAAuB,EACpDH,oBAAqB6B,EAAQ7B,sBAAuB,EACpD0C,UAAU,EACVC,UAAU,IACTC,KAAK,SAAUC,GACEA,GAAIA,EAAEC,GACxB+B,EAASI,QAAQpC,EAAIA,EAAEC,GAAKD,IAC3B,WACDgC,EAASK,WAEJL,EAASM,aAQxB,IAAIhD,EAAmB,SAAUiD,EAAQ1E,EAAWtC,GAClDC,KAAKgH,YAAc/H,EAAYC,KAC/Bc,KAAKiH,QAAU5E,EAEfrC,KAAKkH,mBACLlH,KAAKmH,MAAQlI,EACbe,KAAKiC,OAASzC,QAAQkH,KAAK3G,KAC3BC,KAAKoH,SAAW,KAChBpH,KAAKiC,OAASzC,QAAQ6H,OAAOrH,KAAKiC,OAAQjC,KAAKwD,SAE/CxD,KAAKsH,QAq6BL,OAl6BFxD,EAAiByD,SAAW,SAAU,YAAa,oBACnDzD,EAAiB0D,WACfF,KAAM,WACJtH,KAAKyH,SAAWzH,KAAKiC,OAAOzB,OAASR,KAAKiC,OAAO1B,KACjDP,KAAK0H,SAAW1H,KAAKiC,OAAO1B,KAC5BP,KAAK2H,YACL3H,KAAK4H,SAEPC,qBAAsB,WACpB,IAAIC,EAAa9H,KAAKiC,OAAOF,aACzB+F,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAIvH,EAAOP,KAAKc,aAAe/B,IAC3B0B,EAAWqH,EAAaC,KAAKC,MAAMzH,EAAK0H,SAAWH,GACnDrH,GAAW,KACbA,EAAU,GAAKqH,GAEjB,IAAIpH,EAAUH,EAAK2H,SAInB,OAHIxH,GAAW,KACbA,EAAU,IAEL3B,EAAOwB,GAAME,QAAQA,GAASC,QAAQA,IAE/CiH,UAAW,WACT,IAAIQ,EAAOnI,KACPoI,EAAa,SAAUC,EAAOC,GAChC,IAAIC,EAAM,KACV,GAAI/I,QAAQgJ,UAAUH,IAAoB,OAAVA,GAA4B,KAAVA,EAChD,GAAI7I,QAAQoF,SAASyD,GAEjBE,OADiC,IAAxBJ,EAAKlG,OAAa,QAA4C,OAAvBkG,EAAKlG,OAAOtB,OACtD5B,EAAOsJ,EAAOF,EAAKlG,OAAOtB,QAAQ8H,OAAON,EAAKlG,OAAO/B,MAGrDnB,EAAOsJ,GAAOI,OAAON,EAAKlG,OAAO/B,WAEpC,GAAqB,iBAAVmI,EAChBE,EAAMxJ,EAAOsJ,GAAOI,OAAON,EAAKlG,OAAO/B,WAEvC,GAAIV,QAAQkJ,OAAOL,GAAQ,CACzB,IAAIM,EAAIN,EAAMO,UACdL,EAAMxJ,EAAO4J,EAAG,KAAKF,OAAON,EAAKlG,OAAO/B,WAC/BmI,EAAMQ,mBACfN,EAAMF,QAKVE,EAAMD,EAER,OAAOC,GAGTvI,KAAKc,YAAcsH,EAAWpI,KAAKiC,OAAOnB,YAAa/B,KACvDiB,KAAKc,YAAcd,KAAK6H,uBACxB7H,KAAKY,QAAUwH,EAAWpI,KAAKiC,OAAOrB,SACtCZ,KAAKa,QAAUuH,EAAWpI,KAAKiC,OAAOpB,SACtCb,KAAKyB,aAAezB,KAAKiC,OAAOR,aAAaqH,IAAI,SAAUH,GACzD,OAAO5J,EAAO4J,GAAGhI,OAAO,kBAE1BX,KAAK+I,WAAW/I,KAAKc,aACrBd,KAAK0B,SAAW1B,KAAKiC,OAAOP,UAE9BsH,SAAU,WACRhJ,KAAKgH,YAAc/H,EAAYC,MAEjC+J,UAAW,WACTjJ,KAAKgH,YAAc/H,EAAYE,MAEjC+J,YAAa,WACXlJ,KAAKgH,YAAc/H,EAAYG,QAEjC+J,YAAa,WACXnJ,KAAKgH,YAAc/H,EAAYmK,QAEjCC,eAAgB,SAAU9I,EAAM+I,EAAWC,GACzC,IAAIC,GAAU,EAEd,QAA6B,IAAlBxJ,KAAY,SAAsC,OAAjBA,KAAKY,QAAkB,CACjE,IAAI6I,EAAW1K,EAAOiB,KAAKY,SACvB8I,EAAQ3K,EAAOwB,GAEd+I,GAAcC,IACjBE,EAASE,KAAK,GACdF,EAASxB,OAAO,GAEhByB,EAAMC,KAAK,GACXD,EAAMzB,OAAO,IAGfwB,EAASvB,OAAO,GAChBwB,EAAMxB,OAAO,GACbuB,EAASG,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAM/I,OAAO,OAASkJ,SAASJ,EAAS9I,OAAO,OANnE+I,EAAMzB,OAAO,GACbwB,EAASxB,OAAO,GAEhBuB,EAAWK,SAASH,EAAM/I,OAAO,OAASkJ,SAASJ,EAAS9I,OAAO,OAOvE,OAAO6I,GAETM,gBAAiB,SAAUvJ,EAAMwJ,EAAWR,GAC1C,IAAIC,GAAU,EAEd,QAA6B,IAAlBxJ,KAAY,SAAsC,OAAjBA,KAAKa,QAAkB,CACjE,IAAImJ,EAAWjL,EAAOiB,KAAKa,SACvB6I,EAAQ3K,EAAOwB,GAEdwJ,GAAcR,IACjBS,EAASL,KAAK,GACdK,EAAS/B,OAAO,GAEhByB,EAAMC,KAAK,GACXD,EAAMzB,OAAO,IAGf+B,EAAS9B,OAAO,GAChBwB,EAAMxB,OAAO,GACb8B,EAASJ,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAM/I,OAAO,OAASkJ,SAASG,EAASrJ,OAAO,OANnE+I,EAAMzB,OAAO,GACb+B,EAAS/B,OAAO,GAEhBuB,EAAWK,SAASH,EAAM/I,OAAO,OAASkJ,SAASG,EAASrJ,OAAO,OAOvE,OAAO6I,GAETS,iBAAkB,SAAU1J,GAC1B,IAAI2J,EAAM3J,EAAKI,OAAO,gBACtB,QAAIX,KAAKyB,aAAakF,QAAQuD,IAAQ,IAKxCC,UAAW,SAAS5J,GAClB,OAAIP,KAAK0B,UACHnB,EAAK6J,cAAgB,GAO7BrB,WAAY,SAAUxI,GAChBA,IACFP,KAAKc,YAAc/B,EAAOwB,GACrBP,KAAKqJ,eAAerJ,KAAKc,eAC5Bd,KAAKc,YAAc/B,EAAOiB,KAAKY,UAG5BZ,KAAK8J,gBAAgB9J,KAAKc,eAC7Bd,KAAKc,YAAc/B,EAAOiB,KAAKa,UAEjCb,KAAKc,YAAY2H,OAAOzI,KAAKiC,OAAO/B,MACpCF,KAAKqK,cAAgBtL,EAAOiB,KAAKc,aACjCd,KAAKoH,SAAWpH,KAAKc,YAAY6I,QAAU,GAAK,KAAO,OAG3DW,KAAM,WACJ,MAAyB,OAAlBtK,KAAKoH,UAEdmD,eAAgB,SAAUC,GACT,IAAXA,GAAgBxK,KAAKyK,sBACvBzK,KAAK+I,WAAW/I,KAAKc,YAAY4J,IAAIF,EAAQ,WAG/B,IAAZA,GAAiBxK,KAAK2K,0BACxB3K,KAAK+I,WAAW/I,KAAKc,YAAY4J,IAAIF,EAAQ,WAGjDI,cAAe,SAAUJ,GACR,IAAXA,GAAgBxK,KAAK6K,qBACvB7K,KAAK+I,WAAW/I,KAAKc,YAAY4J,IAAIF,EAAQ,UAG/B,IAAZA,GAAiBxK,KAAK8K,yBACxB9K,KAAK+I,WAAW/I,KAAKc,YAAY4J,IAAIF,EAAQ,UAGjDO,SAAU,SAAU5E,EAAS6E,GAC3B7E,EAAQ8E,KAAKD,IAEfE,gBAAiB,WAIf,IAAK,IAHDC,KACAzB,EAAQ3K,EAAOiB,KAAKc,aAEfuE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAI+F,EAAW1B,EAAM2B,MAAMhG,GACvBrF,KAAKqJ,eAAe+B,EAASE,MAAM,WAAatL,KAAK8J,gBAAgBsB,EAASG,QAAQ,WACxFJ,EAAUhG,KAAKiG,EAASzK,OAAO,SAGnC,OAAOwK,GAETK,YAAa,SAAUH,GACrBrL,KAAK+I,WAAW/I,KAAKc,YAAYuK,MAAMA,KAEzCI,eAAgB,WACd,IAAIhC,EAAUO,EAAU0B,EAAKC,EAAWC,KACxClC,EAAQ1J,KAAKc,YAAY+K,YAEI,IAAlB7L,KAAY,SAAsC,OAAjBA,KAAKY,UAC/C6I,EAAW1K,EAAOiB,KAAKY,SAASiL,aAEL,IAAlB7L,KAAY,SAAsC,OAAjBA,KAAKa,UAC/CmJ,EAAWjL,EAAOiB,KAAKa,SAASgL,QAG9B7B,GAAYP,GACdiC,EAAM1B,EAAWP,EACjBkC,EAAYlC,GACHA,GACTiC,EAAM,IACNC,EAAYlC,GAGZkC,EAFS3B,EAEGA,GADZ0B,EAAM,IAIMhC,GADZgC,EAAM,IACkB,EAG1B,IAAK,IAAIxJ,EAAE,EAAGA,EAAIwJ,EAAKxJ,IACrB0J,EAASzG,KAAKwG,EAAUzJ,GAE1B,OAAO0J,GAETE,WAAY,SAAUD,GACpB7L,KAAK+I,WAAW/I,KAAKc,YAAY+K,KAAKA,KAExClB,uBAAwB,WACtB,OAAO3K,KAAKqK,eAAiBrK,KAAKqJ,eAAetK,EAAOiB,KAAKqK,eAAekB,QAAQ,UAAU,GAAO,IAEvGd,mBAAoB,WAClB,OAAOzK,KAAKqK,eAAiBrK,KAAK8J,gBAAgB/K,EAAOiB,KAAKqK,eAAeiB,MAAM,UAAU,GAAO,IAEtGR,sBAAuB,WACrB,OAAO9K,KAAKqK,eAAiBrK,KAAKqJ,eAAetK,EAAOiB,KAAKqK,eAAekB,QAAQ,SAAS,GAAO,IAEtGV,kBAAmB,WACjB,OAAO7K,KAAKqK,eAAiBrK,KAAK8J,gBAAgB/K,EAAOiB,KAAKqK,eAAeiB,MAAM,SAAS,GAAO,IAErGS,gBAAiB,SAAUpC,GACzB,IAAID,EAAQ3K,EAAOiB,KAAKc,aAMxB,OALId,KAAKiC,OAAOd,UACduI,EAAMC,KAAK3J,KAAKgM,aAAarC,IAAO1B,OAAO,GAAGC,OAAO,GAErDwB,EAAMC,KAAKA,GAAM1B,OAAO,GAAGC,OAAO,GAE7BlI,KAAKqJ,eAAeK,GAAO,GAAM,IAAU1J,KAAK8J,gBAAgBJ,GAAO,GAAM,IAEtFuC,kBAAmB,SAAUhE,GAC3B,IAAIyB,EAAQ3K,EAAOiB,KAAKc,aAExB,OADA4I,EAAMzB,OAAOA,GAAQC,OAAO,GACrBlI,KAAKqJ,eAAeK,GAAO,GAAM,IAAS1J,KAAK8J,gBAAgBJ,GAAO,GAAM,IAErFwC,kBAAmB,SAAUhE,GAC3B,OAAO,GAETN,MAAO,WACL5H,KAAKgH,YAAc/H,EAAYC,KAC3Bc,KAAKiC,OAAO1B,KACdP,KAAKgJ,WAEDhJ,KAAKiC,OAAOzB,MACdR,KAAKiJ,aAIXkD,MAAO,WACL,IAAIrE,EAAa9H,KAAKiC,OAAOF,YACzBxB,EAAOxB,IACP0B,EAAWqH,EAAaC,KAAKC,MAAMzH,EAAK0H,SAAWH,GACnDrH,GAAW,KACbA,EAAU,GAAKqH,GAEjB9H,KAAK+I,WAAWhK,EAAOwB,GAAME,QAAQA,KAEvC2L,GAAI,WACF,OAAQpM,KAAKgH,aACX,KAAK/H,EAAYC,MACU,IAArBc,KAAKiC,OAAOzB,KACdR,KAAKiJ,YAELjJ,KAAKqM,MAAK,GAEZ,MACF,KAAKpN,EAAYE,MACa,IAAxBa,KAAKiC,OAAOxB,QACdT,KAAKkJ,cAELlJ,KAAKqM,MAAK,GAEZ,MACF,KAAKpN,EAAYG,QACa,IAAxBY,KAAKiC,OAAOvB,QACdV,KAAKmJ,cAELnJ,KAAKqM,MAAK,GAEZ,MACF,KAAKpN,EAAYmK,OACfpJ,KAAKqM,MAAK,KAIhBC,OAAQ,WACN,GAAItM,KAAKiC,OAAOzB,KACd,OAAQR,KAAKgH,aACX,KAAK/H,EAAYC,KACfc,KAAKqM,OACL,MACF,KAAKpN,EAAYE,KACXa,KAAKiC,OAAO1B,KACdP,KAAKgJ,WAGLhJ,KAAKqM,OAEP,MACF,KAAKpN,EAAYG,OACfY,KAAKiJ,YACL,MACF,KAAKhK,EAAYmK,OACfpJ,KAAKkJ,mBAKTlJ,KAAKqM,QAGTE,kBAAmB,WACjBvM,KAAKqK,cAAcmC,SAAS,EAAG,WAEjCC,iBAAkB,WAChBzM,KAAKqK,cAAcK,IAAI,EAAG,WAE5BgC,iBAAkB,WAChB1M,KAAKqK,cAAcmC,SAAS,EAAG,UAEjCG,gBAAiB,WACf3M,KAAKqK,cAAcK,IAAI,EAAG,UAE5BkC,SAAU,YACJ5M,KAAK+L,gBAAgB,IAAM/L,KAAK+L,gBAAgB,OAC9C/L,KAAKc,YAAY6I,QAAU,IAC7B3J,KAAK+I,WAAW/I,KAAKc,YAAY0L,SAAS,GAAI,UAE3CxM,KAAK+L,gBAAgB/L,KAAKc,YAAY6I,SACzC3J,KAAK+I,WAAW/I,KAAKc,YAAY6I,KAAK3J,KAAKY,QAAQ+I,SAEhD3J,KAAKiM,kBAAkBjM,KAAKc,YAAYmH,WAC3CjI,KAAK+I,WAAW/I,KAAKc,YAAYmH,OAAOjI,KAAKY,QAAQqH,aAI3D4E,SAAU,YACJ7M,KAAK+L,gBAAgB,KAAO/L,KAAK+L,gBAAgB,OAC/C/L,KAAKc,YAAY6I,OAAS,IAC5B3J,KAAK+I,WAAW/I,KAAKc,YAAY4J,IAAI,GAAI,UAEtC1K,KAAK+L,gBAAgB/L,KAAKc,YAAY6I,SACzC3J,KAAK+I,WAAW/I,KAAKc,YAAY6I,KAAK3J,KAAKa,QAAQ8I,SAEhD3J,KAAKiM,kBAAkBjM,KAAKc,YAAYmH,WAC3CjI,KAAK+I,WAAW/I,KAAKc,YAAYmH,OAAOjI,KAAKa,QAAQoH,aAI3D+D,aAAc,SAAUc,GACtB,IAAItD,EAAUsD,EAId,OAHKA,EAAI,IAAO9M,KAAKsK,SACnBd,GAAW,IAENA,GAET6C,KAAM,SAAUU,GACVA,EACF/M,KAAKiH,QAAQoF,KAAKrM,KAAKc,aAEvBd,KAAKiH,QAAQqF,WAKnB9M,QAAQK,OAAOb,GACZoD,UAAU,6BACT,WAOE,IAAK,IAHH4K,EAA4C,KADjC,IAAIC,MAAOC,cAAgB,GADzB,KAE0B,GAEvCC,KACOjL,EAAI,EAAGA,EAAI8K,EAAe9K,IACjCiL,EAAOhI,KAAKjD,GAGd,IAAIkL,EAAoB,SAAU7M,EAAM8M,GAItC,OAHAA,EAAMA,GAAY,EAGW,IAFlB9M,EAAKsL,OAXH,MAYDtL,EAAK8K,QAC0B,EAAMgC,GAGnD,OACE5K,SAAU,IACVE,OACE2K,OAAQ,IACR/M,KAAM,KAER4D,kBAAkB,EAClBJ,aAAc,MACdF,YAAa,SAAU,SAAUkD,GAC/B,IAAqBuG,EAAjBC,EAAWvN,KAEfA,KAAKwN,QAAU,WAIb,IAAK,IADDC,KACKvL,GAHToL,EAAStN,KAAKsN,QAGMrL,OAAOf,UAAWuM,EAAKC,OAAS,EAAGxL,IACjDA,EAAI,IACNA,EAAI,GAENuL,EAAKtI,KAAKjD,EAAEyL,YAId,GAFAJ,EAASK,KAAOH,EAEXH,EAAOzM,SAAYyM,EAAO1M,QAExB,CACL,IAAIyM,EAAMC,EAAO1M,QAAUwM,EAAkBE,EAAO1M,SAAW,EAC3DiN,EAAOP,EAAOzM,QAAWuM,EAAkBE,EAAOzM,SAAW,EAAKmM,EACtEO,EAASO,OAASX,EAAOY,MAAMV,EAAKQ,QAJpCN,EAASO,OAASX,EAOpBI,EAASS,SAAWZ,EAAkBE,EAAOxM,aAAeyM,EAASO,OAAO,IAGhD,IAA1BtO,QAAQyO,QAAQC,OAAe1O,QAAQyO,QAAQE,MAAQ,GACzDnO,KAAKwN,UAGPD,EAASa,eAAiB,SAAUC,GAClC,IAAIhD,GAAUgD,EAAQ,GAAK,IAAO,GAC9BxC,EAxDK,KAwDa9D,KAAKuG,MAAMD,EAAQ,IACrCE,EAAWxP,EAAOuO,EAAOxM,aAAa+K,KAAKA,GAAMR,MAAMA,GAC3D,OAAOmD,EAAsBD,IAG/BxH,EAAO0H,OAAO,WACZ,OAAOnB,EAAOxM,YAAcwM,EAAOxM,YAAYH,OAAO,WAAa,IAClE,SAAU+N,EAAMC,GACjB,GAAID,GAAQC,EAAM,CAChB,IAAIC,EAAQ7P,EAAO2P,EAAM,WACrBrB,EAAMC,EAAO1M,QAAUwM,EAAkBE,EAAO1M,SAAW,EAC3DyN,EAAQjB,EAAkBwB,EAAOvB,GACjCE,EAASS,UAAYK,IACvBd,EAASS,SAAWK,MAK1B,IAAIG,EAAwB,SAAUjO,GACpC,IAAI8K,KACJ,GAAa,OAAT9K,EAAe,CACjB8K,EAAM9L,KAAOgB,EAAKI,OAAO,aACzB,IAAIkO,EAAe9P,EAAOwB,GAAMkI,OAAO6E,EAAOrL,OAAO/B,MAAMqL,QAAQ,SAC9D5B,KAAKpJ,EAAKoJ,QACV1B,OAAO1H,EAAK0H,UACb6G,EAAUD,EAAalO,OAAO,KAClC0K,EAAMoC,QACN,IAAK,IAAIvL,EAAI2M,EAAatO,OAAQ2B,GAAK2M,EAAaE,cAAe7M,IAAK,CACtE,GAAIA,IAAM2M,EAAatO,OAAQ,CAC7B,IAAIyO,EAAQzB,EAASK,KAAKjH,QAAQmI,EAAQnB,YAC1C,GAAIqB,EAAQ,EACV,IAAK,IAAIrG,EAAI,EAAGA,EAAIqG,EAAOrG,IACzB0C,EAAMoC,KAAKtI,KAAK,GAItBkG,EAAMoC,KAAKtI,KAAKpG,EAAO8P,GAAcpG,OAAO6E,EAAOrL,OAAO/B,MAAMK,KAAK2B,IAIvE,IAAK,IADgB+M,KAAcC,EAASnH,KAAKoH,KAAK9D,EAAMoC,KAAKC,OAA/C,GACT0B,EAAI,EAAGA,EAAIF,EAAQE,IAC1BH,EAAQ9J,KAAKkG,EAAMoC,KAAKM,MAFR,EAEcqB,EAFd,GAEgCA,EAAI,KAGtD,OADA/D,EAAMoC,KAAOwB,EACN5D,IAKXkC,EAAS8B,MAAQ,SAAUnN,GACzB,OAAOnD,EAAO8K,SAAS3H,GAAI,KACxBuG,OAAO6E,EAAOrL,OAAO/B,MACrBS,OAAO,MACP2O,UAAU,EAAG,IAGlB/B,EAASgC,UAAY,SAAUhP,GAC7B,OAAO+M,EAAOjE,eAAetK,EAAOwB,IAAO,GAAO,IAChD+M,EAAOxD,gBAAgB/K,EAAOwB,IAAO,GAAO,IAC5C+M,EAAOnD,UAAUpL,EAAOwB,KACxB+M,EAAOrD,iBAAiBlL,EAAOwB,KAGnCgN,EAASxE,WAAa,SAAUxI,GAC9B,GAAIA,EAAM,CACR,GAAIgN,EAASiC,cAAcjP,GACzB,OAAO+M,EAAOlB,KAEhBkB,EAAOvE,WAAWhK,EAAOwB,GAAMoJ,KAAK4D,EAAShN,KAAKoJ,QAAQ1B,OAAOsF,EAAShN,KAAK0H,WAC3EqF,EAAOrL,OAAOL,QAChB0L,EAAOlB,OAKbmB,EAASiC,cAAgB,SAAUnK,GACjC,OAAOA,GAAKkI,EAAShN,KAAKA,SAAW8E,EAAE9E,QAAUgN,EAAShN,KAAK8K,UAAYhG,EAAEgG,SAAWkC,EAAShN,KAAKsL,SAAWxG,EAAEwG,QAGrH0B,EAASkC,eAAiB,SAAUpK,GAClC,IAAI8G,EAAQoB,EAASD,OAAO9J,QAAQX,eACpC,QAAKsJ,IAIE9G,GAAK8G,EAAM5L,SAAW8E,EAAE9E,QAAU4L,EAAMd,UAAYhG,EAAEgG,SAAWc,EAAMN,SAAWxG,EAAEwG,WAG/FjM,SACA,+PAOLwC,UAAU,kCAAmC,WAC5C,SAAUG,GACR,IAAImN,EAAuB,SAAUjQ,EAASkD,GAC5C,IAAIgN,EAAQnQ,QAAQC,QAAQA,EAAQ,GAAGmQ,cAAc,UACjDrC,EAAW5K,EAAMkN,IAEjBC,KAF8BnN,EAAM0I,MAIlCoC,KAAKsC,QAAQ,SAAUrO,EAAUQ,GACrC4N,EAAU3K,KAAK,QACfzD,EAASqO,QAAQ,SAAUC,EAASZ,GAElC,GADAU,EAAU3K,KAAK,QACX6K,EACF,GAAIzC,EAASgC,UAAUS,GAAU,CAE/B,IAAIC,EAAW,iBAAqB/N,EAAI,KAAOkN,EAAI,IAEnDU,EAAU3K,KAAK,eAAiB6K,EAAQrP,OAAO,cAAgB,4FAA8FsP,EAAW,iCAAmCA,EAAW,gCAAkCA,EAAW,OACnQH,EAAU3K,KAAK6K,EAAQrP,OAAO,MAC9BmP,EAAU3K,KAAK,aAEf2K,EAAU3K,KAAK,iCACf2K,EAAU3K,KAAK6K,EAAQrP,OAAO,MAC9BmP,EAAU3K,KAAK,WAGnB2K,EAAU3K,KAAK,WAEjB2K,EAAU3K,KAAK,WAGjBwK,EAAMO,KAAKJ,EAAUK,KAAK,KAC1B5N,EAASoN,GAAOhN,IAGlB,OACEA,OACEyN,IAAK,KAEP1N,QAAS,6BACTD,SAAU,KACV7C,SACE,gPAUFkD,KAAM,SAAUH,EAAOlD,EAASsD,EAAOwK,GACrC5K,EAAMkN,IAAMtC,EACZ5K,EAAM0I,MAAQkC,EAASa,eAAevE,SAASlH,EAAMyN,MACrDV,EAAqBjQ,EAASkD,GAC9BA,EAAM8L,OAAO,WACX,OAAO9L,EAAMyN,KACZ,SAAUA,EAAKC,GACZD,GAAOC,IACT1N,EAAM0I,MAAQkC,EAASa,eAAevE,SAASlH,EAAMyN,MACrDV,EAAqBjQ,EAASkD,WAS5CnD,QAAQK,OAAOb,GACZoD,UAAU,gBAAiB,WAC1B,OACEU,KAAM,SAAUH,EAAOrD,GACrBA,EAAGkG,GAAG,QAAS,SAAUtC,GACvBA,EAAEC,uBAKZ3D,QAAQK,OAAOb,GACZoD,UAAU,0BAA2B,WACpC,SAAUE,GAkBR,OACEG,SAAU,IACV7C,SAjBA,ssCAkBAkD,KAAM,SAAUH,EAAOlD,EAASsD,GAC9B,IAAIuN,EAA4B,YAAfvN,EAAMwN,KACnBC,EAA4B,YAAfzN,EAAMwN,KACnBjD,EAAS3K,EAAM2K,OAEfmD,EAAgBxM,SAAS2L,cAAc,iBAEvCc,EAAgB,SAASC,EAAKC,GAChC,IAAIC,EAAM,EAEV,GAAY,KADZF,EAAMA,GAAO,IAAM,EAAIA,GACR,CACb,IAAIG,EAAUR,GAAYE,EAAa,GAAK,GAC5CK,EAAM9I,KAAKC,MAAM8I,EAAU,IAAMH,GAGnC,GAAIL,EAAY,CACd,IAAIxI,EAAawF,EAAOrL,OAAOF,aAC3B+F,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAIrH,EAAWqH,EAAaC,KAAKC,MAAM6I,EAAM/I,GACzCrH,GAAW,KACbA,EAAU,GAAKqH,GAEjBwF,EAAOxM,YAAYmH,OAAOxH,QAChB+P,GAKNK,GAAO,KAAIA,EAAM,GACrBvD,EAAOxM,YAAYoH,OAAO2I,KALd,KAARA,IAAYA,EAAM,GACjBvD,EAAOrL,OAAOd,YAAWmM,EAAOlG,SAAWwJ,EAAM,GAAK,KAAO,MAClEtD,EAAOxM,YAAY6I,KAAK2D,EAAOhD,OAASuG,EAAM,GAAKA,KAQnDE,EAAoB,iBAAkBrR,OAC1CsR,GACEC,aAAeF,EAAmB,aAAe,YACjDG,WAAeH,EAAmB,WAAe,UACjDI,aAAeJ,EAAmB,YAAe,aAG/CK,EAAc,SAASlO,GACzBA,EAAEC,iBAEF,IAAIkO,EAAgBnO,EAAEoO,cAAcC,QAAQ,OAC5CC,EAAaH,EAAcI,iBAAiB,GAExCV,IAAkB7N,EAAIA,EAAEwO,eAAe,IAE3C,IAAI/I,EAAM0I,EAAcM,YAAc,GAAMzO,EAAE0O,MAAQJ,EAAWK,MAC7DC,EAAM5O,EAAE6O,MAAQP,EAAWQ,IAAQX,EAAcY,aAAe,EAEhErB,EAAM7I,KAAKmK,KAAKnK,KAAKoK,IAAIxJ,EAAG,GAAKZ,KAAKoK,IAAIL,EAAG,IAC7CnB,EAAM5I,KAAKC,MAAOD,KAAKqK,MAAMzJ,EAAGmJ,IAAM,IAAM/J,KAAKsK,KAErD/P,EAAS,WACPoO,EAAcC,EAAI,IAAKC,MAI3BnR,EAAQ+F,GAAGwL,EAAOC,aAAc,WAC7BxR,EAAQ+F,GAAGwL,EAAOG,aAAcC,KAGnC3R,EAAQ+F,GAAGwL,EAAOE,WAAY,WAC1BzR,EAAQ6S,IAAItB,EAAOG,gBAGvBxO,EAAM4P,IAAI,WAAY,WAClB9S,EAAQ6S,IAAItB,EAAOG,aAAcC,KAGrC,IAAIoB,EAAO,WACT,IAAIC,EAAQjT,QAAQC,QAAQA,EAAQ,GAAGmQ,cAAc,sBACjD8C,EAAWlT,QAAQC,QAAQgR,EAAcb,cAAc,gBAEvD+C,EAAIlC,EAAcb,cAAc,gBAAgB+B,YAChDiB,EAAK/I,SAASxK,EAAIqT,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEC,EAAKjJ,SAASxK,EAAIqT,EAAU,gBAAgBG,QAAQ,KAAM,MAAQ,EAIlEE,EAAcJ,IAHT9I,SAASxK,EAAIoT,EAAO,cAAcI,QAAQ,KAAM,MAAQ,IACxDhJ,SAASxK,EAAIoT,EAAO,eAAeI,QAAQ,KAAM,MAAQ,GAEjCD,EAAKE,GACtCL,EAAMpT,IAAI,QAAS,EAAe,MAYlC,IAAK,IAVD2T,EAAKnJ,SAASxK,EAAIqT,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEI,EAAKpJ,SAASxK,EAAIqT,EAAU,cAAcG,QAAQ,KAAM,MAAQ,EAChEK,EAAKrJ,SAASxK,EAAIoT,EAAO,cAAcI,QAAQ,KAAM,MAAQ,EAC7DM,EAAKtJ,SAASxK,EAAIoT,EAAO,aAAaI,QAAQ,KAAM,MAAQ,EAE5DO,EAAKL,EAAa,EAClB3D,EAAIgE,EAAI,IAERC,KAEKvG,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAEI+E,EAAQuB,EAFJhE,EAAIrH,KAAKuL,IAAc,EAAVvL,KAAKsK,IAAUvF,EAAI,KAEpBkG,EAAK,GAAMA,EAAKE,GAChClB,EAAOoB,EAFHhE,EAAIrH,KAAKwL,IAAc,EAAVxL,KAAKsK,IAAUvF,EAAI,KAErBqG,EAAK,GAAMF,EAAKE,GAE/BxJ,GACFkI,KAAMA,EACNG,IAAKA,EACL5M,MAAQkL,GAAYE,EAAkB,EAAJ1D,EAASA,EAC3C0G,OAAQC,cAAe5B,EAAO,KAAM6B,aAAc1B,EAAM,OAGtD1B,GAAcE,EAChB7G,EAAKgK,QAAUhK,EAAKvE,MAAQ,GAAM,IAAMuE,EAAKvE,MAASuE,EAAKvE,MAEvDkI,EAAOrL,OAAOd,UAChBwI,EAAKgK,QAAiB,IAAN7G,EAAW,GAAKA,EAEhCnD,EAAKgK,QAAU7G,EAInBuG,EAAOlO,KAAKwE,GAId,GAFAhH,EAAM0Q,OAASA,GAEV/F,EAAOrL,OAAOd,YAAcmP,IAAeE,EAAY,CAI1D,IAAK,IAHDoD,KAEAC,EAAMT,EAAI,IACLU,EAAM,GAAIA,EAAM,KAAMA,EAAK,CAClC,IAEIC,EAAUX,EAFJS,EAAM9L,KAAKuL,IAAc,EAAVvL,KAAKsK,IAAUyB,EAAM,KAEtBd,EAAK,GAAMA,EAAKE,GACpCc,EAASZ,EAFHS,EAAM9L,KAAKwL,IAAc,EAAVxL,KAAKsK,IAAUyB,EAAM,KAEvBX,EAAK,GAAMF,EAAKE,GAEnCc,GACFpC,KAAMkC,EACN/B,IAAKgC,EACL5O,MAAO0O,EACPN,OAAQC,cAAeM,EAAS,KAAML,aAAcM,EAAQ,OAG9DC,EAAON,QAAUG,EAEjBF,EAASzO,KAAK8O,GAEhBtR,EAAMiR,SAAWA,EAGnBjR,EAAM4N,KAAOxN,EAAMwN,KACnB2D,IACAzB,EAAMpT,IAAI,SAAU0T,EAAa,MAEjC,IAAIoB,EAAc1U,EAAQ,GAAGmQ,cAAc,qBACvCwE,EAAeD,EAAYxC,YAAc,GAAM,IACjD0C,EAAgBF,EAAYlC,aAAe,GAAM,IAC/CqC,EAAMlB,GAAK9F,EAAOrL,OAAOd,UAAY,IAAM,KAC3CoT,EAAMnB,EAAI,IACVoB,EAAMpB,EAAI,EAEd5T,QAAQC,QAAQA,EAAQ,GAAGmQ,cAAc,mBAAmBvQ,KAC1DwS,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQH,EAAM,KACdI,UAAYtB,EAAIkB,EAAMtB,EAAM,OAC3BvN,SAAU6K,GAAeE,EAAoB,GAAP,MAEzChR,QAAQC,QAAQA,EAAQ,GAAGmQ,cAAc,qBAAqBvQ,KAE5DwS,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQF,EAAM,KACdG,UAAYtB,EAAImB,EAAMvB,EAAM,OAC3BvN,SAAS6K,EAAa,KAAO,IAEhC9Q,QAAQC,QAAQA,EAAQ,GAAGmQ,cAAc,qBAAqBvQ,KAE5DwS,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQD,EAAM,KACdE,UAAYtB,EAAIoB,EAAMxB,EAAM,OAC3BvN,SAAS+K,EAAa,KAAO,IAEhChR,QAAQC,QAAQ0U,GAAa9U,KAC3BwS,KAAOuB,EAAIJ,EAAKE,EAAKkB,EAAe,KACpCM,UAAYtB,EAAKF,EAAK,EAAMmB,EAAe,OAE7CM,KAGEA,EAAe,WACjB,IAAIjL,EAAQ4D,EAAOzF,uBACfiF,EAAIpD,EAAMC,OACVtE,EAAIqE,EAAMzB,SACV2M,EAAIlL,EAAMxB,SAEd2M,EAAcrV,QAAQC,QAAQA,EAAQ,GAAGmQ,cAAc,mBAAoB,GAAK9C,GAChF+H,EAAcrV,QAAQC,QAAQA,EAAQ,GAAGmQ,cAAc,qBAAsB,EAAIvK,GACjFwP,EAAcrV,QAAQC,QAAQA,EAAQ,GAAGmQ,cAAc,qBAAsB,EAAIgF,IAG/EC,EAAgB,SAAUvV,EAAIqR,GAChCnR,QAAQC,QAAQH,GAAID,KAClByV,gBAAiB,UAAYnE,EAAM,OACnCoE,iBAAkB,UAAYpE,EAAM,OACpCqE,gBAAiB,UAAYrE,EAAM,OACnCsE,UAAa,UAAYtE,EAAM,UAK/BuD,EAAkB,WACpB,IAAI3T,EAAO+M,EAAOzF,uBACdqN,EAAM5H,EAAOrL,OAAOd,UAAY,GAAK,GAEvCwB,EAAMwS,aADJ7E,EACmB/P,EAAK0H,SACjBuI,EACYjQ,EAAK2H,SAEL3H,EAAKoJ,OAASuL,GAIvCvS,EAAM8L,OAAO,WACX,IAAI2G,EAAM9H,EAAOzF,uBACjB,OAAOuN,EAAMA,EAAIzU,OAAO,YAAc,IACrC,WACDuT,IACAS,MAGFhS,EAAM0S,QAAU,SAAUxE,GACnBP,GAAeE,EAYRA,GASNK,IAAQlO,EAAMwS,cAAc7H,EAAOlB,KACvCkB,EAAOxM,YAAYoH,OAAO2I,KATtBA,IAAQlO,EAAMwS,cAAiB7H,EAAOrL,OAAOvB,SAC/C4M,EAAOlB,KAETkB,EAAOxM,YAAYmH,OAAO4I,GACrBvD,EAAOrL,OAAOvB,QAER4M,EAAOrL,OAAOL,QAAQ0L,EAAOlB,KADtCkB,EAAOxM,YAAYoH,OAAO,KAjBxB2I,IAAQlO,EAAMwS,cAAiB7H,EAAOrL,OAAOL,QAAQ0L,EAAOlB,KAE5DkB,EAAOrL,OAAOd,UAChBmM,EAAOxM,YAAY6I,KAAK2D,EAAOhD,OAAUuG,EAAM,GAAMA,IAErDvD,EAAOxM,YAAY6I,KAAKkH,GACTvD,EAAOlG,SAAlByJ,GAAO,GAAsB,KACV,MAGrBvD,EAAOrL,OAAOL,QAAQ0L,EAAOlB,OAerCzJ,EAAM2S,eAAiB,SAAUC,GAC/B,OAAIjF,EACKhD,EAAOrB,kBAAkBsJ,EAAMnQ,OAC7BoL,EACFlD,EAAOpB,kBAAkBqJ,EAAMnQ,OAE/BkI,EAAOvB,gBAAgBwJ,EAAMnQ,QAIxC,IAAIoQ,EAAY7S,EAAM8L,OAAO,WAC3B,OAAOhP,EAAQ,GAAGgW,iBAAiB,OAAO/H,QACzC,WACD8E,IACAgD,WAKHxW,EAGT,IAAI0W,EAAahW,QAAUA,OAAOiW,SAAWjW,OAAOiW,QAAQC,KACtC,mBAAXC,QAAyBA,OAAOC,IACzCD,QAAQ,UAAW/W,GACQ,oBAAXe,QAA0BA,QAAUA,OAAOkW,SAA+B,mBAAZrT,UAA4BgT,EAC1G7V,OAAOkW,QAAUjX,EAAqB4D,QAAQ,WAE9C5D,GAAwC,oBAAXkX,OAAyBA,OAAStW,QAAQX","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$$mdSvgRegistry',\r\n function ($mdDialog, $timeout, $compile, $$mdSvgRegistry) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5,\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 805f431..f3de493 100644 --- a/yarn.lock +++ b/yarn.lock @@ -122,9 +122,9 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -clean-css@4.1.8: - version "4.1.8" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.8.tgz#061455b2494a750ac98f46d8d5ebb17c679ea9d1" +clean-css@4.1.9: + version "4.1.9" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301" dependencies: source-map "0.5.x" @@ -475,10 +475,10 @@ graceful-fs@~1.2.0: resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" gulp-clean-css@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.8.0.tgz#3f7c17975fb8f3d311051e880d7ac99cd387d7ef" + version "3.9.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.0.tgz#e43e4c8d695060f6ba08a154d8e76d0d87b1c822" dependencies: - clean-css "4.1.8" + clean-css "4.1.9" gulp-util "3.0.8" through2 "2.0.3" vinyl-sourcemaps-apply "0.2.1" @@ -1109,8 +1109,8 @@ resolve@^1.1.6, resolve@^1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" run-sequence@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.1.0.tgz#149da012516f21dcf79db6dc99a2a95603631b21" + version "2.2.0" + resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.2.0.tgz#b3f8d42836db89d08b2fe704eaf0c93dfd8335e2" dependencies: chalk "^1.1.3" gulp-util "^3.0.8" From 93c9e0f5bbb0f3a637fef167015e9e866fc7c9f7 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 23 Sep 2017 22:34:27 -0400 Subject: [PATCH 103/226] package version 1.9.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 004c53b..37818d2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.2", + "version": "1.9.3", "keywords": [ "css", "js", From 402c1b2ea1020a1d7220b8418953f4e509b7f979 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 26 Sep 2017 20:32:37 -0400 Subject: [PATCH 104/226] #18 best effort to support older version --- js/angular-material-datetimepicker.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 18522c9..1c52131 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -4,8 +4,9 @@ function ngMaterialDatePicker(moment) { var moduleName = "ngMaterialDatePicker"; - var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+'; - + var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+', + mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg=='; + var VIEW_STATES = { DATE: 0, HOUR: 1, @@ -34,7 +35,7 @@ ' ' + '
{{picker.currentDate.format("MMM") | uppercase}}
' + ' ' + - ' ' + + ' ' + ' {{itemMonth}}' + ' ' + ' ' + @@ -47,7 +48,7 @@ ' ' + '
{{picker.currentDate.format("YYYY")}}
' + ' ' + - ' ' + + ' ' + ' {{itemYear}}' + ' ' + ' ' + @@ -144,8 +145,8 @@ return default_params; }; }) - .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$$mdSvgRegistry', - function ($mdDialog, $timeout, $compile, $$mdSvgRegistry) { + .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', + function ($mdDialog, $timeout, $compile) { return { restrict: 'A', @@ -280,7 +281,7 @@ '', clearButton = ''; element.after($compile(calendarButton + clearButton)(scope)); @@ -333,7 +334,7 @@ } @return promise */ - .factory('mdcDateTimeDialog', ["$mdDialog", "$q", "$mdMenu", "mdcDefaultParams", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) { + .factory('mdcDateTimeDialog', ["$mdDialog", "$q", "mdcDefaultParams", function ($mdDialog, $q, mdcDefaultParams) { var defaultParams = mdcDefaultParams(); var accepted_options = Object.keys(defaultParams); var service = { @@ -584,7 +585,7 @@ } }, openMenu: function ($mdMenu, ev) { - $mdMenu.open(ev); + $mdMenu.open(ev); }, monthsAvailable: function () { var monthsArr = [], From af36d590f15810994b163729030c7db84434bf30 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 27 Sep 2017 22:37:31 -0400 Subject: [PATCH 105/226] version 1.9.4 --- README.md | 18 +++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- .../angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index b79883a..66b6c83 100644 --- a/README.md +++ b/README.md @@ -58,21 +58,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index ae6148c..70c0a7b 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.3", + "version": "1.9.4", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index a7befbd..11b7733 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$$mdSvgRegistry",function(t,a,i,s){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"="},link:function(c,o,d,l){function u(i){if(i.preventDefault(),o.blur(),o.parent().removeClass("md-input-focused"),!m){m=!0;var s={};for(var l in d)c.hasOwnProperty(l)&&!angular.isUndefined(c[l])&&(s[l]=c[l]);s.currentDate=c.currentDate,s.showTodaysDate=p;var u={options:s};t.show({template:n,controller:r,controllerAs:"picker",locals:u,openFrom:o,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:s.clickOutsideToClose||!1,disableParentScroll:s.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){c.currentDate=t?t._d:t,m=!1,e(c.currentDate).isSame(s.currentDate)||a(c.ngChange,0),o.parent().removeClass("md-input-focused")},function(){m=!1,o.parent().removeClass("md-input-focused")})}}var m=!1;c.format||(c.date&&c.time&&c.seconds?c.format="YYYY-MM-DD HH:mm:ss":c.date&&c.time?c.format="YYYY-MM-DD HH:mm":c.date?c.format="YYYY-MM-DD":c.format="HH:mm");var p=null;if(void 0!==c.showTodaysDate&&"false"!==c.showTodaysDate&&(p=e()),angular.isString(c.currentDate)&&""!==c.currentDate&&(c.currentDate=e(c.currentDate,c.format)),l){var h={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(h):h,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(c.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,c.format);return a.isValid()?a._d:void 0}})}if(c.editInput||(c.showIcon?o.on("click",u):o.on("focus",u)),c.showIcon){o.addClass("dtp-no-msclear dtp-input");var f='';o.after(i(f+'')(c)),c.openCalendarDiag=function(e){u(e)},c.clear=function(){l.$setViewValue(null),c.currentDate=null,l.$render(),a(function(){o[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","$mdMenu","mdcDefaultParams",function(t,a,i,s){var c=s(),o=Object.keys(c);return{show:function(i){var s=a.defer();angular.copy(c);for(var d in i)-1!=o.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;s.resolve(e?e._d:e)},function(){s.reject()}),s.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,v=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],b=0;b<12;++b){var I=M+y*Math.sin(2*Math.PI*(b/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(b/12))-g/2-(v+g),w={left:I,top:T,value:r||s?5*b:b,style:{"margin-left":I+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===b?12:b:w.display=b,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+k),V=M-S*Math.cos(2*Math.PI*(O/12))-g/2-(v+g),N={left:E,top:V,value:O,style:{"margin-left":E+"px","margin-top":V+"px"}};N.display=O,A.push(N)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),Y=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,W=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:W+"px",marginTop:M-W-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+k-Y+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"="},link:function(s,c,o,d){function l(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var d={};for(var l in o)s.hasOwnProperty(l)&&!angular.isUndefined(s[l])&&(d[l]=s[l]);d.currentDate=s.currentDate,d.showTodaysDate=m;var p={options:d};t.show({template:n,controller:r,controllerAs:"picker",locals:p,openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){s.currentDate=t?t._d:t,u=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var p={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(p):p,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}if(s.editInput||(s.showIcon?c.on("click",l):c.on("focus",l)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){l(e)},s.clear=function(){d.$setViewValue(null),s.currentDate=null,d.$render(),a(function(){c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var d in i)-1!=c.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,g=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(I/12))-v/2-(g+v),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+k),V=M-S*Math.cos(2*Math.PI*(E/12))-v/2-(g+v),N={left:O,top:V,value:E,style:{"margin-left":O+"px","margin-top":V+"px"}};N.display=E,A.push(N)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),Y=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,j=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:j+"px",marginTop:M-j-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+k-Y+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index b35a76b..38c57bf 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$$mdSvgRegistry","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","mdCalendar","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","$mdMenu","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n\r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$$mdSvgRegistry',\r\n function ($mdDialog, $timeout, $compile, $$mdSvgRegistry) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5,\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"$mdMenu\", \"mdcDefaultParams\", function ($mdDialog, $q, $mdMenu, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5,\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 37818d2..9343192 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.3", + "version": "1.9.4", "keywords": [ "css", "js", From 758c331da41418087471afb3cb64ea743554d64d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D0=B2=D1=82=D1=8E=D1=85=20=D0=90=D0=BB=D0=B5?= =?UTF-8?q?=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Wed, 18 Oct 2017 11:22:12 +0300 Subject: [PATCH 106/226] add template options --- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- index.html | 9 +++ js/angular-material-datetimepicker.js | 55 ++++++++++++------- js/demo.js | 46 ++++++++++++++++ 5 files changed, 92 insertions(+), 22 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 11b7733..0fb379e 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"="},link:function(s,c,o,d){function l(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var d={};for(var l in o)s.hasOwnProperty(l)&&!angular.isUndefined(s[l])&&(d[l]=s[l]);d.currentDate=s.currentDate,d.showTodaysDate=m;var p={options:d};t.show({template:n,controller:r,controllerAs:"picker",locals:p,openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0}).then(function(t){s.currentDate=t?t._d:t,u=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var p={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(p):p,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}if(s.editInput||(s.showIcon?c.on("click",l):c.on("focus",l)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){l(e)},s.clear=function(){d.$setViewValue(null),s.currentDate=null,d.$render(),a(function(){c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var d in i)-1!=c.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={options:i};return t.show({template:n,controller:r,controllerAs:"picker",locals:u,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0}).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,g=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(I/12))-v/2-(g+v),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+k),V=M-S*Math.cos(2*Math.PI*(E/12))-v/2-(g+v),N={left:O,top:V,value:E,style:{"margin-left":O+"px","margin-top":V+"px"}};N.display=E,A.push(N)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),Y=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,j=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:j+"px",marginTop:M-j-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+k-Y+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,d){function l(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var d={};for(var l in o)s.hasOwnProperty(l)&&!angular.isUndefined(s[l])&&(d[l]=s[l]);d.currentDate=s.currentDate,d.showTodaysDate=m;var p={controller:r,controllerAs:"picker",locals:{options:d},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};d.templateUrl?p.templateUrl=d.templateUrl:p.template=n,t.show(p).then(function(t){s.currentDate=t?t._d:t,u=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var p={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(p):p,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}if(s.editInput||(s.showIcon?c.on("click",l):c.on("focus",l)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){l(e)},s.clear=function(){d.$setViewValue(null),s.currentDate=null,d.$render(),a(function(){c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var d in i)-1!=c.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,g=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(I/12))-v/2-(g+v),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+k),V=M-S*Math.cos(2*Math.PI*(E/12))-v/2-(g+v),N={left:O,top:V,value:E,style:{"margin-left":O+"px","margin-top":V+"px"}};N.display=E,A.push(N)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),Y=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,j=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:j+"px",marginTop:M-j-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+k-Y+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 38c57bf..f802e8d 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","locals","show","controller","PluginController","controllerAs","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {\r\n DATE: 0,\r\n HOUR: 1,\r\n MINUTE: 2\r\n };\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5,\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var locals = {options: options};\r\n $mdDialog.show({\r\n template: template,\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: locals,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true\r\n }).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\n 'use strict';\n\n function ngMaterialDatePicker(moment) {\n var moduleName = \"ngMaterialDatePicker\";\n\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\n \n var VIEW_STATES = {\n DATE: 0,\n HOUR: 1,\n MINUTE: 2\n };\n\n var css = function (el, name) {\n el = angular.element(el);\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\n };\n\n var template = \n '' +\n ' ' +\n '
' +\n '
' +\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\n '
' +\n ' ×' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\n ' ' +\n ' ' +\n ' {{itemMonth}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
{{picker.currentDate.format(\"DD\")}}
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\n ' ' +\n ' ' +\n ' {{itemYear}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
'+\n '
' + //start time \n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\n ' {{picker.currentDate.format(\"A\")}}'+\n '
' +\n '
' +\n '
' +\n ' ' +\n '
' +\n '
' +\n '
' +\n ' {{picker.params.amText}}' +\n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\n '
' +\n '
' +\n ' {{picker.params.pmText}}' +\n '
' +\n '
' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n ' {{picker.params.todayText}}' +\n ' {{picker.params.cancelText}}' +\n ' {{picker.params.okText}}' +\n ' ' +\n '
';\n\n angular.module(moduleName, ['ngMaterial'])\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\n this.$get = function () {\n return mdcDefaultParams().lang;\n };\n\n this.setDefaultLocale = function (localeString) {\n mdcDefaultParams({ lang: localeString });\n };\n }])\n .factory('mdcDefaultParams', function () {\n var default_params = {\n date: true,\n time: true,\n minutes: true,\n seconds: false,\n format: 'YYYY-MM-DD',\n minDate: null,\n maxDate: null,\n currentDate: null,\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\n weekStart: 0,\n shortTime: false,\n cancelText: 'Cancel',\n okText: 'OK',\n amText: 'AM',\n pmText: 'PM',\n todayText: 'Today',\n disableDates: [],\n weekDays: false,\n disableParentScroll: false,\n autoOk: false,\n editInput: false,\n clickOutsideToClose: false,\n minuteSteps: 5,\n showIcon: false,\n template: template,\n templateUrl: '',\n };\n\n return function (params) {\n if (params) {\n for (var i in params) {\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\n default_params[i] = params[i];\n }\n }\n }\n\n return default_params;\n };\n })\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\n function ($mdDialog, $timeout, $compile) {\n\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n currentDate: '=ngModel',\n ngChange: '&',\n time: '=',\n date: '=',\n minutes: '=',\n seconds: '=',\n minDate: '=',\n maxDate: '=',\n disableDates: '=',\n weekDays: '=',\n shortTime: '=',\n weekStart: '=',\n format: '@',\n cancelText: '@',\n okText: '@',\n lang: '@',\n amText: '@',\n pmText: '@',\n showTodaysDate: '@',\n todayText: '@',\n disableParentScroll: '=',\n autoOk: '=',\n editInput: '=',\n clickOutsideToClose: '=',\n minuteSteps: '=',\n showIcon: '=',\n templateUrl: '@',\n },\n link: function (scope, element, attrs, ngModel) {\n var isOn = false;\n if (!scope.format) {\n if (scope.date && scope.time && scope.seconds) {\n scope.format = 'YYYY-MM-DD HH:mm:ss';\n } else if (scope.date && scope.time) {\n scope.format = 'YYYY-MM-DD HH:mm';\n } else if (scope.date) {\n scope.format = 'YYYY-MM-DD';\n } else {\n scope.format = 'HH:mm';\n }\n }\n\n var dateOfTheDay = null;\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\n scope.currentDate = moment(scope.currentDate, scope.format);\n }\n\n if (ngModel) {\n var ngModelOptions = {'*': '$inherit', debounce: 500};\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\n \n ngModel.$formatters.push(function (value) {\n if (typeof value === 'undefined') return;\n var m = moment(value);\n return m.isValid() ? m.format(scope.format) : '';\n });\n \n ngModel.$parsers.push(function (value) {\n if (typeof value === 'undefined') return;\n var m = moment(value, scope.format);\n if (m.isValid()) return m._d;\n return;\n });\n \n }\n\n function openCalendar (e) {\n e.preventDefault();\n element.blur();\n element.parent().removeClass('md-input-focused');\n if (isOn) {\n return;\n }\n isOn = true;\n var options = {};\n for (var i in attrs) {\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\n options[i] = scope[i];\n }\n }\n options.currentDate = scope.currentDate;\n options.showTodaysDate = dateOfTheDay;\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n openFrom: element,\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n hasBackDrop: false,\n skipHide: true,\n multiple: true,\n };\n\n if (!options.templateUrl) {\n dialogOptions.template = template;\n } else {\n dialogOptions.templateUrl = options.templateUrl;\n }\n \n $mdDialog.show(dialogOptions).then(function (v) {\n scope.currentDate = v ? v._d : v;\n isOn = false;\n\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\n $timeout(scope.ngChange, 0);\n }\n\n element.parent().removeClass('md-input-focused');\n }, function () {\n isOn = false;\n element.parent().removeClass('md-input-focused');\n });\n }\n\n if (!scope.editInput) {\n if (scope.showIcon) {\n element.on('click', openCalendar);\n } else {\n element.on('focus', openCalendar);\n }\n }\n \n if (scope.showIcon) {\n element.addClass('dtp-no-msclear dtp-input');\n var calendarButton = \n '' +\n '' +\n '',\n clearButton = '';\n element.after($compile(calendarButton + clearButton)(scope));\n\n scope.openCalendarDiag = function(e) {\n openCalendar(e);\n };\n\n scope.clear = function() {\n ngModel.$setViewValue(null);\n scope.currentDate = null;\n ngModel.$render();\n $timeout(function() {\n element[0].focus();\n }, 0, false);\n };\n }\n }\n };\n }])\n /** Returns a service that opens a dialog when the attribute shown is called\n The dialog serves to select a date/time/etc. depending on the options given to the function show\n\n @param options extends mdcDefaultParams\n {\n date: {boolean} =true,\n time: {boolean} =true,\n minutes: {boolean} =true,\n seconds: {boolean} =false,\n format: {string} ='YYYY-MM-DD',\n minDate: {strign} =null,\n maxDate: {string} =null,\n currentDate: {string} =null,\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\n weekStart: {int} =0,\n shortTime: {boolean} =false,\n cancelText: {string} ='Cancel',\n showTodaysDate: {string} ='',\n todayText: {string} ='Today',\n okText: {string} ='OK',\n amText: {string} ='AM',\n pmText: {string} ='PM',\n disableDates: {date[]} =[],\n weekDays: {boolean} =false,\n disableParentScroll: {boolean} =false,\n autoOk: {boolean} =false,\n editInput: {boolean} =false,\n clickOutsideToClose: {boolean} =false,\n minuteSteps: {int} =5,\n }\n @return promise\n */\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\n var defaultParams = mdcDefaultParams();\n var accepted_options = Object.keys(defaultParams);\n var service = {\n show: function (options) {\n var deferred = $q.defer();\n var params = angular.copy(defaultParams);\n for (var i in options) {\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\n params = options[i];\n }\n }\n\n var dateOfTheDay = null;\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n options.showTodaysDate = dateOfTheDay;\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n skipHide: true,\n multiple: true,\n };\n\n if (!options.templateUrl) {\n dialogOptions.template = template;\n } else {\n dialogOptions.templateUrl = options.templateUrl;\n }\n\n $mdDialog.show(dialogOptions).then(function (v) {\n var currentDate = v ? v._d : v;\n deferred.resolve(v ? v._d : v);\n }, function () {\n deferred.reject();\n });\n return deferred.promise;\n }\n };\n\n return service;\n }])\n ;\n\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\n this.currentView = VIEW_STATES.DATE;\n this._dialog = $mdDialog;\n\n this._attachedEvents = [];\n this.VIEWS = VIEW_STATES;\n this.params = angular.copy(mdcDefaultParams());\n this.meridien = 'AM';\n this.params = angular.extend(this.params, this.options);\n\n this.init();\n };\n\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\n PluginController.prototype = {\n init: function () {\n this.timeMode = this.params.time && !this.params.date;\n this.dateMode = this.params.date;\n this.initDates();\n this.start();\n },\n currentNearestMinute: function () {\n var nearestMin = this.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n\n var date = this.currentDate || moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) {\n minutes = 60 - nearestMin; //always push down\n }\n var seconds = date.second();\n if (seconds >= 60) {\n seconds = 60 - 1; //always push down\n }\n return moment(date).minutes(minutes).seconds(seconds);\n },\n initDates: function () {\n var that = this;\n var _dateParam = function (input, fallback) {\n var ret = null;\n if (angular.isDefined(input) && input !== null && input !== '') {\n if (angular.isString(input)) {\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\n ret = moment(input, that.params.format).locale(that.params.lang);\n }\n else {\n ret = moment(input).locale(that.params.lang);\n }\n } else if (typeof input === 'number') {\n ret = moment(input).locale(that.params.lang);\n } else {\n if (angular.isDate(input)) {\n var x = input.getTime();\n ret = moment(x, \"x\").locale(that.params.lang);\n } else if (input._isAMomentObject) {\n ret = input;\n }\n }\n }\n else {\n ret = fallback;\n }\n return ret;\n };\n\n this.currentDate = _dateParam(this.params.currentDate, moment());\n this.currentDate = this.currentNearestMinute();\n this.minDate = _dateParam(this.params.minDate);\n this.maxDate = _dateParam(this.params.maxDate);\n this.disableDates = this.params.disableDates.map(function (x) {\n return moment(x).format('MMMM Do YYYY');\n });\n this.selectDate(this.currentDate);\n this.weekDays = this.params.weekDays;\n },\n initDate: function () {\n this.currentView = VIEW_STATES.DATE;\n },\n initHours: function () {\n this.currentView = VIEW_STATES.HOUR;\n },\n initMinutes: function () {\n this.currentView = VIEW_STATES.MINUTE;\n },\n initSeconds: function () {\n this.currentView = VIEW_STATES.SECOND;\n },\n isAfterMinDate: function (date, checkHour, checkMinute) {\n var _return = true;\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n var _minDate = moment(this.minDate);\n var _date = moment(date);\n\n if (!checkHour && !checkMinute) {\n _minDate.hour(0);\n _minDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _minDate.second(0);\n _date.second(0);\n _minDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _minDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\n var _return = true;\n\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n var _maxDate = moment(this.maxDate);\n var _date = moment(date);\n\n if (!checkTime && !checkMinute) {\n _maxDate.hour(0);\n _maxDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _maxDate.second(0);\n _date.second(0);\n _maxDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _maxDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isInDisableDates: function (date) {\n var dut = date.format('MMMM Do YYYY');\n if (this.disableDates.indexOf(dut) > -1) {\n return false;\n }\n return true;\n },\n isWeekDay: function(date) {\n if (this.weekDays) {\n if (date.isoWeekday() <= 5) {\n return true;\n }\n return false;\n }\n return true;\n },\n selectDate: function (date) {\n if (date) {\n this.currentDate = moment(date);\n if (!this.isAfterMinDate(this.currentDate)) {\n this.currentDate = moment(this.minDate);\n }\n\n if (!this.isBeforeMaxDate(this.currentDate)) {\n this.currentDate = moment(this.maxDate);\n }\n this.currentDate.locale(this.params.lang);\n this.calendarStart = moment(this.currentDate);\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\n }\n },\n isPM: function () {\n return this.meridien === 'PM';\n },\n incrementMonth: function (amount) {\n if (amount === 1 && this.isNextMonthVisible()) {\n this.selectDate(this.currentDate.add(amount, 'month'));\n }\n\n if (amount === -1 && this.isPreviousMonthVisible()) {\n this.selectDate(this.currentDate.add(amount, 'month'));\n }\n },\n incrementYear: function (amount) {\n if (amount === 1 && this.isNextYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n\n if (amount === -1 && this.isPreviousYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n },\n openMenu: function ($mdMenu, ev) {\n $mdMenu.open(ev); \n },\n monthsAvailable: function () {\n var monthsArr = [], \n _date = moment(this.currentDate);\n\n for (var m = 0; m < 12; m++) {\n var curMonth = _date.month(m);\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\n monthsArr.push(curMonth.format('MMMM'));\n }\n }\n return monthsArr;\n },\n selectMonth: function (month) {\n this.selectDate(this.currentDate.month(month));\n },\n yearsAvailable: function () {\n var _minDate, _maxDate, len, startYear, yearsArr = [],\n _date = this.currentDate.year();\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n _minDate = moment(this.minDate).year();\n }\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n _maxDate = moment(this.maxDate).year();\n }\n\n if (_maxDate && _minDate) {\n len = _maxDate - _minDate;\n startYear = _minDate;\n } else if (_minDate) { \n len = 115;\n startYear = _minDate;\n } else if (_maxDate) { \n len = 30;\n startYear = _maxDate - len;\n } else {\n len = 60;\n startYear = _date - len/2;\n }\n \n for (var i=0; i < len; i++) {\n yearsArr.push(startYear+i);\n }\n return yearsArr;\n },\n selectYear: function (year) {\n this.selectDate(this.currentDate.year(year));\n },\n isPreviousMonthVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\n },\n isNextMonthVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\n },\n isPreviousYearVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\n },\n isNextYearVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\n },\n isHourAvailable: function (hour) {\n var _date = moment(this.currentDate);\n if (this.params.shortTime) {\n _date.hour(this.convertHours(hour)).minute(0).second(0);\n } else {\n _date.hour(hour).minute(0).second(0);\n }\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\n },\n isMinuteAvailable: function (minute) {\n var _date = moment(this.currentDate);\n _date.minute(minute).second(0);\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\n },\n isSecondAvailable: function (second) {\n return true;\n },\n start: function () {\n this.currentView = VIEW_STATES.DATE;\n if (this.params.date) {\n this.initDate();\n } else {\n if (this.params.time) {\n this.initHours();\n }\n }\n },\n today: function () {\n var nearestMin = this.params.minuteSteps;\n var date = moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) {\n minutes = 60 - nearestMin; //always push down\n }\n this.selectDate(moment(date).minutes(minutes));\n },\n ok: function () {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n if (this.params.time === true) {\n this.initHours();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.HOUR:\n if (this.params.minutes === true) {\n this.initMinutes();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.MINUTE:\n if (this.params.seconds === true) {\n this.initSeconds();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.SECOND:\n this.hide(true);\n break;\n }\n },\n cancel: function () {\n if (this.params.time) {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n this.hide();\n break;\n case VIEW_STATES.HOUR:\n if (this.params.date) {\n this.initDate();\n }\n else {\n this.hide();\n }\n break;\n case VIEW_STATES.MINUTE:\n this.initHours();\n break;\n case VIEW_STATES.SECOND:\n this.initMinutes();\n break; \n }\n }\n else {\n this.hide();\n }\n },\n selectMonthBefore: function () {\n this.calendarStart.subtract(1, 'months');\n },\n selectMonthAfter: function () {\n this.calendarStart.add(1, 'months');\n },\n selectYearBefore: function () {\n this.calendarStart.subtract(1, 'years');\n },\n selectYearAfter: function () {\n this.calendarStart.add(1, 'years');\n },\n selectAM: function () {\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\n if (this.currentDate.hour() >= 12) {\n this.selectDate(this.currentDate.subtract(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\n }\n }\n },\n selectPM: function () {\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\n if (this.currentDate.hour() < 12) {\n this.selectDate(this.currentDate.add(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\n }\n }\n },\n convertHours: function (h) {\n var _return = h;\n if ((h < 12) && this.isPM())\n _return += 12;\n\n return _return;\n },\n hide: function (okBtn) {\n if (okBtn) {\n this._dialog.hide(this.currentDate);\n } else {\n this._dialog.cancel();\n }\n }\n };\n\n angular.module(moduleName)\n .directive('mdcDatetimePickerCalendar', [\n function () {\n\n var YEAR_MIN = 1920,\n YEAR_MAX = new Date().getFullYear() + 30,\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\n ITEM_HEIGHT = 240,\n MONTHS = [];\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\n MONTHS.push(i);\n }\n\n var currentMonthIndex = function (date, low) {\n low = low ? low : 0;\n var year = date.year();\n var month = date.month();\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\n };\n\n return {\n restrict: 'E',\n scope: {\n picker: '=',\n date: '='\n },\n bindToController: true,\n controllerAs: 'cal',\n controller: ['$scope', function ($scope) {\n var calendar = this, picker;\n\n this.$onInit = function () {\n picker = this.picker;\n\n var days = [];\n for (var i = picker.params.weekStart; days.length < 7; i++) {\n if (i > 6) {\n i = 0;\n }\n days.push(i.toString());\n }\n calendar.week = days;\n\n if (!picker.maxDate && !picker.minDate) {\n calendar.months = MONTHS;\n } else {\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\n calendar.months = MONTHS.slice(low, high);\n }\n\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\n };\n\n if (angular.version.major === 1 && angular.version.minor < 5) {\n this.$onInit();\n }\n \n calendar.getItemAtIndex = function (index) {\n var month = ((index + 1) % 12) || 12;\n var year = YEAR_MIN + Math.floor(index / 12);\n var monthObj = moment(picker.currentDate).year(year).month(month);\n return generateMonthCalendar(monthObj);\n };\n\n $scope.$watch(function () {\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\n }, function (val2, val1) {\n if (val2 != val1) {\n var nDate = moment(val2, 'YYYY-MM');\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var index = currentMonthIndex(nDate, low);\n if (calendar.topIndex != index) {\n calendar.topIndex = index;\n }\n }\n });\n\n var generateMonthCalendar = function (date) {\n var month = {};\n if (date !== null) {\n month.name = date.format('MMMM YYYY');\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\n .hour(date.hour())\n .minute(date.minute());\n var iNumDay = startOfMonth.format('d');\n month.days = [];\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\n if (i === startOfMonth.date()) {\n var iWeek = calendar.week.indexOf(iNumDay.toString());\n if (iWeek > 0) {\n for (var x = 0; x < iWeek; x++) {\n month.days.push(0);\n }\n }\n }\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\n }\n\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\n for (var j = 0; j < slices; j++) {\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\n }\n month.days = daysTmp;\n return month;\n }\n\n };\n\n calendar.toDay = function (i) {\n return moment(parseInt(i), \"d\")\n .locale(picker.params.lang)\n .format(\"dd\")\n .substring(0, 1);\n };\n\n calendar.isInRange = function (date) {\n return picker.isAfterMinDate(moment(date), false, false) &&\n picker.isBeforeMaxDate(moment(date), false, false) &&\n picker.isWeekDay(moment(date)) &&\n picker.isInDisableDates(moment(date));\n };\n\n calendar.selectDate = function (date) {\n if (date) {\n if (calendar.isSelectedDay(date)) {\n return picker.ok();\n }\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\n if (picker.params.autoOk) {\n picker.ok();\n }\n }\n };\n\n calendar.isSelectedDay = function (m) {\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\n };\n\n calendar.isDateOfTheDay = function (m) {\n var today = calendar.picker.options.showTodaysDate;\n if (!today) {\n return false;\n }\n\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\n };\n }],\n template: \n '' +\n '
' +\n '
' +\n '
' +\n '
'\n };\n }])\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\n function ($compile) {\n var buildCalendarContent = function (element, scope) {\n var tbody = angular.element(element[0].querySelector('tbody'));\n var calendar = scope.cal, month = scope.month;\n\n var tbodyHtml = [];\n\n month.days.forEach(function (weekDays, i) {\n tbodyHtml.push('');\n weekDays.forEach(function (weekDay, j) {\n tbodyHtml.push('');\n if (weekDay) {\n if (calendar.isInRange(weekDay)) {\n //build a\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\n\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n } else {\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n }\n }\n tbodyHtml.push('');\n });\n tbodyHtml.push('');\n });\n\n tbody.html(tbodyHtml.join(''));\n $compile(tbody)(scope);\n };\n\n return {\n scope: {\n idx: '='\n },\n require: '^mdcDatetimePickerCalendar',\n restrict: 'AE',\n template: \n '
{{month.name}}
' +\n '' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
{{cal.toDay(day)}}
',\n link: function (scope, element, attrs, calendar) {\n scope.cal = calendar;\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n scope.$watch(function () {\n return scope.idx;\n }, function (idx, oldIdx) {\n if (idx != oldIdx) {\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n }\n });\n }\n };\n }\n ])\n ;\n\n angular.module(moduleName)\n .directive('mdcDtpNoclick', function () {\n return {\n link: function (scope, el) {\n el.on('click', function (e) {\n e.preventDefault();\n });\n }\n };\n });\n angular.module(moduleName)\n .directive('mdcDatetimePickerClock', ['$timeout',\n function ($timeout) {\n\n var template = \n '
 ' +\n '
' +\n ' {{point.display}}' +\n ' {{point.display}}' +\n '
' +\n '' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
';\n\n return {\n restrict: 'E',\n template: template,\n link: function (scope, element, attrs) {\n var minuteMode = attrs.mode === 'minutes';\n var secondMode = attrs.mode === 'seconds';\n var picker = scope.picker;\n //banking on the fact that there will only be one at a time\n var componentRoot = document.querySelector('md-dialog.dtp');\n\n var setTimeDegRay = function(deg, ray) {\n var val = 0;\n deg = deg >= 360 ? 0 : deg;\n if (deg !== 0) {\n var divider = minuteMode||secondMode ? 60 : 12;\n val = Math.round(divider / 360 * deg);\n }\n\n if (minuteMode) {\n var nearestMin = picker.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n\n var minutes = (nearestMin * Math.round(val / nearestMin));\n if (minutes >= 60) {\n minutes = 60 - nearestMin; //always push down\n }\n picker.currentDate.minute(minutes);\n } else if (!secondMode){\n if (val === 12) val = 0;\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\n } else {\n if (val >= 60) val = 0;\n picker.currentDate.second(val);\n }\n \n };\n\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\n EVENTS = {\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\n };\n\n var onMoveEvent = function(e) {\n e.preventDefault();\n\n var closestTarget = e.currentTarget.closest('div'),\n clientRect = closestTarget.getClientRects()[0];\n\n if (isTouchSupported) e = e.changedTouches[0];\n \n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\n \n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\n\n $timeout(function() {\n setTimeDegRay(deg+180, ray);\n });\n };\n\n element.on(EVENTS.POINTER_DOWN, function() {\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\n });\n\n element.on(EVENTS.POINTER_UP, function() {\n element.off(EVENTS.POINTER_MOVE);\n });\n\n scope.$on(\"$destroy\", function() {\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \n });\n\n var exec = function () {\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\n\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\n //set width\n var clockWidth = (w - (ml + mr + pl + pr));\n clock.css('width', (clockWidth) + 'px');\n\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\n\n var r = (clockWidth / 2);\n var j = r / 1.2; // radius for low number\n \n var points = [];\n\n for (var h = 0; h < 12; ++h) {\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\n var left = (r + x + pL / 2) - (pL + mL);\n var top = (r - y - mT / 2) - (pT + mT);\n\n var hour = {\n left: left,\n top: top,\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\n };\n\n if (minuteMode || secondMode) {\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\n } else {\n if (picker.params.shortTime) {\n hour.display = (h === 0) ? 12 : h;\n } else {\n hour.display = h;\n }\n }\n\n points.push(hour);\n }\n scope.points = points;\n\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\n var points24 = [];\n\n var j24 = r / 1.8; // radius for high number\n for (var h24 = 12; h24 < 24; ++h24) {\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\n var left24 = (r + x24 + pL / 2) - (pL + mL);\n var top24 = (r - y24 - mT / 2) - (pT + mT);\n\n var hour24 = {\n left: left24,\n top: top24,\n value: h24,\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\n };\n\n hour24.display = h24;\n\n points24.push(hour24);\n }\n scope.points24 = points24;\n }\n\n scope.mode = attrs.mode;\n setCurrentValue();\n clock.css('height', clockWidth + 'px');\n\n var clockCenter = element[0].querySelector('.dtp-clock-center');\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\n var _mL = r / 1.4;\n var _sL = r / 1;\n\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _hL + 'px',\n marginTop: (r - _hL - pL) + 'px'\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\n ({\n left: r + (mL * 1.5) + 'px',\n height: _mL + 'px',\n marginTop: (r - _mL - pL) + 'px'\n }).addClass(minuteMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-second-hand')).css\n ({\n left: r + (mL * 1.5) + 'px',\n height: _sL + 'px',\n marginTop: (r - _sL - pL) + 'px'\n }).addClass(secondMode ? 'on' : '');\n\n angular.element(clockCenter).css({\n left: (r + pL + mL - centerWidth) + 'px',\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\n });\n animateHands();\n };\n\n var animateHands = function () {\n var _date = picker.currentNearestMinute();\n var h = _date.hour();\n var m = _date.minute();\n var s = _date.second();\n\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\n };\n\n var rotateElement = function (el, deg) {\n angular.element(el).css({\n WebkitTransform: 'rotate(' + deg + 'deg)',\n '-moz-transform': 'rotate(' + deg + 'deg)',\n '-ms-transform': 'rotate(' + deg + 'deg)',\n 'transform': 'rotate(' + deg + 'deg)'\n });\n };\n\n\n var setCurrentValue = function () {\n var date = picker.currentNearestMinute();\n var nbH = picker.params.shortTime ? 12 : 24;\n if (minuteMode) {\n scope.currentValue = date.minute();\n } else if (secondMode) {\n scope.currentValue = date.second();\n } else {\n scope.currentValue = date.hour() % nbH;\n }\n };\n\n scope.$watch(function () {\n var tmp = picker.currentNearestMinute();\n return tmp ? tmp.format('HH:mm:ss') : '';\n }, function () {\n setCurrentValue();\n animateHands();\n });\n\n scope.setTime = function (val) {\n if (!minuteMode && !secondMode) {\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\n\n if (picker.params.shortTime) {\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\n } else {\n picker.currentDate.hour(val);\n if (val >= 12) picker.meridien = 'PM';\n else picker.meridien = 'AM';\n }\n\n if (picker.params.autoOk) picker.ok(); // single click\n } else if (!secondMode) {\n if (val === scope.currentValue && !picker.params.seconds) {\n picker.ok(); // double click\n }\n picker.currentDate.minute(val);\n if (!picker.params.seconds) {\n picker.currentDate.second(0);\n } else if (picker.params.autoOk) picker.ok(); // single click\n } else {\n if (val === scope.currentValue) picker.ok(); // double click\n picker.currentDate.second(val);\n }\n };\n\n scope.pointAvailable = function (point) {\n if (minuteMode) {\n return picker.isMinuteAvailable(point.value);\n } else if (secondMode) {\n return picker.isSecondAvailable(point.value);\n } else {\n return picker.isHourAvailable(point.value);\n }\n };\n\n var unWatcher = scope.$watch(function () {\n return element[0].querySelectorAll('div').length;\n }, function () {\n exec();\n unWatcher();\n });\n }\n };\n }]);\n return moduleName;\n }\n\n var isElectron = window && window.process && window.process.type;\n if (typeof define === 'function' && define.amd) {\n define(['moment'], ngMaterialDatePicker);\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\n module.exports = ngMaterialDatePicker(require('moment'));\n } else {\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\n }\n})();\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 1216f60..8c329c0 100644 --- a/index.html +++ b/index.html @@ -210,6 +210,15 @@

Datetime Pickers

+
+ + + + +
+
+

mdcDateTimeDialog Service

diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 1c52131..1325644 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -131,6 +131,8 @@ clickOutsideToClose: false, minuteSteps: 5, showIcon: false, + template: template, + templateUrl: '', }; return function (params) { @@ -177,7 +179,8 @@ editInput: '=', clickOutsideToClose: '=', minuteSteps: '=', - showIcon: '=' + showIcon: '=', + templateUrl: '@', }, link: function (scope, element, attrs, ngModel) { var isOn = false; @@ -238,12 +241,10 @@ options.currentDate = scope.currentDate; options.showTodaysDate = dateOfTheDay; - var locals = {options: options}; - $mdDialog.show({ - template: template, + var dialogOptions = { controller: PluginController, controllerAs: 'picker', - locals: locals, + locals: {options: options}, openFrom: element, parent: angular.element(document.body), bindToController: true, @@ -251,8 +252,16 @@ disableParentScroll: options.disableParentScroll || false, hasBackDrop: false, skipHide: true, - multiple: true - }).then(function (v) { + multiple: true, + }; + + if (!options.templateUrl) { + dialogOptions.template = template; + } else { + dialogOptions.templateUrl = options.templateUrl; + } + + $mdDialog.show(dialogOptions).then(function (v) { scope.currentDate = v ? v._d : v; isOn = false; @@ -353,19 +362,25 @@ } options.showTodaysDate = dateOfTheDay; - var locals = {options: options}; - $mdDialog.show({ - template: template, - controller: PluginController, - controllerAs: 'picker', - locals: locals, - parent: angular.element(document.body), - bindToController: true, - clickOutsideToClose: options.clickOutsideToClose || false, - disableParentScroll: options.disableParentScroll || false, - skipHide: true, - multiple: true - }).then(function (v) { + var dialogOptions = { + controller: PluginController, + controllerAs: 'picker', + locals: {options: options}, + parent: angular.element(document.body), + bindToController: true, + clickOutsideToClose: options.clickOutsideToClose || false, + disableParentScroll: options.disableParentScroll || false, + skipHide: true, + multiple: true, + }; + + if (!options.templateUrl) { + dialogOptions.template = template; + } else { + dialogOptions.templateUrl = options.templateUrl; + } + + $mdDialog.show(dialogOptions).then(function (v) { var currentDate = v ? v._d : v; deferred.resolve(v ? v._d : v); }, function () { diff --git a/js/demo.js b/js/demo.js index 33e9630..039bcae 100644 --- a/js/demo.js +++ b/js/demo.js @@ -19,6 +19,52 @@ $translateProvider.preferredLanguage('en'); $translateProvider.useSanitizeValueStrategy('sceParameters'); }) + .run(function ($templateCache) { + $templateCache.put( + 'customTemplate.html', + '' + + ' ' + + '
' + + '
' + + '
' + + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}'+ + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}'+ + ' {{picker.currentDate.format("A")}}'+ + '
' + + '
' + + '
' + + ' ' + + '
' + + '
' + + '
' + + ' {{picker.params.amText}}' + + '
' + + '
' + + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}' + + '
' + + '
' + + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}' + + '
' + + '
' + + ' {{picker.params.pmText}}' + + '
' + + '
' + + '
' + + ' ' + + ' ' + + ' ' + + '
' + + '
' + + '
' + + '
' + + ' ' + + ' {{picker.params.todayText}}' + + ' {{picker.params.cancelText}}' + + ' {{picker.params.okText}}' + + ' ' + + '
' + ) + }) .controller('DemoCtrl', function ($scope, mdcDateTimeDialog, $translate, mdcDefaultParams) { $scope.date = moment().startOf('day'); $scope.dateLang = new Date(); From 7ac5067f8d43741c45641dfd6ab9adde59021f2d Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 18 Oct 2017 22:47:29 -0400 Subject: [PATCH 107/226] update deps --- README.md | 2 +- index.html | 2 +- package.json | 2 +- yarn.lock | 364 +++++++++++++++++++++++++++++---------------------- 4 files changed, 214 insertions(+), 156 deletions(-) diff --git a/README.md b/README.md index 66b6c83..8cc3690 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Depends on the following library: - + ``` ## Installing via yarn, npm or bower diff --git a/index.html b/index.html index 8c329c0..69976a3 100644 --- a/index.html +++ b/index.html @@ -17,7 +17,7 @@ - + diff --git a/package.json b/package.json index 9343192..c4ae9b4 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "angular-animate": "^1.6.6", "angular-aria": "^1.6.6", "angular-material": "^1.1.5", - "moment": "^2.18.1" + "moment": "^2.19.1" }, "repository": { "type": "git", diff --git a/yarn.lock b/yarn.lock index f3de493..e6076ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,12 +20,12 @@ through2 "^2.0.3" acorn@4.X: - version "4.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" acorn@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" + version "5.1.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" amdefine@>=0.0.4: version "1.0.1" @@ -66,13 +66,21 @@ arr-diff@^2.0.0: arr-flatten "^1.0.1" arr-flatten@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" +array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + +array-slice@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.0.0.tgz#e73034f00dcc1f40876008fd20feae77bd4b7c2f" + array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -85,19 +93,19 @@ atob@~1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" beeper@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" brace-expansion@^1.0.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" dependencies: - balanced-match "^0.4.1" + balanced-match "^1.0.0" concat-map "0.0.1" braces@^1.8.2: @@ -108,10 +116,6 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -buffer-shims@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -140,19 +144,17 @@ clone@^1.0.0, clone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" -commander@~2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" +commander@~2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" convert-source-map@1.X: - version "1.3.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" core-util-is@~1.0.0: version "1.0.2" @@ -174,22 +176,22 @@ d@1: es5-ext "^0.10.9" dateformat@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" debug-fabulous@>=0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.1.1.tgz#1b970878c9fa4fbd1c88306eab323c830c58f1d6" + version "0.2.1" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.2.1.tgz#57e1164ba0e9ad6d9a65f20075ff3c2bd6bde0dc" dependencies: - debug "2.3.0" - memoizee "^0.4.5" - object-assign "4.1.0" + debug "3.X" + memoizee "0.4.X" + object-assign "4.X" -debug@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.0.tgz#3912dc55d7167fc3af17d2b85c13f93deaedaa43" +debug@3.X: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: - ms "0.7.2" + ms "2.0.0" defaults@^1.0.0: version "1.0.3" @@ -199,7 +201,7 @@ defaults@^1.0.0: deprecated@^0.0.1: version "0.0.1" - resolved "http://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" + resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" detect-file@^0.1.0: version "0.1.0" @@ -218,10 +220,10 @@ duplexer2@0.0.2: readable-stream "~1.1.9" end-of-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.1.0.tgz#e9353258baa9108965efc41cb0ef8ade2f3cfb07" + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" dependencies: - once "~1.3.0" + once "^1.4.0" end-of-stream@~0.1.5: version "0.1.5" @@ -229,29 +231,29 @@ end-of-stream@~0.1.5: dependencies: once "~1.3.0" -es5-ext@^0.10.13, es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: - version "0.10.29" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.29.tgz#768eb2dfc4957bcf35fa0568f193ab71ede53fd8" +es5-ext@^0.10.14, es5-ext@^0.10.30, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: + version "0.10.35" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.35.tgz#18ee858ce6a3c45c7d79e91c15fcca9ec568494f" dependencies: - es6-iterator "2" - es6-symbol "~3.1" + es6-iterator "~2.0.1" + es6-symbol "~3.1.1" -es6-iterator@2, es6-iterator@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" +es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" dependencies: d "1" - es5-ext "^0.10.14" - es6-symbol "^3.1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" -es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1: +es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" dependencies: d "1" es5-ext "~0.10.14" -es6-weak-map@^2.0.1: +es6-weak-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" dependencies: @@ -264,7 +266,7 @@ escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -event-emitter@^0.3.4: +event-emitter@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" dependencies: @@ -283,15 +285,21 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expand-tilde@^1.2.1, expand-tilde@^1.2.2: +expand-tilde@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" dependencies: os-homedir "^1.0.1" +expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + extend@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" extglob@^0.3.1: version "0.3.2" @@ -307,8 +315,8 @@ fancy-log@^1.1.0: time-stamp "^1.0.0" filename-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" fill-range@^2.1.0: version "2.2.3" @@ -334,15 +342,13 @@ findup-sync@^0.4.2: resolve-dir "^0.1.0" fined@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.0.2.tgz#5b28424b760d7598960b7ef8480dff8ad3660e97" + version "1.1.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" dependencies: - expand-tilde "^1.2.1" - lodash.assignwith "^4.0.7" - lodash.isempty "^4.2.1" - lodash.isplainobject "^4.0.4" - lodash.isstring "^4.0.1" - lodash.pick "^4.2.1" + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" parse-filepath "^1.0.1" first-chunk-stream@^1.0.0: @@ -353,15 +359,21 @@ flagged-respawn@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" -for-in@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" for-own@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" dependencies: - for-in "^0.1.5" + for-in "^1.0.1" fs-exists-sync@^0.1.0: version "0.1.0" @@ -405,7 +417,7 @@ glob-watcher@^0.0.6: glob2base@^0.0.12: version "0.0.12" - resolved "http://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" dependencies: find-index "^0.1.1" @@ -470,10 +482,6 @@ graceful-fs@~1.2.0: version "1.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - gulp-clean-css@^3.8.0: version "3.9.0" resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.0.tgz#e43e4c8d695060f6ba08a154d8e76d0d87b1c822" @@ -575,7 +583,7 @@ has-gulplog@^0.1.0: dependencies: sparkles "^1.0.0" -homedir-polyfill@^1.0.0: +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" dependencies: @@ -592,7 +600,7 @@ inherits@1: version "1.0.2" resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" -inherits@2, inherits@^2.0.1, inherits@~2.0.1: +inherits@2, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -601,8 +609,8 @@ ini@^1.3.4: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" interpret@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" + version "1.0.4" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" is-absolute@^0.2.3: version "0.2.6" @@ -611,13 +619,13 @@ is-absolute@^0.2.3: is-relative "^0.2.1" is-windows "^0.2.0" -is-buffer@^1.0.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" +is-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" is-equal-shallow@^0.1.3: version "0.1.3" @@ -639,15 +647,27 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" -is-number@^2.0.2, is-number@^2.1.0: +is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" dependencies: kind-of "^3.0.2" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-plain-object@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + is-posix-bracket@^0.1.0: version "0.1.1" - resolved "http://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" is-primitive@^2.0.0: version "2.0.0" @@ -685,9 +705,9 @@ isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" -isexe@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" isobject@^2.0.0: version "2.1.0" @@ -695,11 +715,21 @@ isobject@^2.0.0: dependencies: isarray "1.0.0" +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + kind-of@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" dependencies: - is-buffer "^1.0.2" + is-buffer "^1.1.5" liftoff@^2.1.0: version "2.3.0" @@ -751,10 +781,6 @@ lodash._root@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" -lodash.assignwith@^4.0.7: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz#127a97f02adc41751a954d24b0de17e100e038eb" - lodash.escape@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" @@ -769,10 +795,6 @@ lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" -lodash.isempty@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" - lodash.isplainobject@^4.0.4: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -793,10 +815,6 @@ lodash.mapvalues@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" -lodash.pick@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" @@ -847,25 +865,25 @@ make-error-cause@^1.1.1: make-error "^1.2.0" make-error@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.2.1.tgz#9a6dfb4844423b9f145806728d05c6e935670e75" + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" map-cache@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" -memoizee@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.5.tgz#1bc3ea1e4be056dd475d521979d7be3d5e5b21c8" +memoizee@0.4.X: + version "0.4.11" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.11.tgz#bde9817663c9e40fdb2a4ea1c367296087ae8c8f" dependencies: d "1" - es5-ext "^0.10.13" - es6-weak-map "^2.0.1" - event-emitter "^0.3.4" + es5-ext "^0.10.30" + es6-weak-map "^2.0.2" + event-emitter "^0.3.5" is-promise "^2.1" lru-queue "0.1" next-tick "1" - timers-ext "0.1" + timers-ext "^0.1.2" micromatch@^2.3.7: version "2.3.11" @@ -913,12 +931,12 @@ mkdirp@^0.5.0: minimist "0.0.8" moment@^2.18.1: - version "2.18.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" + version "2.19.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167" -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" multipipe@^0.1.2: version "0.1.2" @@ -940,14 +958,23 @@ normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" +object-assign@4.X: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" +object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -955,7 +982,19 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -once@^1.3.0, once@^1.3.1, once@~1.3.0: +object.pick@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.3.0: version "1.3.3" resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" dependencies: @@ -998,6 +1037,10 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" @@ -1028,11 +1071,11 @@ pump@^1.0.2: once "^1.3.1" randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" + is-number "^3.0.0" + kind-of "^4.0.0" "readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" @@ -1044,15 +1087,15 @@ randomatic@^1.1.3: string_decoder "~0.10.x" readable-stream@^2.1.5: - version "2.2.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: - buffer-shims "^1.0.0" core-util-is "~1.0.0" - inherits "~2.0.1" + inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~1.0.6" - string_decoder "~0.10.x" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" util-deprecate "~1.0.1" readable-stream@~1.1.9: @@ -1071,15 +1114,14 @@ rechoir@^0.6.2: resolve "^1.1.6" regex-cache@^0.4.2: - version "0.4.3" - resolved "http://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" dependencies: is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" repeat-element@^1.1.2: version "1.1.2" @@ -1105,8 +1147,10 @@ resolve-url@~0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" resolve@^1.1.6, resolve@^1.1.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c" + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" + dependencies: + path-parse "^1.0.5" run-sequence@^2.1.0: version "2.2.0" @@ -1115,6 +1159,10 @@ run-sequence@^2.1.0: chalk "^1.1.3" gulp-util "^3.0.8" +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + semver@^4.1.0: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -1140,9 +1188,13 @@ source-map-url@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" -source-map@0.5.x, source-map@0.X, source-map@^0.5.1, source-map@^0.5.6, source-map@~0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" +source-map@0.5.x, source-map@^0.5.1, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@0.X, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" source-map@^0.1.38: version "0.1.43" @@ -1162,6 +1214,12 @@ string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -1204,10 +1262,10 @@ tildify@^1.0.0: os-homedir "^1.0.0" time-stamp@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" -timers-ext@0.1: +timers-ext@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.2.tgz#61cc47a76c1abd3195f14527f978d58ae94c5204" dependencies: @@ -1215,11 +1273,11 @@ timers-ext@0.1: next-tick "1" uglify-js@^3.0.5: - version "3.0.15" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.15.tgz#aacb323a846b234602270dead8a32441a8806f42" + version "3.1.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.4.tgz#8e1efa1244b207588e525c9c1835a33458b90aee" dependencies: - commander "~2.9.0" - source-map "~0.5.1" + commander "~2.11.0" + source-map "~0.6.1" unc-path-regex@^0.1.0: version "0.1.2" @@ -1242,8 +1300,8 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" v8flags@^2.0.2: - version "2.0.11" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881" + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" dependencies: user-home "^1.1.1" @@ -1290,10 +1348,10 @@ vinyl@^0.5.0: replace-ext "0.0.1" which@^1.2.12: - version "1.2.12" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: - isexe "^1.1.1" + isexe "^2.0.0" wrappy@1: version "1.0.2" From 5d9ef947c65c6835d9dcf28cced58492de07f889 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 18 Oct 2017 23:00:26 -0400 Subject: [PATCH 108/226] code cleanup --- gulpfile.js | 4 ---- index.html | 2 +- js/angular-material-datetimepicker.js | 16 +++++----------- js/demo.js | 3 --- 4 files changed, 6 insertions(+), 19 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 992daa3..7bfdc83 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -10,10 +10,6 @@ gulp.task('default', function(cb) { runSequence(['js', 'css'], cb); }); -gulp.task('bump', function(cb) { - runSequence(['js', 'css'], 'bump push', cb); -}); - gulp.task('js', function(cb) { pump([ gulp.src(['./js/angular-material-datetimepicker.js']), diff --git a/index.html b/index.html index 69976a3..d7f7369 100644 --- a/index.html +++ b/index.html @@ -213,7 +213,7 @@

Datetime Pickers

-
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 1325644..f0573e6 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -255,13 +255,10 @@ multiple: true, }; - if (!options.templateUrl) { - dialogOptions.template = template; - } else { - dialogOptions.templateUrl = options.templateUrl; - } + if (!options.templateUrl) dialogOptions.template = template; + else dialogOptions.templateUrl = options.templateUrl; - $mdDialog.show(dialogOptions).then(function (v) { + $mdDialog.show(dialogOptions).then(function(v) { scope.currentDate = v ? v._d : v; isOn = false; @@ -374,11 +371,8 @@ multiple: true, }; - if (!options.templateUrl) { - dialogOptions.template = template; - } else { - dialogOptions.templateUrl = options.templateUrl; - } + if (!options.templateUrl) dialogOptions.template = template; + else dialogOptions.templateUrl = options.templateUrl; $mdDialog.show(dialogOptions).then(function (v) { var currentDate = v ? v._d : v; diff --git a/js/demo.js b/js/demo.js index 039bcae..b096edf 100644 --- a/js/demo.js +++ b/js/demo.js @@ -1,6 +1,3 @@ -/** - * Created by intelWorx on 11/11/2015. - */ (function () { 'use strict'; angular.module('mdDatetimePickerDemo', [ From 4ba7b1485f34df7bcac620e10ed1d1613bed07af Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 18 Oct 2017 23:21:01 -0400 Subject: [PATCH 109/226] version 1.9.5 --- README.md | 5 +++++ bower.json | 4 ++-- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 10 +++++----- package.json | 2 +- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8cc3690..4117cb1 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,12 @@ Originally designed for Bootstrap Material, this has been modified to work with - Optionnal seconds clock - Compatible with right-to-left direction - Support RequireJS and Webpack +- Possibility to set a custom external template ## Updates | Date | Author | Description | | ---------- | -------- | ------------------------------------------------------ | +| 2017-10-18 | paragraff | custom template | | 2017-09-11 | hexadecy | show-icon button, useful when in edit-input mode | | 2017-08-19 | hexadecy | Quick year and month menu selector | | 2017-08-12 | hexadecy | Add optionnal seconds clock | @@ -132,6 +134,7 @@ The directive accepts several attributes which are described below: | **click-outside-to-close**| Boolean | true => A click outside close the dialog (default: false) | | **minute-steps** | Number | 1 to 59 minute steps (default: 5) | | **show-icon** | Boolean | true => Show calendar or time icon before + clear (default: false) | +| **template-url** | String | You can set a custom HTML template (default: '') | ### Set or update params by injecting `mdcDefaultParams` provider To change params like the locale you can use this method instead of attributes for all datetimepicker: @@ -195,6 +198,8 @@ The `mdcDateTimeDialog.show` accepts almost the same options as the directive. editInput: {boolean} =false, clickOutsideToClose: {boolean} =false, minuteSteps: {int} =5, + howIcon: {boolean} =false, + templateUrl: {string} ='' } ``` diff --git a/bower.json b/bower.json index 70c0a7b..ac26193 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.4", + "version": "1.9.5", "keywords": [ "css", "js", @@ -28,7 +28,7 @@ "test-infra" ], "dependencies": { - "moment": "^2.18.1", + "moment": "^2.19.1", "angular-material": "^1.1.5" } } diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 0fb379e..0a58e7f 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return e().lang},this.setDefaultLocale=function(t){e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,d){function l(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var d={};for(var l in o)s.hasOwnProperty(l)&&!angular.isUndefined(s[l])&&(d[l]=s[l]);d.currentDate=s.currentDate,d.showTodaysDate=m;var p={controller:r,controllerAs:"picker",locals:{options:d},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};d.templateUrl?p.templateUrl=d.templateUrl:p.template=n,t.show(p).then(function(t){s.currentDate=t?t._d:t,u=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var p={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(p):p,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}if(s.editInput||(s.showIcon?c.on("click",l):c.on("focus",l)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){l(e)},s.clear=function(){d.$setViewValue(null),s.currentDate=null,d.$render(),a(function(){c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var d in i)-1!=c.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,g=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(I/12))-v/2-(g+v),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+k),V=M-S*Math.cos(2*Math.PI*(E/12))-v/2-(g+v),N={left:O,top:V,value:E,style:{"margin-left":O+"px","margin-top":V+"px"}};N.display=E,A.push(N)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),Y=P.offsetWidth/2||7.5,H=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,j=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:j+"px",marginTop:M-j-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+k-Y+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,d){function l(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var d={};for(var l in o)s.hasOwnProperty(l)&&!angular.isUndefined(s[l])&&(d[l]=s[l]);d.currentDate=s.currentDate,d.showTodaysDate=m;var p={controller:r,controllerAs:"picker",locals:{options:d},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};d.templateUrl?p.templateUrl=d.templateUrl:p.template=n,t.show(p).then(function(t){s.currentDate=t?t._d:t,u=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var p={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(p):p,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}if(s.editInput||(s.showIcon?c.on("click",l):c.on("focus",l)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){l(e)},s.clear=function(){d.$setViewValue(null),s.currentDate=null,d.$render(),a(function(){c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var d in i)-1!=c.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,g=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(I/12))-v/2-(g+v),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+k),P=M-S*Math.cos(2*Math.PI*(E/12))-v/2-(g+v),V={left:O,top:P,value:E,style:{"margin-left":O+"px","margin-top":P+"px"}};V.display=E,A.push(V)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var N=a[0].querySelector(".dtp-clock-center"),Y=N.offsetWidth/2||7.5,H=N.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,j=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:j+"px",marginTop:M-j-f+"px"}).addClass(s?"on":""),angular.element(N).css({left:M+f+k-Y+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index f802e8d..ca2332b 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\n 'use strict';\n\n function ngMaterialDatePicker(moment) {\n var moduleName = \"ngMaterialDatePicker\";\n\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\n \n var VIEW_STATES = {\n DATE: 0,\n HOUR: 1,\n MINUTE: 2\n };\n\n var css = function (el, name) {\n el = angular.element(el);\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\n };\n\n var template = \n '' +\n ' ' +\n '
' +\n '
' +\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\n '
' +\n ' ×' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\n ' ' +\n ' ' +\n ' {{itemMonth}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
{{picker.currentDate.format(\"DD\")}}
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\n ' ' +\n ' ' +\n ' {{itemYear}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
'+\n '
' + //start time \n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\n ' {{picker.currentDate.format(\"A\")}}'+\n '
' +\n '
' +\n '
' +\n ' ' +\n '
' +\n '
' +\n '
' +\n ' {{picker.params.amText}}' +\n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\n '
' +\n '
' +\n ' {{picker.params.pmText}}' +\n '
' +\n '
' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n ' {{picker.params.todayText}}' +\n ' {{picker.params.cancelText}}' +\n ' {{picker.params.okText}}' +\n ' ' +\n '
';\n\n angular.module(moduleName, ['ngMaterial'])\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\n this.$get = function () {\n return mdcDefaultParams().lang;\n };\n\n this.setDefaultLocale = function (localeString) {\n mdcDefaultParams({ lang: localeString });\n };\n }])\n .factory('mdcDefaultParams', function () {\n var default_params = {\n date: true,\n time: true,\n minutes: true,\n seconds: false,\n format: 'YYYY-MM-DD',\n minDate: null,\n maxDate: null,\n currentDate: null,\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\n weekStart: 0,\n shortTime: false,\n cancelText: 'Cancel',\n okText: 'OK',\n amText: 'AM',\n pmText: 'PM',\n todayText: 'Today',\n disableDates: [],\n weekDays: false,\n disableParentScroll: false,\n autoOk: false,\n editInput: false,\n clickOutsideToClose: false,\n minuteSteps: 5,\n showIcon: false,\n template: template,\n templateUrl: '',\n };\n\n return function (params) {\n if (params) {\n for (var i in params) {\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\n default_params[i] = params[i];\n }\n }\n }\n\n return default_params;\n };\n })\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\n function ($mdDialog, $timeout, $compile) {\n\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n currentDate: '=ngModel',\n ngChange: '&',\n time: '=',\n date: '=',\n minutes: '=',\n seconds: '=',\n minDate: '=',\n maxDate: '=',\n disableDates: '=',\n weekDays: '=',\n shortTime: '=',\n weekStart: '=',\n format: '@',\n cancelText: '@',\n okText: '@',\n lang: '@',\n amText: '@',\n pmText: '@',\n showTodaysDate: '@',\n todayText: '@',\n disableParentScroll: '=',\n autoOk: '=',\n editInput: '=',\n clickOutsideToClose: '=',\n minuteSteps: '=',\n showIcon: '=',\n templateUrl: '@',\n },\n link: function (scope, element, attrs, ngModel) {\n var isOn = false;\n if (!scope.format) {\n if (scope.date && scope.time && scope.seconds) {\n scope.format = 'YYYY-MM-DD HH:mm:ss';\n } else if (scope.date && scope.time) {\n scope.format = 'YYYY-MM-DD HH:mm';\n } else if (scope.date) {\n scope.format = 'YYYY-MM-DD';\n } else {\n scope.format = 'HH:mm';\n }\n }\n\n var dateOfTheDay = null;\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\n scope.currentDate = moment(scope.currentDate, scope.format);\n }\n\n if (ngModel) {\n var ngModelOptions = {'*': '$inherit', debounce: 500};\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\n \n ngModel.$formatters.push(function (value) {\n if (typeof value === 'undefined') return;\n var m = moment(value);\n return m.isValid() ? m.format(scope.format) : '';\n });\n \n ngModel.$parsers.push(function (value) {\n if (typeof value === 'undefined') return;\n var m = moment(value, scope.format);\n if (m.isValid()) return m._d;\n return;\n });\n \n }\n\n function openCalendar (e) {\n e.preventDefault();\n element.blur();\n element.parent().removeClass('md-input-focused');\n if (isOn) {\n return;\n }\n isOn = true;\n var options = {};\n for (var i in attrs) {\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\n options[i] = scope[i];\n }\n }\n options.currentDate = scope.currentDate;\n options.showTodaysDate = dateOfTheDay;\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n openFrom: element,\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n hasBackDrop: false,\n skipHide: true,\n multiple: true,\n };\n\n if (!options.templateUrl) {\n dialogOptions.template = template;\n } else {\n dialogOptions.templateUrl = options.templateUrl;\n }\n \n $mdDialog.show(dialogOptions).then(function (v) {\n scope.currentDate = v ? v._d : v;\n isOn = false;\n\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\n $timeout(scope.ngChange, 0);\n }\n\n element.parent().removeClass('md-input-focused');\n }, function () {\n isOn = false;\n element.parent().removeClass('md-input-focused');\n });\n }\n\n if (!scope.editInput) {\n if (scope.showIcon) {\n element.on('click', openCalendar);\n } else {\n element.on('focus', openCalendar);\n }\n }\n \n if (scope.showIcon) {\n element.addClass('dtp-no-msclear dtp-input');\n var calendarButton = \n '' +\n '' +\n '',\n clearButton = '';\n element.after($compile(calendarButton + clearButton)(scope));\n\n scope.openCalendarDiag = function(e) {\n openCalendar(e);\n };\n\n scope.clear = function() {\n ngModel.$setViewValue(null);\n scope.currentDate = null;\n ngModel.$render();\n $timeout(function() {\n element[0].focus();\n }, 0, false);\n };\n }\n }\n };\n }])\n /** Returns a service that opens a dialog when the attribute shown is called\n The dialog serves to select a date/time/etc. depending on the options given to the function show\n\n @param options extends mdcDefaultParams\n {\n date: {boolean} =true,\n time: {boolean} =true,\n minutes: {boolean} =true,\n seconds: {boolean} =false,\n format: {string} ='YYYY-MM-DD',\n minDate: {strign} =null,\n maxDate: {string} =null,\n currentDate: {string} =null,\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\n weekStart: {int} =0,\n shortTime: {boolean} =false,\n cancelText: {string} ='Cancel',\n showTodaysDate: {string} ='',\n todayText: {string} ='Today',\n okText: {string} ='OK',\n amText: {string} ='AM',\n pmText: {string} ='PM',\n disableDates: {date[]} =[],\n weekDays: {boolean} =false,\n disableParentScroll: {boolean} =false,\n autoOk: {boolean} =false,\n editInput: {boolean} =false,\n clickOutsideToClose: {boolean} =false,\n minuteSteps: {int} =5,\n }\n @return promise\n */\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\n var defaultParams = mdcDefaultParams();\n var accepted_options = Object.keys(defaultParams);\n var service = {\n show: function (options) {\n var deferred = $q.defer();\n var params = angular.copy(defaultParams);\n for (var i in options) {\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\n params = options[i];\n }\n }\n\n var dateOfTheDay = null;\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n options.showTodaysDate = dateOfTheDay;\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n skipHide: true,\n multiple: true,\n };\n\n if (!options.templateUrl) {\n dialogOptions.template = template;\n } else {\n dialogOptions.templateUrl = options.templateUrl;\n }\n\n $mdDialog.show(dialogOptions).then(function (v) {\n var currentDate = v ? v._d : v;\n deferred.resolve(v ? v._d : v);\n }, function () {\n deferred.reject();\n });\n return deferred.promise;\n }\n };\n\n return service;\n }])\n ;\n\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\n this.currentView = VIEW_STATES.DATE;\n this._dialog = $mdDialog;\n\n this._attachedEvents = [];\n this.VIEWS = VIEW_STATES;\n this.params = angular.copy(mdcDefaultParams());\n this.meridien = 'AM';\n this.params = angular.extend(this.params, this.options);\n\n this.init();\n };\n\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\n PluginController.prototype = {\n init: function () {\n this.timeMode = this.params.time && !this.params.date;\n this.dateMode = this.params.date;\n this.initDates();\n this.start();\n },\n currentNearestMinute: function () {\n var nearestMin = this.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n\n var date = this.currentDate || moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) {\n minutes = 60 - nearestMin; //always push down\n }\n var seconds = date.second();\n if (seconds >= 60) {\n seconds = 60 - 1; //always push down\n }\n return moment(date).minutes(minutes).seconds(seconds);\n },\n initDates: function () {\n var that = this;\n var _dateParam = function (input, fallback) {\n var ret = null;\n if (angular.isDefined(input) && input !== null && input !== '') {\n if (angular.isString(input)) {\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\n ret = moment(input, that.params.format).locale(that.params.lang);\n }\n else {\n ret = moment(input).locale(that.params.lang);\n }\n } else if (typeof input === 'number') {\n ret = moment(input).locale(that.params.lang);\n } else {\n if (angular.isDate(input)) {\n var x = input.getTime();\n ret = moment(x, \"x\").locale(that.params.lang);\n } else if (input._isAMomentObject) {\n ret = input;\n }\n }\n }\n else {\n ret = fallback;\n }\n return ret;\n };\n\n this.currentDate = _dateParam(this.params.currentDate, moment());\n this.currentDate = this.currentNearestMinute();\n this.minDate = _dateParam(this.params.minDate);\n this.maxDate = _dateParam(this.params.maxDate);\n this.disableDates = this.params.disableDates.map(function (x) {\n return moment(x).format('MMMM Do YYYY');\n });\n this.selectDate(this.currentDate);\n this.weekDays = this.params.weekDays;\n },\n initDate: function () {\n this.currentView = VIEW_STATES.DATE;\n },\n initHours: function () {\n this.currentView = VIEW_STATES.HOUR;\n },\n initMinutes: function () {\n this.currentView = VIEW_STATES.MINUTE;\n },\n initSeconds: function () {\n this.currentView = VIEW_STATES.SECOND;\n },\n isAfterMinDate: function (date, checkHour, checkMinute) {\n var _return = true;\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n var _minDate = moment(this.minDate);\n var _date = moment(date);\n\n if (!checkHour && !checkMinute) {\n _minDate.hour(0);\n _minDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _minDate.second(0);\n _date.second(0);\n _minDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _minDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\n var _return = true;\n\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n var _maxDate = moment(this.maxDate);\n var _date = moment(date);\n\n if (!checkTime && !checkMinute) {\n _maxDate.hour(0);\n _maxDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _maxDate.second(0);\n _date.second(0);\n _maxDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _maxDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isInDisableDates: function (date) {\n var dut = date.format('MMMM Do YYYY');\n if (this.disableDates.indexOf(dut) > -1) {\n return false;\n }\n return true;\n },\n isWeekDay: function(date) {\n if (this.weekDays) {\n if (date.isoWeekday() <= 5) {\n return true;\n }\n return false;\n }\n return true;\n },\n selectDate: function (date) {\n if (date) {\n this.currentDate = moment(date);\n if (!this.isAfterMinDate(this.currentDate)) {\n this.currentDate = moment(this.minDate);\n }\n\n if (!this.isBeforeMaxDate(this.currentDate)) {\n this.currentDate = moment(this.maxDate);\n }\n this.currentDate.locale(this.params.lang);\n this.calendarStart = moment(this.currentDate);\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\n }\n },\n isPM: function () {\n return this.meridien === 'PM';\n },\n incrementMonth: function (amount) {\n if (amount === 1 && this.isNextMonthVisible()) {\n this.selectDate(this.currentDate.add(amount, 'month'));\n }\n\n if (amount === -1 && this.isPreviousMonthVisible()) {\n this.selectDate(this.currentDate.add(amount, 'month'));\n }\n },\n incrementYear: function (amount) {\n if (amount === 1 && this.isNextYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n\n if (amount === -1 && this.isPreviousYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n },\n openMenu: function ($mdMenu, ev) {\n $mdMenu.open(ev); \n },\n monthsAvailable: function () {\n var monthsArr = [], \n _date = moment(this.currentDate);\n\n for (var m = 0; m < 12; m++) {\n var curMonth = _date.month(m);\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\n monthsArr.push(curMonth.format('MMMM'));\n }\n }\n return monthsArr;\n },\n selectMonth: function (month) {\n this.selectDate(this.currentDate.month(month));\n },\n yearsAvailable: function () {\n var _minDate, _maxDate, len, startYear, yearsArr = [],\n _date = this.currentDate.year();\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n _minDate = moment(this.minDate).year();\n }\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n _maxDate = moment(this.maxDate).year();\n }\n\n if (_maxDate && _minDate) {\n len = _maxDate - _minDate;\n startYear = _minDate;\n } else if (_minDate) { \n len = 115;\n startYear = _minDate;\n } else if (_maxDate) { \n len = 30;\n startYear = _maxDate - len;\n } else {\n len = 60;\n startYear = _date - len/2;\n }\n \n for (var i=0; i < len; i++) {\n yearsArr.push(startYear+i);\n }\n return yearsArr;\n },\n selectYear: function (year) {\n this.selectDate(this.currentDate.year(year));\n },\n isPreviousMonthVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\n },\n isNextMonthVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\n },\n isPreviousYearVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\n },\n isNextYearVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\n },\n isHourAvailable: function (hour) {\n var _date = moment(this.currentDate);\n if (this.params.shortTime) {\n _date.hour(this.convertHours(hour)).minute(0).second(0);\n } else {\n _date.hour(hour).minute(0).second(0);\n }\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\n },\n isMinuteAvailable: function (minute) {\n var _date = moment(this.currentDate);\n _date.minute(minute).second(0);\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\n },\n isSecondAvailable: function (second) {\n return true;\n },\n start: function () {\n this.currentView = VIEW_STATES.DATE;\n if (this.params.date) {\n this.initDate();\n } else {\n if (this.params.time) {\n this.initHours();\n }\n }\n },\n today: function () {\n var nearestMin = this.params.minuteSteps;\n var date = moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) {\n minutes = 60 - nearestMin; //always push down\n }\n this.selectDate(moment(date).minutes(minutes));\n },\n ok: function () {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n if (this.params.time === true) {\n this.initHours();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.HOUR:\n if (this.params.minutes === true) {\n this.initMinutes();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.MINUTE:\n if (this.params.seconds === true) {\n this.initSeconds();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.SECOND:\n this.hide(true);\n break;\n }\n },\n cancel: function () {\n if (this.params.time) {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n this.hide();\n break;\n case VIEW_STATES.HOUR:\n if (this.params.date) {\n this.initDate();\n }\n else {\n this.hide();\n }\n break;\n case VIEW_STATES.MINUTE:\n this.initHours();\n break;\n case VIEW_STATES.SECOND:\n this.initMinutes();\n break; \n }\n }\n else {\n this.hide();\n }\n },\n selectMonthBefore: function () {\n this.calendarStart.subtract(1, 'months');\n },\n selectMonthAfter: function () {\n this.calendarStart.add(1, 'months');\n },\n selectYearBefore: function () {\n this.calendarStart.subtract(1, 'years');\n },\n selectYearAfter: function () {\n this.calendarStart.add(1, 'years');\n },\n selectAM: function () {\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\n if (this.currentDate.hour() >= 12) {\n this.selectDate(this.currentDate.subtract(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\n }\n }\n },\n selectPM: function () {\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\n if (this.currentDate.hour() < 12) {\n this.selectDate(this.currentDate.add(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\n }\n }\n },\n convertHours: function (h) {\n var _return = h;\n if ((h < 12) && this.isPM())\n _return += 12;\n\n return _return;\n },\n hide: function (okBtn) {\n if (okBtn) {\n this._dialog.hide(this.currentDate);\n } else {\n this._dialog.cancel();\n }\n }\n };\n\n angular.module(moduleName)\n .directive('mdcDatetimePickerCalendar', [\n function () {\n\n var YEAR_MIN = 1920,\n YEAR_MAX = new Date().getFullYear() + 30,\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\n ITEM_HEIGHT = 240,\n MONTHS = [];\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\n MONTHS.push(i);\n }\n\n var currentMonthIndex = function (date, low) {\n low = low ? low : 0;\n var year = date.year();\n var month = date.month();\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\n };\n\n return {\n restrict: 'E',\n scope: {\n picker: '=',\n date: '='\n },\n bindToController: true,\n controllerAs: 'cal',\n controller: ['$scope', function ($scope) {\n var calendar = this, picker;\n\n this.$onInit = function () {\n picker = this.picker;\n\n var days = [];\n for (var i = picker.params.weekStart; days.length < 7; i++) {\n if (i > 6) {\n i = 0;\n }\n days.push(i.toString());\n }\n calendar.week = days;\n\n if (!picker.maxDate && !picker.minDate) {\n calendar.months = MONTHS;\n } else {\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\n calendar.months = MONTHS.slice(low, high);\n }\n\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\n };\n\n if (angular.version.major === 1 && angular.version.minor < 5) {\n this.$onInit();\n }\n \n calendar.getItemAtIndex = function (index) {\n var month = ((index + 1) % 12) || 12;\n var year = YEAR_MIN + Math.floor(index / 12);\n var monthObj = moment(picker.currentDate).year(year).month(month);\n return generateMonthCalendar(monthObj);\n };\n\n $scope.$watch(function () {\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\n }, function (val2, val1) {\n if (val2 != val1) {\n var nDate = moment(val2, 'YYYY-MM');\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var index = currentMonthIndex(nDate, low);\n if (calendar.topIndex != index) {\n calendar.topIndex = index;\n }\n }\n });\n\n var generateMonthCalendar = function (date) {\n var month = {};\n if (date !== null) {\n month.name = date.format('MMMM YYYY');\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\n .hour(date.hour())\n .minute(date.minute());\n var iNumDay = startOfMonth.format('d');\n month.days = [];\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\n if (i === startOfMonth.date()) {\n var iWeek = calendar.week.indexOf(iNumDay.toString());\n if (iWeek > 0) {\n for (var x = 0; x < iWeek; x++) {\n month.days.push(0);\n }\n }\n }\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\n }\n\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\n for (var j = 0; j < slices; j++) {\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\n }\n month.days = daysTmp;\n return month;\n }\n\n };\n\n calendar.toDay = function (i) {\n return moment(parseInt(i), \"d\")\n .locale(picker.params.lang)\n .format(\"dd\")\n .substring(0, 1);\n };\n\n calendar.isInRange = function (date) {\n return picker.isAfterMinDate(moment(date), false, false) &&\n picker.isBeforeMaxDate(moment(date), false, false) &&\n picker.isWeekDay(moment(date)) &&\n picker.isInDisableDates(moment(date));\n };\n\n calendar.selectDate = function (date) {\n if (date) {\n if (calendar.isSelectedDay(date)) {\n return picker.ok();\n }\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\n if (picker.params.autoOk) {\n picker.ok();\n }\n }\n };\n\n calendar.isSelectedDay = function (m) {\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\n };\n\n calendar.isDateOfTheDay = function (m) {\n var today = calendar.picker.options.showTodaysDate;\n if (!today) {\n return false;\n }\n\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\n };\n }],\n template: \n '' +\n '
' +\n '
' +\n '
' +\n '
'\n };\n }])\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\n function ($compile) {\n var buildCalendarContent = function (element, scope) {\n var tbody = angular.element(element[0].querySelector('tbody'));\n var calendar = scope.cal, month = scope.month;\n\n var tbodyHtml = [];\n\n month.days.forEach(function (weekDays, i) {\n tbodyHtml.push('');\n weekDays.forEach(function (weekDay, j) {\n tbodyHtml.push('');\n if (weekDay) {\n if (calendar.isInRange(weekDay)) {\n //build a\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\n\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n } else {\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n }\n }\n tbodyHtml.push('');\n });\n tbodyHtml.push('');\n });\n\n tbody.html(tbodyHtml.join(''));\n $compile(tbody)(scope);\n };\n\n return {\n scope: {\n idx: '='\n },\n require: '^mdcDatetimePickerCalendar',\n restrict: 'AE',\n template: \n '
{{month.name}}
' +\n '' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
{{cal.toDay(day)}}
',\n link: function (scope, element, attrs, calendar) {\n scope.cal = calendar;\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n scope.$watch(function () {\n return scope.idx;\n }, function (idx, oldIdx) {\n if (idx != oldIdx) {\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n }\n });\n }\n };\n }\n ])\n ;\n\n angular.module(moduleName)\n .directive('mdcDtpNoclick', function () {\n return {\n link: function (scope, el) {\n el.on('click', function (e) {\n e.preventDefault();\n });\n }\n };\n });\n angular.module(moduleName)\n .directive('mdcDatetimePickerClock', ['$timeout',\n function ($timeout) {\n\n var template = \n '
 ' +\n '
' +\n ' {{point.display}}' +\n ' {{point.display}}' +\n '
' +\n '' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
';\n\n return {\n restrict: 'E',\n template: template,\n link: function (scope, element, attrs) {\n var minuteMode = attrs.mode === 'minutes';\n var secondMode = attrs.mode === 'seconds';\n var picker = scope.picker;\n //banking on the fact that there will only be one at a time\n var componentRoot = document.querySelector('md-dialog.dtp');\n\n var setTimeDegRay = function(deg, ray) {\n var val = 0;\n deg = deg >= 360 ? 0 : deg;\n if (deg !== 0) {\n var divider = minuteMode||secondMode ? 60 : 12;\n val = Math.round(divider / 360 * deg);\n }\n\n if (minuteMode) {\n var nearestMin = picker.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n\n var minutes = (nearestMin * Math.round(val / nearestMin));\n if (minutes >= 60) {\n minutes = 60 - nearestMin; //always push down\n }\n picker.currentDate.minute(minutes);\n } else if (!secondMode){\n if (val === 12) val = 0;\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\n } else {\n if (val >= 60) val = 0;\n picker.currentDate.second(val);\n }\n \n };\n\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\n EVENTS = {\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\n };\n\n var onMoveEvent = function(e) {\n e.preventDefault();\n\n var closestTarget = e.currentTarget.closest('div'),\n clientRect = closestTarget.getClientRects()[0];\n\n if (isTouchSupported) e = e.changedTouches[0];\n \n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\n \n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\n\n $timeout(function() {\n setTimeDegRay(deg+180, ray);\n });\n };\n\n element.on(EVENTS.POINTER_DOWN, function() {\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\n });\n\n element.on(EVENTS.POINTER_UP, function() {\n element.off(EVENTS.POINTER_MOVE);\n });\n\n scope.$on(\"$destroy\", function() {\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \n });\n\n var exec = function () {\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\n\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\n //set width\n var clockWidth = (w - (ml + mr + pl + pr));\n clock.css('width', (clockWidth) + 'px');\n\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\n\n var r = (clockWidth / 2);\n var j = r / 1.2; // radius for low number\n \n var points = [];\n\n for (var h = 0; h < 12; ++h) {\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\n var left = (r + x + pL / 2) - (pL + mL);\n var top = (r - y - mT / 2) - (pT + mT);\n\n var hour = {\n left: left,\n top: top,\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\n };\n\n if (minuteMode || secondMode) {\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\n } else {\n if (picker.params.shortTime) {\n hour.display = (h === 0) ? 12 : h;\n } else {\n hour.display = h;\n }\n }\n\n points.push(hour);\n }\n scope.points = points;\n\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\n var points24 = [];\n\n var j24 = r / 1.8; // radius for high number\n for (var h24 = 12; h24 < 24; ++h24) {\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\n var left24 = (r + x24 + pL / 2) - (pL + mL);\n var top24 = (r - y24 - mT / 2) - (pT + mT);\n\n var hour24 = {\n left: left24,\n top: top24,\n value: h24,\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\n };\n\n hour24.display = h24;\n\n points24.push(hour24);\n }\n scope.points24 = points24;\n }\n\n scope.mode = attrs.mode;\n setCurrentValue();\n clock.css('height', clockWidth + 'px');\n\n var clockCenter = element[0].querySelector('.dtp-clock-center');\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\n var _mL = r / 1.4;\n var _sL = r / 1;\n\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _hL + 'px',\n marginTop: (r - _hL - pL) + 'px'\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\n ({\n left: r + (mL * 1.5) + 'px',\n height: _mL + 'px',\n marginTop: (r - _mL - pL) + 'px'\n }).addClass(minuteMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-second-hand')).css\n ({\n left: r + (mL * 1.5) + 'px',\n height: _sL + 'px',\n marginTop: (r - _sL - pL) + 'px'\n }).addClass(secondMode ? 'on' : '');\n\n angular.element(clockCenter).css({\n left: (r + pL + mL - centerWidth) + 'px',\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\n });\n animateHands();\n };\n\n var animateHands = function () {\n var _date = picker.currentNearestMinute();\n var h = _date.hour();\n var m = _date.minute();\n var s = _date.second();\n\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\n };\n\n var rotateElement = function (el, deg) {\n angular.element(el).css({\n WebkitTransform: 'rotate(' + deg + 'deg)',\n '-moz-transform': 'rotate(' + deg + 'deg)',\n '-ms-transform': 'rotate(' + deg + 'deg)',\n 'transform': 'rotate(' + deg + 'deg)'\n });\n };\n\n\n var setCurrentValue = function () {\n var date = picker.currentNearestMinute();\n var nbH = picker.params.shortTime ? 12 : 24;\n if (minuteMode) {\n scope.currentValue = date.minute();\n } else if (secondMode) {\n scope.currentValue = date.second();\n } else {\n scope.currentValue = date.hour() % nbH;\n }\n };\n\n scope.$watch(function () {\n var tmp = picker.currentNearestMinute();\n return tmp ? tmp.format('HH:mm:ss') : '';\n }, function () {\n setCurrentValue();\n animateHands();\n });\n\n scope.setTime = function (val) {\n if (!minuteMode && !secondMode) {\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\n\n if (picker.params.shortTime) {\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\n } else {\n picker.currentDate.hour(val);\n if (val >= 12) picker.meridien = 'PM';\n else picker.meridien = 'AM';\n }\n\n if (picker.params.autoOk) picker.ok(); // single click\n } else if (!secondMode) {\n if (val === scope.currentValue && !picker.params.seconds) {\n picker.ok(); // double click\n }\n picker.currentDate.minute(val);\n if (!picker.params.seconds) {\n picker.currentDate.second(0);\n } else if (picker.params.autoOk) picker.ok(); // single click\n } else {\n if (val === scope.currentValue) picker.ok(); // double click\n picker.currentDate.second(val);\n }\n };\n\n scope.pointAvailable = function (point) {\n if (minuteMode) {\n return picker.isMinuteAvailable(point.value);\n } else if (secondMode) {\n return picker.isSecondAvailable(point.value);\n } else {\n return picker.isHourAvailable(point.value);\n }\n };\n\n var unWatcher = scope.$watch(function () {\n return element[0].querySelectorAll('div').length;\n }, function () {\n exec();\n unWatcher();\n });\n }\n };\n }]);\n return moduleName;\n }\n\n var isElectron = window && window.process && window.process.type;\n if (typeof define === 'function' && define.amd) {\n define(['moment'], ngMaterialDatePicker);\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\n module.exports = ngMaterialDatePicker(require('moment'));\n } else {\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\n }\n})();\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"CAAA,WACE,aAEA,SAASA,EAAqBC,GAC9B,IAAIC,EAAa,uBAKbC,GAAeC,KAAM,EAAGC,KAAM,EAAGC,OAAQ,GAEzCC,EAAM,SAAUC,EAAIC,GAEtB,OADAD,EAAKE,QAAQC,QAAQH,GACb,qBAAsBI,OAAUA,OAAOC,iBAAiBL,EAAG,IAAIC,GAAQD,EAAGD,IAAIE,IAGpFK,EACF,owNA4EFJ,QAAQK,OAAOb,GAAa,eACzBc,QAAQ,kCAAmC,mBAAoB,SAAUC,GACxEC,KAAKC,KAAO,WAEV,OADAC,QAAQC,IAAI,8CACLJ,IAAmBK,MAG5BJ,KAAKK,iBAAmB,SAAUC,GAChCJ,QAAQC,IAAI,8CACZJ,GAAmBK,KAAME,QAG5BC,QAAQ,mBAAoB,WAC3B,IAAIC,GACFC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,SAAS,EACTC,OAAQ,aACRC,QAAS,KACTC,QAAS,KACTC,YAAa,KACbZ,KAAMV,OAAOuB,UAAUC,cAAgBxB,OAAOuB,UAAUE,UAAY,KACpEC,UAAW,EACXC,WAAW,EACXC,WAAY,SACZC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,UAAW,QACXC,gBACAC,UAAU,EACVC,qBAAqB,EACrBC,QAAQ,EACRC,WAAW,EACXC,qBAAqB,EACrBC,YAAa,EACbC,UAAU,EACVtC,SAAUA,EACVuC,YAAa,IAGf,OAAO,SAAUC,GACf,GAAIA,EACF,IAAK,IAAIC,KAAKD,EACR5B,EAAe8B,eAAeD,IAAMD,EAAOE,eAAeD,KAC5D7B,EAAe6B,GAAKD,EAAOC,IAKjC,OAAO7B,KAGV+B,UAAU,qBAAsB,YAAa,WAAY,WACxD,SAAUC,EAAWC,EAAUC,GAE7B,OACEC,SAAU,IACVC,QAAS,UACTC,OACE7B,YAAa,WACb8B,SAAU,IACVpC,KAAM,IACND,KAAM,IACNE,QAAS,IACTC,QAAS,IACTE,QAAS,IACTC,QAAS,IACTY,aAAc,IACdC,SAAU,IACVP,UAAW,IACXD,UAAW,IACXP,OAAQ,IACRS,WAAY,IACZC,OAAQ,IACRnB,KAAM,IACNoB,OAAQ,IACRC,OAAQ,IACRsB,eAAgB,IAChBrB,UAAW,IACXG,oBAAqB,IACrBC,OAAQ,IACRC,UAAW,IACXC,oBAAqB,IACrBC,YAAa,IACbC,SAAU,IACVC,YAAa,KAEfa,KAAM,SAAUH,EAAOpD,EAASwD,EAAOC,GA0CrC,SAASC,EAAcC,GAIrB,GAHAA,EAAEC,iBACF5D,EAAQ6D,OACR7D,EAAQ8D,SAASC,YAAY,qBACzBC,EAAJ,CAGAA,GAAO,EACP,IAAIC,KACJ,IAAK,IAAIrB,KAAKY,EACRJ,EAAMP,eAAeD,KAAO7C,QAAQmE,YAAYd,EAAMR,MACxDqB,EAAQrB,GAAKQ,EAAMR,IAGvBqB,EAAQ1C,YAAc6B,EAAM7B,YAC5B0C,EAAQX,eAAiBa,EAEzB,IAAIC,GACFC,WAAYC,EACZC,aAAc,SACdC,QAASP,QAASA,GAClBQ,SAAUzE,EACV8D,OAAQ/D,QAAQC,QAAQ0E,SAASC,MACjCC,kBAAkB,EAClBrC,oBAAqB0B,EAAQ1B,sBAAuB,EACpDH,oBAAqB6B,EAAQ7B,sBAAuB,EACpDyC,aAAa,EACbC,UAAU,EACVC,UAAU,GAGPd,EAAQvB,YACR0B,EAAc1B,YAAcuB,EAAQvB,YADf0B,EAAcjE,SAAWA,EAGnD4C,EAAUiC,KAAKZ,GAAea,KAAK,SAASC,GAC1C9B,EAAM7B,YAAc2D,EAAIA,EAAEC,GAAKD,EAC/BlB,GAAO,EAEF1E,EAAO8D,EAAM7B,aAAa6D,OAAOnB,EAAQ1C,cAC5CyB,EAASI,EAAMC,SAAU,GAG3BrD,EAAQ8D,SAASC,YAAY,qBAC5B,WACDC,GAAO,EACPhE,EAAQ8D,SAASC,YAAY,uBAtFjC,IAAIC,GAAO,EACNZ,EAAMhC,SACLgC,EAAMpC,MAAQoC,EAAMnC,MAAQmC,EAAMjC,QACpCiC,EAAMhC,OAAS,sBACNgC,EAAMpC,MAAQoC,EAAMnC,KAC7BmC,EAAMhC,OAAS,mBACNgC,EAAMpC,KACfoC,EAAMhC,OAAS,aAEfgC,EAAMhC,OAAS,SAInB,IAAI+C,EAAe,KASnB,QAR6BkB,IAAzBjC,EAAME,gBAAyD,UAAzBF,EAAME,iBAC9Ca,EAAe7E,KAGbS,QAAQuF,SAASlC,EAAM7B,cAAsC,KAAtB6B,EAAM7B,cAC/C6B,EAAM7B,YAAcjC,EAAO8D,EAAM7B,YAAa6B,EAAMhC,SAGlDqC,EAAS,CACX,IAAI8B,GAAkBC,IAAK,WAAYC,SAAU,KACjDhC,EAAQiC,SAAWjC,EAAQiC,SAAWjC,EAAQiC,SAASC,YAAYJ,GAAkBA,EAErF9B,EAAQmC,YAAYC,KAAK,SAAUC,GACjC,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAIzG,EAAOwG,GACf,OAAOC,EAAEC,UAAYD,EAAE3E,OAAOgC,EAAMhC,QAAU,MAGhDqC,EAAQwC,SAASJ,KAAK,SAAUC,GAC9B,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAIzG,EAAOwG,EAAO1C,EAAMhC,QAC5B,OAAI2E,EAAEC,UAAkBD,EAAEZ,QAA1B,KA+DJ,GARK/B,EAAMd,YACLc,EAAMX,SACRzC,EAAQkG,GAAG,QAASxC,GAEpB1D,EAAQkG,GAAG,QAASxC,IAIpBN,EAAMX,SAAU,CAClBzC,EAAQmG,SAAS,4BACjB,IAAIC,EACJ,wLAGsDhD,EAAMpC,KAxRvD,qVADC,8fAyRyF,2BAG/FhB,EAAQqG,MAAMpD,EAASmD,EADT,+HACAnD,CAAuCG,IAErDA,EAAMkD,iBAAmB,SAAS3C,GAChCD,EAAaC,IAGfP,EAAMmD,MAAQ,WACZ9C,EAAQ+C,cAAc,MACtBpD,EAAM7B,YAAc,KACpBkC,EAAQgD,UACRzD,EAAS,WACPhD,EAAQ,GAAG0G,SACV,GAAG,UAwCjB5F,QAAQ,qBAAsB,YAAa,KAAM,mBAAoB,SAAUiC,EAAW4D,EAAIrG,GAC7F,IAAIsG,EAAgBtG,IAChBuG,EAAmBC,OAAOC,KAAKH,GA0CnC,OAxCE5B,KAAM,SAAUf,GACd,IAAI+C,EAAWL,EAAGM,QACLlH,QAAQmH,KAAKN,GAC1B,IAAK,IAAIhE,KAAKqB,GACwB,GAAhC4C,EAAiBM,QAAQvE,IAAYqB,EAAQpB,eAAeD,IACrDqB,EAAQrB,GAIrB,IAAIuB,EAAe,UACYkB,IAA3BpB,EAAQX,gBAA2D,UAA3BW,EAAQX,iBAClDa,EAAe7E,KAEjB2E,EAAQX,eAAiBa,EAEzB,IAAIC,GACAC,WAAYC,EACZC,aAAc,SACdC,QAASP,QAASA,GAClBH,OAAQ/D,QAAQC,QAAQ0E,SAASC,MACjCC,kBAAkB,EAClBrC,oBAAqB0B,EAAQ1B,sBAAuB,EACpDH,oBAAqB6B,EAAQ7B,sBAAuB,EACpD0C,UAAU,EACVC,UAAU,GAYd,OATKd,EAAQvB,YACR0B,EAAc1B,YAAcuB,EAAQvB,YADf0B,EAAcjE,SAAWA,EAGnD4C,EAAUiC,KAAKZ,GAAea,KAAK,SAAUC,GACzBA,GAAIA,EAAEC,GACxB6B,EAASI,QAAQlC,EAAIA,EAAEC,GAAKD,IAC3B,WACD8B,EAASK,WAEJL,EAASM,aAQxB,IAAIhD,EAAmB,SAAUiD,EAAQxE,EAAWzC,GAClDC,KAAKiH,YAAchI,EAAYC,KAC/Bc,KAAKkH,QAAU1E,EAEfxC,KAAKmH,mBACLnH,KAAKoH,MAAQnI,EACbe,KAAKoC,OAAS5C,QAAQmH,KAAK5G,KAC3BC,KAAKqH,SAAW,KAChBrH,KAAKoC,OAAS5C,QAAQ8H,OAAOtH,KAAKoC,OAAQpC,KAAK0D,SAE/C1D,KAAKuH,QAq6BL,OAl6BFxD,EAAiByD,SAAW,SAAU,YAAa,oBACnDzD,EAAiB0D,WACfF,KAAM,WACJvH,KAAK0H,SAAW1H,KAAKoC,OAAO1B,OAASV,KAAKoC,OAAO3B,KACjDT,KAAK2H,SAAW3H,KAAKoC,OAAO3B,KAC5BT,KAAK4H,YACL5H,KAAK6H,SAEPC,qBAAsB,WACpB,IAAIC,EAAa/H,KAAKoC,OAAOH,aACzB8F,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAItH,EAAOT,KAAKgB,aAAejC,IAC3B4B,EAAWoH,EAAaC,KAAKC,MAAMxH,EAAKyH,SAAWH,GACnDpH,GAAW,KACbA,EAAU,GAAKoH,GAEjB,IAAInH,EAAUH,EAAK0H,SAInB,OAHIvH,GAAW,KACbA,EAAU,IAEL7B,EAAO0B,GAAME,QAAQA,GAASC,QAAQA,IAE/CgH,UAAW,WACT,IAAIQ,EAAOpI,KACPqI,EAAa,SAAUC,EAAOC,GAChC,IAAIC,EAAM,KACV,GAAIhJ,QAAQiJ,UAAUH,IAAoB,OAAVA,GAA4B,KAAVA,EAChD,GAAI9I,QAAQuF,SAASuD,GAEjBE,OADiC,IAAxBJ,EAAKhG,OAAa,QAA4C,OAAvBgG,EAAKhG,OAAOvB,OACtD9B,EAAOuJ,EAAOF,EAAKhG,OAAOvB,QAAQ6H,OAAON,EAAKhG,OAAOhC,MAGrDrB,EAAOuJ,GAAOI,OAAON,EAAKhG,OAAOhC,WAEpC,GAAqB,iBAAVkI,EAChBE,EAAMzJ,EAAOuJ,GAAOI,OAAON,EAAKhG,OAAOhC,WAEvC,GAAIZ,QAAQmJ,OAAOL,GAAQ,CACzB,IAAIM,EAAIN,EAAMO,UACdL,EAAMzJ,EAAO6J,EAAG,KAAKF,OAAON,EAAKhG,OAAOhC,WAC/BkI,EAAMQ,mBACfN,EAAMF,QAKVE,EAAMD,EAER,OAAOC,GAGTxI,KAAKgB,YAAcqH,EAAWrI,KAAKoC,OAAOpB,YAAajC,KACvDiB,KAAKgB,YAAchB,KAAK8H,uBACxB9H,KAAKc,QAAUuH,EAAWrI,KAAKoC,OAAOtB,SACtCd,KAAKe,QAAUsH,EAAWrI,KAAKoC,OAAOrB,SACtCf,KAAK2B,aAAe3B,KAAKoC,OAAOT,aAAaoH,IAAI,SAAUH,GACzD,OAAO7J,EAAO6J,GAAG/H,OAAO,kBAE1Bb,KAAKgJ,WAAWhJ,KAAKgB,aACrBhB,KAAK4B,SAAW5B,KAAKoC,OAAOR,UAE9BqH,SAAU,WACRjJ,KAAKiH,YAAchI,EAAYC,MAEjCgK,UAAW,WACTlJ,KAAKiH,YAAchI,EAAYE,MAEjCgK,YAAa,WACXnJ,KAAKiH,YAAchI,EAAYG,QAEjCgK,YAAa,WACXpJ,KAAKiH,YAAchI,EAAYoK,QAEjCC,eAAgB,SAAU7I,EAAM8I,EAAWC,GACzC,IAAIC,GAAU,EAEd,QAA6B,IAAlBzJ,KAAY,SAAsC,OAAjBA,KAAKc,QAAkB,CACjE,IAAI4I,EAAW3K,EAAOiB,KAAKc,SACvB6I,EAAQ5K,EAAO0B,GAEd8I,GAAcC,IACjBE,EAASE,KAAK,GACdF,EAASxB,OAAO,GAEhByB,EAAMC,KAAK,GACXD,EAAMzB,OAAO,IAGfwB,EAASvB,OAAO,GAChBwB,EAAMxB,OAAO,GACbuB,EAASG,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASJ,EAAS7I,OAAO,OANnE8I,EAAMzB,OAAO,GACbwB,EAASxB,OAAO,GAEhBuB,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASJ,EAAS7I,OAAO,OAOvE,OAAO4I,GAETM,gBAAiB,SAAUtJ,EAAMuJ,EAAWR,GAC1C,IAAIC,GAAU,EAEd,QAA6B,IAAlBzJ,KAAY,SAAsC,OAAjBA,KAAKe,QAAkB,CACjE,IAAIkJ,EAAWlL,EAAOiB,KAAKe,SACvB4I,EAAQ5K,EAAO0B,GAEduJ,GAAcR,IACjBS,EAASL,KAAK,GACdK,EAAS/B,OAAO,GAEhByB,EAAMC,KAAK,GACXD,EAAMzB,OAAO,IAGf+B,EAAS9B,OAAO,GAChBwB,EAAMxB,OAAO,GACb8B,EAASJ,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASG,EAASpJ,OAAO,OANnE8I,EAAMzB,OAAO,GACb+B,EAAS/B,OAAO,GAEhBuB,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASG,EAASpJ,OAAO,OAOvE,OAAO4I,GAETS,iBAAkB,SAAUzJ,GAC1B,IAAI0J,EAAM1J,EAAKI,OAAO,gBACtB,QAAIb,KAAK2B,aAAaiF,QAAQuD,IAAQ,IAKxCC,UAAW,SAAS3J,GAClB,OAAIT,KAAK4B,UACHnB,EAAK4J,cAAgB,GAO7BrB,WAAY,SAAUvI,GAChBA,IACFT,KAAKgB,YAAcjC,EAAO0B,GACrBT,KAAKsJ,eAAetJ,KAAKgB,eAC5BhB,KAAKgB,YAAcjC,EAAOiB,KAAKc,UAG5Bd,KAAK+J,gBAAgB/J,KAAKgB,eAC7BhB,KAAKgB,YAAcjC,EAAOiB,KAAKe,UAEjCf,KAAKgB,YAAY0H,OAAO1I,KAAKoC,OAAOhC,MACpCJ,KAAKsK,cAAgBvL,EAAOiB,KAAKgB,aACjChB,KAAKqH,SAAWrH,KAAKgB,YAAY4I,QAAU,GAAK,KAAO,OAG3DW,KAAM,WACJ,MAAyB,OAAlBvK,KAAKqH,UAEdmD,eAAgB,SAAUC,GACT,IAAXA,GAAgBzK,KAAK0K,sBACvB1K,KAAKgJ,WAAWhJ,KAAKgB,YAAY2J,IAAIF,EAAQ,WAG/B,IAAZA,GAAiBzK,KAAK4K,0BACxB5K,KAAKgJ,WAAWhJ,KAAKgB,YAAY2J,IAAIF,EAAQ,WAGjDI,cAAe,SAAUJ,GACR,IAAXA,GAAgBzK,KAAK8K,qBACvB9K,KAAKgJ,WAAWhJ,KAAKgB,YAAY2J,IAAIF,EAAQ,UAG/B,IAAZA,GAAiBzK,KAAK+K,yBACxB/K,KAAKgJ,WAAWhJ,KAAKgB,YAAY2J,IAAIF,EAAQ,UAGjDO,SAAU,SAAUC,EAASC,GAC3BD,EAAQE,KAAKD,IAEfE,gBAAiB,WAIf,IAAK,IAHDC,KACA1B,EAAQ5K,EAAOiB,KAAKgB,aAEfwE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAI8F,EAAW3B,EAAM4B,MAAM/F,GACvBxF,KAAKsJ,eAAegC,EAASE,MAAM,WAAaxL,KAAK+J,gBAAgBuB,EAASG,QAAQ,WACxFJ,EAAU/F,KAAKgG,EAASzK,OAAO,SAGnC,OAAOwK,GAETK,YAAa,SAAUH,GACrBvL,KAAKgJ,WAAWhJ,KAAKgB,YAAYuK,MAAMA,KAEzCI,eAAgB,WACd,IAAIjC,EAAUO,EAAU2B,EAAKC,EAAWC,KACxCnC,EAAQ3J,KAAKgB,YAAY+K,YAEI,IAAlB/L,KAAY,SAAsC,OAAjBA,KAAKc,UAC/C4I,EAAW3K,EAAOiB,KAAKc,SAASiL,aAEL,IAAlB/L,KAAY,SAAsC,OAAjBA,KAAKe,UAC/CkJ,EAAWlL,EAAOiB,KAAKe,SAASgL,QAG9B9B,GAAYP,GACdkC,EAAM3B,EAAWP,EACjBmC,EAAYnC,GACHA,GACTkC,EAAM,IACNC,EAAYnC,GAGZmC,EAFS5B,EAEGA,GADZ2B,EAAM,IAIMjC,GADZiC,EAAM,IACkB,EAG1B,IAAK,IAAIvJ,EAAE,EAAGA,EAAIuJ,EAAKvJ,IACrByJ,EAASxG,KAAKuG,EAAUxJ,GAE1B,OAAOyJ,GAETE,WAAY,SAAUD,GACpB/L,KAAKgJ,WAAWhJ,KAAKgB,YAAY+K,KAAKA,KAExCnB,uBAAwB,WACtB,OAAO5K,KAAKsK,eAAiBtK,KAAKsJ,eAAevK,EAAOiB,KAAKsK,eAAemB,QAAQ,UAAU,GAAO,IAEvGf,mBAAoB,WAClB,OAAO1K,KAAKsK,eAAiBtK,KAAK+J,gBAAgBhL,EAAOiB,KAAKsK,eAAekB,MAAM,UAAU,GAAO,IAEtGT,sBAAuB,WACrB,OAAO/K,KAAKsK,eAAiBtK,KAAKsJ,eAAevK,EAAOiB,KAAKsK,eAAemB,QAAQ,SAAS,GAAO,IAEtGX,kBAAmB,WACjB,OAAO9K,KAAKsK,eAAiBtK,KAAK+J,gBAAgBhL,EAAOiB,KAAKsK,eAAekB,MAAM,SAAS,GAAO,IAErGS,gBAAiB,SAAUrC,GACzB,IAAID,EAAQ5K,EAAOiB,KAAKgB,aAMxB,OALIhB,KAAKoC,OAAOf,UACdsI,EAAMC,KAAK5J,KAAKkM,aAAatC,IAAO1B,OAAO,GAAGC,OAAO,GAErDwB,EAAMC,KAAKA,GAAM1B,OAAO,GAAGC,OAAO,GAE7BnI,KAAKsJ,eAAeK,GAAO,GAAM,IAAU3J,KAAK+J,gBAAgBJ,GAAO,GAAM,IAEtFwC,kBAAmB,SAAUjE,GAC3B,IAAIyB,EAAQ5K,EAAOiB,KAAKgB,aAExB,OADA2I,EAAMzB,OAAOA,GAAQC,OAAO,GACrBnI,KAAKsJ,eAAeK,GAAO,GAAM,IAAS3J,KAAK+J,gBAAgBJ,GAAO,GAAM,IAErFyC,kBAAmB,SAAUjE,GAC3B,OAAO,GAETN,MAAO,WACL7H,KAAKiH,YAAchI,EAAYC,KAC3Bc,KAAKoC,OAAO3B,KACdT,KAAKiJ,WAEDjJ,KAAKoC,OAAO1B,MACdV,KAAKkJ,aAIXmD,MAAO,WACL,IAAItE,EAAa/H,KAAKoC,OAAOH,YACzBxB,EAAO1B,IACP4B,EAAWoH,EAAaC,KAAKC,MAAMxH,EAAKyH,SAAWH,GACnDpH,GAAW,KACbA,EAAU,GAAKoH,GAEjB/H,KAAKgJ,WAAWjK,EAAO0B,GAAME,QAAQA,KAEvC2L,GAAI,WACF,OAAQtM,KAAKiH,aACX,KAAKhI,EAAYC,MACU,IAArBc,KAAKoC,OAAO1B,KACdV,KAAKkJ,YAELlJ,KAAKuM,MAAK,GAEZ,MACF,KAAKtN,EAAYE,MACa,IAAxBa,KAAKoC,OAAOzB,QACdX,KAAKmJ,cAELnJ,KAAKuM,MAAK,GAEZ,MACF,KAAKtN,EAAYG,QACa,IAAxBY,KAAKoC,OAAOxB,QACdZ,KAAKoJ,cAELpJ,KAAKuM,MAAK,GAEZ,MACF,KAAKtN,EAAYoK,OACfrJ,KAAKuM,MAAK,KAIhBC,OAAQ,WACN,GAAIxM,KAAKoC,OAAO1B,KACd,OAAQV,KAAKiH,aACX,KAAKhI,EAAYC,KACfc,KAAKuM,OACL,MACF,KAAKtN,EAAYE,KACXa,KAAKoC,OAAO3B,KACdT,KAAKiJ,WAGLjJ,KAAKuM,OAEP,MACF,KAAKtN,EAAYG,OACfY,KAAKkJ,YACL,MACF,KAAKjK,EAAYoK,OACfrJ,KAAKmJ,mBAKTnJ,KAAKuM,QAGTE,kBAAmB,WACjBzM,KAAKsK,cAAcoC,SAAS,EAAG,WAEjCC,iBAAkB,WAChB3M,KAAKsK,cAAcK,IAAI,EAAG,WAE5BiC,iBAAkB,WAChB5M,KAAKsK,cAAcoC,SAAS,EAAG,UAEjCG,gBAAiB,WACf7M,KAAKsK,cAAcK,IAAI,EAAG,UAE5BmC,SAAU,YACJ9M,KAAKiM,gBAAgB,IAAMjM,KAAKiM,gBAAgB,OAC9CjM,KAAKgB,YAAY4I,QAAU,IAC7B5J,KAAKgJ,WAAWhJ,KAAKgB,YAAY0L,SAAS,GAAI,UAE3C1M,KAAKiM,gBAAgBjM,KAAKgB,YAAY4I,SACzC5J,KAAKgJ,WAAWhJ,KAAKgB,YAAY4I,KAAK5J,KAAKc,QAAQ8I,SAEhD5J,KAAKmM,kBAAkBnM,KAAKgB,YAAYkH,WAC3ClI,KAAKgJ,WAAWhJ,KAAKgB,YAAYkH,OAAOlI,KAAKc,QAAQoH,aAI3D6E,SAAU,YACJ/M,KAAKiM,gBAAgB,KAAOjM,KAAKiM,gBAAgB,OAC/CjM,KAAKgB,YAAY4I,OAAS,IAC5B5J,KAAKgJ,WAAWhJ,KAAKgB,YAAY2J,IAAI,GAAI,UAEtC3K,KAAKiM,gBAAgBjM,KAAKgB,YAAY4I,SACzC5J,KAAKgJ,WAAWhJ,KAAKgB,YAAY4I,KAAK5J,KAAKe,QAAQ6I,SAEhD5J,KAAKmM,kBAAkBnM,KAAKgB,YAAYkH,WAC3ClI,KAAKgJ,WAAWhJ,KAAKgB,YAAYkH,OAAOlI,KAAKe,QAAQmH,aAI3DgE,aAAc,SAAUc,GACtB,IAAIvD,EAAUuD,EAId,OAHKA,EAAI,IAAOhN,KAAKuK,SACnBd,GAAW,IAENA,GAET8C,KAAM,SAAUU,GACVA,EACFjN,KAAKkH,QAAQqF,KAAKvM,KAAKgB,aAEvBhB,KAAKkH,QAAQsF,WAKnBhN,QAAQK,OAAOb,GACZuD,UAAU,6BACT,WAOE,IAAK,IAHH2K,EAA4C,KADjC,IAAIC,MAAOC,cAAgB,GADzB,KAE0B,GAEvCC,KACOhL,EAAI,EAAGA,EAAI6K,EAAe7K,IACjCgL,EAAO/H,KAAKjD,GAGd,IAAIiL,EAAoB,SAAU7M,EAAM8M,GAItC,OAHAA,EAAMA,GAAY,EAGW,IAFlB9M,EAAKsL,OAXH,MAYDtL,EAAK8K,QAC0B,EAAMgC,GAGnD,OACE5K,SAAU,IACVE,OACE2K,OAAQ,IACR/M,KAAM,KAER4D,kBAAkB,EAClBL,aAAc,MACdF,YAAa,SAAU,SAAUkD,GAC/B,IAAqBwG,EAAjBC,EAAWzN,KAEfA,KAAK0N,QAAU,WAIb,IAAK,IADDC,KACKtL,GAHTmL,EAASxN,KAAKwN,QAGMpL,OAAOhB,UAAWuM,EAAKC,OAAS,EAAGvL,IACjDA,EAAI,IACNA,EAAI,GAENsL,EAAKrI,KAAKjD,EAAEwL,YAId,GAFAJ,EAASK,KAAOH,EAEXH,EAAOzM,SAAYyM,EAAO1M,QAExB,CACL,IAAIyM,EAAMC,EAAO1M,QAAUwM,EAAkBE,EAAO1M,SAAW,EAC3DiN,EAAOP,EAAOzM,QAAWuM,EAAkBE,EAAOzM,SAAW,EAAKmM,EACtEO,EAASO,OAASX,EAAOY,MAAMV,EAAKQ,QAJpCN,EAASO,OAASX,EAOpBI,EAASS,SAAWZ,EAAkBE,EAAOxM,aAAeyM,EAASO,OAAO,IAGhD,IAA1BxO,QAAQ2O,QAAQC,OAAe5O,QAAQ2O,QAAQE,MAAQ,GACzDrO,KAAK0N,UAGPD,EAASa,eAAiB,SAAUC,GAClC,IAAIhD,GAAUgD,EAAQ,GAAK,IAAO,GAC9BxC,EAxDK,KAwDa/D,KAAKwG,MAAMD,EAAQ,IACrCE,EAAW1P,EAAOyO,EAAOxM,aAAa+K,KAAKA,GAAMR,MAAMA,GAC3D,OAAOmD,EAAsBD,IAG/BzH,EAAO2H,OAAO,WACZ,OAAOnB,EAAOxM,YAAcwM,EAAOxM,YAAYH,OAAO,WAAa,IAClE,SAAU+N,EAAMC,GACjB,GAAID,GAAQC,EAAM,CAChB,IAAIC,EAAQ/P,EAAO6P,EAAM,WACrBrB,EAAMC,EAAO1M,QAAUwM,EAAkBE,EAAO1M,SAAW,EAC3DyN,EAAQjB,EAAkBwB,EAAOvB,GACjCE,EAASS,UAAYK,IACvBd,EAASS,SAAWK,MAK1B,IAAIG,EAAwB,SAAUjO,GACpC,IAAI8K,KACJ,GAAa,OAAT9K,EAAe,CACjB8K,EAAMhM,KAAOkB,EAAKI,OAAO,aACzB,IAAIkO,EAAehQ,EAAO0B,GAAMiI,OAAO8E,EAAOpL,OAAOhC,MAAMqL,QAAQ,SAC9D7B,KAAKnJ,EAAKmJ,QACV1B,OAAOzH,EAAKyH,UACb8G,EAAUD,EAAalO,OAAO,KAClC0K,EAAMoC,QACN,IAAK,IAAItL,EAAI0M,EAAatO,OAAQ4B,GAAK0M,EAAaE,cAAe5M,IAAK,CACtE,GAAIA,IAAM0M,EAAatO,OAAQ,CAC7B,IAAIyO,EAAQzB,EAASK,KAAKlH,QAAQoI,EAAQnB,YAC1C,GAAIqB,EAAQ,EACV,IAAK,IAAItG,EAAI,EAAGA,EAAIsG,EAAOtG,IACzB2C,EAAMoC,KAAKrI,KAAK,GAItBiG,EAAMoC,KAAKrI,KAAKvG,EAAOgQ,GAAcrG,OAAO8E,EAAOpL,OAAOhC,MAAMK,KAAK4B,IAIvE,IAAK,IADgB8M,KAAcC,EAASpH,KAAKqH,KAAK9D,EAAMoC,KAAKC,OAA/C,GACT0B,EAAI,EAAGA,EAAIF,EAAQE,IAC1BH,EAAQ7J,KAAKiG,EAAMoC,KAAKM,MAFR,EAEcqB,EAFd,GAEgCA,EAAI,KAGtD,OADA/D,EAAMoC,KAAOwB,EACN5D,IAKXkC,EAAS8B,MAAQ,SAAUlN,GACzB,OAAOtD,EAAO+K,SAASzH,GAAI,KACxBqG,OAAO8E,EAAOpL,OAAOhC,MACrBS,OAAO,MACP2O,UAAU,EAAG,IAGlB/B,EAASgC,UAAY,SAAUhP,GAC7B,OAAO+M,EAAOlE,eAAevK,EAAO0B,IAAO,GAAO,IAChD+M,EAAOzD,gBAAgBhL,EAAO0B,IAAO,GAAO,IAC5C+M,EAAOpD,UAAUrL,EAAO0B,KACxB+M,EAAOtD,iBAAiBnL,EAAO0B,KAGnCgN,EAASzE,WAAa,SAAUvI,GAC9B,GAAIA,EAAM,CACR,GAAIgN,EAASiC,cAAcjP,GACzB,OAAO+M,EAAOlB,KAEhBkB,EAAOxE,WAAWjK,EAAO0B,GAAMmJ,KAAK6D,EAAShN,KAAKmJ,QAAQ1B,OAAOuF,EAAShN,KAAKyH,WAC3EsF,EAAOpL,OAAON,QAChB0L,EAAOlB,OAKbmB,EAASiC,cAAgB,SAAUlK,GACjC,OAAOA,GAAKiI,EAAShN,KAAKA,SAAW+E,EAAE/E,QAAUgN,EAAShN,KAAK8K,UAAY/F,EAAE+F,SAAWkC,EAAShN,KAAKsL,SAAWvG,EAAEuG,QAGrH0B,EAASkC,eAAiB,SAAUnK,GAClC,IAAI6G,EAAQoB,EAASD,OAAO9J,QAAQX,eACpC,QAAKsJ,IAIE7G,GAAK6G,EAAM5L,SAAW+E,EAAE/E,QAAU4L,EAAMd,UAAY/F,EAAE+F,SAAWc,EAAMN,SAAWvG,EAAEuG,WAG/FnM,SACA,+PAOL2C,UAAU,kCAAmC,WAC5C,SAAUG,GACR,IAAIkN,EAAuB,SAAUnQ,EAASoD,GAC5C,IAAIgN,EAAQrQ,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,UACjDrC,EAAW5K,EAAMkN,IAEjBC,KAF8BnN,EAAM0I,MAIlCoC,KAAKsC,QAAQ,SAAUrO,EAAUS,GACrC2N,EAAU1K,KAAK,QACf1D,EAASqO,QAAQ,SAAUC,EAASZ,GAElC,GADAU,EAAU1K,KAAK,QACX4K,EACF,GAAIzC,EAASgC,UAAUS,GAAU,CAE/B,IAAIC,EAAW,iBAAqB9N,EAAI,KAAOiN,EAAI,IAEnDU,EAAU1K,KAAK,eAAiB4K,EAAQrP,OAAO,cAAgB,4FAA8FsP,EAAW,iCAAmCA,EAAW,gCAAkCA,EAAW,OACnQH,EAAU1K,KAAK4K,EAAQrP,OAAO,MAC9BmP,EAAU1K,KAAK,aAEf0K,EAAU1K,KAAK,iCACf0K,EAAU1K,KAAK4K,EAAQrP,OAAO,MAC9BmP,EAAU1K,KAAK,WAGnB0K,EAAU1K,KAAK,WAEjB0K,EAAU1K,KAAK,WAGjBuK,EAAMO,KAAKJ,EAAUK,KAAK,KAC1B3N,EAASmN,EAATnN,CAAgBG,IAGlB,OACEA,OACEyN,IAAK,KAEP1N,QAAS,6BACTD,SAAU,KACV/C,SACE,gPAUFoD,KAAM,SAAUH,EAAOpD,EAASwD,EAAOwK,GACrC5K,EAAMkN,IAAMtC,EACZ5K,EAAM0I,MAAQkC,EAASa,eAAexE,SAASjH,EAAMyN,MACrDV,EAAqBnQ,EAASoD,GAC9BA,EAAM8L,OAAO,WACX,OAAO9L,EAAMyN,KACZ,SAAUA,EAAKC,GACZD,GAAOC,IACT1N,EAAM0I,MAAQkC,EAASa,eAAexE,SAASjH,EAAMyN,MACrDV,EAAqBnQ,EAASoD,WAS5CrD,QAAQK,OAAOb,GACZuD,UAAU,gBAAiB,WAC1B,OACES,KAAM,SAAUH,EAAOvD,GACrBA,EAAGqG,GAAG,QAAS,SAAUvC,GACvBA,EAAEC,uBAKZ7D,QAAQK,OAAOb,GACZuD,UAAU,0BAA2B,WACpC,SAAUE,GAkBR,OACEE,SAAU,IACV/C,SAjBA,ssCAkBAoD,KAAM,SAAUH,EAAOpD,EAASwD,GAC9B,IAAIuN,EAA4B,YAAfvN,EAAMwN,KACnBC,EAA4B,YAAfzN,EAAMwN,KACnBjD,EAAS3K,EAAM2K,OAEfmD,EAAgBxM,SAAS2L,cAAc,iBAEvCc,EAAgB,SAASC,EAAKC,GAChC,IAAIC,EAAM,EAEV,GAAY,KADZF,EAAMA,GAAO,IAAM,EAAIA,GACR,CACb,IAAIG,EAAUR,GAAYE,EAAa,GAAK,GAC5CK,EAAM/I,KAAKC,MAAM+I,EAAU,IAAMH,GAGnC,GAAIL,EAAY,CACd,IAAIzI,EAAayF,EAAOpL,OAAOH,aAC3B8F,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAIpH,EAAWoH,EAAaC,KAAKC,MAAM8I,EAAMhJ,GACzCpH,GAAW,KACbA,EAAU,GAAKoH,GAEjByF,EAAOxM,YAAYkH,OAAOvH,QAChB+P,GAKNK,GAAO,KAAIA,EAAM,GACrBvD,EAAOxM,YAAYmH,OAAO4I,KALd,KAARA,IAAYA,EAAM,GACjBvD,EAAOpL,OAAOf,YAAWmM,EAAOnG,SAAWyJ,EAAM,GAAK,KAAO,MAClEtD,EAAOxM,YAAY4I,KAAK4D,EAAOjD,OAASwG,EAAM,GAAKA,KAQnDE,EAAoB,iBAAkBvR,OAC1CwR,GACEC,aAAeF,EAAmB,aAAe,YACjDG,WAAeH,EAAmB,WAAe,UACjDI,aAAeJ,EAAmB,YAAe,aAG/CK,EAAc,SAASlO,GACzBA,EAAEC,iBAEF,IAAIkO,EAAgBnO,EAAEoO,cAAcC,QAAQ,OAC5CC,EAAaH,EAAcI,iBAAiB,GAExCV,IAAkB7N,EAAIA,EAAEwO,eAAe,IAE3C,IAAIhJ,EAAM2I,EAAcM,YAAc,GAAMzO,EAAE0O,MAAQJ,EAAWK,MAC7DC,EAAM5O,EAAE6O,MAAQP,EAAWQ,IAAQX,EAAcY,aAAe,EAEhErB,EAAM9I,KAAKoK,KAAKpK,KAAKqK,IAAIzJ,EAAG,GAAKZ,KAAKqK,IAAIL,EAAG,IAC7CnB,EAAM7I,KAAKC,MAAOD,KAAKsK,MAAM1J,EAAGoJ,IAAM,IAAMhK,KAAKuK,KAErD9P,EAAS,WACPmO,EAAcC,EAAI,IAAKC,MAI3BrR,EAAQkG,GAAGuL,EAAOC,aAAc,WAC7B1R,EAAQkG,GAAGuL,EAAOG,aAAcC,KAGnC7R,EAAQkG,GAAGuL,EAAOE,WAAY,WAC1B3R,EAAQ+S,IAAItB,EAAOG,gBAGvBxO,EAAM4P,IAAI,WAAY,WAClBhT,EAAQ+S,IAAItB,EAAOG,aAAcC,KAGrC,IAAIoB,EAAO,WACT,IAAIC,EAAQnT,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,sBACjD8C,EAAWpT,QAAQC,QAAQkR,EAAcb,cAAc,gBAEvD+C,EAAIlC,EAAcb,cAAc,gBAAgB+B,YAChDiB,EAAKhJ,SAASzK,EAAIuT,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEC,EAAKlJ,SAASzK,EAAIuT,EAAU,gBAAgBG,QAAQ,KAAM,MAAQ,EAIlEE,EAAcJ,IAHT/I,SAASzK,EAAIsT,EAAO,cAAcI,QAAQ,KAAM,MAAQ,IACxDjJ,SAASzK,EAAIsT,EAAO,eAAeI,QAAQ,KAAM,MAAQ,GAEjCD,EAAKE,GACtCL,EAAMtT,IAAI,QAAS,EAAe,MAYlC,IAAK,IAVD6T,EAAKpJ,SAASzK,EAAIuT,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEI,EAAKrJ,SAASzK,EAAIuT,EAAU,cAAcG,QAAQ,KAAM,MAAQ,EAChEK,EAAKtJ,SAASzK,EAAIsT,EAAO,cAAcI,QAAQ,KAAM,MAAQ,EAC7DM,EAAKvJ,SAASzK,EAAIsT,EAAO,aAAaI,QAAQ,KAAM,MAAQ,EAE5DO,EAAKL,EAAa,EAClB3D,EAAIgE,EAAI,IAERC,KAEKvG,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAEI+E,EAAQuB,EAFJhE,EAAItH,KAAKwL,IAAc,EAAVxL,KAAKuK,IAAUvF,EAAI,KAEpBkG,EAAK,GAAMA,EAAKE,GAChClB,EAAOoB,EAFHhE,EAAItH,KAAKyL,IAAc,EAAVzL,KAAKuK,IAAUvF,EAAI,KAErBqG,EAAK,GAAMF,EAAKE,GAE/BzJ,GACFmI,KAAMA,EACNG,IAAKA,EACL3M,MAAQiL,GAAYE,EAAkB,EAAJ1D,EAASA,EAC3C0G,OAAQC,cAAe5B,EAAO,KAAM6B,aAAc1B,EAAM,OAGtD1B,GAAcE,EAChB9G,EAAKiK,QAAUjK,EAAKrE,MAAQ,GAAM,IAAMqE,EAAKrE,MAASqE,EAAKrE,MAEvDiI,EAAOpL,OAAOf,UAChBuI,EAAKiK,QAAiB,IAAN7G,EAAW,GAAKA,EAEhCpD,EAAKiK,QAAU7G,EAInBuG,EAAOjO,KAAKsE,GAId,GAFA/G,EAAM0Q,OAASA,GAEV/F,EAAOpL,OAAOf,YAAcmP,IAAeE,EAAY,CAI1D,IAAK,IAHDoD,KAEAC,EAAMT,EAAI,IACLU,EAAM,GAAIA,EAAM,KAAMA,EAAK,CAClC,IAEIC,EAAUX,EAFJS,EAAM/L,KAAKwL,IAAc,EAAVxL,KAAKuK,IAAUyB,EAAM,KAEtBd,EAAK,GAAMA,EAAKE,GACpCc,EAASZ,EAFHS,EAAM/L,KAAKyL,IAAc,EAAVzL,KAAKuK,IAAUyB,EAAM,KAEvBX,EAAK,GAAMF,EAAKE,GAEnCc,GACFpC,KAAMkC,EACN/B,IAAKgC,EACL3O,MAAOyO,EACPN,OAAQC,cAAeM,EAAS,KAAML,aAAcM,EAAQ,OAG9DC,EAAON,QAAUG,EAEjBF,EAASxO,KAAK6O,GAEhBtR,EAAMiR,SAAWA,EAGnBjR,EAAM4N,KAAOxN,EAAMwN,KACnB2D,IACAzB,EAAMtT,IAAI,SAAU4T,EAAa,MAEjC,IAAIoB,EAAc5U,EAAQ,GAAGqQ,cAAc,qBACvCwE,EAAeD,EAAYxC,YAAc,GAAM,IACjD0C,EAAgBF,EAAYlC,aAAe,GAAM,IAC/CqC,EAAMlB,GAAK9F,EAAOpL,OAAOf,UAAY,IAAM,KAC3CoT,EAAMnB,EAAI,IACVoB,EAAMpB,EAAI,EAEd9T,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,mBAAmBzQ,KAC1D0S,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQH,EAAM,KACdI,UAAYtB,EAAIkB,EAAMtB,EAAM,OAC3BtN,SAAU4K,GAAeE,EAAoB,GAAP,MAEzClR,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,qBAAqBzQ,KAE5D0S,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQF,EAAM,KACdG,UAAYtB,EAAImB,EAAMvB,EAAM,OAC3BtN,SAAS4K,EAAa,KAAO,IAEhChR,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,qBAAqBzQ,KAE5D0S,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQD,EAAM,KACdE,UAAYtB,EAAIoB,EAAMxB,EAAM,OAC3BtN,SAAS8K,EAAa,KAAO,IAEhClR,QAAQC,QAAQ4U,GAAahV,KAC3B0S,KAAOuB,EAAIJ,EAAKE,EAAKkB,EAAe,KACpCM,UAAYtB,EAAKF,EAAK,EAAMmB,EAAe,OAE7CM,KAGEA,EAAe,WACjB,IAAIlL,EAAQ6D,EAAO1F,uBACfkF,EAAIrD,EAAMC,OACVpE,EAAImE,EAAMzB,SACV4M,EAAInL,EAAMxB,SAEd4M,EAAcvV,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,mBAAoB,GAAK9C,GAChF+H,EAAcvV,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,qBAAsB,EAAItK,GACjFuP,EAAcvV,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,qBAAsB,EAAIgF,IAG/EC,EAAgB,SAAUzV,EAAIuR,GAChCrR,QAAQC,QAAQH,GAAID,KAClB2V,gBAAiB,UAAYnE,EAAM,OACnCoE,iBAAkB,UAAYpE,EAAM,OACpCqE,gBAAiB,UAAYrE,EAAM,OACnCsE,UAAa,UAAYtE,EAAM,UAK/BuD,EAAkB,WACpB,IAAI3T,EAAO+M,EAAO1F,uBACdsN,EAAM5H,EAAOpL,OAAOf,UAAY,GAAK,GAEvCwB,EAAMwS,aADJ7E,EACmB/P,EAAKyH,SACjBwI,EACYjQ,EAAK0H,SAEL1H,EAAKmJ,OAASwL,GAIvCvS,EAAM8L,OAAO,WACX,IAAI2G,EAAM9H,EAAO1F,uBACjB,OAAOwN,EAAMA,EAAIzU,OAAO,YAAc,IACrC,WACDuT,IACAS,MAGFhS,EAAM0S,QAAU,SAAUxE,GACnBP,GAAeE,EAYRA,GASNK,IAAQlO,EAAMwS,cAAc7H,EAAOlB,KACvCkB,EAAOxM,YAAYmH,OAAO4I,KATtBA,IAAQlO,EAAMwS,cAAiB7H,EAAOpL,OAAOxB,SAC/C4M,EAAOlB,KAETkB,EAAOxM,YAAYkH,OAAO6I,GACrBvD,EAAOpL,OAAOxB,QAER4M,EAAOpL,OAAON,QAAQ0L,EAAOlB,KADtCkB,EAAOxM,YAAYmH,OAAO,KAjBxB4I,IAAQlO,EAAMwS,cAAiB7H,EAAOpL,OAAON,QAAQ0L,EAAOlB,KAE5DkB,EAAOpL,OAAOf,UAChBmM,EAAOxM,YAAY4I,KAAK4D,EAAOjD,OAAUwG,EAAM,GAAMA,IAErDvD,EAAOxM,YAAY4I,KAAKmH,GACTvD,EAAOnG,SAAlB0J,GAAO,GAAsB,KACV,MAGrBvD,EAAOpL,OAAON,QAAQ0L,EAAOlB,OAerCzJ,EAAM2S,eAAiB,SAAUC,GAC/B,OAAIjF,EACKhD,EAAOrB,kBAAkBsJ,EAAMlQ,OAC7BmL,EACFlD,EAAOpB,kBAAkBqJ,EAAMlQ,OAE/BiI,EAAOvB,gBAAgBwJ,EAAMlQ,QAIxC,IAAImQ,EAAY7S,EAAM8L,OAAO,WAC3B,OAAOlP,EAAQ,GAAGkW,iBAAiB,OAAO/H,QACzC,WACD8E,IACAgD,WAKH1W,EAGT,IAAI4W,EAAalW,QAAUA,OAAOmW,SAAWnW,OAAOmW,QAAQC,KACtC,mBAAXC,QAAyBA,OAAOC,IACzCD,QAAQ,UAAWjX,GACQ,oBAAXe,QAA0BA,QAAUA,OAAOoW,SAA+B,mBAAZrT,UAA4BgT,EAC1G/V,OAAOoW,QAAUnX,EAAqB8D,QAAQ,WAE9C9D,GAAwC,oBAAXoX,OAAyBA,OAASxW,QAAQX,QA9zC3E","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5,\r\n showIcon: {boolean} =false,\r\n templateUrl: {string} =''\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index f0573e6..cafad45 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -7,11 +7,7 @@ var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+', mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg=='; - var VIEW_STATES = { - DATE: 0, - HOUR: 1, - MINUTE: 2 - }; + var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2}; var css = function (el, name) { el = angular.element(el); @@ -98,10 +94,12 @@ angular.module(moduleName, ['ngMaterial']) .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) { this.$get = function () { + console.log("mdcDatetimePickerDefaultLocale deprecated!"); return mdcDefaultParams().lang; }; this.setDefaultLocale = function (localeString) { + console.log("mdcDatetimePickerDefaultLocale deprecated!"); mdcDefaultParams({ lang: localeString }); }; }]) @@ -337,6 +335,8 @@ editInput: {boolean} =false, clickOutsideToClose: {boolean} =false, minuteSteps: {int} =5, + showIcon: {boolean} =false, + templateUrl: {string} ='' } @return promise */ diff --git a/package.json b/package.json index c4ae9b4..a9ad6b3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.4", + "version": "1.9.5", "keywords": [ "css", "js", From 2c3e078dc4bf8e663df64669ebd021c3725395d0 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 18 Oct 2017 23:25:20 -0400 Subject: [PATCH 110/226] readme --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 4117cb1..9120c28 100644 --- a/README.md +++ b/README.md @@ -60,21 +60,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example From 701d8a9a968524d477530a0f322c38df5cedfa19 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 28 Oct 2017 20:40:31 -0400 Subject: [PATCH 111/226] Fix point not available for mouve move --- css/material-datetimepicker.css | 1 + index.html | 4 ++-- js/angular-material-datetimepicker.js | 10 +++++++--- js/demo.js | 3 ++- yarn.lock | 2 +- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index dfd88dd..b77666a 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -5,6 +5,7 @@ md-dialog.dtp { background-color: #fff; max-height: none; min-width: 300px; + width: 300px; } .noselect { diff --git a/index.html b/index.html index d7f7369..cb14256 100644 --- a/index.html +++ b/index.html @@ -25,7 +25,7 @@ - +

Angular Material DateTimePicker

@@ -99,7 +99,7 @@

Datetime Pickers

diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index cafad45..72131f5 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -15,7 +15,7 @@ }; var template = - '' + + '' + ' ' + '
' + '
' + @@ -222,7 +222,7 @@ } - function openCalendar (e) { + function openCalendar(e) { e.preventDefault(); element.blur(); element.parent().removeClass('md-input-focused'); @@ -1082,13 +1082,17 @@ if (minutes >= 60) { minutes = 60 - nearestMin; //always push down } + if (!scope.pointAvailable({value: val})) return; picker.currentDate.minute(minutes); } else if (!secondMode){ if (val === 12) val = 0; if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM'; - picker.currentDate.hour(picker.isPM() ? val + 12 : val); + if (picker.isPM()) val += 12; + if (!scope.pointAvailable({value: val})) return; + picker.currentDate.hour(val); } else { if (val >= 60) val = 0; + if (!scope.pointAvailable({value: val})) return; picker.currentDate.second(val); } diff --git a/js/demo.js b/js/demo.js index b096edf..c8cf318 100644 --- a/js/demo.js +++ b/js/demo.js @@ -19,7 +19,7 @@ .run(function ($templateCache) { $templateCache.put( 'customTemplate.html', - '' + + '' + ' ' + '
' + '
' + @@ -79,6 +79,7 @@ $scope.dateTimeNoMin = newDate; $scope.minDate = moment().subtract(6, 'year'); + $scope.minDateNow = moment(); $scope.maxDate = moment().add(6, 'year'); $scope.dates = [new Date('2017-11-14T00:00:00'), new Date('2017-11-15T00:00:00'), new Date('2017-11-30T00:00:00'), new Date('2017-12-12T00:00:00'), new Date('2017-12-13T00:00:00'), diff --git a/yarn.lock b/yarn.lock index e6076ee..f1d6d92 100644 --- a/yarn.lock +++ b/yarn.lock @@ -930,7 +930,7 @@ mkdirp@^0.5.0: dependencies: minimist "0.0.8" -moment@^2.18.1: +moment@^2.19.1: version "2.19.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167" From d27185f05c7b77343901db141f4a0f2ee50ec6be Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 28 Oct 2017 20:47:35 -0400 Subject: [PATCH 112/226] version 1.9.6 --- README.md | 18 +++++----- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- js/angular-material-datetimepicker.js | 35 +------------------ package.json | 2 +- 7 files changed, 15 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 9120c28..f089f59 100644 --- a/README.md +++ b/README.md @@ -60,21 +60,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index ac26193..355e3b0 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.5", + "version": "1.9.6", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 0a58e7f..f9d7441 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,d){function l(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var d={};for(var l in o)s.hasOwnProperty(l)&&!angular.isUndefined(s[l])&&(d[l]=s[l]);d.currentDate=s.currentDate,d.showTodaysDate=m;var p={controller:r,controllerAs:"picker",locals:{options:d},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};d.templateUrl?p.templateUrl=d.templateUrl:p.template=n,t.show(p).then(function(t){s.currentDate=t?t._d:t,u=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),d){var p={"*":"$inherit",debounce:500};d.$options=d.$options?d.$options.createChild(p):p,d.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),d.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}if(s.editInput||(s.showIcon?c.on("click",l):c.on("focus",l)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){l(e)},s.clear=function(){d.$setViewValue(null),s.currentDate=null,d.$render(),a(function(){c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var d in i)-1!=c.indexOf[d]&&i.hasOwnProperty(d)&&i[d];var l=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(l=e()),i.showTodaysDate=l;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var d=0;d
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),d=function(e,t){var a=0;if(0!==(e=e>=360?0:e)){var i=r||s?60:12;a=Math.round(i/360*e)}if(r){var n=c.params.minuteSteps;(n<1||n>59)&&(n=1);var o=n*Math.round(a/n);o>=60&&(o=60-n),c.currentDate.minute(o)}else s?(a>=60&&(a=0),c.currentDate.second(a)):(12===a&&(a=0),c.params.shortTime||(c.meridien=t>84?"AM":"PM"),c.currentDate.hour(c.isPM()?a+12:a))},l="ontouchstart"in window,u={POINTER_DOWN:l?"touchstart":"mousedown",POINTER_UP:l?"touchend":"mouseup",POINTER_MOVE:l?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];l&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){d(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),d=angular.element(o.querySelector(".dtp-picker")),l=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(d,"paddingLeft").replace("px",""))||0,m=parseInt(i(d,"paddingRight").replace("px",""))||0,p=l-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(d,"paddingLeft").replace("px",""))||0,g=parseInt(i(d,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(I/12))-v/2-(g+v),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+k),P=M-S*Math.cos(2*Math.PI*(E/12))-v/2-(g+v),V={left:O,top:P,value:E,style:{"margin-left":O+"px","margin-top":P+"px"}};V.display=E,A.push(V)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var N=a[0].querySelector(".dtp-clock-center"),Y=N.offsetWidth/2||7.5,H=N.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,j=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:j+"px",marginTop:M-j-f+"px"}).addClass(s?"on":""),angular.element(N).css({left:M+f+k-Y+"px",marginTop:M-k/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var p={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?p.templateUrl=l.templateUrl:p.template=n,t.show(p).then(function(t){s.currentDate=t?t._d:t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),l){var p={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(p):p,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+v),P=M-S*Math.cos(2*Math.PI*(E/12))-k/2-(g+k),V={left:O,top:P,value:E,style:{"margin-left":O+"px","margin-top":P+"px"}};V.display=E,A.push(V)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var N=a[0].querySelector(".dtp-clock-center"),Y=N.offsetWidth/2||7.5,H=N.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,j=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:j+"px",marginTop:M-j-f+"px"}).addClass(s?"on":""),angular.element(N).css({left:M+f+v-Y+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index ca2332b..d5e08ca 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","pointAvailable","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar (e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n /** Returns a service that opens a dialog when the attribute shown is called\r\n The dialog serves to select a date/time/etc. depending on the options given to the function show\r\n\r\n @param options extends mdcDefaultParams\r\n {\r\n date: {boolean} =true,\r\n time: {boolean} =true,\r\n minutes: {boolean} =true,\r\n seconds: {boolean} =false,\r\n format: {string} ='YYYY-MM-DD',\r\n minDate: {strign} =null,\r\n maxDate: {string} =null,\r\n currentDate: {string} =null,\r\n lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: {int} =0,\r\n shortTime: {boolean} =false,\r\n cancelText: {string} ='Cancel',\r\n showTodaysDate: {string} ='',\r\n todayText: {string} ='Today',\r\n okText: {string} ='OK',\r\n amText: {string} ='AM',\r\n pmText: {string} ='PM',\r\n disableDates: {date[]} =[],\r\n weekDays: {boolean} =false,\r\n disableParentScroll: {boolean} =false,\r\n autoOk: {boolean} =false,\r\n editInput: {boolean} =false,\r\n clickOutsideToClose: {boolean} =false,\r\n minuteSteps: {int} =5,\r\n showIcon: {boolean} =false,\r\n templateUrl: {string} =''\r\n }\r\n @return promise\r\n */\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n picker.currentDate.hour(picker.isPM() ? val + 12 : val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"CAAA,WACE,aAEA,SAASA,EAAqBC,GAC9B,IAAIC,EAAa,uBAKbC,GAAeC,KAAM,EAAGC,KAAM,EAAGC,OAAQ,GAEzCC,EAAM,SAAUC,EAAIC,GAEtB,OADAD,EAAKE,QAAQC,QAAQH,GACb,qBAAsBI,OAAUA,OAAOC,iBAAiBL,EAAG,IAAIC,GAAQD,EAAGD,IAAIE,IAGpFK,EACF,8uNA4EFJ,QAAQK,OAAOb,GAAa,eACzBc,QAAQ,kCAAmC,mBAAoB,SAAUC,GACxEC,KAAKC,KAAO,WAEV,OADAC,QAAQC,IAAI,8CACLJ,IAAmBK,MAG5BJ,KAAKK,iBAAmB,SAAUC,GAChCJ,QAAQC,IAAI,8CACZJ,GAAmBK,KAAME,QAG5BC,QAAQ,mBAAoB,WAC3B,IAAIC,GACFC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,SAAS,EACTC,OAAQ,aACRC,QAAS,KACTC,QAAS,KACTC,YAAa,KACbZ,KAAMV,OAAOuB,UAAUC,cAAgBxB,OAAOuB,UAAUE,UAAY,KACpEC,UAAW,EACXC,WAAW,EACXC,WAAY,SACZC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,UAAW,QACXC,gBACAC,UAAU,EACVC,qBAAqB,EACrBC,QAAQ,EACRC,WAAW,EACXC,qBAAqB,EACrBC,YAAa,EACbC,UAAU,EACVtC,SAAUA,EACVuC,YAAa,IAGf,OAAO,SAAUC,GACf,GAAIA,EACF,IAAK,IAAIC,KAAKD,EACR5B,EAAe8B,eAAeD,IAAMD,EAAOE,eAAeD,KAC5D7B,EAAe6B,GAAKD,EAAOC,IAKjC,OAAO7B,KAGV+B,UAAU,qBAAsB,YAAa,WAAY,WACxD,SAAUC,EAAWC,EAAUC,GAE7B,OACEC,SAAU,IACVC,QAAS,UACTC,OACE7B,YAAa,WACb8B,SAAU,IACVpC,KAAM,IACND,KAAM,IACNE,QAAS,IACTC,QAAS,IACTE,QAAS,IACTC,QAAS,IACTY,aAAc,IACdC,SAAU,IACVP,UAAW,IACXD,UAAW,IACXP,OAAQ,IACRS,WAAY,IACZC,OAAQ,IACRnB,KAAM,IACNoB,OAAQ,IACRC,OAAQ,IACRsB,eAAgB,IAChBrB,UAAW,IACXG,oBAAqB,IACrBC,OAAQ,IACRC,UAAW,IACXC,oBAAqB,IACrBC,YAAa,IACbC,SAAU,IACVC,YAAa,KAEfa,KAAM,SAAUH,EAAOpD,EAASwD,EAAOC,GA0CrC,SAASC,EAAaC,GAIpB,GAHAA,EAAEC,iBACF5D,EAAQ6D,OACR7D,EAAQ8D,SAASC,YAAY,qBACzBC,EAAJ,CAGAA,GAAO,EACP,IAAIC,KACJ,IAAK,IAAIrB,KAAKY,EACRJ,EAAMP,eAAeD,KAAO7C,QAAQmE,YAAYd,EAAMR,MACxDqB,EAAQrB,GAAKQ,EAAMR,IAGvBqB,EAAQ1C,YAAc6B,EAAM7B,YAC5B0C,EAAQX,eAAiBa,EAEzB,IAAIC,GACFC,WAAYC,EACZC,aAAc,SACdC,QAASP,QAASA,GAClBQ,SAAUzE,EACV8D,OAAQ/D,QAAQC,QAAQ0E,SAASC,MACjCC,kBAAkB,EAClBrC,oBAAqB0B,EAAQ1B,sBAAuB,EACpDH,oBAAqB6B,EAAQ7B,sBAAuB,EACpDyC,aAAa,EACbC,UAAU,EACVC,UAAU,GAGPd,EAAQvB,YACR0B,EAAc1B,YAAcuB,EAAQvB,YADf0B,EAAcjE,SAAWA,EAGnD4C,EAAUiC,KAAKZ,GAAea,KAAK,SAASC,GAC1C9B,EAAM7B,YAAc2D,EAAIA,EAAEC,GAAKD,EAC/BlB,GAAO,EAEF1E,EAAO8D,EAAM7B,aAAa6D,OAAOnB,EAAQ1C,cAC5CyB,EAASI,EAAMC,SAAU,GAG3BrD,EAAQ8D,SAASC,YAAY,qBAC5B,WACDC,GAAO,EACPhE,EAAQ8D,SAASC,YAAY,uBAtFjC,IAAIC,GAAO,EACNZ,EAAMhC,SACLgC,EAAMpC,MAAQoC,EAAMnC,MAAQmC,EAAMjC,QACpCiC,EAAMhC,OAAS,sBACNgC,EAAMpC,MAAQoC,EAAMnC,KAC7BmC,EAAMhC,OAAS,mBACNgC,EAAMpC,KACfoC,EAAMhC,OAAS,aAEfgC,EAAMhC,OAAS,SAInB,IAAI+C,EAAe,KASnB,QAR6BkB,IAAzBjC,EAAME,gBAAyD,UAAzBF,EAAME,iBAC9Ca,EAAe7E,KAGbS,QAAQuF,SAASlC,EAAM7B,cAAsC,KAAtB6B,EAAM7B,cAC/C6B,EAAM7B,YAAcjC,EAAO8D,EAAM7B,YAAa6B,EAAMhC,SAGlDqC,EAAS,CACX,IAAI8B,GAAkBC,IAAK,WAAYC,SAAU,KACjDhC,EAAQiC,SAAWjC,EAAQiC,SAAWjC,EAAQiC,SAASC,YAAYJ,GAAkBA,EAErF9B,EAAQmC,YAAYC,KAAK,SAAUC,GACjC,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAIzG,EAAOwG,GACf,OAAOC,EAAEC,UAAYD,EAAE3E,OAAOgC,EAAMhC,QAAU,MAGhDqC,EAAQwC,SAASJ,KAAK,SAAUC,GAC9B,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAIzG,EAAOwG,EAAO1C,EAAMhC,QAC5B,OAAI2E,EAAEC,UAAkBD,EAAEZ,QAA1B,KA+DJ,GARK/B,EAAMd,YACLc,EAAMX,SACRzC,EAAQkG,GAAG,QAASxC,GAEpB1D,EAAQkG,GAAG,QAASxC,IAIpBN,EAAMX,SAAU,CAClBzC,EAAQmG,SAAS,4BACjB,IAAIC,EACJ,wLAGsDhD,EAAMpC,KAxRvD,qVADC,8fAyRyF,2BAG/FhB,EAAQqG,MAAMpD,EAASmD,EADT,+HACAnD,CAAuCG,IAErDA,EAAMkD,iBAAmB,SAAS3C,GAChCD,EAAaC,IAGfP,EAAMmD,MAAQ,WACZ9C,EAAQ+C,cAAc,MACtBpD,EAAM7B,YAAc,KACpBkC,EAAQgD,UACRzD,EAAS,WACPhD,EAAQ,GAAG0G,SACV,GAAG,UAOjB5F,QAAQ,qBAAsB,YAAa,KAAM,mBAAoB,SAAUiC,EAAW4D,EAAIrG,GAC7F,IAAIsG,EAAgBtG,IAChBuG,EAAmBC,OAAOC,KAAKH,GA0CnC,OAxCE5B,KAAM,SAAUf,GACd,IAAI+C,EAAWL,EAAGM,QACLlH,QAAQmH,KAAKN,GAC1B,IAAK,IAAIhE,KAAKqB,GACwB,GAAhC4C,EAAiBM,QAAQvE,IAAYqB,EAAQpB,eAAeD,IACrDqB,EAAQrB,GAIrB,IAAIuB,EAAe,UACYkB,IAA3BpB,EAAQX,gBAA2D,UAA3BW,EAAQX,iBAClDa,EAAe7E,KAEjB2E,EAAQX,eAAiBa,EAEzB,IAAIC,GACAC,WAAYC,EACZC,aAAc,SACdC,QAASP,QAASA,GAClBH,OAAQ/D,QAAQC,QAAQ0E,SAASC,MACjCC,kBAAkB,EAClBrC,oBAAqB0B,EAAQ1B,sBAAuB,EACpDH,oBAAqB6B,EAAQ7B,sBAAuB,EACpD0C,UAAU,EACVC,UAAU,GAYd,OATKd,EAAQvB,YACR0B,EAAc1B,YAAcuB,EAAQvB,YADf0B,EAAcjE,SAAWA,EAGnD4C,EAAUiC,KAAKZ,GAAea,KAAK,SAAUC,GACzBA,GAAIA,EAAEC,GACxB6B,EAASI,QAAQlC,EAAIA,EAAEC,GAAKD,IAC3B,WACD8B,EAASK,WAEJL,EAASM,aAQxB,IAAIhD,EAAmB,SAAUiD,EAAQxE,EAAWzC,GAClDC,KAAKiH,YAAchI,EAAYC,KAC/Bc,KAAKkH,QAAU1E,EAEfxC,KAAKmH,mBACLnH,KAAKoH,MAAQnI,EACbe,KAAKoC,OAAS5C,QAAQmH,KAAK5G,KAC3BC,KAAKqH,SAAW,KAChBrH,KAAKoC,OAAS5C,QAAQ8H,OAAOtH,KAAKoC,OAAQpC,KAAK0D,SAE/C1D,KAAKuH,QAy6BL,OAt6BFxD,EAAiByD,SAAW,SAAU,YAAa,oBACnDzD,EAAiB0D,WACfF,KAAM,WACJvH,KAAK0H,SAAW1H,KAAKoC,OAAO1B,OAASV,KAAKoC,OAAO3B,KACjDT,KAAK2H,SAAW3H,KAAKoC,OAAO3B,KAC5BT,KAAK4H,YACL5H,KAAK6H,SAEPC,qBAAsB,WACpB,IAAIC,EAAa/H,KAAKoC,OAAOH,aACzB8F,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAItH,EAAOT,KAAKgB,aAAejC,IAC3B4B,EAAWoH,EAAaC,KAAKC,MAAMxH,EAAKyH,SAAWH,GACnDpH,GAAW,KACbA,EAAU,GAAKoH,GAEjB,IAAInH,EAAUH,EAAK0H,SAInB,OAHIvH,GAAW,KACbA,EAAU,IAEL7B,EAAO0B,GAAME,QAAQA,GAASC,QAAQA,IAE/CgH,UAAW,WACT,IAAIQ,EAAOpI,KACPqI,EAAa,SAAUC,EAAOC,GAChC,IAAIC,EAAM,KACV,GAAIhJ,QAAQiJ,UAAUH,IAAoB,OAAVA,GAA4B,KAAVA,EAChD,GAAI9I,QAAQuF,SAASuD,GAEjBE,OADiC,IAAxBJ,EAAKhG,OAAa,QAA4C,OAAvBgG,EAAKhG,OAAOvB,OACtD9B,EAAOuJ,EAAOF,EAAKhG,OAAOvB,QAAQ6H,OAAON,EAAKhG,OAAOhC,MAGrDrB,EAAOuJ,GAAOI,OAAON,EAAKhG,OAAOhC,WAEpC,GAAqB,iBAAVkI,EAChBE,EAAMzJ,EAAOuJ,GAAOI,OAAON,EAAKhG,OAAOhC,WAEvC,GAAIZ,QAAQmJ,OAAOL,GAAQ,CACzB,IAAIM,EAAIN,EAAMO,UACdL,EAAMzJ,EAAO6J,EAAG,KAAKF,OAAON,EAAKhG,OAAOhC,WAC/BkI,EAAMQ,mBACfN,EAAMF,QAKVE,EAAMD,EAER,OAAOC,GAGTxI,KAAKgB,YAAcqH,EAAWrI,KAAKoC,OAAOpB,YAAajC,KACvDiB,KAAKgB,YAAchB,KAAK8H,uBACxB9H,KAAKc,QAAUuH,EAAWrI,KAAKoC,OAAOtB,SACtCd,KAAKe,QAAUsH,EAAWrI,KAAKoC,OAAOrB,SACtCf,KAAK2B,aAAe3B,KAAKoC,OAAOT,aAAaoH,IAAI,SAAUH,GACzD,OAAO7J,EAAO6J,GAAG/H,OAAO,kBAE1Bb,KAAKgJ,WAAWhJ,KAAKgB,aACrBhB,KAAK4B,SAAW5B,KAAKoC,OAAOR,UAE9BqH,SAAU,WACRjJ,KAAKiH,YAAchI,EAAYC,MAEjCgK,UAAW,WACTlJ,KAAKiH,YAAchI,EAAYE,MAEjCgK,YAAa,WACXnJ,KAAKiH,YAAchI,EAAYG,QAEjCgK,YAAa,WACXpJ,KAAKiH,YAAchI,EAAYoK,QAEjCC,eAAgB,SAAU7I,EAAM8I,EAAWC,GACzC,IAAIC,GAAU,EAEd,QAA6B,IAAlBzJ,KAAY,SAAsC,OAAjBA,KAAKc,QAAkB,CACjE,IAAI4I,EAAW3K,EAAOiB,KAAKc,SACvB6I,EAAQ5K,EAAO0B,GAEd8I,GAAcC,IACjBE,EAASE,KAAK,GACdF,EAASxB,OAAO,GAEhByB,EAAMC,KAAK,GACXD,EAAMzB,OAAO,IAGfwB,EAASvB,OAAO,GAChBwB,EAAMxB,OAAO,GACbuB,EAASG,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASJ,EAAS7I,OAAO,OANnE8I,EAAMzB,OAAO,GACbwB,EAASxB,OAAO,GAEhBuB,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASJ,EAAS7I,OAAO,OAOvE,OAAO4I,GAETM,gBAAiB,SAAUtJ,EAAMuJ,EAAWR,GAC1C,IAAIC,GAAU,EAEd,QAA6B,IAAlBzJ,KAAY,SAAsC,OAAjBA,KAAKe,QAAkB,CACjE,IAAIkJ,EAAWlL,EAAOiB,KAAKe,SACvB4I,EAAQ5K,EAAO0B,GAEduJ,GAAcR,IACjBS,EAASL,KAAK,GACdK,EAAS/B,OAAO,GAEhByB,EAAMC,KAAK,GACXD,EAAMzB,OAAO,IAGf+B,EAAS9B,OAAO,GAChBwB,EAAMxB,OAAO,GACb8B,EAASJ,YAAY,GACrBF,EAAME,YAAY,GAEbL,EAOHC,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASG,EAASpJ,OAAO,OANnE8I,EAAMzB,OAAO,GACb+B,EAAS/B,OAAO,GAEhBuB,EAAWK,SAASH,EAAM9I,OAAO,OAASiJ,SAASG,EAASpJ,OAAO,OAOvE,OAAO4I,GAETS,iBAAkB,SAAUzJ,GAC1B,IAAI0J,EAAM1J,EAAKI,OAAO,gBACtB,QAAIb,KAAK2B,aAAaiF,QAAQuD,IAAQ,IAKxCC,UAAW,SAAS3J,GAClB,OAAIT,KAAK4B,UACHnB,EAAK4J,cAAgB,GAO7BrB,WAAY,SAAUvI,GAChBA,IACFT,KAAKgB,YAAcjC,EAAO0B,GACrBT,KAAKsJ,eAAetJ,KAAKgB,eAC5BhB,KAAKgB,YAAcjC,EAAOiB,KAAKc,UAG5Bd,KAAK+J,gBAAgB/J,KAAKgB,eAC7BhB,KAAKgB,YAAcjC,EAAOiB,KAAKe,UAEjCf,KAAKgB,YAAY0H,OAAO1I,KAAKoC,OAAOhC,MACpCJ,KAAKsK,cAAgBvL,EAAOiB,KAAKgB,aACjChB,KAAKqH,SAAWrH,KAAKgB,YAAY4I,QAAU,GAAK,KAAO,OAG3DW,KAAM,WACJ,MAAyB,OAAlBvK,KAAKqH,UAEdmD,eAAgB,SAAUC,GACT,IAAXA,GAAgBzK,KAAK0K,sBACvB1K,KAAKgJ,WAAWhJ,KAAKgB,YAAY2J,IAAIF,EAAQ,WAG/B,IAAZA,GAAiBzK,KAAK4K,0BACxB5K,KAAKgJ,WAAWhJ,KAAKgB,YAAY2J,IAAIF,EAAQ,WAGjDI,cAAe,SAAUJ,GACR,IAAXA,GAAgBzK,KAAK8K,qBACvB9K,KAAKgJ,WAAWhJ,KAAKgB,YAAY2J,IAAIF,EAAQ,UAG/B,IAAZA,GAAiBzK,KAAK+K,yBACxB/K,KAAKgJ,WAAWhJ,KAAKgB,YAAY2J,IAAIF,EAAQ,UAGjDO,SAAU,SAAUC,EAASC,GAC3BD,EAAQE,KAAKD,IAEfE,gBAAiB,WAIf,IAAK,IAHDC,KACA1B,EAAQ5K,EAAOiB,KAAKgB,aAEfwE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAI8F,EAAW3B,EAAM4B,MAAM/F,GACvBxF,KAAKsJ,eAAegC,EAASE,MAAM,WAAaxL,KAAK+J,gBAAgBuB,EAASG,QAAQ,WACxFJ,EAAU/F,KAAKgG,EAASzK,OAAO,SAGnC,OAAOwK,GAETK,YAAa,SAAUH,GACrBvL,KAAKgJ,WAAWhJ,KAAKgB,YAAYuK,MAAMA,KAEzCI,eAAgB,WACd,IAAIjC,EAAUO,EAAU2B,EAAKC,EAAWC,KACxCnC,EAAQ3J,KAAKgB,YAAY+K,YAEI,IAAlB/L,KAAY,SAAsC,OAAjBA,KAAKc,UAC/C4I,EAAW3K,EAAOiB,KAAKc,SAASiL,aAEL,IAAlB/L,KAAY,SAAsC,OAAjBA,KAAKe,UAC/CkJ,EAAWlL,EAAOiB,KAAKe,SAASgL,QAG9B9B,GAAYP,GACdkC,EAAM3B,EAAWP,EACjBmC,EAAYnC,GACHA,GACTkC,EAAM,IACNC,EAAYnC,GAGZmC,EAFS5B,EAEGA,GADZ2B,EAAM,IAIMjC,GADZiC,EAAM,IACkB,EAG1B,IAAK,IAAIvJ,EAAE,EAAGA,EAAIuJ,EAAKvJ,IACrByJ,EAASxG,KAAKuG,EAAUxJ,GAE1B,OAAOyJ,GAETE,WAAY,SAAUD,GACpB/L,KAAKgJ,WAAWhJ,KAAKgB,YAAY+K,KAAKA,KAExCnB,uBAAwB,WACtB,OAAO5K,KAAKsK,eAAiBtK,KAAKsJ,eAAevK,EAAOiB,KAAKsK,eAAemB,QAAQ,UAAU,GAAO,IAEvGf,mBAAoB,WAClB,OAAO1K,KAAKsK,eAAiBtK,KAAK+J,gBAAgBhL,EAAOiB,KAAKsK,eAAekB,MAAM,UAAU,GAAO,IAEtGT,sBAAuB,WACrB,OAAO/K,KAAKsK,eAAiBtK,KAAKsJ,eAAevK,EAAOiB,KAAKsK,eAAemB,QAAQ,SAAS,GAAO,IAEtGX,kBAAmB,WACjB,OAAO9K,KAAKsK,eAAiBtK,KAAK+J,gBAAgBhL,EAAOiB,KAAKsK,eAAekB,MAAM,SAAS,GAAO,IAErGS,gBAAiB,SAAUrC,GACzB,IAAID,EAAQ5K,EAAOiB,KAAKgB,aAMxB,OALIhB,KAAKoC,OAAOf,UACdsI,EAAMC,KAAK5J,KAAKkM,aAAatC,IAAO1B,OAAO,GAAGC,OAAO,GAErDwB,EAAMC,KAAKA,GAAM1B,OAAO,GAAGC,OAAO,GAE7BnI,KAAKsJ,eAAeK,GAAO,GAAM,IAAU3J,KAAK+J,gBAAgBJ,GAAO,GAAM,IAEtFwC,kBAAmB,SAAUjE,GAC3B,IAAIyB,EAAQ5K,EAAOiB,KAAKgB,aAExB,OADA2I,EAAMzB,OAAOA,GAAQC,OAAO,GACrBnI,KAAKsJ,eAAeK,GAAO,GAAM,IAAS3J,KAAK+J,gBAAgBJ,GAAO,GAAM,IAErFyC,kBAAmB,SAAUjE,GAC3B,OAAO,GAETN,MAAO,WACL7H,KAAKiH,YAAchI,EAAYC,KAC3Bc,KAAKoC,OAAO3B,KACdT,KAAKiJ,WAEDjJ,KAAKoC,OAAO1B,MACdV,KAAKkJ,aAIXmD,MAAO,WACL,IAAItE,EAAa/H,KAAKoC,OAAOH,YACzBxB,EAAO1B,IACP4B,EAAWoH,EAAaC,KAAKC,MAAMxH,EAAKyH,SAAWH,GACnDpH,GAAW,KACbA,EAAU,GAAKoH,GAEjB/H,KAAKgJ,WAAWjK,EAAO0B,GAAME,QAAQA,KAEvC2L,GAAI,WACF,OAAQtM,KAAKiH,aACX,KAAKhI,EAAYC,MACU,IAArBc,KAAKoC,OAAO1B,KACdV,KAAKkJ,YAELlJ,KAAKuM,MAAK,GAEZ,MACF,KAAKtN,EAAYE,MACa,IAAxBa,KAAKoC,OAAOzB,QACdX,KAAKmJ,cAELnJ,KAAKuM,MAAK,GAEZ,MACF,KAAKtN,EAAYG,QACa,IAAxBY,KAAKoC,OAAOxB,QACdZ,KAAKoJ,cAELpJ,KAAKuM,MAAK,GAEZ,MACF,KAAKtN,EAAYoK,OACfrJ,KAAKuM,MAAK,KAIhBC,OAAQ,WACN,GAAIxM,KAAKoC,OAAO1B,KACd,OAAQV,KAAKiH,aACX,KAAKhI,EAAYC,KACfc,KAAKuM,OACL,MACF,KAAKtN,EAAYE,KACXa,KAAKoC,OAAO3B,KACdT,KAAKiJ,WAGLjJ,KAAKuM,OAEP,MACF,KAAKtN,EAAYG,OACfY,KAAKkJ,YACL,MACF,KAAKjK,EAAYoK,OACfrJ,KAAKmJ,mBAKTnJ,KAAKuM,QAGTE,kBAAmB,WACjBzM,KAAKsK,cAAcoC,SAAS,EAAG,WAEjCC,iBAAkB,WAChB3M,KAAKsK,cAAcK,IAAI,EAAG,WAE5BiC,iBAAkB,WAChB5M,KAAKsK,cAAcoC,SAAS,EAAG,UAEjCG,gBAAiB,WACf7M,KAAKsK,cAAcK,IAAI,EAAG,UAE5BmC,SAAU,YACJ9M,KAAKiM,gBAAgB,IAAMjM,KAAKiM,gBAAgB,OAC9CjM,KAAKgB,YAAY4I,QAAU,IAC7B5J,KAAKgJ,WAAWhJ,KAAKgB,YAAY0L,SAAS,GAAI,UAE3C1M,KAAKiM,gBAAgBjM,KAAKgB,YAAY4I,SACzC5J,KAAKgJ,WAAWhJ,KAAKgB,YAAY4I,KAAK5J,KAAKc,QAAQ8I,SAEhD5J,KAAKmM,kBAAkBnM,KAAKgB,YAAYkH,WAC3ClI,KAAKgJ,WAAWhJ,KAAKgB,YAAYkH,OAAOlI,KAAKc,QAAQoH,aAI3D6E,SAAU,YACJ/M,KAAKiM,gBAAgB,KAAOjM,KAAKiM,gBAAgB,OAC/CjM,KAAKgB,YAAY4I,OAAS,IAC5B5J,KAAKgJ,WAAWhJ,KAAKgB,YAAY2J,IAAI,GAAI,UAEtC3K,KAAKiM,gBAAgBjM,KAAKgB,YAAY4I,SACzC5J,KAAKgJ,WAAWhJ,KAAKgB,YAAY4I,KAAK5J,KAAKe,QAAQ6I,SAEhD5J,KAAKmM,kBAAkBnM,KAAKgB,YAAYkH,WAC3ClI,KAAKgJ,WAAWhJ,KAAKgB,YAAYkH,OAAOlI,KAAKe,QAAQmH,aAI3DgE,aAAc,SAAUc,GACtB,IAAIvD,EAAUuD,EAId,OAHKA,EAAI,IAAOhN,KAAKuK,SACnBd,GAAW,IAENA,GAET8C,KAAM,SAAUU,GACVA,EACFjN,KAAKkH,QAAQqF,KAAKvM,KAAKgB,aAEvBhB,KAAKkH,QAAQsF,WAKnBhN,QAAQK,OAAOb,GACZuD,UAAU,6BACT,WAOE,IAAK,IAHH2K,EAA4C,KADjC,IAAIC,MAAOC,cAAgB,GADzB,KAE0B,GAEvCC,KACOhL,EAAI,EAAGA,EAAI6K,EAAe7K,IACjCgL,EAAO/H,KAAKjD,GAGd,IAAIiL,EAAoB,SAAU7M,EAAM8M,GAItC,OAHAA,EAAMA,GAAY,EAGW,IAFlB9M,EAAKsL,OAXH,MAYDtL,EAAK8K,QAC0B,EAAMgC,GAGnD,OACE5K,SAAU,IACVE,OACE2K,OAAQ,IACR/M,KAAM,KAER4D,kBAAkB,EAClBL,aAAc,MACdF,YAAa,SAAU,SAAUkD,GAC/B,IAAqBwG,EAAjBC,EAAWzN,KAEfA,KAAK0N,QAAU,WAIb,IAAK,IADDC,KACKtL,GAHTmL,EAASxN,KAAKwN,QAGMpL,OAAOhB,UAAWuM,EAAKC,OAAS,EAAGvL,IACjDA,EAAI,IACNA,EAAI,GAENsL,EAAKrI,KAAKjD,EAAEwL,YAId,GAFAJ,EAASK,KAAOH,EAEXH,EAAOzM,SAAYyM,EAAO1M,QAExB,CACL,IAAIyM,EAAMC,EAAO1M,QAAUwM,EAAkBE,EAAO1M,SAAW,EAC3DiN,EAAOP,EAAOzM,QAAWuM,EAAkBE,EAAOzM,SAAW,EAAKmM,EACtEO,EAASO,OAASX,EAAOY,MAAMV,EAAKQ,QAJpCN,EAASO,OAASX,EAOpBI,EAASS,SAAWZ,EAAkBE,EAAOxM,aAAeyM,EAASO,OAAO,IAGhD,IAA1BxO,QAAQ2O,QAAQC,OAAe5O,QAAQ2O,QAAQE,MAAQ,GACzDrO,KAAK0N,UAGPD,EAASa,eAAiB,SAAUC,GAClC,IAAIhD,GAAUgD,EAAQ,GAAK,IAAO,GAC9BxC,EAxDK,KAwDa/D,KAAKwG,MAAMD,EAAQ,IACrCE,EAAW1P,EAAOyO,EAAOxM,aAAa+K,KAAKA,GAAMR,MAAMA,GAC3D,OAAOmD,EAAsBD,IAG/BzH,EAAO2H,OAAO,WACZ,OAAOnB,EAAOxM,YAAcwM,EAAOxM,YAAYH,OAAO,WAAa,IAClE,SAAU+N,EAAMC,GACjB,GAAID,GAAQC,EAAM,CAChB,IAAIC,EAAQ/P,EAAO6P,EAAM,WACrBrB,EAAMC,EAAO1M,QAAUwM,EAAkBE,EAAO1M,SAAW,EAC3DyN,EAAQjB,EAAkBwB,EAAOvB,GACjCE,EAASS,UAAYK,IACvBd,EAASS,SAAWK,MAK1B,IAAIG,EAAwB,SAAUjO,GACpC,IAAI8K,KACJ,GAAa,OAAT9K,EAAe,CACjB8K,EAAMhM,KAAOkB,EAAKI,OAAO,aACzB,IAAIkO,EAAehQ,EAAO0B,GAAMiI,OAAO8E,EAAOpL,OAAOhC,MAAMqL,QAAQ,SAC9D7B,KAAKnJ,EAAKmJ,QACV1B,OAAOzH,EAAKyH,UACb8G,EAAUD,EAAalO,OAAO,KAClC0K,EAAMoC,QACN,IAAK,IAAItL,EAAI0M,EAAatO,OAAQ4B,GAAK0M,EAAaE,cAAe5M,IAAK,CACtE,GAAIA,IAAM0M,EAAatO,OAAQ,CAC7B,IAAIyO,EAAQzB,EAASK,KAAKlH,QAAQoI,EAAQnB,YAC1C,GAAIqB,EAAQ,EACV,IAAK,IAAItG,EAAI,EAAGA,EAAIsG,EAAOtG,IACzB2C,EAAMoC,KAAKrI,KAAK,GAItBiG,EAAMoC,KAAKrI,KAAKvG,EAAOgQ,GAAcrG,OAAO8E,EAAOpL,OAAOhC,MAAMK,KAAK4B,IAIvE,IAAK,IADgB8M,KAAcC,EAASpH,KAAKqH,KAAK9D,EAAMoC,KAAKC,OAA/C,GACT0B,EAAI,EAAGA,EAAIF,EAAQE,IAC1BH,EAAQ7J,KAAKiG,EAAMoC,KAAKM,MAFR,EAEcqB,EAFd,GAEgCA,EAAI,KAGtD,OADA/D,EAAMoC,KAAOwB,EACN5D,IAKXkC,EAAS8B,MAAQ,SAAUlN,GACzB,OAAOtD,EAAO+K,SAASzH,GAAI,KACxBqG,OAAO8E,EAAOpL,OAAOhC,MACrBS,OAAO,MACP2O,UAAU,EAAG,IAGlB/B,EAASgC,UAAY,SAAUhP,GAC7B,OAAO+M,EAAOlE,eAAevK,EAAO0B,IAAO,GAAO,IAChD+M,EAAOzD,gBAAgBhL,EAAO0B,IAAO,GAAO,IAC5C+M,EAAOpD,UAAUrL,EAAO0B,KACxB+M,EAAOtD,iBAAiBnL,EAAO0B,KAGnCgN,EAASzE,WAAa,SAAUvI,GAC9B,GAAIA,EAAM,CACR,GAAIgN,EAASiC,cAAcjP,GACzB,OAAO+M,EAAOlB,KAEhBkB,EAAOxE,WAAWjK,EAAO0B,GAAMmJ,KAAK6D,EAAShN,KAAKmJ,QAAQ1B,OAAOuF,EAAShN,KAAKyH,WAC3EsF,EAAOpL,OAAON,QAChB0L,EAAOlB,OAKbmB,EAASiC,cAAgB,SAAUlK,GACjC,OAAOA,GAAKiI,EAAShN,KAAKA,SAAW+E,EAAE/E,QAAUgN,EAAShN,KAAK8K,UAAY/F,EAAE+F,SAAWkC,EAAShN,KAAKsL,SAAWvG,EAAEuG,QAGrH0B,EAASkC,eAAiB,SAAUnK,GAClC,IAAI6G,EAAQoB,EAASD,OAAO9J,QAAQX,eACpC,QAAKsJ,IAIE7G,GAAK6G,EAAM5L,SAAW+E,EAAE/E,QAAU4L,EAAMd,UAAY/F,EAAE+F,SAAWc,EAAMN,SAAWvG,EAAEuG,WAG/FnM,SACA,+PAOL2C,UAAU,kCAAmC,WAC5C,SAAUG,GACR,IAAIkN,EAAuB,SAAUnQ,EAASoD,GAC5C,IAAIgN,EAAQrQ,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,UACjDrC,EAAW5K,EAAMkN,IAEjBC,KAF8BnN,EAAM0I,MAIlCoC,KAAKsC,QAAQ,SAAUrO,EAAUS,GACrC2N,EAAU1K,KAAK,QACf1D,EAASqO,QAAQ,SAAUC,EAASZ,GAElC,GADAU,EAAU1K,KAAK,QACX4K,EACF,GAAIzC,EAASgC,UAAUS,GAAU,CAE/B,IAAIC,EAAW,iBAAqB9N,EAAI,KAAOiN,EAAI,IAEnDU,EAAU1K,KAAK,eAAiB4K,EAAQrP,OAAO,cAAgB,4FAA8FsP,EAAW,iCAAmCA,EAAW,gCAAkCA,EAAW,OACnQH,EAAU1K,KAAK4K,EAAQrP,OAAO,MAC9BmP,EAAU1K,KAAK,aAEf0K,EAAU1K,KAAK,iCACf0K,EAAU1K,KAAK4K,EAAQrP,OAAO,MAC9BmP,EAAU1K,KAAK,WAGnB0K,EAAU1K,KAAK,WAEjB0K,EAAU1K,KAAK,WAGjBuK,EAAMO,KAAKJ,EAAUK,KAAK,KAC1B3N,EAASmN,EAATnN,CAAgBG,IAGlB,OACEA,OACEyN,IAAK,KAEP1N,QAAS,6BACTD,SAAU,KACV/C,SACE,gPAUFoD,KAAM,SAAUH,EAAOpD,EAASwD,EAAOwK,GACrC5K,EAAMkN,IAAMtC,EACZ5K,EAAM0I,MAAQkC,EAASa,eAAexE,SAASjH,EAAMyN,MACrDV,EAAqBnQ,EAASoD,GAC9BA,EAAM8L,OAAO,WACX,OAAO9L,EAAMyN,KACZ,SAAUA,EAAKC,GACZD,GAAOC,IACT1N,EAAM0I,MAAQkC,EAASa,eAAexE,SAASjH,EAAMyN,MACrDV,EAAqBnQ,EAASoD,WAS5CrD,QAAQK,OAAOb,GACZuD,UAAU,gBAAiB,WAC1B,OACES,KAAM,SAAUH,EAAOvD,GACrBA,EAAGqG,GAAG,QAAS,SAAUvC,GACvBA,EAAEC,uBAKZ7D,QAAQK,OAAOb,GACZuD,UAAU,0BAA2B,WACpC,SAAUE,GAkBR,OACEE,SAAU,IACV/C,SAjBA,ssCAkBAoD,KAAM,SAAUH,EAAOpD,EAASwD,GAC9B,IAAIuN,EAA4B,YAAfvN,EAAMwN,KACnBC,EAA4B,YAAfzN,EAAMwN,KACnBjD,EAAS3K,EAAM2K,OAEfmD,EAAgBxM,SAAS2L,cAAc,iBAEvCc,EAAgB,SAASC,EAAKC,GAChC,IAAIC,EAAM,EAEV,GAAY,KADZF,EAAMA,GAAO,IAAM,EAAIA,GACR,CACb,IAAIG,EAAUR,GAAYE,EAAa,GAAK,GAC5CK,EAAM/I,KAAKC,MAAM+I,EAAU,IAAMH,GAGnC,GAAIL,EAAY,CACd,IAAIzI,EAAayF,EAAOpL,OAAOH,aAC3B8F,EAAa,GAAKA,EAAa,MAAIA,EAAa,GAEpD,IAAIpH,EAAWoH,EAAaC,KAAKC,MAAM8I,EAAMhJ,GAI7C,GAHIpH,GAAW,KACbA,EAAU,GAAKoH,IAEZlF,EAAMoO,gBAAgB1L,MAAOwL,IAAO,OACzCvD,EAAOxM,YAAYkH,OAAOvH,QACrB,GAAK+P,EAML,CAEL,GADIK,GAAO,KAAIA,EAAM,IAChBlO,EAAMoO,gBAAgB1L,MAAOwL,IAAO,OACzCvD,EAAOxM,YAAYmH,OAAO4I,OATL,CAIrB,GAHY,KAARA,IAAYA,EAAM,GACjBvD,EAAOpL,OAAOf,YAAWmM,EAAOnG,SAAWyJ,EAAM,GAAK,KAAO,MAC9DtD,EAAOjD,SAAQwG,GAAO,KACrBlO,EAAMoO,gBAAgB1L,MAAOwL,IAAO,OACzCvD,EAAOxM,YAAY4I,KAAKmH,KASxBG,EAAoB,iBAAkBxR,OAC1CyR,GACEC,aAAeF,EAAmB,aAAe,YACjDG,WAAeH,EAAmB,WAAe,UACjDI,aAAeJ,EAAmB,YAAe,aAG/CK,EAAc,SAASnO,GACzBA,EAAEC,iBAEF,IAAImO,EAAgBpO,EAAEqO,cAAcC,QAAQ,OAC5CC,EAAaH,EAAcI,iBAAiB,GAExCV,IAAkB9N,EAAIA,EAAEyO,eAAe,IAE3C,IAAIjJ,EAAM4I,EAAcM,YAAc,GAAM1O,EAAE2O,MAAQJ,EAAWK,MAC7DC,EAAM7O,EAAE8O,MAAQP,EAAWQ,IAAQX,EAAcY,aAAe,EAEhEtB,EAAM9I,KAAKqK,KAAKrK,KAAKsK,IAAI1J,EAAG,GAAKZ,KAAKsK,IAAIL,EAAG,IAC7CpB,EAAM7I,KAAKC,MAAOD,KAAKuK,MAAM3J,EAAGqJ,IAAM,IAAMjK,KAAKwK,KAErD/P,EAAS,WACPmO,EAAcC,EAAI,IAAKC,MAI3BrR,EAAQkG,GAAGwL,EAAOC,aAAc,WAC7B3R,EAAQkG,GAAGwL,EAAOG,aAAcC,KAGnC9R,EAAQkG,GAAGwL,EAAOE,WAAY,WAC1B5R,EAAQgT,IAAItB,EAAOG,gBAGvBzO,EAAM6P,IAAI,WAAY,WAClBjT,EAAQgT,IAAItB,EAAOG,aAAcC,KAGrC,IAAIoB,EAAO,WACT,IAAIC,EAAQpT,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,sBACjD+C,EAAWrT,QAAQC,QAAQkR,EAAcb,cAAc,gBAEvDgD,EAAInC,EAAcb,cAAc,gBAAgBgC,YAChDiB,EAAKjJ,SAASzK,EAAIwT,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEC,EAAKnJ,SAASzK,EAAIwT,EAAU,gBAAgBG,QAAQ,KAAM,MAAQ,EAIlEE,EAAcJ,IAHThJ,SAASzK,EAAIuT,EAAO,cAAcI,QAAQ,KAAM,MAAQ,IACxDlJ,SAASzK,EAAIuT,EAAO,eAAeI,QAAQ,KAAM,MAAQ,GAEjCD,EAAKE,GACtCL,EAAMvT,IAAI,QAAS,EAAe,MAYlC,IAAK,IAVD8T,EAAKrJ,SAASzK,EAAIwT,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEI,EAAKtJ,SAASzK,EAAIwT,EAAU,cAAcG,QAAQ,KAAM,MAAQ,EAChEK,EAAKvJ,SAASzK,EAAIuT,EAAO,cAAcI,QAAQ,KAAM,MAAQ,EAC7DM,EAAKxJ,SAASzK,EAAIuT,EAAO,aAAaI,QAAQ,KAAM,MAAQ,EAE5DO,EAAKL,EAAa,EAClB5D,EAAIiE,EAAI,IAERC,KAEKxG,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAEIgF,EAAQuB,EAFJjE,EAAItH,KAAKyL,IAAc,EAAVzL,KAAKwK,IAAUxF,EAAI,KAEpBmG,EAAK,GAAMA,EAAKE,GAChClB,EAAOoB,EAFHjE,EAAItH,KAAK0L,IAAc,EAAV1L,KAAKwK,IAAUxF,EAAI,KAErBsG,EAAK,GAAMF,EAAKE,GAE/B1J,GACFoI,KAAMA,EACNG,IAAKA,EACL5M,MAAQiL,GAAYE,EAAkB,EAAJ1D,EAASA,EAC3C2G,OAAQC,cAAe5B,EAAO,KAAM6B,aAAc1B,EAAM,OAGtD3B,GAAcE,EAChB9G,EAAKkK,QAAUlK,EAAKrE,MAAQ,GAAM,IAAMqE,EAAKrE,MAASqE,EAAKrE,MAEvDiI,EAAOpL,OAAOf,UAChBuI,EAAKkK,QAAiB,IAAN9G,EAAW,GAAKA,EAEhCpD,EAAKkK,QAAU9G,EAInBwG,EAAOlO,KAAKsE,GAId,GAFA/G,EAAM2Q,OAASA,GAEVhG,EAAOpL,OAAOf,YAAcmP,IAAeE,EAAY,CAI1D,IAAK,IAHDqD,KAEAC,EAAMT,EAAI,IACLU,EAAM,GAAIA,EAAM,KAAMA,EAAK,CAClC,IAEIC,EAAUX,EAFJS,EAAMhM,KAAKyL,IAAc,EAAVzL,KAAKwK,IAAUyB,EAAM,KAEtBd,EAAK,GAAMA,EAAKE,GACpCc,EAASZ,EAFHS,EAAMhM,KAAK0L,IAAc,EAAV1L,KAAKwK,IAAUyB,EAAM,KAEvBX,EAAK,GAAMF,EAAKE,GAEnCc,GACFpC,KAAMkC,EACN/B,IAAKgC,EACL5O,MAAO0O,EACPN,OAAQC,cAAeM,EAAS,KAAML,aAAcM,EAAQ,OAG9DC,EAAON,QAAUG,EAEjBF,EAASzO,KAAK8O,GAEhBvR,EAAMkR,SAAWA,EAGnBlR,EAAM4N,KAAOxN,EAAMwN,KACnB4D,IACAzB,EAAMvT,IAAI,SAAU6T,EAAa,MAEjC,IAAIoB,EAAc7U,EAAQ,GAAGqQ,cAAc,qBACvCyE,EAAeD,EAAYxC,YAAc,GAAM,IACjD0C,EAAgBF,EAAYlC,aAAe,GAAM,IAC/CqC,EAAMlB,GAAK/F,EAAOpL,OAAOf,UAAY,IAAM,KAC3CqT,EAAMnB,EAAI,IACVoB,EAAMpB,EAAI,EAEd/T,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,mBAAmBzQ,KAC1D2S,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQH,EAAM,KACdI,UAAYtB,EAAIkB,EAAMtB,EAAM,OAC3BvN,SAAU4K,GAAeE,EAAoB,GAAP,MAEzClR,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,qBAAqBzQ,KAE5D2S,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQF,EAAM,KACdG,UAAYtB,EAAImB,EAAMvB,EAAM,OAC3BvN,SAAS4K,EAAa,KAAO,IAEhChR,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,qBAAqBzQ,KAE5D2S,KAAMuB,EAAU,IAALF,EAAY,KACvBuB,OAAQD,EAAM,KACdE,UAAYtB,EAAIoB,EAAMxB,EAAM,OAC3BvN,SAAS8K,EAAa,KAAO,IAEhClR,QAAQC,QAAQ6U,GAAajV,KAC3B2S,KAAOuB,EAAIJ,EAAKE,EAAKkB,EAAe,KACpCM,UAAYtB,EAAKF,EAAK,EAAMmB,EAAe,OAE7CM,KAGEA,EAAe,WACjB,IAAInL,EAAQ6D,EAAO1F,uBACfkF,EAAIrD,EAAMC,OACVpE,EAAImE,EAAMzB,SACV6M,EAAIpL,EAAMxB,SAEd6M,EAAcxV,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,mBAAoB,GAAK9C,GAChFgI,EAAcxV,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,qBAAsB,EAAItK,GACjFwP,EAAcxV,QAAQC,QAAQA,EAAQ,GAAGqQ,cAAc,qBAAsB,EAAIiF,IAG/EC,EAAgB,SAAU1V,EAAIuR,GAChCrR,QAAQC,QAAQH,GAAID,KAClB4V,gBAAiB,UAAYpE,EAAM,OACnCqE,iBAAkB,UAAYrE,EAAM,OACpCsE,gBAAiB,UAAYtE,EAAM,OACnCuE,UAAa,UAAYvE,EAAM,UAK/BwD,EAAkB,WACpB,IAAI5T,EAAO+M,EAAO1F,uBACduN,EAAM7H,EAAOpL,OAAOf,UAAY,GAAK,GAEvCwB,EAAMyS,aADJ9E,EACmB/P,EAAKyH,SACjBwI,EACYjQ,EAAK0H,SAEL1H,EAAKmJ,OAASyL,GAIvCxS,EAAM8L,OAAO,WACX,IAAI4G,EAAM/H,EAAO1F,uBACjB,OAAOyN,EAAMA,EAAI1U,OAAO,YAAc,IACrC,WACDwT,IACAS,MAGFjS,EAAM2S,QAAU,SAAUzE,GACnBP,GAAeE,EAYRA,GASNK,IAAQlO,EAAMyS,cAAc9H,EAAOlB,KACvCkB,EAAOxM,YAAYmH,OAAO4I,KATtBA,IAAQlO,EAAMyS,cAAiB9H,EAAOpL,OAAOxB,SAC/C4M,EAAOlB,KAETkB,EAAOxM,YAAYkH,OAAO6I,GACrBvD,EAAOpL,OAAOxB,QAER4M,EAAOpL,OAAON,QAAQ0L,EAAOlB,KADtCkB,EAAOxM,YAAYmH,OAAO,KAjBxB4I,IAAQlO,EAAMyS,cAAiB9H,EAAOpL,OAAON,QAAQ0L,EAAOlB,KAE5DkB,EAAOpL,OAAOf,UAChBmM,EAAOxM,YAAY4I,KAAK4D,EAAOjD,OAAUwG,EAAM,GAAMA,IAErDvD,EAAOxM,YAAY4I,KAAKmH,GACTvD,EAAOnG,SAAlB0J,GAAO,GAAsB,KACV,MAGrBvD,EAAOpL,OAAON,QAAQ0L,EAAOlB,OAerCzJ,EAAMoO,eAAiB,SAAUwE,GAC/B,OAAIjF,EACKhD,EAAOrB,kBAAkBsJ,EAAMlQ,OAC7BmL,EACFlD,EAAOpB,kBAAkBqJ,EAAMlQ,OAE/BiI,EAAOvB,gBAAgBwJ,EAAMlQ,QAIxC,IAAImQ,EAAY7S,EAAM8L,OAAO,WAC3B,OAAOlP,EAAQ,GAAGkW,iBAAiB,OAAO/H,QACzC,WACD+E,IACA+C,WAKH1W,EAGT,IAAI4W,EAAalW,QAAUA,OAAOmW,SAAWnW,OAAOmW,QAAQC,KACtC,mBAAXC,QAAyBA,OAAOC,IACzCD,QAAQ,UAAWjX,GACQ,oBAAXe,QAA0BA,QAAUA,OAAOoW,SAA+B,mBAAZrT,UAA4BgT,EAC1G/V,OAAOoW,QAAUnX,EAAqB8D,QAAQ,WAE9C9D,GAAwC,oBAAXoX,OAAyBA,OAASxW,QAAQX,QAjyC3E","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 1dad1f0..16692e8 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 72131f5..9ae6b44 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -306,40 +306,7 @@ } }; }]) - /** Returns a service that opens a dialog when the attribute shown is called - The dialog serves to select a date/time/etc. depending on the options given to the function show - - @param options extends mdcDefaultParams - { - date: {boolean} =true, - time: {boolean} =true, - minutes: {boolean} =true, - seconds: {boolean} =false, - format: {string} ='YYYY-MM-DD', - minDate: {strign} =null, - maxDate: {string} =null, - currentDate: {string} =null, - lang: {string} =window.navigator.userLanguage || window.navigator.language || 'en', - weekStart: {int} =0, - shortTime: {boolean} =false, - cancelText: {string} ='Cancel', - showTodaysDate: {string} ='', - todayText: {string} ='Today', - okText: {string} ='OK', - amText: {string} ='AM', - pmText: {string} ='PM', - disableDates: {date[]} =[], - weekDays: {boolean} =false, - disableParentScroll: {boolean} =false, - autoOk: {boolean} =false, - editInput: {boolean} =false, - clickOutsideToClose: {boolean} =false, - minuteSteps: {int} =5, - showIcon: {boolean} =false, - templateUrl: {string} ='' - } - @return promise - */ + // Returns a service that opens a dialog when the attribute shown is called .factory('mdcDateTimeDialog', ["$mdDialog", "$q", "mdcDefaultParams", function ($mdDialog, $q, mdcDefaultParams) { var defaultParams = mdcDefaultParams(); var accepted_options = Object.keys(defaultParams); diff --git a/package.json b/package.json index a9ad6b3..4f97b41 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.5", + "version": "1.9.6", "keywords": [ "css", "js", From e3b11ff8b6ad846516442aa2771611595af2576f Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 6 Dec 2017 14:23:19 -0500 Subject: [PATCH 113/226] #23 Add ng-clear attribute --- README.md | 2 ++ index.html | 18 +++++++++--------- js/angular-material-datetimepicker.js | 11 +++++------ js/demo.js | 4 ++++ package.json | 10 +++++----- yarn.lock | 20 ++++++++++---------- 6 files changed, 35 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index f089f59..54348c8 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ Originally designed for Bootstrap Material, this has been modified to work with ## Updates | Date | Author | Description | | ---------- | -------- | ------------------------------------------------------ | +| 2017-12-06 | hexadecy | Add ng-clear to be used with show-icon clear X button | | 2017-10-18 | paragraff | custom template | | 2017-09-11 | hexadecy | show-icon button, useful when in edit-input mode | | 2017-08-19 | hexadecy | Quick year and month menu selector | @@ -113,6 +114,7 @@ The directive accepts several attributes which are described below: | ------------------------- | ----------------------- | -------------------------------------------------------------------- | | **ng-model** | (String\|Date\|Moment | Initial Date or model to assign the date to | | **ng-change** | Function | A function to call when the input value changes | +| **ng-clear** | Function | A function to call when the input is cleared | | **format** | String | [MomentJS Format](momentjs.com/docs/#/parsing/string-format/),defaults to `HH:mm` for time picker only, `YYYY-MM-DD` for date picker only and `YYYY-MM-DD HH:mm` for both timepicker and date picker | | **short-time** | Boolean | true => Display 12 hours AM\|PM (default: false) | | **min-date** | (String\|Date\|Moment) | Minimum selectable date | diff --git a/index.html b/index.html index cb14256..3ec1256 100644 --- a/index.html +++ b/index.html @@ -11,15 +11,15 @@ - - - + + + - - - - - + + + + + @@ -123,7 +123,7 @@

Datetime Pickers

+ ng-model="dateTimeEdit" ng-clear="clear('cleared')">
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 9ae6b44..97774f7 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -154,6 +154,7 @@ scope: { currentDate: '=ngModel', ngChange: '&', + ngClear: '&', time: '=', date: '=', minutes: '=', @@ -298,6 +299,7 @@ ngModel.$setViewValue(null); scope.currentDate = null; ngModel.$render(); + scope.ngClear(); $timeout(function() { element[0].focus(); }, 0, false); @@ -1163,16 +1165,13 @@ var left24 = (r + x24 + pL / 2) - (pL + mL); var top24 = (r - y24 - mT / 2) - (pT + mT); - var hour24 = { + points24.push({ left: left24, top: top24, value: h24, + display: h24, style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'} - }; - - hour24.display = h24; - - points24.push(hour24); + }); } scope.points24 = points24; } diff --git a/js/demo.js b/js/demo.js index c8cf318..1893bac 100644 --- a/js/demo.js +++ b/js/demo.js @@ -129,6 +129,10 @@ }); }; + $scope.clear = function(msg) { + console.log(msg); + }; + }) .directive('exSourceCode', function () { diff --git a/package.json b/package.json index 4f97b41..0f7df9f 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,11 @@ "homepage": "https://beenote.github.io/angular-material-datetimepicker/", "main": "js/angular-material-datetimepicker.js", "dependencies": { - "angular": "^1.6.6", - "angular-animate": "^1.6.6", - "angular-aria": "^1.6.6", + "angular": "^1.6.7", + "angular-animate": "^1.6.7", + "angular-aria": "^1.6.7", "angular-material": "^1.1.5", - "moment": "^2.19.1" + "moment": "^2.19.3" }, "repository": { "type": "git", @@ -32,7 +32,7 @@ "gulp-rename": "^1.2.2", "gulp-sourcemaps": "^2.6.1", "gulp-uglify": "^3.0.0", - "pump": "^1.0.2", + "pump": "^1.0.3", "run-sequence": "^2.1.0" } } diff --git a/yarn.lock b/yarn.lock index f1d6d92..6f2027c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -32,20 +32,20 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" angular-animate@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.6.tgz#6925647b141a040d241bf125040f1a150fcd8a70" + version "1.6.7" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.7.tgz#bc6dbe6a190d019a6fbb2c7373d40f01cfd75899" angular-aria@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.6.tgz#58dd748e09564bc8409f739bde57b35fbee5b6a5" + version "1.6.7" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.7.tgz#a108a10fc6616914f6e56a6c2072da87f4e6d342" angular-material@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.5.tgz#a5450cd8205e15a7691edc389476094cf86d592b" angular@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.6.tgz#fd5a3cfb437ce382d854ee01120797978527cb64" + version "1.6.7" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.7.tgz#0f89837dae1776b01ccb1fa2096db0d9373d9897" ansi-regex@^2.0.0: version "2.1.1" @@ -931,8 +931,8 @@ mkdirp@^0.5.0: minimist "0.0.8" moment@^2.19.1: - version "2.19.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167" + version "2.19.3" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.3.tgz#bdb99d270d6d7fda78cc0fbace855e27fe7da69f" ms@2.0.0: version "2.0.0" @@ -1064,8 +1064,8 @@ process-nextick-args@~1.0.6: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" pump@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" + version "1.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" dependencies: end-of-stream "^1.1.0" once "^1.3.1" From aa44d8bbfda8913101606bbc3cb87d83b613a534 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 6 Dec 2017 15:00:19 -0500 Subject: [PATCH 114/226] version 1.9.7 --- README.md | 26 +++++++++---------- bower.json | 4 +-- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 54348c8..c3d2a8c 100644 --- a/README.md +++ b/README.md @@ -44,12 +44,12 @@ Depends on the following library: - Moment ``` - - - + + + - + ``` ## Installing via yarn, npm or bower @@ -61,21 +61,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 355e3b0..a26e0cc 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.6", + "version": "1.9.7", "keywords": [ "css", "js", @@ -28,7 +28,7 @@ "test-infra" ], "dependencies": { - "moment": "^2.19.1", + "moment": "^2.19.3", "angular-material": "^1.1.5" } } diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index f9d7441..e9f1004 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var p={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?p.templateUrl=l.templateUrl:p.template=n,t.show(p).then(function(t){s.currentDate=t?t._d:t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),l){var p={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(p):p,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+v),P=M-S*Math.cos(2*Math.PI*(E/12))-k/2-(g+k),V={left:O,top:P,value:E,style:{"margin-left":O+"px","margin-top":P+"px"}};V.display=E,A.push(V)}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var N=a[0].querySelector(".dtp-clock-center"),Y=N.offsetWidth/2||7.5,H=N.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),$=M/1.4,j=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:j+"px",marginTop:M-j-f+"px"}).addClass(s?"on":""),angular.element(N).css({left:M+f+v-Y+"px",marginTop:M-v/2-H+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",ngClear:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var p={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?p.templateUrl=l.templateUrl:p.template=n,t.show(p).then(function(t){s.currentDate=t?t._d:t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),l){var p={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(p):p,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a._d:void 0}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),s.ngClear(),a(function(){c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){e&&e._d;o.resolve(e?e._d:e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+v),P=M-S*Math.cos(2*Math.PI*(E/12))-k/2-(g+k);A.push({left:O,top:P,value:E,display:E,style:{"margin-left":O+"px","margin-top":P+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var V=a[0].querySelector(".dtp-clock-center"),N=V.offsetWidth/2||7.5,Y=V.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(V).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index d5e08ca..a3ba0f7 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","hour24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n var hour24 = {\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n };\r\n\r\n hour24.display = h24;\r\n\r\n points24.push(hour24);\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","ngClear","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","_d","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n ngClear: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n if (m.isValid()) return m._d;\r\n return;\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n scope.currentDate = v ? v._d : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n scope.ngClear();\r\n $timeout(function() {\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n var currentDate = v ? v._d : v;\r\n deferred.resolve(v ? v._d : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 0f7df9f..7fe606f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.9.6", + "version": "1.9.7", "keywords": [ "css", "js", From 65520f55b517eeafceefbe9413f8f10cd99bee8a Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 14 Dec 2017 23:10:23 -0500 Subject: [PATCH 115/226] #23 call ng-change when cleared with X --- README.md | 2 -- index.html | 2 +- js/angular-material-datetimepicker.js | 8 +++----- js/demo.js | 16 ++-------------- 4 files changed, 6 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index c3d2a8c..0f175e0 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,6 @@ Originally designed for Bootstrap Material, this has been modified to work with ## Updates | Date | Author | Description | | ---------- | -------- | ------------------------------------------------------ | -| 2017-12-06 | hexadecy | Add ng-clear to be used with show-icon clear X button | | 2017-10-18 | paragraff | custom template | | 2017-09-11 | hexadecy | show-icon button, useful when in edit-input mode | | 2017-08-19 | hexadecy | Quick year and month menu selector | @@ -114,7 +113,6 @@ The directive accepts several attributes which are described below: | ------------------------- | ----------------------- | -------------------------------------------------------------------- | | **ng-model** | (String\|Date\|Moment | Initial Date or model to assign the date to | | **ng-change** | Function | A function to call when the input value changes | -| **ng-clear** | Function | A function to call when the input is cleared | | **format** | String | [MomentJS Format](momentjs.com/docs/#/parsing/string-format/),defaults to `HH:mm` for time picker only, `YYYY-MM-DD` for date picker only and `YYYY-MM-DD HH:mm` for both timepicker and date picker | | **short-time** | Boolean | true => Display 12 hours AM\|PM (default: false) | | **min-date** | (String\|Date\|Moment) | Minimum selectable date | diff --git a/index.html b/index.html index 3ec1256..6b5c988 100644 --- a/index.html +++ b/index.html @@ -123,7 +123,7 @@

Datetime Pickers

+ ng-model="dateTimeEdit">
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 97774f7..5a97faf 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -154,7 +154,6 @@ scope: { currentDate: '=ngModel', ngChange: '&', - ngClear: '&', time: '=', date: '=', minutes: '=', @@ -217,8 +216,7 @@ ngModel.$parsers.push(function (value) { if (typeof value === 'undefined') return; var m = moment(value, scope.format); - if (m.isValid()) return m._d; - return; + return m.isValid() ? m._d : ''; }); } @@ -283,7 +281,7 @@ if (scope.showIcon) { element.addClass('dtp-no-msclear dtp-input'); var calendarButton = - '
+
+ + + + +
+
+
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 32bc8b3..1b21116 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -256,6 +256,12 @@ else dialogOptions.templateUrl = options.templateUrl; $mdDialog.show(dialogOptions).then(function(v) { + if (ngModel.$options.$$options.timezone) { + var offset = ngModel.$options.getOption('timezone'); + if (offset === 'utc' || offset === 'UTC') offset = 0; + v.utcOffset(offset, true); + } + scope.currentDate = v && !v._isUTC ? v.toDate() : v; isOn = false; @@ -342,8 +348,7 @@ else dialogOptions.templateUrl = options.templateUrl; $mdDialog.show(dialogOptions).then(function (v) { - var currentDate = v ? v.toDate() : v; - deferred.resolve(v ? v.toDate() : v); + deferred.resolve(v && !v._isUTC ? v.toDate() : v); }, function () { deferred.reject(); }); diff --git a/yarn.lock b/yarn.lock index 6f5344f..a3086af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,33 +19,47 @@ normalize-path "^2.0.1" through2 "^2.0.3" -acorn@4.X: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - -acorn@^5.0.3: - version "5.1.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" +acorn@5.X, acorn@^5.0.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" angular-animate@^1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.7.tgz#bc6dbe6a190d019a6fbb2c7373d40f01cfd75899" + version "1.6.8" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.8.tgz#f38554c9c68770c9588b39c49920bc24e0d6f98a" angular-aria@^1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.7.tgz#a108a10fc6616914f6e56a6c2072da87f4e6d342" + version "1.6.8" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.8.tgz#f5dfcdd69c0dddcb8b691749285613caa7e6cca5" angular-material@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.5.tgz#a5450cd8205e15a7691edc389476094cf86d592b" + version "1.1.6" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.6.tgz#ec8c55423f4da2eb06c91f44af3cf50f867fbe59" angular@^1.6.7: - version "1.6.7" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.7.tgz#0f89837dae1776b01ccb1fa2096db0d9373d9897" + version "1.6.8" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.8.tgz#5be378a58be91a5489e78b59c4518cd9fd273ffb" + +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + dependencies: + ansi-wrap "0.1.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + dependencies: + ansi-wrap "0.1.0" + +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + dependencies: + ansi-wrap "0.1.0" ansi-regex@^2.0.0: version "2.1.1" @@ -55,10 +69,21 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" +ansi-wrap@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" +arr-diff@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + dependencies: + arr-flatten "^1.0.1" + array-slice "^0.2.3" + arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -69,6 +94,10 @@ arr-flatten@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +arr-union@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" + array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" @@ -77,6 +106,10 @@ array-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + array-slice@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.0.0.tgz#e73034f00dcc1f40876008fd20feae77bd4b7c2f" @@ -116,7 +149,7 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -140,10 +173,18 @@ clone@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" -clone@^1.0.0, clone@^1.0.2: +clone@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" + +clone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + commander@~2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -153,8 +194,8 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" convert-source-map@1.X: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" core-util-is@~1.0.0: version "1.0.2" @@ -179,9 +220,9 @@ dateformat@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" -debug-fabulous@>=0.1.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.2.1.tgz#57e1164ba0e9ad6d9a65f20075ff3c2bd6bde0dc" +debug-fabulous@1.X: + version "1.0.0" + resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-1.0.0.tgz#57f6648646097b1b0849dcda0017362c1ec00f8b" dependencies: debug "3.X" memoizee "0.4.X" @@ -232,13 +273,13 @@ end-of-stream@~0.1.5: once "~1.3.0" es5-ext@^0.10.14, es5-ext@^0.10.30, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: - version "0.10.35" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.35.tgz#18ee858ce6a3c45c7d79e91c15fcca9ec568494f" + version "0.10.38" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.38.tgz#fa7d40d65bbc9bb8a67e1d3f9cc656a00530eed3" dependencies: - es6-iterator "~2.0.1" + es6-iterator "~2.0.3" es6-symbol "~3.1.1" -es6-iterator@^2.0.1, es6-iterator@~2.0.1: +es6-iterator@^2.0.1, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" dependencies: @@ -297,6 +338,12 @@ expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +extend-shallow@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" + dependencies: + kind-of "^1.1.0" + extend@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -307,11 +354,12 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" -fancy-log@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" +fancy-log@^1.1.0, fancy-log@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" dependencies: - chalk "^1.1.1" + ansi-gray "^0.1.1" + color-support "^1.1.3" time-stamp "^1.0.0" filename-regex@^2.0.0: @@ -463,8 +511,8 @@ globule@~0.1.0: minimatch "~0.2.11" glogg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" + version "1.0.1" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" dependencies: sparkles "^1.0.0" @@ -483,11 +531,11 @@ graceful-fs@~1.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" gulp-clean-css@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.0.tgz#e43e4c8d695060f6ba08a154d8e76d0d87b1c822" + version "3.9.2" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.2.tgz#b280e6f56bf8bee39e697e77aaa72d3e7e7d3bd5" dependencies: clean-css "4.1.9" - gulp-util "3.0.8" + plugin-error "0.1.2" through2 "2.0.3" vinyl-sourcemaps-apply "0.2.1" @@ -496,21 +544,20 @@ gulp-rename@^1.2.2: resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" gulp-sourcemaps@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.1.tgz#833a4e28f0b8f4661075032cd782417f7cd8fb0b" + version "2.6.4" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.4.tgz#cbb2008450b1bcce6cd23bf98337be751bf6e30a" dependencies: "@gulp-sourcemaps/identity-map" "1.X" "@gulp-sourcemaps/map-sources" "1.X" - acorn "4.X" + acorn "5.X" convert-source-map "1.X" css "2.X" - debug-fabulous ">=0.1.1" + debug-fabulous "1.X" detect-newline "2.X" graceful-fs "4.X" - source-map "0.X" + source-map "~0.6.0" strip-bom-string "1.X" through2 "2.X" - vinyl "1.X" gulp-uglify@^3.0.0: version "3.0.0" @@ -524,7 +571,7 @@ gulp-uglify@^3.0.0: uglify-js "^3.0.5" vinyl-sourcemaps-apply "^0.2.0" -gulp-util@3.0.8, gulp-util@^3.0.0, gulp-util@^3.0.8: +gulp-util@^3.0.0: version "3.0.8" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" dependencies: @@ -719,6 +766,10 @@ isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" +kind-of@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -931,8 +982,8 @@ mkdirp@^0.5.0: minimist "0.0.8" moment@^2.19.3: - version "2.20.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.0.tgz#53396358994dd3a551e966a66af715ecb6c30ad0" + version "2.20.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd" ms@2.0.0: version "2.0.0" @@ -1051,6 +1102,16 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" +plugin-error@0.1.2, plugin-error@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" + dependencies: + ansi-cyan "^0.1.1" + ansi-red "^0.1.1" + arr-diff "^1.0.1" + arr-union "^2.0.1" + extend-shallow "^1.1.2" + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -1153,11 +1214,12 @@ resolve@^1.1.6, resolve@^1.1.7: path-parse "^1.0.5" run-sequence@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.2.0.tgz#b3f8d42836db89d08b2fe704eaf0c93dfd8335e2" + version "2.2.1" + resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.2.1.tgz#1ce643da36fd8c7ea7e1a9329da33fc2b8898495" dependencies: chalk "^1.1.3" - gulp-util "^3.0.8" + fancy-log "^1.3.2" + plugin-error "^0.1.2" safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" @@ -1192,16 +1254,16 @@ source-map@0.5.x, source-map@^0.5.1, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -source-map@0.X, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - source-map@^0.1.38: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" dependencies: amdefine ">=0.0.4" +source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" @@ -1324,14 +1386,6 @@ vinyl-sourcemaps-apply@0.2.1, vinyl-sourcemaps-apply@^0.2.0: dependencies: source-map "^0.5.1" -vinyl@1.X: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - vinyl@^0.4.0: version "0.4.6" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" From fbdc20c7dd63a757636631038ac7609b3bde37b2 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 8 Feb 2018 22:24:31 -0500 Subject: [PATCH 121/226] version 1.12.0 --- README.md | 31 ++++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- index.html | 20 ++++++------ package.json | 2 +- yarn.lock | 16 +++++----- 7 files changed, 38 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 953f854..06c4447 100644 --- a/README.md +++ b/README.md @@ -43,12 +43,12 @@ Depends on the following library: - Moment ``` - - - - - - + + + + + + ``` ## Installing via yarn, npm or bower @@ -60,21 +60,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example @@ -135,6 +135,7 @@ The directive accepts several attributes which are described below: | **minute-steps** | Number | 1 to 59 minute steps (default: 5) | | **show-icon** | Boolean | true => Show calendar or time icon before + clear (default: false) | | **template-url** | String | You can set a custom HTML template (default: '') | +| **ng-model-options** | timezone option | For example: ng-model-options="{timezone: 'utc'}" | ### Set or update params by injecting `mdcDefaultParams` provider To change params like the locale you can use this method instead of attributes for all datetimepicker: diff --git a/bower.json b/bower.json index c7b0c7b..bf03648 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.11.0", + "version": "1.12.0", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 0c93884..0ceb4af 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var p={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?p.templateUrl=l.templateUrl:p.template=n,t.show(p).then(function(t){s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),l){var p={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(p):p,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){e&&e.toDate();o.resolve(e?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,k=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+k),T=M-y*Math.cos(2*Math.PI*(I/12))-v/2-(g+v),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+k),P=M-S*Math.cos(2*Math.PI*(E/12))-v/2-(g+v);A.push({left:O,top:P,value:E,display:E,style:{"margin-left":O+"px","margin-top":P+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var V=a[0].querySelector(".dtp-clock-center"),N=V.offsetWidth/2||7.5,Y=V.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*k+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*k+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*k+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(V).css({left:M+f+k-N+"px",marginTop:M-k/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var d={};for(var p in o)s.hasOwnProperty(p)&&!angular.isUndefined(s[p])&&(d[p]=s[p]);d.currentDate=s.currentDate,d.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:d},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};d.templateUrl?h.templateUrl=d.templateUrl:h.template=n,t.show(h).then(function(t){if(l.$options.$$options.timezone){var i=l.$options.getOption("timezone");"utc"!==i&&"UTC"!==i||(i=0),t.utcOffset(i,!0)}s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),l){var p={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(p):p,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+v),P=M-S*Math.cos(2*Math.PI*(E/12))-k/2-(g+k);A.push({left:O,top:P,value:E,display:E,style:{"margin-left":O+"px","margin-top":P+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var V=a[0].querySelector(".dtp-clock-center"),N=V.offsetWidth/2||7.5,Y=V.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(V).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index cd9c24a..35b8fab 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","_isUTC","toDate","isSame","undefined","isString","ngModelOptions","*","debounce","$options","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n return m.isValid() ? m.toDate() : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n var currentDate = v ? v.toDate() : v;\r\n deferred.resolve(v ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","$options","$$options","timezone","offset","getOption","utcOffset","_isUTC","toDate","isSame","undefined","isString","ngModelOptions","*","debounce","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n return m.isValid() ? m.toDate() : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n if (ngModel.$options.$$options.timezone) {\r\n var offset = ngModel.$options.getOption('timezone');\r\n if (offset === 'utc' || offset === 'UTC') offset = 0;\r\n v.utcOffset(offset, true);\r\n } \r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/index.html b/index.html index e2a36b0..dd1ba7b 100644 --- a/index.html +++ b/index.html @@ -8,18 +8,18 @@ - + - - - - - - - - - + + + + + + + + + diff --git a/package.json b/package.json index ecb04aa..6d98f54 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.11.0", + "version": "1.12.0", "keywords": [ "css", "js", diff --git a/yarn.lock b/yarn.lock index a3086af..0ea2b98 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,20 +28,20 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" angular-animate@^1.6.7: - version "1.6.8" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.8.tgz#f38554c9c68770c9588b39c49920bc24e0d6f98a" + version "1.6.9" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.9.tgz#a0f926c1ba3190bd8929ef966a7fa79760682622" angular-aria@^1.6.7: - version "1.6.8" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.8.tgz#f5dfcdd69c0dddcb8b691749285613caa7e6cca5" + version "1.6.9" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.9.tgz#150fa603ba7f604f48e3715b76ab3ec4b78971a6" angular-material@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.6.tgz#ec8c55423f4da2eb06c91f44af3cf50f867fbe59" + version "1.1.7" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.7.tgz#b3ebe28bc884495285932fb9cf4f58ed6ce6f4ab" angular@^1.6.7: - version "1.6.8" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.8.tgz#5be378a58be91a5489e78b59c4518cd9fd273ffb" + version "1.6.9" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.9.tgz#bc812932e18909038412d594a5990f4bb66c0619" ansi-cyan@^0.1.1: version "0.1.1" From 7d29d3792e63e255ff10cbbbc200894134f86c9d Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 8 Feb 2018 22:39:17 -0500 Subject: [PATCH 122/226] code format --- js/angular-material-datetimepicker.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index e31c0dd..8a0bc1d 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -215,14 +215,11 @@ ngModel.$parsers.push(function (value) { if (typeof value === 'undefined') return; - var m = moment(value, scope.format); - if (scope.minDate) { - ngModel.$setValidity('min', !m.isBefore(scope.minDate)); - } - if(scope.maxDate) { - ngModel.$setValidity('max', !m.isAfter(scope.maxDate)); - } + var m = moment(value, scope.format); + if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate)); + if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate)); + return m.isValid() ? m.toDate() : ''; }); From e850d5c5062f97b67a14d9918be5ad35a03e815a Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 9 Feb 2018 23:00:57 -0500 Subject: [PATCH 123/226] #25 fix ng-model-options for angular 1.5 --- js/angular-material-datetimepicker.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 8a0bc1d..eef477f 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -153,6 +153,7 @@ require: 'ngModel', scope: { currentDate: '=ngModel', + ngModelOptions: '=', ngChange: '&', time: '=', date: '=', @@ -205,8 +206,12 @@ if (ngModel) { var ngModelOptions = {'*': '$inherit', debounce: 500}; - ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions; - + if (angular.version.major === 1 && angular.version.minor > 5) ngModel.$options = ngModel.$options.createChild(ngModelOptions); + else { + if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone; + ngModel.$options = ngModelOptions; + } + ngModel.$formatters.push(function (value) { if (typeof value === 'undefined') return; var m = moment(value); @@ -260,11 +265,16 @@ else dialogOptions.templateUrl = options.templateUrl; $mdDialog.show(dialogOptions).then(function(v) { - if (ngModel.$options.$$options.timezone) { - var offset = ngModel.$options.getOption('timezone'); + + var offset; + if (angular.version.major === 1 && angular.version.minor > 5 && ngModel.$options.getOption('timezone')) { + offset = ngModel.$options.getOption('timezone'); + } else if (ngModel.$options.timezone) offset = ngModel.$options.timezone; + + if (offset) { if (offset === 'utc' || offset === 'UTC') offset = 0; v.utcOffset(offset, true); - } + } scope.currentDate = v && !v._isUTC ? v.toDate() : v; isOn = false; @@ -830,9 +840,7 @@ calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0]; }; - if (angular.version.major === 1 && angular.version.minor < 5) { - this.$onInit(); - } + if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit(); calendar.getItemAtIndex = function (index) { var month = ((index + 1) % 12) || 12; From b35700352bc3566531b332a6c877be703cf7754c Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 9 Feb 2018 23:00:57 -0500 Subject: [PATCH 124/226] #25 fix ng-model-options for angular 1.5 --- js/angular-material-datetimepicker.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 8a0bc1d..eef477f 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -153,6 +153,7 @@ require: 'ngModel', scope: { currentDate: '=ngModel', + ngModelOptions: '=', ngChange: '&', time: '=', date: '=', @@ -205,8 +206,12 @@ if (ngModel) { var ngModelOptions = {'*': '$inherit', debounce: 500}; - ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions; - + if (angular.version.major === 1 && angular.version.minor > 5) ngModel.$options = ngModel.$options.createChild(ngModelOptions); + else { + if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone; + ngModel.$options = ngModelOptions; + } + ngModel.$formatters.push(function (value) { if (typeof value === 'undefined') return; var m = moment(value); @@ -260,11 +265,16 @@ else dialogOptions.templateUrl = options.templateUrl; $mdDialog.show(dialogOptions).then(function(v) { - if (ngModel.$options.$$options.timezone) { - var offset = ngModel.$options.getOption('timezone'); + + var offset; + if (angular.version.major === 1 && angular.version.minor > 5 && ngModel.$options.getOption('timezone')) { + offset = ngModel.$options.getOption('timezone'); + } else if (ngModel.$options.timezone) offset = ngModel.$options.timezone; + + if (offset) { if (offset === 'utc' || offset === 'UTC') offset = 0; v.utcOffset(offset, true); - } + } scope.currentDate = v && !v._isUTC ? v.toDate() : v; isOn = false; @@ -830,9 +840,7 @@ calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0]; }; - if (angular.version.major === 1 && angular.version.minor < 5) { - this.$onInit(); - } + if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit(); calendar.getItemAtIndex = function (index) { var month = ((index + 1) % 12) || 12; From d249b57031a30118d3569562db0ff4063ccb9962 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 9 Feb 2018 23:13:20 -0500 Subject: [PATCH 125/226] #27 add ng-model-options to exSourceCode --- js/demo.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/demo.js b/js/demo.js index e6907f1..4a32d10 100644 --- a/js/demo.js +++ b/js/demo.js @@ -134,10 +134,12 @@ scope.title = attrs.title || "Source Code"; var sourceCode = tmp[0].outerHTML .replace('ng-model=', 'angularModel=') + .replace('ng-model-options=', 'angularModelOptions=') .replace('ng-click=', 'angularClick=') .replace(/ng-[a-z\-]+/g, '') .replace(/ +/g, ' ') .replace('angularModel=', 'ng-model=') + .replace('angularModelOptions=', 'ng-model-options=') .replace('angularClick=', 'ng-click='); scope.sourceCode = style_html(sourceCode, { From d6b57bb6f10bc3039fdb969892ebc4795f98e58b Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 9 Feb 2018 23:24:33 -0500 Subject: [PATCH 126/226] #28 add test for minDate maxDate with edit input --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index dd1ba7b..4568abd 100644 --- a/index.html +++ b/index.html @@ -134,7 +134,7 @@

Datetime Pickers

From bc75b89511f67973ac35748f23c088bbc8baf347 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 9 Feb 2018 23:35:39 -0500 Subject: [PATCH 127/226] version 1.13.0 --- README.md | 51 ++++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 5 files changed, 31 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 06c4447..6fbb868 100644 --- a/README.md +++ b/README.md @@ -15,23 +15,26 @@ Originally designed for Bootstrap Material, this has been modified to work with - Compatible with right-to-left direction - Support RequireJS and Webpack - Possibility to set a custom external template +- Support moment utc or ng-model-options timezone ## Updates -| Date | Author | Description | -| ---------- | -------- | ------------------------------------------------------ | -| 2017-10-18 | paragraff | custom template | -| 2017-09-11 | hexadecy | show-icon button, useful when in edit-input mode | -| 2017-08-19 | hexadecy | Quick year and month menu selector | -| 2017-08-12 | hexadecy | Add optionnal seconds clock | -| 2017-07-30 | hexadecy | Highlight only week-days (business days) | -| 2017-07-22 | hexadecy | Mouse or touch move to select time, minute steps param | -| 2017-04-26 | hexadecy | New 24-hour clock face | -| 2017-04-17 | hexadecy | Single click to select | -| 2017-02-27 | hexadecy | Can hide minutes view, Month next and prev buttons | -| 2017-02-22 | hexadecy | Fix for rtl website | -| 2017-02-15 | hexadecy | Fix inputs are not bluring after selection is made | -| 2017-01-30 | hexadecy | Add support for angular 1.6.x | -| 2015-11-12 | logbon72 | Adapted plugin for Angular Material | +| Date | Author | Description | +| ---------- | ----------- | ------------------------------------------------------ | +| 2018-02-09 | hexadecy | support ng-model-options timezone | +| 2018-01-29 | coennijhuis | min-date max-date validation when not using the picker | +| 2017-10-18 | paragraff | custom template | +| 2017-09-11 | hexadecy | show-icon button with edit-input mode | +| 2017-08-19 | hexadecy | Quick year and month menu selector | +| 2017-08-12 | hexadecy | Add optionnal seconds clock | +| 2017-07-30 | hexadecy | Highlight only week-days (business days) | +| 2017-07-22 | hexadecy | Mouse or touch move to select time, minute steps param | +| 2017-04-26 | hexadecy | New 24-hour clock face | +| 2017-04-17 | hexadecy | Single click to select | +| 2017-02-27 | hexadecy | Can hide minutes view, Month next and prev buttons | +| 2017-02-22 | hexadecy | Fix for rtl website | +| 2017-02-15 | hexadecy | Fix inputs are not bluring after selection is made | +| 2017-01-30 | hexadecy | Add support for angular 1.6.x | +| 2015-11-12 | logbon72 | Adapted plugin for Angular Material | ### Dependencies Depends on the following library: @@ -60,21 +63,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index bf03648..1e61dae 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.12.0", + "version": "1.13.0", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 0ceb4af..295173d 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var d={};for(var p in o)s.hasOwnProperty(p)&&!angular.isUndefined(s[p])&&(d[p]=s[p]);d.currentDate=s.currentDate,d.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:d},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};d.templateUrl?h.templateUrl=d.templateUrl:h.template=n,t.show(h).then(function(t){if(l.$options.$$options.timezone){var i=l.$options.getOption("timezone");"utc"!==i&&"UTC"!==i||(i=0),t.utcOffset(i,!0)}s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),l){var p={"*":"$inherit",debounce:500};l.$options=l.$options?l.$options.createChild(p):p,l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return a.isValid()?a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,E=12;E<24;++E){var O=M+S*Math.sin(2*Math.PI*(E/12))+f/2-(f+v),P=M-S*Math.cos(2*Math.PI*(E/12))-k/2-(g+k);A.push({left:O,top:P,value:E,display:E,style:{"margin-left":O+"px","margin-top":P+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var V=a[0].querySelector(".dtp-clock-center"),N=V.offsetWidth/2||7.5,Y=V.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(V).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var d={};for(var p in o)s.hasOwnProperty(p)&&!angular.isUndefined(s[p])&&(d[p]=s[p]);d.currentDate=s.currentDate,d.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:d},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};d.templateUrl?h.templateUrl=d.templateUrl:h.template=n,t.show(h).then(function(t){var i;1===angular.version.major&&angular.version.minor>5&&l.$options.getOption("timezone")?i=l.$options.getOption("timezone"):l.$options.timezone&&(i=l.$options.timezone),i&&("utc"!==i&&"UTC"!==i||(i=0),t.utcOffset(i,!0)),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),l){var p={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?l.$options=l.$options.createChild(p):(s.ngModelOptions&&s.ngModelOptions.timezone&&(p.timezone=s.ngModelOptions.timezone),l.$options=p),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),a.isValid()?a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+v),V=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(g+k);A.push({left:E,top:V,value:O,display:O,style:{"margin-left":E+"px","margin-top":V+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,Y=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 35b8fab..c0fc1ca 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","$options","$$options","timezone","offset","getOption","utcOffset","_isUTC","toDate","isSame","undefined","isString","ngModelOptions","*","debounce","createChild","$formatters","push","value","m","isValid","$parsers","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","version","major","minor","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n ngModel.$options = ngModel.$options ? ngModel.$options.createChild(ngModelOptions) : ngModelOptions;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value, scope.format);\r\n return m.isValid() ? m.toDate() : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n if (ngModel.$options.$$options.timezone) {\r\n var offset = ngModel.$options.getOption('timezone');\r\n if (offset === 'utc' || offset === 'UTC') offset = 0;\r\n v.utcOffset(offset, true);\r\n } \r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n this.$onInit();\r\n }\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","offset","version","major","minor","$options","getOption","timezone","utcOffset","_isUTC","toDate","isSame","undefined","isString","*","debounce","createChild","$formatters","push","value","m","isValid","$parsers","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n }\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate)); \r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n\r\n return m.isValid() ? m.toDate() : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n var offset;\r\n if (angular.version.major === 1 && angular.version.minor > 5 && ngModel.$options.getOption('timezone')) {\r\n offset = ngModel.$options.getOption('timezone');\r\n } else if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n\r\n if (offset) {\r\n if (offset === 'utc' || offset === 'UTC') offset = 0;\r\n v.utcOffset(offset, true);\r\n }\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 6d98f54..fdd7b9e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.12.0", + "version": "1.13.0", "keywords": [ "css", "js", From bb68312778f1b0df2322dd61e29ca6609de0b840 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 21 Feb 2018 15:08:58 -0500 Subject: [PATCH 128/226] vulnerabilities badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 6fbb868..18a0af8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Known Vulnerabilities](https://snyk.io/test/github/beenote/angular-material-datetimepicker/badge.svg)](https://snyk.io/test/github/beenote/angular-material-datetimepicker) + # Angular Material DateTimePicker Originally designed for Bootstrap Material, this has been modified to work with [Angular Material](https://material.angularjs.org/). This is an Android style date-time picker for Angular Material. Some added features include: From 425a9b12ed7a4f816bc0bd388403e558272b368d Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 21 Feb 2018 23:49:26 -0500 Subject: [PATCH 129/226] more badges --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 18a0af8..86c2259 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,10 @@ [![Known Vulnerabilities](https://snyk.io/test/github/beenote/angular-material-datetimepicker/badge.svg)](https://snyk.io/test/github/beenote/angular-material-datetimepicker) +[![npm version](https://badge.fury.io/js/ng-material-datetimepicker.svg)](https://badge.fury.io/js/ng-material-datetimepicker) +[![Bower version](https://badge.fury.io/bo/ng-material-datetimepicker.svg)](https://badge.fury.io/bo/ng-material-datetimepicker) +[![Open Source Love](https://badges.frapsoft.com/os/mit/mit.svg?v=102)](https://github.com/ellerbrock/open-source-badge/) +[![Dependency Status](https://david-dm.org/beenote/angular-material-datetimepicker.svg)](https://david-dm.org/beenote/angular-material-datetimepicker) +[![devDependency Status](https://david-dm.org/bbeenote/angular-material-datetimepicker/dev-status.svg)](https://david-dm.org/beenote/angular-material-datetimepicker#info=devDependencies) +[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) # Angular Material DateTimePicker Originally designed for Bootstrap Material, this has been modified to work with [Angular Material](https://material.angularjs.org/). This is an Android style date-time picker for Angular Material. Some added features include: From 037438a8bbf14cc0e0ece738544a4b475dc39555 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 29 Mar 2018 23:24:54 -0400 Subject: [PATCH 130/226] update dep, use gulp4 --- README.md | 7 +- gulpfile.js | 11 +- index.html | 6 +- package.json | 16 +- yarn.lock | 2484 +++++++++++++++++++++++++++++++++++++------------- 5 files changed, 1846 insertions(+), 678 deletions(-) diff --git a/README.md b/README.md index 86c2259..082c3f9 100644 --- a/README.md +++ b/README.md @@ -56,10 +56,11 @@ Depends on the following library: ``` + - - - + + + ``` ## Installing via yarn, npm or bower diff --git a/gulpfile.js b/gulpfile.js index 7bfdc83..4bb2ebb 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -3,12 +3,7 @@ var gulp = require('gulp'), uglify = require('gulp-uglify'), cleanCSS = require('gulp-clean-css'), sourcemaps = require('gulp-sourcemaps'), - rename = require('gulp-rename'), - runSequence = require('run-sequence'); - -gulp.task('default', function(cb) { - runSequence(['js', 'css'], cb); -}); + rename = require('gulp-rename'); gulp.task('js', function(cb) { pump([ @@ -28,4 +23,6 @@ gulp.task('css', function(cb) { rename({extname: '.min.css'}), gulp.dest('./dist/') ], cb); -}); \ No newline at end of file +}); + +gulp.task('default', gulp.parallel('js', 'css')); diff --git a/index.html b/index.html index 4568abd..a80dba4 100644 --- a/index.html +++ b/index.html @@ -8,16 +8,16 @@ - + - + - + diff --git a/package.json b/package.json index fdd7b9e..e2de65f 100644 --- a/package.json +++ b/package.json @@ -16,23 +16,23 @@ "homepage": "https://beenote.github.io/angular-material-datetimepicker/", "main": "js/angular-material-datetimepicker.js", "dependencies": { - "angular": "^1.6.7", - "angular-animate": "^1.6.7", - "angular-aria": "^1.6.7", - "angular-material": "^1.1.5", - "moment": "^2.19.3" + "angular": "^1.6.9", + "angular-animate": "^1.6.9", + "angular-aria": "^1.6.9", + "angular-material": "^1.1.8", + "angular-messages": "^1.6.9", + "moment": "^2.21.0" }, "repository": { "type": "git", "url": "https://github.com/beenote/angular-material-datetimepicker" }, "devDependencies": { - "gulp": "^3.9.1", + "gulp": "^4.0.0", "gulp-clean-css": "^3.8.0", "gulp-rename": "^1.2.2", "gulp-sourcemaps": "^2.6.1", "gulp-uglify": "^3.0.0", - "pump": "^1.0.3", - "run-sequence": "^2.1.0" + "pump": "^3.0.0" } } diff --git a/yarn.lock b/yarn.lock index 0ea2b98..42046a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,35 +19,50 @@ normalize-path "^2.0.1" through2 "^2.0.3" +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + acorn@5.X, acorn@^5.0.3: version "5.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.6.7: +angular-animate@^1.6.9: version "1.6.9" resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.9.tgz#a0f926c1ba3190bd8929ef966a7fa79760682622" -angular-aria@^1.6.7: +angular-aria@^1.6.9: version "1.6.9" resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.9.tgz#150fa603ba7f604f48e3715b76ab3ec4b78971a6" -angular-material@^1.1.5: - version "1.1.7" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.7.tgz#b3ebe28bc884495285932fb9cf4f58ed6ce6f4ab" +angular-material@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.8.tgz#6ddec2db18812506144ccf204cf8ecec330bc85c" + +angular-messages@^1.6.9: + version "1.6.9" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.6.9.tgz#c6958a32ab49316af36e3e5ac6f94c361571fa72" -angular@^1.6.7: +angular@^1.6.9: version "1.6.9" resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.9.tgz#bc812932e18909038412d594a5990f4bb66c0619" -ansi-cyan@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" dependencies: - ansi-wrap "0.1.0" + ansi-wrap "^0.1.0" ansi-gray@^0.1.1: version "0.1.1" @@ -55,152 +70,408 @@ ansi-gray@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-red@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" - dependencies: - ansi-wrap "0.1.0" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-wrap@0.1.0: +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + dependencies: + buffer-equal "^1.0.0" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" -arr-diff@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" dependencies: - arr-flatten "^1.0.1" - array-slice "^0.2.3" + delegates "^1.0.0" + readable-stream "^2.0.6" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-filter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" dependencies: - arr-flatten "^1.0.1" + make-iterator "^1.0.0" -arr-flatten@^1.0.1: +arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" -arr-union@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" +arr-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + dependencies: + make-iterator "^1.0.0" -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" -array-each@^1.0.1: +array-each@^1.0.0, array-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" +array-initial@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + dependencies: + is-number "^4.0.0" array-slice@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.0.0.tgz#e73034f00dcc1f40876008fd20feae77bd4b7c2f" -array-uniq@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +async-done@^1.2.0, async-done@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.2.4.tgz#17b0fcefb9a33cb9de63daa8904c0a65bd535fa0" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^1.0.7" + stream-exhaust "^1.0.1" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async-settle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + dependencies: + async-done "^1.2.2" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +atob@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.0.tgz#ab2b150e51d7b122b9efc8d7340c06b6c41076bc" atob@~1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +bach@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.0" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" -beeper@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" -brace-expansion@^1.0.0: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" +braces@^2.3.0, braces@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" + arr-flatten "^1.1.0" + array-unique "^0.3.2" + define-property "^1.0.0" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + kind-of "^6.0.2" repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + +buffer-from@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +chokidar@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.0" + optionalDependencies: + fsevents "^1.1.2" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" -clean-css@4.1.9: - version "4.1.9" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301" +clean-css@4.1.11: + version "4.1.11" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" dependencies: source-map "0.5.x" -clone-stats@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" -clone@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" -clone@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" -clone@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + +cloneable-readable@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +collection-map@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + dependencies: + delayed-stream "~1.0.0" + commander@~2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -convert-source-map@1.X: +concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +convert-source-map@1.X, convert-source-map@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" -core-util-is@~1.0.0: +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +copy-props@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.1.tgz#665fc32046ca84a898abaa3c5945e7f248ccba00" + dependencies: + each-props "^1.3.0" + is-plain-object "^2.0.1" + +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + css@2.X, css@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" @@ -216,9 +487,11 @@ d@1: dependencies: es5-ext "^0.10.9" -dateformat@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" debug-fabulous@1.X: version "1.0.0" @@ -234,31 +507,107 @@ debug@3.X: dependencies: ms "2.0.0" -defaults@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: - clone "^1.0.2" + ms "2.0.0" -deprecated@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" -detect-file@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + dependencies: + kind-of "^5.0.2" + +default-resolution@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" dependencies: - fs-exists-sync "^0.1.0" + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" detect-newline@2.X: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" -duplexer2@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" +duplexify@^3.5.3: + version "3.5.4" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +each-props@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.1.tgz#fc138f51e3a2774286d4858e02d6e7de462de158" + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +end-of-stream@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" dependencies: - readable-stream "~1.1.9" + once "^1.4.0" end-of-stream@^1.1.0: version "1.4.0" @@ -266,11 +615,11 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -end-of-stream@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: - once "~1.3.0" + is-arrayish "^0.2.1" es5-ext@^0.10.14, es5-ext@^0.10.30, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: version "0.10.38" @@ -294,7 +643,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1: d "1" es5-ext "~0.10.14" -es6-weak-map@^2.0.2: +es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" dependencies: @@ -303,10 +652,6 @@ es6-weak-map@^2.0.2: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -escape-string-regexp@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - event-emitter@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" @@ -314,47 +659,63 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -expand-tilde@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" dependencies: - os-homedir "^1.0.1" + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -expand-tilde@^2.0.2: +expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" dependencies: homedir-polyfill "^1.0.1" -extend-shallow@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" dependencies: - kind-of "^1.1.0" + is-extendable "^0.1.0" -extend@^3.0.0: +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" -fancy-log@^1.1.0, fancy-log@^1.3.2: +fancy-log@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" dependencies: @@ -362,32 +723,30 @@ fancy-log@^1.1.0, fancy-log@^1.3.2: color-support "^1.1.3" time-stamp "^1.0.0" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" -find-index@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" -findup-sync@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" dependencies: - detect-file "^0.1.0" - is-glob "^2.0.1" - micromatch "^2.3.7" - resolve-dir "^0.1.0" + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" fined@^1.0.1: version "1.1.0" @@ -399,146 +758,217 @@ fined@^1.0.1: object.pick "^1.2.0" parse-filepath "^1.0.1" -first-chunk-stream@^1.0.0: +flagged-respawn@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.0.tgz#4e79ae9b2eb38bf86b3bb56bf3e0a56aa5fcabd7" -flagged-respawn@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" +flush-write-stream@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" -for-in@^1.0.1: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - for-own@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" dependencies: for-in "^1.0.1" -fs-exists-sync@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" -gaze@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" - dependencies: - globule "~0.1.0" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" dependencies: - is-glob "^2.0.0" + map-cache "^0.2.2" -glob-stream@^3.1.5: - version "3.1.18" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" dependencies: - glob "^4.3.1" - glob2base "^0.0.12" - minimatch "^2.0.1" - ordered-read-streams "^0.1.0" - through2 "^0.6.1" - unique-stream "^1.0.0" + graceful-fs "^4.1.11" + through2 "^2.0.3" -glob-watcher@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" - dependencies: - gaze "^0.5.1" +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -glob2base@^0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" +fsevents@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" dependencies: - find-index "^0.1.1" + nan "^2.3.0" + node-pre-gyp "^0.6.39" -glob@^4.3.1: - version "4.5.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" dependencies: - inflight "^1.0.4" + fstream "^1.0.0" inherits "2" - minimatch "^2.0.1" - once "^1.3.0" + minimatch "^3.0.0" -glob@~3.1.21: - version "3.1.21" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" dependencies: - graceful-fs "~1.2.0" - inherits "1" - minimatch "~0.2.11" + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" -global-modules@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" - dependencies: - global-prefix "^0.1.4" - is-windows "^0.2.0" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" -global-prefix@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" dependencies: - homedir-polyfill "^1.0.0" - ini "^1.3.4" - is-windows "^0.2.0" - which "^1.2.12" + assert-plus "^1.0.0" -globule@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" dependencies: - glob "~3.1.21" - lodash "~1.0.1" - minimatch "~0.2.11" + is-glob "^3.1.0" + path-dirname "^1.0.0" -glogg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" dependencies: - sparkles "^1.0.0" + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" -graceful-fs@4.X: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +glob-watcher@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.1.tgz#239aaa621b6bd843b288fdf6b155f50963c7d7ea" + dependencies: + async-done "^1.2.0" + chokidar "^2.0.0" + just-debounce "^1.0.0" + object.defaults "^1.1.0" -graceful-fs@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" +glob@^7.0.5, glob@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: - natives "^1.1.0" + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" -graceful-fs@~1.2.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +glogg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" + dependencies: + sparkles "^1.0.0" + +graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" gulp-clean-css@^3.8.0: - version "3.9.2" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.2.tgz#b280e6f56bf8bee39e697e77aaa72d3e7e7d3bd5" + version "3.9.3" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.3.tgz#47bf7ad62f44970f86e4ac4bdeed68ad904e65c5" dependencies: - clean-css "4.1.9" - plugin-error "0.1.2" + clean-css "4.1.11" + plugin-error "1.0.1" through2 "2.0.3" vinyl-sourcemaps-apply "0.2.1" +gulp-cli@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.0.1.tgz#7847e220cb3662f2be8a6d572bf14e17be5a994b" + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.1.0" + isobject "^3.0.1" + liftoff "^2.5.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.0.1" + yargs "^7.1.0" + gulp-rename@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" @@ -571,46 +1001,14 @@ gulp-uglify@^3.0.0: uglify-js "^3.0.5" vinyl-sourcemaps-apply "^0.2.0" -gulp-util@^3.0.0: - version "3.0.8" - resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" - dependencies: - array-differ "^1.0.0" - array-uniq "^1.0.2" - beeper "^1.0.0" - chalk "^1.0.0" - dateformat "^2.0.0" - fancy-log "^1.1.0" - gulplog "^1.0.0" - has-gulplog "^0.1.0" - lodash._reescape "^3.0.0" - lodash._reevaluate "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.template "^3.0.0" - minimist "^1.1.0" - multipipe "^0.1.2" - object-assign "^3.0.0" - replace-ext "0.0.1" - through2 "^2.0.0" - vinyl "^0.5.0" - -gulp@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" +gulp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.0.tgz#95766c601dade4a77ed3e7b2b6dc03881b596366" dependencies: - archy "^1.0.0" - chalk "^1.0.0" - deprecated "^0.0.1" - gulp-util "^3.0.0" - interpret "^1.0.0" - liftoff "^2.1.0" - minimist "^1.1.0" - orchestrator "^0.3.0" - pretty-hrtime "^1.0.0" - semver "^4.1.0" - tildify "^1.0.0" - v8flags "^2.0.2" - vinyl-fs "^0.3.0" + glob-watcher "^5.0.0" + gulp-cli "^2.0.0" + undertaker "^1.0.0" + vinyl-fs "^3.0.0" gulplog@^1.0.0: version "1.0.0" @@ -618,11 +1016,16 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" dependencies: - ansi-regex "^2.0.0" + ajv "^4.9.1" + har-schema "^1.0.5" has-gulplog@^0.1.0: version "0.1.0" @@ -630,12 +1033,72 @@ has-gulplog@^0.1.0: dependencies: sparkles "^1.0.0" -homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" dependencies: parse-passwd "^1.0.0" +hosted-git-info@^2.1.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -643,11 +1106,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" - -inherits@2, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -655,9 +1114,17 @@ ini@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" -interpret@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +interpret@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" is-absolute@^0.2.3: version "0.2.6" @@ -666,39 +1133,108 @@ is-absolute@^0.2.3: is-relative "^0.2.1" is-windows "^0.2.0" +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + is-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" dependencies: - is-primitive "^2.0.0" + kind-of "^3.0.2" -is-extendable@^0.1.1: +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" -is-extglob@^1.0.0: +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-fullwidth-code-point@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" dependencies: - is-extglob "^1.0.0" + is-extglob "^2.1.0" -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" dependencies: - kind-of "^3.0.2" + is-extglob "^2.1.1" + +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" is-number@^3.0.0: version "3.0.0" @@ -706,20 +1242,22 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-plain-object@^2.0.3: +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - is-promise@^2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -730,23 +1268,43 @@ is-relative@^0.2.1: dependencies: is-unc-path "^0.1.1" +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + dependencies: + is-unc-path "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + is-unc-path@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" dependencies: unc-path-regex "^0.1.0" -is-utf8@^0.2.0: +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + is-windows@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" isarray@1.0.0, isarray@~1.0.0: version "1.0.0" @@ -766,11 +1324,46 @@ isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" -kind-of@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" -kind-of@^3.0.2: +just-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" dependencies: @@ -782,127 +1375,66 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -liftoff@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" - dependencies: - extend "^3.0.0" - findup-sync "^0.4.2" - fined "^1.0.1" - flagged-respawn "^0.3.2" - lodash.isplainobject "^4.0.4" - lodash.isstring "^4.0.1" - lodash.mapvalues "^4.4.0" - rechoir "^0.6.2" - resolve "^1.1.7" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basetostring@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" - -lodash._basevalues@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" +kind-of@^5.0.0, kind-of@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" -lodash._reescape@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" - -lodash._reevaluate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - -lodash._root@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - -lodash.escape@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" +last-run@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" dependencies: - lodash._root "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" -lodash.isplainobject@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + dependencies: + flush-write-stream "^1.0.2" -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" +liftoff@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" + extend "^3.0.0" + findup-sync "^2.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" -lodash.mapvalues@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" - -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - -lodash.template@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" - dependencies: - lodash._basecopy "^3.0.0" - lodash._basetostring "^3.0.0" - lodash._basevalues "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - lodash.keys "^3.0.0" - lodash.restparam "^3.0.0" - lodash.templatesettings "^3.0.0" - -lodash.templatesettings@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" dependencies: - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" lodash@^4.13.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lodash@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" - -lru-cache@2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - lru-queue@0.1: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" @@ -919,10 +1451,31 @@ make-error@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" -map-cache@^0.2.0: +make-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.0.tgz#57bef5dc85d23923ba23767324d8e8f8f3d9694b" + dependencies: + kind-of "^3.1.0" + +map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +matchdep@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + memoizee@0.4.X: version "0.4.11" resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.11.tgz#bde9817663c9e40fdb2a4ea1c367296087ae8c8f" @@ -936,88 +1489,191 @@ memoizee@0.4.X: next-tick "1" timers-ext "^0.1.2" -micromatch@^2.3.7: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -minimatch@^2.0.1: - version "2.0.10" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" - dependencies: - brace-expansion "^1.0.0" - -minimatch@~0.2.11: - version "0.2.14" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" +micromatch@^3.0.4, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: - lru-cache "2" - sigmund "~1.0.0" + brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.0: +minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@^0.5.0: +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +"mkdirp@>=0.5 0", mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -moment@^2.19.3: - version "2.20.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd" +moment@^2.21.0: + version "2.21.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.21.0.tgz#2a114b51d2a6ec9e6d83cf803f838a878d8a023a" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -multipipe@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" - dependencies: - duplexer2 "0.0.2" - -natives@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" +mute-stdout@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.0.tgz#5b32ea07eb43c9ded6130434cf926f46b2a7fd4d" + +nan@^2.3.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" next-tick@1: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" +node-pre-gyp@^0.6.39: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" -object-assign@4.X: +now-and-later@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.0.tgz#bc61cbb456d79cb32207ce47ca05136ff2e7d6ee" + dependencies: + once "^1.3.2" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@4.X, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object-assign@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-keys@^1.0.11, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" -object.defaults@^1.1.0: +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.assign@^4.0.4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.defaults@^1.0.0, object.defaults@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" dependencies: @@ -1026,46 +1682,58 @@ object.defaults@^1.1.0: for-own "^1.0.0" isobject "^3.0.0" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" + for-own "^1.0.0" + make-iterator "^1.0.0" -object.pick@^1.2.0: +object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" dependencies: isobject "^3.0.1" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +object.reduce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -once@~1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" dependencies: - wrappy "1" + readable-stream "^2.0.1" -orchestrator@^0.3.0: - version "0.3.8" - resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" - dependencies: - end-of-stream "~0.1.5" - sequencify "~0.0.7" - stream-consume "~0.1.0" +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -ordered-read-streams@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" -os-homedir@^1.0.0, os-homedir@^1.0.1: +os-tmpdir@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" parse-filepath@^1.0.1: version "1.0.1" @@ -1075,19 +1743,34 @@ parse-filepath@^1.0.1: map-cache "^0.2.0" path-root "^0.1.1" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" + error-ex "^1.2.0" parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" @@ -1102,71 +1785,131 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" -plugin-error@0.1.2, plugin-error@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" dependencies: - ansi-cyan "^0.1.1" - ansi-red "^0.1.1" - arr-diff "^1.0.1" - arr-union "^2.0.1" - extend-shallow "^1.1.2" + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" -preserve@^0.2.0: +performance-now@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +plugin-error@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + dependencies: + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" -process-nextick-args@~1.0.6: +process-nextick-args@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -pump@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" dependencies: end-of-stream "^1.1.0" once "^1.3.1" -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + end-of-stream "^1.1.0" + once "^1.3.1" -"readable-stream@>=1.0.33-1 <1.1.0-0": - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" +pumpify@^1.3.5: + version "1.4.0" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" + duplexify "^3.5.3" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -readable-stream@^2.1.5: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +rc@^1.1.7: + version "1.2.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" - process-nextick-args "~1.0.6" + process-nextick-args "~2.0.0" safe-buffer "~5.1.1" string_decoder "~1.0.3" util-deprecate "~1.0.1" -readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" rechoir@^0.6.2: version "0.6.2" @@ -1174,13 +1917,29 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" dependencies: - is-equal-shallow "^0.1.3" + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" -remove-trailing-separator@^1.0.1: +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -1188,22 +1947,71 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" -repeat-string@^1.5.2: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -replace-ext@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" -resolve-dir@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" +replace-homedir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" dependencies: - expand-tilde "^1.2.2" - global-modules "^0.2.3" + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -resolve-url@~0.2.1: +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + dependencies: + value-or-function "^3.0.0" + +resolve-url@^0.2.1, resolve-url@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -1213,29 +2021,104 @@ resolve@^1.1.6, resolve@^1.1.7: dependencies: path-parse "^1.0.5" -run-sequence@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-2.2.1.tgz#1ce643da36fd8c7ea7e1a9329da33fc2b8898495" +resolve@^1.4.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c" dependencies: - chalk "^1.1.3" - fancy-log "^1.3.2" - plugin-error "^0.1.2" + path-parse "^1.0.5" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -semver@^4.1.0: - version "4.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" -sequencify@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + dependencies: + sver-compat "^1.5.0" -sigmund@~1.0.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" source-map-resolve@^0.3.0: version "0.3.1" @@ -1246,6 +2129,20 @@ source-map-resolve@^0.3.0: source-map-url "~0.3.0" urix "~0.1.0" +source-map-resolve@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + dependencies: + atob "^2.0.0" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + source-map-url@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" @@ -1268,13 +2165,74 @@ sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" -stream-consume@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" +spdx-correct@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +sshpk@^1.7.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-exhaust@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" string_decoder@~1.0.3: version "1.0.3" @@ -1282,7 +2240,11 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0: +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" dependencies: @@ -1292,37 +2254,58 @@ strip-bom-string@1.X: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" -strip-bom@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" dependencies: - first-chunk-stream "^1.0.0" is-utf8 "^0.2.0" -supports-color@^2.0.0: +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +tar-pack@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +through2-filter@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" -through2@2.0.3, through2@2.X, through2@^2.0.0, through2@^2.0.3: +through2@2.0.3, through2@2.X, through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" dependencies: readable-stream "^2.1.5" xtend "~4.0.1" -through2@^0.6.1: - version "0.6.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" - dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" - -tildify@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" - dependencies: - os-homedir "^1.0.0" - time-stamp@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" @@ -1334,6 +2317,61 @@ timers-ext@^0.1.2: es5-ext "~0.10.14" next-tick "1" +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + dependencies: + through2 "^2.0.3" + +tough-cookie@~2.3.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + uglify-js@^3.0.5: version "3.1.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.4.tgz#8e1efa1244b207588e525c9c1835a33458b90aee" @@ -1341,44 +2379,135 @@ uglify-js@^3.0.5: commander "~2.11.0" source-map "~0.6.1" -unc-path-regex@^0.1.0: +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +unc-path-regex@^0.1.0, unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" -unique-stream@^1.0.0: +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + +undertaker@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.0.tgz#339da4646252d082dc378e708067299750e11b49" + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + +union-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-stream@^2.0.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" + dependencies: + json-stable-stringify "^1.0.0" + through2-filter "^2.0.0" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d" urix@^0.1.0, urix@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" +use@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" + dependencies: + kind-of "^6.0.2" util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -v8flags@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" +uuid@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + +v8flags@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.2.tgz#ad6a78a20a6b23d03a8debc11211e3cc23149477" dependencies: - user-home "^1.1.1" + homedir-polyfill "^1.0.1" + +validate-npm-package-license@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl-fs@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.2.tgz#1b86258844383f57581fcaac081fe09ef6d6d752" + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" -vinyl-fs@^0.3.0: - version "0.3.14" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" dependencies: - defaults "^1.0.0" - glob-stream "^3.1.5" - glob-watcher "^0.0.6" - graceful-fs "^3.0.0" - mkdirp "^0.5.0" - strip-bom "^1.0.0" - through2 "^0.6.1" - vinyl "^0.4.0" + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" vinyl-sourcemaps-apply@0.2.1, vinyl-sourcemaps-apply@^0.2.0: version "0.2.1" @@ -1386,31 +2515,72 @@ vinyl-sourcemaps-apply@0.2.1, vinyl-sourcemaps-apply@^0.2.0: dependencies: source-map "^0.5.1" -vinyl@^0.4.0: - version "0.4.6" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" +vinyl@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" dependencies: - clone "^0.2.0" - clone-stats "^0.0.1" + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" -vinyl@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" -which@^1.2.12: +which@^1.2.14: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.1: +xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + +yargs@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" From 750afa207089205533204cdd35d3f398f17d9b77 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 29 Mar 2018 23:29:46 -0400 Subject: [PATCH 131/226] version 1.13.1 --- README.md | 18 +++++++++--------- bower.json | 6 +++--- package.json | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 082c3f9..180838b 100644 --- a/README.md +++ b/README.md @@ -72,21 +72,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 1e61dae..b40c438 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.13.0", + "version": "1.13.1", "keywords": [ "css", "js", @@ -28,7 +28,7 @@ "test-infra" ], "dependencies": { - "moment": "^2.19.3", - "angular-material": "^1.1.5" + "moment": "^2.21.0", + "angular-material": "^1.1.8" } } diff --git a/package.json b/package.json index e2de65f..262b658 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.13.0", + "version": "1.13.1", "keywords": [ "css", "js", From 2a26e1a3a3aa3016dfdede1bc793858174b65e77 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 23 Apr 2018 23:09:25 -0400 Subject: [PATCH 132/226] #30 Add validation for input with format --- index.html | 30 ++++++++++++++++++--------- js/angular-material-datetimepicker.js | 1 + js/demo.js | 3 ++- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/index.html b/index.html index a80dba4..e147497 100644 --- a/index.html +++ b/index.html @@ -13,6 +13,7 @@ + @@ -129,16 +130,25 @@

Datetime Pickers

-
- - - - -
-
+
+
+
+ + + + +
+
invalid date format
+
less than min date
+
greater than max date
+
+
+
+
+
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index eef477f..bfdb6b5 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -224,6 +224,7 @@ var m = moment(value, scope.format); if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate)); if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate)); + ngModel.$setValidity('format', moment(value, scope.format, true).isValid()); return m.isValid() ? m.toDate() : ''; }); diff --git a/js/demo.js b/js/demo.js index 4a32d10..139379b 100644 --- a/js/demo.js +++ b/js/demo.js @@ -2,7 +2,8 @@ 'use strict'; angular.module('mdDatetimePickerDemo', [ 'ngMaterialDatePicker', - 'pascalprecht.translate' + 'pascalprecht.translate', + 'ngMessages' ]) .config(function($translateProvider) { $translateProvider.translations('en', { From 2c50676dd91ba7274fd7d38690ca54341aa76d40 Mon Sep 17 00:00:00 2001 From: selema Date: Tue, 24 Apr 2018 10:46:57 +0300 Subject: [PATCH 133/226] add utcOffset when editInput and timezone specified --- js/angular-material-datetimepicker.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index bfdb6b5..2e1e840 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -195,6 +195,11 @@ } } + var offset; + if (angular.version.major === 1 && angular.version.minor > 5 && ngModel.$options.getOption('timezone')) { + offset = ngModel.$options.getOption('timezone'); + } else if (ngModel.$options.timezone) offset = ngModel.$options.timezone; + var dateOfTheDay = null; if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== "false") { dateOfTheDay = moment(); @@ -222,6 +227,10 @@ if (typeof value === 'undefined') return; var m = moment(value, scope.format); + if (scope.editInput && offset) { + if (offset === 'utc' || offset === 'UTC') offset = 0; + v.utcOffset(offset, true); + } if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate)); if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate)); ngModel.$setValidity('format', moment(value, scope.format, true).isValid()); @@ -267,11 +276,6 @@ $mdDialog.show(dialogOptions).then(function(v) { - var offset; - if (angular.version.major === 1 && angular.version.minor > 5 && ngModel.$options.getOption('timezone')) { - offset = ngModel.$options.getOption('timezone'); - } else if (ngModel.$options.timezone) offset = ngModel.$options.timezone; - if (offset) { if (offset === 'utc' || offset === 'UTC') offset = 0; v.utcOffset(offset, true); From 377449cd6bed2a5efcebf62397e215e8e7f4e043 Mon Sep 17 00:00:00 2001 From: selema Date: Tue, 24 Apr 2018 10:49:38 +0300 Subject: [PATCH 134/226] add utcOffset when editInput and timezone specified --- js/angular-material-datetimepicker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 2e1e840..2b9aede 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -229,7 +229,7 @@ var m = moment(value, scope.format); if (scope.editInput && offset) { if (offset === 'utc' || offset === 'UTC') offset = 0; - v.utcOffset(offset, true); + m.utcOffset(offset, true); } if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate)); if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate)); From 66a8d8ac47cf040eb30aed9dd1fd20e5a7bcc622 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 24 Apr 2018 08:52:37 -0400 Subject: [PATCH 135/226] version 1.13.2 --- README.md | 28 ++++++++++++++-------------- bower.json | 4 ++-- index.html | 18 +++++++++--------- package.json | 12 ++++++------ yarn.lock | 30 +++++++++++++++--------------- 5 files changed, 46 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 180838b..9b6ee3f 100644 --- a/README.md +++ b/README.md @@ -54,13 +54,13 @@ Depends on the following library: - Moment ``` - - - - + + + + - + ``` ## Installing via yarn, npm or bower @@ -72,21 +72,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index b40c438..b4f5545 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.13.1", + "version": "1.13.2", "keywords": [ "css", "js", @@ -28,7 +28,7 @@ "test-infra" ], "dependencies": { - "moment": "^2.21.0", + "moment": "^2.21.1", "angular-material": "^1.1.8" } } diff --git a/index.html b/index.html index e147497..9061509 100644 --- a/index.html +++ b/index.html @@ -11,16 +11,16 @@ - - - - + + + + - - - - - + + + + + diff --git a/package.json b/package.json index 262b658..0ca354e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.13.1", + "version": "1.13.2", "keywords": [ "css", "js", @@ -16,12 +16,12 @@ "homepage": "https://beenote.github.io/angular-material-datetimepicker/", "main": "js/angular-material-datetimepicker.js", "dependencies": { - "angular": "^1.6.9", - "angular-animate": "^1.6.9", - "angular-aria": "^1.6.9", + "angular": "^1.6.10", + "angular-animate": "^1.6.10", + "angular-aria": "^1.6.10", "angular-material": "^1.1.8", - "angular-messages": "^1.6.9", - "moment": "^2.21.0" + "angular-messages": "^1.6.10", + "moment": "^2.21.1" }, "repository": { "type": "git", diff --git a/yarn.lock b/yarn.lock index 42046a9..32e6f06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -38,25 +38,25 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.6.9: - version "1.6.9" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.9.tgz#a0f926c1ba3190bd8929ef966a7fa79760682622" +angular-animate@^1.6.10: + version "1.6.10" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.10.tgz#c520f6d341370e34e0a62060c99bcf47b7d7db8c" -angular-aria@^1.6.9: - version "1.6.9" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.9.tgz#150fa603ba7f604f48e3715b76ab3ec4b78971a6" +angular-aria@^1.6.10: + version "1.6.10" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.10.tgz#472bfff8682c4cfe634d4bfda0524443e07e3501" angular-material@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.8.tgz#6ddec2db18812506144ccf204cf8ecec330bc85c" -angular-messages@^1.6.9: - version "1.6.9" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.6.9.tgz#c6958a32ab49316af36e3e5ac6f94c361571fa72" +angular-messages@^1.6.10: + version "1.6.10" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.6.10.tgz#09eedc5b50db99eeed9776414428c587c1259715" -angular@^1.6.9: - version "1.6.9" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.9.tgz#bc812932e18909038412d594a5990f4bb66c0619" +angular@^1.6.10: + version "1.6.10" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.10.tgz#eed3080a34d29d0f681ff119b18ce294e3f74826" ansi-colors@^1.0.1: version "1.1.0" @@ -1544,9 +1544,9 @@ mixin-deep@^1.2.0: dependencies: minimist "0.0.8" -moment@^2.21.0: - version "2.21.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.21.0.tgz#2a114b51d2a6ec9e6d83cf803f838a878d8a023a" +moment@^2.21.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" ms@2.0.0: version "2.0.0" From 9c5d55029eabfccf4d4a5f57aeaf5c06e957a287 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 24 Apr 2018 10:02:47 -0400 Subject: [PATCH 136/226] #31 fix for offset 0, stay moment._isUTC if a timezone is set and work with edit-input --- README.md | 2 +- index.html | 28 +++++++++++++------------- js/angular-material-datetimepicker.js | 29 +++++++++++---------------- 3 files changed, 27 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 9b6ee3f..d759786 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Depends on the following library: - + ``` ## Installing via yarn, npm or bower diff --git a/index.html b/index.html index 9061509..ff81a61 100644 --- a/index.html +++ b/index.html @@ -18,7 +18,7 @@ - + @@ -72,14 +72,17 @@

Datetime Pickers

- - - - +
+ + + + + {{timez}} +
@@ -197,16 +200,14 @@

Datetime Pickers

+ ng-model="dateTimeStart"/> + ng-model="dateTimeEnd">
@@ -253,7 +254,6 @@

Datetime Pickers

- diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 2b9aede..624b396 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -195,11 +195,6 @@ } } - var offset; - if (angular.version.major === 1 && angular.version.minor > 5 && ngModel.$options.getOption('timezone')) { - offset = ngModel.$options.getOption('timezone'); - } else if (ngModel.$options.timezone) offset = ngModel.$options.timezone; - var dateOfTheDay = null; if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== "false") { dateOfTheDay = moment(); @@ -209,13 +204,18 @@ scope.currentDate = moment(scope.currentDate, scope.format); } + var offset; if (ngModel) { var ngModelOptions = {'*': '$inherit', debounce: 500}; - if (angular.version.major === 1 && angular.version.minor > 5) ngModel.$options = ngModel.$options.createChild(ngModelOptions); - else { + if (angular.version.major === 1 && angular.version.minor > 5) { + ngModel.$options = ngModel.$options.createChild(ngModelOptions); + if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone'); + } else { if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone; ngModel.$options = ngModelOptions; + if (ngModel.$options.timezone) offset = ngModel.$options.timezone; } + if (offset==='utc' || offset==='UTC') offset = 0; ngModel.$formatters.push(function (value) { if (typeof value === 'undefined') return; @@ -227,15 +227,13 @@ if (typeof value === 'undefined') return; var m = moment(value, scope.format); - if (scope.editInput && offset) { - if (offset === 'utc' || offset === 'UTC') offset = 0; - m.utcOffset(offset, true); - } - if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate)); + if (offset !== undefined) m.utcOffset(offset, false); + + if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate)); if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate)); ngModel.$setValidity('format', moment(value, scope.format, true).isValid()); - return m.isValid() ? m.toDate() : ''; + return m.isValid() ? (m._isUTC ? m : m.toDate()) : ''; }); } @@ -276,10 +274,7 @@ $mdDialog.show(dialogOptions).then(function(v) { - if (offset) { - if (offset === 'utc' || offset === 'UTC') offset = 0; - v.utcOffset(offset, true); - } + if (offset !== undefined) v.utcOffset(offset, true); scope.currentDate = v && !v._isUTC ? v.toDate() : v; isOn = false; From 0c8d7d6a86f90fc92833c04cab9286cfff3f5ca7 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 24 Apr 2018 10:52:56 -0400 Subject: [PATCH 137/226] version 1.13.3 --- README.md | 18 +++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- .../angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index d759786..c982b20 100644 --- a/README.md +++ b/README.md @@ -72,21 +72,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index b4f5545..8942a8a 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.13.2", + "version": "1.13.3", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 295173d..f4d0df7 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var d={};for(var p in o)s.hasOwnProperty(p)&&!angular.isUndefined(s[p])&&(d[p]=s[p]);d.currentDate=s.currentDate,d.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:d},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:d.clickOutsideToClose||!1,disableParentScroll:d.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};d.templateUrl?h.templateUrl=d.templateUrl:h.template=n,t.show(h).then(function(t){var i;1===angular.version.major&&angular.version.minor>5&&l.$options.getOption("timezone")?i=l.$options.getOption("timezone"):l.$options.timezone&&(i=l.$options.timezone),i&&("utc"!==i&&"UTC"!==i||(i=0),t.utcOffset(i,!0)),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(d.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;if(void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format)),l){var p={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?l.$options=l.$options.createChild(p):(s.ngModelOptions&&s.ngModelOptions.timezone&&(p.timezone=s.ngModelOptions.timezone),l.$options=p),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),a.isValid()?a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var h='';c.after(i(h+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+v),V=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(g+k);A.push({left:E,top:V,value:O,display:O,style:{"margin-left":E+"px","margin-top":V+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,Y=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,!1),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var V=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+v),E=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(g+k);A.push({left:V,top:E,value:O,display:O,style:{"margin-left":V+"px","margin-top":E+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,Y=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index c0fc1ca..5aa1c39 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","offset","version","major","minor","$options","getOption","timezone","utcOffset","_isUTC","toDate","isSame","undefined","isString","*","debounce","createChild","$formatters","push","value","m","isValid","$parsers","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n }\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate)); \r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n\r\n return m.isValid() ? m.toDate() : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n var offset;\r\n if (angular.version.major === 1 && angular.version.minor > 5 && ngModel.$options.getOption('timezone')) {\r\n offset = ngModel.$options.getOption('timezone');\r\n } else if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n\r\n if (offset) {\r\n if (offset === 'utc' || offset === 'UTC') offset = 0;\r\n v.utcOffset(offset, true);\r\n }\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, false);\r\n \r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 0ca354e..a443f4f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.13.2", + "version": "1.13.3", "keywords": [ "css", "js", From b576358713b9f09cbc665dc85e72c2797a0564e8 Mon Sep 17 00:00:00 2001 From: Tomas Date: Wed, 25 Apr 2018 09:53:14 +0300 Subject: [PATCH 138/226] Implement "targetEvent", "openFrom" and "closeTo" options --- js/angular-material-datetimepicker.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 624b396..308bb9e 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -131,6 +131,9 @@ showIcon: false, template: template, templateUrl: '', + targetEvent: null, + openFrom: null, + closeTo: null }; return function (params) { @@ -356,6 +359,9 @@ disableParentScroll: options.disableParentScroll || false, skipHide: true, multiple: true, + targetEvent: options.targetEvent, + openFrom: options.openFrom, + closeTo: options.closeTo, }; if (!options.templateUrl) dialogOptions.template = template; From a33467d3fe18f1be215a3d0a2e3d2083fefaf0fb Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 25 Apr 2018 13:21:23 -0400 Subject: [PATCH 139/226] #35 round seconds and milliseconds --- js/angular-material-datetimepicker.js | 29 +++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 624b396..76d2d29 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -404,11 +404,16 @@ if (minutes >= 60) { minutes = 60 - nearestMin; //always push down } - var seconds = date.second(); - if (seconds >= 60) { - seconds = 60 - 1; //always push down - } - return moment(date).minutes(minutes).seconds(seconds); + + var seconds; + if (this.params.seconds) { + seconds = date.second(); + if (seconds >= 60) { + seconds = 60 - 1; //always push down + } + } else seconds = 0; + + return moment(date).minutes(minutes).seconds(seconds).millisecond(0); }, initDates: function () { var that = this; @@ -432,8 +437,7 @@ ret = input; } } - } - else { + } else { ret = fallback; } return ret; @@ -676,7 +680,16 @@ if (minutes >= 60) { minutes = 60 - nearestMin; //always push down } - this.selectDate(moment(date).minutes(minutes)); + + var seconds; + if (this.params.seconds) { + seconds = date.second(); + if (seconds >= 60) { + seconds = 60 - 1; //always push down + } + } else seconds = 0; + + this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0)); }, ok: function () { switch (this.currentView) { From bb1662cf720baf242078d7f16be212d9198d1499 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 25 Apr 2018 13:34:09 -0400 Subject: [PATCH 140/226] #31 example changed --- index.html | 6 +++--- js/demo.js | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index ff81a61..58e9657 100644 --- a/index.html +++ b/index.html @@ -74,14 +74,14 @@

Datetime Pickers

- + - {{timez}} + {{timez.toDate()}}
diff --git a/js/demo.js b/js/demo.js index 139379b..684d258 100644 --- a/js/demo.js +++ b/js/demo.js @@ -61,7 +61,7 @@ ' {{picker.params.okText}}' + ' ' + '' - ) + ); }) .controller('DemoCtrl', function ($scope, mdcDateTimeDialog, $translate, mdcDefaultParams) { $scope.date = moment().startOf('day'); @@ -70,6 +70,7 @@ $scope.timeutc = moment.utc(); $scope.dateTime = new Date(); $scope.dateTimeEdit = new Date(); + $scope.timez = moment.utc(); $scope.timeEdit = new Date(); // current date + 1 hour, no minutes, no seconds, no milliseconds From ecca449c12a6212588948254794943efc8b4704a Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 25 Apr 2018 13:57:00 -0400 Subject: [PATCH 141/226] version 1.14.0 --- README.md | 18 +++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- .../angular-material-datetimepicker.min.js.map | 2 +- package.json | 4 ++-- yarn.lock | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index c982b20..3bcd487 100644 --- a/README.md +++ b/README.md @@ -72,21 +72,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index 8942a8a..c411242 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.13.3", + "version": "1.14.0", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index f4d0df7..3f1504a 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,!1),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n=a.second();return n>=60&&(n=59),e(a).minutes(i).seconds(n)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t),this.selectDate(e(a).minutes(i))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var V=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+v),E=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(g+k);A.push({left:V,top:E,value:O,display:O,style:{"margin-left":V+"px","margin-top":E+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,Y=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,!1),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;return this.params.seconds?(n=a.second())>=60&&(n=59):n=0,e(a).minutes(i).seconds(n).millisecond(0)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t);var n;this.params.seconds?(n=a.second())>=60&&(n=59):n=0,this.selectDate(e(a).minutes(i).seconds(n).millisecond(0))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var V=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+v),E=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(g+k);A.push({left:V,top:E,value:O,display:O,style:{"margin-left":V+"px","margin-top":E+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,Y=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 5aa1c39..799cb7c 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, false);\r\n \r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n var seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n return moment(date).minutes(minutes).seconds(seconds);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n this.selectDate(moment(date).minutes(minutes));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, false);\r\n \r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index a443f4f..dc63c1f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.13.3", + "version": "1.14.0", "keywords": [ "css", "js", @@ -21,7 +21,7 @@ "angular-aria": "^1.6.10", "angular-material": "^1.1.8", "angular-messages": "^1.6.10", - "moment": "^2.21.1" + "moment": "^2.22.1" }, "repository": { "type": "git", diff --git a/yarn.lock b/yarn.lock index 32e6f06..0ed2719 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1544,7 +1544,7 @@ mixin-deep@^1.2.0: dependencies: minimist "0.0.8" -moment@^2.21.1: +moment@^2.22.1: version "2.22.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" From a193cdfafd4a3ada9fa77be8537a7559b5f23f69 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 25 Apr 2018 22:02:46 -0400 Subject: [PATCH 142/226] #33 add example and readme --- README.md | 5 ++++- index.html | 2 +- js/angular-material-datetimepicker.js | 1 + js/demo.js | 7 +++++-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3bcd487..ef4e0de 100644 --- a/README.md +++ b/README.md @@ -206,13 +206,16 @@ The `mdcDateTimeDialog.show` accepts almost the same options as the directive. pmText: {string} ='PM', disableDates: {date[]} =[], weekDays: {boolean} =false, - disableParentScroll: {boolean} = false, + disableParentScroll: {boolean} =false, autoOk: {boolean} =false, editInput: {boolean} =false, clickOutsideToClose: {boolean} =false, minuteSteps: {int} =5, howIcon: {boolean} =false, templateUrl: {string} ='' + targetEvent: {DOMClickEvent}=null, + openFrom: {string|Element|object}=null, + closeTo: {string|Element|object}=null } ``` diff --git a/index.html b/index.html index 58e9657..0178424 100644 --- a/index.html +++ b/index.html @@ -245,7 +245,7 @@

Datetime Pickers

mdcDateTimeDialog Service

- + Display Picker

Date: {{selectedDateTime|date:'medium'}}

diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 68e8b49..82ea610 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -263,6 +263,7 @@ controllerAs: 'picker', locals: {options: options}, openFrom: element, + closeTo: element, parent: angular.element(document.body), bindToController: true, clickOutsideToClose: options.clickOutsideToClose || false, diff --git a/js/demo.js b/js/demo.js index 684d258..2ca7c8d 100644 --- a/js/demo.js +++ b/js/demo.js @@ -90,13 +90,16 @@ $scope.langs = [{'value': 'en', 'label': 'English'},{'value': 'fr', 'label': 'Français'}]; - $scope.displayDialog = function () { + $scope.displayDialog = function(event) { mdcDateTimeDialog.show({ currentDate: moment().startOf('day'), maxDate: $scope.maxDate, showTodaysDate: '', time: true, - clickOutsideToClose: true + clickOutsideToClose: true, + targetEvent: event, + openFrom: angular.element(document.querySelector('#pickerbutton')), + closeTo: angular.element(document.querySelector('#pickerbutton')) }) .then(function (date) { $scope.selectedDateTime = date; From de62677493b79cb76b669a23cb1d3d94ca7e9442 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 25 Apr 2018 22:46:37 -0400 Subject: [PATCH 143/226] #34 disabled unavailable minute steps --- js/angular-material-datetimepicker.js | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 82ea610..9669923 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -408,16 +408,12 @@ var date = this.currentDate || moment(); var minutes = (nearestMin * Math.round(date.minute() / nearestMin)); - if (minutes >= 60) { - minutes = 60 - nearestMin; //always push down - } + if (minutes >= 60) minutes = 60 - nearestMin; var seconds; if (this.params.seconds) { seconds = date.second(); - if (seconds >= 60) { - seconds = 60 - 1; //always push down - } + if (seconds >= 60) seconds = 60 - 1; } else seconds = 0; return moment(date).minutes(minutes).seconds(seconds).millisecond(0); @@ -665,6 +661,15 @@ isMinuteAvailable: function (minute) { var _date = moment(this.currentDate); _date.minute(minute).second(0); + + var nearestMin = this.params.minuteSteps; + if (nearestMin > 1 && 5 % nearestMin !== 0){ + var _curmin = _date.minute(); + var minutes = (nearestMin * Math.round(_curmin / nearestMin)); + if (minutes >= 60) minutes = 60 - nearestMin; + if (minutes !== _curmin) return false; + } + return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true); }, isSecondAvailable: function (second) { @@ -684,16 +689,12 @@ var nearestMin = this.params.minuteSteps; var date = moment(); var minutes = (nearestMin * Math.round(date.minute() / nearestMin)); - if (minutes >= 60) { - minutes = 60 - nearestMin; //always push down - } + if (minutes >= 60) minutes = 60 - nearestMin; var seconds; if (this.params.seconds) { seconds = date.second(); - if (seconds >= 60) { - seconds = 60 - 1; //always push down - } + if (seconds >= 60) seconds = 60 - 1; } else seconds = 0; this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0)); @@ -1083,9 +1084,8 @@ if (nearestMin < 1 || nearestMin > 59) nearestMin = 1; var minutes = (nearestMin * Math.round(val / nearestMin)); - if (minutes >= 60) { - minutes = 60 - nearestMin; //always push down - } + if (minutes >= 60) minutes = 60 - nearestMin; + if (!scope.pointAvailable({value: val})) return; picker.currentDate.minute(minutes); } else if (!secondMode){ From a97c2c104c8eacc20bd505b14ef4cfc7a7d793f0 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 25 Apr 2018 22:51:46 -0400 Subject: [PATCH 144/226] version 1.15.0 --- README.md | 18 +++++++++--------- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- .../angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index ef4e0de..ea5163c 100644 --- a/README.md +++ b/README.md @@ -72,21 +72,21 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - + + + ``` or ``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index c411242..a171619 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.14.0", + "version": "1.15.0", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 3f1504a..cd98b5a 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:""};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,!1),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;return this.params.seconds?(n=a.second())>=60&&(n=59):n=0,e(a).minutes(i).seconds(n).millisecond(0)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c=60&&(i=60-t);var n;this.params.seconds?(n=a.second())>=60&&(n=59):n=0,this.selectDate(e(a).minutes(i).seconds(n).millisecond(0))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var V=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+v),E=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(g+k);A.push({left:V,top:E,value:O,display:O,style:{"margin-left":V+"px","margin-top":E+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,Y=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,closeTo:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,!1),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:i.targetEvent,openFrom:i.openFrom,closeTo:i.closeTo};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;return this.params.seconds?(n=a.second())>=60&&(n=59):n=0,e(a).minutes(i).seconds(n).millisecond(0)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c1&&5%i!=0){var n=a.minute(),r=i*Math.round(n/i);if(r>=60&&(r=60-i),r!==n)return!1}return this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;this.params.seconds?(n=a.second())>=60&&(n=59):n=0,this.selectDate(e(a).minutes(i).seconds(n).millisecond(0))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+v),V=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(g+k);A.push({left:E,top:V,value:O,display:O,style:{"margin-left":E+"px","margin-top":V+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,Y=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 799cb7c..d88e3ed 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","openFrom","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, false);\r\n \r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) {\r\n seconds = 60 - 1; //always push down\r\n }\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) {\r\n minutes = 60 - nearestMin; //always push down\r\n }\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, false);\r\n \r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index dc63c1f..e60bd1e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.14.0", + "version": "1.15.0", "keywords": [ "css", "js", From a837b431e596ca971f8ceb91e8c2bfc8d400a31b Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 26 Apr 2018 20:56:35 -0400 Subject: [PATCH 145/226] #31 fix parsing problem when the timezone is not in the format --- index.html | 2 +- js/angular-material-datetimepicker.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index 0178424..b94dbe2 100644 --- a/index.html +++ b/index.html @@ -78,7 +78,7 @@

Datetime Pickers

{{timez.toDate()}} diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 9669923..2391ea0 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -230,8 +230,7 @@ if (typeof value === 'undefined') return; var m = moment(value, scope.format); - if (offset !== undefined) m.utcOffset(offset, false); - + if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined); if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate)); if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate)); ngModel.$setValidity('format', moment(value, scope.format, true).isValid()); From 1161b137a21564194a496330d3afca0f43e3b9f9 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 26 Apr 2018 22:41:31 -0400 Subject: [PATCH 146/226] check with DeepCode.ai, es6 for node --- gulpfile.js | 18 ++++++++++-------- js/demo.js | 26 +++++++++++--------------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 4bb2ebb..f659f16 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,11 +1,13 @@ -var gulp = require('gulp'), - pump = require('pump'), - uglify = require('gulp-uglify'), - cleanCSS = require('gulp-clean-css'), - sourcemaps = require('gulp-sourcemaps'), - rename = require('gulp-rename'); +/*jshint esversion: 6 */ -gulp.task('js', function(cb) { +const gulp = require('gulp'); +const pump = require('pump'); +const uglify = require('gulp-uglify'); +const cleanCSS = require('gulp-clean-css'); +const sourcemaps = require('gulp-sourcemaps'); +const rename = require('gulp-rename'); + +gulp.task('js', cb => { pump([ gulp.src(['./js/angular-material-datetimepicker.js']), sourcemaps.init(), @@ -16,7 +18,7 @@ gulp.task('js', function(cb) { ], cb); }); -gulp.task('css', function(cb) { +gulp.task('css', cb => { pump([ gulp.src(['./css/material-datetimepicker.css']), cleanCSS(), diff --git a/js/demo.js b/js/demo.js index 2ca7c8d..66a086d 100644 --- a/js/demo.js +++ b/js/demo.js @@ -15,9 +15,9 @@ TODAY: "Aujourd'hui", }); $translateProvider.preferredLanguage('en'); - $translateProvider.useSanitizeValueStrategy('sceParameters'); + $translateProvider.useSanitizeValueStrategy('sceParameters'); }) - .run(function ($templateCache) { + .run(['$templaceCache', function($templateCache) { $templateCache.put( 'customTemplate.html', '' + @@ -62,7 +62,7 @@ ' ' + '' ); - }) + }]) .controller('DemoCtrl', function ($scope, mdcDateTimeDialog, $translate, mdcDefaultParams) { $scope.date = moment().startOf('day'); $scope.dateLang = new Date(); @@ -75,18 +75,15 @@ // current date + 1 hour, no minutes, no seconds, no milliseconds var newDate = new Date(); - newDate.setHours(newDate.getHours() +1); - newDate.setMinutes(0); - newDate.setSeconds(0); - newDate.setMilliseconds(0); + newDate.setHours(newDate.getHours() +1, 0, 0, 0); $scope.dateTimeNoMin = newDate; $scope.minDate = moment().subtract(6, 'year'); $scope.minDateNow = moment(); $scope.maxDate = moment().add(6, 'year'); - $scope.dates = [new Date('2017-11-14T00:00:00'), new Date('2017-11-15T00:00:00'), - new Date('2017-11-30T00:00:00'), new Date('2017-12-12T00:00:00'), new Date('2017-12-13T00:00:00'), - new Date('2017-12-31T00:00:00')]; + $scope.dates = [new Date('2018-11-14T00:00:00'), new Date('2018-11-15T00:00:00'), + new Date('2018-11-30T00:00:00'), new Date('2018-12-12T00:00:00'), new Date('2018-12-13T00:00:00'), + new Date('2018-12-31T00:00:00')]; $scope.langs = [{'value': 'en', 'label': 'English'},{'value': 'fr', 'label': 'Français'}]; @@ -100,11 +97,10 @@ targetEvent: event, openFrom: angular.element(document.querySelector('#pickerbutton')), closeTo: angular.element(document.querySelector('#pickerbutton')) - }) - .then(function (date) { - $scope.selectedDateTime = date; - console.log('New Date / Time selected:', date); - }, function(){}); + }).then(function (date) { + $scope.selectedDateTime = date; + console.log('New Date / Time selected:', date); + }, function(){}); }; // Set and change the text direction From aa40b2182946822a3a6582f3b0e401bf29b1d738 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 26 Apr 2018 22:56:48 -0400 Subject: [PATCH 147/226] version 1.15.1 --- README.md | 18 ++++++------------ bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- .../angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 5 files changed, 10 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index ea5163c..dea30d4 100644 --- a/README.md +++ b/README.md @@ -72,21 +72,15 @@ bower install ng-material-datetimepicker ## CDN ``` - - - + + + ``` or ``` - - - -``` -or -``` - - - + + + ``` ## Live Example diff --git a/bower.json b/bower.json index a171619..621e691 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.15.0", + "version": "1.15.1", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index cd98b5a..7e558b9 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,closeTo:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,!1),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:i.targetEvent,openFrom:i.openFrom,closeTo:i.closeTo};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;return this.params.seconds?(n=a.second())>=60&&(n=59):n=0,e(a).minutes(i).seconds(n).millisecond(0)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c1&&5%i!=0){var n=a.minute(),r=i*Math.round(n/i);if(r>=60&&(r=60-i),r!==n)return!1}return this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;this.params.seconds?(n=a.second())>=60&&(n=59):n=0,this.selectDate(e(a).minutes(i).seconds(n).millisecond(0))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+v),V=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(g+k);A.push({left:E,top:V,value:O,display:O,style:{"margin-left":E+"px","margin-top":V+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,Y=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,closeTo:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,void 0===a._tzm),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:i.targetEvent,openFrom:i.openFrom,closeTo:i.closeTo};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;return this.params.seconds?(n=a.second())>=60&&(n=59):n=0,e(a).minutes(i).seconds(n).millisecond(0)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c1&&5%i!=0){var n=a.minute(),r=i*Math.round(n/i);if(r>=60&&(r=60-i),r!==n)return!1}return this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;this.params.seconds?(n=a.second())>=60&&(n=59):n=0,this.selectDate(e(a).minutes(i).seconds(n).millisecond(0))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+v),V=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(g+k);A.push({left:E,top:V,value:O,display:O,style:{"margin-left":E+"px","margin-top":V+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,Y=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index d88e3ed..1c3c449 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, false);\r\n \r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","_tzm","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index e60bd1e..dc5207f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.15.0", + "version": "1.15.1", "keywords": [ "css", "js", From 99d4794044724d949c0dd590bca285a07a345fa6 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 30 Apr 2018 22:43:25 -0400 Subject: [PATCH 148/226] fix demo typo --- js/demo.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/demo.js b/js/demo.js index 66a086d..cd1d558 100644 --- a/js/demo.js +++ b/js/demo.js @@ -17,7 +17,7 @@ $translateProvider.preferredLanguage('en'); $translateProvider.useSanitizeValueStrategy('sceParameters'); }) - .run(['$templaceCache', function($templateCache) { + .run(['$templateCache', function($templateCache) { $templateCache.put( 'customTemplate.html', '' + From bd7a3547b852259b062ebae86e849695f68cabdd Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 30 Apr 2018 23:23:07 -0400 Subject: [PATCH 149/226] code format and remove mdcDatetimePickerDefaultLocale --- js/angular-material-datetimepicker.js | 108 +++++++++----------------- 1 file changed, 35 insertions(+), 73 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 2391ea0..4f6d134 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -4,8 +4,8 @@ function ngMaterialDatePicker(moment) { var moduleName = "ngMaterialDatePicker"; - var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+', - mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg=='; + var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+'; + var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg=='; var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2}; @@ -92,17 +92,6 @@ ''; angular.module(moduleName, ['ngMaterial']) - .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) { - this.$get = function () { - console.log("mdcDatetimePickerDefaultLocale deprecated!"); - return mdcDefaultParams().lang; - }; - - this.setDefaultLocale = function (localeString) { - console.log("mdcDatetimePickerDefaultLocale deprecated!"); - mdcDefaultParams({ lang: localeString }); - }; - }]) .factory('mdcDefaultParams', function () { var default_params = { date: true, @@ -139,12 +128,9 @@ return function (params) { if (params) { for (var i in params) { - if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) { - default_params[i] = params[i]; - } + if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i]; } } - return default_params; }; }) @@ -187,15 +173,10 @@ link: function (scope, element, attrs, ngModel) { var isOn = false; if (!scope.format) { - if (scope.date && scope.time && scope.seconds) { - scope.format = 'YYYY-MM-DD HH:mm:ss'; - } else if (scope.date && scope.time) { - scope.format = 'YYYY-MM-DD HH:mm'; - } else if (scope.date) { - scope.format = 'YYYY-MM-DD'; - } else { - scope.format = 'HH:mm'; - } + if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss'; + else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm'; + else if (scope.date) scope.format = 'YYYY-MM-DD'; + else scope.format = 'HH:mm'; } var dateOfTheDay = null; @@ -792,17 +773,13 @@ }, convertHours: function (h) { var _return = h; - if ((h < 12) && this.isPM()) - _return += 12; + if (h < 12 && this.isPM()) _return += 12; return _return; }, hide: function (okBtn) { - if (okBtn) { - this._dialog.hide(this.currentDate); - } else { - this._dialog.cancel(); - } + if (okBtn) this._dialog.hide(this.currentDate); + else this._dialog.cancel(); } }; @@ -823,7 +800,7 @@ low = low ? low : 0; var year = date.year(); var month = date.month(); - return (((year - YEAR_MIN) * 12) + month - 1 ) - low; + return (((year - YEAR_MIN) * 12) + month - 1) - low; }; return { @@ -842,9 +819,7 @@ var days = []; for (var i = picker.params.weekStart; days.length < 7; i++) { - if (i > 6) { - i = 0; - } + if (i > 6) i = 0; days.push(i.toString()); } calendar.week = days; @@ -1144,19 +1119,17 @@ pickerEl = angular.element(componentRoot.querySelector('.dtp-picker')); var w = componentRoot.querySelector('.dtp-content').offsetWidth; - var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0; - var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0; - var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0; - var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0; - //set width - var clockWidth = (w - (ml + mr + pl + pr)); - clock.css('width', (clockWidth) + 'px'); - var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0; + var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0; var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0; var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0; + var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0; var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0; + //set width + var clockWidth = (w - (mL + mR + pL + pR)); + clock.css('width', (clockWidth) + 'px'); + var r = (clockWidth / 2); var j = r / 1.2; // radius for low number @@ -1179,7 +1152,7 @@ hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value; } else { if (picker.params.shortTime) { - hour.display = (h === 0) ? 12 : h; + hour.display = h === 0 ? 12 : h; } else { hour.display = h; } @@ -1215,11 +1188,11 @@ clock.css('height', clockWidth + 'px'); var clockCenter = element[0].querySelector('.dtp-clock-center'); - var centerWidth = (clockCenter.offsetWidth / 2) || 7.5, - centerHeight = (clockCenter.offsetHeight / 2) || 7.5; + var centerWidth = (clockCenter.offsetWidth / 2) || 7.5; + var centerHeight = (clockCenter.offsetHeight / 2) || 7.5; var _hL = r / (picker.params.shortTime ? 1.8 : 2.3); var _mL = r / 1.4; - var _sL = r / 1; + var _sL = r; angular.element(element[0].querySelector('.dtp-hour-hand')).css({ left: r + (mL * 1.5) + 'px', @@ -1227,22 +1200,20 @@ marginTop: (r - _hL - pL) + 'px' }).addClass(!minuteMode && !secondMode ? 'on' : ''); - angular.element(element[0].querySelector('.dtp-minute-hand')).css - ({ + angular.element(element[0].querySelector('.dtp-minute-hand')).css({ left: r + (mL * 1.5) + 'px', height: _mL + 'px', - marginTop: (r - _mL - pL) + 'px' + marginTop: r - _mL - pL + 'px' }).addClass(minuteMode ? 'on' : ''); - angular.element(element[0].querySelector('.dtp-second-hand')).css - ({ + angular.element(element[0].querySelector('.dtp-second-hand')).css({ left: r + (mL * 1.5) + 'px', height: _sL + 'px', - marginTop: (r - _sL - pL) + 'px' + marginTop: r - _sL - pL + 'px' }).addClass(secondMode ? 'on' : ''); angular.element(clockCenter).css({ - left: (r + pL + mL - centerWidth) + 'px', + left: r + pL + mL - centerWidth + 'px', marginTop: (r - (mL / 2)) - centerHeight + 'px' }); animateHands(); @@ -1272,13 +1243,9 @@ var setCurrentValue = function () { var date = picker.currentNearestMinute(); var nbH = picker.params.shortTime ? 12 : 24; - if (minuteMode) { - scope.currentValue = date.minute(); - } else if (secondMode) { - scope.currentValue = date.second(); - } else { - scope.currentValue = date.hour() % nbH; - } + if (minuteMode) scope.currentValue = date.minute(); + else if (secondMode) scope.currentValue = date.second(); + else scope.currentValue = date.hour() % nbH; }; scope.$watch(function () { @@ -1303,9 +1270,8 @@ if (picker.params.autoOk) picker.ok(); // single click } else if (!secondMode) { - if (val === scope.currentValue && !picker.params.seconds) { - picker.ok(); // double click - } + if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click + picker.currentDate.minute(val); if (!picker.params.seconds) { picker.currentDate.second(0); @@ -1317,13 +1283,9 @@ }; scope.pointAvailable = function (point) { - if (minuteMode) { - return picker.isMinuteAvailable(point.value); - } else if (secondMode) { - return picker.isSecondAvailable(point.value); - } else { - return picker.isHourAvailable(point.value); - } + if (minuteMode) return picker.isMinuteAvailable(point.value); + else if (secondMode) return picker.isSecondAvailable(point.value); + else return picker.isHourAvailable(point.value); }; var unWatcher = scope.$watch(function () { From fc68976d7ca9fcd1f01ce4b3f6ff9b6b2711c892 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 17 May 2018 09:23:21 -0400 Subject: [PATCH 150/226] #130 step by step video --- Angular-Material DateTimePicker.webm | Bin 0 -> 1911223 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Angular-Material DateTimePicker.webm diff --git a/Angular-Material DateTimePicker.webm b/Angular-Material DateTimePicker.webm new file mode 100644 index 0000000000000000000000000000000000000000..53c499eed487fd9d4aa73502e0e218a14c29db86 GIT binary patch literal 1911223 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

v+m;0xRf5j}2uquXS<%&1t=cZLtC zJ&FPL^$TCGFn!60H~`Mmn&~FNstERa@ybsPF60IOCez!m6?PeFkQwXLW&F;&?W%B$ zl?6}ZOrOj5q9uJKp1<-Y087*Z(hzAMa&vz?r(Ke1-Us!zK__cc4lL&C5JKeeTz#!( zW|B^wtfFNTyR=zqv)h5=W4SaFHz>K&jd3>ECfl&QTU@0n&hw3y-S0IGr=9DFJ6*au zg`>egj|En93u=zIv^8if(v!lHKtu$8_ajr7>f&9{!h1_?mLPca8IvIewmFP?@rYdQ>N-0&!^D(2D=-QU`7 z-*vrAvdo^_N4&$J;SRKoOW?-9q6>V(u>v>*#%GuUG*18I>@V0N1?$B-jf~m=b#YZ86RV0+l$VK-2t#6 zAkW-Fxg#QWTlZ5na+)BNBj;oP((eKA;b+F-VYY}jRr*#VZv^y;B@+9ro3QF~(*r$# zhsRg7_tL?Pp-ta6X^5KG!vn{GCaOtB1wh_T!I;$h-kk1XYbLXFV>I3i+UbOq1(Z;9 zu#s|Dl3`Pt+htOe!DlWJUBP3u)9+Yog8(H3;NuUNG5Oqis4|N;if$9XUi5gicq8_d zKYz5An7=UNXx3h+w^gK-Exmij z7x!x_w*1ceINy>+iGhFx7JfnpRV)jXoj`lT?XLR#pQ*}GZOxO1MjOhQVZVieAmUhO zpL|KQazPW8OfznndW3)^H_yr*g-*<-9PX74}b#QU)V!dH0> zQy)FmY+z0htz#JwtRUh3{)Ag=idgfxT(&NdL%kTaIt$@x+c%9Ivu6o!)HzN-ky&ya z?Q!;}^X7{RK}g@_Rve*??}gd)akzAgfkNw6SYF%>QbN>t#q0|=V6Ts5>E657WVF+w@Xf&hla>Y;EGSBDVE?oDjQS-s zFj4Vp+*Fz6fiSP8kQUlS?l?^DC*whh>(rL{8`}$}nFs?W>5ISPI#XATQJ}zeN8=Y> z+`;|XyKUE0&1NIdX+_M$dYzD6$9z|AQ>PhnVanUAj@k{hIowl$2>wtl`)twt9HdUw zoV^mhDMQhHf_94u-FKVlNiO%m(_YmxfGD-o^(i9yZy^2Q0=hp?JU^2mKVTnucCSd5 zOsnD*30?PT@91)t-hUWm?rn-BC2GIp%EZlAIUY)0TalumkxUyYCG)MGL$`(f9N)NZ7Tgf+ag{qUPa*n6TZ1raJW1rT_~_~nkXdy9%-YdJZt^y=w&TvWSsA4ybv(2xh)$7rKj0|h+jN56BBTVXq!@|@zs6FE>go+ak`=0Obu?|}B%|U)6y=N{!yqW83(mW9qDYl{-ju8DO zcu*lFoXD^6l0BZXD1~GNRKgdO`1T)waL4^>_!%n8F4woeWCtm z(cf@2k`>=C{Xy-oOF_a+2`@ z3|l93PHiBew&FfT-byAM0oe)VBNz+DYHp?|gm4lvm}W8kCuU=jZuGjajULcs75l0gsDTvlMB^Ad03S;67s;zY#CX`!h{m zv*iC82~B2Dq^V9DY;QVK+_dluihF}izq-7ilaRx+aIZGt<7PDO^A*#rv|_m{agmq* z;-N96Ef<@!b5EPZGM7#DewTUxAC6h@B*F+KaPRv3&{=<^q_MP}7P~4m^IFx}CjBw3 zT$x&f1KoC+#E!LA_T^!TNJ#-BdT=*7EGEMck>W^uChe873ihAWDAa1i-Tgi?9zsJ( z37YD(Q)|M?CQrPkM7*Q~47m9L@P+>O+e7g|(+@s+K<!5wwMNOfzb?VN zE~8UqCabfP;wz9aL?VL=xk?=AiUY8x1W)6xH2GnqqsyFD73+6c&pSJjqC#l42pJ3M zev-9tqWnrR2IsL4c9{ugPFdm?BMRpLA{tKvUU?kklp~$ieUfi_Qsbth6;3$FBWO^9 zz-u|KMvHSg5}_AoX4q+Cudn;iFi;0S`lP=1uRreveW|=9_rm{W)OY}5tb{k1tU#Lw z(WIB7`jE^wY)t;dZ_*I?iZ;6h+ZzEHgGK~f%@`4HG+;%%6ZG(9j1Zq2!7n$Zr(c(LpGrDLa_>dZA#8o`M#loFim0wRV zZ5b^!$bZ;&(WqsLF}z+9ORsHm*nQ1{fkpxmVxqpxqRj2XWkQIXy&|OE=V%QV4pq~w zbPbOxS?Bx;zZQs)yr+oneui!Fg{g5&Dfk?XZLWZl=wE>fX5!|r)vZmyh3B|da{J0a z^G|XGHw@k>4o%VB3W5a$NUEZ#bB8E=1S4I10THh1o!S`jl5|Ci!!>GhbiUIWhi_v%#QFmA9!d$04jrU zlLLu3!}ys*8hdL(MH0~(Y=w64pWX8GH5$`*6>r7@2j9Uz>?;zZD0XQn^$n-5-TP22 zW-Y6F9|6T=+PaRE5Z52L`>)~LihP_TAdIcHW$^SntLvs+1pzLM;U;FWV$%*|u$XF; zr8yblk#QO)W-;TMg(~~IKn?av2aoI@zZe2Gw17>HDCO?&vXv>4GJ#w52eE;uDbec& z;DCp7baOCT6|W&b^e+w&NFN6%$0n+DLUv+5I?oy^gXp~iHn#CqPwy?eIm_p6*((4$ zIrVhT_La&bt7}=VCq4Xv*g8&3Eh}MiCK^AQ%1X4*r&+BX#3eoRmUfgD);p_pm-Xz` zBMaCDCvD6p>}9-ave%a{h~${OcX#>FkhuZOGN||jQuON<%<2HVitL(x{$kzMvRp+L zKRTuY2*fn3&{l{^wvn7q^q1^+UHkm466c(khojVd7LUTwG&1C`S%H2}jQ!8l0%;DJ zCMi$5_=gD9Rg+qA?-BR>KA5<$VkV+gWB?&VJ!>RjoAPhPmt!S7lrMXhinlp+t$)`VQII{>uS)+fqaQpwpkr=MJmGnP!3+z&)N{`2Qo_kofH*zC?_k7aq@24C#e_}~oT`KYJ!)uTuxlNv1SD3(>&YAi z;|JK{Mb`=K{$S92TQC0ECyeBPoE^JQdsk`Xj$9u&))A{CW6*PB{fm^17+Gsu6K+uo zPVldSAMrWo+Ft9KLhG^}p9R0fUN}tWa3j0MO>}BEz9lDHaI*-FFyo{ewZ^<9ZPn`TC(I-uuQpJ43 zFE=(Z)Gl?d&dQ41EMengE11Ig1P_7NWdL>B^^#>2F)XfSyM6P(ADU13S6DCJN^nNS znhF+O$);9(7!H=)baUQiB_r#0EW{KfuhB!f#8FEpuk=`<_vq;-4E2Uny=V1-uSPIl z9d=#`2> zT?Fp}xo*A2Yr&kv@y9_jj+Aw<`V2e9h7U6{X(mtV8b0*SkmZ)zXy-@XcMxrGi^8 zn9K$*lDegwWQq)S>ndVmt%HJ7nCt!pPD)$;SVO?DB~w$%v+-yq0xO*LtZzI5nEZj1 z&3u)F@T@z~k0yJ-o_XD5Q;(JkdED~kt@+gcx8vu};F3yiY2kUj8B539vUy@h%${V! zqja}s)OJm4>wINN9;(tyOZVWE)mOuG;>HT?uJ5EBFQ+=Voz1qBwXMocrzWV@S1NA~ z>*f(&3u#cgV#qBFPd7qycrtrQ;&^TVy;)a=&{dibMA(mC7DO$GWf*l#O(iGuI^^CQ~IGe~f5^@!z#{@Var=7J1i;w=+@AcDi3oOMDmPy%qmi^f2Koe81;rx|@QMyP{z8K0B z`h5dE7xPA=t#f8wZ~!Y(89(*4G%oJF4zWm z67wCaIM9W{a0Nu=r+fKQrY9Yu*%=)bgYh9>%?_Ed#`3h$j?s8+(LjZ|tW_dOTbW(9 zoX`&$O6npFRRj~Vx9?J&t6jja1uWsxNBD_zWD4K|sI+SFlAzOAV2|qCgdV7WOo@3m z8e$a6RHa719O^B#`YY`@zVdeznu|PA=Y$Xk6R^R*jih#Y>YxV^mZzWwE^I{erm)2D zMrX~PP8`MjnY_*6cScCJ7TQO`cl8bp7-fDS>=qR@9!*u>R=5;n;ha@z0uJln;x|AX z{R3F5$VYrWPOg=x_7iU{#~01T*(+?x%m?Lnbw3Ck*6JY`I$o$bkk!@hZcVFphaADh z1ldA|g?zLr8b2+zyrfObZTC-;9hC5%`0(M<$QFxEM#muV?URpvVpJ0UI2Bk@*Ob*F zi&7QrW#6>fg&pB=JmO;S(Uo4Sq_`_it6n1F+rv5BvKc>g*%YOxK!jdZFm^Fdk-bta zo8fv(&c*njeY)7Xw{yNUzkwEkwr<;F={MoN^eO{Z6+VHs^Swf8AmIK<;w71nmst-m^~!)T=GAfyZh#C`c-M91OPb&{#306A>)h5 zc!_8}VsKTpN(>ZqrKcsrzE^-R7mKt|AS}tYuLjwo zB)c5Q54T0eZA6?|lv|+R2%5^oGp>6NVF3y8;1^ioBrO4-7L9Xgk0L5~b4bz`J)!&G^k7wEb{i&ZIC;vH$_=0L<*g zH3Gmi|UEYjK>znh>P}tV?HeO9vDcu94Yx zxR?4%v%KH-j3&D#;uf8NQ9;g#F>!(t5f3e5ZA;#Gc^FE?fOpi&z5&Ueqr||4@KZWO z$+StYEQZVkyq4f~R(^H^4swrE86n#biaVN#Y=tNH>dBM?<*y&!q?CZd=chY*@1VJ| z4&($HyeR&jM?i89wx7Jf+p2VuU|1?~nh?}<7~1eNVN~W(ZLTlGOhEVYEC1>OBycCd zZVIinrhGeV1_f)2M=y8(Q&8Sg1<9;9R|+YkGy(8rUC8&!En?!qp&TC}ouu0f@LuT% zmI~^BOmR~t7>M7=*WtDw@BuMVi9oX1>K^HSGbrH{?|22X;P+~8W}TpbC;A@KlRK`K zI8bm7M`4suUbMq1fr0?*To*xy|7(^untJe} zZ^MJQ#IQzOC$dzCTBpIS4EY(;t^nM2h2%a$h68FW!86QT5v-e9vnmfT+a5QkK+xD# zatAa%0Y@SPpIJ?6>pgyMBh}@eTUxt#27o*&TPkaE60`1Bo}$nI`naXbb7SIBfHaL1 zl(wwQy|z3;k9d8Pa*QLgRvZ7%S+*;jS4KV!5M!T%<~8)Xxur_cud4)u&a4EM%wjFZ zHHmJR4d)5liDYJ<^?HifBu12gd>#oQ42V4=K?LskSs07j< z=RIq6B4p|89b`&$}fZdjR!|FEHx2LMlr2m<2qdWSWlY!++bdbX-k*2X@ zW{jB%s?_XR@SInvXI60r6Iq1|Xb@s%o36G^=fO?Sf}5WOH$Dn( zd=%XHPLm?Q=8-}^UpAg5l5$ajEhGKjKE1n<-48x}lTrqfwnTdk*+V&2%@tWdrpS4fn^!L%I{ znfm{;s)gGiu-A!4?tfgr_M1+mrl(H0luF}1+ndcG7tNDbR(!T|K3WuU3`nhi+2rL6>N@H{_A&RWqi&TnJME}zYu z|9X9o&B-But2m6EWQ3Ggi(+#xau;Gl6jz5Q)T$zVP}sl>$X$YtA*Bk%{&wf%vtn4I z|En)Dmh7iK9n3O&=uI8_frpTPO0fJ+Pd1XUNu2HoUh-cN&wRlD2Hk{bBE|$Ja+1%mU#OLpv$In1n zr03RFnOU`7a~C*Oe?vIX@XNnJT)WT!f2#-(A6CL}W91wU0kEQap5`W{H&AQaiRP}p z$CC?O&xM$+l*yR9EbEOrGhUMlp;9+JX?gB`hd^Urf>`UjlDd5m+Z2;4a(a9+(D&Ol z&L09+J&+)-u@WL?o)!Qs$wnpx*P@p#ngA_pUdh7$Bdxqo0A~prK}3G3tE0;`gYGEW zQtFzeGjMe0mjmhF&RY8ro{67rTP9Taaqi4^M=6UJ04#r{4DmR|L`2jTz#u z_v4b{u$@c2`zHT0E8uqZ?14I7j6h30INNwpm&$msdAfx=^Q*iF9^fIbI!GSYjqa zyBBsGGe<{Aw;r#R%3na-EREu2j0n|!KN&R zvUp@f9u^de!M53?)nbCJtoTB+MN3wdgPJd+JQ;>p5 zCYbXwCvsAI1yfTDn?lpn6j+!N+zD|glup=599vdNQ@i7^TimP=i^elZ&rbE-Xm zj(JPr{nY95w`${+wQ;)vRzC>Vq+LX2lO5Z;91s9PwjCns^WanWkVs!m-TOv_HK+v? z;si}ZO!^a0BZk<`cI83U0C_ERNbsfaXqVu1rjUpj6QiKwBITu4kyJ8*rL%dFQKgcj zp%+uhO6!n<(RJs&7AS{a4-P~^h7={ohsF#RPh~aX%#fgvH+|1kOPc&p(J3n; zmUZ+N;R#InGQxF z`3SG9P2$n{^-&a0`Gpy3Kb@w=f#gSs_K5eW4JnJn;EHJ$)l%}2*Q4pcLgb-Fl-DU!s(7ls^ zvQIe&l#IAd<_x)Sv63uVbksN zZlbwMP!7wooePg85a=d-?!{@~tE0_2DJ+5qk!})>Ga~2$NV<8GzPRw4Gnf`~qd%p7 z_=-{Eooc6GjT?$ZX@>BOf5XL;xvBpZiz)%o;Z6XfR}{%nPHIt$Kw?D+3Z&pN%%1Pm zr7=Thk#+%59X$c5z`sAwu@bahVrJ?* z<9uNB_LmH{Bnon9987>ODDII}JN~t`2efV4P8XwVsvu1U=6lGj9iEo&d}13GQ6P6yr}A@Na4!(WU&%fvdEcHim%#tql1Y&{Men zNs|CZsv(YIjIF#(bqjt5hnUO12)d!egPjI$F3WtVWNyC>HfdD-z|)-}27Ck5p7TiZ z&-4!@GNa1s4TvoCj}RMDY}ox2UcGp!E+*1YLrpB1j$RRhhq^PXVqDWDZl>pp7kd zB3=qht3;_FdKw|1R)zo;+<5O4)9~J`+=<}(r|rW>+yNLM^6Jry#%y{WT>+= zm7MwjOme9&4ELouZ-J%W2Cb`fMA$AtwH+3Xkzr!AIG*`y^r;QjK?PG6Ejc|*&7^b& z>sUMtDA;bqDh&t=WsRI5(~Vj@??SPA;?UE0fE^ z(n|o+pvt>qEdT%j9e6+~cmfmda@NbebHI7>k=l43pl#RF_7k+g_k;Q$%)?yp!rn0+#yhN;C!0 z0IJ15E|)oX1MCJ!Ve1IxGX?Tsu-2&;c%oQ_p1&mi!G6FUjUHpj5>gmfx7{%~f!yYdT9gj%0}6s!q*a z>N5j9!|`3`>Is6PF&qZ+7b$KmMxG(^1Jg3A&~L^g0U=fQn!IG~k23-Qla1km%obwR z%syNHX1%J>rnuI((dGfeoc2mk2EUF-Fawdid@DXZ0f8YBjfn!s^3(U}F&9$5?@||?+PG8kYCtF+nazs&iafQ(Df)K zoKKdqk1n?SR1L5wA$lzyKZcqzNDs)3fhgu{GxkiYdwXTXU;Z}XHOV^cNz&vWg++Iuky(wrW zrRRASVC9H{`LeNG7Dty0CA#p@$Q1qpeD?-^+p#i)q}6MYDo9M0j50BqO*a2f$`L=e ze-_QS-Ky_jICRl;KZ#RX4hk_SaghD@Z7ETckCnKvLEmcDMF8|*o7BpSD|66!C# zm-Ydr9D+7xE-(@t`Fv_?KF_F* zmRpjcp!F0N+|%y{cC_7?J!w_c3b%H7WOj|GxkBX2*BkR5^y*xM-hW+|EI=RG>_c-% zL7xG;1KUW8AQLWp00*zWKLuiX`#IhNbN<#BAgk#kDUn>C^o$t_5qi&h^{Msmj}uiI zk)38Z)Igs+1U3-(o$Z)W)POI$)$aQ6)=e5OJeF83lGXn|Mayvn;-ga0uf)8k@FfgV zh6CjWtK<1@*`QpkoTr|_nxRE&)SI@)3quWH@a~r^&dO-b0Ee7eJOOpLk$9y%^fjxU zx^FR5cQ=>XH3jw$fXF3b1@%V6`!r9=oyUa{oFuvkQP$Y&H-_DyCeCQ5U^8KN>nyON zNe$fWz}bJNUW1vo zIHA&{MOw3>qbh0qhW4@jvby9LzDD>Ie?5^`StrQNTBBGJ}E z*Tj^UWQpxZLRYF*jY2J(RT zp38<;;u8Zf&{Q0nx*P%OpBns9B5MEaXyc+W`Dz}+Ia(VcT5LD(!HVYq6f)4b0y2NK z7ILluns|TMDN7$uq&|#C)#sRQ%HEfu!cv)HOD%Tkp=ok-PH$v#Wm01bX~3Fyj$GD5 z#v@~@U)?p_5^7(t!J1DNZzOFyJsAIwdcgagcxqp>&3uQyiAMdFzs;6KLdRm73OEz! zj7^;S8>HR*=7PNrk3zRfy*+ZGfnDn`ipuwV#d+%&LYho<_l+Bh_? zz}%;ZZz`)>?dr6>}*{WE2gI^koHM`<4=}KB<%GWh7?o&W-fR z&J0y>3M{_B4z>A^cE12+2AgOZST?g+^I&4TI`IJKcp%3olG001MYbjn-hyS*VA!O| zVWLV=U6&ek^p5L|AdgF0eF0WGIbq^%VKt#lSN|H9R$1Tod2K%dy>ufY?eT&T8Nv;< zMw-*}kptIzyv70nC711mDu?GoxEvA34(kq5F|~-cN0)y8`Qy+skd2}VrBN4GL1qX3 zK%SDmw`W370oNYZK?f2w7UK|0}#yQn}itnKR+X@HdeZ@YWk(FyiAR)xNI?Yd>`p zqoF@R1ET#*Je3`VvT#S6c{4DeBCO@gMeo=2+mX>%SYsK^VrWqk@U#_k_Sz0@Y`gf_ z#FgI%GfYETW(MFELAKL%4OSTjHb)HdwT2U})r$nr_nJ=wx_ZumDAdk0r)73M;qI41 zpA-vq>HO&-B)4%RlzPar2srp3f=dFjT>N_}%h5^n&jj6L`iNasW17FP2N0{0`r`@^ z(h$(`puvGkvg-6d-hbtX!gSaXO&l%nc@*}weF|$YTjMtylTz)=4*3zGlFD`_v5f|e zgie-2&D0_p_x<}KwaiKf*YElcv=Mh}{B7@!;S;iaAL)C@F0KQFN;sfLy&+jtb0XQM zsm7ra=Dt0NHWyJhmd7B8OqAdSQc#`m8rYN4B3t>sv+1?T&@y^OJYKz~jMysjj=V-0BgH9Zd}DNBlB zZ?W$X)Jci1)GiCjYvK7O@0OoHmR%OW0vxxxFVdtUj(;X zVV7TJR-W3}YPf!{c+A~W2Z`9*YB?JPWIAc>@M($ggrX}CbCOkVtc8P^J9UWbWogPl zko67cEXc{agLSDR|EQOr0bTdAe&=-{4S1`coL5&?>)dDAG3$t@h+(1Y3hZ5E{pds$ z=P_TL3fs|;!b7_k${^a&?(^_iS_t1T2{|!N)`HeU&l_mkNuTu?-YEApK$-q;+&yCO4s$2SWBb|AV<^my$@5F#aP=WAL^otdn|d~fWy?tu3B4z=(WFZ2Cmhk zQjI(oBo(dTA3hH4;)B&ynX>H+i|&t^)QFMdeDplP>#-@KP7AVxChl^RA2ol8!e>B> zj&6+YPV6Ic3z@2~TvO$RBi4|775yuLbkCgga(fj6i_uE$Hkfoy;lW1n7M+b5u`ajq zxHjNK`zh~bB3V*VvE0@95K5mX@9+?og@2)hKAP1*3^fuvh_`V`AQwidL@Eqp?_@`# z81vC~850F%^NFaIn*^B!08~Y3kNkOqLY75vc++m*>;#Ol|=!7 zk@DN241!EVJz%>bfv2?ve-_hqYY=Gqu4yY4N zQUs#$=M_0JAO~7_$a@|1THALd21OPDRp#^2Li56m1|jxD5CvY7&vL+MOh@!AAE+ZM zgzPXb0R1FTec5!Rw;q~g|7eCU;co{wDXpPA*&&kJFqfX$so-87$AXO*kWvhE3P4EV ziXdj4Jh}}w@`cU;Gj6W>?l3zuysM`Jl0!71h}fU$NrT9)d3X{&6^0z1F{UK_TniJB z_*9y3#j2X*x1o1133j0gkQ(LXMzQRw+a8Pn%NawUJGK%RR2QpAlZ5g{+MqE>--Ar) zp)%{1`-SXRXVS7H0yog0p9UxaC$voMB|Lup3yjmL*Uslk@A9AUmMIjOr3F z02Gh*2^vRWu}XwuG-m$_XqaM^g+(+-2uc=Ik}XvMvils3k>fD~cFo9L<$R47J|;%+ z44H~f_60Y$C*@c}dLlwHH`(&)R6L`l5Cw2}&cR*HLvLbHq7k_feih|>ujnnBc4f%M zr*8|p8swGUhF1cLu7LcKB<$^$vI4%ZaRAtT5yjw(BX9yJjn3|4Kmu@J+Fl)|+JkMq zIAUGT^|=t`1Gi2bQRjazF!vKgYTdp|vj*DYl0-rUtnl9A{-{u1kh4Ku1l!+U<3#Ol z>`mFS`=-8=KIM2b8}msV<(6l5opkrrO4xrPQZbNVie8q9$}e9uzjv?k!CeLknp zBUA%$o7iS?k`)&x+(}u;mXWSO)|KBV$-CU9?0{Qg?7}&rOb~!{PNSFDtO*2Ht&X~s ziKK?nwI)3z3OR|ldwo!@n8iVZfyy_{Q6TM8!e4H_3`nAW=Sy8W4c{DbK_$%rn+= zZeJ>vXh@7#BvhwbH>uu4n&ikE+xk9txQyd*p{{d_0JV(HKZ2-Un>o%jW;CcrCid&u zj|5+Pg71Lp1l_{^b`|*9D z98jLi(ZMYUZ}o)QtIIMT_kywbpbNY~9pKoV11=K8*>w#~Y1)c-Vcux2wA zq{#^#{Fzzx=Ez0yEuJdzlVcG{(xY3OWyMRoZP_oi)GEHS=|7W6PE%{5UYE#G;nDv>!^5V-SF2Yn4Ok5MQ$BI#j)5 z?(V3uhJhBNS9`ccG-Y*&SkrAHfaBwlMOHjV(qmbv5-Uge*2^VA=4F;U7yH{`*h-5M&mC8}H%+`NwuPT+gb4uPccvddDcioHfPT(bhyyUa^q7VnlQt zx8zK70|9Ch_QFZHP>GLO97NBVj9dZFiAvg0txYfz9lZOhb6ZcagB%5>_lHB69YO=o z>+Ytdtaz1_ElGPo6{94jacdbie)jo3{;b@;;F-FP*>swTm-kv^(N?0QhI9z7WSv7w zy~hhC2R(t>m*KeBIL=`C1&0)!d&(9`ShEx(vj z8q}6{4l-(A6rKda5SNw5k%fogz;KNCh~NWC<5NM;idgqkI2Vs#@FN{=Lff%BgyYSc z>C-WA`jZ42HIz?=OC?euC z+yJjid6AeUmqrI5h`;+@fiO!#(oKB^LVNe1wGm($HRPj$ixj=-TU9{9-ky;TAc3LB zXnY5*CTSyZ!oFr=iwJ1dJqL=-jzgTL`I5rA=)-`e6)sCLnc6yeQw2G^lX0A4q9g@k+FpNx z5ikpURCF784nCxuxLg;J@abol(%2x`^I3V4(I*z6U_2f?=6=|=suL@R#$Gg8$;U%C zbO)pdB^0-rB&E8MoNPAM{sZOzGm9S${S_M#bKm@{NH_LuSrH(zkUnnQCskt10WMtB~o{2^n) zjspo~pPw)O9!EPh%U8LLPU$kq10;L0vcXVs&!93sV}Y__F2Iyp;KcE;14*J`%jMb_ zb-cH7ts`tS4ozk~sP>r4)w1dKB$CZUe?uv|E)5@;UnDV{wt#(o}?Lo2ZFeHhe+tUQ0?-QY+3VRw!PPNC3{ZB zy@AS|3bkP&Yh%{`+$^yAr41h~=(pG)(&~)fWzSJZBD5DhgPcsjlt< zA4`ee``*v_wH|b9v*SE(IvHMuk!qIPzYhE#fqddM$mJvKt4OBBHY?szN5Vg*BC41Z z)Sgr4rWa5W86zHaXmIj)xnYr*1;O9Q*37u5018*I%0PZtq$Z+-#BLMLf4&^e=?ZCZ z4^NQn)X#ODp=+u;dp9-UPOZpM0h)TIJQrJuqB?ORDy?H9>#rV!c3mz5bfh1bd&2|% z+hjQTAwv|LtB^@bVov+uabhTGfYA<`46E>ndx7-)0an1E4h4ZE;Z(G`$zg~|YYUrh zX8}`y3t2(bXR_6=-Yo%mz@w9!8kYlU6m@qRonQI<;4bOCx>xzgFY<4se7Sw~;)Z9r zl_nIw%N8=S1lJg|B9WiKy&Xei0$$$sbUASs1X;-k@D}JrZWB+L^1CF&WLlKn^E=e! zD`zIr_k1|qpRwQ?TRu5E)i39~;*R1o0z;qW6~WS2JP4v?i#Fk>M9xUYhUe|e_*ccu z1l_$l0H0>@wV;u?s9mi^eY(q6MCZHFK z6o@cQPV62a`+nFqL3ld_L|X^XzT4tGot5t1PMkD#u|_l2GjaYsA-Rlb zrAiFq$G3nhp`2aCfe0(GvPJ&26;lt9lXdwExG*cDr}slEpx{5;&XS- zt$|O#PU1)oIIcuDtOCu+31ygbAEM5PZg|F~FY4aC@0p~tM51|bTZmFA`6P~D-c8>y zuGCS+UB`^5;oUqr;E1q>3EOAYHBV}nhA9)PmwZ6GI|&e$)|0n`Ql=MqrO#1m z5c?4NtMwSH^iU!esLDd*WKI}xF@jFXZ%9SkHHI&CqR0Ov0BHj0w6C-m!}~|9yiLjp zAR4MElX>}G+^>>gkV*uxP5kHnaQYwHalGBimR}mOpoA>|DF#fWVo-Uo&YWtIm4qohO@{5;WNF(I@yU9b=sPh9d~R{Iz<-_9 z=k7jqiAQ(u$c(Ao&e(Suh7TPk5@2L0m29*7W=is3GYYl!XTW`NU6EthU7r`ntAC1b zq=TwCZ+O{+v=BnM1R;3NxJ74z8O&}oGnlgqZCkUO!^`0$ekLU6YQD%jwdvoj`}^W~ zk$6%}w)6535e9MrY_je)~Hipn8!k7Ua^7kt_$Jtb=@u^g$dpZl{)_5lPPIr zL@5^B|B)fqaP5CbDh{jcj$R=e`fs{Ue0_e*5O6PP05cDa`KmgBGUOZ zf%7atu}oqUx0yd)=4dcGWmF3b@*S8Uk1{Wy8F#&N)>Rt27vg4;hIr?zX#_4?31ua+ zuGbsEc`NVk=(?HfST(b7mEpdJSBq2M8zX+q1hVNA7p@G%b`IxA^ zJyVT@3{;2k*G1!#0MvLMO%K;;{@C|ZlTL^)RN;Zjj1>`jPe+PizZ)1hBnA7#CYe};K3RSGU1prAvw!it?3*|?C zWp|p`%W6xO6SX^B>oMIT3IX!-A{Y|@>_^M1FBuKF9@Q6K00)1;4{FG2L-cWTkyP*H zs7oZr0yVzp1ghVQy}O{?caDMv0mP3g0LqH`B7{`n3^C?QbL1i*b#k~&V=9{af)l9s zy21%AoyXddf?^>fnAhU!1z-<6{$f5ioGUc|pUv%O}K^!LLaDBqDj>W=nPWoqXL-z2f$M zBpefX!Gre&1*@%DwCFcfC-uun{wt$8SznBMp*GMZ<*|cKI<`uJL|T0KajMA_>*xf+ z0j!p)O)La}Ye$Ria`TINKZ85|IMPjPYBElu1oCC?r%iG3DpYR0vg)MU3^olBxVEt+ zj$9}23I-@KWwz@8*&CVLN|?47p|0AE1Nxut<|ARBgh>7((^jd6sv-hIp>9lZ2n+}>R}*YbH!4;`PrZV z6JX7@asYxfIKYK~zPGU-3U;WZ8pYL4usZ2qpfr9{qD<_)pP1aqbfs^(gW&<-sY6aM zNt-S^(&{8iZpt*afx!={J@9wK4C!$=#N|vDHb6D=3W z+-Jv~`5vRE@Z^W!3H}pDA(?p?usQ{^*ritF788#KT!Isjd&S4wDC*8YI6l0U`Up+7 zj%<6rAd%@~sY(QJPSvTJ{ly^|3e#KN#w13$hoGkiH~61OA{E>_GL-~?H9*5y_f`4x z?S!bSoQ>5o{$v8|6OUg>)+Dnq&PGoC(iA_acQ%8i1R*QZ!f#IT?xqcrB#!{3CeyW* zm{J&LOMo}2S6Mp4iNAZTV$NP6a2)3NNC1rbM|bN}t&RfePd}W1M){sS<;0B*Wz|n4 z;#91Sc*X_w1OvV>Q*kgWOwGT(#CWhTD@D020H_;*aoy3NuQbXSjopF{d_{k?b-r0N zklI8_1?R;fFkmw16Z;EU+Pcw}wkR*pJdzfYJ=$JuXJ`(Z^yA`%2E3|#eSOn&4m3|Q zBw=6Ohid#*IE;i9EDzRoQU-o&-)Ax)%&rHF>hHTIASpwLMaSTxJx6X%NwohRg8&un z7q;0Vt1cq&0|)(RvzC{}&jdehK7wa|kS5bWrV6shVV=fA4hVRKW_Nm^=w^k0E1LsX zGyuI+VH|t{qBo&L_V+~hwp?rgkVs=0 zHEuuf`}hh3hw+Q^AbeVtujXYtYouk%&yq<5`f5S?Ow&Bo+E){%oz@F3zm<6=bNbWUGh^y&vQ@CzemK4KdD^ zQ8=5LL=#STosvBayD2L*D*q4!fM^0lp|vKE@=Cd2B7IuaaJN7%P!>Mh6(&SFKY%6j zdi|`25OGOid6O8b0VxER*3Tuc2gm>lLgD&IMBh?`>I0nzS1y{tSU7_xMtl(4lB{a+ z51g`s3AuX_`JfOwra+cYF&+nGPJVugXpDjUbNkrx0RtFpaG~Wl171c*7JZj*na>TA7>wj4$$;}K>EuvapEPgLc#0D z7ywDi-kP@0?9oWz(7JUwAcs}K!VLoTLaH3c#J6~n@@g&k6$ z6m7+%jqhNPIBP;!3+^M+QsAYkcgxqTXdRqFA;EoqDXfnc=q6LX3d2m7MCo1nS=7W6 zr&==e>pC#3M#?o1JyYj?eX1{0Dw}DxJ1o{S6XA$`WiIcp+j9R)+sP*6^y09GcjOH| zqUm^rNRrLVNqc9kIs{~Kjw?14&X}9y5Kc4GOhq_5F;tw)w-T!>!Ffh}Big_T?XYbU zG6;FR^ReQugJy}0Pq~V8Q{|)sAYU8NT-chn9K(uwI!xeWjjd9Qd691*wTqKoc;j0; znZ)S23hMQ+6);I*&BNnaRQ{>Jl#niv#Qy*L&YjG{Lo!^b0*wtMR*iuDcMo{xZX%bV zT{|*Q?TMC|kWcJe=klisnC}@>RUl?>8x3Y%^Sk;~&VxnH1`M{XgrKl|&Sxa=_xbSE zQMH@#J*9a0Ft+e?HK6E2(7r=(;^GoHzdt0@b{duEo;(d=LWCjZY8sq551l7GiZ zUG!7TXebeDGFGzm%;7qY7AL7BBz;hLC>j89xWX};v|!VRgpufeTEGBqNBSpmCwO2B zq07}MJm$??{vdC?UurYM~&PKRPOrFGXMe$sy9??Oiu`PXX$h3*VVtl_x37cIiof) zLag#VK3Qr@hj2rW_O4nODjdZ8vYTISMO=rIX&NJrm!{#7-ql6U*sV zbEbHt&^2K+GRp1KxfSMOmfziC;7qYMHmJa7_oYuC7>skg$ZxMD3c{9%*>DZ7)vO9K z(8(zwlUcrN-^B}9Mj#fu@o?hbXZ^0Ir@K9KEPtD_evX2#y98EUwzP8uFGBt~;N|9e znVywTQ4EIJak!^?;=ph`IkD5Noxpn=fN1370bH?z7DWVMoa9Kw3q|W5fEFg~V$;af z8Kh=a|M}VIS6N#(&WAr>5YB0pBCLrQS3je_X4P1|^DFg3Ve}SAl@s@Ct_NQMSTGFN zrPg9McW;3c0~@5$Fe1pyMx{LG3>q>q>iaNv(dapayhNZ8?Mb%cA`^GnklaphqK1V0 z_7nZ=hL;`LS)C*u;KpSn% z75#3CLXBeJK?~d}J5t#V8mjaa=z9QeDL^sroYAYykoo~jy!%pL7R-Cm__2rM=u2D! z`q})BFPp}nYCFXuJN}d4nFb0(X8OEt%fC*4;i8G4bVzvT9+qO6KnBco*>h?!4efx0 z58NW6%LB!M`C+Pv37f=-&z|c{7`%P58k5?8G&2o~RxrbWKJXqkD;D9NT3bvp53$F5 ze7!2yS_L)eUrvZSfk*H+z4YXZ_*uR2>G@%2x;@#cNi$o(ReI(AOQqO&LE_!S{f)9> z$$g!S#iQ98^y*g5k)<5^! zZ@mE0HmDW(Koh@Kk&dqn_CJoPlWW97X8#Vguy9EHLYoeq-4~vS6+A6>T2Z=Fk0$Hc zEGN|tHhkede_J zagW2F%a#U@5^)V03p=$45w;H|HgGh4aujJ2~!kYNf z(1-}pt823@a?jK;;}WSzC=w%!mQOSpo(SR(ys-MNFxkTh_1cnrmy@WAt&I%N%VG2U z9`AEM1?GQ$F+N|x?6JTSiEz**AX;t1*TCIZ13~ti%o7N*fAh7Snz&=P z1#$~ljt22rw9NSic7e)7a3ea9dUYu3PT$NH ze7ds}ex)*7Y z#5L@C!!jQa9wjf=s%>Ie8tB?k0)d<>)fAa<+^#0l!wzDQYG9Xg=d0?{Q6!xo==?0U zw1|YsyqKd#9aDiR4*gVU9Gh(V-UX6q?9LgA)(mQr37ECUfs61AisgbrVHd{_wA zw~$|DQwK#MpYE9-`_90>VMj|cYqhw$(n;HgA!xy9>MIWm)a~fz0K0>~2HiGb&k1Ty z@ovJ1{*V&(m(4(42vLJ)#y5_v1fUtp2oSvI*63{e(9-l6*E*bIU$4Y%y+{e-OuMJ7K?KReZ(y^yKB?p4 z{d|FISS&>AkU&u~6}P5G&_~Is;{U}pAia?n&~mgeq_Xz0*`jdBn9DAspJE;U)9fa=$Y1FX z0HsmF!LJSpsVAzo%nDWO4|%+`HzKW6sqL#`p_JLQQ)rN1^6Ex(pFXqr)F_VgjW3;X zJy4Bhc4BVAu~AHv>YP9X5&)C9B@12sVZ(RoV?>H`1O$z^we+wEc#gH0T1u%<={y<5 zZ|6zE^iSkk@E%O`bSQGa+%pcLy=IiY9NoUzrN#Y7DhZnX4j`4;YNNIB_t&u;a4Z_ zys5jhyqzalp9BqiLw`&(U|q1ZB1zq)0KA02N2t+%z-Um3^q)%mHsE}dBWvxB%Y#xK zR(l>^S-Ycf9FzUP=hR$1_M)-aGPRm&PHW6xFik}#K`z6SHJtJSe;~0^leN6kydu}j z_#_!A^^utI{+UtFb(L%r^zG+lpTMhLG%k&OnF=SHKr%Hfq~V@ZrW(Qfm;(WK}tV z_sYQ^a2n^eM^*O3hmxMnn9(Eq!mphp+9toA82?+rGHGKoqdoVrM{rBM`CUv~We3r*#;q(~ zcmrMqGrFg7w%lop!5R=S((i75;E-oeYe<0}PVL^QIXbg>+g>P(L_R{P&@PkKV13_h z!+WvlaR1DgDsR|&DGi80@aNr+FsOC^4_GYslD` zi^t%n1gJs|cEdCAEwghd`AEuD+ar`@tHs^H&bmtqb#tz;_Fh@uPjkzH>9R53^@PyV zySytfIXsV%fKyZD0hXEJZVM-?a(3ZPWh83=AqHqhW+ud281{FeBEq1rY2W6zSZ1R! znSMX9e0aG2QH6caIy@?)z3a853J~4XVh+!_MipX;Jl|>|9F1X{%5J1iyrhjYRDUZw zA+^^)+Tqj!3BZ>_fQp78ARBd{CO%)+RW!;&-!~bp$&pmJ4G%>RKswsyk01|*4zFU8k85`Fwrjp- zH%<+)WAM#(L^=W*=Kr;^iT_6P-3=JV4Vk=nQ z5m1l}ykeIFa{UZE#sstFzs;A%=akskYz!Y1`Q8|6ADY&T(h>dE(sQ( zgm7$BLiM0LF69d#So1g+^YIL{GgzNmo0t(2T*B3lUK%+nR z8#gDR0l05THC@ZfPBqdGoEjm|keu?~)2H|OE*B3LwSAh9X=vW(p3NUVO zrFZN2Q6t#ze6fyt$p{s~=nTtCZCkhm?s}}^dl+cXfYm^KcCB_d$sZ4HkEG`iP2@3` zXvIJTibSaBGU3}91a~eKP*kZWj<}i5&XHnhV#i6NFdvXOtquv_EA^X{eWCpe>cL(% zU=s0a)grJcJJvZE_fF1|vd z8MpjWL!&An5HZD-dLmyiWdSg%W3JXB4hS-yD)l#!fY4}T;incC%YIqI)Miau$jABW zQgORWoxm_Q+DIOX%|AI_daodU@EKA6;;a}BH zPpW$GB;ce}AOforL%gH0RZkViZ|<{V4T7WJF%wC0Q7qIZ&|TQ$jJ}A{9DiFPP0Is- z@Ie0F-BBm*eVN(KjDN@_4(cDO%$&zz6vAsimEFS&Vdr9_FC|IsAo>N_J%m^9J?82w2ko9s9HJq_0x$1f9VEeHES60Lx~o;1nTX z{m?%WL)<>UG36DSh@Jcw4XO``y}grzt5+l3ceT2C)Y8aO!4}FoZMv0zPTajMdLN3RxZ+5^<4kT3VB-KlWr0 zn*L*1epEs`f&`=b8NM;z{=B-5f;3pFlFys-TfE&dLeF26-DOH+udKs>8BiIL+`CxsK~DB# z_oo(35!AJgnb8AsZ0ZUJUme`A?H4Jz9VKrK5&-({J`CP7OkyI3`K z5bV!xdp2EFXHraq^=8QyG&J5=v=FF58+u1Xn;^ye<|g;00r5M^|Kx6bh4S-xeO=)E zRJ;Yp=+vVe73a2QR`4aWq~?2U7PMwE-{&&uM>x6#If<(a7h zcv0cqVb}OwaJr-O>jW)*etNcy$xeJ`J$JWF1BIHO&Sl_l2&QPU^U6eO96>g{&JL77 z$hN$uSvUxKHcQ9IqXHofgM!Jf8(&OcR%rDK_ZAnoWVP%+E;0hskqMq^)_e zL)GFH%d*CvUiVl@=JR!kU0M|DZEm&_flY(zfv}?@>LMT1L_0kNo!3I%_=e=j^yT$iSKF`_EXf&=tzS**6@tAcwm4MdN~U zb$<->Dqzg@z=-}8>sa|)^*O9$(dgr2GRh|WlI8H*dLioST&faKL%$SCgst%w*p#i< ztSf08aAk8@=H}?e7{oK$c|HXdat=;51)N}cY6%)?sz^uK&X3l1w~(j%+i%)~+f8BN ziXe7hbWCci;N!FqR0}DS_Jpv6rkTmX9-%^7ID^yJ@y{gwdk90)9G2e`f-KQ7u`X{~raXHIDIk;n12y)(3G9H&sB)+)V zoa>+zv6qFQYhQHnSM9AZ;cUBNl*`WQ(f@Z`1lm^ZmmMo8g42b@pp58_xUiSgDD`MG z%|e9Xm+0n|(7@l(1ONnv-t7ta4jmJk7m5niddNMidY}aVUDrbLj zOwgsu?itIbSAT3jiL~N(#>nQUnEJF-I+^(*#c8E{)R|nD1{lyxeR8P~Lxho5Oxd9A z7y|xuqKV7U^33qh(t9qQM=GVrCs2??LnN=`xd8X$b?Q;x39a4HHL+Q8@Evh1x>&;>4lI^|HOrrZ>*u( zJX)^G+lIiGng#7>3b~d5GZ*3ho3KYS+DDnigYCR(*_0vKiR#Ap!^` z+$v;&f(9M>3RctbhH^Nx0IFFFZ1W-{@!6D-`}!8SCVw;kQx=aRwlW;^wL7G;omp3R zcCsn!qOAb*&`+-jr{&RDpL_-*CM*<;R8@n_$bh)QDu&^k8JjfAa6OaB!er2>pCGd| z1ER#;cP-PihCmj=4T5&xG7|HEIxiF%k=)(tH82b|$m}sA^i7X(<5?s|qRVhp+$PZv zZ_VKLX)a}U8$UBfAm;L<>(c)OBVC441ed|HgKO8d(oauIgGHVaWh(iEz3s)=B5{VP zkfyT-cmgiOd&i1b125{yyeBtSIHjJj5qE2US`I6XDn{@4)2$DBIabxH=L{_>X;wfu zLezM>&L_NnWA`+$kWGjBzM$Hc#jHQ{hjW|dep&|W5NfX0$^nGfFjm=hdO9AaGLtS# z4zEdyP#tyGNwU~Cn{R*Auxr!y%h(KfqC`e!AHTJsg#(fz?QG8ljh&eYbK|vTZhH|3 zsI2`5UPh0?*DU@;=7PiUn66VODF<6BjCbm5?9BbXz2e$6OqE<>%+9J-lM6>W7~O-= z8FXtIBVKR8Kdb6Wk%?ezg)Oj6oJ++tW6`F`p<&W*l|k0$CwOTniSM|fxBwwjbY0H? z){c(d?%x~LuT-G*DU5t$pp@e96401_0Hv&ip5WCx%P2z3-lpJ(1`mftWf4t(Uk;gO zz%ho}m{rCyeNBj!(RLD3Oj$$-I(;GX_)^0a1JwgvNAWKthqpLcy*V8I*Z!} z(N$FSWatQ(g?1Bn{;>{N9giVNNQXd`Lr2C3&~)sn^-?W8zy5%1aVNag_+0uN%_~4) z%6`$ZHEx3t9^E^Df9H0)`PPV30VlvbX{$bK60tz;_P$ChZ)|*HD)^~(cpcdE1`Kjj<96{5U$LXe$y81N`&=)`> zDw@Ke3p)xObRMUS+je_?Y2K+pYbLs{TUmz%!&K(>wYDO8tZc&-3<-V|t*QJIHE*Eq z7W+dk80U$kfLd;Neqj<#TV$@p7U^gJ(*s(w0G(1{k*1*A^@7P>{pu7Jhu>ynk^1py zkQ)+j|GbQGW+J?X0wSfrLzoJlU~P^x9|#L^W$?1QoA~?i@$wbgh3>Y8((=~U+(s%q z+&t9hyF2-uqqIn^OQ{-v{D{?0HgLAyWDWFya`318x=z&2*?u+=qmY<0tWCfgAL>kvPyH2?F&{<1CPSK}xMB!&?L@yl2R2W; zqaIhNc?zEYf1j2TzZ+6zLb#)*$j%~JFv5fKZ;<1_RqZl!F`H0tVnTd!)Q#N@#>BtZ zcTa|2pjB4>!H^>}MDs>)EQB=YE9N(lhvmRlMwBkwhGrZaN{hNogMgVpqy-Bd!-L4t z5ZaYSqOf-OqY&Dr$8t4YUlHCh9RnaMwQK*VS=Me>46^0ejgzV0AiY=t4demWYPM&) zW1*!>0L?eR@2J?bA)V!qZQPUN4;G{(FdP;vRjDn9ddzpgLF1QChcgRLQb3Ao4-Vvli1I6UX62PHgha^ed)1 z-gn8`@;5t2u%1m0eOTec1wdsx%YdfXgBoND4FBpV{Ne&_oM-0 z50FY3Adf=_u|hxMs0Cd4Nx83SUJwep-Z!@<0Z?;^%p;im$pCNjhQIbCNxp z0M#d?!A7UsW5so?;h01ejNT!;$oQMvTP0}|G^dXT&DIiiabt^>AX*@}zM zO5gbFk`x`We&C@pk+w#AKInc26@^1U0{M&zq?h&~UkIpz(mY*OXQN`i(j_iJGj%d< z9ck>FN`L+QL*Y_BE{ob$I`~lSv)Zv_B$Yg(JaML8?@LV#FrogEMxO@x)9QXpUMvME zj+F9kbI6g3+}>I{IMtxAf(_PjYUe;{?H{VK+f}v_I{>5|aPVX{f9PKnsCEHd|3Cn0 z0Zr$i-%+x^mJZ9%qYuF|qV+E}CQJFw4eWT`t9)_ro}l2mvXIE4v#&?z#7_he!yq>2 z)!+cr_r-wSpgzv7yGPAa%PTfmuRr5+nr;;>QnzPF`R{x#Pub^cDHcWDQ*rhkzyN#) z9YdC7SUCG0%2M;Qupv(?CV-`cCJcP87oh<<<@&id4_v1dF9>=vaZm#4|A~ni z!+#8}88#pT;-F?)9MQ1kXDyt7L7j2UYSiBh**o7MRagJYU9N^-=)>M@>dOI<{OKaW z@?Sc{kLpf$r*V$couG4U^@tOx&)#wSS>)9aqR@aj+eMu#SYqTUK<`@_2i|1ROwXpk zCkEX^eAn{iM^K#h%^>)SeLa(Wm_D!tHLFe$vK@I-00OW%O57BeO_|XqKuq$d3KjvJ zYreP83q}qJf!?9{bs&)S<%s)>lgJ$^a zm6B+mssKU5wUQsAGh-d{Gg<~ze%VY%p~4Q_`U^=L;CivXWB0aub@;F;1Dm=;(XgX8 zNBB5W(-Db>w6?!*ZB7XHr@y&ChB2upXYj;hHS0+I$bTxh8aWRdy;_lBZ!{(nTbww6 z7Yl||KVT0{3-pKmjUHDS9ile0EBL>R#|Oy$KYiW?!@XXI6E_Yb;tpojyaF*G^gC6J z@aFq2mAe_+Yh$r-E1G0iJKNivnMa-!ZzwrK-RyT*_35qP~WoCsyR@iAXvPH z>Xc?yVG=nz%fcs|S8271o~8*^KjLM^3CwZ{L3!PE&a34#FFiJxXU8##AEtQ%w5&;k zg@LMk7*CnjgM8Xt_gZ$=?Bi$laYrck3o=o3?OE9q5W|6R;a!?`_41MQ2dlXIW7YZ# ziG5g&t2b$LdU9h#T527`n0JGhB@B!ALoh8a$ohy@#LDw7!O9aW(V#9wUsWxvrfm9o zRh|3EH+7)0X+4jHeW!I*%uoe93c$XtRuyeZ(J6-_pYzyytm_{zSi=#$8BAqT6R{QG zZEczHysu6g#6NusClMPE_-jIbFO?tw6$^(Z-R+mR$Hc(DhWn-1jh0ErF}*Z0XAq*B zgC+(_DWl_WvD&$fzH&pv|V}cMS_-J@!XSXH3~3cGr#K6{-i+F z?g7EW6bekn?;p5lY>W+@U7VE4g4m=FdGV-&x*XTkYlYg|m-V)_Z)E{JbB8Va;tB=`MwmPq@^P(Exr&mIb)NYR=o=9W?f4~E zYIt&;gzbf1uq>I02oW_vBo(D50$#Btmn%lr1D;M*NBsO39YIpwFa4SidNU#gDhbaa@uB%eQ-qcE)U5ok;Q0-=l#5 zv<<6Jh-~qD0RM*1I%=f?ib+h46T8!pebKNTy@_3B3}jX9w^*o~`}t>UZxx_d5*6x6 zj?UMvUOTBIDieqXE!r;zxA11x9xCQsRt{g}3`Z0PYgT~Agm2nZ*1)`(T7C_`X*V%~ zmiA+@ZO(n4I~D~(@ebQ5nv3-0X+DTkd*~tzv#S-`eA2)w1-l+*;@cVk=d@6qA5`Dv zMT?Z-Uan;LBQ+2ZKB4NC3)Eb~nivpB5m5v2JbbrFA>;zWySczTbvE4VybQ=}oyf-n z%6BZ~!Z&@2pe}Ae&z~Sz!5Cs2qYmd>PbMkJmC5?C0;{UBDChx&Byj-|Xw@9uh3bVC zEFtC|tY@&@S2GM_$n+u)Rq$oNw>mE@asWQ#h{1>rOcG~NZpLF(|{>K?4)e`dThRhdsjD6z!8eniPf3*z7Y6;3uE_MDDBM;u}2mq@WP0b!34w_+E;uNT?67s@tpY|iM3Ys z1QRS5s+f;QGlrs&udh*EDon)5OD&p-(650DZECgl4ra-u*bwI6v8G=KFP%|y!zeXh zK}t1=ako}sJK8K}d%aoDONdW~VE`y1+;;Ry_Xs^lMl7IP|~fW zl#+!yLKk9V_r8P}46oi*tPq7VGGQ7wYy+s)7OKGq0xihNcJ&Ej-Ydamijptw|kBW*N|bB71ImH1XED7aK&yFekOy|lVhbnS4?3`vU60QHBA z$#uxwFjB5609`HyNX2)XmNLekp@3WI<#Hj&8Nj7$Tdp{(nx+F#ll`!m$X>0C;uRW< zIQy5)!pieD-TDy__9#5cu3b%r<}IQ2 zAHOM8{9t-;n^k5!QF3HaNU`sTV)#OF_)TN-4P)wO(9v`XEZ4+(4 zRT^?JiSH4#ufxbZm|qUMW+0C=7G)A3snHUvOCo%ikeaMlcs$+w^rnQ+Idoj3$iDmG zw8|S66fTE(=RGDhi2lI4Fv@TU&n7en8%G%+9}-)f_`jQPdBUDyB8-beKrQ1vn;T8; zLN4EJpGBNf63P1oetxToQSwa|wz^YQ#^|Uagk_gj$HFt$;42ltJF!Z%#Ptovd=^G* zbeJp@$5#+1wny}-ZjPFylTB~RI$|+l)%ux0?AnVu$2AQedYj5P2*^8AfNT0|@wBV; za2jU$ANM^>t5J=_-Jor z7ek*<`crI`2uaSn)Sdki2Vho3q`m52&(nv)z@3GyOObh36h9!HLjZFk3&HZY=n?j` zm`B)~t>$xSK{kcOnhYb#NrvR5kpm=+_MyH#kSyfNto6-MdI{O~+BuWtTq(KS+m z7k3$i!Ygio(6>9AS9|Ko~$Rur8^V+MV%R0aMp!&g@7j)_;6 zkc=|Jbd@t$z;|6;n#u)b;0(kc16X1@%R@wQZCCmD=NK8l+$xkHgCle~x2WBdK)N%f zG)n(Zc&!KKgjQV9%xLfVOM{@PmIkhwUQ{;=M`4#VeyQ3tvA4w+t~3sIj!3B_hAb$x;m(PopMW7#CQ=05K;0MjB`) zKEvZ;`~APJW0|Mrt@?MzAU;$Geq&10-)30wu#{1K7V3^R5qS&f>xB#Rq#)0L&`v&w zBgW5?zZwqpk-Pu`E!jnn&oyi3d3K(tDmYHrA@9DvDkx4?^Hdx02@kS908sVzBv#k^Nf6kKYLCvD z#8M(7IdkZIaG8vZoR5n))bc6MSE-~j7|S^)O~`LGP%O~X(o?6yKv%3oY=URV#7VJl z)yXIfl}MWIM=LT%!s)-Ol}Qz10^+$WYQ%W!4qGBG371hJ2E-~wf{0W=Qa z`Nwhv0h_Ww6lgAW*+h;K?eS8@=Pw^to>P^>x-=6|iR!dEs5HtuiWA~=La4BcBq~E{ zWpohByFM5tTlk3w$z@|fe|Mh(>UaF`%J?B}K_<|= zOl63adHht?1_GrbLMkeK^94G`9Ca$SWK{|nZ|K~i6YqNe9JAhtBWyp%U1s^E%5DF(*;kyK}JEuU73&Q%d4O*5Oo>WYQ;UFpi{YjX6>@eg;V2$GQv5hK6on zB?(Cjtesw97>4N{?0H#bnURE&RZmmwS(!j6ZfFZxF8Y&c_@z3KcDY95=;Q_hk%#RQ z+d8Ea46YzE48>ApejP1F~SEIW@tluawp;|hcCq4%58WAvmq~h>xi5Q+| zhtaOlVxLB2mvqK)?^w2k-J&4q@`A=X08>EgE44BY% zR4(&TR4VyDcyNo-*xTAp{9UB+MvPJQ3qhURV8fMHpnTb~0l&1ro9G7Tjmx3*-970n ziA%3dmi5Qyp;e@q=l}}QIBnV-!n;67X^f+@08j&RNX&dD&Rs2>L-ve2^77ynGztz1m<0!Uwe1az^dssZ4 z7(LYQ-Y_;wx-pFKiT~&bLbMLJG~n7D5EXLf&?UZ#VnJf<6sW_pV2 z{SX6s{i8lNofo;QLa>X<9yNz9um@rAR>i6o50}gEYsGweeZxV(;{Yy_R(*|)UU*D< zTt{&2d%jlRwTo!IVr2b4UJ3R9!us!cmZ#J&Hw;RluF^a0WjU^o-eqK#Zq?FZh3Ow1 zkVPIM&ym~rxX{rD$_N7sW10%efq1b$#&&1aoc1oBQF{{Q`4gg;Lu zK#ykGPwm_*Y{5P_0>Bm)&DkyXG1Dd0OgxQOk{~s&D{+aW6Z>eM3A*&kwdS5W@~^Vr zKn#~PI%nU(F)Lnq#Kb9-uRJXxv!%wuUgMxME^NzG0U_I95lxZB*Qojqw)23~K^U9p z|00rn+WWO(d8%Aj&>)daIOhi!+M3OG=<-w9JR=yC8UZVn*dIl38A-8#L$)g>R*EKp z(IMlUdRdBP02?vWWz7NY0T>11#Woolaf{s{tlE`H=nt*s>tjs$8-li&fzw`jnF0LD(-#$sPjc-3TQAV{ z>;Q|4-+Sq*gX94DL7XY!;whB$xm$!_p%RiMI4L1^4yL1%&3)AE}eulKYWVZ zz0qX6{v-1QO@AIKO5PK};#Gp;d@gf0^ssUu{30Lxrj>0)_`lpx|quCghhiIyC+M_NB1sJP$`FB~u{vRP13 zj^48lH3+4gvWDJ(Z)R~q$sN9aJCs4!JswG6&vwYdt^x*uyOv1W_c$`iQ8KP*IVlxe zJ)A%A4z$?|6e*S~vYI8`uF2sX@;Q16vU?r*DhoqgAiJ*ej4=hK`BwFtFMJBD3w!TS z<6>D73&(wT-KTM)7P@j_WejkFwECV#G#7M@>76CjpIRwT6BcpHs(>)inuG)-ivbF0 zKM&Yeik#-|$u3Y!D&S12>~C}y+PQ>`)MuAQr8o=}BXdCS?3s1PJ6N90t(s8CRL*M`7m8_gCjr-hbS^^Du)w~h%}+D`YE&X88!rZv4QC57bU)y< zylmgY?3@D)wdWPGZB^(2g{dL>_xidC@M_8{H~ek%dPsAk#x~RDb3ssnmB^FYy{O;5 zjk1S9LHk_R|X1{kiZx8YH=RD(l&cTgQ4Ov3I1L)x`?S!6Fn*U zba-7do^vGHu7c5e=&IjD<%E*R-r%9e;efM zpQMS9@Z0V;Ffp34uF2;tD3RP9l+AFrWmW{5EU}OM53VJVdH{o8Sb_ku^>BW^czd_; z91T3SK{kJWY-Usynn+w*=)7?}AXL)&ico&mOOVWiSFOF9lsX|V505GY=RHq!6J>QZ zlgqtnoJeJI6bkEMn&NYSi2yJy3imgXpBP@hy)3Iz{T-)k;D9~`L>7fDRlcdK%%qg1 zlY*mkJCwY}U)A4nKM|?XH2&x#b%mgHO#G_6vr^iV3$O4Px}8639=F^#K?+$XeL8Xk_Co za{^X*&=rq=t02n};cpPh+Ba)$EH=)p^7i_sb^`4^*4#HbCf`Tp_HE*SsiLVCysW)I zJ^u3iD}Biu=&?89X1bzw^x|;*ETZ$nIkxV7vS7(zCZd@lz{DzjRK8st9p$BSJT183 zp!D|ZAQU}Z)QaQiV6Qi-`|nwsG8=lPVjvr?gC1+fnh1zk>gkRm zX(oXV+i;qvQjtBsDywq!a|NWC(a1qX<~<9xFi%upveVt6JPKLtpGhr92y zwTDLPt+E~g8_7!M^Ngl3_WBucj1*Q`0~5K}`Uhy4GPlv?Be$&V*Ijy#J?g2t{fV;^p8x&8Z6@V2>SEVDL&%|h1H)s=^{+llttl%%2fy{EkGgJ zvy7|BIg()h6+}cP+jN$!Y`-*Pd}xD(H;XBd*{OMB(gDippdEj-4-Pe9VnhO)&2Ud$ zlvhW^sb;3RHA6DKf{X^3=(^tXgaOitHD(BHQaW2`d2br#x+Au?EAwQlAE^ruCi=d< z2#GY+dzB(-9XZNT3B<|Rdw&s7x*%lPEa-QdhBMvLMc3^gkIduHfupZdinqZ2$4yXP zsIKZk;N}_7PRxNcq})9+MgQHyMtkRNfkg?D^#r)QV|2X5D}XltHS^eoCY&(c6eK#I z^EbF;7Gf2hUfe9GDss8vtzGZ0iyr}TAV_a%O<70*ymSDY?Eonb)r#rji>2G`qxmrdut_ahNRP=!hx8 zLV{}?%o;7T6%i2%UjgMFOkr91(e`VpL_KH07^*brm~;E1hFqMc{0}PXDB!Os2w>4g z7zU(BwOL{MXgD~8gCDo;<_AMfDo?82R=*}m zYw@Vfy}AsX>J1QeY&Wy{n62=%}a(*#$K+FdM0)?>L#)pbF{iILW*wtQ=Z2jHDi`(nKOlvq!LbEmxbP~69 zcy)Gkwy9wmAcjuJ-q5W4aCjQwBD^E;lHpLp@1uMmk$uGIsN6%HhkO$9bL?(p3zqm_n43_02XU03Y8448ryXcDI_=f0UM97ZO%x6^ zIPnr+v>FtT!vkI|Iwpmi0-d)rwN7|DB9^18$>}2? z#h@YwP+o`QWf>If$U77|k%=PuU1>vN$KGfiMyAfZMYJMYg2weqw90rpOPc-tNCIF@}-8NgS!G7eU6htvlG){xOf9p}h}+y@BC z{}^(*UD-Zy2u+CqY975o$Px@Zo7y-mP;7MCw9u`laR|n;IR8Xv%rYw;U;l|JCC`qG zA2{^n(bMxDi4I{WLbRb7Ujd~7pXLTuw6Du-f$C$qnM+Y?IgW~aF&~(@%$_tUQ*7HL zCtc^QYX8rg@xIn<7#78lHmXT&{e_HXNoB$(1W&ku2>J%QdbR~r6+I?~4x#d^by=cpMffTBl8k_7+&?8&=6@{-)B9{c6%3 zUrmf>R!5sEzzoY8A?=9 zDwjY$)v*@1y9!7GszwtZkP&2RXelVq(CEqx{;%P~R`r5P$%{jHTx3QKwy@mCPA4*_ zWl~CTXA2G}o-Z&HljQ!GwR)Lny|h!*Q_Py^1@10C_9eS+Skhj0wBl7cXa7+-JZdk9 zryqh8TYiUqCxGz3(5U}fME%5vv)G2Ro+iWu=UZdfV(?5*io<6y^Xl6$onj827E)aV zTL1YLoc`#k;DNiCU)1odh-M!XI-yP4QtxPVS1UF_leZBtKi zS>YqmF4qK(3@gJ{Ru85g8m7*WNw>TAC=VwkuNy(Wi+&oDQTqyV6m4zK*NSx8XA|Hx zQgxAKoo0_`n;2oia~8(+8w;A-9+Cc}(j}9aG7piC{m2P1-B9g*n?b3+ZCtu58Vc^f#OS5g)p&)X|tVc9r9gHNzG2{?tAYwNHn4F#w8I{=ZA9kU3vkb0p&% zs?O7q#TZ8i-uRlsBU>pV)|}+$pLw`mw-mz(0G=Wq4vzN;iwZwR`wvILb`|<&e7eeR zC=ogBC9w)d9$$M9K6Mp8bFmS<#i(8lywManEVmXj$%z6bcSm~CNRK@3SHrn~iu3Cb z5PQ&;F0Nbqf+Wu5F&wcN;_BAzj#D!8cm2QpEgL-{tz<@OHV)TJ8V5mm4u{rQqJP}% zv!kFwj`%LGuxvOpNc3n~mgeS(4$U{E(@?eh{Lj8}U6Asww8H+|Kz_#pu(qgZ!n}D1C_6nOMXItmKZ8$J3LiT;I}&{v zB5ZF6AV)%cV8v>Q6TGUi_ttK`Ar1;c(-n&n>u@ng;apr~@We(iCqHsW%2YhRM+@-3 zA=v}sm9knIXR)B`poa%y-8%V51(HDFdod)7C}S6OfC37<^8E#u2hA3>*6JhWu` zi%e5?@`;Sdwupo!waqLYQ@fEQ;#D>kFf}TE0@EyTNM9HXq5&z!*_LJ{!fJG5f@s4p zG7ziu$qb8G6<;y{Djt59vVqa~eUP~gvkIAGpN-$#69Z_jG{-~srg8A8lJQ0ebzW()S9F9M-WsK?IWzn1G z-NIim>s==dn~53I=DDS3a?!^7K_~i@zG~n1{akkit2f*^XHcyZY6;>vOE?#hry)AP z-@F|zFH2iIs>k&YT)9$`OQs7h9W5JDBR|FM9drkVrBvD;Un!XR`A|~C3taLQBFp%) z9dQ*Wfs{*M#+X_0t4tC{tc>bAIO+GjS>2xVj0y1NUPe%R10A&)9*KmC%(KQ^#t;9 zC>aQA_7CSn@Q}keY$_+V;asu}^8&?9RDrFT?d`8griMz5MG}^o(U69LS8;?tPpJR< z94xIfe#TF8ARr%NmB*22`u@m%99~PSOw>N8UG6-r0nKVd;z~cO=1z244NL(3jP8#7 z=93?rTX%*!5+N@0rbY0rQZch2g4Ui%?VZ)vA)@n;B(mx~*4!>GvJ<+8{O?&KNDBXs zqk*`No?fFuz9P5AE=vpS1^D)F0X6+ToY!krd>W|=t2CT<^lh8UHWMr}i_>?iV~JvT zwJ~k<-;?={AAqgPrhpdO1c~qcmIhqjE&E?#S}KPwmG4+Cf89b>+^X)r&gwJn+9EM) zh9SDdR6O^B9k1$C<#an2F&iH@I`7znY4KppUl2 zVTCYLsDsD6S(xO+Ku*o-LdKq_<#8j^bmWUKsGfk_#g7~X?TIN3DiyVe6)6>Q!*o@} z1mnM$5ImdERns}1Pm^`hsQ9327o&E+h$5C@&;X?G<4!7Vmeaz*T$`Wk%C`;ygHWs?JUb`$;HZt#pSw)G@(TtGxLUarhk0Lh@BFrwZ%7CWIp3cM zrn@B1u=ln|wim{Nyp!18QyMW8`rt_-{D4+W-8i>!&MeuIuFEzH_g6Jh$&A01f zxzwz~M61j2UZo_5riKZLl`rh3MqH5Ui{)tC!MaTFH*`yl=)(c$W|^?AK$p8Dxc238E5>-o{c?8SHvrQ?X0koKI7`>XU@b|xSA>XM%j4d3_UEoz2VVe)!d;MJ&eHi@q}s^ z@vGS9@c(Z2OxapvtklzBgs~Z(K7r+H=KO7uiKmot!?dnW%x7fF9bMB~eg;8-V&qha z;(1d3Sw|<~serZ>Tf zxlriEso!E|d(SJ_zteWqz$4sLocg=J_K++X8V>75buvtz!7ertIB)zE3?ZGLnI&ZQ z!bBXZh^tdec1qz32C>w39GyZ)Hy zVY2^DcIDc0^qQXn)fRB1DYNw=V^lI^FB=(5uAWx|6IJ?<40+7x%VUMtp9=7ZE+qBl z%L$%bi$J;Vl)i_9>5c$mvq=!gz{Fd*qXJ3AMh&lL-THmmIgTJ0&;_=E zI(_3ncJ?5?AQvUwW?D*rX_`%)zt=hXH9$!u+%;(V3*crw7G3fDY4Qf1rVdT%|h z+i47tahP^iB(_7)=9Gt)2#Xi)e+F**L+iRLKldgZZ~1CnM1+4(g!8N#JWYL4kAdMU zSLqf^_7nyQ2t(d;MqqR^Rir`LdimB1c{BzeAP{Ns-)&aqF9Y42r@7)%(>}RYnu*X2 zGdgg<`3}vlz#|ift*lmmWE*l$BKEt(=j#=02hG_;tOdE&dka?5Dg3D*EysR&p8IS2 z3D;;4hCnS{#ABHp1t@}-d8FU;%kzpHpAoRhC7LoC|Gt7Zepe%;w7jJc;hWy1LNdWo z%AKOmbSeN5|B5<`#wXhRCu(WcB&SjB7`UB(A^y^crHLa>nH6P=2D&TPhypSN|MPWL z@Y&ob{9nI8z{>V^vZb>42R((lpRqQ@&zbHwSP4QTLf~3|Sk0rNDY}qB$MszLBzm^3 zNa_t@@)kdChK)sQyXG-Dqp^QQNG4`zx|JGK<~JAbDluQP?b+%8><7|Fzn{sqjZHE7 z=kCp119=GWT5-E%cevChnP42OIq(7_;@Hw_YYXovzY7QCXP$4xc!Z?umRr4e&;|NQ zv?s7tdKT#k+v|I0MWfrytn9MEJnFOPo5h%fZy0};E9@&5jo+`{CCj9fwMTAZT0L^s za~|=S?hTY~9Xe6<29ARTuQ$crZ&&;V0UM{B@{Y4}#({h^UdwMrp4BNo32yD2ssHP1 z21dT(ULNN-5Kt&`XJUnS?apM!4_?LGdyu3U^#jR9;zc&g19;Nq_=?|?G)%(Z`Sk9UOeU=5%PO`9X@)KxIE_rS57VAMcx|PSjK!CO{1==~p%2G9MFw=$;NEM=9 z2>?Jdod*^C!9 z7b)|G1hHlQg$o@T{R=>Z>bUJid%6|W-!8{aB5RRfuk*{#CgOlDlN2FCD|kzL!jg0J zh@%KSgy$Yyh?*pSuNX~W>Rz^y>+AD%u=E-SqHbq^_xqh=;o~Zh=s4TWokO?STx}nO z!Bwm<$R9QEvCa10q-mxXaPMv+QazR6J}E$eBrQxPH5yjH{WPX17ddT zr)6F7R@fQ2!L`?Ud#%{2qQodgUl;|BUTe?>RqMwQ|4?2U7p#;((AHUAZsr^VaTKz? z9)5wT_a`cRSI@--pE`h_(AGAyUpK6>{N9^xA231fnM6GHM41ML?oTl0#fhQU@>8_y zU2r|dKYRl};oxqXp9PHa2T2S6N(U%Ev0FM7QZ4?yLv+j^T&&|PK-O8GOfC%a)PF5c zFP)G@dwjp&QrqdM&p|yAbYqaJXfN(rXW5!JkJ{%z1@K$)S_LX?BC!yJw#5q^)gLyq zw_S#`M=fZ=u86Ac+o6$*crQ96S0PhPX(X4LQR-6;-6bCn;R-3xO)KL|56Ti~j5}IU z>~d*Q`z`f9n;X$?K46cfQhO@pLf1M|6h$RB!IjN`P`6%}9?mFoaHW5sQ}c#FaQz-N z+Ul;(y1FD;23k%}Cxp~`OXj@sY;&0GTblonv zw664-5Qe7c?+>K3CbSw8`fe4&7uND|R5Wg+C)`y%SQEQC(%Tj`E7@l5RYC_fblfFa zwUY;{9{zUp!o!NoaSA`*Z-5BLNDsMX%Gx@{IrS8rbj=s zd|7#6rA5X?I!$1-uCZh%oK%8xvH~J@J=;ru9(l)Ae00S{;Oi^uU|&^6qic20@ySGL z%JC9)Wm^|C84N4;7j)T4js8;|Q41AE7r+8TIe=sc2 zxg|c+@eM$0zGb!7w;R*aPLs>QG1-0AYp^UkZN?XD9-79%bfruu<9s3wre@7YMBw{d z+%xLNyFN{v{CFZ>8xQa!TclJ%+uf2r73;6Sio;E9qJk@{v)ot#dNiUdd|3YHV z&11rfR67q6*+8!V%}a3tsLbJLtI>Fc#W;;~?A~a*&%Ojf`=v;5#TSZ>K1Hi3oV2ms zZ;jIb$+`itn;iXap4GccaLyCU4pMCs=ZLw*XuBuTEfkITAvm!B$kzQEKeHJIlPvAgm?>r%){k*CCbm< z+a|JKAg0hTo0Hg~qOtCdsExH}ExHu3gj>!rF{uo{1bICO$)U+ALLeQ|-E&ntsGyg` zobltcR0E5*2tD3c{JYv)7)7-m)DQ#nr#dxuVz^6Ji6(0A5NPcIw*Xyctm%wMi2O32 zPB3@Fby6e*c38&;Ef?kLs8Ww|3kng@UkKqpC5BzHR_m*`eY~)k|NcAb zMqbxdh1K>2@%hGOrxNk7o}q1a)81`tu^YyRFgLl zd18nU#VeQgAM4xC$|v7%Q%p_F+No`>%pi)CQaq_KP!BFp^PW8iMc~q{d<@_aa$CL7 zKcx{_Ue@wZ@iUq3KM6*pUm?(PiZ?Wbc7ziiHIr%&W&L{GynPk0p(og-Zr_r} z4dx|72F^r78lc|ZHvBKq@bR*{)=G1WpIlY`2wbV; zE$Uk(CcR{H$1Zzssrxu*Z@2hYKml;rF3HdqxjN9#ZDl2zt}?8Qck+}0FB-ON0o5-u zQg{$UXOwO0G{+I@+2a0FSDDb*CY@nJ!iT$p?%W|{dBfjq@&%)U{+phrrMq1gzsW>C zC#q|%!rh)nLbTD6B9M>Cn$9aDr0C1E1Rf3_m5JwWSs&sqMr%~pdLd9Hixfq!HgQbX zBD!ICT_(A1QY2&cQAaQSxVInf+m7Nlw4Ji+KnGLkNKT4<^y4iRkOqgQow(fjWx)>} zucVay6@NGq%;EB#I6ojmVPBS!L2nB^ODjV4s_iRn{e7Cr4S~{d@o_2w-ZN;HQpI7g zr)>jU->hh;v)NkP_}BFg5L9rR+rrj7I89#)O>SJvZRG#Fj`1_Xf7SCCJNlZ501M^O zAVaM)@;w|;+jE=^+&jttk$!+jM7~DSYltP7t)NU`o`u}y!sJGjUQku(CJ*g~P#@+< zD3|rBw+E2fhyL>y4MK@-cBn+~JDmyzQ`Manb#%8nmN`M`VzW5c@v(85)I)LfUBios`=ucl>}J9xoi9pRxxErVo`g{ zE*pF-h}35zpQ2X>TjA>>GH2EU=y6odhz$VtG}Dd5a~^mM!NIPd5x!V8cr~`BmZA4> z#^p**wP6pDCs9;vgnuya_1x{fM~^f1vg@VOHWE|n<&?tGlt~;bu-ghXdorU<(u#0t z{K>1G(1Qo0<$9a{U2AVwuYqXf1;zT|8`dctM3q9SoJa}M{*mCB6(?OFXx=WrTEAGW zq@|`idk2cCUUnta`bV5guoOsB9bPUM$u+2A2I9VSa0n&Jjzlsc zL^uPVlZ6$`2D$^p0tBQ+159%Jq9ASZ$IF*}PUwkUuL0dEzM2D{N-Y{y?A+5wG*FIe z-~s(4&_Y4G^wLlUmXX&rhL)$+A4>)(8LjejV(mayp^81#5I~E86RN?kiPK+5l)0dK zVf8AB4TeiALIL`LRPUP#&y%r@n^GYR@VHaJarWGaAj2FM6kMa42{xBVaU^m>uDuJL zb5j#Fa9Ij4xZv3&IV2d9{9u2-Az4OB8~OOOn~!>OUf`{d(jld~={ipk?al%N0 z@qYWfhYg>>vTG>(OwHj||Gj%Ex7-dc_{gg4m19laCwYPpj{F%r*$aiI3=kx>> zM>PmbT;j#Yk^7dFpYEzn(t=fI#u30Py#yL*LU2H49a+`;>Lv@1Y^_+TOB#IUkQ4{=01rl1@R zBVumZ{R|Baz&ef%LaJKxu}iP>Lo|L7QL(-zX?`jLm{X$U)i!TP_>m@0tTONt`hUs~ za-Jj0KJF#B#X(so+{$t*)IuFjSmt~o{2{f2m`b_(?88Hd6Con?l4S)lQs7B3w+~Pb za+aKhYb+wgib^9ES$mPy@#nUl9u-|32$jr;lKy_-Y5oKxiaKA?&&|d0VrO@E=Pd(J zyaP8^L}EM1)@#8Cb&GZFLOcVIW(17jTLzV+9;e$=6xdp!r;gJ2i99AAL^WIm`yr^(PR_&5GdXA_LK z2jqclC<1Y?)l<41f(yT=n@v=##^8_~D(|_4oSb#h^n~Q6RZri|b7zMaTsok4#6(#G zse^^(9=jbg^#!K#!9fo|Ye?wc{+q5e(=XL6Bk!NobAvc{3^^H)(*VPBc)&M>@xO`x z1weOGdScWnZCihIW86`_A$e*$lh*ppBv!~ZK%^GsVGl;%4eUvRx9Sc)o%za81(?UD z3JAlP+laT$Ax^pkzcI>lOIk20=`SVkDw zym;wE(XEdR@At{z#qbS>+jj3_zrug^6xHhq>``} zT=i|rBZ&wU5O(TsQ4i9Q$o^wB24ujoaD9XS+2S>BhSdt4KYcE74K4SRc1qi5%CuM) z7-`3yMno#&_jS!pA%OQJw3;~3T)6{MyPor(XS1De?@O&m*y|)yQXQZOxo@>o z;t5nB6Q@buPe>oyKC)Ag8ZhTgq z$)f-TC5u!w@>)+3dqgd?{!7#2Q}-W*XmW`@y_R~@ z!>4ug-9PeB@Qoh4`ptiyaVOJwv{mApvg0;MkjldftV+BvQ=0nCs7^I%ek233`!~9s z+ygjx2G8BoA3yLYpW50G2}6~JT;*}G4v2#}e>#J!%P!Pd+fDQomRAA`Yn*rgYw4qz z&m`@yywe!27sQ|1u&Jt~tD;NT0N+nCO%|IL;S%!iZx^v{3u}k5NF9rZ%~BGm0RC$3 zF|sL7wDHX$ti{KR4z#4O;fIzoQ9n~UDcX55A(Oi@Y$b+?*Qn6{#3Msy9TOh^rbvjo z^B39-b{9D07v92`WsJhuEoF&#S~N^FiJ=t0Db!2KqF1CK6#9XQ(5KP#YBZIem>cpY z4;(I9_Kmp;`KN%XXtEsDYDuVH(EghQY5nMpMhDt4im*QC=GN0(aZ!*nIU+SHIP@zz zz(RC`oE-aI$PNTdj#rvC@qmdJtswwdfPrd5Uh-! zVOeC2DeZ1n=P`ucFYDXm+y4hIA2KIZMUIsK3+M=&!+AoVKetY`I|{C~+gUNhUcR*K z*Z{{D_b7y#NxuW$fo$N;4B{{;AJ#Y087W;y7ucH$YzXRc$r|r3&M7aJ2w5eY7^(}+ zFOFPxm=HxV^eo!Kk5(P^j6mRrb8so|LwIRLS=FHm9mJ%y(Hm%>0r($v2XUiRIYjkz z7V?lovRVz@{>stoBVbr`Xsm{vCQFdg(>Ef<&6+9p8b%aY?6Evn(qF20x$~jQ<8?tW z%hjj@Uej@vvQCSfhSk^4cK=(=ySBtR@s-)TyLym8+`6{zs=WztQ&81Mo8P=PgrUFF zjNBg*f>#Bwl|@EI$p~2kl$?ag_@B}*W0QanV^^h-yK^EPJBtfOm=`M*F#hras{Z#c z<+l=G-^VE4m}l9)ftIDbU)ea{0(_s8@&*Pv_N|od+AJW)aTM6~f6mwn7&d`%nW8662g5<@Zzq8dv+26d`e}HJu8%6JZ17X z>7~69ZeYe5*z+q>tZV#9M_&8Q47>ctQ3h>0R+ed}Ri|I_(eD;{5?_2?^j0BJcX~V% zj}()y)YKP|f5v$;$0q;C2?uoQ%&1hMqV9RS`3Ig|d$k*}T$$Rk>2W6KeFOf(I~d36 zq_**sR)<UVRAK(8uCuc$%Vu>MSt zSLwGZfu-;zVK=`IXZ*_bge@Gv*JqZ6bn^n$dKQ8noCi)IRaE-uxjG)kyFGk!0I@B} z{^$>21kg1FpY;9yUSs<)sX8Kcc!sSR+@blH#Hxk9u2Mv$6ilnlwNYBTvn9D}VZqF8 zs(-Htg!Gu%37)#+p8r9oGJ_(^kB{>?M_1XXVZ4MVLN>0(-lcXaLbk12dlHI1ZtDk& zQQ`R&J2%Lw=N>cg!DP+Zncno1@n{l*hzZiUzD%t5Q5RSJxCl)YayAa4e>bWI5MU;W z%@qHB11UF^(w%8p%KqVoHZXE}W`vY{#Ov-as^@%`}cMrX&m>p!REDsG>W@NxYJ#8d3x^>ns?8>5w=?RuU+lhkRo-1pCUV&sh+6D zCBA~XZ}_5OoUCC%iq~09Qv?T;DX8h1PmnFhj>fR)rc6lN1E_1EV0b^Q%}Fv14Hr4` zYFWQ&L(SLwPbUfY{UbnyKZ}4$_a?S01gAS;Lk4s7B*OR(8i^u|}`{AwwdBKWDCajFQVsYV2KIU_ljKeeySw9BS@Z@dwk zwK(4Rsc{1hXQ_&;jj;LD7ZG@pnFq-R5h)E)`etDXPW3@^@2*PHRzS1 z6MZ@+wxAO{&~A1WD}@`RF_gz*`JQRLXZSSqw$o*!PnTJ2CBaIH68Hxz?RkAnD=;EME{ z6>Qr~>(PYljW3^V4F96Uu%o{Ben@)7Culmp=m^7B5+sh+}W(Q)gj>*f97s{z;p*A+z@8o~ zVYL&%7ozH@-lA?^-@P;tAKjV}AKM~U%(q=cuGhTd;`A_D^VZ;$9{5Yr0THvF3r%D( zB>nf3*FDJ58loUQxsA%apHx%xi){5-=~O}trgO!qX{ou&!UQjxi)wIh9#5yiw?txP zfaT2W93%rRFz;{$h$v*3h*U5ZDC!1^U43c85k-1qChl1Zwf2=&ZTfkI%yEc9GWx&N z?8H}BqE0(?jAlxNUtRkon6sv&r-n$XVOa&``{Z)7!E#odU)rJ3nq+IAbh>yDG8@EF zgi#ol1;@s5E9oEXIP*{*v#e&N*L)IfQ^Ych77tw0npS4rzsY1Z>kJ0TlxPXxHkrWS4b`)=mSepS0I%@{88(*cxMpIjtaX>n$hyItO)hr?#7>fV3S#V z)!|pN@l@GsfRX;7a7ct%UH!orI1gc}1Ug-$s`Dex!*Ga$-rpRU!gJ)8cd)hZyb=B5 z{&iepMaKN987KxF9T!Z?r@Hfy_$L+l3&E}P2i?pe21u$( zk9w)4%Js0RM)vRCWT{<~G3MbdEi8R9^3WS48aDu`18h<68>Q$PDiE4srVlP-Q^pX3 z*|R`7TCRic^99j%BfLRn&xN?V8OePJKD7WRq%xg9(fs%vP2%@e#e7)oC{dK6kQ7bW z5TlI7VX#q)xOb$0Q?9Sq4y)o`ws7iSH1>vvqvY}YK-j?e>5JliVXkA~tWwVxTxH_M z*x{))xXXj$q43K=++`;)uMs>_$feo@878-cS22-LOV4OPLqsGD(>v~7Q?aKrwDT2c^v zdq%kdBOsUfU2xd*+YP!I<0 zzY!@L>qR>)t(3|ESK}%Ju-kZq3J&<`F5dKs3d~37Ar6YfgR@t(#pln|MrOmhU~5Fm z+`l}+1za%g=1Pf3yaWpQ3Od#i(<^Q^`sWJEPDyP2#Zo9@i|lB+s9s{d7jj4yKh~42~`0mZs)tWR1FkOKmi#Rms?2d8|>^j?XmAD1()!sujIHGlB-i zO@8x&H^%fr$Av5U0{BR%mF=8Gotwwc#9)9^pYas$JNSg*ax<GUUiu?)h^gf_5Jj#bt{Oi1$v09J$K22!1bZxg zc?`oSmA6^Np$i~yh)pqIV#jZAB=&(i28930b7h?%{weHhz}js*%~Y%BNSh*@2r7=mGP9p3%}-Qu8V>hm z1OnYd@Xyb5f5al!PqbbT-j5h$ay4}DT+t_|Q*Q+KEgaTHlb50W+ayge?Rm{;{Q2Jl8;SP zR}eVpF?Xd>?IM`Ah!xdmG-cceA6W#-(w?Z+6nP-Hk`Pn)u8hBe8-BPjPsyyeroGTQ z{;|B_K<_Ub;&D-Rjc-6k%%-~A)9fqWftE+_k7APkBs?|!>(^%24OIi5;xsJ`Z%kz8tjDu+RdYF^?cMFjg&wRM(#&YYVB=XmhZ&PviJ>+ zBkut?u+Ze|;8hg%3tP%zs`|)Q&-7)%t@P=|yKHXSs-5^WlqrF!9+uf0?=z5 zOCXMdKF^?~d(hG&NSP6Yj7WS&ByN2o*B-(1|35s2L>L3ofb-K&KMb71;1Si7mEeLK z+CWkxicYPyu|byE?ZfdPWGRfN>J80p{%jul_|-Oj$8*@9;tF`M+@csLQS_R| zs;Lnh#40NE332hqX-H@JMhBgfN_bs|w-J`cA2lW2cJvp@ zaWQNonCq{Arb6MNNBt?SfEqNP6`!Zo{F_n*Z|W2QZ~lJ(EMC7_ZNyf|CruB$rr9lV zDC9m=EYl=-dwaQV>8T(0~v?XTls@5>K_P)4lREU<2|z_!OKn~{voTo z63yN*wddidZc49cSkW~_TNz>rbmfh( zL$10+w)9?um{sF3Q#FgFVgHwV2~>k=b=!O#jFGf)3!u}oN)s^0)cg-Jgk7nY=f|D- zv|1nuHI(x2m*6a3ilUqr9GCQgtsLUyofyCkBA-ZbvNL7_&WkpQc1k8|SE!gd_-G68 zcgP7 z$2R_AlRFG}pggswO>YzW&9IOZc5wBz+<#Zk#J|+lBzmpv+BbzY=6RmA-7Tz}LEd15 zSZ>Ch-JXSrQ)QefXG5$nrb|s(&aw_N-#x? zFPfSLX5UN=f6Ppgh~=eCLVdn>LU{FIfYiR!$b3z71{MJ*2U8*`FBl03S?vJPIpk}@ z8Umw?lFL25Aq~Oc1Uve$yM^zsGd0Gln)$+TuTx3ms;}%;=+DYDLap5u)g_U&8@BB8 zGDzG7rew_Wchs^)_ehMh5%C~tRPle=k#@faSt0kAa2|!2R7U}Pmp zJ5Fc!%8|N9zzV?GX1t=XX3D%f465-~5VN zvYt^-s<@ZvJRH|jxDITs1G$!VZduCh(8&m>c^G3{1RJW}iXA1-rTBH^fuXrNI$ZZz z7QKDuv&U-5dIQXEd7@Mey#j6ow)P2RF{C)WskSLW7-Huu);Ekr`Ppv6{`cU8MHWKr z|4NZ;W!|xdzO0`Vbq?0)&Pi~*7)x^U8HP+;G_y^bym}a@IO#!|>zk;lAhO zIdgC?!(ut-~g~*bO@RmC`t44nI(EEZhOb6XV@aLV|`1{y=sSUL+ zntAE3D2(P}gNK1YqvZn-@Z*`O%9s;&r76g}?SfuC>rE_UU!)E>*pOK*-n7g)p-FMi zjH(}t&wz)SR_QZ5@Hh2|G3sBZ__)mz_x`|~&Uq5f)%~1O=tpED-FS^tF!~i)8QO-B zf3U29+k>Np$*qu60nqHpAy9pJWgu$XZ(iBSN=jm{ z2NeO!?2}bKAJv5QJNa%Dh}cO8oe!wa7qF0Isl|e5*Wh0z{c7FWOE99SwIFFxb5{wHsm7j zI=c{5%Wo4d=7Dc~c@<3TpXVW)g>nIE{g-QDWbL;E_l#Z-NLlyicGUqM7fL>$qz4;e z$t5A4VXe6_nZN@4xz3>5tmxcp@&2TFO^AJactz#y| z4q=?{QapIVb4>m-c??SnXQM=^N}UMOmJpdNLt`u(zQD+j`MnxFE_n!JtyI}vQ%G+N z_od6Uo0f0V`zX8yt|0$xs;(id`5G7y_PVL5fihVB8kdbw@d%&}jyLncNW%iJ<(xu= zYUtLO*1(^ii+V=yb?_a&hnZ!T$R_=R)^-a=igoP<9o2K1dbYmkHeVN)86cJr+sej4 zlfJbG;`^8qkj6lKjjJJxJtqc614Xtc>bw|SA#Qm>O#Z+$f+I*8@mNw(hjosME>wan zLHWOe@U6OdK3L_MAXk19v$j zPAs!jFa_x4Fm~%EB1}zm9I#spiv){By7H3Q?CI#O?yx#!Yn)OWDB*>T(3VElMrD;q zvz0YUTK`19B8D3u6scf{LUBd0jY!V{Cyw-trYnyGqPn26YUsVdKwDu*nqw)*R)LV_ z_t^&7{=2v7U;vvzZeu2O;LIhVdCMWH`*(A4-CKkr^595gik>)E=~4qWzpA!YSpkL2$E?+IMq=Mv=eI1 z#0Wm~)wJO9@4AXN>x}}#!WS5mbwgh=3>0rE6T}D+u_lMP;?L3~Vn|WSs)xcBi^#cB z6}mQXpio4FUqrYqzH&1DhLB=Mc56!;nIPBxk@K??l5;Sj-~7l4uw!Ar5?=iVn)Hsp zH)CgMvTm6fRLKo;&Pve&7fSw&iExD_wP4Q+1RdsHn_cXpR*j6V5<=Kyi8iGJWoLmM zv`!_ftHeOUTDz{32AeEIA?2qLb7HR!_6Q9dmeVU^PFUJMyY43v;w#0n^d;YYc++r~ z?&d1-uYrTO+OGKh2kQ?GYZiBX-_8nZ=zI2?DMOEkX<#O<0nC?lM`u&6avwi3n!SYq zgg2uHOAm&!5MyruJS)d5)<1&(3U!Eptb&m$0Va^VtDazhO1K0J)w=@fDKC4;U@x70 zKwuou0zxhK%rzGhSma5}XZ@hV^$d#emDAeF*N8Ykn6FsBEdIzrA}w^4b!x}Nd7UFL zfwZiN2@UrCTbL<-We)cu7;pR}Z zKrZ96auNlZrPkR1QCAvdg5z#}G8v6R&Bdu_b|;7Ro6>?tgm>7;atSE!|8aH?LArHO zc!0mQZQHhO+tzK{w{6>Y-?nYrwrv~vld5EzRHl1&YFF(uSnqn?W0oIk6!81aX(SHD zXwY#_Pc3~3+Z-H7SQbRPbQ8mhPY^TsJxG9)ddVv9@n>3;`f5+^F{emjda$=wz3qN&maB) ztPu|c-6)~H@2!qq)=d%N89-bA#jJq>AgOy>VWyinungY=6$kV0jFPK1;u&NF_wW6w2V-`m~Whi;7kmWobd>GKX z)s=0S(u*?e7^ecyxC>n#LfpUhZ@k`&6IlU4aQjqf(SBCB=4^b9_?r4ra7z zzZnwLC(MfJKwK;rQgu!V8ZrXfQ2mpT+1{h|QdO@(M>X)D_JoWQR-^Sq5TYCj{Bfxf z(R(FoLLI9|lbkJ~)cR(z6ghqr_5ZCu!NxIgR6@S`5@X#xM!3W9RMElbs$o|xc7wyL5Hl`|W&cR*HP->C1&W<{TbDtKC({kOcW2*HD&T%-63j{A&%O*GX}apZqpqX7?G}lNFqLG$d){@+ z841@u9}h`p8h~EB@Wh z7ox2UV6NQQzZsVc0`h_$h`E7MQN!85a9GTYc*=b7jbqVd+U9F-`a?kAc(RD;X}LA* z__{>#k&}lk>h&7DmmJq;fJYoCr32Hw6nn~t@*3j`N;~khm_d5zej4qyQ zcP1b&a#}0~^<0qfFtkG}Ox)uLMLm45GD>#lsVm`QhdG7@y>l{`E{Er&*n7uBG|M+R z&Mwau6b0)Akp*EU`<>_B82oJ5B!5VU`VK`M0?p|+B-w?~O{>g}BJ7)C@t>Y}nnAN> z!Rr~4un}rW!*{+SV^UweOY+7SK9Ql94dbww`{*g!>~MIq<#22I&;acfND$c@mz4EqJlM*;z5&)!*|1|z^FCLYRcltp;t+S$BJ{=_}K zkwa@G`Be=a!n0zpN2NVm5vX$iO+;99$$;%AstRW&C|X(?n!xS?7nSZjXjvkb{UcF|`r)M> zE+lB07&WPc75tp>bu}sjMBJ%fa)SOaZ(_&&l^7&{*Df0w( zht$yHpCfavSC8CRoZPQ8YES-|52x8P9HN7s#;n={7MUA{+?$St{f&=4{!NOXQ`YXo z7DwfxA>JH++*X>@k>1`r0?yeA$Z(2ZCUI~~ycV|LC9eXK8|k$|PV3AV7?@f67t(sn z=zuSU{sA^opAij+onO(nprLLv;|v>qh7^{20b<|V`EdTuV$g!yDKrh_E(-^~wv)?f zae|-{3K-IZ67*^>i@L4kS3%cmyS0Q#8k8sp+%a0^IlFI!HL8#5Lo&-EUAvzrbnOz>46;g zXN*YIbfnjDIiCuwG5Bke(^3?=gVC0I09tC{Yj5S@QRO7RiUy4XWGx})BLGtEHKwAc z#ytgehn4p8dCu0tza3QoUD^u(f8kCRjU6bFE)gezEZoH}A}|6*9>GdvEPNFsh&A?Q z)xCB3*u`MmX+fLHW0lhB&yO=!oWI+8>eqfckn;z#<(;!18TEbJ=sK<6SxASRgUPFq zR&vlo>0zBkf zYM_r#qZQ6dDUr%KQK>cs*;PKb%-u+%y-`9tW?*l73?>Vz_7%c)0h`(TR$t~OU(6yq zEF9m$ysyexr2*geZii;CXhXD@`MCF&>wv&A zVhz9{Q(xIlyuL$;uiw$C;oi6 zMq9(n3;EpoUdiwNx<<7>Q{ixrItKHxhXRii8?Rm~IT(mz5cEPsnE@DdOuiha4D&zW zODs0|lJgL*VZ|f*-%MC~w4cHrcQ~c=6Vy4DoJ!0N(Wu&6WkYM?pR!8#J#7}FBwk}d zOq%kl0|lo}r(Ddpw$l6)Ti)d>3$frJQ|=hv5W*Y%DV{8GYrS|hq4FGSsgFZOfj!9_ zgRQgIBVNwo-p@I`X$*d=#tVzy9~o*IgGJ&EMS;!mzlXNVcDiFd9tvWLuLSc*(6Mf) z{&5NqY9;vH0pUF78<+PkbJ-wuMIIxjnGQgzPCv2>ApYhW`7+fZ3I8!YoH|G(R@gKm zp2Tn#P@u~oQj$A_4R9~lrxUi24L-gSmCzqR<=qS43i>;ovM^55>@@NAKOo z+bu+x|H{LA4)fkM4TM`WLmEYu97C%W<=BE6bd{)dnTyfbXcU=lXFv)`vLrPL^IY!S zDx=NWMV+|U4=!JL0k)#8=}bp0rgt&gyhnn4%?Be>Z+1G1^o5N`DcT}h2uo0etRbMy z09-g(OUwRcEj1gsY#$tp-_x?@MH(70z4ueBvkWWp=dJ32DRv%9>u31kz8J}D|3b?z z2W5!HAlp+#*9bC4ix^P4xJ! zTWZu?dqNoI=ckZWs;jAvs^_9}Z5h#d{1m-?*|3%8g})Feg^4vX(Emjw{^+%KGEMXq zAe@{PLubn5@GImXyAu~MpP?0(e^xrpC}N#mu6vO0 z#K$qUe@O)aCm(L*i%sQn#>Cic-H|;I9Q^#cgU-gI-NJ;7kz`A5jfKR3+zv z-4Sv4t-f`C_dF6`u3i>me5fL`gZ=uZT|b_PhRB=vAg0PIO%8d1YNqN-2k*h&IWBn0 z8*38z#gQxxCSAI`LsC(*w;fBhcMbK_?}N`rc>ChqR(gtNmTU$@rTDFz^rADTi;uXa zgq-FP-n!v9=bNKTzxTg;{l)zK?-o#kYl zr-H?SM?fqF6fzE2Oz{Kh%k@Un;~>eUme#a1Z|A>V-I}+dM6+p)yE)oMpsWy`W@>&X z3~q;>n&esEJ4a>zn;ZE-=8||BL3@?w@KDj$NU7jpeFFz*5q2}*4FE`08>_r=8G4S8 zukNkdk`xqxhK;Q9qW^QQCt*rz-Tg#fnq$?B7{zDaS#en+`Vm=>V6memJA)~Mo&Plz zBDeWQTTt}d)1tA=Z0e?$zr| zXN4DW3gT&934wFB5#$d*XMk*A(agJ@czKyq zME0h5``+xQl=!o|r}}gb*Sbz4QWmZ-5t~_r&mDLf-ANfOU!)x)Cf?j)*mPw}AnnFX zWH27BdEOSSL;yl5L2m0lh^Q@#PWl$2h0&@!y8Q32PpfshpIe%AL@g^c0Zq842IY?Z z%9YSj{iQN)1lEAe+Hco(r+ru1MZI=Du}3>s5BQ($Z}xM}VX|tlG+k*mC#E0&aVn~E zKM@A=^l|*1Yl_e)!;x8f?7xmXaEYmq`hIfx(tP?*OS#JbMsB4`GXO)mB@U!h{UdA` ztyLKcm;P^D@y{DIta6P}1UzWB!vMTu^@91FhGcgi>OX6s%HC!`%#r7>L}tkDELL{v$S+0 z7lLcQo6sZ4)&hCf7Vf@zVJRS8f_K04MPz`AfA{h;VWxV(@tr>sac1x!*dI`1h{9%( z<-k8Gj(BxQc6^t?TwQ!)x$O|hmzO+-Bbe!#N}PbYablf3^R?@fg;xyc*#GxR{p>jO z_*g1sL?TUtw;d%aVi&az1$y_dVmP++UQ9W8r@$S=6fc_UlIO2?Dd^$aG@G5SVpKxO zUh#6OEcOs3G&2~kcIR}sWrl8C8Q@jsR9{VK6OjF`Ouf7AGNuh@hkvJ>BVnZYsedL~ zYXs3QB&y4NQ=owY@!S-gaWDMK9g}d90kUQIoRubkpAQOT$dYBSZ-z&yzj88u;C1sD z;oWuvg=otXp&3_)LA_A;ir`9F}@7o(yQ;ZGeIH6^OfF)`uw;>n& zFQ;&h}eaVNoVKeg~>Zc#n6vE$xPDkJ!A%i@6 zD26AwRy(`UX_c@}Ib!+HT4ovyAtErf9bL;=fj^n;FA-iM*{=-K+c@CUG5SkoF#M>S zkSmsPf1Df;F}Z2APojs#un|pIH>>^W9o!^u zz61Xdghm(9w5xhBb@#Q#l@gA^mc5wyrB;}IdAbe6H?pABDo)M{Bg6zwM(D$&4C10d z@L@Aby8qD!T`=hTFS+TktNVd5a{+1fxCgG=OO%B%)PfaM2#-o8&F1Uqh$VLfv2ZA4 zRI~M^k5!F%=!*YJ-+IwRy;*r&2tvF6D7G#PrT{?7`&swWT2B2gwxZ_(_ZG+gQ~mA4 zD+e{Xa$k=vM4=8bv7Z)zSy;aLFV9Wv^54X8nM&CP(=OhU^10>rn* zWwrBGrMlT6WeFJ6vc?3Gou;XYU= zpmA)SsPvNXqoW1_J~E<=V&kuHV>B&^q;YircQ(ri+B?nY(o__69mR0qDme4y20C4ImNJ4z6!i9&3rRC0X~u+kF*|{8p7*|rf%?) zaJYj!JsbdNKPZ0}=LvkNSuZgmfu;Qiet%cB$IRSxEMFHpiTl6=}h@Y#X;x+u)l;_rp=q- zgT{>dgK6RYl&lNUc9o^AI?#Av3|XbRL`a4;RVZ+>T)cG`>iI-5s_vccZz3ow1*1W5 znX6g?8Z70yHJ!n^4P-9S(T?B?p7KOq@SThvnG0pyWbKK0W^JQk2idY25u6Cajf8A; z&bap(-7wfk3B*TrBZN||Dqr)K=*-G{42Q7a!F%h+bo1|gb1~F)G^38DP9S#hi>&Jiuu63EL`PnjfcZGiB=X zQ_K!o%^g}_5lBLhhTCva6Oy*H=cXcOG8R;mx)USHmC}|V%Bwn~CHBI$YE |6cY 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%0D7HDpO|D^-(W zI%;coqAvf8w*~SP*L@#{@4k^L3WQKc$K6Q#+Z?b!Fu9-n+Izs{0UUS&hz|#SC-8zT z=zp-J{PvzcXH-ocI=FSw4R^P*#KckJclA&r#-y`SbS?z@BXo@=HJLOG0%%CXnwB(1 zWby{q+)(}CmC!?nX13Jxj-W-my}UZCH2S6K?V$?v>oMf{eZs(z)1~&nJHs2$9o%b| zF(CldU#Xyxrg=cD2qO2!K=vp>^IRxFSE?)+gp)uYEwY}Iki;X|SQJP#9xOA^wQphX zwSEBY3H}^1YsFH-qdV^(RitJ1&%fqYp@_|g>rjKY=I@Ww#=HQWy9rfT89D1bxjg_5 z|Hu;-DB5a>aBU8QO5U5nhT&J3>AWM)6 z)Val#nFhy0%5b1`Ao~EI?a{EraoBFVMas#?1{O@cFQMYU;N`?S5raNFWTgeHrWDW$ z2qnRH8u4ggFhR?wioIW_Le%gFPRyc#ypu_l9mBVP+1tNaDc(Y}6{Sc*3E>f!h7D8@c^PhT4kEdK>J$3AZO$`B># z6kHBL{Re^bBT=@gj27FpWiNSU*BRfef;>bEY2&$BdmxbgIUSMR#?h>F7DWE~(1q3= zznTs2x`{Rn)yVZk^wkp;^92EpRPMEM&YilQ)k{tpH#++vhqu^<@-A&W+3LYr1z8f; zyOVQAT#-R(oH!GuLq9Ww0qAr0I?AEE&g(luAz!SIOFlePqZ8|Z5`LV?&Hr96j zl64#;QgeDE2U*bcZ>S`|MStLKTre_K5Lu!_0FCNO{RRBT>lr!A9Wq*~?_i7kD4IYA z^7%tFx(&pZz(-HVXj2%Jta*;3bkx7{61Z}>@G@xg>CbI@k+Sh-dp2g0BvwzF;^bAk z81>8`&FC-l#XrUH{Mw`e$9eKCq1yO;PWu)#N1@EVuR;!m1hIHWnXb}IkX}NA?$c2~ zf8?_-&RBBS2-5jmB{FABNPP~r5k}=Bc`O$W$ThtrymqO-Q@?&7MG0B{{@9#vD5oW# zvq&AtJl`}vqGQzw6`zdlee2NA1`nQukE@ze-+H=cgEZ-RIPG`@Z5)i~>-EG^1hi{- z(HhKM3cyk#Og?<|;)?;Vc2-iPExfMy;5-)TUo>pEmymP;b*I17c$R*9IpZ^01v@*NqhqJzW48SeazDXfO}fV!0<- zYRGhG^oCm(oBJ>K z%Q_|E`rwgY1E6^E(WQAFY4>~sfV<~5x9`P)i$7w3tI;FTLbJ{gcsjEGK$q z_@+~dP%)@>AnToZI?_jA?ROo09iOIl314BUEHeik z8Lkoh2#Q~y*Qn{1#gFEucy;aqv5S7u)CzBktQsqKXKh2GNlYS@;s>7H4I!`t%6$hv zUqye9#;xZLd7%44Zp&F{gn46$$LrKW6P5_4RC+5`zHWrM)=VjB&Rg|n8cfX_rg{;i zd9{AlAjbn}=)&CBSI5Hf9cXOSc77!0h1eDTSA7UL0yQp=Ow1-X@!BaI5aNhvf{Q~K zXC1F!U$+Wmy3RSt=tYR)!*X>+LJZQoooBr(!{bA6VA=xH3~%8%u~5V+2H)TNtD z8h_1+1%SX01v)~S+ZXQ08?9I_3ju+sXF6w`{p-9rGz72-*cUN6?^5&?9w*UmS9UcO zBZt3@F?r1ns}JVQQn!iSSC{op~pqn~gUmlqC4Y8kU6(~%p zExDwdZFAi<=!U=2xh5-+)Oi;@l&@frK5=hUYx!G@!GJp~KN+MWR_W3r zSLl|)fN$9}BL5Q>Z3x+fNP*HlV(;znaK~J;f3~R-QBaNN~02^F(;J3(CV&2sITu;ya z>0NR=ae;^*+FGP#NI#~2&(8Zjbcn6G29iZ3bc5It4>s*}6wAHvW~#Gqiy;1(2eF*Y zTKzsa=rDe(ev*|lzy2spR4!d7utHx=h`MCnjanYh=%`=wo&xz`C5OX~z<<;jYc#L) zvB0S(KHs$E^cH-V<=OP|xUTM?Paz3*`Q?&K7pepUwa?5`%PU_n{#p!0w$lOEaaAJ~ zpxcv!tNdDg#i_kmKo=gDFe@(JzO1euurzA0zynQdIR*gH7N?LjGA`MC-fZ~K4!@ZOMs&0ET5Hnn^vVDbRSgHb+dUxD5 XWgM~01?)XF_7nz#D7pDcgsHZ{s|%C&YbZCAby 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

G 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

7g(iC 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%0DuKeS&L2Hfg?-T*Eg(Y+5 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%0D6G;<5vs-q367N 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

XNmq7-*)HoaNs2F`${?2>x*N|5HqfE9M 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 z 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

;3WkGr=&xm+qOk#J3MyAkz_`N? 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

G#j9}4G7ETt`0MEQcw!h2 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⋘FXZ2(E$nWD&~)j)My{S$u-1sDRdn@OW< zNZJLL25EqN^bKAAU`4haAu-SFXjhq*7VTLlePArEl@I6#E2<4_`lxR5O~a}j)i6Y2 zHLbuy$4bbWlvFmY$GphB-Ar!o*eSpGKqUTJ{R}Aay4DnGY;)r_3KJ8F5(_1bofuTj zTrNClIFkW}Z0S%9|6Gro-=na_n`ucorv1rT)N16*Wge+|Z52H20+n zTAhgLW;Dl22~`8rb?9OEGu0KQF8Q1x?1HsMTu=|}Ai0wFnCeCO-(93}8JnH!t1b7TU(aTH#>Tf$O z_Ul@$Ar7l55SuqjN9h-cf6TQX`dhYf=sSI&Auv|ouK$1>0giWJESwYkZ-$mz4R6Q) zey-02fCP4Gj$Kau>wIEHZKHb-qa?eop#-0zyaKL{$`}w}3E1V<=z2sv@ikL^vzP>YX zY^5`nqb3JY{!&Wsh7+Id0SfH5@;Jc zR-q6o-8~f$YkW$Y8Xc0-J++d)A84Oy8QJjQirS@J)wp%oGeG9OwD>m-2QaC z$R~+*wOk-2fXgEDq@ddo?f5v$Lm?|$27HoocO`ri6w?>JQfnZXkw_nbFL_CtI4&ih z<%O#?%6AEVD2nV~5eThqB={Q{=r&fPvV}%M%4MD%;wr0f?oPQ@tA^`7%oH}!MDO;A z2dSQ&`Ge{!-CEg+1nEDHvj2UMJbUl|k73cFZIrpj$Ce0lED?d8g#~`)W~$Z~Xq&h) zpl~&v0_v#U)r{I5U(};Sf8b}jhYMZth?WWM7Oj^LPwvp(Z>EL8dicm6_2Oa)Xjaqa zY&Uu;7l0S%_GCtLO;uTDOl2mS1;f#ZS7;}D72PI;@n*-`FbpZPqFOnGj7c2KDT%hq zNeK9tKPwxg0~yza7IuB=^M(Z!N&dm11ms~eYn9OIDA_by`=UMW6BgUW-rQH_a75TC zwQU8dLqf64|LP*Jk758N;F(GaxdHE>{5smMj9JrH@D=(|p^@j~RIvb20smc5TYTm^ z95#cN(xwZys$ihPeTyv_v;?9gXF;iCL0gB2S+aK-=o^u)tYen(AJUOT#$PdvL>84- zY0j$eO}yW!!O~a%ciy|Eb#GPhSI)bBba9OfdNPh@BGkRMr$!8~=QxwoB1`M;<>p8P zWVBP^XAgqJFp7;w%r`^G;ZxKYxy(nnaNcQ~U>YTXM3fXQpuym)5=m?AA|=5oNRP@9 zxrFYakx!n?@l(M;iH!(SQGx zVqYoPm$r{OB^ECJCl&?Okw();tFBNX#Ys@P>3EvI#~&b5XXsyr<4z$`!N$*mM*V4D7W4-mgqsH23#tkUh& zOFhYWeM_at?Sn&yXC*xmQxj-?8CpT01dIjD=F~ZmFu3@OEmL^B1W;`r$hbZ@>|xDG z>)5t${dB5*w?1hU3RfFJAmHHhvYKF3>0<7+1-=|h(sT{gPSd6SgqU$kxxx4w6PJVR60k_Vj22M%ZdA7$E^e)# zd;M2vDBvebvdf|w$pvbZ;D-^;kR5)D-T;#Fwk8r<5l|RE|B?vci(x~9%9jJ+A@;rx z6R3{$q`Z~?(Z?FNCvXdY)(%l{R+>|b6!#PLW)B;}@9<9N3CB}Koy=lKnq~b4hVMm2 za?|_5-H(LRtIiA$um_$CeL$ok&U_FpSmKU$xEWmS|{`G;d6DNn}p`go< z*I3*LShV`c`SAChkF11J^h_>1F=cH4Xx`_F8KDR#*#SOC)z^p61r8?9RuLTv=oGo< zNScECh>C?=yKlSUi)l~cSQo0?Qs~XppYAS;NJkq6U8;J9gPOS)Qwiv4*qBT_yv4{L z7ej7zYDQSstLG_JaUs(4R^D;xW#WkUEF4;gF2 z5;!)qPmMkVD_@4iN=$r;UGo$gOPb0i2h}n{e2VwONLbTZRNO+w2YnCeo*ciwcHm}? z(mg#%@fs&{&RbZ*m*W(Q{(?i0RIJ2IK~^Hgn5Lb6sCJaWI)UpdmL_wcB62+Sg$Fp$ zmhl%4@B&+mftW1Iee8`x#k!qfR0&eIH%WaSq^;{- zxv%ls%<)(}<4{VyQSjhMDVG6n%2rIbT9g zbpxx@Q;^_mPDU8UxoSGK%k7!~d9@Gti1QIG2^Y}-Cn4tX7VeF}^%tGE=@-JQLuf_R zu2~-q-Ul3CF7VAW>!&fRICjbsdPQFD>GiQnE=N0(4X7{{5L`J?=i8)m@95&EX@|LP z(Ly6lBP=3yv*(e;ICV{ZZ`uQ8!}kFSZbQe8b`)} z>0N>Byz~a84%ZSZ@U?#+$vJU#*EYJc#L8K|@(28LRv%^guZ#TgLOM;2FLyPTfC!0_AM#!dq44YLORxb%&5qLaBEpu{`~c!l>0iI zZ;Rk@wxu2dH6-c%Na=7U8QmlX_nhV%QCvN@2d94C4Y$`iSSI4m@L9P>w5^krYAQI& zj!c-7K-FsT#wQDNQ+tkD%&Y!Xh1<(Z4p?>Lk4O#bMwz#J4$_tIl~Mh{L55Xs9Ei0cq5XZ0=IzU;v6Fqd8IoiSchF^#5I(}`@J8)_ zYQTGEq?$xxOHEhXa-CdWx6dJ9+ymgE3dt+vy6_76Y}kT4(h!4;+n{3}GZ$WNfnpHY zXxuy{?uJM?54aWq#l?dw>cm6ppDjK~>c?`(t z(_L=ZA2|J-Id@UH~(b|OW#K&DFvesn5u1M)ASY; zh<=wHsd8mN^4z5C8YSRg&`A$h ziVZa(J{-MG?G#WZgIpba27-XiF9v^4=tlg#yeS}=%)I!W9ggeVu{@q-cp=gMEcuM; z#=+?5RIAxs#WTYzev2;A4C>5>&tXDx4NDx5q{GjF57{G z@)im&P>0^SG~=ccmr~m-k^lQ^H(Dy8mZV^%VRF8-0{|#0=#$(;M|k1LVNuMBR4~hV_x3oQkDD1#^{V| z2W`VVbb{z&1miM=4sU%pwhNpnVcOs6cy!k%3tnO zFc!Pt1z(H~MFJWXgcXvGQDIj7*I;S3ERR#6*g?opefeKGh4%L4yHB&d2K(IlhjhY(0+xPzLAhDl>~dn5n3d_P!@lulT}r?NZ%Q0 zpZ6utEXn;jD(WBKdF|%Mecoq_dD}%5ZW|}j$TQTB01sRfUSWbB?bdK8dj|I!d~@)q zakobfKC~zJaVg|ttNm|!%LW_J?9!`QUFXMlxyf=^UN~`SZHi3O(0J&NJA$&t6$djm z@oe=clt2sw`3{KLfy#*vtRZEbB%Za6{Jh?{>di{P`KpvKP`+kk0kG?4nSpf?geGTU z=rs3R*@yA)KN&G+O|Zv-lCA~FIW9M941*8IMyc*=yL;~XV1X5J2JsXMhJ5Z%7ycH3 zDuKm#64u{Xb1k)eT}#hzAo*C!{R-|gW@1Oa*ov)5fh&NBqrZ{imT>~=__%IF5O6iP z%p@@9a660M*wN~*yzQc>sUl^YHkm)dk9*{D?{Q+n4ZQ=x?djZ*8^F*5wesAMgwku( zMcUj1rfOGUdlBX z?Tiw0hp1M^vAsVpWc9Qqfu+%*g5Nho9a|sO&_@F$ z$f5`;(HmFK5+ZSUVw_z73=z&B-ik?dMEanml3N|8!N(W_kL-BX8q2fF_!RKSi1#DK z-D)9~q59`MrDhewy$OVd@!WGv9Id>6YsO9$3oSSXlS16HXU;_C#-96GIt1EsqS(r_ z)QE>c{-*iK@((X8h171XX(o6}YL>(qLK@lHFp#T8?|m%BRrc+rqM%zKRd>1A))V%G znf5rYJjBT1tMzn$laATKB`f=A3auHgE1@lllKh{YULPA!AfdW)!OcMcxRc7oHmI;s zD5%h#64ykgiZ{|yWLEjLU0p-TZnwSCh!T}n|NJ0ON5bD_^5GPb7p({u0BVmXR5*}s zCfCdXsVB)f%u5XZNZdnL=cEA6%GFljt9~Oo2zq?p=8dE@7<;w(cAEYf!SsZuYblL@ z9JH97Sc~R9ZIJ{ik?&sI#X-CNp$B5R#g6jip%FW0MI{1CSa`!Kn>vl&2v@4ySW?5w zOd;`yn(CRS5msg3af4fz9#k zGQ!mjN+$UVL*n@}Hfg`$L?!ZG2vhnjGSf$l7hd{=&i3Dh*zjweL})uOHhTlcK%ldQ zUN{6jg=2zvlYVPjgWF^iLON?%dY-H0#MnY!>Qjer*{?B$>V4)=V@5^6r)F6f2O>2S z5y_vD5jZDQ&E9z_YZqC~=pqRh>4;qJpc_nJij&)R&o#~w)Zx64i5c|cs{>G8DfUNU zsLrb&n1zwc?AAr z5&z9$3UQfrne#tdK=g({1#5)qvb}u% zfLq=i`%zFA%*>GPih>5q#ZljvyKPLNdRTmdi4lm}>Sd-{Kr@yjQ-|J9{ej~@G)=P^ z%QamhoX78g(@zNHW32h_?v7U-H@=ki$NAes-XS%ul9dQ`)wL8RR>q|%2{LF8kEMVI ztB>sZ4uK0eG8X@s@WDdokOUHrgs^{O60mlSgP{Bn!s`c@LGf_!C(LN2MV}>4Ej3=r z>8@Q`MZ@gk8#3frc;2>%WbE7UFcVoYm+7aoBr4kCp?l{q+#0r%1;am^%C-fcco;QU z>!i8dY@QbQE#d91PwKL>=yKl-(KG3b%sVGqD5o~w_GPcoMdDUAPuN36hw?w(Z3=^O zzVxG+f7Mz&6`OVTG$0%w_3rWq>S(Ke;T2?y+r^@O<$_3t+xkQHz8jVI%GgfnLL|e! zy-F8zxD^{mwlg1oG}=%b@4(5cU_t`UYr|PU(dqPvVt4@Z&n(Zagp7)@7x>SEMpk9> zF650#h@V_hs5}YCwX{qi+Of<*XHo^5?o+d7ZtvYf4}j;?viRw8;-V^Oip{oPPicQJ zlS(s|WpYEEKbm?QkPQ&)zEsYyF0#EFH})|W(ab(bxfgo2vYbNhm)ro83S-#x3QTqR zmPD}B2gCGDSHTtc>tOu)MN@tWH})lp64nQHv+}%^hE@X|8)jtCvf@qzCtN86GC69+ zDozDlNfCTq60N$}FCbyTeP?PE_Ot?7;!f0<2?WP0_%roTmOVJ#&d{DyK19mER{3{r zStE5$*X7wc>je9Evju|I@XR=7SvBdw1Im1pc*tx$+{@O$!kf!L~fN z0bjoBPXeV7vzDx{>Sne1=BMI1l0Bz`_7L4UNyN+=mU4*N5PbZkfhn725)X+A3pOf? z%5)F4NWbzKf)6{Hx!prS%6KfdT~}(mP}s~mh8_kIRXCXNydzW88uDwr4wP~fiB-g{ z(>s3MrI!uaL?@qZyXrEM7cpJb_2!uaN$-pGN9z&w zLZn1Q0?Lc2;GtThN=-e)RaQbK(hn7bTRsenJ_jN~ZeBn}pMOj!HEL6;uRf(UBE zKNLW7f%NYJc;U3LbpNdd^5%jp^99CfXPk6n_d|I^O7fOhAu(_@ck{Sor9>=o1&On> z1uu@^>MSr^mZ1DRAySzf=%O&ZEM;h`AWZptl7o5yc|V>-poZ)Krm<~)J|}t;vpuH4 z3k7*00bi*7%AhU@hDe0`u9v>Ok9XA&3O`FJEl>%`}d)k`=?ev2^yml zO51zpheBQCg--=d3Z26#jq9!9f|7Hx-+A;*gQ4(5Bnh+)*Dk3T6bF*GbvLTSm0TH4 zHoz`!)YmArhfw250Ng!lYX-%0uAdn3y$kiV7%BxZ&WsNjXb(sIdi4jw z*+V)h^xs+>;sJBH3x4L#?%#rR8lCVTwbuwCdhTa;VrD?aC)vG(_P2E_u0XBWEQ07u zzL%e(ww%g!gy2qe;vgK`v3)V^(r_y?g5HO}r0#^6bg~d9KaT@P&_k4$vw3%yCWwv% z4>7wtt&R*BPQ$ZR^w1k45`+s=3D-8k4mN17>4?N}a?H;miMhBU9Y7mt#{Mgg6U$cC zX2OBL@29)z=I*HPMEiKkQ-}rYKma%j{r6R`ZE*aNOe>LYkd_Py`T_4@{hbT;gr#P= zoF-)BXKkKURbUcATlz5(1*rveZg&{)1MChzH)ly2da2heTj?)2{`Uj8){hFyOCM;P zQS&O2^K;_624_9(h-99{g=%p;Q(X3=*U{cBfg@MXM~B##Cz&=rvA(L$M69trKm&2% zcZHX4cilhr*^iV4h!N7%-3m8ngKC!mQ6BnwVAMKxq*D>9&^W7nFTMABA*^eMgu)p( zxX^Ln3m;d3+cW@laVt~Rn%WT0w9N5;*U!(88rjN2D#sp!guaR=qr_-K!S0x$3bo=> z+3JTz&*uVKCCF+WPN=o6B%C(iOr$Slcq!O`56ES;G#ahuv@t{VECHDPB$NXL(A;4L zBbtkGgNMkoCapRe+m5@~jNDkUIUOBtQCN#FG-!;~OYW<^xZd4NhF&@t_8ip^MEw@B zgnT(Imb6E*SExvZwILD7^ zEigpRZrnWEWnUT*k}`tGvQ!jOSMS4`1TQ!y;aQ3kDxngEWc_>jCjrg}W#;2|qrSK5 zRIWQiVo55N170h}anYM*S00|ZVPNGcbZZ&Z2+?(8fDtF!@Zc&iCJa<66d4hbF@olH zd%=CDfEymUBZ)Fg411#=+P#udXteG5B_67#{qM!iXMp zM&Lbcc^H7wF1)cJ%!q~XJ=bPQyAQ``09@L%p^zD!AEFyS57OhfTK(?s)`LW&8x)ac ze$&GPsZm1nD8h7s#YLtpD^5GHqR9YTaJe-V%7lkHq#vPZ%?CdL)?&W(mjY&8Rrzyc zg<@C;@Q&|+kmo81Z$m`>vk9hvEuOptUn#L(Rd+tvp}nMW1!)WDqL!@93zZ{rdgRos z^ZsLz-^FEnFWY!fc!nS%xTgADbgWVZn2|8(gdI}fEo-35RVQy}7;*D_dG11fqz%>TbdL78KGy@0wk+3f04isq z=>UWCbzn2<6^8z- zgqJVM+vR?Sfh9*Q3;BZg$RKxq(>_h`TR)v4LoGxI42MC{FhK<|&8fd-Me!=)o6nubG)pG0mXc0O&vmD218tc00Za@S_s+vPyyBX0N6nT^ZB9*TYZOlbu8E> zNmjLgO?6ZhX+)R|ssKNcjOVqSVzuE)WVs`$8T8egz=7-SVxurRzN>2&x^lApyQS-= zD0r)53w-tVol_ZraJmw^#W&JSy9Agutfkbytw%s4)ZB7JuRx>_6r>fG~!s=jTb36^Qki{;*WyYLyj#~|WT06}e^-}}%~hsH`% z@5k--e%?1O59A{hpw8ZbZokpPiii*T-0m-;iFEijuYu2#;Bi!zp*$ldVcVzJe;}=p zLL}$r7b1_^u*?P#f#l(ML7a9P>5wiTo{?C^q&e)4#)AV0k85?6R(g(z&o5xpvQHC| ze+03@C@F32X9voGnYpHxd`V0Vz#0!6XNP1Cx0v=BKPSuA5a1-4N%f4j?L#jnXF*Mx zxP6}8xsf2S=VVo{RO=g_qiDNCxf-^AN&W~Wsi{wjx}CAb@PRhZdnDiMg%qA0$mT-R zKgi?aqtO9+lrF7K2O#GpNhNe6bq{Kew7sQlDyVBxrB_KFPn|_ayTF`vWw|gGhPoMs04u%UqHSJo65~Po(lrTQKYfxsU+_= zk(f2`SqlM|Ivl&$v=U;nMxf(*u5V&6bTs|X3bqWb6i)n09JGlqb(-A=@u||P+~!Gs z2wYwe9_bReO_q97>&o~QB8TH6xC}3a!r-_-%XV(4V_qO-26HGQbI~bWRd{yUhz!>&dB=>{(=c+7?WhxmOhHg{ImYks3-*AQ3%MD z5BBcq-r@Ek1WU%~YV>__Zg2SuOVv1T(tZ8Ews#G;i2D+dYyG5vHc z?_q9QnPIK{N+I2NpnRmfA@cO*DRdQ@|#Qsu@;*3x4MAIDNyY2c~J*)gv!Jvl{?JW|r**^0nuI z#sm;X_x#g5mwEy)SWEga)Hb!fF@jPXLaHoHz;Ty*b6L3=dJyGO?*hTVlo|&3*|G2| zE3(cHEQU0wvEcIQr<{2N6U0e;+S!?&=OoR6!AY%WT_4vg!z3*H5pAjjKwZl?Llh2w z)MQq;E=$lQk<+oh?Lbj1=ZZjO-p$nq@P|IHgDdjKjT{^>s9 zC%l*BAnzLwt|`?g|FLgrN6{L7X|>_s4)5>I$zgH38)#*p^59zJA)|$@9@#gbf#GyP z86&6{OUROsw1cgMbC(v(&Wm;>EXQd#B`N`$Iwh1uzEWN!-D8=*0sH(1YN^pUsW z>p5nQ9mk%ByoFqkZ4&+-d-yG8T4Te~{(phZnLEHW77Hd?Pia=M>G4+Ygc3-^zvg)_ z8M_ouBcWJ}$Ae)66M^Yc1`PuREtY)d7DorHE^8dfGv;Pd>H4G*sJ?+x%sxN4MP>C; zGxG=7C-C#SfgpPCfWeTe5BQ(525cP>Mji=Ylg7xBdFQ?_!&^jx@ueqAM^7~r6hJWs zH--!0&|cziezLRn>uDOJsQez|^9*SVS=Ve?0vwX^=QY#Ul619o9(op)Nm!7cd6_e&f=qf@9^=La+Q*Ey^s(5TXP*3wC1*!=2e( z9C|BiaerxE5pa_q0YKuVwbkqAQn?sVtWX&5m_Uy(KqFR+^!l%vC&95UIGc}?#)WRe znsQL11-d<7e0+4i>FSA)9@>80wu|e%s(u{ zK6{+C%VR?b^B|R@8t?Pyog|HABFE3|$RShPV4D{MX?eyfCn9j|OCC_K#brWA?`-rW zp5{Ca4d3RD&8{v7<=}-zrf;@_1n8ovpx9BqRCGt5t>xwV+d^vF4P1jFKh$1y3vQo{4?u~0}3aI$#82#8_otH`LLMBHLTlw;Y? z@bz(Rws+k5diIibAnS*iE*jUO8_6wK9>jd6kwq$#?!{nFO8cSldzRwsctpw&xXkqj zClIz5RaHE;%#M)jR6@gVC4pG&FN-QF7fTm=*Kg-}(r*HcIk+V!VoP`8d{IlalO*^N;{L?c_~=HhyqiQ^?J zA%ynems;F4gy_u}Be&wRsNndMa!|h3!zI@)2wkrHl?6Fp%j*L;tIXhdY|zkl)&n9T zR$FNC4bjn?LLqVhWZsMP7#lItKRkGdrjsQ{W|>%EoMS>ZD=7{Pf6;0|jLX>B+s17& zW|6qAb*WgIdNKE+SDWx2Z~_-D1q5Z|T_mMKta&6=!a``jwt@`uEq-?n}rdlB>Fw-#nci+tz%Ilb_2HG}@)YlN`bHW|g>7$=yZ7d=_;R?#ot`jj*G5yD#aS_N>HAq|Hq*x}-NkI^D z0p!R3ob-wIbX^HUA7qlyfRoXJT$TC& z8gLX`;&ESP$fUG#m-Qx+EseT$t$7t)5NI+4oW)li?Qm05LQaX<%Oj-fr0%uAh#Gi+ z_&jFeL>c}|c;)Wedw2JnLb-*qsE>!If`aniH)^YO&lUPcl{KLOTE3T$yX9mc8y#!v z-CnqQnY6vvTMOeFMEb|iVM(F~q}nrTfzgWMwm1&p{wDk$P(xXPu>&E5r5qi1&i zBOAtRCAP+54_m(AeL-vvpYu(2DsUJU=L&(!`86;*+RStqKh_0~c`8^RFK|~j40kLs zd{srI&}8T&?)cp7y)FoRc$6VP74*mU@7FzQlxZ+vZC$3Ewbc3+t;a2Oo#2S)-?M2p zkiU@_J;5-Dt(?{`+O+qDTo}3H!n^N=Pm~1HrP8ABJp%|+9v6^`&gu)R@C7`I=KGyL z?HxsNSnfV{ahAPdXvxD8>f070^~9W*1WczNH7gFMFsZUVx1Rd8k|>85AB=!a{3i;j zPDF$|V=^r8HUeOKQ~L?H!R65#hU@cpMSRwZRri-Z+B%B|ZF*|@gSFw2%URBpZ}b22 z)i_v?KR4h>WoAYw$mdit{1r7aOX<61DOtKf5pMoyoVmA zCkBWGq;^@5FkSl~?|>-1R)(x@+{$K{lqjvq`bIq=bc z8C})s;9-;;^P=n753bQUo?(!Pq?0fPKrfDp;EzhJ(ah%uNW{qs_yg)$$V-=HVGhE* zr||!~zBs!CNba2MFh^F{CGX(Kh-`3y0p$;~fd4#KtDD%>8^C8PS2Fh#gJ^|0CrA-B zT(g^b7%6o^P)?|fIE9tb_l2tN!eCw~UTuT${T1uhLnTOC@$llE=FHF9Iy0&HC_k<* zIMDyl)m$4FS_XwH7gkT(1{Tzga!1flo4h#p?JqhAkQIaWMY<_wfS3SMxdNidok-?k zP53W1`0`|0O~{Uxep&6T&Jj?ih6sN=I#&Z$NPzl2q0q$Ko7ue(r^Wt6#J=-2R!2uAX2rdcSot|xJ zRbN?ok{7_*lT{76T9muo%|FZWm>aJ$cGxBR+hL-WP7sVVxkO$Vufb0zwV9RXGAgVn!J2Q|-ke=1`oF+jn+hFFV#P>&kJ3hN;h8O4luBWtSfSrCl2f_{>frfx&xUzfT3jK8gSvaY z86J%H59Idk3n(&Q`6Uqc5OxfiN2ltTJ1THeqj-*-hrSBf8b|Ny@a+^G44;f%K+Rnq z$;sQbZEmhIn-J2e&8d$OLx;c!vpw~kN)deFjpKrx^qgp~E8;7^XPy7Xta|p~r=(=f zusr<&wUF4U& z)*WHCh-R=9qf6EZlqFcjwy?byky;_^N6$X9GB|OU=tErH@jX*YP`TS_s=_HxzB9=B z2*P0gtWLV1s69asDV8bdZry|({{54UcKJi$X;YO2Qrz`6%*go)Z+wy@+SZ1ISq8+r zs3C(8D+9)c$mt~9oy3X3-rXTw{U`35$$M!FT}Ctor(5RpF7x0OWOnTwd-lk=QFOd} zq61=N=Q+$iJdzbmIPd+;AQhtB``%C6%Y+aDYay603|EUozcpWCmRUF$_q;8iC=Y99 zTTO$-p@mZH%Y{NQuf0T&)p7muZuE#wUuvW!`h0 z(Z-j^5_>3x>mhLT+cZ*Tjl4&+1?R$O5spl3W-X&HJt67W`w+9en0ty}R03xp=UTy# zp?sZN5nKkOIaV2NoXIz}EXPV-5h|&1;5Qc?gQNa!lV|s&V%!<~{pC`$bU=_(RZkT7 zPmOl-teq{HeYx$I);5epm=aSgpj!M(5F#$?uI1ytM&_%papXKL1d)Xrmh=0jZE%*G z&vAufstJ3S<1~9jAZ;H_DmCa7(i_e&GfZcirZYEr-cSJ@b4upJu@P zWzzUx_>0S%<*~D;2w8Crb*Q#qGUFElDaoWU+&uejCb->(1i$1X3Zl~oMT~H2)=_P5Jr+?+GkWJ}2-{?I%Vb-taG0<`u88=LROv8p=E_ zl95S}EZKnZsy%4`XBAtfQl!IuGw+TV#+~BIBTbZ7($t}W+FLOlbgAK_yRng;f|?qt z8q#SGO1;Y80Ozz*U}Zpah(2YpQ++;KP5I8fch(`y&AJ}v1k1e30`6G z+2syf!!I2Nfx0KP7d!T3d?NNov~q9mes$Vc6oeWp*eMBa9yV0myAp+eB1%y`SgYfJ z8q77`O0v~$|GLt?XQt3ushB9GFbi}jyXzU`G0qGbmnb0M6ZIG!f&gA_T_97K&nU)F za27FHF@QHuCP)M1=|>>nvwzqU?z(JXe=?QD3fQ5A^#fqR^T<0u=W!yekmTg}sE@2X zmTQ*a#7<0Q8H~QvI#iSejVl^)+kPOG=Q|=>u3cQwQ9HR7Pw=#gA{t67*V+S9m6A8o z4b}TxGFEK7fvC7%Zre@N$6KEQ&b>8b5F9EUYTTa39}IZOen znlvm{A%5m9sLy|BVl&-Rq!+FdrqAF3<7jRoVg#NsD!D4_G=h8Z%bW;ec&5>G66uk{ zL=&vry+0+kCfsAOV}n<_(xu`xp>~NyJ;_I6Q(am1_-x??A(wM;L-FckRzw3u<+YNh z2JlU@Y>LcFxg0++>ww^+?_jMpwzauqnJ$}ksJ|}5bUC`BznBg>&~wNGAtjGED;LWnIKP`yQ(i|3e~i?x-@i0@{EmBwQUT03 zj-Yc3ONM_sC~Hu_Qg(7cKVI-1_j7izDx{aGwc~VsOKh@hX-eIoXMX>?&|bG#^=r`C zLXj-?Tn!S<4;OA}dyELXvR~<1dcR9cqD)7$XRrTvm*@gBN@Xz7~YoDk5hQkfU;RiGC#j%;`=^ zMjCyqQoq7^By$bx2^b0(Ga_-e3K01n`Rqi7le8fG8>4hDt!Uekz&iBA)i2pxms%41 z0Sh>Zy}gOc1u=G#Y3ec(We>m+=6{#9IvBYsPV;lHpt>1LLU>@J=+Z?kMGZ%&E$K`A zd2&Yp3O#z{jXFpw+RsO!r@TOTZJVRBE>rYC_W2+69ZnOWKjk(;B%Mu<9fG5}1p<^s zb;O9>M10Vx<^Ha4bivgiXN4`QX65pW6|x0W>1X*Hb|aoHaSL?MYh%s%_hW+(bb*5- zXNYpwT9|Hh3O@NNpF~3KG2K?;2%oUn%m9LG9oItia?)t$Fq9 zGX+JEi{wOwQ*RT|%ArERx@VIgMXpcw<5nDcMseKeDltfzT$Hg&La;+IDX>jnldIBZ zcn?Rdynk66myl*QL3P{#ptp8Q?VTB^;6IAppx|PtTdNMsVq5qoWu^wcL0RdqZl$

1^Q1BUx~+%9WUm-&bo%ZNCWi_WjmjEIQ17^Ow;Q;QR>u*E(v`8p@u zyhP#lECK`ay4ra!tm#M1=XICqIb!kC%RMW~m`!WaEz+V|fR2pT{~f1P|0Xrt*Rxz+ zvs?fmNq2lHCF`Nv$Y^m&W&wiTb}%2l)EnwirP`|a{Hh-FL+>Y><3I}Y(Y#OU%pp3< zD-OZiAh&t>`#NO>q}9|q+=y2WzyS_JEKUbvuYRyFDjD4BlP3Vrd2-VCOD*xX(7!*NH#} z^gK2}#ZGtNmMOj@nSL+If#J*r3SHQGG;mXae@`V>A_cXqA&AdFAk-};c*Tx27G(KC zjkyO>c5YNV(cKw@}3Rsloa8ZsE2N!&AXF9#=+&=E!ri;=(rKt?$9cx zg>U|MAqmy~Vvl0196ihNj7mMp18j;)oh5_!&>*b}k?j|iK6?kl7)jp2(*hihk>G>U ztVrw@9YCwjEON(ABKg=-R^^gJwG&W)z`z`1X-WaH>MO?>7 zA-q-IBjC%}UURHi_+}tr96VI=OUv>0#v=c%qy_{Ya_Eh&czpvnmC7lSXmV`5BllqA zue~`3v;7aO@CGs&qC#w~aHobo(3y-=qvq{gpzK7hiY(nrvGx8_88jRx$?^1fQv+C( zqVQAa0Ar_HZK(s|EPl&iQrt|$#M^jWJoemLSj1S>Ll0d-|4uYB-s~@03lTHsZQY)& zj?h&GqSvk{tKDnkOLX5#>o}Gq3@R6V(t*JEeqihj60_Dqexfw)4^%A=R65^2B>0Xv3r;cIv)b!|Z?o3Z|4WgW3-7KOuc zo0LSV_GPD)#x%b!c@ZU51Cptn0RWUYgBcVL<-4#TD`2YS4S8e%Ja_DU@I$eK3NNcY zvM4+rhrop>)AVR!c->3u$kZII<9F0&8a0*KNtN2jYQ5$sUtBPU>V3dj6Clk97uUFK z8sL0bE?fLVtiS*@6$nR~ZYV_CfC(}qQ%46ZW`A)ud$0DA^`*i5f$nkXYf#mBYRb>u z-0i=CU}a;{3tWvj&j}q=8B#LXz~~DXX4OQ%00uu7aWxGgJR?ffOcC;?eYGl<4Cbg! zX6d|iHvUTny_@G3+7N7Qa#!?f@5JLqdnAmu%!yA<*3=51$zYbb;q*A1SBS7;X_}~& zA~*q0w>v?xv_>7x6+J@L-IPoz3a>B)OWj%ew0|ULhD{`nQhoJrQTQ-50^;b1%-Moc zW#=VTbt8Ou!mhixfuMl=QJj4d#FZf;PC+_qfm}Z#xy}D((MF|wt%}=Rsk{zIjFOB~ z!f4M3A)e6DQ3tL9m!-4A88%ksR)*YW_S9#u0K}bZhm$;WeDkKvlBQU9kr&}OBD9sv zxSRd{E6i&@N1E>Yao5GuM#=zH-H#k-O5;8Gss*Ezn$Ef2PJ+UH&w82p>#S9eFfiY% zzEQ58i~nzh^Lf*an~*4~lcMm1vwe;XK7L`37?yGgm(I+}kr}mFoCAZ^0Y)(w?JKkr ztw-N(WgfmzeEjGgRtuLy z%O&I$JhJ}VF$=w-JphUwfXJGPQ#?6cf;z}J%8P8SEsJ|oI)sI_-|qD(W#*p<-19_+ zK=6L;27WB6xs6p!A~+C#1MV3(^35x6Lrah#IbJE4hDAe(FZ;H`E9aZQ4JaIYV~s94Dtd%mYwWgyXyOJTY)^GDQ2)~ ze*flfCNqBt*ANxMh2XfP&{+bkS8O#bLajG@j5s8e$zoPX&bB-6rxGu-MwvjWR}Ky) z8&%(bQ!s*C{%g7h!ibCR{}7s_!!tmw`hGSIST{sb@9-;cp4mcqggzJ*zdLEJ?yP!THE3d;S7$m!@+?8gLWoWs$Qk^SQv$(K zN$C}|Z6y|J09FjBLdgvii`P>~!9(%Xg3?Hc^61NOI#zKktl(P+aO7zaYk-}t^@3X| zNDedxYPyJe7r1n!T*XIRdo5Ff2F3xhtI~9r)Iy!ZJgjO6-lyM2f zV(bYC2au?w~-vMu8$Wv3S z

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

x``B!eo&GpQhrS+gZAkbIy^ zSo^NwI}aeS>SK2l;_vO>k-`v6+BK>|qciMK$fSe}Gyz9? z?)alYUCp)cX#NlP^~w}Eu2+>FvTi^EdppTIRm z0>>PXRD}n0ZJR_(`hX8NL#IHY5%PuTi2u@%0%Il(@z-MG!M-WMUSq^)O{8fB^Pp4C_V5?_har(+VN#9cn_ud zWQs_bK*`aeN>Al-N1LGoeznFwlgPu|+o212SwQs+UqL0B;m9}^{{BsYdVRfyu;8q7 zmQCc2C}yg>eS-VMo#XGAdGTRq$mF^gFv3`kuu`}p+-w}i9z^4B2^3HirU2E+xw8Sm z$<0+$1cOgN?F4xrsT~G@UT?Bx=~yZ%4+MnY?ZesWY4i9UgKBan8LuW)+5VQa%- zV4Daxm@#*2yp1pSg$PX)I&NZ>%F4CoHG zhQsTMq;ZKj01?z1mrZs>oGRWr{{u`8GA8N5T zEngR7d{gWnXgYHQ(NS6Apvge^YD%djl?C~RMhd@g;YT1Qm3FC#Qe=HFbfHt9s6E;< z&j#{5s!QJjD4E%gC>V_@UQ6}7!V>i_2FRhxvT)ez)V z^mNhsgop2M+w6{`>2mavT@dY_B3yWR+fR9e_hR9*^>GVtv5}?)1ql2^qA`?3oZb|H zL$i~_GM(Exhsu-57>KQ0EGu%gcZzPnK@yR;HEp) zxPlpht|vn&C+ne-0H1rOjDd&NzLC3Dt+oVDF_Gr^qMU#_+ff4GJY-3zUlkUl-P{{w z^E2YQ$=(Xr@kd_lb+*;U3z7IIEGiqYx`WfI^B!r!PNKL0EiF5z2^f$6n0nw;NQ7@* zq>^27e#9M!ZCbkw0V8@TJf|A~o-n?SLKBnwy#lsl5sf#Nms)+VM*D;FdGAdN`AR2+pU7~1{@dE z zMGVX8Xd+GgFTaEfxh4cCI3-&@WWz|Mp$HR)x?4RtG6aU02bIfizt}@3Qh^$TKu4jG)p|b`;UjPbBZYYW2nb1xe zMr{l%d|F6q`Gt~5-ndG20e;5m4H$+&BUEMA-#g*KXolTARr4_lZ~Jduv)Xw2(tOC} zLDp&ri$;G}nW;v?UlpnXAST)-o`_EK|G_FL^}WpsjnKuN0^%?@-r(()nY$VRKRmBi zJxQqDsdbTuChmK*%KsJ)iSX*4tvT2Och;Z(3Ic0K# zY2dAE+|fVz^GUagW)4k%J22k8z7$~{X0%bL<{T(2njZKq+#^5$+!O(?tepwN{A+`` z1?q1=Cq;qir#lJlJMevK+uxkY<2$ZAa)DRpyuJzuHcHQq*mRY59cW3nnk)M;4+&Q9 zM0(Fam{3$oHK2da>l326p9N|Y8~0^83if)z%8!N1>>=?Q@)+7^6i*4T zH!nA|!Kn*-)ICHmfL7T^ae zjTDT3Z#?VMurhnJi&ckI%*HS>z!&(TMzSFndzj6dim1wUZ*BN3rVf{-)HIj^42x1L zxJXdNUKgs<1mziL1)~jfzn47S9^bDo2zVr5CC%&Op+R;}y@t3q1wef%hCS;>`)+%r zysF22k@JBE2_+CRd&_7Ue;>4QlXOMZU3Fm)h*F@@ge$ZA?j5^vOcPF?EYM(!07$Mp zNVvs!xIz7#@+H32<22z)QSsWzaz^TdfYQC2#yL+7Ml1~}il}?XnlRAzlmJpdt-l)> zXEwDG!`AY6tXnM*6-nTq114?3Z+X6?Lx2-pnFuFJa)a&eot&Pz(Hkq(hybp-gktWf zPbTi&L<>7fo;s^5Ct(eZpzh>lV{MPK{e^xxw-~8$CD@PUkrT+RMlU3pBZ#+!{r>0Q zfHuUJe*Q;}ZNzQ-FYWhE{oEl#b#59ijM3uL3W0~2ks(h8hNl<3{TLEc)SO4$nwmEQ z7;ScE(WSGECa2ej)_V)>)rQ8pL`hM2y3Jzs6Mg%k%Sl-S%&{QKj~^AiPmQ7ZPnFo|TiACHA8Bcx-ro>6amm$SzuSas2d3De69{ zaP3d{#+%6`R=C4uk$L!D%I2#}Fm!EaE=>Yk+R3c>$Qkbmdy!K#$8Zxh%tYoc(dYC48n}T{{D7mn-0_7+~{zx@YYR&GD<5) zGk_k>4Qjz5y9aVss6gSpC1TaN3m%0w1ZvT9e5R9p%lkyy4F&CdBJ3Xs2VQVC4($$u z@kKVQa5E6SR&V<~zQCG~Cz={2rXv5Fm8hMlju3>u8!RNpcrk0eQ~=HO@`{v+NUP1UyZjEo70*KiJDAMgLkS zf#h&pEU+7Zx6twi{ip&rMn~3#=vF0sPM?8eS2eN1VpO5cIW@bItqW> zancN`t>d_zupTXxS&h^v-nq6BfJGhQoqXC+8@st**NJTqEFNF4v z;aQJm#g?=hugw|3CD;p9kVcSWtenjyq^K-Q!c+&*T0BXPrOENs67KpvTgs`R8bG?} z;%$+Z8hpJUA?&HoGqE*mYicX0*(kaMo%o7azc9=ssltT?3L7(59kxT@#P5snu{+hl z=2Yn}o+`flCaYzmqD0M88&xT=JctB1<7$n$R^yjuP>k;3@Fn4w*T;CvH|cD8R2JG{ zSajYmEIUXUs0l`VRn*GMg14K5k(0mI0w##|aTe%PTePKjlM9QH95mo((7n4#dN?0_-{ z=e}o`^3=E#er)fQ4?abbWg2*zW~MrwI;~@}@=L8@c8{0T7fy6T|GrP_;w?ltp(#*4 zek>@5&~R~+O)j%UJxFt9k_&rEMHa`?a^4`#=RYEbGPvSIEc|r@*T=7SFt+V3&e;dj z88cdj=%*}7wZ^M94WDb$v!gebYKmcUx_;_(wS(w%H&rTY$D&GbazE*EUgLvy!U@xl ztx@dTJzwr!mQ2r-NX>9;rBlz=o`tavXw7JW0^7}&pz|5lyUazk_(d3ak#zk!E9iUV z@9cr8#D6yDQyyAv)gmul>4f76&F0@sdHx)n=Gd~#utt{j{CTo0dF(Q*r z-dH}sDN?u)lfZw+5Rs6xfv`LE%7~M(DeXm&JYX31a>Y|yMRguD(E5O?4=>#g-6f`Z z+vw8eBFm9~RcERVpV2-uU_zrru1=<9kUw6qvrCkU7Lht*kLTJBIYbl&1Z(iF@=PVB z{`Z+(XhZ_I!P71>$W>&C;4n}!25@*zq8!1TKPIdeGTR*3GbIJxDe>S+TUbr@-s<8f znx`#(%7lLL)%ZL(mWK@sD9yX#qlu$L)LQ&ItBbAnu3K+0OZ|wb%iu1ipj5!|%qN0K zWaFkt5#8Zz{-$G9V0g)0$-7Nsln1a7OAn)07_)VTISsNi2RtFT?b^A1{tCJ@01}(* z=L>jahZ|64D4D_Gd#6LO7#08PleLmky)lZRB9uDlYn4a`4wQc^Ddj1f*rTR@UkHXYABiUPl(lGavSr5oisai&xb# z$t9MY5`RoM)vZOmlE=DQ+~;Nun@1riqAY}xX+T22l=9eJ?D{{sv(C+v;NyMlJVHv4 z`v(06D9J#m2&&9$9VI-sx7@HmD=>(K+(!S1#oy*cGSas<;`fogiKKfJ7i^ zt(rjY{NgIU|a|2fG0_iW(Hm5rN82}9ZOTE(5d4_l~6LxQO zW<8^0z5g-O|gj=!R4~ z!G(Te-#f*X0QJ4P1I?c{SpV=MH~}M$^rL@Cet=AtM08k#D*g8yM0q(<$k>3vx0wQr zrdEys1yHEhA`8AZ?{rx5*fK#++S+>+1I5z1XGcLEk_eetE&@ja-ziWNB(Vmy;T$;0 zgM-+OM+#B_XIoVu0r=#_Q-(uwBdh0a%-33v}Kwac2twz>qw0V&2#7SX2 z&1r=*ne^pSZ(B1*cQh<7mC5?;M+;hxW#bCZ#WZ>9%aSBu;AIHWfslO+yUH9KCu*ks zkP`n%JbKY{o(&C7JFBN?P0F}n)Y~DHpHu!Zrt(P@sBrT@M*hW~&tR2~YQ0uJ zH1ebP2G8vwFZ9#sr|==P5Lu*fw##rFx{pP_BDMN2IPO-}u^zyUF3Bmik|ziR1zp3r zhL?W>ua#P4)nm}Q@%AGb&VR6>)GtbwwNuA^4q5@rXXaRUXDm>cT8} zr3AO0qB8i z4}yVy$HFLZq~OZRT)4>kz<3&m9^s%?rzS1$6u7b`Lbe0{1;~@YzXv5OV|mpM5OAGW z#|9!E*@SfqDN2U`SRM2E;>U7Svgfqib$8v35CuWTMLGXkrj&g^FV5w?M?BAxF7BE( zSY9hpg}8)s(;GCHgx9UX-u85&5?^B}c&9Sz!1%}&0fC5A2{-R?ox}4Tv;w?kJlUZy z&tHWqG5GrrE>~VqwuI$xjLX`)Zr8}^g$824mE?R+>N62de;4j8bMn-YSX`7BpW*`- zdxH>V+o_^YQdWfNRWFQWL|DO}q#U8|O=>CH05uTj{slqN!M=FexVk+3Ja|Ra1}%Y) zR-TQrFQ*tlvvI)+kw8BBp0?-81;tKMWFc?TIGPY7BUAGC`AZDM(~XJ6_v_BaG&Ypp zcOLPJ(FH+{IK-K<^VPdwt2Qd&tx_5ailUAKI@IE@QlrU|f$z*lRTHii;B052077yuEsC)O8BFrA<{^YwSNc4rq_6_Gq9c8#{%nNR0v zN7A#z(u#66jU#t*#B8TNz76zRAODa!HnY8=Y(=GQyBd(R8Hxbz`Sq4qRI#};*F zu|0ZcyGzmhu0i5op8eBa;xXP~CY%!<|aE*bm(HcKC0XW^x^?uKQ8j zv!c)D@E_Mn<+n+LcK}1OYtUD+*6yRKPFUMSRR@vtg494}%6njTK#&Qg1cg~~GcbkK z_nyBPvpMIyQ;a{aLJT*Q+9-43otEn2r_wwgtfs@L$KhN8uEA?Xj~72E^#WwlPe7qO z9cK8O4~m|=><`Lvn-PHQiQeWbBDD@wqY4Q8wsCm-;}b7|1C#<+l-j1C`;HCNvZxo2 z1{zfvuE?9X2K?~!);kAy_PUBjGo!51Qsy`zFGXBT(-XfLAAe3==n1R>Lg(n*GrxN-o2v=mhDKUoJ7-<8v|3_PmnK?$tT zJ(|XMvvzlLbSf%hN{k)wEtI~G9!Seh-Y(mH{kk!bUKCK>vqJ`J^hfJNf52Xa9qOMQ zHj$9)dVS=;kY|A4i;H4VZ?0IZn-mc!aJPshbY;(opJI@QL-wmMHM@XMYbfBuHNy4b zIjDQ!SV6ex1YTa{!QQaXAPM3>eIm%kWZ-IE@lZ#6AP+vaSmDI8nF<}hAoxgA^8VUolR38ivPHn>R%ezl=fhx?@hm8VwbH6B|_5`9L z8`24BZ+wDtGh;gW>kgXj?A`al~HIQ~k$ z<}#OlrO#E;qKMC!v02~?L_5;7mtZ~^dmR(Go9PS#rfc48G^j$1!+c4EePR&$ND3zX zq(ELy=pmp61JDAn4**FeJOtmIFJ?u8_QZAdP;d4c6EG2lfdC1(7q&+W+$_kZucaJ9 z#sNz1v&-+b=DTPTZ7*)&)yf?0E)^AvF_;QD3JAP|LW}qs0h?;9EgBVIOeRuE=5Bna z8E$gFEa-+L&5??EotmUsH?pIWsur?Y8TAHi2`5m}fA7>LFH$u^CCn-1E8=?Yvc@GK zis(?MedAZ`=Tl0!kG!w$U`1sbZ=i-mk3YeR#CeC8x$WfC&9I8)utjj}n=k$tsH;U> z$3%*wm$`P!jv_(|L8u?2inkICQ;}NqBMA!NBG3WmG7MV4aSy8R%9S*6x3Fi+15uh# zSM7_Euz`%_us95cKD;m+k~AjmY$ae`0(~js2uM4n#ap7^9yoIXEtVZ8r##Lj|KPajs}JVp2L19vf^P+dlf7E7T%k6KX946WlbQOpLeYf_xYo+ z`0JE{NSon;t^ZOXT8(}aDCVgK3YbH2%1mG+7;?v{QiqJh1hzb`&~Fjb_+^EuqtsW- zB=Ag}hfq$jC|RyEuGQW@&UJ*B*Vzh4a0E!QOjw~IhB)N%cVB)hP)wag7lyd^$2=N+ z4!M^=tc1f&@Sp7<3v#abt%_2!`EzLZAHbm-+R|$~W~YSs2ds7NO^KfUS^rHjzG&|? zPgn~JnzJ!>t^voAaLxC*&Dekv;0%InPcPL;Jo5RdT~+QcJp5)JM;-Z(*28m3|0VNv3!*KMZBQqC0cr=KCsKe`BkfC0!y<;n?XPO|6_+wm@|UCJ4BX%# zk5Be2$0C4O6cB|g_+O|>C@Q`HFPoNt?XL%7v8A90SP!?=hz1S8QpLAN2Zf^Nr?*;W zkQgw{x~C^Xq(l{@dnWhxVeYU4YdI0tjXm9;{*#Yw1M%3WbUscJ)M20CYSGOL{dOhb zh#*OO>9Np83lTnD=S%!4ErwW#h4MtzvfY6US)XWqy$HT*QLjU@uf<{2gc|0Lz4UQP z+HyepO+B3?C^RX(>9}bE8hTDjkt{NP&j*|aIiUPKTf$MQ&fGC6SK9op>)YZMxUnhY z4MoHWTI0+)hIN=1;yigley8X4-?VSi+NqM&xR{FJFnMv&(6lLqrSU+-y~r>?VTj>F9#7=pLr^}$DUWDBVHC=|W-(N-c#?vC@*#CRLo1ttmm4BqB+Q3FP*)a?cpHqCL`>-hnLMFIp>V9eJLiuk3L*mqSSqsZmSV&4A&F z{PU+h+5+79vz~nlTpY^b8orQSd~qlL?8s4jo#_^@A2Q6TZpNK)DLbDTvN`)0WY;Tzxp3zXDN&8CR4MHv11J2opoNU?P(Okn-7ax zdNdjRwgL}y2o&XR_T4TA1`b%z3v{6K z?9tqYfxk*We&Kx@2@MSz@Vcm#o5(KTUhUbG_}B4osDsWT8tSl_T$DnR;N)n_R*s}c zBe?$ZXeg5;u59DYVGw?vLSG8I|IgzB>>O!$nHlP((o#O<%YP+%S-VQ}LC+-%$ijto zjN3?(lPOU==iWY^)&TC{*Qi&K2t3fY)D-^;B@TlPcMI5ZBP@f0qdSM=o^d@}3rK8k z!;NaaBNHQzZ{M3|FSc&3BeHIoHhrV(^%gfR&RAN7Nej?Wl}YSKgzP4He|1fp)fz5! z12&3{ApSI7`@+P0G!k!Q;bS~ssD$CS@hPqf>8C0OC?my~Ii}*&8qwpKw?M&8W>QrJ^Z(`POL4 z!A0rE&Gy^AY`g^ZXcYLye#Sns1=PoazXCP8^VqZr{)^Bl1?5oqX{;> zm6*rmuV5|g`wE|W_%=Lwf&d837!1c;C?ZFCq6#*{Dxl{dl0dx){BQb2vw45CPK**2-S~$`2gXvBkSe)AC7^{_%N{>D)sV zP+*Og6HmeD479u7VXp9k+v6EaXjv;(G-;``NKaV@HYU_7+^5-e-&{~e9^x*LsE&mo z@DsTtq4>E-&aX&tY9G>XfiF+}KxpIX1^9|k_Uh{2jr{^Y*+==>A{QNPIbx9WgUacc z43|a2nI*+57CI^y4US0ByG0Lc(V>Hueqsa26t!|yMrFM6?!ocSN4UJ`MOQC7f&1du ztfkaxR8_7jo41wX3TGSR{SLOTIWS?4`KDV~hLm8b@Ir6vo zGiWiLiJ5jVD$QSy^vFugom@tyO)XL;_;8RQ?xmj%9I)0{C>g}GK!b__>$wv#BKBF> zaQ18=PhSjH+sY%KU9#$QmmWjBa_wG@Y@`<0z{7>yxKd}a!D@9$T=G!(em}i6W*@YEO7X{r{u?jrr$whO1Tb zz{PF{S@Usm6!{uvNl;<1HC=zJZ5|-((x4Re{3gIA?G$9xTR1Edr}1g9oAmxS7l@P^ zx{;)@l2SX|A$m(vK}655d16JOY_wz=9!nL{qwqaYF=DF)WYBsgGa5|wwR6iOI8ukO zn`ni^ctcy+uGxKLtOb=8L6QJ0YESTHNQq?bX(D5sm5<9$IJ6S%olS6M$;S7U!d<$( zKm7u?GI!a8Bt=1hW|WGq5rXb5Bon+lPYdNy72Qps$*V~XWV(m9SW>_DwZE~PJD}6| z+HD;=POslOoukxUpcJH`Cx?s7S~dW$cjvs&*G z2qB{smCc&%@S@fx_!rQJfyYdOQ$p3MTtQ@Ht$?;n zQs+6r#qi;Tmf`m8{dDk&pwb3-8Fj;1>f1V_Z)6oqdBBPC>bY-W&4h?D30no z_L3X2_Oj+;$n+S1FyjXz7|pM4!ihFiCTqdUEbW%YRtVtar^0|%J=0Fl$N;7aMQmu= z_g${IudcrG!DMHNB}5=CR|XM~(hAJTq5D{Re4Q|!Cqun-ni+8>qDNCtmAR#P5go2- zYq{`)*~xA;j3JC;$QlT?rf1z}<*#!`&H+6Gpu}^-`!~(V6;>2Z(#T2h=}~1ww6h-$ z+GEwgmg2zLbHUv9bHCzZt!fb{9Qb{7>_;d9mEN9HT}b4TR(#-3B{~<||FMO@3E$hZ zFt?<$DzOV)A?K&q+;X?)jW1-J6au;Rc?}S(HHXN+x1=bvXgL+~ewKn)pYT<& z3f!?fFW|1NM|u}|z!BCll``nL<81ymux+hK*??U->pBHmx`iug*xFb>jg+RdAZIvy ze^u=1enz|5FMi|N)}+&ygE;>DS-4I_54-A}x2i7xv*)7RwTsU_wnN7PREcoH4r-2O847mvoGK z?2u+5JVk2kcSr%XG7Sc7o@{lyuN63#O0XR1HZJ zf+c&PL^cl?TB?(qk+tP`oqOkr(LA*Eo#6vClX%v!Flt<#<@S9-zx$-_M%u0OfwU0~ z29Zu?7?4q`h61BGzjfqPR}&K*M|6~=rqD#UJ{j`e(WIALGKT9jDgirWe$-(W(&O)8 zbrV#Na@+H7s&_!nPSH$tQtj^r9{{r~Cf~39i>q1vcU>j4;mK2>YaSnb_^7WAs2;gNs$%jsM{6@ zz<>Tf>Y|vB$<=o1!XTEP-VEoL@70u(V7RAhupAh|tq6q7opz@aLJMjp004@inD&GH zN4X{fZ`ru`BnxWk_P()H?3Y8%L2u=adL2LkyOuBG1HqQz)}W$s^vwN}+BUb+!bL;? zI}z>pAVuR|Q)v47Br<>iA@leFv9JI-6A-P7)m8>cn-CWJ7XwIe3-Wq_b%Gg3Y}mf| zYzzPcTwn(jf%NcV(fkrTifTCF4SDQ)qQDK?myJnU@PWgWbeLS@mN`Y1kQlVGBt&-W z;EnmGTTNrTeW+gdc+YML0^e>8?nZH@zs@(Tbn07p zvW{2hR^|kuLIL_Bmj-(VYt#gDaN!@!PQ4lJhrLPc2k^B&sZuQhAHFm#M@Z9tp3-kH zkv9!G`BXk`Ipd%=?)7Gju+oY5f1pHldvd=YdAfk)u#)|*O4Ym zDBN3q`7e+-r??r4OFu1|%=x>$F8kXX$sB9U=!LvV$d9-YlrzxFQ70yRf5!js{Uw^- z_ExhO`zGQ~rn&$^YRQhnhyg~w7C;j;#$tEeNEX|V1`Mw-R^Bl>kxI5Osb1&yonUXH z8HYYB7p|qkM+a7@F2@~&-3p^~I4Eua+BA}ek8nl;E(YN82u>fZ#XEjh?E9E_&m_tX z(@R{le*FwBB*VwXyexVAC-&qQez`2Wb0Kuis~V<9H>I)6WX`en4T`d09bF@g#{u6z zT!VOY$pQM$%QyY|Cbfm=jdRr}lUQL(iLz|M?n-6>mCV>ux)kV<8VVsY>{6e<$^&98>k-2?l$c$Uil3)<3M zrH?Ivxd}sv$PUqN24NY>_Qax4^(A4)HBW|6k*LeGWZFD@H)N&Wh`JU_gm~(R8T=t1 zCW3b3TIxoHcQgjg)GN3EHf=`@yvF8LK`+z=pXub)Rc;l6l0RO!9o(ORL!VIOVJUSjvdJg53m9Nt|LDp* zY1D3NFI8f#b?8rjprmH#aja|G+{%qj z@bx(2Kq9yKGO#GDO7owBFdI&5qtffApff7|?N4?)=j81r7r(&Z4M77jy%B29gynrR(} z^$L=L+S_|PE*coH{Y)%{$p2w`Oo2opy zd(tXA%@y7LrjaOt1!&sdLcU=kQ?>laU%Fb3N7?6J|EmsD%C8jYDC(@wW(m9841(N1 z)qs80CS6PfVpyhA?k1UnIpINx->6iy?CC!_C#Mdnl<*gG+9%!q+BXn#Hc0W=;mS)J zhlPf_-<;o3b`xp4pj1kX+v>z6rnTmpn=q98T#gNDE6T8As~aADH{TwLs^T+k>Cze* zZxLJi<9{h_^Krv7tqK&C!{yN!UdZqun4m@<0&^P=uv_=L37Lpgb7o={_a*8~c>$sa zBg*wZ2=G0Wo(CaiZ5JgO%1p)Q+|>)DAz)Vong^Z|AFFpa3AI^NF%dCwQNW)Ga7}FT z+*y};7$Ktm_lDV}HidSGe=4r7e*~K;0iNXXm58t|8#B2TDZLVgj~qmlA|u-g-`3@2 z4T-J)Yfi2XQA9*i8X}z@>?~$731|Spp>%`^Uc@Qpjs3VF&1=8O2xfM$J_(j#e0fbq zvbDp;njuh54QE@7%QdW2F>WBHikM?gS=$@-;u6CiERDUk{%rz6DKU_09n>H{FKc~s zM4@CePwv?KZ7zTBjxl0lLU%fJV(Ezl8RJ4DeF;jE=>veH=91X$J`Om*9DifRu-09k zSHP!+L^x{B{d{}hEdF)iw2YlEoWCD9Jwiu|1P6!_sofc1(Zz7qOR=Bv+Tl1rDBgL;ty1Y+wN z^3O`AxkfjLmMCfc{25;(>3bR4C+^8|2Vy_nNMuSMZFK^ zNDU4G!LSawec{z$e~VH-ZWBL4m(%<2+Il*c#xQFUsrQdJ=#%cQ<|T%)`Vn}@u1LQS zN@x1~nOKrxoo9MN#guU8&}WQA4NEYtZ6B{N7EbmnB6)-}KmI+@Y48()b>NtF{tW|GuP1u%QbRXZK~lTT@K^-SFsE+R)=Mgg-~DZQ9>X;2Ph!h zVC-R~CTYb^g?QqD8+s67-PrE%ebPmPeWhQUlNA;Jw7aE~Am*JM9r+nPaIiUoMU-`2 zqdB5?cuAc+*ZtvvZD`&>uY2*UW|nr&beiq&XQMCICHDqsprvc_ z02ul^p_23+fy;NeMI6v-0pJVLX}~w-+oriz^oO(JuqIdBGF_uuljp zt^e-N(&DNL{{n2x_$HzLut1YQ6sS@!dSd` zRaya}pNnFrXs`WEJVe)s3@1t;_Ke5&hflN2@|%5Vz4S|bWV9wsJHX;l;lXwZE;O;?YXSN zW^P9Yw{KUoeJ#`KN>UfoI=1v6R(*<_eILT}wcZVp&brkkkEI;EQr9)7F8%)RQRA2= zIAGDMrVH`7>k8^n3UZNLMAzlO7&>ZU0ibzJp|M|OzMRG_Ylg;%%&&gD*z5(E4UcW$X;kgJmU zu_|D=e1^ctS_Ltcq)k zP#^Z@Rjbf=uhX5Lr%+1?7+jDYz%a*(2U5hUR~q^rqpd@v-O<}2j4~a*r9klEvkJx> zW@X3r*3qJY+?JX4p}_BdXwUgzC2x?#995lr4%Ude5gO0%w`>gYr~!rkujo48)y?|@ z-_D86LgcA4m-gut(2uPCKpdB-Pg1+PJ@X4Al~wNqA`Ys(FP%kkQBn?2h%?jF0vB5_|#KPm%{ zu@owjq=@)H_#iRQqO*_KlROE}7RN3`km+7z%)=4wXU^3e)Ha+0K~Jp`b&pH$ zZFn@-&&$vjAtt0`8~yQ~>uAiOXI@Q>=QE6T9RE;{z?iGr4{uJDUxIj5ePWHMqGCNA z$PYKA4(O>@P&%Vk2$e%xb393%4`f0^S>XP796RcMvARFL$4UP8EW2uo`SemX+fwH7 zOaQ0ks=djbRdYB;t0R%gxO-3}4N0+7bWKW)_+)xWiN-(C{EKoN9TeXWc&npJV`xS; zW8O@h;V@NxW5I*#n{%P!5g+m(g}Z^nV&?=c0z(~AtGiX`J)*J0%CS|t(JoTe!Vunz zUx#fx&HXU(dO~;q^S_DZvlqL)z2@rOCyosf zK2fOD1KcKmAc*#5d2RUSR#rW;4Jx2#v&9@#F9Yxb;~6C{MY_&yi2XnDCupon*m3U!q*0XBkd#KZ_h#$Wr#6?S?RdA+ zKV42`c_}RZBX_i`=QY)pw6Lqt%lYgJ>891Ow0Ivz2bDNe)x<k_h0pQoQ z?hSYtz@v`UXWx2PT<@ue*bB*f5?O-%)jN>BoHt7Mkx-gj;}($>Q1*^R^a==GqOuIk zulCaDge?+tf*U++41NoK8J5i%*e$XJXE3d^-D|KwB2{xLT)G!jnLN6C_Bg>$rvLkZ*|Dgd;!Z^rCH)&y&BcG-V-nLa_mrnM&n z#}@L6Ms&y+diOt)Txph>NWbX!2JvrU5E^-t8^1*VB%y62r#f2Nb`)*7D_8(=RBNdo zHDCS2%r0EeR^1B{pQA!Hiz`3m@oke2&x_5NPCL5EAYI-A8P^RO5%r7)9G?H6 z_ltQbK-)WNJK8c{UxMz=W4FHpVXzp?*!Q;KUL%kqGR)8Da{)k?S5hmu^Q0DI@Vmrj zaYPyZFTLtaHUT^Vr z96FUa-;v-G%LtW@`tqDBr5M<7`!qLWQ4sTTRTHhsOY_xaper1)V+{o^H4wK_&PuDg z)ei5WH`&2!7(Mx$T3nc?*B68Bc32GyJzDYn3(M5XIN6^3a+_(j#frh_NeO7=FoLqSJ9?;3vfl*KVtrZrkELs zdw%6rs1dPXo;ZZ-ycQ|g3nS(Ctw#~c((6SI_X(_#tI{{Lk$r>gJyR}SOVuS|gSZo1TR^(@$(ER^N27`T>u zQix$WL)+1e=~cETfo;FWsuZYYsTe6(T(7OD8~l>|PO6mBA=tx^k8E;f9(+Mx+uC7sw-G~MV4|ns- zhMFG)|9y^BgZB=c!ytr5SvZO%i z1r?j2lucvkq=b@TRMahVGB_2F?u|Vb3r-_}#kBS7t{WceUVm-0KdVkwqR*!C4vLFx z#DOZRCONT4Fl=7sQA<7}mCJ@{;p;{H>0K~`D@kM8@p%9a zit3>~GZwJ86xwEh0>`pD9nIC3`bxyn6%SzE<4=x$6%ID&;m6j5{|+TQj8%WF?^$5O zdL5coYb(6??)Nz^OAE&iEiJK0hHwY$GAkYuBe-Alc*P4FR~*>=rq5o z=tKexPmWK0AAoXPZqykDACQex+}C#Z-Soi%D&h^|C>0F(+@3G|Edo^oitr_^zOd$7 zYWTXBp58(7v6uQ4+-A(gkA1NfT9X9s-3Y+N;dwj_KA`igvUr)n1wD$}so=J~_LnPb zD{coCOyfAB?}r3}!;|l9eU?ceT}z!rr%GS-+wg!I$w?X!uMDGq5Krsi2xc;!+rLRS z>m(p}{=7~E*l_F2SsqaaQ|735bK%~8EGXv|*^iIh4i5f#GS^ayo*-V0!RPpkQ$lx< z|Nh#ERtv(qIfK{?@oHq#t)RTN^jFu=hM^KWlc_5=r-DsDIbs+B)NSoYvNPbD2eOi7 z+YSa+hwGg3m6%r!^d=G;$8pUta<=jPuNgR0EVSSnO$&0(pE(no8hh+5-dM5nuZSG zJWGojK040qofpc~orC+?E}3U#VRtjqn zMm7$?f=>D3yrR|Af_Nu)8u=aAELm82pZig~Pk@)z`1CkpsOl|H>GssY$&el`Cw*(Q z|Mnfba@%Fi49!`*G=+mhiDniN<*Vx=Szn#zYJy(FFo2n%oyWm=XPYGU#i@fvdF{%L z`8v)v)$!1V_a)`qW)Bi?&1+D5Y=US{2uuC7aqEWNDY}WMG!7FE^OPcJbnrn5xRrg<&UuDaz&OPrEa3V zna6YVteM`-Mtc~k6Vy<(`nQciJ07FQ?C5MGP>6eGE)!D}{7jqZ*V1ZIU8w}Fl&V)1 zkLgx&e#o{Z)oObCay)wy|5&EgO?4r+XSqp?J(>*-72XDlqR{tP%4+r1jBje75Qu6@ zYm|@HcpkkL3Qgg_A65f*mVV8|(bBsqGCEW=J5Y|ZVaN=LUc;#p2@Z6m#nodwr9(+@Z$T zb97tL(N2mM&;95s9p0kN^=0-vV<)A)2Ae)Wd{P1u@N!}8pqDJ1Ny$85N05zehHjzz zb3_OH2n`=%JU?73 zHfaLF^8;qbwCkc6r{}@ao-`)*pTZPrY9;YuXv6sPvZLbf6k-3=Vap3@0xyTQ_~^qn zPj849a8=KRMlqc)7{vG>ctLH$19kJqNwjPalF)*bb`7JeP|4f`*W zn60ruB{Z!SY{s1?D}=GPAY3y2ekv-g1_>VfcjPgTnhLt<3x)MQt|AwJYOIjBpFT+L zz%&M|LouB{r57j@{n0-*Gwz7;eF;~iHUtbAK{etRyyZpwR z3NjLUOZ6e-b_Gdvk^CG}XXUnDWe6Vj>DzG#qqz=78;zPoxO_5e-p8Xj3W%b6r?W;cX5PE_T*8P zyI%%CK?`xAzm)BL+D0gm}@)V$b09!z$zgIC=2fBU3t+2sLaqY=w zX!?9AQm^Pua+X|@Hdqpa@|Zn!llu!!%1o7Z?r?9OW$^S=NFXw7R2?+bf-j~9XEs~@&wU0Ss zS@#zt$|SW`TJt;HmQ0SwaTR-FH9_AcO-PW_Vwj?7as&oXdi6>`P@pAkW;Sql6}j+kG;Sy^-LjVgNrO zmekN{x0=w!57e**WAu_x3=>0F8%V$YMG%v~7*zGrVBMk;B@wlw)0!MHaZ~%6?89To zFWvIJyo%;d-9$h@ow32(wwr#a8Qk=^AM5X<;=ytfy&<}J20l`o; z7!cq>lKLPaVC83^79RW$n_Rv>tQyL|0XZ1xQosY8tP-LQZ+YIQIqc7==R`RZMLQ5H zm#WKat(a!fHzU@K;dP}F+0YErKQyeG6HitSqB7tL1ZRkI5PcYC(E%b_84k~yk#(uE zwo3$PS_MfApVVmZ>UW!fMn{@_EmZT6dBQ?n3x+UufM#z%NFBR+sY3|SuBqE8DjoD# zY~QC|RV3}Cq6@k=;uukgW_Hk|r_8wf%}{6Ml5XR~7p-M`wVia{~}A{<*W zs~BO{e{XT-nR>>|4)Nrc0}xo;hP9Td zkc+MIV#z$^QW-0O%tJur7l8$!7AFrn>8TZ{d?zWO21)FQZfsb-3{CwXmEu@4G05f{)Fm(wV!6r=@smE}; zzoX~`Mpvc4_Y~KxO$(?pY0)QD_C|h3uk+_RM2(MsVf;ui(b~vsRfJHlQmicaQzXib zETwL?je^6HoyL825w?#SNPJz2yhx(@V|TIi?@2bR<~AmB{__RPphABh@VKUGYT<_1 zTnP?|m7vHoTKe#v_UbOgl|tv76;<XPCo{k(;K!4WfaeWj^r@^&+4t$>jilns(;Tbay-9E$l1#E&5CqFQ`6n@o)U@(ji zCkw(15tdKKhB5QBW8?~QI*lD&nL@9g5$YOW6o+i^*4tfm*?i&%M1R(*L zOHLf(BMYKG;oq$}Dv%aJ1r~Ty+tIF0OauT_XmO_w%EZ7h zSFXlO2D}!sCSFYmoP)?cYtiaI5u{*^60HNt8;eUz5QOE&z~zzc!lFy5%AjxR4eYD# zN;gE@@X@o_o543;bxjT%A}b+llVc73_}$zS7Ix1R+goEPR8dTiFXU7SKmQ!W!;L|# zokBELQ*H3vY^NWGH^~Kx86o>P+6A*xI}nF6?wYEAjO7s(QU63YcDdLY04f z!FrG+tF39;e!AUCLJr#1A#x+@WHidmAL(JK*)%Wix*LklH3HZY3ZfQi>p1~;G6jxo zOpK$sX%>27!5zzCId91hGQ;9eJ)vp-lH(#t)|U*VKaTY+gN$I5}>a>sMKfa)(u=*FEzfEkum?0w^NIAp`YO2gx8p z-nX}r$SKy>ztMUGPT9>s6TRFzr+Wd}vij&X7rDu&C}kZ3B%)*lw0jV)4v7{Kv5fFn zc{AAn1NA_>Lo~o|CuSk`2}&r#S30Lu>s~GMcLoM6KK@Q$<*STy>6Ep$;|h3%QC5 z2;8Rs#tG4<;Q5)2##9RY!h|mwgDJQRndBfNcrF!`vO8`gMxKTb2UcebXc@I35ynb1 z_|<;T3Rs!R2dBJ{$0XqVH~h~JFs)k`43smY3~3lD5G6P-49PD|mtAT)P1o7$;_*9f z`GYdIq}qqaY}5(^&KkAuK%;%>vboo?dp31}LBz)c3WB2G4T{nMG8MU>PafiFI5Exy~jpOGaC28j4zVIff%^EF!1Ie-kt zQwvaO8i5t6!Tb>p0&j8zKv>yqiSdPFuUaRNq=?kc{DXqFNWU$^hf1ZwIEE9_A{!is`Kl&LVj!6*(D#$@c} zS$Y{>bF(f{jbxPxl_U&%As=^9#%6L_3F-QB$h<6U!-v^NBVs8gqLdpSasU76wr?cg zcfVhX6;HOpBr3oo@O+*wyU#<^T67NF-9H00>17=_;g>7I_C33S z&6a@eb(=MEmn10oW*t#0o-C{ommaVv1fUyecldQ#o^L_2&UD3oRw92d{JIt(uy(}# z$VN>-3j@-)h`!;y_r@U^a9vl%PiA;cd;`v*7sF^}jzon|^w>3cfQMTj%dn-**UNZh z;!)W3*qpCGs)2HPUjU6lo-h*jEw}So?ipW-P2~4wQZCP-<)!tPTF@SlNbUfjAkZq8 zg)-Cy_V|{8z;q8{<>gPZ<&+JjHQ8rU!lhcp>PHh`gKe)Y{W4-=h-Sfg?hi{vLzhhA z_%&)nxhBVAmau)SaAsqdgRYwiYGOnrRY zJSnd;M_~{tl!fmeLsx397O8utG~DQ6tnSQf-jtQelA9k~Bf+b3(tVf(o}9jc4IZQQ zWUYuO8TiE&K!{8RJc=|cqcg_@8k3H;L z^lgqzp9pM#H&S$VDn3;^)tYbmn;vw04cw0vDs zP%H<@T-F%mn|Z|YlEhfUu{J55RpgRmE;?XX+0Z5aC1xth1|3 zIyxeYK#)M3y7wnVP(2m%<)Hcf1e#3)S(G>=$^8Jdh~AF~mxQUrT3 zGeByE+((rgYOAk|W1dZbC#)q+OYp#I1Xj7B$AXV;jh=&oBf-@65?U6W1?p+oYlMKK z-4S#P>BXpUp}jmz3up|ktl+W$g#)$dapq_h*ofU99V@hF0~5v_55h6jslQfM9m4)~ z1=Vdc$QJ%!EJydqnWpxrR&wzm6viw5$Am13p~I{dD39g(F4y_w8-SHV}6UMI|j*tZDOW6 zoA|1O5(W%GY`#y1fn?MtrY(m8yN>R8aR50_pT_a%Gp!0s@dvyPaFq#ohohm zB%&^_x6LRV5m=&=;Gzr+uGL^6YLtmh(EuTGEiB?lU~GK^KfH1iXZ?x?cRE z4)Y6n`QMSgj;}b%fiXbLiIGDOb84+8DN$DMMsF%FPuihh9+)|8Ob+T*h4829N3m~S zxv6nDqltFfbNRTE{(J~Zs77ua7L(P-k&QC6IOhOBB@N(g?Sb({;`M9O0-&1N)XNW$ zA}XU#NzlC)`Nh94xD;yRqQ@F6`5!WZE)_{f2+~#3s2)X%0qk3iQz0Z811C_rF9xI& zITQe6stzj7Mq9%FMB}GN8@DKvKEt^+fuzh;_39y>T4YRuKGokamgTyX%gCgZZF9ru z0wMAHB+^Q3%a=h!t6m!y^@wlhp}*}F-IY}%`p;MwsfUl-SSg5cO_iTNPhKs~W$c-; z(?&2E?8c_n{#j@W++x_dHbfs)hVq>?G(XR^iwbzS9179=+`=TLo5~vr6%jh>FpZSo z9jwSIo~N_?0fzi7SY3Sw+czm|zgl+yR|x6$zHZY0Vk{+KwRcc!*7KU5#Cc$*e%DC% zLB(%ihxDq?bg6>18%ni_<#+QC7!&NOo029q(r?(3wR}6Lw1-5P_4fC%{NXr+rU(TD zH`bRR*l|)NXh3DPBa3Wqt$#+Y{7y7yvPjEp$dvT$Z9u9FmI-T~A47@7cv3ZaWMI`q zsScs}IDMy3Tx_mFiv5n3p5hui!$F1m@qFALaFz4cdaTVK%kg9cv3BXoy>LqLxDv5A z=-{AU7C6I^N|!?y#rc?Y5c&3koc*iM+Srm>1c)>DU~sn6&%?KnihTb;d#F%bxa z{k??76OIa2oiad*Vo3Skr~DkcQ8;;NoZgZU!p84zd*vhRlc6O;98GxF!m7`B7)wo| zVUimc!(1qwp&J@$iP$1~n1uh>s(zn0a3|A#wpBy;rTq;izhii46Rhyzx8qaHEwr-$ zf6Xu3gyzR`=*w{tn^l>_M%O$(fThO~D(vcyE*NfzYuGEh_a0ZCEjpt?{XtVW$y_6h z;jl?%-w!jfVu~!4;;Wk;q7rDotDKK=`G8?X<=NdVk zJ|&(y)ZR8VfxasH_Y&(9;fW%ALjgmO!{XtUo)CD!=H}bXE!`${z{Z0uQpMf*mi~D6 zcEuCRo+RQUP60^K4kJqr6Q(L~DJl4o{xM`mVl!%f0j7u0Hv)0h2j?;%H>cZ=5oc(v zR!lJq4`;vT`H*I@gqdL#o^oB>3FxNKT`s(0BQF|4{>9|pYl4jIo(C8%Lh%!CxX|aX zF6PJ0Opx2FE2Cf;0mAU_YRZ=B6RLpO>4LtSV;@cGwO^f)mj(UIAtk7biB{ozZjtWs z_+Jh)0`OMYsIBF4d0LFANOHRx$OcNy*NK?0dIyO6QAX-B7hOzErasJ{GB%VBp|gg< z{j%~6qtA|K#Ee!3gdOkUIbtfAYtt!^QVno-?JPJge5rK`F1ZDKax;rDU`C6p94Vdn zy`Qb#nv$dT7XjAg)Qo||NjyL2vx}X~&N`c3gzHoM3gC+8aY~Uqsk#E9y?%ec@BWtz z105BU)7(X~6#*A8te*9s^v1lRRMtLK12PN@fH!4{gdc^TWb&1IAA5i^W?@=BEwMyB zB5gOI=D5vme6FhjiKhaVHvue9g)7%F!2vrHYJPYF1@^TSD%w5|k>9;~jq5}_80eKd z;}J&rKSU>LP2q42@G9i>^M7S-aJvWcelMLF3q*DRO(SxR3K;ifpc5q}K=IkQaG-$g z0=pAB`aK0g9Lb$)^Bb|;P9amb9?9qNy}F!ibU!?`VY&EXp3ygeP!nZdf29=9wVgOR z@Zt-Q%5tfaooY{lZj5+?vLmG4(U( zipp{U+zWuqb8?U|6h>FJQ5`cx)!usZ=F8jwnIgB*QdJW*YqNx>469H86PA;%E^t0qm_HnXfesfz4mb_xX2^U1GMB4)ZFl@K?!Z zZ`B^fL#n;5PWW9fSmv>q>k#H<-4A=a#m@noJKN#;2ADbbm?2p817}rw5n|2`y zT;O$45Ig(OJW|ueIk7Y0x}^;|83mydoTIQ!9us_PuY#Kaqt-~R9C)>% zjus+#Af%FhAN)U+cJxSBV0)!K$48eK4}QZdUiV9c?DHF;6ZXq=FXSblTa1S|k)n_7 z9Y?I{T=nsJF=!pUDzr-5NA`>nr!e^PNL4W7zxObJR*QGB4lUCXh1Fg@dMRJ&)&tY!!m?vIF zsVEEZMHZ^CCPO?j&2B3^u^wPY22exV{mx<#B)=?tlr8WU_AG@pJIM$qe!ZGumes6o zA3$=3>oY2Pc!-48rvg`HMwhW}8Z)WR<~=4N~AIEVu>va|`a8Z5_3 zUJ)v+b+$z|G7d6W=E7{N?HWIObcF!OB;s*`o6*mp~ zFMq4+awF_Oh`X-4myYz-0@YoD7x8AAqL0v0ckPfvmr1~WnSTlCJ7I-6gfo{$TY*`O z7l!z77(671z8e~l;lC$RlnoV`c=gR!u&4pDQ-u2c0NppAd zhKwq@Ow9M`TN}mT>2}UfoCz^d@wrNOvq+u*KYOBihP>#w459scN16CxjQ?ssU%SM& zKb^iib7|1~gZ4PvaIcT1=@G(Yo^gU<5s0YCC=!CS)0=0L!gebj^ZHWwcXfrzfgrl% zYLGE$dJAEg(k1kk+iH4VB!X>DH0pABI^Ip+>*za&dkcA zuF0OU5+uYtb`&|y#G5g{Yg_jZ+FY;R{93Z`=6>W)zOJeQ)!FSx*!w&pdCwuRk0oh* z%s_Cx+%iAD5h_c~51}Y_*Ip+xWIGxwMZSv&rIPjn&Xu0o4H zalG*J`X}_$$f#bbiIOEW!O)njXhY zTAiTjAX*#QnscGSw61DSFbyAe9N)Mdy<(v$F@v#Qyu5ZTR7~e6#c%RPiq@<6aBQ!U zCJ`+tbSsE`d?Q_rozKX5g5ddm=IR0Pe2b8Xq|KM#{W02W6(jdnQ&|kC1onsFHq2zP6L0m)VJSAQqxs;wmmdfAVznlL<$q)h1`fn(RJCE1 z@JtD|t!4O3;LEWK1=G?ZTHnpbQUr`L?WcWZqw$@&sHuQr`du#?JA&6?Kg1|KTg$8p=vTFGf$XkS0~0m?DsHbf2T!$U?#uCPszVv z>O2vL6mZu7!3$cm)|Ziy+h-S=NQ6aOT$%s}#H$Q>&JEm_&j5@Ya+>fZgpqoN-Ad%% zjQWBZ%cCvG12mKwmsihx=j)R~D9Cp$r_{6@WiJC&oG2*&j%yGGn{)i*W7-XLHd_8% z6Oyz;Y}vz`K@}7KMMU$csat2v+h%tz4sI+iSX`sN|1bbt5NRvH<697W95Do*dyn2F zzM6mse6~$##use>d_zX6fM)F&G0W`VIO0XH1su51V9+KeZXjwVrJg_qinHr|$M8f7 zxIw>5l9&t_W>eV#ei|hNG7w+sHTCr3c9+(wk3`^7(Lz?%aP6BeQ?o*sAf7W$ z175=XLPQI$$k&CV*HZ&v-Sei?wh9ePmW2!xRxZj}U2{ zS#v^=yRuIJy-XzeVoKl=N%+FVq;)RcdEi-Yj!_X$$9dZK?4w)qI|{QA3gspBUkvZg zas|D-xFgacGRsW&-p1|4z?@PTAmk{cS!{ei4zk!^O}rtDWh zPTKL_i0XQ!r$g3Oo@>7vl}`{0IW^LHg7j+|OovoAwuKhQAWOBv+17|px zFP&N3a96a1hQz(Tovu4Qrkq3qkg5QnJLXpFHLdv0i0sOvJ=2N?|t8S+;s&0`hMGe&krJ znSlI9EBX_q5R2&oT($(uL=OHbnS{_Qx~TR#Okq=)t%*m3IY-0D4P7nGa6zTby}Y_6 zr1ag18q6UGe45`>pOYT|Wqv@#u^SiT^hxeZZ+GDI_^o-AW|O|&QiloNEb>pT8F9G3 znhxsj9PE3y-a^Y@>2ZrhaS@@ZjWFDUNPUf83IVt*&|p(}KVuW?UL+c*C=;r|4|~(M zfD=rF0Sp_}O(?<7uS0?)oU7IErhty3y}L_M+Y!|`>iC+w7>Mm6nU1!-q*L4-+n|z!hocHTP%=g&I+>yGg+ zH{Hi$9_#FGX4s2>0lU2bAQ2M4#?Bo=#Ibhx{%>$R{F=@;Vz$eo2j2t(F(uhM!KIYJbeSNZost~Sv+*piiqV3D>LFY4}eGKN&Jf&ivj z>SRY67n99*oB^y0sV8%_UdU|t&-p!>+2icAcD($-U%68K2?8P#}UyG^@0rgslVD-1;~ix5tm$e1f1z+M*objK$5eW8?8cQU&=O!StMRJ-2B%e zag9#s6;+|VcIQRlbkI5VM{S*}R_n}7G>g6Y*erAb^J@}cfo%mlt_{0HM>s-4Ij_cD z&*zDf+t~v?AXm~=d|-IA*4UHIR zgm|5SyTaZ(VycI6X6#n261zJidRsL;w~ik%R$i2-J=^mwm&rfn*)4xydh&w}mB76U zC@L){ch2pYVZOyXFVD2s%{-~Mp9axI<`KyN$?Kmq0QvRT9%Z$0ak!j<%75Biafkgo zg2*UOh43Qa>Y&HUbFJdg`1EyVvVlI2m1ccG314SI*+?=3_k-g={`z!eF*O`s5V)c& zlG=WRZznIU11kUaK(xW>f3rYk_o{F4>T8DDz0{-S0=)CqDNU{q*$EjEW+F65DFsGz zv~x!68IJjwkFJyfG2Z9%T~L9?N(So-KDwxeJqh~^hRK^z!MnVnOjS}@*?rTHzKqA; zc>hs#ebvJw=jnfqAEV)+dSNM6CTE;Cu3Z61=!521n`o;DFD1+>Ex8rk8y5dAP(^7y z;sV7o2B(Gx&%_t8{!}kyIph2ZIv7VX=gr{&c&6Vhbt^4_ z(KhyZIOm}s)9Ms3CTg&`e`AKC>rEEzO*HQ6va0}L73M+tSG!nahcj_obeEm=h$0%<%#~nrrk_lz~+hNe~lj338cDCu8_^T9N~ch1U_a4 ztqLJye@rZ8CLjV5s08U-=44&#wGcb-YQK(9k!rGS6e&CE3rb4}302eB(PASyqBVDO z-n6S*AT7}=(ENm?b{0r)!E0lR^B3H?r$2nYgjjAFNAvVo_T;KFBjCqI|G&=9uQC8qDAYnf-b@b|J3_Q5*=b)ONh zi>K;nmwvYit|Ocuy!ekBZqEz(h7H2vNpur16}2=6Nt;N#YT6QtESbk`fqmF|&Q`Kz zY{O5kdN;tT;qb5 z-CbjrG67sbjA{xnW91{r_8iK2dX_Xho=?qw1AlLaPSx7fu*vE0UV}{cMe7zX)t3Zh zr}KjauWO6JCh+{0`7B4m0yhjd>(MdOCd@1C zu(=-SD7R#d)vveC=fOn;euZmZ*68=my03%%H$cg(ORI#P*RgY{A>u(0Bhk?ITG!Qa zS4E@@m}tX=-p#C@!qWa>Jh>5J{7ylo1mu|w&om4VN2MEX4adpMqm4LYtBwHDDDYai zpW~hFD78W^d0V-h#Kq5iqWnl`@U2^OmlWmNer7A5G|9}m;HVq5jdJWdKIY>v{r{B9 z6oXDq?I7bW1i%E5+B4UcSnnJsovBzP8y4Y?*#&Z;Us}2Qjz`o`v~%#ICRx4CRl}YJ zBOiQ}#*!T4Bl%y?e(^braN4a!r-+VL3X7=jS1^eX47v17Pby9;5VqF~+@@}s=&&LP za1jU);DKuI8`&>AtWC)B@W#TGJwcJc!r+-AR43tbPSG0e6LF$&afLs*R8z6M9A%lD-kFWN&b)0{Qkre1Fb{ObG z-kT$SYd-wMpIGDFrc#QGW{U~FxzSxb;f&|PNLS|6LHsS@E(Ck=FYOOJDQpzJHY6g` zT&g(_0+Mqyu-UfN9A?0>kT8txj&X|8#!6D${5N4&@?QRDxM+ha|6<>sOi2dUaEgk2 zGHqfxhq#^L@S*STWMEnYg5p6ak(m$VM|)5_YfE7Nt)SKkmK!Iq=-uRzceQCnUhAPs zHrLB+AMZNWSa$=&IB*M>b*TL6(T>OHC9+?p^bQPvh*Fut9>^~BiL6TR1v+3G1{*@{Yg!Hl0A6u3?uQ6zHyDh5*apDv!iDAF*DFGiES0X(+|Q!0Ox zxoFVcs8Seh*i(ha0{560)x!H$vG+rr?MVCDzQ!v@#UQ`kRYva(>W@Fo_MdvfEMw*% z({Umw2&Sbdy5CcAI?o%}k`#0}liHC!@CroDBkXii3=uf~O7qwCJHk%>x^1`Zk!DWk z$j#JQ$kpBDzy~iT?3+}m4EZh=65*=1Wt|G3aqt8VI9x8+w~MykZwX)R5oORo)N*jq#aIE% z3opY4*xSt3k*mORz76ue&ff&epj0%d_r*k??ol%KHTi)mzW00ti54BTtxaf4>eex& z>)GM8@fH4(KSS(m*fywv7^d(X0JO1&lgT7VI@9=yjd?sW@dSCW@|Rhp1hMtv*UeYZ z?)c8)w8FXde95^|G0d{My^Lz(=ZYc6=DTV|Y9PuXwrZQYo_=kLH^QWji5)4brEjhc z4WC%=j_BMc>LQ~S{S~`<5M#Vl7);s}`T;|0P#j_~zNeoT=iYvpn>CT?Oqfj+ZaF$N(?8;9&nt z`Q$V9y!sLNsyPV$fTg>{M3o@BLxa)DU|HKTXNne|B3{G)FRCIXcFlp*2UMcy&S;pN ztVot9MCuGmT3;PBmS z1$)I?eCKY-L#&W&&px{rkHJ{tbSo~f;P4@Li-KuIYUwES|HHGrgU{rI<@j?1n*maP z22DXCfn63z0cT!$-6>$zw32kS+7hh0Smcqke0WB?6v~*gmIbD##0$JfR19~)#Y3%& zAfqcOR_S27K&be+$Sa-33`mtDuQ_c}WHt20HjPGoih`LW#LmXd7GRh%MVZ?tIi)OV zukXXQ8X*JC6S6J9$extYgSdjN?J>+#gDCD}&s?#XQeP(Mt%B+d$NVTuwwwC_4xAbZ z4)s-a0uXj?O>9xSBNP)==P_Z@NIee7VSk5@=MmdfnNNNlI0~R%M9qPq|2a2ip6>2(3FE-Eh!!U%B@(`N1x zQFFuUGw3zrp5Lcn1Kk!fkaZ`U3D#vW1w)ubfuCcXflK{8aS0MxG5K%?;z|(}cbVnA zUZuC<$}D7128B?n@LptD%E-?joS(rTYAR!#w!yWIbDhA{;7PIb_oSOxG@^{pqk1;y zcoPP>TxJGRF-Po!QyAxzH(bx};Khkg%4H|sU#gC#k9UBPUTva^7hG&Swa7yHf9NbT z<9i?l1ay~N6`Rp3&{gp}m|&W{ z+<)-RN54^{-aaB)O=|2y`pBT!u}vrXlg#y}Iq^5#!o%LEx+sT*?KpKV3dnB)8^XSStww05uzLJmM4DcdeX7+Zm^$vu z)7zJei+tI*v)~drjT|MofBVu_cJGedf0=f4qoJ*;rThvvhUuCX9J=QSSYJh~dpEV2 z;;>%ajL=hgNWc?$bW2AtSVtF?ron1f z$@X5zX>ZL10d5}^*xn6=Z1+Z(;$$Q*@j$Ct2#jbwA4?kHTnUj7vCh5@7XIoZ3tu3C z9BX`mT~P>rx{8b3{xr?q&MVaAS@~85{?G>#gxWg>9-805c*uqbq<}vk#JQoStKgmj zrc1&M!~LpHe@#;LAi%xh7k2~MyaSZV-o^wm;W~y<3 zH{9^(9&)uQQ}H`mXOC9^O->(MD&{k?EAQ#CIRD^DU{#TsZ@NXW&0IjJWp2dD|8s7P z7z&dkF_7Li3yk2&AZM{LTr&#uvlrkYhY0-&vRUoqb&c$i9#tBYdG271P&XpU>aB%f zO*RH$KyP9gv?nJ>VkL6$YrhPijFYXuCmXwZ}&&C`-xBEmzM`pIL9QgzsT0i$t4#x>JP4q`7Tz^-9e$ zi}Eg@h4zq#t~fxjDi^d(nL9b=6nCWTpd4}LbCVlcY3I+#^dMMFs$(&^EP%CMe!(E0 zpyLx7l1UUn>A=r{?%+B#(7K83`SBot^`Qii6k}zFRIuT^aNM8ty?43dkvrWBGtjz0 zXJ)w*_`zo>~c&F4;cR`l3~e-`#2;ARPq z=}9#<@n@E><#HiAXnc-#J}BLh7i0l21}qn{H6ZreF~S*s>(2D-{x-s%oBW?A7G;x| zUljm;0@?S}UHrx*j+qD3d#7ExOH>Uk2E_A)v6 zZROP0c4W^x1&)9|ZDLI={osVZHXzF^#LyW~JfHs-fR$;?VPc3PIiP0~flAp*9bMnd zZAl`@uwyJ>%R?{1M0Sz{=rZAwkEkI|H&#ICrjZf)q*~TffMniKjTh}ALzP{p=deQ) z4&$%p8?Qtq2>D20+r#NHedPVHTsQ>XzeE@pW6N@s@ z^4la28Xl(B$3=ez5;u3;;R|pTI!!_{T6EzKYia%A92Ihg>10N>0}X^~RyEEhxg|yb zI7k)l?$b72vUnD59e*-B5O`adCH6|;2hYHmKilC;G|E^OOLY^n)V-vRabY=rps06O zrtqY_2dKbal&*!nrEJoe-cVM3gwn_Ffe>SSd#P6)K{qm!L6?gT`Xhs8kbEeXq}EGUnFr)mh{a^k(%$lP>2X*Hw` z4LM^KeXZ~b`bziP0FVhakt-6J^o^f-e$iF1Mf)7~Q2=t(A+zy;mz%H7?Uo4~`xV;pW1}Y7@abixXn*zt0&_IwX5`k;gyFU=Es4UzW;Ji_@lYEILoO z$<`DjUyqwg={Qf3eS7uOmvQl(;yxIzNsp}p`#hQW+|f29Y+?wt)rp+pX>Niw8kN7! zF3slC*uR_+lTV6nLbbk6-pX`r1rxLxUo`Q;v3f=iIib}bIM?SItElNaFHs8$xKZmZ z3zf;*J4E1q-xqB0EO$x#kte!R)sL)$D{t@mv@JedS!WJJgA>SC33jYm@y4Q`RI%kzsp~(Dn9gtxkO1GjD8t|GOXKXg*A+M#I z*a6n^Up;s<9p3W~h$we4GT_dH{W4LsDVXNgg@dNm%+1PT7bX($45LntB^&m;G(PGUQ%*#IAybnuyu3uymK0fSN)+4G zgmbG@2fKn6VL1}2TvEW%Hon1r?IS+1=Rp;u-oNfNQy4VTKwC08^|;)N(29845^ zK=sDe<#!)Wj*h67d!;+Yk@X)LygP@Y0rKE8M_@`?YwJgLFHd>X$@d ze>yi?d|{8z?uXW<73(yw*k!B-6)G4Xjx#%VTqQw#9HW|*eyg$(d5DRYxUYZ=Oyt`G zT@&wy+F_Emv@x%Yp^2Sq*+yADVq=v^9VQwsoeD zm0R$4jOGpo=#O9s93;8M(a(~kO{Qf#9>fI<_yB~#v+7ZZq?9XMiJBhQ{R{^Xc-?V~ ztQ(vC|NVEGfB&40FaK4NIdS-ml;koYVD^=DjVWzSesNSi2XFGTTCLygLcg?9goGO|)t(t+Ld%>%w%Dj&i2tOkfgp<%eUc0Z z^N!@W%SVS<#aAdzFd+lN`$(9#T35BdO7HU2KG<8(<;VT_Bnt|x7*LYCa^wJ+-Wxx?;T|zIKO=pPY;-TL0xcU9_ShlMf+qIzQ#<)@ zKvwhTXc8l}r;ySgGi_2sBwQ8;)~Ipr*?KR3qJ{q#oKl6k7f8~>Y(zj_u9#oE&kLyg zR|pa~q+t&ILQ#lRy6f=cTT)a!9bFggqsRdAkXkFHl85z zqmOa28mAgoRm~^ZRPfy=0v_t$p;V;tY|82<`IN*RZh*}B|#u7fH!O(Cg6sL2l?Em8UmIm(eB+)aPj+9jugYI}MKKuM(9<9!0By2ub=K&xd! zl)ian&%e~z?iX*6wq!63bu_FjdoJ*22qVaX_K@*xPl_jGm=#T=<*O8_I2CtwlqlO5 zydQT#K5E<-l#PdH@2S+@^=~y0L4`rT`TxtKOc;(+e^C99T{|L(iRt3=Tq4kKQN~Yz z5;+jOZ$HLGWhzH@K|#_llOY<{@QjR2(wWD@Q$FX#MVighv{@UiM)CkoZxw}C1GC%Wy%#L$F#C- z%H=#hhl$Z?RDLxUeFB=p%0ATu%WoJM;`_mzz1|e7SlX5o%&y$ny#>%+nqD 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�hY!GT&(QwH+?3P+ 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

PsU zNLe0$Q2w-jY2&L;Nv^$sthfL-NQtL*-|_<#IL=au@?N26U;oa-t~qjas?sAt4Y z4-pf+1RIW{G?O%x?uIOBlp|mQRM2s&A?rCY$ zXLnnam_mS>`9bvw?D0XPtwJmXAQB6&V)k3(2v;@b=Jo^qjlit;wClv{qn_hQeWW5- zxA_vVAxH6gQJNVz>G@JKsNA;FN91Q?Cy@6@=XUkDxcR^ulw(Ay-aeJ`U{h&->!PjG zFfhWc_9)Rfc*xM-8p&?yNVkBSqG%&I86cAv@D~M5=F0=+WVQjAm(|{9OifX!+2sxn-XIL5 zyqq02)uJh&1|A9er^5AW)TXQV{`3C<%5@}S6(#>N<)=@sl@APJ2=BsUKTGjj3;m1F zVG{mc%}g4w8TSB^fjS$9E>Ruu=5^bksyWsDm!);!=bcK`Cv{BJeW-wx0kjT3HKaw2 zq3JD&=5wKlECABe#GOmg$^y8qxfpFe);e>=#SR!1*QU+LO)}Bv_s#wQj9a{^rFFQ0 z{7Qu#Mp^r-nER~nVBy}`vNPr!r&e`OGTP^Z&9}306Bv1v~62`d}(s9P;45m#@b^KxUo+(@;|29C=rfLUn8aj3?J2 zT;EKguv$yUO&&DEXMyU2GIKZ40oGCt=1{8Z^dt9~FcVMcKM_{;i!Q!z1Bk%s&xRYx z$0`9k;)^l)?s5g4O1g8>k0i!eHb?3q&1}p(bn=1F1(ZTUDlpzULIESd8(Vg_&=Nm& zS~Tm_aI!_KVj%^)2K$>yVN4uS>=HOL{7znFytgdIuwYPedaj@Rr@)&%oWWqj+ifr_ zlgH<=5HVj}vpKD8L~|icY}uPczk9^7>$#sEF}j)T($^Jk)-NR_C}!o*-+-lf?mc>{ z?;8RdlPJ-8>|SqxHxP=+N*95*2K*{5Lh9{S4ZX`#H3da=q!b-GQ0zGy?~hvnBGsV& zgJ$9MZB|Ty<=~it3*fQAa1qyMhWlzTeVQ+y)7SiyS}iljROqG887uxQzW<#$-}*?> z7@6$goxJ(U-NG&^EmWpF$PBv}&>`ZghXG#oZ(80b4?EO)`!KXTd1eNc5uvn|YC+9!qoV!%yfB!%i{9gh3 z)#DhcPjs&%zW`}SQ5EG=1F>)}oLtQz zkkPR#U?$g@r#H7iwz+xDpV4(Xbi<+(4RJcnb=Xp)vprNUffS2315s)0 zk1R%&wzk+t(=qvi3{6S_&^Xfk&x&NIxAd!j=Z9D}CGMWoN70~bkAJ|%w1YqP?}vz68pX_FdP5tCmSlYvLEX`HQ*t( z>NW#ppG-=1ZSUhlfg+|gk7+~3=l=bw-6+6nuV`N}hcg`8w*aX(ad-f;53KPy-$NUS zlZ_`}6fyJ^_kQv4ssS);lY|lXyvW?LC!ZT+#Dmtpc(W4(I##^Z877#@LO=rRqz%Lg zx?C&qm2LeO-LmuvZhr5m$}?pp>?e$GgV;%V0i-Ir3`56_C1?G1O>tTy3f>RIC{ka>HQKn4QL~j8%tfd8+d6qZ^N3R3N}k^3Sty4 zcd$5K+Txhly{R0h;H2fO0aqoLFzGg8CF5-_kmb5w`yk-a&xe@Q|53HZe?}mAPZ)i@ z#`?a9a*e_?Z+XeDa3|I`>N`KLNSa6)>L10m)$MibR}UbeLoxt4^?2DOy21b=9{K6jrvPTWjh$2C@I)7c zy6liRH}1%lVK&9BTOmI4_9>O4PAcAaf@m`S1ce%BHM^e@%$Jn-J`ZB|zp91oQDD&XAX94QQBO6$p*>1Zb5lK8-s|%)JzG$0P1h<-#=|PZlD;b zgXrSP7^UZeJu7x>Qvbdj?aTv|8`J{MGc=cvX?{!uc@zYT!AbBmtW=R?NybRI z?5Grs*`Rm^)6<9?1WDzqXZ2)q^D5b=RI(E*p^jhu5@va9L?zamYx|>hOP(<+hN6Vy zIMy+LdCJL&eb8ul6m@S{ER6TIkNt!BbX`xpJ4hr1cFQ2g6Gxnj`P~??@{QmC*|ZyS zLh5X@;0rfLtFLzpFInt>qmc5=GR@;XC@S`*Zg9m5`TYI<)q!hCDYSJzD8tREyRULH z93%}bWAb2ITaq%LU_%W;l(iso?U1FWyxoMN;IgSJm~u%HN7i$r(}Z9un2Wh8#J*(5 zS&!U5h%h|$Vl%aM>(=+SBbdf|tj<86iyoYxJvd_f-Uqo6W`GyOYhA~@(_jNd@r4iQ zCp`sM9$!}trAUV zk|bA)xBGNQY&e`$D(c|`iU7t#ob5IF6!9-P4CxQ+w{oWr)siI;^>bFtJ05MT>{X4S zVC~nxggovo?PV__W?pV0f!L$Jw`(V3L+>L4XM>6!ap;*#pNVjeaDm{jZP%0J*@hbP zT?&PB?^xam>vXA9NgAKL1y)5#%nGj%6<*dt6d zlMSRb0)}OG#r8@ulUnf!MGdvRjD;{nAHWZCmET4TelCfb7REzh14qdYtQonGaHD4& z((jPV@G9juyViIzhJ~-iwRaq>s?j*kN*QIo4R-t$^530kpDho%H2lv2AS?R#ih`q) zE#o%UqHCyl*nOu#%zUmh>hgxu$2Mr;_fN8kc~0OV07bqTtt(SMgPTf)awVo94V`+f zqrcOQM483FVaeG9kGR;x-2Dt+XG{T0F4gqxvpI>E`nO@Wqi+AO?oKJLY!gvjy$do@ z(aqy!oE|xgMtQ0$;ic89sFxcaz#6&sLJoKURr1h?0qAl*P_CdUS7cXfAVuz=eiX^U zU~kh%@cW1q!%KRMZ33M)$w){+KWCfExGT$3t7|ckvc-!-+IQDX;hL9t83Ll+RlLz8 zdPis>;|kg!?(Z77Y(eW;Z!@(7vDTn~iAifdY;#iz%g~A~??|CfR1DoSr(Frv7(5*Z zNLbqdpbkNl>M-w`r4Se>xN&XC=!&HQz^F&Fs~j`{M1V08NX%dRx@4At{ojgLBV5Eu zCtuOI5?+JTn%W5eIHV@!Y~J0@C?(2|PE|gf5rvHeIxoLgBFIqmg!fRs*FQ~ZQ+l1s zDhERMq9G*7T$dPe^aQi(Ji#=`m*Khv*NSzIOqhH(re|Ud6}w?57t3?t9(MbiseWYX zS5omoGD98WD(3Pj{=zX%Mo5@ZTOd+Pff1~EkR=4m^pXwj(-&N;Tllolcyh%<*<#Zq z-pw^q56G)^IIwu7!W^uKEp~Ta(tBsCWuRGZlp1laWkPHcKs+*ttnK{)eGiqsq2I$y zl21p4OnU8*Np5_S+MGT=sDrvS0lBp(I$=<33vY^RU#LGQ%fK2>B#b7gkPo4@)aRs2 zavjZtDMku6hk2q@qoU%A(pLx4=rX>0!xx$)%@`us9hVTts|2Y zYmZ6eN2S_$fIfl98SWaX$fSBxS{{mVtIjtdzH5>dT+8A>AygehnC5}c+!k&}4K{P` zNwuPQxCFiWeHb7%86NQu^^)ZziB}an(j3r1P>cksWxyo4;#$TRJhhjJv+DFw7K%e~ zTz(;qo|Tq=XvcrmGbzhoN}>^3iKwG6I>78kXcB=%g?_;NNWi6x22_y?1moQ9f`GO(kcf#;S*FGasB z1zKcYqD&9o3Yj!%=mLPi=FC(ed%nXBV)8I^zE*(dlV?HE;O>pmUXw77w&5r)9r-mZ zHe1NCTAgoZpt90azoKPliB?w~_|&{Ph378)#~Hcounn+7o22DL|-sP@;m$rewOrAJwJjrvueMe zi7_eMTrye%mETSqlj2_@6YX%Tq3E7scCuQt8qIU9+7D8F!of3$Oq;^^7EqScAin;_ zOWL%#04{?O3l^ZA!O|8c135gqkq+o-{s8Il-R~#Eq&#Vy0qHd#JDsyFGSQZMr#%2%m>1i7Mb^QdTZfOI`z%W*Ab~D-P7QTo=AXhE^yOLF%hac{gPSx)6YGx! zK7TMv?e{-7EOC==o>ZM#V6JJ9%W3Xb9zl1^TxppyUn)q|)S6f)`nH&XgiLUVAfh`t zbv95T4O)nuCeo-#9YnO~$+BZUrL5j5a!T0uZek#4aD?o~!V)jg;1Ah?v?HkSNMA+~ z*!Kiy-(}j$UWCoE@7x`~r^$VOFjTYU{^1!-{!&@?TQqnPh$#GgI|0GMeDI`;45z82CC@P{j6fFL;?_Zhv87G zz<{O*OisMlh}2Zz5^!evFUqbAprc8!CB4carITZSng7DaGd;uF(24<5K6r=pvdFY9 zw~sRf-{u_^c7q)rn5P(6ho&7%j@?kAW-9lNiOID6FW(o=;McvHqvpEo=66?{Jyqt{ zrfb5**dyXqD`)rEl~N6mihA24hh+-@r|jL+^U3kYKeVKs@Dj5;ue-;%_+bMP7BDWw ztX}_Q8GvggP1rrpqCOXfA(H>HIKyMoroXVQ&wQnZB%B!822i7}xcEW>*#j8yY$|rFKfmi7mY_~BIv>V(r(9n@h zL^~}A$a2OP&U-o51%5NOJN_6Wg}G1OsdL@tbV?P0KG=E#JJ>eaSTv1J<=68M=VyD5 zAHPVOdFq3~42E9FmI%mGQoI<-U@S3Nld#8=L33H)aC@VcJzJ4V^BBYjE}>(T5m$-C zK-{tW;x}fxJm%k747h)Cb_#ep4wMx@WUC7{jkFj=UL(Cu9&u$9i|h<2;c5mvj99Fn zGh{coeHd^C2XSy*84lAbSoOiXK-OHbO~a;cU}q=o|saXZm%tx^+(J$Fcej1 z7VsJkj#fe_brLs4Dgj&_3>A3)gVRz*&$Hl-_yXZ)6BlIzKt0TXocv%;Vb|)R@t``V z=l#OHQM|I1mw&`jSfG1NRbLAW_TqZ>X?D* z?2nKB9}n4$p6m^oJh~|ZbU= zBbHVhmt|%4V5&tLbg`7(U(7p{Or1Rr6iD2m8GVIxa6$;jIFqn@AFm3!_FdULnlc)>eyymr<-`>0${vpa9qPgp_Xrx z6@#}x_G_Rs$P7e(1*GTNxqqLz`AGfHil*zo-?r3Fy{!MG7k&{YK(w1>vdm*!H1|F@ z?S=q&ie*ZnM_3a&poH&)PMuL>Opz1=ebEJE@>LGKe?-c+F%h@u|L8EmQ&(|ND9i;b;=taSaSE0wqxazPa75~d9ZQ(~-u z&oHsCw`aGfEfnz55P`Jsc|25%ttH1yy`ttYG4ODRY#YZmT@$W~osxjXv{rqgtf#$2 zVJy&RCd8h<^^3U~IFln>a5asH2vu90TP$kbJV z2W5|WtVX{cAJrR(BInIA2% z-~nw*-pea2?)^;Ij%uTxc$0A1RJMq)(2|m+>R#`7At<<@58XT_i%gj>rJW3=wv)d7 ztE%z{%7}}j5LozfLqJ6zzm_H-8TBq&j|$%dV4@8E$z!CXfDB>AhO9+M_aeuvi^TgVyzTeGbYuhS{2Qt`bpQr0hCgSgIY+$$Fmgd5 z9dJcb-P=G^M_W_5<((O&)>AA3{pcgImkLv#4ugh~M(*eZ4`(jY9_-FVD@#vm6fW7gT zmkK*;ar*5*E(`KZ=%`1Pwrq%p2flVJhwr9u0m5Nts@``?Y5uKmancfAKfD4&T8o;> zEi^(vn43p@Ftnm+>`(tT^|?C4OMzUF<;)No^@0SeBE^;#5}N59*3B>fYD$y%CXHQoTaK8xshy{etm;pSCOL9%q=4-8oOnDtC=Fi- z%f-byEM7Dq%fDEcjQCxCYQf|)9L=w@ zf~x;OF?ldk16aN$BHz;f7obl2P@wi;0(`Pj4C(z=wWD? z=8qKV6mJ-`J@ml|Jlu>ear<$y1P}^+h}!!+RRx}W1EoI{oAwZ=5B;YnJl*o>-kjv& zT(Na{RbvsJ52?Nk_Zos2FUOxBR2*A>5)7{IIS>BX~x)vybEWkUleUR$#QW`kxh$ zx;`Ux*I!9<>SR5Jf(eEL9ir!>OX41;iXh0a(BoRwR9o~m8wfo~gHvr9LWu9{b>`d2Dd6|8b|HgdPDhPWv&q_cH9dU52Ixuss)$B1ofyO z^Kmn(n3!#&kc?4-9zt(}(i0=*)x!{+x(0_hD)!cn|5Y+*np@toXpLifSx)XH%~J_Hj5@9cFPEXIE?E`Kh4(x?2L(% zuPfMfY(ILKd6>cDxJjq+-y)_wr9vwQLgioaP|E2~k5g_y{T~XJJU1g{kQEUvl`R&+ zfI|VkUMOeK8!zHTN-I*Tb48Xo(T(Ps3K1!e)DT#>1GWZ5aIZCm32C9Hj6njGFqs;3#O_(vwukd)1@ICdjZD zW#%j#^f_X&?MkN?tp9%lEm;Z3t|J+Fc`p9NY-!W33-omGzaWi)OH*AdXMN;L7cItT z0tcM9r28KDf1s{+GS+psuf<9U6MGBmtc76^r%}*Gt&F{|odWQNp!YwJ z!NEn$>9f+A#&s+?zOzy;->iiTKlkg6zE44&v`7NuVpP*Imj+SV7&$x_5s}sK`u(+` z$fWbR9?d$w>-a4p1j5U;qY%Vkp!8uw(rJJq=DjsOZmRy=KT!^$4^OZDYJln_0n4 zS9t6moV>#r5l9G?cLH#z4vU1Ct-i_t6j3AzQS#I4YP(L(C0j7}tp|Nf7m+7Ao_{F? zII^13DG$_|a4e<%ax-0ex1A?HEN-_d)qI6Z5bX0yT5W`MtGN0Lr!>|Z-oOI92*8yl z?ML5o9ch0>3Eb21uC1i6CWwSmA;Wbmo~^jP%M9@#Z6w@t*S0{wq`xPwT@P|pHNBT%vJC7&F&$(f>dbhyd61?5YV^Q*^ zz$8)&mnSox@TPN25yxVE#}<4!gXlMKUU`@@M46r|_?|EF$4+iCQoip&Y6WL-$jEg| zED2{Xf{=9ozqm>4c!l61184YrwAoD1BMwU+8Cg}kWVwhz2^Bc2)MJ1z@etdDmKZUsuI`kGRd3mVA! z+hjOh0IN^s`+>FwI&bfc{M-u?%FG2H?d?wg>neJ47#A)8fqM7qhvFc#H?V3 zBAAT`S=Y-nr>mGq)SdlozXlm&kp$h`$F{r=mnk7}_mxN@(K>q5_K>ggoaUPf0qwJ=u_>O^h^nyYDaRQgk7 zyBt6%ZXn7rqI9wb+rmb9`9N)@yh{_03J~Pq`8D6h;XMESPJK7N#FBF#Zd4yG*R24F zWCt5S(LTgXc)N=#9b6?#mpUu>w?*Fb;8e>cPZT-3sPm+D-{}FnwRc39i4ZLLZSeKj?FlZ z?m$&zCB&1?ZTFNz$|^JBWll+co0R=<+B0Vv-M|IAL z=G*0^u~Po|Fd3-g3`8$n@Mv>0O-5rr7aV3t`4i?3QRyaY3)P@=UYWAXY+{7j^q4)z z#{hNYOE(&vam>HG5&fRS#LSTKVX$>PzzSXRN_HzeYBxzs<~lLTQgW08Dmh>g?u$je z^4Y1>o=_drAJ|4^?>G5u2hI@~BaT=uQrZYqtp~|PtAk)0sUHLzTD!8^CtR0{ENZ?> z=2j;(!5WZKU^Ti@7fb&8KTD<_LP+;I$F0|y<^L951(x!Ad)WL=jilxdi$P)jwx&7- z_fn1#lNF_St8k5HBj40(?Z6TE9ca1rE|~u}t5AA@L!ldAoRti|^Fb!5Xc)4xC&4@F z$XVx-ZZ?q?uDt2W@v82WfxBLT^te#g3fYf0SXZlp>Pt z;^xEd4m%88!_&MfRFA6hVD5cL_9~cgqq_v=tS)4taMm)trNzwmBU#9Q7kPnDT5S_H z3aInKeGZT%^h0%bGNN{Qk>tM7PIK{V)_54I6v~uwq-36)3+_!x{E(XHgmXd~_tird zmj*co^J6glCywq31G1kWyh%|Nhk zib672K^wtB2!%vDAIZY|2t={l>#*eXzzax%Hrvik_m-++ceHjyh?Njj#}fO(x*H97 zy{qFS6tZ>$bt7ybRIYii80w3u_{_tXHljWYDWX-2s*H7hOYeAIX{7>*Qi(^Eubb8$ zTnP8WKw$d&U}9ZbX5itAk~7JU+yIqsO7fpqYl0V>q$)r6xA5Y0a#hQcX4?gguum|1 z(f4AjOCQ}wKlT&q<85QeAEH)p0;a;*)y=NFY83MoG7)B7@m&F4uyr^)Bsxial@Bqq}sup2`77Np#I9?-|})j)t2tBhPGy zwf;U$!4xLI@-yF%gHPu0Ig%}NRl=r+N+)sWs0bv-H1;xL4nA%R z^9iPm)dRBq$BBK1DyLh8wO4@KiV6a49hwl+5JZO~odFeXqd1$iFTPp-?TP5qJ@?8P z%^v&qa(~mEFa{kHwAzbzhD%@YQ1g0yeil$GGNIZaYxszCCv5~OSKF}q-li3W6DA?^ zba#tT4#M1Q3@}FhEl>%;@{^8lkPU|!v#c;{`3zr_cy^8pcK}V+bG=D@Ru67$zt#=)8OKemf@lwBL;MIZ_t?lP`CH z(WePh-L;T8IPdoXcZWOj@uD4Bq^@g_d0~$NJ=sm4%h%K4v`o*!x6-(eK?8A61^yAc z^e*UpB`9rEAmjFac5+@a0tD}zKncnsf&^-w2gz5sAH>!T%Z0Lfshcp0aFEv>db)E* zO+L{7jdc;VGS)y4%Lo^slpg@BBQ{qpc&$lOLpHrVm@c8qI=C|h;JEndc7=l#V!#NcUReYGYs0W_89{nTR!imQeJm78-X_sny~ zSw6PD=a|r*gEgfLm>@^bx-rq*RNq-go8%)9+QJzdZxI5Y;q=QN^?qxvgUu@J&mmZ4 zP^ufWTxi(poS_9`PJy-{- zpm%^6PsbQx>fC`<#DF@Bwtsg50Iz}jbZtNo=s_%Cgd&y@oC?L;AR0t* zQ;>aEfhtG!9f_V`5t_P^$>NHUHd&S)7OL)}tU!8C2}Aa^4_@TiuE)C*j)UMD`wQVM z0yJ3yWb{$;;Ek#@`Mh1A1JydATqYR2OeIPtWi~GKsY9OgEKHQjY}VaxNib_X6M)bl zDsWsLifk2GxdR&hhtfxogfBCa@sJ(X5Wl9Rkx7Q4vs5pLZgQv0ojcF)r=vK`D^p?#L>Om7>o}{3C~73Uo6^nmDaM-eJYumWHyLV7%%U= zu`J%(7TL_PRv5Jff@CEB@4Ws#QNl)oiRWF4OO zXB=Sx#bLD7KUZ`BJTgK2aIyEx(iJn+<$dVQm9Qp;SftJl_(qdQi?3`A_i!t2guIP*l$@~! zLELqA@B#$gC6pZ`+${((uOTT>4FJY=-;+wJr}hJXPt%fxv>0J*8b?R= zE#`E_Ov^Nb7JPTLG=WG6E~7$Mb=P-4(HM-Vrli>zv1ZYhlO|i(ZwC~}_-OC0l?Zq0 zM0~x$@bdRaHYt60chKt;V6Q)h0G1mK%xX&(7j?6C`v+vHru*I2iU5&6#1{k$F=S4A zBEj|5YS&6;rRoAOocN(=SoDN%357ZBflBW96MN=C5<=9Gy#1*?a>D>KGrfO{Nc~eN zudWU;M_4M+%P{UI`Wvw2_^GCmFBZ*E1zX<9W=LXy#5}iRZ*oYH%QMwj6WQB@f<-e* z(VXY$B}Fyp2(%3aac8g)*wcaEG};i#WI{frDm~8V;aOvl$!sYbR2FDS;mG zE`R2o!S(X;)I>Qnb%GfyAXk!-P&Jv^ETRP(Gyrt|#YCYPILw^F&T?b;i^(w{VL{I^ zTYeE``AHMV*4yDKg);^6S6ccg*2*QCKObBs+_O6y>O1E|>2hylM273Pc1fB50q5qV z`Nub(91Akm(*bzv`dpiW?8|6)?a;T4V{JJspex3S_oq!JWgPkxvixNL``mQ1vH~wiz?Nn;Pj4(`GpGbvdnh#s9xwuE{gj z20Eyad;o=wNCHftyJ&y_U0ve@@xB~bBz&%ysIU@c*U@OPBwjX-_>o-8V2~W`U;m6` zCU;1CKzC+Q!RG*llS=FUQc*cW?ViZ{=@3Z!KfcH$ zeV^ZC5RXWD-8l@3ILW zXZP6zkF)#ifm$&_X7U~)=5$%B(gbp^6};4%g2|GFCJbz zym@%?@#W*o$Cr;U9$q}Wd3f^i<>Sl8k9TePpjb8`t}f*K@L_k8+}68IaCd3B$>9Jf zSi-g&TXiGNO|keG?iqC1;gGRo`IGz+o?nrO0-y@N?>8chdXj=EhHr(_=#%uR)}|nSlo|g zdf|*BM&{K?SO^p=Y>5l>w+n*o4DRTdF+VeeBMG~y_@HmWqVNM#+2RbNwil!^n*8#R ze;i%1D0XxLW=Ea5uhNXI>!`gxvIpRlhupcn31IEQ4Q)zb%CbI@3nD<337W9B^rqU^ zz(2XRrk>Jr1szFn{YG@#g(y~G7YKeJ$w^sI64N6rOrP-ZoWOh|;a!WgEDT9O^#Njj zeC^S+7<=pSLvjAVQ)2q6UiM` z9Iqcu%Rd{N)!CO7s}Lx^&Gqwrtbvs+TK2B1vPIr};IRvVH)0f3WV+Z#n?nZGvq5DpUL?t-nbTyl{>Kt%!14XZM1_9s_nPQEQw zaQnz5v2AzgfL%N>?@7E4tSJ)4|B+aT+G1UEXiAV35 zZhMc5@}Y)-C&t5NjgG_1pd$Dw4oF@&)!^t4E-w?{q&XpY<4o`m%i!%9lO^L!iARBT z70(cU$q{CzMIfM*9|VDLev^B$_QMb32?YT1`5ZeJfX6j1PLX%uSY#=Es9^JWbAbEM z@I{&*bci!_rmK$tU3{uuSD%)v6R0;kj`|{$`e7Pvxo~120^uL|0iSGnWHkZ})tTue zGn4+XVynEbq{zs{a7U2-ZZQQ)M$S8H8BEOluNEoT6oW7kqdgUhSs%sm`sJbn6NG3? zq%q8pH_}zpqFe1(j$^5rJXIHKHK#Ddgco)OFg*~ObL~s7@kI8Vj`n^{2vBotaxpwN z0s`x{H&!KH!!cwbsf4ZSlOdF~DPO@u;0ZtJb0!Uy$|jK0Uv_Q*I)Z(rT>qj9{{zx2 z*xd}GFOuVR1OkF7s)?d*tJ6r%={y{V8nbHM&&1>(H4^xst7qEH^TMm*oot zqMN7p-E23G5_3?5DlcxrmskxPCY7Nau*KDq4<>1OcQ|1^azy%xdvMM}&k z!=^q$zDvQN?S^F{n~0wCgvG(HOad1!*xiCg<4<%#L8-*?ia~W9CPmdM+vzOuei$2M zD5i&1rjrOt5^JuMAx)Qnm|i%RvU+9)9X%c(YUPc??fftVbP13d^8mosZQE<<;*`sG z)H|>ML_j6GNhu~7cXObaID%(!2CIjPp`CP^==ZY-)NK*hWMmxKuGw$*xs#^oCh6sv z5l3wU*rzbtWUTbF657@|i}!}QVH#A|qj`6a^LW#z#Sh34hn(d59k2{uz=<@@_=Uky z?b+fML8MwZSFsEk(3|_j%)7xPGg>_kC2}Pbg5u!#z&;;DKO(x)$(d}$-l>N+0kfL9 zfMij*6z))Onpv&3A+zE=}8sN0X`VVE*sl+fAiG_sjY? z_*&9?KXE7cm$y!JRx)wSIo3VSTyPQd^D(&Vwi@Iu`L7;luhVBwP@6&33G~M=Rnmrd zI-br-<5>yetX+ujf>T$}J0W0gB3R>vN%;ptwCSca<<94Amu8p*X4Ehe21K4_O~S}S z(vff|gxr^YFA}4!F#R#hn}({47S+yuq}&vGt~bkG`aBEF!dr_x;Es5EyGv%Kw5n`B zaz?u-6Gj|Ff2H*W$WrCUy0+C}rL^J-KIk79VwZSA>iaZH+O)XPd zauF%}ik>kX3vwVQlBc?<2f-&EN>?Vk#|~XwY~yN6nW|LW|7f1EeET?tN+9CsizLLg zS(6W|pE*o=)8IOIp$kwHyrvV?I<2r{&9>b#5`h>Ta61(LOQIbTOVm`;=>}Cz^|efA z3miWr=c=-&;8x_3f`mz(D<0E znhF-v@XpBAYwrrz*|~c`av5u{){9G7dyEq=I#SHluF6dXB@Z|l_{)C1g@g*Dav zcjF=}+m?1F!+*1z@ud2bp-zAeL*@a3iS**&A2CWk+jhqIN1+tKCInLim=R18U z-&IsK4x$+NbV#0}h8ngEXIoxE`C>CsMsfik<;Z5%x17I}qV7UU*=^A&poW&(xX<9Q z0KQVzKVVrTRr}uzt>uT;`nk?Ce+nA~qd$0PGu(nCf5TGHgVs_!13SIbqD{&1>*ndu zW_7+?NkOS>KFFOC%<*Ri`UOdj)y_)i?FRZxf}`Wr#Gw(vmj({sO!IL&Z=BT3$EW*H z%zlEInlWeJp~)6l+)Kjm68C~ByY9nEs!F&eu8=#Oq{}U}#~ZHoPT*2(l%oRAgMb{c zWqqNYH%RR7Wfz@|)hYbT!v*A+J;d+U=nw2(#TkGYS5})yA!}Hzp4V9LX55p!*Cn}i zK-QNwC(vJu;!!*JwZQ)8a>J%sfo9RxZ7*-fuBO-Cs zf{);^s3d~cq*&0AX z2aO$2Ab2Ta&Izlfp606j?FhF{&<|M_kF1d>%6m%{WH)=8$Lt?LR3UT2>%NY+0Rtd+7pdukkd|15cD| z*6Zv$V=wc3J$}>e8sC~guE@6KKy)Ycwyom7Yo2^4lc$fHbr15ikxrbHABG)>7JjL z+GC;G6+KF-n}mVvI)t3*^`*0YFJC<9YTkBuKnuZ4ZphZsTnu_-z;%MUT-Kx3U|4gK z;s}%g;oDg|V_My?uP}^3g_F4|L5n7vR4*wvsYeq_7H^*U(aF z^OCkGNw*i%#-px~%zd##cC@fHo$#~+{wNeFGo%n!093IF;B{jkR^nFYfDCwQvgTrK z{fzIB<{%z3gG$ITK!Kx<&Em0XXiR(*CrOh3_=ev&H z;r~^V-%2C+KCk-RZNJpu)7jo~P#&qQCO2YZ5niItY6}?YVt4s_C-UZ=NTaTLkDSxP zpJZkm@#ev9Q{obZ0GInH% zbc;0o^Io358|-R0oj_Nyo@#?Xm1XEgLhH>DtKy8RdrmG5&RVuNZ&(v1(=mjcnyKMi z;Wv4MMDIYt`YW$vmiFA<$vazoFi2iOg<&oF70+6ol!Bd^O>YtV$zT^=k*h)#Xw8}F zg6qiGT!CcA^4LApAnTUK4OyBx)4@(Qfn|bjv6PNp0+Xw@0`6n)qI>C5{6_emnCKR2 zTjA<`?Z3vW*f`3`U49SDXV@1h`t)#n@DS8~wJ9DV{(?#QmryEWtTJ?A| zzW8*b@s~e8@>8O7Cp2$-Z9fpVa#N&56;{GB+8YKC0C}UKwo&UL_D>f(jCaYlw+GVd z4j2Z9M@pIqZjc5g=)&LzfBjh;arRNXY9agj8p)Cv-w?%HdhO2@I>>x!=q{WU}vv} z^M;r*YN~nN2AV@!)5`i4UTVkq)!oV|%9*$0bK&|eu|9Bzi)^B8i=%jhci!Q+H7!;y zsan;>rj1(Ayti+uGJ#|Y>P+t4#M-ad`CKCCDqiPVtAk_d{#Pbcmx9C(QsNT4&VUkR7T8E z2Q12d3=XZ1;i-jxrAug-0CTwx4p!AH-EN3&I_c`_U!l`#tmfk4M3iz|>jcS;#TJmO zVkpvQz%#wVd$~z-{#Q`r#y4-S*L_m`zgg-z8n!VL#aqpda;Df2-MjzO5%di1oWRb26s7J}1HM#+q%%2fyqHW&qVpR7g0(oRU1hvL zl-Drtn5xj=*hI1So6_~je;GW;P?!O=rLE@U3V~uRKbMPgRHEViYI(mYt{(RI^K>xw zx+7ajYhb?*zbcXNBi0g!`7LxARBjxwwk&jumau-knqkdKstP#5S-0XA5X(m}29Oa( z$xUGDjS|QN_BGC@$UGUp_3~i6^W|7ii60{lMM_tHU{Vf`b&BhdeB5`N@g`&d2bYDF zfJ*|bsNzMm@BqYZhDSYN44EHAn3A@?Q<;n#xxy38DGD?xwMx#;BI0!0&wS3=WV09@ z=m!fj^?QWdUx*EhM)47=Bcr(dAw(e}WK}C(qL;k`|5g9jlXv7wG7%){Unb1W_l8YK{@M}yJ_Oa7~WG<4(Pz11y znl-M~t{lBy{k@g;$>cgdu9;Sk*ohV%#=uRo^^0Qa90BcM$t8!E4K);wYaKf=zH|}d z(M6KqL%PbvtW$;r-2%{;;^Sa@!*k`d`~3AanJCdse3n@35VJT@2Gf(s>UtVJ=XAGn zD3HFa)$lpw5PS!6vo+P&40`)wQh zpF=uS!G6!A*Q0jMsv#?|2BKjv{b*`29YNpP*RsjFXt0$wG5o0pfpc1FYXaR|E?i^# zRR8cS!{&BcL{6ph#c&w8ozxw{webycSeU+_cfjgNC)7FmNPIyc1>Bw{REAedAtGz| z#2UgubO)CYqzk$62+Q<>x;^yC7FK$tMsZ|S>fkqiSKC-Z6m7X1Qe7};V(;-jS6U}x z+?t1dONE89W*u0yAEBv|`lQ9xKeo{fk5xHYqN_8W_o&7iHSu5_b2zQF?MYKH( z3-SN@Rhg-GGi?X%qGOuK=AWS@)-a5QW!!!Z1QuuhDWbFT6gefDNU#V0iJxuu{0oQ zHYf!}X-LZ{Tkby|VnIn1I!q%jRNX^qI28rxNSqF6zel@KUSFPOpG)f#cTkpb4I*l{ zHXm)h8vY$Lnh0gAWWO&NhauoPmv3-Obp2xjKpj~;BSw=(osdnbWW=u#+NYHh#?4I) z0(*iYf=O*h=X#hf*!B?8h*aOO2ljjaT*=&d%*kpD`3y-M{#UHcX_}Vjwu+#U%lY>W zpdhh^rOSzZK*GDg5i9cW6?o!*Kp62d4k!M}&^rMWS-1mtMIVuWF(%LFXZfRUDgWLO zt~+=;RzZJO#ZBzTV`@Bk=!e#K0d)cKX{HW@ z^fb!jEbZF&&aTOh2D`U_Avps_^h>8AJw2Gf_%AwudhQmfzR0G~9~0b`2$+5ru9H@_ zW<(YQ@m`TFO~1HrF!AMoEpE$4{oNB{=I3iC{U)wf!uXm|Vz*63sG>TyVDUSz4uHur7}h}TKMIo z%SwW22FMJ9rpe1ko~~E3wV5K|sCZGStSV$pvAng@Mua^`vr$$}2pfhf+Fw9QdQ1hUP6sy0uO ztVWRISQMbbpKG)K1gpnD(K|!~(lRT~k1tqjJVUNBs?rIF^9^`T!_rkRid@4CeYd`G zLYr_y9`TQ15ZNiOyNQ)G*1%;RGlg;@-Si^#J!7S8Ii;vrPYbr0{zb7o&bP%^voZDHG{m(3ITs6+3}eJI24zs9I2@b8Bob_j?#vN14Ws=x-knIJXN4l=pH z#FJevQ5MdYe#z~BY|428pWJsvodXKZD%xQFltwxZJLZ=qf0>1@OnlyBxR0v_hyjAd z(9pFtM;iupA7cglNXrxj4bMS%VlULTKK74UBSGQtM_?6Sst}4~XKbnMfBZ;Hc!I%f zOn9Im3L@!Y+tXV3?t&%|9b>Z1FGfuMXyUH>j=rXG%Nc*}wcSN0jpv7!-zw*-nqkFckOtfMm+Xz?*sNrvMG5xL}A`F9|p4T9!ktX0ot;_3{F@ zUZa)|iu0Xkd7oP`g`COUo5f4U6x(xLtDo_bXNfmC^1X-Q{H6Wi_^5e09t^q{xjYMM zw?LSW>q;SP9FdX8uiQ|;Nk8JLuP8;O2S2i~q4n6w4y+WEx!B=Q_yIY$ zYV`@rMsn$QRnL|Styk^k>Wr*7{6_?i2&X7$;p*W?)HNnI37160*d2;Q$#J@_1}2o@ zF(ivckKxIo)NUePMfOd=Jq$0YYmFAY^R!&OB;Mi5`d|#e0q+0<-T)9k0E=J%xgb?Y zFO&ut02fLCEkFRZ00q+Lf2$0t4z&z~?jY|xmZ6ZH#2x37)G`yegS_%uhkq50!@?xv zKn_)L-ijrBM!!cU%V<*MQU4|KYol0VPN*ZF336YOMu={X8{~XB-0=kM`c5CaIHg}! z2sbuVnWq^d2^?G}_|ypHL#dAskkq72zeVi79Xi^Fv7arH^xQ=FoQxK8{)fu8t{W|nn^I-IbP8EJdLXD%I@;adtD(4(fHv$<`WdbN@G_ip+T zN{b4{E_V1r_4j``B4!EgGj>02QM3Vyit+E>OgL+~DL-ARA`v(90;^Kk<${@!ZLcF7(m7>149l^}Ip z7!vNpZszy>=fH%-VWtG1bNlGR;PjzKuSz6kzkU`ZT_XgvUv^z3}_=e=Sv(kM8}V;- z*X^=}Y~@k2bPSYB@mml#rKImR#Frpym7|)Ey|(bnuc!M#1V>0RXzM_dW!wZpNhp3$ zO4tI<91D`b=!Pu#UOWm(_R#KdsKjfPs&dYQXb4decwPb2f@2J=Qc7R3S(BrYNu712 zRu=|2HSoI?sBNO5EdpBWR0RzVuJyg@&OJO>t?s=kFy{5G{7@Vk>2Y|c#TX?QKDPZf zH6~SiX6Ne`Px*c51ce1}$efOl`i%uzR4S4`!@37_3>0JNJ z39p|iM>*21&Q|&4JBHwp1A;nhJ;1f;Ka_2~wnwEqH)YVqkZ3>Wp12J}#Vl zjFajE{(9cGN;dZLlgSyIob!gw95RJ+*<-vOsUk=W+G~;4O!&Fop@@cnf7Oi@#~{_E z(e0;Kks0Vha|K~ayursZ4E!!Le!j%<5{;o}UC|^5>=$P0#i?o-J(D3O_E6dK1ZpvL zzwMVWAF?b)B;fGf8d{R^8NAfXt;FDHSxkaVOr5(*PN<#Oz?oyy+c_>)s9k`8bnihv zE;g*64t02sT!P~>)cVmc5kRV}rz;}7_Pvw{*@2~vyufhkEhVOK=L^+P{A5li^Xtpu znFfQ>{@}AT|EF}b*&@NjN7#X-a^h6iy$L%F!x-FgA8YtHjNH&JQIj{$^zEPJ77R=@ zeY0O~vfWJqT3}OH!UBT%TyhBK-O+tj=f?e+w*lrn*Iv{Tbce+I2mpRl(-|D$U`a*Gtm&#g@@>*LdM_%|Ef@KLq&?PQnz@$`OBN>4|WA*^g!R)93z$ z9?6ywsb4I*j^2DFG!60jDsG=RXB>M={&Lf*sKWX*RN4$|$FU>21*I~ISAz>ANn4~y zQPJO>L2uqZ*vbTTYtGtdrhR==VnxiEpPy}iR!zvpb02OMi7G2IsrH%X4`*`|{4ltDz8!kE84 zB;KHyY^FtKtaSKXJxSv#KwHodtHrr6gwH6b9nK?uh)E*%^p1%6XEHxI^yAgC06a2g z6vIVoishT+cgeZ*?R(>@nqV>_ly}J=D4G;fadsF_$xGvJt)=S9At4nRB;>v;z$Svu za?}g23X(?^WfC+IGSLL?Epd;!#uS@Sv{x4KzZ^GGF4uh8gUXt{5QUB9(@r4$S7nbh zh9gln{&CXK2qF>-rdE;~1Ze}jONY;DQmvJ?%dJ8*x@(;CmB*AtMu6sPD>humQa+&*c`z!KWb zakv8Ig2gROzZvfhrnu%Kr}T)+^Tv>Y4z=@e0qQ($lPq*|d$w0wla__$X=+FUbGSv_ z6W+88U?~I&$%bNqUu<1hDoZhn%ikkMY^`OfeOiR0T_M+19ZPUz0-c`b!man5t*5u* zz)sFHunmY~h`oZm!FE2OeGFs_Afz_rdGaUPzzfzvF_#Oba#DL3#_&YKVH_$^hfgvQ zB-`7R-Det*6i?x$>IhIZ-QscL~5SKRSIbTQENpqri)X1!)tedX(YR~B{&Ms&^)*=^I8MqN0CRLbf4Jg!W62jH_fJU6(?slh*zNnP8>te5y7Y!?j6;YFndy=6Df4OyZh)N9vDyHz?cBV*O&9&jGi?|`r{_G7vD%|xRGgFptT zdFgkzJ((4i0QQa0^+=<)Zeqd)uuyZIRJI)0MY$KZka6CQ8OX%SEwv4+oi+oTFRRAM zxGcqjF^L)*9{8Sd(Ho*(L8i=_0E%F zgLH~-Q#l%Q=X<+6kSP0jo8!i{{|xseNm)$9IFe-1hT0+NGl&N=2u1VuJ=pzb|Q9SOU zAQ2Rei~WGVD{){W*X|&cxmtZO;?3ZWB~Sg6_jgmxdz;>3rO2wpV#*)-6@jw-#=@*ZDTT~%~0T;~q30jJ0WFfqvOK7HM2c@~t6y?(%CVbLS1QWQvX<7up z;Jd&3(!Traz-+5)IMjdx3e_3egIdkz+mGlPhaH!jG0xwk**p14MIt;=JVucij6X#_)=CLY5lph&l#`1$YL+}E<}pwf?#sLTPKYto*5i6O7+t9A}Cp^2Q4!B zE*e$L*Ct`FjE!V(z(8>bR!TMHcf?)&t%4T&*`bPAZKo|}+Bsy$RpY6flLUA6$f-a;seF}jbpzV?SkES#t zRR;X;uu*ZyWB9))6W$i^JrmjcfU#jo3BOJ*OPBgfmlR zX_pSF7X+K&R6NuX*o5oBfn)(s;?PulTW$09GDMT{~RG~V`n$rBeHAYBDp{w|$5Kjt!Pu3&KgJTvga z!lEI6lwq_=L))k8aPDg0?KrdC0ABjeSA#!|z#zh@PSZ4FXs$FjO2j^E2k>VQ1lxZs z%;j0DNm>-UL`a=er!0H#Xa$IkwMLq0sE9UJ;&T>UKKFn!DM;>Ar~R6h-14U&9^IAE zC{!qXh5%(B>MB5Anm$-jL(`e2duMtfE$L0=(p)mg+OvjKPxQos}Npr z0Qmly@L|+3dnD0mE^Bo@Rl?Os7^GQR=*$ngpI8<0dXSRm*YIM>)Tas7hidir>0*LtofrL zB@`1+Q{~wkRt$DUPs)PX#;8KUt&C4y#Tk#Vt#KBOu9$`siO!ClpI~xug%fvhJ>1!rKy*^xgH6}t;SW8joxDC=Z(?O#wY$^gBnt{Vj)jpM z#}FpE@r1x7e?sGAaHj5kmdVzrg@-oP*>PrZG;Rn1~&6@-HQ zKaps0AZ2|D8DN9FwsRjZU1g-4fLXyZ{lnK&;=Il^S=5GxkQX+P9}B{sVfM#9c3daGh4&)UR(bd#hi z^%I|6CHMn%1%AwczyF26*tVtbt z`5ZL2&jl{HikhB#a?mY&55O?SK!%N2pO>%Gl=9~HP5m^CLE&Y5EPhq0HiHIR?pT&H zr35Wn+u`uLtH4J6&TY-jT(o=bBq%$%?F5tF;`cRH#DoNt^;6g9TeXa~3_Y1+T)#kp zhT)GiJA#a@vid2p$k_wEBVv+;4qkxV8gRn5_9KTKSYr&(2W9JI42dachP8I(2QGVH z5@D+JTha=4nf+xI=ac$PVZ+M}m~NeZvtBgT(1W0GV+qOAjCJE5=DJo{*RE=Dj4^ex z0Y#qXHky~STF7`lw_5(O*}B>&(V#ZiW1%vV&w~=0>nzm&^sHb{&=L8}!3(6w~D+2dfgr4_XE`GEhroq|xsX8NjpOt{+@@`=Xa%oA;`B>Dy1GD}HT* z@AT2d$A9r8ZeEgNCzQ~Hc=bih!#|Us4N2`s`t>REQ5kw7o5p;lUW0Y>Oovaz_KLr# zC@@24Ar4Y$Dn$oGG%Xb_>YbU4%3F)6kwsG_-~hb&bTtK70DX8vDW6fLpY{VGs`#}!0Cyu4O^C0jvH+w8~ z-j>JH^%;De9Kx_?n0B8*>hX*L>$(yQfuNt)@*!LgWR;qcuge`wL)Cip{^#2W9Ki0$ zhbFf%BY7nNduURg zUEne05D@AZwjQ`#IwDGU3;#v?yHiyH^KI`p@Yw`c{2YX%z9c=#zf-OYjZb0@U2mQ? zq}kTu@)%88NQmSlSoui#eI{P%28d) zg+|sH{y5;~ja{58_KA`Crj)1PqSPdFBH_(8La zOu0jM!I;qFT5k8#FlQwXUN*apF`w;94H^-fcv7wrW%vE(UrSx|Ac0_3bJBnxsppuj z>OUAm--7EzBu!JH!t)n37&*sr^zWF(oo=pHYZ5n(aT9R-37-v|!wn1Ae1jYCnbydz zQjXr>mnnm@_y6)V4ujWg-B+_?iN1|I3z4Kh`s1RTs1X-r+uO8nk{$TLa01eUjsFgJ z*kLxMgV83f;dL@`Wtgz$?z(V11PjI|>Mr-LAYRhHKzAWQEK^T$DN0%s>a4vut{bF|a$+dX(@Li2t*1dc(YXU*4v;Q!=3c`LDDaGmgQv!;VFcZW^l)r1-nQB02s^i>8eHyp0Z}jCl63U z$~&XOFVfb?{4Z~3?xHhBDfK1Cv2KNLCyRvtf(;@4R>NnpRO2LIUD`93!^+L&7rgmp z4oWU>$)VTdAd@Ua>CPunt~BEQ<3wBz>x21)b>Hy8jaZJ`99lW|gcUV@{UVJQc}u`- zq!}20HL525zkyqj``+3zu#(zbUBCmn*J0eQ*7z|+J6SL1>43`-VSAgjqc)kd3NJkY^k~2Y z(H58`XVFdh>OjHt$Tv^Ll|xx|Y4G#Ei^o`AJn6=ClXw+0W52D005NGp%>B$FOQx1w zya_rGcc6p$c7X1gq@4N{gllIex11puyRlJ4GKS%=-)E7T-2Ia9@yoa)tf7DrOPu8p z8-aQ3R~TWdy6rC^zU-H__9d#_)tiXNqW>NM415>~z?r41z!Y0qGXeP`m@rR+nmJx{ zp>^1tqU{6@C5(3?Py10b#_!F-3K`3@z#j$%gaso#(IXrT5veUKGw=6gcwmkdQl$lw z=tZ`m@^>EOSkqd$+6HCJwNPbQ@n&m8qGoQ40N5s)@ur{+9M#8KF~K z4YY3_n((1#d1m<4ei;kro*aU7q8C1g^-4vaI48)H++#D0bq9;!u^$n9(s>Vw>s{qc z=HH{kl!5l3cM#cROlrH56`*zFRMQ^>Bem*LoQL!glfP3qY1jZ7J3XET*V75Va8VUpI;!^};$ z2Jec>9*gk9&6qo4A)ZmJTWXJ!UuPu#nk@p9O<670BPr=Hkj++?r zYT1&H#EzETk`^LXqn_AJcqpuLv0I6V)*8>UUKV)w1$o%Zhu#nQA+SK#p#FuL0{+G4 z^pPc$ee{V)Ji8^HPvVmyG%v+EEd-GAaD@ld*DpL30;29>?|$H**3Kcjmr#ddqCP@Z zR13v1$sfT;r;Ht!a$Z3+$w3_PfVS{zhCWc;opyQI8M5GM;`_kov{7J)?(Lh0YT!ad z;?<~cVp{aQuHPSH#8;4Qi{r9Ap;O1d*(a`=;>|Zei%Uv8n@7!Hb+~NOv6E}3W5-K7 zDgtF0W6kE<6mHQ|aCpx_XeM=l{KH+sv~!Ld#z|Y5iyWl|Nk~DUIx~m!V3wL7xzf&&RtGdB>@(KyEtCB26~DScmwcPZ>NS}}`N{ zhnN2oB$%Gdx#kq~hw%D9SsHmuo@I-wZgnixm65m~)`lYR)eaHA+~vz%Wga4Yei+XJ zKFmLu06S!s8_d>;aTn}r(KFDg!d#T;gWF}@1rTnqTc+>LZOL4#XuYLnBWW=94t_3E zy^WIKO2g&78zBT;cH1l^E0}T8o8MtM6N5ptcOw$Wntsrlj_3d{Wp2UkdixKBX%c0} z?^qM*y3=1!zHhS_@zPv2Y-HN%gpvfnuR^B0c8boj$2{pbbb`FqCs&hm{B1Z3%%9F#0 z7G=kW+BQn5rCV6T%L*A-8)3yPEGvL+Ujlj#eb-BT#DH+8*dQa0I$$ocWCds254+d# z+Aqb9eKu_uj&E=Qj($}PofTx#YW@eGx$fpP%Z-`-ge*Rb=vwlK*d_U)#y7Fu&{;bG zcv3fE6%(WM1e5aSdh8}T>?kHAdBTLnnPq0yWHna|tC;V!>;Q+?Ii+j*|9c2i{CTq# z1kH|d*Y*INP#nMoHfHw&+jT9F{1TAAQj{wA4e-{1AUowZgg>cuX}_zWOx(%1BQ|%I zz7_K6IqUkk=GWHX_^6oeTaKCh0}z3U`PF4e*3n0Fnl;$7FIw)#XOo}UP!Hz~4pFp? zBS^Cb3>rejO&cGp_2=@-v_wda-}C}GNDrZo;iuVr&;{54px^*%7yXm97Dj6@NEx6-1P97X6bY*rqNi z(X-u>Uaxb{lpiWvw>fI=P2rPyCmi4na7RpHHMC#~+)GZFaIBPEFp&05Wf%Fe#{)>L%{I7$YB+nL9PMo>% zfnS=RI_C5vT-g3r^Ib?QDBx*+|_*RkN`;~oJM}; zjsGEjL|s!<-E&8-_#LU0QqUZxm8q8SLNjvAG0yh`G^|NG`Fq~?z3 zh`45W*fiqfZ^X^1^DP!>lD=Y%eX1uE7UTXx9-EJynu&0@-0jxY)jVYpD7?yz_j+G^OGC^wrQbjw1CL>%(|s5UYa9VaC+ednU@GEUTc_B zvJtqQ$#G)zUL%+vv_k-F83?FH`(qw9e1Q8TkU?7V>)jJ5cMJw(vQO-Ps_4=zv@aF_ zhNrc#+sH|9{^0}x+_MW$A{)ox5h9DnKN!qi7w(G!cR&YDbatOMsKmk548>^-j4)e+-xm*Jr0 zl7NP3pGHkb^3$;WmQPTyD*DOX2y`HU;;G$oh3zq>O{SwMulXsj=5agcqrY{<5knsJ z1hdnT_#pEOKddAtdB%b~`yqMaA--k{hk7>mf*1=U#QMFIvP82aWcwn15t!_S`hRYJV^DFIBNr?d>U z)YL>*tj5;=fwCKRJ+`V^M)<7F%7-!m!K-`%c*6J61d&b!8{;5SL7lI&zyGnhfW^7( z*M~V~G`ubV&m$^&yI%0km(K4>`zQ<}nanpixAn-e8INz2){l~U$Xi;*IvKXb#gE!B z6)%u)X#I=j3O0F2x8@|g#2xZebHHs0#M(>rJEEB!AMT9hT`;+h)XH#K*f1HLUbs6n zU;7~?JZy)}?GvAtivUt_biUx=lP^Prz~y!31@xK!WK@=A_ctd!V99R_=@`};N4&&f ze8CaS$C@C$ni!sbe{PKLJw<*Tc+G!H@J}N&fxA-~88qq;h?jn@#zqJ1Sq}Q};lLbV z)&4woXzcLo z_hZ8pRK9Q&zxU(d2NQ`Z4`qLx_i}({g<3ykyRZy`cyYY8TKn;OqTAW+t^ogWlv&gA zioEZA^M*ieV`e@oP_*q{vw=dt+Yjo)Hc83`KTs~{CrM|;d|dA6KD%jVM`-WV38fxg zf;94PJ}^q8>|Qq$Ki?6poql%OmS}rPduy2e`=s6Boh0jJo5Hkx|Mi5@gNa*70_7>a z`04RSus0DwstOYX;dNM~c4{!c3tKglV}IT(PnQSkVMDueFm5Y908|PSgN@kl*o$o4 zr&r_6Eo>FN#mfY{P(;5L*ve8-zFm!p6t+D50HDhcOD~O~lOjz#EH`g4e;jh=A-$)H{Z7A!6i#ddP;+rDIP;)*mkC$d#&sWDAmdJaUSz(zXJ%wwf-aa-ExI^pY1wghTsZo?@a3oYrx(&ABn+QOP zhO6IdJ8^0-dq8BnvY5G*6Bv53HGeIRP&a15O>_lI9o_2xKx}4y_8~La53Tk^o9W^pY%W%GGwQbFIaRE!TveG zm*?`Uy9!%UmvphIFs=*SSVf%bP+DoQ3&>R2&Z)gkVf;3`-G!0g;?+neKV(p>fdCH? zqG-GmY7eOt>2NZCTX%I)W8$>-&;m3reV>BOR9<0Nt-%dtq!Yf>Hx;m%UB8}zE*_|KGpdfLkjk3Cf5}QN zL;pMY=$C^#m{`z6=;m#46*VU+i1j8BuAS1(9;P>(P$JIj&qTM3S`qN#t$sW|9`4)o za$fiGRtS2#!FizX8|U8If}`Xk{_2l@Pz7lTU7?UmV)QnA(~Zz?;uKevByG7zd7 zGTk3%kPmbbHsfe=bwJa=SjP$oGo-!NG7cs((iO8|;>-Rc$!e0%c_EB0HOQ1ujn! zx?{x?^t#e$S2T1R>WIDi&?YVPY*j#J9*rwcmc$l)G85)lVF2d!`5GhOJA3VYLe~ET zR1uyReDj7~ehagTaCTVaiD+H*!lYw(Ta(8)+-e=PS9z>8>8Ws_1cTcRw?HVC;k(}g zgXjFJCAL87ZfjgW@#0JsbD1CzE#VXS@I6-i{w4CR&sDIyLCDKK9Mt>pA=_L{ePQhQ zk1V-tqG-N+2LAhb#9xiq**=&(H`9n#pFwGemt5+O(Il_l$UC2gse$m80|)MPaOS@@ zv?1o+p3@zba{~W{*8NQ=n2%N}kukC5g7{z)iLT72WXSy#7oC2Bn}z$HI&xOM^C!${ zF7v_X)*mKbJ9Fe2DDhwJPwFDW)FQ1w94xgaSP>=zz`#p{1`R^G7K?(sHn~g$lw$An z(K~3D+`%OTJcY1Hp@-qX_Z?Gkk*jxP5ZMKlf+l`p04^XQlgACfROOuI_4Q0=Mq#{} z3Gt-2rGU9cD_uY?MX3Li^@qp-Mn>=DVmL8*VAo>%D|hCMjuEB;(ov&WNQlq)-$I2+ z)k^pc<0+eTG}r5BM)r|Ta519qaxwT0V6w{u1QFKU@}k+SXl<4e3kUeT{5*%pIO_`O za&3m%38eb|=#oXr`Q>9Zmad$1i|vyNH-;2Avg;yGC?|FI0DG9bu2| zq{txjITd18B{7O#mrE`EX_iken8utv6H--P^CU)b;BlZ)uT^v{j7?WA`!#?yt8!q5 zyp2`woviZ(XUYKp7VC(XQ{a~s2{~Z>NkU;1lQM)KMh$KiJV&Jm>+kYfY(b$P$UesK zmRLSypwu=bZztcFTI9#T1v(o0nWCKjRR6)@d;I8Sy_>JUfsKH;CVOw{& zQDv*hp0$Rk@CRVc^TY?W001D7IQrN#UvCgwVsN5L`!D~eI4v_+78w9hthxjs1Ie88 zjUzofY|c2KmH$@8fqoN2--o{4Y&z>X2y~>jVAkPM;Z2G%1;aym?}>Mu;TLj|ru*%B zJICF)DuRGsZR+;ebpx?Qm^{uG&A~wVX2TE8L9p1G?UC)zBFq?5WhIsm>kpLhH?J29 zgc7`kIl00Zr{X&Pe?$v7#jaG${-{(^mvZn{-0;zoHwF)27N(%<*~4n=;Uaz5NfzzA zDuT5*wvRRBLbyBDU}+_b&>jy%6`?&j8=mE5`0`go{^+nOf5aAvx+pURA%?au05tlY zsWkuwsPOl8-;*ecQ-O>TJ$^U{j1n-biZH8!QsDXGPj>N!qg{QecaCKxOms8lf06Pt z4#Bl&0mFibSOH&d+5JIs`UdwooSVi;@^+{|II{xd*;z5&I{w{_1UO0?>=0TZh=`=K zm9yPOZO$E%PG+p}g>lWFPXv+;PBhw%LhA+1?*{#I|? zCJ}yVbm~%POSS;BY%Sg;h}Pw0+HfTuTkE$H1e~wq8Jmg*bbyZFvZ&kfG<{N6@ZMX+ zppMqnTG}Y<-h)glJ%+Q4(wS6*vbDIpK@-z$bZBUh$z~N9Q#`ODEmRUHuSA7;MW+~$JRD`uYcJ8~~J;==rvdLq`e-?rV;(=vvn^^A9Y~nYu$QA=O4bEwnU6*!4o;#BZ zl}m1<-SJY;tSh&E*Rb5XBSfTQugIv;y5zH3mGe+?+);3M^)K`Jui6Vszv%}QzxR1m z?BQ!Bm15E#sDq#8tin)+^Ui@JHegiar~1%`=rkufH*_y=38Ks?VjS2FpK1*Lq&qXg z8_B^oJmYW_C%=IIO0G7J;rq!Ep+6s~WIL!?leHe-9H!cge!Pyr%tmv_)E#c8*c@FFgXBGlnmd^?PFamfsW2CnT#>e&uuFj z-$c2joN+anztf0|j6$M)e+6^xq%Mwu0mgAuFta#J0OG>zS%e zyT6f%Xw-|v6pMomVGVW%#>Jr2>Kvz-aSmvENk(Jgd4=~hh1cK~1YpphU+4EdI2R%g zxD;|>kk!LtDBJ*GWZisn+SYTa@6>dzWN`nI5mJ@Ew(Cy97F@uppWiW{e}yPXj#F5} zbUwQf4#--z^uw3Sv>^3<6!AIBIvw`q%ND4XqW5NsL~ts6XC)`?3Dd>|uCRmZzQh-m zGxW6K{eO!-<9fn*9u#P)?!7#gTT*kj?ha3Z1w8q3<_4kRU3BL4&FiR)`d8jvKb(DK zt!hT&>QL$Gssb8`0|jj_WkHb^#vYp(7o0uwumd7*!&@G`WP*ISpyFHAW#a@ab~rQ5 z6u#E8HT`|%XE5$bL{mq&2{9oFpYYv|g!D9#{JcyP^EpBS9_<6xBxQ5tYq}&ocA9`a z{QOd0{qW`as+WjY^pZLmrWt{UQfvN*PXEX)2MTA5@&36O}=q4cPVaA=y`a4aKaCDL> z%Q*L)Z1VUC#^j%%+L4NtX(PA5J(PXQMJHa~jdz6Pm?U4~ z8XrvM;)NY3t&Cgc5Hhk;<739(qr?DLQymTvkcec1ncPo^Jp9 z*R(y)f$0J&c`wz&;B(SM;;6P(Nfb|x8~Fd<-1NW`L2{X~K^91N ziix0bQ*i+jA7OGG;)$n1vI$}=D%8&YE(T2ecL&S7>x6!077O4LQzW2wDQg@|6EO1}$C*pcwsTtpknD=szydjY@92CU z4_+T!fr}=0SXk27yx;5cj%3v&Q~-xngo1zB<9N7Ch&V*F%e8>p*gH;ow|xIwE0(pF zPP(w*r3Ll11;Qa@ynWQ`9f2^^l{Mn@2ZrOof?!D@49NUDuwrrBBOLWKoQwWV*uY6a z=^u?E!-Oa0i2ba_RZv+V5Hp(g4jG|i@mz;kM~p6=l`Dn1u*#i1{loVQJ!nCvefkts zSXFW%g){l=EqjV+Y1NO6YGznnT+Q?ByalS=3977wQ$Nl!jWyfr;0kP2H5uXHi!$qxPRnlM(u0FVeJ(@pcjlvizb16} zMZW??$|`&%TWGV^>}ykjWO{aiI0)U>iv63g^`uFwyWqQYkulk*R0&3b`$Zg5F4S2% zq%(p6jtgwDHM$2JgG2%V`w57N*3fTYctPn=<{SYagSa<-Aa5ticxdwK-AD=}y>OXn z1U!cbZn+~yD;th=DjeW%s}++CF+5WsidH(Uf2C)I5=F8D1~pvMVBtnK>5Y_xE%2e+ zL*Ey9Q`hkqx7J=2gZ*k`qh1ac_d?ksta$2!LZy9P$nUV`*5$>Z?uk>En;>Z_3`8y} z&vly_G7Hz=jluThJTtHF<^B&;8-<*zOUb5b1T>RSsI^>ogl1l~x7D8iorw&B#Vnd&x^<4idv+>{&w6?(xo8N=~JRweqe!3oT z1GfA1B|te%iW=P*>zikgB?U10L7&J9+OoaGhr;`dka9HVy0MckqQA3p_`swJN?=PE zp80BArgUx#Vabo(lnt{bA1|8!&bLon>){dng=Jv~G8dr$F?2<|==dnnf7d~W0EzOy z3j`cc6LO#_i{4r4I`B>}dhjxz8T%C=Pir~>X68KXrW&PGQP1`>&-B9?7H2)|tn3qk zQ6C`Pq$~p)(3?vD+r--P|D?lqILZnvsItXj(J9bDaVAdy0!EOrM$1kH;Ng~2cT?-i()XJC*4H6D`N+6AKiDXX`-^V>IrlY<4*fYy|#W6v4$=)88*3@z&6z0 zplTOj?S_`B2-GOG5*(stLVVaZJ8(RATE;LDCiJwb(6K;+3e~KcA%s!AW(gT8_FEk` zzH6(Ks*^%N<%T@LuDu#k1nHk0k|il;2-tlybV^V5srg)TrlA~veV?}FxznRcJ&NBG zTbx!W8i`(`-30>x)*HCpvw$-(JEfm9?_ORRj27QzN~m!h?Q38QIS-w$^fdrG-}4lc zs%ia8evKNRG9#!af{x6}=CG*qsuCB}gAFMJ!_LGPXQ2n&%xU5kfLLdr;ClfWlS}fC z+Py0%<@P${9Qwc&i<4+=wa(ZT_DJ&C;eP=4n^o>YAXn2x0vD9hVKZ_~7S{#nqN4jx zSxfQRAWeG4*XTGk(q{O)uSA?T$^r>P62Q8+`4aAiCFscZrQK+njediDX?Om?E5slra8=k>{-Z3Fl4jci)%d{p5~|v?r~~Q-fF|V$PTF(x)DIMX zF(Z z(G^=XLhyNI+O^^wFI6n24}?CP>p6=N5y%)Fh~8^;saHn++9_w`Dw-bHk4mPW0^PDKNp^QhXI&b z+b>CD3YUeVdcHhqe4P8wnM`UvKcj*twIT+`=8+n)ZRi$6jTg|-zJ>f*wvQ90ahZN$ z8~pHb@=8aA*@9cB*?Z&sHg~{-vIV|M+|LLJzR|^3NtnzC3*E6G_yt6(ykBN>udFJr zQntW$uEr)(W~Ib4qlgHDMOaS=6N7IdEaynZ(UW2-mSXPWiL}Vidl%xHvRKkgb7 zA7h#y0a`yywW5mPKaTx3Jx_e~*r_K-UZ zB7jJ0{(}UJt7QX`n%x6lz%d*Ep&9`rtS@nD4JON=DB_RgbWMOesjB` zxPVaMp`Bz346mOE;T0{0jd#$y)}7CGm>j&a0W>uNY}SU|U)En5o%8KXX}2?+QAh|I z>*IvueQRF1X|cr>Imu*x^6+eDKwg7~0!iWaAi~{|kZ=n90uE6eAwG?hG zl_t^(+$)g-T>Vor(hcJs3S?09jii$Vnq9!MyL?y214Ql((6%N>KXIB908BS~ zur~g%GrTxwI+BN4+#i-fZD|ehwH?6#A649Qu^SjH^vP|p$686+4`M`q4KzH|L+R4o z6#;cr!L<g8i282KmgR4-I?D{FZ35dy*2deL}F(W|bJxd1ykU$e)riWtf}b1J0A zj@jP!aiL_2GfO8wFvk2{v4PkdPMSom&J$l~(pZ>hh7K4{?c4tHK^*pS#2zUtFSJQ` zddsSatlzah@n%qz>{J|@HbdIY5Iksb_Kqq#GRD8B0lBo#bxvsZJy-`i|xLNqS(6Ja0-iT+h3-T`vM~?$HpBiNtn- zPP~wQuEdT}-wVHSez&ZM?07MAYLaLAt&?OmXh3!Zv78H|MF(3--SuozpbPH9KB{>Z znI9cZ;jj}&VhGI8(28uOVHNwrZ%GJJ!7}j=M!kIVbn%;?y@YW4B%=*LZ<9EJwx34z zFcG|JRR=-%JAudpAB3+(fn;-O{G3=p~ ziDI&wZLUz$$%Ip{CCgZ*qHepjSZq*maE*o^=U68r#5o_=)6`5r{)BG_Hu*zIo>LGp zA`0Y8561Co z=CG6&@e%?5Drw`d8=p|2)R!LLU%})20x@s{&U4@Q5jLRLS*#Fl4!qsBHc{JuH_XGv z4sa}&LYJaOt_^hKp>&~9;}^>n1g;E4cz!UY69iMuDs6@>OY_Sw?Wct76=7w0KOJ?Rc4~72A?P{@l5VC3ZPV{O1*`*U{VdKj zr?1r#paw+4)7ilQ|!*WzXWVZL1iI9_^m}ODcKO=L2G}@Sl!vhov|dt9R66Sl z<#%CQPBf686UX%V?rfR zZ_hw=><9`~9z_~K71IYeCBi$NnwR~2tW#5YNArJcHpVb1NOo4K0L>J^)~{*Iuq?r^ z!~;H{vMSt}wydZ`#EHSKw!(j+iJ>_Ta!~<0gsz%c&J+i!p?rko`v}#$g@t!J_RShB z2`%nTi|{0`Kv=8kZ}W)%jgZyA7fxw@7w$6lR{&WbBNFeP7zQ}NK`1S2SUnquq!o>8 z)QY1BNc$YEVva+{DFjx>D0moGH>GpHkQ+om<-X<>J%8WWhqP5IjtCT?Vb(?G)0P`=wD=oWte0-Xx~u7KUSWec71(wO3pNtz~J)o_3GRl@np-pLi%0SLj*Rh+3tIGwv&^ckA|ZQdnp-&cgz;JbuHeys&O zzKzKWqD8&(f|Og|Pj|%lu6stp_zX5Uh~)U+-RfoJ0G~5#oW*59t2o3kl*WJ_AfD%S zljSy$kU?F0a<8k#G63CPXQp!c&LH)dH#EtDji2zvI^DH4vhPNSru+b&1?bdffy=D2Bh#cgoFE6l{H}*X$N; z1~+!Qn14tiZaSVx@#OdA{>kO+;!W;f@q-y;#7Kz=>>lhjg7hi`wn|6>qG*tqoW_+S z?ssm)s7go)_OgLP-z(8NAzFmH@*&p56u1Zk;NHFGo`3^jo@M0rD^H z;g6A0%zLx3YNmu0UprRKDe3l5ECC|C){^yEBVBDO&591U7WAjA`k_5}Is4cBEM;r( zz0sz+j~Mk0#diS>9h@F^&>frbtic_xlejL>DcY%JYPfGH?o|6$glq_-$SrI8TlvS{^6%NWTU))`IA@ z6t$u7ZkUxT^)#{@fNO0ZxfqC|yl>?nx6%Lwo#4t?NRqmhZTQdBSHuQcxd1z0^dJl-1nugh|N_qn~({#>DV89qVvop{(eNHj7O$f44jdh{3 zpeWh(lz_HTpu7XwIO~$|%-gZ}SB7AUEdsfaY8XiL>Z`9x~T_f-+6-EtE!p|vx|NanIH;k zAN#@a$6fx~`;S`Xv;GH()I5rc0gwYGrv^{}Hn%6)GHDgnm5pZHqCdKSB$S{9ai9^DopGIph)m09{q+ zJe3M$x$3w>=QF}tl+T^IrvG9A@2Ls6GRjRQOq}S-9mqrw(}TU+;%-IwNZR^ns=6wQr!R#gjkiHQ)uEYI*oEotTyRkPi8XJ@1H5H4f4_9MdO z6}tZ(7e%GOf4&-Wgv6jwQEtILdr%^`0d1--`rQfF#$@LftI)JW*(MZ90?TZ{$rAYf zBol@rbW*sKV+jVa^Hub)eOd}#O8^4rfM~kSRGrDeB57meu_d#rbHyop3Joo=iAq=0 zu~zn;A|P&DOVNC2TSkk0FYV9*3FF7P2v!gIhsIqp`o&y^jU@AxYF&$>SH6R}V@hGO z6cWQ6eCuJNV|9s-;Pj=Dl*xP2G^AIUw-N8y_y3zZ$AViL&Ri=`0L+)@m3<(=^ZqJ< z47HB%HFx9_XB;y8XwD*?add_UJuHY`V91!QVc<=u5FyZzJ@)#oRJOKt+ zGL_T^rQY)2NO#sNFy3Sf!U!atc0$()i0-tLBLeIA?EMibH8c%jw!Z0y?911EJck$k zx%2(E-zA_o(fwDbDTZoeIuDHLO|`mFeS?eR{1BkgKECQ^gPL&p3ZydyZyk@dLnLHd z;#IJ`&XYz$fJEy?uzh|Tu!KoPp3{ob$rNy9A6dx6vT>sx4;PXLU@QY(%Oq|&>Twd+ zlFGS75LxcUK4fxxKoqTU(uSVYzUgON(#p62EvsVb_=E|S@nN143c*;1{m`(xeFLWn zrk<+(5+2c{)ax7xcGn(+;KTfER)OG)oQ5GolXtxxI+eOigm*COW>0fZa(Ksgl_`ux z)bF`mvp`@n>eB7ua0ehl^3gzFmFp*iRR5BRurOX#yx`K zM#g6o5m!MVz(9~wn@Lb5#g|kKWf4MEODKo`@h@;W89u~^P1vkkpDiuXZ%XZR=S`o} zamewdUjdS&lAuwjRrNWr&G*e$3`WEGsdJP5NHtlCIz9p@KpAj0YuG}&&SrIwv%1T&7Cte-jfH3si zqXr*joR=>nj5WgFexEj*{v-O-iS&Lm(6T!53X^V17%je08PY&cxC_j4Ea;hmPN>S; zQ4{e$7<%<(o$9twvr=k%3@|8iooWR%qHw7&)}5DXwMMP6)W-F~Q#Rui!0rNbO(jq? z+RP%|?n!56&+!20kwNz?3ckUZx?y}9k7C(xGNt=ZyvjQG=+r!nLzxiVs4b_OK>fk7 zwDZlWh}`o<*8-pbu5&_nH_=IO)AIVSn7@31-E0Q;+8zED3IOYZAZIH|rdBGy_y^2N zVVSb7=3k({^+rHQy#9qfIuXd(Vm|pqnmVnOGs1|0FYg3{JmB=Iaw_{a zZv4)v#{5H~^fFCFRKht5P|tX*R_I@bR19P$wxLvwfBcM1`XCFMV^3>O!1DJU>OvE` zC#NKqqIbHY%9XSbsn7Lp6FUSlp1^u?ep8`Th`v7ZN6w==AF|GJ#Wa>faYVZ-(Ls7r z5dN4+^#+u=W0s12HMy>N0i{{JODUFDI%dyV|9YIq0dRkhFMUZ&91stkS>MVP51e*B z!%140SRVHuWH=wm%eVVuA7>)%Tp=F)_yVBCUhIdoFAxI|540L|TBLXS5hFzfuQuSe zhsPdhJ^MnFmSr2?r67*M87j3e-bD!}0`Q)y4iJ|LKZM|IH z!D?!f95XKpE*iJlsFhm&=FaOO8mMMNr!N|(<4jD+&+{S5De>-f>8L5ex z%-PS;12OPlz()LWJE(bt#$Z_7tj^P< z)fwC-B?y(VVu2x*$@~tlO$I&rYqIumJ^uOT)(gRgfxHS4sn01bMY2)j&!2C=r-V0BA`p`a$}pQ z!V|y&ixX);G&o3_$+U8<7k@Twe(N(C#6g)!9z{ty>OuMNXaDA(QkS}0PtzzKLdoHs zY-zTd-pTwoc+d6#g7&F8O z%Qqk39d9*4*-zjuC7U#)c|zwh{%ZsHOdpPWAh)XS`jz$ILzBBXk6r3Cn}C@{1WwfM zj8CR?N>heTsu2~lO$`n>eT7-j;AReQtD$)&-y)5zfYX`6#%QbLGkjESyt^3-BlfMrt)(YvSJ>5S~Q1OxQLC~ATs z{hi#y*x_0!$KtM_2!ugbV$uUFKah3)k5bRGG(*Mb82MlJLh%T`dGf@jk@h})1HC4g`;fao0xNx98dJSQF;z%!ooj7xC^UCvqNCA-MAGb44)C|tA;bu_3UJ_1ra zDWUHmX*=wZI<4+~U^sJe$X=N|RY$upL zgW&|I7QN&b-XN+4t9Pf?jCOegfT?`)xedyUVxG7A)D3TV_ADqbwi*b~>^~{p|!tao6BH+|RYD+6?6fce&pYzy0cB)^7 z%CHn8Q{?+)2gM5g_OdQG-!OhmhzI%k<(-h+L`a{lEXoX`8e6k9Q$@(WRUPv>3+w+- z`Bgb!JitM{rZ8jXdbnEImM*td>{xf~tX9&Q(<2ebBN;J0-c*Nu-giLORJg_23YKio zxSn%{;)xr{#p&W49zVQ$)`hC%D7TDK`FByTuC+}A)ik8pex}-vGd|N!Z=58oJsIqO^CgQGICD>e^Cz<0MHU@ z@A(_>CXyh0bGwI>{V{vJRP)DmI8y-b2tbx550xVWK=ChBdiN5PrWkYD!_ns2s?m|E z?`+%86tMU9=oV-&NA)%z0AfI$zfYNe|0M*k`mj|dhVx)NMYxqJh>n6(rFEF1S78x6 zVXcxM73HuT8Gj7Ii{OuID}=hwa55@na*j_4(=xvRn}o$-CX*0jdtWjs=MLx_y+5W{ zJWKSdW_AS4-jU)^BJ2Z*iMbQxHzw&4*K$Y0O+0t*(&(Xfv7opqsm`&%`~wmOU$7+L zR7fdN6_3Ize6)t%O__1pIJi5_ltoZ)c$>u$h1lT}5vCCgKpn=>h8CiIiNFh%wf{r` z>r++MJKdX%np699D+*$rqF=~WxTK)6JU;e911nI6ScJfjX3VJqQv6<`-n9&r9N!QI z?82u-cH)>Ka-#M0D>!qaD`|=e!2xb`*&1qoOST6AVqi_7-!=87sssC@C;ZXwM}4o3 z?wnk*nP!twk;=7pdJ!i?Yg6EY}I9$95e9A@SEUMEKg%)f^m8o$8yQ5NDP!v?mH;Bb0G7X*)#u}w z@qCJgm@|cm-|FLVcq({OB!yBvgJ_FYi|gu z4K3@f&~dO}b5WSYalw9!vpHc=Cbd+bjn|XzgTs)B`#md<4`5y+~bG% zWu@nf#@ali+$43?+t=qgU?@3bU-X;&?^^BzC)7ci&FC)M=>=@?&|HWrLrduBSM^wq zhzTwvKl6wP>ZyrWr_;uwrH0U5qCDI^nv8%ky$@~RnACO(loD5UnjZN_?8)GcU#t)T zlpd=;^iuhS7ceRuesVz9ID$xIRpi#Lv-TEur(A293uCkCe&RGOMb6;dlaBE!pT(qN^;9DmoonNO$JFV_;2GRUlE` zG2K+19l>s-wa0YEG;njZ26dQN4jpmlG4@MK(iGN!G;xCz0HBJb_3ZqI;FayE)&Q%f{nBGBgE4C=2{Qe!T*xG5?D(MV zd_vtthd|IjL8YOmXbEUf!aymU>#gqocso9g6F5jwZo@gz^1G5|SlUt_V9OcIo&wHI z;K$HnT=dTtP)F?;Dk>$?CmFmr2c_17AMA=4SxqD?ss_1ldm2o=V9>P+VnZ>=gFz>w z>v88UbE-vYbLwmBWC4)XJDN;wKj;CaCUhFR(my~i)(~mZ`R!*~uTE4u0GtK}S35zP zMQf`r0ij)h29oH7 zdH=ghNWdCe0`ETkCItbpjV}m#A+UcUfZbq~*tc&I(i*%3LL;>(n)h&Ltdqc z6=ZUaf;SkJ*L{=Fz^oTD%5AR?D-0>GiC8*TzgCjgrDXPjtzaeTK06Ei^F-4y*)3SA_xg=%NWyO$JimA8U|ok?D_b z$*VB3Os8;7+pvpe#Z@{JjJusV=K1|M#vGJ8vmmglgXrB0Ab&sU+C3ywHlrHgwFmAH zGg|d(c&+r*W7iUU0!ON3mIyW2)>G{rU)sX;T(R!NzAZ9l$k+KJc6l7yX@!MUa)5YU zeHzgPqhP%Ldjo8QJLAIt41=sS_3}4z_+ZswJ|<6#h*?R!tWQZtp};n{Cit%iCM||3 z>Mr~t!!FxG@8tWx=YkZ+^vBE*?a4SZzM<+K$H0ij)$d_1_Sy6#7%4wFbQMs*&!Vqp zF{SuZQJfD0m4l83Y%Wqf4@JF2+1rGIMKemx7A<{LZ^ zH{J)_@Jh|qao%>3`BFtsGqYx#700`j&@~j-pd!w{=8K$+h|o_fEHmcEg1w4Oc9D?) z0&@X^pO#JPs;B3we!=Ed98H!Biq^A4C{vSk4J@}Sz>&Z_^)$HO{Co1a@82Fhhh1~% z8XLKTROL!_yV@I=lnvEaGjJia=leDWsK8W;ATnmx`{8X=O6wANf?vHF=`w~c2u!8> zuF)KtW0`}2DXkS=&|8#y**0@(n($kSTOu_Pda^K8pVeqk*VJN?TkCOorwd1KK-;*z zSKG}D-PL^hH=of%cZ3)=VbKCK;IB!hBSd6Js0oh?X;22p0k{)UOJXV87j4ZAf~~#= z#%j`J3pqZef(+QEiZuD^s&6xk(Uy<?XCZ5#^%}ZbOHk!Z}AX5P%1663%BjP2NxiPE(ozh1u>#yvu_yFG8fGk zW+EOu#Htm#ELG2vL;ta(pm~RcYuk5gl{~Rw!kkMfKOlR~n-$9`x7eOKS=j&4SuRtU_djJPy#Gv@zsfEqWF0oU(VO5duv25wWNsi)OVV4lUy z1MCyPt}ONe9~F!NRX~E~Brx`v;=Nr;;U96TDBt7;aqx4erkgT^UJHR6c`=?7vWLnw zK5Sy7v#3O32asAQjk2YH&~F6|5Vn*>)OW}+k!Km-d&O+|Z7PG%5QXp_MN^ho(=jS# z!F4m5;>Pjt=45FbicJ0B(d;1CE8toepsjG?Cc{I&YvOVVY$!>4r9ErccOMp12h$p3s|% zyBQ9tPWPjy`k;Q8m{{l5egj5ht-Tb{E~}~F=2YSDsNqhxB>^Q&K&&$7F7mIr25py{ zozF6~m_ga?yKPM5&BmCzC_kXYqx|?y!4X;1A;xrV8?70!xmG+1fr4e7VRe(>Vn4Bq z(B`I~@5x^r-r})te64)xO;nve!J?D!#DvyPuI&diMN=GF*(DVJeKf{NC|gE=ZUyuB zDqW+n?cvXftu);3en-OTUezH~FAmJ0vIWRU5%ixg8{!U)+28Tr!iEcDu|RCr17|Goch-oNxn@VbKx`2efIxxZ79@GsRgWxRV-4R?)96|A zV->{G#-!J&*wh#=kDMPX*cI-lUs%Z$w!$3&ib6{pXQ_*M9y!?}SPcfnY#-j&IsicK z129pYZ?kN^Hq9})@a4KjF4PBy1;bGnEgX6&ww$&iv}vt=OroAvW$0J^&}!$|wO(ok zs?EL~U|I*P1JW|%`Jn125P7W}woyEL1#IONlMBS(C|(4i5|v*AkfQrTQT!%8EumPp z7M22nZnB_(DR?YMjg@J?G+9_klxp4c{cG=pa6jk|4+?*57XYOzv*{QNzBL8?tyB)JOIYhP}+!TO{hOTCS|W$&=|xr-wZ9K z1Rcq*SoMOPC@O_es!S`eM8d<+!RUp zZD~8HvokaufhC*+`q*kU0b==6ey%t3_TYkgZY+?eu#ZMv2jCDFsv+iQHDTjV`L5NL zt4<*h8IJ?Y&ebH&k{KL!4(fc1yGDvI)`Wp_@0g2f(K~s$G;=&joB~d*79^?`j*w((J2xbpW=#YY zQI0}#f5?l@r{F;4L`G7vXukZfZ)jFi%tXw%d76@f%x^Jh^fHDLp&54&@9`r?z>mjQ zkGuuz-i^|JN-D-hJ#i1h`8l_9Q&lw0;bWx8&SbjGQsmPYq>^iez$t()Ec*ar_=CG# z7ml-!7>5WWLu7PgvN!f3^dssOFkBo`=Yw_PbA%0TLE1yx1296{2-H=5mUftj(t_hy zMm+h6hR(gypg;mH_rp|8Z-rqt2*l$1DmT%)PjQ)*3d|cb%TZf(4*Cz0ld8AlyxLEc zXlumoEJ~!D`d|ZD38O>*LTYbbq7?_duTB6s>jo9Ed_n_IkO;Pn#kap$XYDqyZBPLt zC*`Fj{6T`3dLno#3cxM&6h-Q35KsUeQIhzB^U5VYVlv3SgxXf~d7D)n$uZt*K1c&MnpyptV%scef*8 z>3CAv7aQX;$HV3v`M?N3B1i?&b2X>NiGvGVBfD8mi`Llv0R-|>rzmnUNB^=h0M|KY z#A@KylxJBY~KL8*eX>3cQ-+V`|?PLR#U32@2A^yW1m*Um(ud{Cuz&E z_g{Xy1s&g@haz2>n{stOW#NW0M`rq;M}l8u_W|o=K;BCW#^#JTcWCm+dQNBt^QjBl z04Nudt85AH7LtRAn==dglyLhXPt|I-KC&<$+{knba7wGdj%ZF(+&13f4+DHf1t<%T_e}RVz zXZ?a%t(3;&O9p#oM=`-tQEmqdXYJ2N2P z7+Hj;$v`JJ`QUQ=sofUcwyb6UM+;)F@~E{axi4u>FPX&yHnIm%i72c(#j<8r0<;y~ zyDhinFjG?CpPBb0O?jFbu#Xl`Jzq)$y}7cF15{OrYr`YxAEvdyBP+q16%8-#lSnT( zs4C``<+tlZ{)B;cg*D{S1reC@HU%=EJ{qy6Qc|*-=->9nBU=hfd5D#B?d@ZkL!foX zsTyBCG_}k++qa{`w>~gRb=p}Vf-SPk9L^zV$?Ziq`!dG7IJ z9_R57)_9|s2tDG?(E6!`Zb$efLufS?cqC_}`gD#2fonG$B|ufwo#~wB&!s@7Hk z3!17oGkoL!v~}&H6k2O3DTDKGR9T>${8CpgtYF#n02?g;Q|cBnzbQHF72X^7vAXOl zo)rV|c{rF88HsNj^-iMVBbPxHC7VjlkImzns1O#I)!AX!v3T$|3z+9V1bKfb0anXI zzMkmts|CKW6w2P4#G7uv9sLYl$)^PP8J=Cw=1Q~yvy5xUe`|);%i1c_2x!6Pckf%T z)*ceZ*XM<&wPlV3H7t-YaHvx*!r5jK7%GcW%~Y;F@ARL}#3@@ZXDcC5FA(l#FXpxh z4%_hqRXuUI=ixx)$#5tej#rd`V}pm8s^5z-Ysd4;bA7bF zC`&SXnDI!s8>KFK*CUHt#5~`*jPf%=2vaPnyMn41N z+{hsaS6Y8h zWY!SJCt35l>@JA?r(FO5BriKu$VFuQ76rPf8laA%C#YJqXqWBnfL+i407`gqgR|jy z8;jU-IxY&iIHzC+JmQmYYwpe00!A7QdNoNVEAtKvtkoZ1(vnBG&B(N*JIA9o5L<|8 z2-Rg!76sXuH3+_g8(|u{qNJQpdGO;7h!T} zGt)=)>g<8>DPuP$HepUFrb8Si4V5}n3*w#REf*pDo1daK^`k#hnKn6i_R;8Xa|uI2 z>nzC%A@H?3(;%{kqXJ9CPwJKw|9rCIwKzTO96<69w@k5%n_<5ZdB+I8`6au(eT-nZ z{5g`ATU4gQ{lg^P=PAr9EFy@|aGbCvcpBmo2|i#)w>nn|K-=as+ip$c6y0$VM5F(m zUh+ElCr$5~ZXXAsbhlsyY*UL1Iz>3(`(H2ylzx=saXza#s-(Zj-9^&=z2#Mhh+o27 z1R95K92HT?#5Fr-TgKw`f!Uba65=-$D_pYcJ^yr99q$^GVMH&@4Th(YDe2Eha^kWS z+7U$8OLH)@au7JSPw(CA4i2mN1wMf5!d>}P`uqg4!VJCt8BMHM{#bT2OKxmExJ5nkQB36B{cuzUpusGKb>D0udS@wfsc*3ps|X{92{2^^ z%TT?RaO5l2XdP~h4Hy9q1-mDZIyKO8jNrR`+lHTO8*V)$GH)VT`m^>gbUkjIbwxbZ z0u`dP%_L^x(U@{!OQ!KT5MT0WHcD~*_EAihk3TG=jVZJpNLb01iephfm2bfBJ*0kL z<+!p?A2=b6>h5Y1*SZ`~SLe#}zRgf|s4pen{D@!yC+%HQ#uB~K92E3Bh^hk8cn3&J zxCO_@OXLp2tyU{6=*BvTGhz_@j_&pJcp(@ICsvl`X4%-Sd{~m#sC>`om=aW*N?A-w zhKHbdgSVn?%JFYFxVx(O=%|XJ{%o&gcD(0qkY|=VHjXOOIMJ!GjV^R2C<>9nl(Sr7 z#+4PhiI7R{MZcj#qOXW@{MGd;@s~{-akyM->eJ07`6-Jye#Gaa*bb>zD=AX&K?RUO z#YLZ?uq}3T&JPZn;zlf5nO)UR3hwrh|t0O^k~+tQK;OW|2jAo6rS3?)4CrkAtGyEVMIW0nmLz$DImMiX#5+h`ERz9%x3YXz_trF#DPKK zI?AgD*Nq8qz~qo?@6!p0$2oEF@DNF;4`g!?p(4w7;sd_WJV}jZe??pl;wym3+6qgV;X_(WYdR3*C&As2dowB@O?mP@o8}`yG+O!~&;|3$`t?~Onm)P4G{pW< zGkM@OncDzAGHxS;fJ>-K?S`6m`_V5!rB~w`(nKY(P>PVo8;NX zlW*@JgQ~T>$t@&y=TPfDRyn6GGH9{GYbE!SYX}OiUkqSY!=^F#r2GeW41J#23%$JG zU}?&OnHgls&)VaEvnFNJ9{N^*t8;1Z9Txi-fAO_jJhifwL@qvHuwc6W?#khDfeP|@ zhcvrJv?Wt>08m$=GHxs8ah24`kygmG*-)Ywq1_B=vlj)x`|Dj>p5&gZco+W3`(@Y1 z>rmCP)CIz(a=}ln`bn6=_w1Xg3g!#+je;;vrlSi#EsgdHF{6dAG!abBq}tWNlQP~t zem@$3oGMS(&Fr+wJIUH7Jt*?h=an#v>t&PVq!Q0;5fG+UTfDeKQ>t;XX1tj!n?71C zo+2jFH}9RZn&kW9HI_94O4-d$z-jtkZ$fP;YnNuea(NeLB-&_sK_vh;F0q@h8|O6R zB_c=cj3#(7sNA=29zOPOwfXv#o_1{4tGA+i2;0efXMpH)_e{5|O2xnSB6?(%SY6P< zG;iyL#`ffIEbe1=x>8QvMff*NQQQ!HPKKh8OTvlb}4J z^2{m?6bx!1Xrivsl+ySJFc&;7);dFiKq0$Dp;Wu(M#90DDrKyhhJg`yqYOe>3)r`+ z6S@PaG4tAsOUxCdwKWQ(@5nXB;B`&r^+G?!f+G4Gmb^*|&)@8_0rtaf?8osUfM$!F zjEKURl!zgvJw5*sK;Vt<+Z;c%T}Amz^dW2Jr^3epxmFjueU-mav7U3!?n@#=&2DYi z)LS`11{71*`3c}UpBje(X|MA=HRCZ>`?p_08~^A=&gh|%gf4!iB>L2$o3?ZMo^9Ai z{N4=v``+5T;|$+rGcIQ>jAGql8K9SBbHL+5B1b1bw!DavHH`H`*w>Wy>w2Y?!3)r% zO`FlN<#a}sM-pZL2$k+nP8-GK{MP@!c&R-K(IvQ~CbuLl+o3CD;k$ZU++VC`;nwp0 zvVbDC=@^CC5^WT^c~hbl9c&3~^U7CUJv2y4sQGB$02Y91Jog2n0SI2c)Fc~e{8W|~ zIpl8#53ugM5B`}Ex2r&50PvC1NyXsqG@S`i4RQKuv@5%$sR-O*moULzaDBc2jL+n% z)W*yVId<+B3sNnA%U=+q-!PAzB0P)kcIAh20S3KcyGC)EQI?3jwYY&Pe3gDB*K|KP zWwP{{JHgspw%M7UnZ-$u%KZIJ$5nk%m(u6L;{5?eGW zhDWhQw&=w<9GLpO)(L{_WFZ7SMU5N3P7@qD@b%@Vo+^MtFxy7)>B&Z4dP3a|G^sFu zA3{D3?>ER{5yYf96>vPf36mdrAuI`U*K>0muoWF%Mck(&6zFwMKfAa}dP5>@#tujV z6`*zFRMrQ{QOn*j;8ua`DOJvJqA zX%g@eG%|+86C}J58y>!t+NKySV3#y&UmR=c>mSll{Kg9R^9=1TT>8V_V`$jyQEhuWLu&Hf3TgkLX@9#W!{d;f6|R zU97QhFOYS+k4@|3^BYz7!eDM$J~Z7eyv(gUz!0~3kacrl2lCc%d(-$|`oGM{`j`|L zrE!ZSCljs3LCyM>>nL3U;EefAXStVHA0=DKo}G0$~n ztYg+7n7<6DR5vQB_sl_3RAs+7D5o%W<5O#- zzyc`V3#QI?*U#DsCF|B0BS&JeX8B?}#DxumG-*!-YCUrF>gS$5JA;tVuZJvLK952r zTf#B|{UyE?2%zDLlmyB$$D7TzDBYr^bVH$Ng8AA0Weji)2(GtpL0Hg?Ryu+LZ8ej@ z3iY$)oI05827^+0&p5k5wDxG)Aw*2x0!F-b*zR;8hJ#L-L{eKlP?!DY6W1N*!VMx> zFVpe~>lzSkzESwymAgl)wioX}yN2)h4wx%{L%vxv~jq zAZ9}~m19|DLx-!n_0YILQ;XYzd_t*GE|MtBz-Ws3A^2vA5oY6V_7|70TBM5MXkoy) z;QFO&I~Nyhtjq&^Ixw<WuBT!K^La~5SWN~{(IF)p_^H}EAH932v|j1qni^Ee^XvrabS8K|iPzhBoYk!o$ANbS@l@|iFJu7djM zdwg0uiC9IYr*wU%I|m1J%mfg%`);4^&98OFHub-bXi2MHO5Yk=ZO|`D4o$l8nBxy+ zHqjEcIMoUHG|YeU0=duX_HW$8f`NJBF9b1SIGl%Rj2=#D?K5)h%6;(kFO#Ckijg-u zd(oViEzN6Gp)k@;jjDNFC-!x{)N_YWuX%~;BR3^pP&J6?v2ZNB2roElQH$*-GBUy_ zBohT2bZt2-?Aw(xon*SgzN8PGB9fX<1{s@}8Wf)LkAJob)h?Dm!vj3}d12{5<$%6x zNXPu$IDIHU6v0H8g?PgY6)%yfjTHF53$K$^?sA{KRo+hz85;9s(8nT>p z3@mPgm3I%OLrocOkhv+34GQ)C%_Gbgo|=ppbwFH|(PS1?YhABQm0{G*7yq8_kY2j% zlRTRG#>A2UF52%34JJiCS`|LCLXBm6!nHz_$xgb>Bt){+Ox_mOD9E2y3tpBh@j!x6 zfI$KQczkcbkH1Ti;vC{7_Ni)myVs?|JBN!(7kG6ZT?$W=qy?Y$y$u~VfrU;HQEIHy ze4djm1yBHMs}`noXR|o2iZtrJ;&vZkGv2WkF`8iDX!Q7|gAI3xwY|)>uU@qUO((k|?FNDZua?bwzrZa>> z?MKVVvT$Kal$-pKHeCxNN27G{W z8#JG(BRWZqN0Z7lp4sZzXo?h_*wQO3Y2#Nq`4SME$N`DGkCj}ZIw*~6J(wAB(}vPj zt2sg}`OhRmU?I)g?lnY;vF&brRXt?3FGs1)yB#+%pf}8Hmo^cH3|!=7K}44i7mPGK zEv(w~CEpgX>O3R;yVNqm8cBrO!VX0FDZTe8xqdNR~`-@ti0{BKg(*dIy>SU zaI$~Q{!SgPQK|EIp@chSAsYqFpRuP%J;|k*5nS|8{9rXn$Dv%5w=A@eok0y@2Xxi^ zCfJH9&YI67j(Xa?gbtNbJ$e0(rJ%Kq{>n(Csa{h;^6uf}s?m>+kQhxOHV~!%DxHs# zc6GK2w8J|5I;ZXOq_T0i%H<1SaCmXEyePRoyzGE^?_Ow=0m~`Gr^`IEGH9tn^@Q8F z_CF$3YoyT5*CHfn(k#lN5pW}3(iPL=g|}8%9Od(~+y`s!wy>!w1f9%c$8{iTAO(It zW86Hcs(0bFhWm)@vu%t*qzH#BBpw73_liFhX}n4L`CkIU(q>yrHHM!yU|99g=-So4 zA?a=i{EYc_`K!URtWUdc!5cAE6~##$Muy&O0WohyWtt2wD%q|g-9dcXz2nlZmjzTy z5}9MfiLyG1A;fm(YJ*3yOfnW<)(ovb&9GC}i7-s(WA%q86Iu`7W!?5iuoz=jsF>EI z&5K_Oc5~`L{{Jxa_*KKBpDAIRO1s9+mS0{=R=Tat=pFq1yB<9KJ1D zd$`O!Ff5nbZh-oYkgjypV#YKvtUi%C2V& z-)O{ESDgik8@T%X3Ko`XC>Ry6-^!|}e)UY10%VyQHy0_TTk`15^ISw1cxI=p%Sp^0 zE_?n#2F)NQI>SAHkeetHVd>C5CR2jm`YkWL&mfEJ$@i7lkwf%{P`kV7jt=Y6mQNOO ztsP2?RH^j$r5LxK(O%z$B|1x7QY735UwLiW(i_$oBHw;6%?4KB9%C||)ii7oiG;qN zK!np%of7o=am7k=8EgwhdK0D*jg9$k?)B)fYS^&hIS~@Tmb+fU8DA9wY``4U7|A(& zJwO9k00dMB3)rOtaHbpVcH_kvff9Vzq%3)zdbFhEWJWqLia^7kEk^C^mnhpJSb{ky zpBT!D9DO~Es%GgJi(3EmK&TBLJS4`9!6B|AbMUDbxSRs+?Ou~N|NP@^_oe}1iBi>< zffRa(-fbO!HHwztE{>oI$$|_9(Ml`JYuTMYO?V8a#}Qw(4p+%*W!Zt5+mE^zC)K3@ z7-+kV%)m9tkbjEXT_PqW@Ke)Aptxtbd>m-6uD& z*PQ-Fw?6^z4y2dB!(TfIEHiQVY zOga%xe=l__*s6JzZ=4?;Oh=hdRne~wX!sF>BH7Oo1NNV60%qM!?$^<50} ze9@uQ=k<4z8zKq+IqJ9m$b>k zO_z%|f~>1Hw7L>P%sIqQK(+nvte!UeDTpXF%}mRz!r}qG!eaZls+4=V zVb1;+x}<^bYlFzU?@cueMjF*4*$(n4b@f{Rh7!jr5p{G*GE=I6h(A|DZqM6;d(*!t zdRj%XsHo;Rua{$k!U_dnc|vhrq?|1g?mb#xWy_2LI?CSyI_Pz~_LIsG;)UN-d|kF; zPI(dJUPwV8mew1bMih!Pgq#B1(X>UOnD?s2t^^u56t#==R81MxiAq*T)!cZL(uaVf zvakmi0Mhz^wg8ZKW3l)sHM;yx+qc3KLhHOGWH=naL_21!$SHDlE(Hm&( zK*Vqp7Qn?jklrZA(-T)aelRacI2i6o>)PSx^*Kn=YyRNgE@F&y;Z$*ie4LXSs;S5~P%cO#zqRqalZV?dMbO zGHPuC>HLKW4Rzq{eOauVeW&x6i|z2*Yud&#FTYzWxfzyiZ4tegY%Vo`04`0d-chq9 z_lBEX^XOR;>+{7xa_KddcL2d6=Zn{xc|h!6#-8HmT8OW-aLom#1To?SKZG%@SyVmU zAoQi3vrB-;Lc>oJdC;ltQ*DQ)3J4hsS(3xswzjCXsah(r$7wsNZhtFF6~CunD983X zS`$wCwbth5)Q6RFvZl6~cVtSvR$!IRuq4+Gw8Z+vfU{oZBDUq1h4mrZkU3?#4j(Jm z80ey;E15?=fPKj=Ub9=Z8v))`J{=WEl3kh!0`SZzyZ6tEOC!NRDz|SzA+%!*1cl9i zfL9~b%g^NdU~!srILt?ys0tBN}z)}onWB?^47%Ul#ToaVl<9tyC)-EY^EFU&Kycyz6n@;pk$LZt2i#76f$Hi?% z{;F7eh&*D{2agdY5>zIKw9)NbzZl0?UAfQ5wMsf0K^jyCm|6@A*{^8D+8z0*(znUS zkB=F2j{aQpGB(!}hY~CFNd6fRmz}djemYmIvea;dCd&TfoAtx0L(G}|8tJRQpTiCr z52E0LJ2^gpFT*%7G@(7$(@?+!C?WSV^2tN;TWEkfzo3B(ZXOJIb=sDPf6ATge449I z48Isf<$a{Xx~w1LhFQ!#GCK7kQIoLl;#}usd}<2(iNb!z!xIs`+T5IXLGGC034xq(NI*JaTo^7#%^Fs1Q0B}WI*^T51#>=aI7E=VWUU?=A2;fKlvtV z#E^XWgG?S9aFQEq${U)=(_HMnq~D~eF@Z$z`jksH&g%PR3o$f?S!OdCi%AlhHbBZIF`fzQ^djxFeKC8C zGwi{7;J|PF5us%~ql{o_bHcLHv}gbvu(wua)p`?}V{En1c*3m_e<}-r)h1uzJjLB~ z9ZFU3uV`m|QT$F|KXZzCGQ_Q6PkJoy{F1PyfqkR&(7g zb;OcgHPOMZ!y}xrJXv&gN54aou5AXr0O7&V!g8_#g*iK8iC*zx0%tYTdd8?D`EYIL zkfEy&`EY@{KQRmmPn|+)axNFfLerxfb5M2(%dtswNk#sNhx1N6 zDoVo^2P@_f*1l8 za`=EyI285JoXw9eQ*-5Xt&O?s>nM(v!AXNnu~iR~xUiiP%yX;ep@H2qXWO2(COSB% z@383TV^Hkx1LzBtBzy97DpSiEA_W5VR#!{br#AUIW~wA7_MYGwF0ux?lw*XIpzUIJ z`VMrA!)+!Mf$M9*<&=)h2s6Bb66*4mPbU5;^_VF7S9%c!oB&E*rht^=Ln#u)Wj5Pfp{J7wr(R2zu}wtXcWSWMwk7HjRSH1MMU{H%rYlAA>o-N` zh!kXylaFrRjewTLFJ#F}ac)Cr)9SD;SAygoaqy=fpN2uVB4GT5MN-PXpTf~Y25E|Q zUt_xD(Ux-W$2ZO@H47kq64>iq-ssX*j z>zoklk+}M-g>R?sjnv>RYO-dm+^D1Hm>_SR{w?uXuqgw4H5U(#tV-$Ck$BWC z&s+_Ty^l7|2VYqJ2~qf?b+;|n5#uMQyVnqQ za4hYYEA&)gE*MZYRy_`pjgv$SdOnqk7*X1*VTS8wDt_6OGWl1@bAoru|8q$>Ft@sT zf`2zAa@nGUu_L%?6q>8EG_O8E7g$K79}vA)nGkT|CUD+l54qc2$5-yENaQM=5-c%p zh6LH1!o436Htr|>VNpGG-1xlPr`c!YdSLJ+Q0^fCfGBhbr(G9ZedH!s3uS)_fbTZu znLcgf3-VFJUbxkC*Xh-WRf3!0=~~n>Lz=E-y@04O3`Vtf@QzQs&!}yI*)b-CiV0Tx4DAK z(8vYj)2@8{n%`Wj-INUkLYf)};pdV9M7v~Zy9XoB(i7kC+Zu4 z!*Wx`!Zx@e^O2{@fm;r*%v0Votf z>mb6RBjZ{zP!%bOm0-)e+5>%+Qy4Zncg8%;*5-Re1C*oi(h=;in%3~epl z#LY-;H>hxZo6s%-+XW1az9&W>!&)Xxx0LT#iv*BBO;#34(V_}J;;<4lWdL)o)jR3r zag!#kn6qv4{X-Xk#210k4;+pX3*yIc%=19zVCj<)h$~@WVqc++Ctyl6wfXH;p3|DO zx;~aLE`vKbZc#+KTC5SLsYUh;3*PiASxw41bcS&@k^hY)Um}B$SXjeeC|JW$8Pxl# zjnP2sO2$@p?hfC>985fO{Ghc`50$$_ODr#yCXZ?BdEPage2vDsk=PLAL*oyySA+ZD zh>`+W#`r|toFlIX@VhODFWxVS+%>8q%zH><9U7&zLJx-)^UousaK?eaH0}g^6=T@< z9`ec}L?~oK!%{77-0`KTEQK%cV`;;|uhZT}{?XncGWXVgZQk@Etu^9AlHRL2=>8TwuT9x6+q#5!nrIL zZ^zGQm|*hvkz6)wXArJ~8^9XNp71wy;eK{28d-i+2ktj{RSV*4=zamEH`dBwfHzD+ zDy-qL$q|jPVcWIHkWM}s=giRWAAQ=07~@qz&{gg0Z4*}@m+c6PoQeX}dVaX~M1Vrh zVX+IwpRWBYlTnqC;)((fUo>b~<{GK3FdL(WYAzp>y8*GRaVz5z1zbvQ^QdkG3e3u= z06Mp`<|WfI%AU70dSX7v_m(*#L@=>{8N_n&u?yqts%D7#V9KSD&BuA0%Jrj*8n?pM z+sPzmA{;~hPkAaY=MTv4(-<|-@6X!{FY9W{_5$$Bi4-PKa@oqpj$@UQ9OyMxf0^zE zWMd&Ynu9isM`J*H$0?N$r8O)}80SnR8_@|ttmcZwma;!4PbheJb!w%0)gRhL^pE`a zTA#(Zo#6m<0|03d>w-DSi*ZxuW1-xY9Ts6ZJe6tl-}eoH=e~RhydsLa zv&WQaAVGFhKHAMz7LPxiq=m!h`lT#g?2(zsOor|V=NonUkI}tk7nzj>0FPz<2XVgza!A1 z&ISg1#527Wku3Y$P?1n$Z%mRc3-oi)?AZU?Yezt9Hd;9sUhNfcfqQS4|JX*o*D^3& zj@(eI*l^?xwjm^``J0B4-=OZ^wqZXb=4Dr0fLMIvp@kF#p;XKn&z>v+t4zvb!v-k& z&MnCNuxVZNz2i1F2Eujb)Vywey4wW|Y>>z~hjEY7qvS>U#jhUn)A^ai)s&|tM@FDQ z-MeR+oa}bb=gcA9q&6HFJr_jIBrIv!N)a!{@7}&yex#Gf(De#y?%L*wvDz`J*#Q_HmB2t z&NJYpP`e3P9sc;|hHeR*%%Rw<%`n*G_J*&{%ST$5dQdtY6>Tjo4Z#%&N6EEEafOo!YYzvVfmJLmdh8OZC+@C{ z;_+U35PCaVR$#dDiSMfwlM`cnH1^M(a}FErJd7`HwlGrRt)p&|B3FIH4bd2;l*r<^ zeO$2xrHeLMSzWyKxtK#c)ZK5+Q?tN+6&ukE2b_!5f67rjU@OTB0PYW7lW|`zC?aju zey!T<_u43YBk*w#WvhPYK_G=KCZh}+vaLma%1H2j&|Sirz|LdZ4#3aYpjHp^4t{Vt zn*Jad5`(rI@_~l8A3c{|Es~iyA@dTEZCOx9OXi|o6KzOxK6g|_q6moQGS~(YEh$N< zitr*8y(rGQJiTD*mhU>g`(!2-b?v)GyNYOmq_mZ0Z}!tR`c+1Uh?}~DZp@4R6px_3 z*KDRl4RVROwW#INwVIaro=~ZE1TTNYn}sh^(0u!{(wg?Kqak3QGx<)GHEh4W-3^sc z)dA^-?19)^zO)~px@W`Xi(fmOOQx+}ZzSIiQ}9y8m=;xyp3?(}rIIgz0Ye)k&CEdI z>~WZX%1*7=}{#It3t9hGKULc;Rfe7dy(t4Je6(Z&nC|&H?){&6oIs|s#*CL zMC_PDcQI%2+r%VGOMz+p!dFW-xLa&>VLh@nesTQ%B_^wu+sbDU53O*Ho1<`f_68tv zBq~=~-z|}iU~Q8+!8Wc(m#uYC>#to#STxSQ2Ay$fQM=~A(#X%qRcCB2J<$zaza@H8 zP4`Ec?VZ(UIBn~KyxT*t_d$9x3kkiezs}ssMJrdj_nQ0@?H@ zxFxgHnXbjE!DFky6PnM3Fhs6z%edlZ98s7`xdlSQFS(FlC~SBT>%@ojKfA&RZ{b-a zRg+ikl>Vv_()_r%AYW-@}RV& z=<*MJheFnKCpszj2GA~L5olp2Sy9|Cs{u(HFr%Jaj)71V4e3%UOS)temB>ZiTe>X-T|@By}U7DRBh9YCu|Vu$R~T4{Sfywk5%_4Qd1 zBH`mX`VffM#iQlE>X5!b-t93z+Cn{zi6{)r`NC%{{QX*S8E_5wz+3UQKL=};^NvrS zUS%Go)Npb~Z8YUo{CN>3k4j%SttCXOn{)4vz=;!xlJY5MGxcS9)?$ba5}mO+Sf4Z9cOYjFNT0LaFX-qggiqn+a{g#)i^(x%27^A}8y)zC%j|`3FyK(b`Ogt-vLpe8&`( zbMabdIDa2*UX1HNlgL~)tVvb!_~tL#0A%a@78gg3JT<-U($+w)mc$X1c3g%Vu@9Xl zdr^g8%@!! zu5bVXxK`{EukM?c861QnUlJn5R{U=|WoNrLL4}`q z0WyVlCO@re2ur!uwr>xkVDaH)O4W{SmLmgT}WBhfgmv3I9ztmim*XC~^U#|O4 z1j4l@p-pbC!7)Dyf-p!!ErQv!eWxM#^8T1(1EMJBaqB?m`NfsR;JXm@>#?ncNh69dWw5v*#JTZ%$M$=22_=t?8iMsyv*brzQpo9wU*w4}I8X6ADJKi$aotx~uecwZzWH(9om5!u2- zV8<27h!E_!6bECy47mb9U8lBpzmX({gCk-+8BNO0TJIf~wu3|8DgNb3i`fwjKBtJn!o&Yy9a2#tOs>{Pb|SQ{=iW4kc2espjcMMAeOS5&=(rN&o_@+1cGP^~K`( z0S(~s$LOp_1@<@^aatm&DIgg)P_T9sUh0@(X-KjwS3rDeOeO7h2CQi>``M&|GCbp5 z=k*t8!%;D^TN@1Oip7g>I1AX(8%)gF>K3uch@R+IY`Pb{m?#V=snr35(S7fV%%Gx< z*@BA!i}P#cKDGyH<;Ge$*(1Wb&v-|UBP4LUFsWSy3fCo}($B2BaX?WHF+bD8{{{K4W zsN$f~X$C5+C~WshXPzBU1y_Sidom1;XbPBl%&}FL28xee=Bqxy8qZt9oW#pFOl#<) z9V3fQV8d2!z;?gA^R875q#DKP@66R-u^Sr@cqn}l>OijS8ZmVzQlCXxmJ*@U zFM$8_PK>Bqj4uHjAR%?hw@KmjW73M=7ja%$HP%Cq5d>&xpD|wauB)xCIfC~rbCu`K zD6gbn;|Ma(v@RQ@hm4vjmCOL*m99Tz4fJb4T`a|~?a#_*u{(|!YcrOwhD?C>1*a!= z7(q{f)Og1hZ1WRpA--9WZsF(t;ohusavc()ji#V%q{WcwDMkWM2SL(QIA|YI{{vxP zU3|tv*Ar`2x;cZ^Axeg26dtp)9}35t%i&D#=w~!Z)qXC$p}3;J=@yeHH4s5_G6E#* z$@Zf!Sh-X8Q)ymm|YNfj#f2yInBco;aI0>dP7n`S)7V(9Ke!!uTd`U`OY)7Ojz zh`A8g22Z}`FbxLftHEBO%Kf&AqhikOBq0=w&Q4$Vx|nxr7M@w`VXQKDCpT8;95Nl2 z9F)edmQc&wx&RC}-&Xm#(@aeJv7`|21wzXuOW|n}EhVH!o^dmXSTBRq#U(1L9HMdQ zZ?Yl|Qbyf8c(j)?=KKC|&2^P0Fuya6RYs*$vpc^%oNrs%5fAN%mc}gf$jqUHzR_H* z@{-c&I^|9E(e(ryvrWGkG~BA87OfY1iPkd1d<-lz^$m$qm;YEeE)8)eMOshJ+v;qb zOvCs_A5npfggkaq->|0moFkZh67-Bo5Q(UPjvEs{IComyT6?rofXjR)om3J_q93F# z>MJ)rq8HA!F301=xczNfm_05+xqqCx(qHyWZ#{28Fo2DK*vYv2B*8c4v^ThB1(wl7 z&Bx(cv*v7Vg7j|jmG^Ma_TMT7x~_pVGAj+xJG`^-5pKdF-r*s9t>Lo@L?3xS}c`is#4H%1HJwA%_ z?<2(%o22ew6wypr&Rj`01_#!Y0$>e4>Oug(UMnAo>|5#Chj|plykR3XO^R-&!&i$i z5jI?02b~YdeQUqIL_tI1J6MNkucYe)w@;%TNQV2yx1dAT3+L8rw|lQeHHiA@4r^(J z&Jf+d40W=M5GX1!)4U3>-Quo2$E3wGrH792&ZL%cV76Lh1wC2^$CoQYrm!^*?X^Kj#t96$V{+|I0H( z&zQ>gSfl79bp5sw(5vB`viRtc=hI|-+pS7=BRNl7tL7ck#&}a!PBMM;fm8z605HHB z_8)kjG?3YSC3L#8fJ**Q6O|?%i9!BRKlIJ`O58GQTd)cgp#-ANjljZ5HvT|FAtBl| z1wic8iVPTd_V(neoPge&V8ee@dY9X>B?8(i>ju8qJ>F)5CLX;D8(#2m`xjA#jIywL zI1T^m@|ZyHrNThU52(u6fA=;l#_yx#FB^acY6}Qkd`k&>WHXb8T$UB?CZJm)0Nhj4 zbEW0SQ}B(4mwhmqY_K(#2kN;taUVfVb{^fXUKVST*8xn;7LVBYj{f*u@?qBPpLLtZ ztt5e-j|qt8iRa$)*ztjkhpV#W*PftGrvaw z|79D2>vpSC`cxcYw#y`y*avjo7O?RRT=E!vCb3cnC%*E(O3Og{1yh?ENlm_ zFOmu0Ko?%7CS%T4hN-c$QfZdwDWumrHYs?DJ^xcgFiuF_#Vu@Yb?=plWj;9q%H64` zjwM?(sKZPa>U=>R!I0Pvk0r+;hLpJ{R2^L%?RVk_Txnfi1`#zrVg#^$L=C zNs`T|vU~p5$a7UWmP+3cdRKn&O!LtYd1zszXf;hGT}lTV@B~SAd`Tj=xhfuPHx1G{4!*2I7O0?zOkC*_<*ZQ=-$ z;yFolL%?2PeR|2awVYDKmx z1fzGCmq^7r8UH?(lZ8{hcH|lCY64BkK``)FbS~ZX z)6`|o)By?2vEQHf*xLR0I)y(C4|2ryvW>`vZ3WE<(|(2I$=YON0>>dEGsJsC0MuK_ z;OZKU6OP+IV@}QCeRLQ@adwiSeWm)M+ zww6g17PwUMi9>lof}reMI9TnQ_o-`}Pe%@|#}e3_z7#L`X_;r*b2ZoF7>%9+)f|RU zo(e?2q2XnhVb1K5ZT|wI;!_D8cd2~p@GsOv&1oyCmsapuEL5s%k!E%5_d}r$l+yMD zKg3oNUGa)#IqP7+3MX+_&2tTo@3-5qNMRR8M*!2!IN|2?I_Rw`OBd2$mS-Zif+bI$ z1mkG<96McQuZZn6ZN|&4YIp7(ip2%s$JXJyL$CE;!Y>MJFz02-!-~k~W)*_o31`9Gg zj=c$?^kv^uz+R9u3fxq9(bJ+E^kUSdb(!Kmc%gc=YE9dpYGiSy6Fd0+2>cn`zzR|h zsfuzoZ~psDB4Wbyuq2%W;sq3r{1OKSJ>m|u{RnSRW-V|OYfOmAwN_8gr0Z7mSYwwQ zItkg-Md$TOw;eT722{u?A<0Z%>X9mCxEsPz8LTP>x2vd#Nb0y3a>npw(>pWb!^QNQ zQD7@Ngvk5>mGG&Ds23%_uawVt;!V^gby{C8HcHcu9E-E8Z*m4o67#)w zqseyxEZlt;lo0yY=<9`-`DG0+ab`&hFUSTghU+$6He*9F6z@R7v0f%Yy&)N zSgY4EoHD=ulE~MwGYAWo7KkvR_@COw;_@sE>IG35XU=C=43V`{Po#Kaf!r9PaIUI| ziGPm&e?OIS-?K7TF^+yJQw;k^kB;u}6eJpiXT-Oy+!|*@;ix}c?`_XNSbw--Fu7sT zvs}icoVEAi43ITGxh9J1zQ8VE@7#w|H!-jrMvWMfa9hgVDBtwPD_sy=|03rFBEczG zE)!7O{%L-mr9)s4%-1E5+<{GlW^7WB1|iDgtFManRwlu5 zfDM)dTa}gGFXmRHr-u4P!^!_ZiAvDhJ%;gKu~KK!`6bnDYV-P+)PkJT!`26J?XrK& zmcmLlugnc%1C>-IW1Lc`5pF}bKj4T&BI8;t38U-9Wo7#-RgJ`UK}3lfff{)LB!d6& zBer*f71qybhzUSJnL;{__I1e`u%$_b)w9{86i`x6A#?%aVduDJ$Aw&xOO<`_kPE?r z07r%+9xfa#$VOmZbhPqZZr&F!S)yLj;L2mmko)Sgy;8L5pnt{X_nFP^Om5K}U%uKU zU&QtC_D<^r04Iw3#1!YxlWK6AZFk~t^QM8Wm_k`WW*bh;N-}C`-S-GPcDduY-ki&a zz#ozvOTBMT2Tw=n-m^}khSIv`M!N{VWu9UIgWJp7JW*|E`(je;tIJEHGj@J1Ow(@V z`t?hB>D;0r_nMXkInshq?!|g!akKU|oTDr5WXukq zE);$CQ5FyCG%;3&YxeiZt-Z0>jbBjzcE|4A2mDp^>VDCuakQOYxXs4d`g#f!c3fbF zRS-+gjtr})tm!80CsC&&mtkYjah&m-ZuXL9m60^25kU#RwR^caFx21$BeWLrq=0?M zdavCm)NV5Eu_CCm^D2zwYAL`wcHEFRwN!@vX9azVnFLue^%aXU>pxE$$mc>f%FNNf zL$KU;MiQty@0t%2f|iNDwB)#uxl+|Qiuhq=Dj=wnL7VI8MzYDAOP2tdCtXPL4?UQi z(_HhY!x}=^;^y7;3$%Da6hAu zSi{7#=DZ|2&%1B7G4HY5-nJ97oO^6JV$qW~4ZR5`)L?`M*!!+4_#@r-$LrxvLx z(Gp)?YjZ=;`Su2rwk!1-C+U5qA|*AfWv1IoEtIfVs8s7__5ab68EbUBvmP){9uN4) zu7VDJDshni(|1Gbh)&}6v8cixlQ1SvY}4J!Fm!ka9)5~*Jz8T*q=V$tjQQ9YD2$a~ zmi6s3teh{uCZ?@@lgrS8)cY3)uMH)B7`WR%hd=XL4k%uNwA-DEs~kq8B_Pr4 zy1Hn`jD;Q3a171;SP<>lt;B|9&~BUz+c2ob={5>};{`08+zqyoq3$OV!(BMKXUBMV z8YWaQ;US(}XS^0;o3~;HDMkIlfn8t{sIEF2kjn?WFxbtZCK5I!5XshX6?vd&Rgw+j zepmTOZ&kW<JSnNEC4>C`?SK1!Z!_X(TddVV#=aaDa!s}T5hau-PbSwQ3}@6moy@| z)wsgoGNTy@klBK}I=3ZOD(Fby&AJ%?pfCLsgK2GN0NvpVXGY!6>j?HmpAA;hw|*oW z|K&;dau0^OCa2~L7=W8cG*E5KD7n%+v2xOTRvg`ZS8FP{! zi}xuKh)Lw&o-s$ZKCZCbcZU=xAUldYe=$RbU?O{QqGNYr7+lrjL)j2!IskvSE8=kH zdn*IODl0aAR$+#W4e#fSRS1W{Pi2{>SUrxId)SZ%xfPnhQGSaNI(1VvRym1Wuo5z@ zkG6~JlCXdn8tep^Bx9?Uayc4hW_V^v*r}+}KU{mH^-9ZZ-c+{mi2Gw(7J5}nc`N$^ zVUwLxcbI%k3gYnL&B>A5=c6xw4inS)+J|w&w@D`r+mgiF$L2Ol>(BecjImB?7K3nu z!4FS=mR8ba8u(_xay0Y(`iUR_muAHBC!@8*oJ;>{$IA_4J0PQN6d#BR5Lb1~z6m-& zIjS^`$fYS?N;lLA-uf@d%cMi=VvEY*CmsaV6T)xjdPMst)rt4m_?jW;=R3h}jb@ha zbI^>RhJzafy^CkBD=z-Gmr8PdP^ALGz0cF(j$Mft_Ru@`pD=W2z%QYb(>9rFE0?va zFB=X{?ccM^@I>v5fUE}vbeLu(jfow<1|BjLeHOEHmvM*A%|@s&<47=;u?x{Bexm_K zy>IAdlpl!9si{4@qKWjp28qCOuc*s;ib;*HVp4sQ=7K#ygMrPLW(t6TUQyMXK&5n> zQ*=`l*ZmlEO#~ev=lJQmC9io*^(pU&q^jTcwWSCY86hQ?&ns4rX(|w>FNi7zk_5J= z=^!esCjVLPV$fHOE+O7*9UtgdRIEFne;}|VD6eTW?o7o6x^GlPTObxNaFaqPFxSV( zvz8Iw#0;P;q*bolhOnS#uaEim>m6QcM?adIzzICEO_5Dr=zDyGJIrv01l8rfrEg#7 zORCUpoz!Yw3?Qso)UlOjr znkZ_8K51KEtb$QTJ!CbI%V8|De6w(Ck|im+yw(h|s3FYSw8b1IPaS2F7w!puZ;KlkZ$rASQz!eUF;_u<=&U@> z;YDzqBY6X0zmEJ2`xM8Thh7(&pvidY+d94qk2H#G)V)gxnXJ%mObtb266~yCnh>mu zDX50q*TJC1X&@JV;Pry`e=l8;+S^ir0IQAA!X-Krx#AzyayZ5<#~&3++XswG6JL~S z8dW%O-h@%e@^X-3hY(KKv;0;jg< z_SqVyeAc4;nmu`gT^!w7&y?wF0I(Nnfia>D$KF0n7)QgY^QPz)M!yD^HWDTN6jDml zqj)<#tNo3fP~YxuGMHx*eAJK{Nya;a=#FfsFZM#f5z=ym*v#@>=4~W#U%?b28k{3^ zLYWbtx6uhX9E>{wg2vW&1lj+9{Xa}G6=QA+7_zu0Rcnho?d_c5JKbAG%V?D(pV3Vj zY@O-AqbIsiae$130VB)maOd(Iy$%Uw^Asy=FdMQ3W0ZgtvqR|?BW2j-4(R_Jn}b_j zzk5OFoP+%SUiK>fejOchF!${gdQu6qcSLf^#)2@l;Nw$#31~0>QUoV38#<5tmKog> zpTM$8bA`wcUn{HsV^(Rlo&y2L6@5t&oEWDS*Bl$weX!@qg*wyjGb4EA8N*hWUAi6Z zkX$u<$k%M^1Rx13rMH}uua1O90(yX$0_%x@7q_57I6@A4^lQ<8vnlqUp`_KoD)+DD z>%5Mu5HrwJ{e(XXZ2ckPe80A1uI7NFgn?g*g@_Q}LA-blc9P_oUoE8_uO@)t;0D7R zj+c#C)F+0<7AJJX+YEB2R})=<)l*UElK^RgL;%_@L^vxq7qu|9&TU)^NRXNSaQG_w-7kzj-y5r8x-C0OV9)?n?FvxQEQ z@pqU(qSc=mp&9{;ta?wOd6+X}09^6guYG|-HxXXs0919u34A*}c7=RR)`<16 zm#*7NJbjk8zp<;EXi@S%r}3d_J4!}{-*#oiE*iX%P>64^Dc3`rgg3*u z*zOTD^A80Jgb42WZS-%wdJC-lPqCBrVL~>sf1%zi#~lZF!|6gKVl4fU#icrdo87>I z!s-#z@qlYERu1(H-WJkJ1=AtmOpTy<|8*4-RTiRjgLx{|&|v1$S#sa=lnrEKJG7$O zk@5D??piP$?9fN-6yzV+Fk_U8}1r z#FK>C8>&SFVx<=q7{VCSxq%_-?qaI4<-t$OL(<*KYduSVRQ>u`KSeu~k#g|_6bQ&! zE`Ld5;u!q5clFBW^_2%rk=Qo}FPZYt1?$^dYV6l>v72p^Gt*(j#Fy=Y2gA_B!dS(P zwoX_r3rHd#EDTr{48fpf1DUJ_*%&Kpg`OTZ+gpT_;C4ayxo%9Y84lI6RQEwo=c;* z{w(5DXquUzh#;ec$YZV4-R&~>@YNOYUPNW|FY#R@2wNqp+@7YUd#mtEO$PdaU)Myt zYOTS~x*KNV+uB=xW{jT-6X8Rn=-wnB>#bEl_hh}Y81hyvlwS=#bs#|d>pwb0&+O4( zRf>0v(PK_}Pp*8ldp628>dO~5dli!QGQ}u*V+38U|8Mh7y_hwcfgFH`_`>k-ELDaV zOEZ~fim7;ENdg55ja(heoqJdvTv5JC{^ajv$AeVheA^;ICTG6~flYguh>3T*lsY_K zL-YH{bVixtfT%pMCht)t3tKM}cu1(;6e3*CR!_@9kY(1pTlfynD2UZfBCmJ^Ff%rjr;RPrWu7WRn+ zE8*P56V*;t_v%dV;OUDXmT(F#fO~<^z4)Qk5KNYe^XfRd@5~V>Vd>NC;cZ(V^)!PTgOZ-Nz9g zqylpBK{@~}o0b9KT;|%R25g{4U<+k5LVZuN-}hgA?9cnOb?-gyKQ|v;-Y@y6uVn8j%u9zOzhlgNbe5~(iaUxFtHiq?hE{KV*+Wx4i zKXc~K<-iLDEKqRRJtq=IGz*GAC~f-c>5iYS8J4`aj5Uu|G4WsisPwk8FWhz;%m)_r z%#v^mP2}HirlG?-U_Owmg3NwvuwluUh7E@=6>MM@5F0=PEw2UWM`SHcFWF^8%H3{h zw{cW6Bm|TMDC+3Z@;4cDy?rX`XN|CbIx@&+a6w?v$D(`J!Hzncl07M$->;2D zkrK}_y`MNTEBdfi8C7r;r((fX_4W#)Ie0-vSyRCo1nMZ++)MOhJtcfxNHdfHoES#JwHMl)|P1;9Ap zdu+DFV`BMphLeKsG~UJ28#G)5cmZ`W;u1?D_p!!}U}30=$4md#GdALe8)_jzd2 zgQnt6E#_`a>TZXdGG*=Jdnu*iI7D0JJKW&D0fp50|hS9m@oH3x3o$-8Q& zgP}R|Y0AMd|FrSFdGRRBNGY94aSS|ANw>LRr=*qk6k=f~AEv!p z>|nfG*O7mJ|C+X+*c4|?G3}-VvuJy8l8IzcC&6MNl?RYh)GB{Pjq;`EIRQ-bvo6r* zI%Ec{4j|%IVGJ@rsBwzPYWL@o1RdJ%QaB!hU5TrAw-PRF*rv}A=U;(bQl?BF*q9aH zNad)66ogdp28M?YxpQ=pd+;@`sC>>)gxk!cF(q}MPDw0`VY8LOV)jZdL%J;V0K`!F(e?-!qi;ogs-GGP?kD z6e63nKP|K=Jd*eD-eW18jD)rZ<5<4pq^Y}ONp(>PK95}l=euPFNA%s^TD;`+^vmKP z@VQoTXTt4y`T0%yrzBW5<3 z;A=)#a6HzwkweG$;|=_3E_Wiotqxg6K$kMNaB-&e z;xH@#WD$IPN2(F>fo%Zeg&#hiOgGU#5bw#_uCzt$fZXxJ4!1FE(skzc%$8D!_$Uc; zEK2ODzdFpN{w1k=3mAZdRVW(YWa-D&#!Aj5&^PcTeCXr&<- z;@A)glQibeZXUC!tefTG(C`4pWbbhqARR)i;U3za&a-MD2tXac}Jt5j#TJFmYjReu8 z6zAZC5GwVW85uorrlN~-I`t1IgY;{T%7(CDm9->6VhwBn$XMF4V!2%=^!y(?6d41iRkKKpwkg5Wt&&>>q7l z1eaFy`Zq~Et3jVFoR0Y%q@20a*G;xEa8vTgtdu5tl~||=ThEKZ+L05q%A2MR;k9Y@ezOjj*b^;JhSEI0(ivOBP)x zi7Y?^W6+Pn@Jr!>6YUJ6BwrZ#ECCj+6Bux%y%7^-Oxe>cLBO|Yn}l~5F#k^xCGW8T zFy4_IO(-v@ly6j4*`}=?k_&b`v4__Y@Utf*#`EU{P%XARZbO|st^=^F=U-WyUU=JK zi@aOB^3p%ZxAT)32D2r!2*qbL)pI@yE?7j^msn*0G$Xy6RiH;-J$>A1B9yrlG>OsV zge(AHM4+#st`7SS+MZ&Ov6z?p{YJ)>wCXSeGz4hmYzoFB^n0Keu}pvjN8)Xrd`op% zTZ^a4fRaeaQR7$J@q6DX4oPd!z|+8AW%t zqNp)}GtlYB-wB(?(XIhI;F5Hv0}9pmB^B%*n*kKNz$tdtZV(V-JvSdQeY7yV4LaPo zdknQ2@syqQRiu?yp|3zTBTUN`uB!W%3PL)|hfP>%6@f{w^(vTIIS}d4g;3b1=LBq! zY7Z&q{mdp4k4Brap@%_N2eC#9uLh-W&LqemKbhn^dsZXtL!_UB2qn6gnnf@a1!R=9 z?M>$E+e;0`{SZN%vLM1D&lN|I+EZ}C4*5(>X*^FUWPI~hML{!ITW-MffL0>P_}Y~} zUlYyDJryH)KD~JqLz!%8h0G4J>lJ)_WokI{B<2?xwP-W(pChe3g zNQ9~E9}HfPFvqQ}<_;0dB|7w^40Lq!fzC3jDpe^S_~qmG-Wcpw2WNHb z%ue5|7ro7Wea;z-PQ_AUL9{S8x5O@r?W5NVn&|rOZWsTc_2uwJ4(fq!n*LR6BjJ*s z1OYN;JR+w<#t2AA`KlJmFe+X+AZv1GGAVyT%749h|E6+xGI)hop^grxZ;hqpiZDg6?iA-`16ciq^2BqKA!8x`2^tFp^_T!a zAcBZI!M!tRBb^4Ybt=#c$IGcVI+;=qYHIrC4I2RdcTVJeAjN!RT0CD$JMBDZ8 z#?@_U;zV@g0^l5IoZ^)azG{Y7_zVE44Yb~>eUZT2_8FcLQoj6%Sln;wt^+zEESG#y zJ)k;OPVGMfV4zoG9{?(0ls28*BC5pA6^Z|As{p{8^2rQA7&CFd0f zCF1CIIw2_Bb`LIau*rXW#ab_kv5FQWrWEcIIsz_c?twT>tnww4b|=cI!}7u&xvrX@ zh!G1Pl5b1I3%6Eae)3>BnH}=U1YCxKX0;meUqtZ1QSC2qJTM-&f^wOj8n`SARZoz?|aGPKWa4>?=p*qHt8|iIl{oMF6 zrbYzo=}3RbZC;xxNJ}<~{%GA44Z~#rBv5YibCGS-^U-tv zATH+pfx@A#vD^DMfL@gl=4k^WSqss7GUGY{A3ky%eJ2QT9RNN)|JNGMikc$oJygpI zAsXH!X48bLTtsz-Ihuur_3w+}vMS=NDK=S}ipxTKW9hD&yq=MO9f1g<)J&fGhAk8??Y`2W|UDqbedv8>9_e_fIQcTFa*|93}mPQ5_R}-2Ab`~_2mK-1$J>^@? zxG)qELvM1*o0!_N9DlX=3D0HBaskj#K~XQ{Ipu$gLFi;Fm`}>=Wj%CKj|ULKoxkgr z$VT2q5x)qW)dIlM82t6+5dB$SU0B0dss*xEdrVNY+ZSB@LOWebm$VCYXJp|7v8S+^ z_s{B|j%Nim~p6k5PRL&1Lr4%Gm_5&d)Z)FnK;BH2G} z!qW#`QM3gZao$sh8j0T4dglW@Wxnqno!~%;oI@?iCs>A!Ng-iFt63(FfZjT zIHx3N6*r1B1TbocM>`JKuA9l68}uk){pc;ONR8g><_vCGWDM820Z|Ec+fB@m$+mJI z7NP4Y@mOSoFbE~?94lvIPoNfu6}6Lj#2m*pVSVOZyQ2!WL>6dxFNpF0LrGVYIq2kO z?+0Fn5StQN0CxTPbznmCmK`u;BZ11W7;=Q|!4Rv4l(J zfrtvE%~e*mgVkHliZ1Zv5iAm5N9XLdI;VhX7N zVp_aT$^Go#PZ>+%P9%710OT^TP^u7((Ha2(Vg?8x-HnpQ5|4r*D}$4{Z@JS0fXusq zQF>lBrueH=_rw}czrh@Mw0=+%Hs%BgHQvs-Fw8bi4dRDyoPmaxux3I)kc_}5^AZP! zlCh+O=)&Y&jl7Q7VRVG`aD#vuh4KIcxP1a}ENmM#YjM!o9Yo!N7wN4!-N+ma zCMI`oD1X1iM7j}nE5wzO)w+J`>&Dx2$dhfN$C^+*yFwwZE5J>0UW$g|rwqKlhj7<# z1oP4b*SW1yIi;RV2Jc1Q;`;JVBcT~-E@Omph|-_3*QeP9;Dmy19beTACejE77L-MY zw0npVs~vR3@OGodilZix@e$|a{E+jreQ|1}=%00TO-?4wA&r&{luEzZqe(o2Yasrg zoSEaxUNV=-gjKbpfJ$omp|bUMv4swSn4Jt_3gy(I-`OBIikKaV2W88t~~|Y(61Ubl_UP z7bnB|!ZPe1cxkoIK*Iv-YD;I7ncgu7my!w_kHi&yqDcEOvj#Hc!lw!_#9oV_eFrZM zPKR13uW8q#EnxD*S4ZKJsXWV*O%!hfwK`Ed@#os{H7XyOx%rcVM)2+9ofbjJ#k{$Y zV!(_jVt}B|_?aWMOp>$p=pl~H$i>KVE&2_(6$2v8m!VbRfLCX!1wpaC#V{`6!6WCr z%TU!Tvww1H3u%$bzkXe4^8%;>IS1Gn2*V36tlJ3kp+!yX!Sng1@}h=(nI!6Y_+HJ_ z-dT@&2T^9kJ}ubHcnW4@NP9`q$Fj~AjamPEs;GCvvZyeYZ*Ux-EUxaBC9dLu1Q4+_ z(0C^$PVlQOpgGmPYiuKc1iJnGvobW;^d^63YwlKbF!q$9BE6EtvJ7gLEQDqRX-B5u zH{(&K-WR3XS>-5~Iw;w^z}fDX`w{)?h*IA^J9_coGq_|uv2Fc+i=xU}R8JAsa3cdI zYlwS4);z{q-{B|Q^#PZz&NMzuQCFY?esykkixG|m5HpLhHql6_{15PlS%1Je446Pg zrg?7c_Lc9$IY6HhW#JQGVlf`nlx(%b$RFIy!CefCTKG@1ui{JXPA z;EsZcMt7#KAnz`p|KMV^LrwVje8H33e4Wi3PZ+zVj8{$4F;y+RrLB9IHCN!-UH?W6 z(}8sqpM4RL%D&s&Yd%CoXZ^R8 zur;9;EOm9bU0<)5(udC%_7i+l7neDT>EajDR>(x9i2Wkip791gO*uL#kJ^r>$N7fL z`|}e(!`}&1dH45hpmCk!6h%_pJv=3iIVwN(U2_x@ zyLP`QqAVt|_MZ_p&a5H!4NOFdoA&fG{+^Ilg$>h;hG3M%+Y+4BjoG)4&RMf*JdBx2 zPlHyUE@1EvjaIv0Lqc$Dv#HbF%X7~F8AHG2PWC=cRi}nuj3V;B(qY|J5Ank+<{p_H zdXT8e*mrR*bFw})40z4Aw-ET!y>`#p1bQl2!h8ECn)w{G(FD-JOl%VWK}~wBShm^e zy3bu)v08h=b%0I_J=*g*#H^&z(vJ^*1vz+MYW7lJ(sGP?x`QRh;F(C>h2IRoVWU8Z<^N@oNI zV)u#wP9r%G0ZCYW;#8v@O>k=fMSus8MD;OfN@2JFu?+{6D#g;onjR{B-1Xr0WjcqX zsr1}L_8dAG4YF*tNuP-5iqd$sM zu1#aLxF;s4s-tA6Sv+8}iump=W|LxMVBJ%62QATxcuGH$qwjPszPn}!lxx5#IFhv` zkU~sqHDquMJsKZOLbdED^)4T6_A+>MrIDR?>lIt$4}$KWe!L}?I!PzkRV$bZ{W#m@vI z>^ZmJH7*JmcHbH!)vFQ}*%HqX-z$$yH(}{LKCwVU4D{C=F@cINZaC<@1JAXS81k ziyro(l4L)l(o-oi-%>H)F!8SP%9==<1q$z+e>9TgsRDIn*DP5aH{K_T@F%C?7BjCI zzhDf+S>{!*!>jch4%l!eAS z?MrYiEcCBJga$uL_!?qlF@6kfyv(6=E`l;<_n9Avjz7zji@NH7YbyW>lRWGd{qP3J ztUOy^J3I}*2f-0o09>d5Fs=X&S%4SJ8-45|Du^Qb{Gf|ULNtxSPaZ&oh-(KzdG$owdp!tiA9AB_5k>4AruY=)~YbAO!Z`wCpl`$YWzGjig3S z1D#`U{xtI>d?D>}Y1|IzyaIhOn?Jwu$5|byBuqei)Aco~{P`zXeC{l}D$Sbw_edcB z*Ma^iZmjkJ558BpB%)fC#?2NRdR+{$`hX}}hPzn$8j_DNe4yp?8GnqWeCAqgS}Sjwkr8@KzT?H!roU8)w-qttO)M9d>e|&D8ES-3p`( z&bSj0I8N)JuK$TcdW0sEJ+FS?JJX|wK*aqH4MumAqOv^9868~9KkhyNHQqXYjI!2v z7g0Ald_vB&#kdVPjBxxQy3{3!nyh!-w;g@vp2q*$;MXTqY~4N9|FWm2bvSR0v2eo9 zya8`tZ*oSPpUQbHto_i;^WeVdt$zP+Ft7ndb-%@B=6}XfzO7dg2<90r zWcUctqPP=v5w02oT?7M>owm->P<(??Ho&3{x`}VwV=3?~q?2IWUB@p)36%cvY1vwrx~KG!F(6e` z*=Q%Z{~_SGfN=#xghuaD{eTPn&!iDOukx>76PARu92loAbE&`dFspzFf28`Qp87+< zl0co3TQQ7+kO26xZaKo#P0QV!r7E$p|ddF7Opb$PDDRHl1Wu-COw_G^#D$>CqGBVjSEZJztgwtIV$_#C*H zh~Nn&DO}4SqFH{Q8_1yM63sc5#1s}7{FcBF;@iopVfFd!)I+^IjzK3?cpj>%3?$u0 z^-=3hz+oIv{Dl;=+lu?RuI~wRxr6WcxHsD?Js&bfY3p{0m!BEG^vDY$gb39g(WI-`RkQUt&D(mARKcf%$|I-G$0s!VT3y_#v50f3f=;`>2=37%AEu>@BLRMF?=)kg6rN-^FLzrX|c)67_WX^n! zH!Y)0?y3jHsrQSsn%RG}1kn#d4&&2QJP9OR$rs5Lz&WS`Wyh5N`8)dJzY!5S)y^@JbtNpyVikLhaGScz!+2vV&O# zF}fnegh7C)Xn_OH$*V`?2Cp=ZFD}^EDPc&675R>W%zdB)5?hEpB6bQKYz~a>8?sPmPs9dA zqQd~rot+m-X0M{@+so~lZy|)lNqbP*Js1?P2WUOJ_W&)?;6Pa-vfPgcJVX8SvyQn8 zV-YpdIOr>%#S>i89@&JJy;|c~T?!=Kav-c4c_HUid><*X9g;4r!Y$(i!1+lS)*;z_ zRj`+_k>+DpjT_jA0@(PGM~*>7Xxoxd9}O^&3K>FL9&VkOgH1ak|&e#QEEyK04&m6&yVqBAbc6v?}<@(nk564H) zg8jH2VCJjfppg+nn7Ia=+4dJD~wv-q1}UV+9b$j7=NJhvyRXY(BT z2oti^1_X*mHUVj0*n*?XM&y45VSOqWE@LV3vD@Y_sJtf%=`)?!)*dSSDWCB`J7-?} z^#Fc!*&M4B1S7JgcwfP(S*oClJ}4`Nh^;fe{K*xz!Ny!XaYgd%@kd}C&+k)@_FgYY zTev14AexK4*hz~ft2otx&ID@f`BmU5hvIYI69g?*Lxs|#b+x^B0U!D6Pn0_jMx#5) zejxLeA|Rv0(>!|uP*<%29#m$p9y45d&j;>!ybZa2z!2x%CtoSvp2( zQ%PA3p=2J?#K+pY9+?$$2DykzsyXTH7+~F%1aGU}^gIFWo?G>Pmeq8dBzjJ^@S90n zlLw?9N#}x@w*~BjC#TZN2LRA4YiWfxF^gq^b0$kPoN)$Ndb#W>`yV1BQE(mRpL_PI z&9{E#@>YNzdx?w7iYpIjYEOi1wwFk7cN;h+K_59ZpM-442Lg_LI5BL7VJ$vzWbAq2`Vbu+}({i z2w9zi^nm4yG1hJzvoil!K^?OYd3PEVYu`$N0S;f70xO=ZI4$tq{_gJ0*V#zIB1JqC z*fZmmaH(Kf11`NXFk4I1LzyEulsLLdS|~RgjT@PuyeoJUmo18CjXhEw<$-&9lUR%?dMh7A}mNm6}&4 z{_Ws4!tiw$ciCCaAE0={4j5mk*wAvO6h6(`Mx|i|JYM|8?c@X1ZoUYR0bsY#fk$Vh zDz)aYaokAlm5=ngL%|+YYqnj#y2$J?5;cHM{ena=0<}{69 zpQrirO`mN;Y3PdafC;3Ug=Y8x$7UTMF(45#8l2p9Ev(=dGNGYNv8CFVr{RjJ?HM4jjA zV!n?|=$pWkP9ZSepE%83NjR$CbqL#aPApd|4q!LXr`oiCWt(+XhDle!lK4qQ6ey#5 z!idcUaQh0!FX3^BKLs|7Ksk6|omyhXl01{Q{nAhjT#w*xLbG9f+2tEf>{1&)aKjO{ z%4F=pTFhan-0w_IAq+>r1|(aUbTXWRNAY;bhSRXqkJhq^WjpRO-TU^PnDtG<|6vSK zv}m9jS6%hd{&{88qj#!Gk_GANtO*H*9<53?A&B@|$qdQhI9!@mxa{reyd4iVoxC{V zhUo!?6B}vl!ZJ+d?(-7OkACkxtcOFt8mXG;xwyoO zF$hOi&L)}3ziimgQ+u0+<HO-J1vd zKRa3kuDnxtBc6)-_IEnP?ZxqoUom25m&``e^(uHXjWS+BSf9u) zsGF(AGQPKueRUR)l_!fES4@Z8QYW(tuC&I^e$mvQ)TUPmKnO@n+;}oZs&SMqGyx+I zpEBq@4@eC(>@rS8l0CbSd zRJp1PNn0V*fe7;2w|_f(SynA20Sz`Qg04-L-#{w7E2Aujnasu(rg|G{4JnfQq1M(a z$-MD*u7oe+))%)NlMz|5?;HC8eGh_H4uMp3kMca?eMXnvZXj71LDhJp`8Gn@mcN|oN>ixyAEn_oGVzY33S#$BvpiW#3{m>l# zx#q^=RTnRDMc1hMmt5kkk%b>H4F=AK`76f>BK*!rl)WMfpo*A*L;eFg`6++d`L0Y9 z@tt(IUlUx%Iv}o?#!@s$^7wO(6XN&)tsKSy;rn^kxt4UzTWh+a|Bm)YyyWlvOc@b| z2tId$C#o-%GUZ5F)Tj53 zYxC36Nt%u4u%{rX9o2g2-l?a_i(uhZ}1%&n-SWT&BrrRSv@GRzx?v{BWRw|dK|M-;q zx&&w*sJIas$F26~={H5K!5qJocYBZ`2Ih4XZe(#w zp1+T(W;dan#VttH%KeSe#k|JRaZSKET&_TRZqPP>D(jZMGSQuVc|$#+ zH}m&KF-)|pR6PQ$Zlyf09vW`y%EeM1d^T!O(u$%I!#zgSWZm=*2~y6HyfyN(B@s5u zFrg_-AkTyKAbGVv3qS1griEItEZhxKW_I-(DUl_o|0cvE8mWOsgIf6}!#6qvH8D44 zVeDE1>!AVtm)+zEUu7guzSi+dmyd_dyS9Y%THXNt5ehra%$gEDbO_d@YUO^$;c0** z!~QI!WCWOj{-pMS!N82izx;N&sI38h?iQdcutt!&C!DE4UvT1Xx(ufhS~~R2sQb?( zyF1gu-Q>0V^k&;6z#DZj8d;3EK#>Wu0RdDdubBNKYN^;m&?slTimLh&I-)M#uH>9+ zA)IAT;X--Emq{G>00h*%sU>+`?uB|`YfR$&8fL0X1Wfcmiw{8X4&f& zI=6ZvJWC}5>+_ql^Rgi$x2EAX*3dQH=sW-gtLJ(gBsbY*+yLn)if6ZBqONXygm;WIFbY~0@eG1*T3LgzG zUDCC&Kw(h@bT1`ud>LO11dq`_K(v3scj6z2%<(Ng6ab=`@kcnZo6^hn*>6LEn7iXj z$orTJKbOEqNI^{Jp{N4G)dG+;*KATmWDWkahakYN+@`Z{R#fe|JzOk>8aSe%J4@#^ zdb+s9GO`!Bkv%QAG_QV_MJ%YMh$?w=L`nNEdLTz(``o1LzD(2xH5(5c4tK{Df-QFY zBYV66!8m1jykCfSgZedvkE=VoacfBN@E=+H%EjBd@e8Vi4zu4RDlQ)9P_|fu0ksbJV8j*^%lV6as4jgIOOy zB_Hnk_aH;!D_9Dsp(uvH9z$yKimwXO2QCkoF3ed&@e-GqLA=_4z>^8^p9%1v3Gkl@ z@Sh3rp9%1v3Gkl@@Sh3rp9ogG0P1G^C!GhFqX1%JiohU1@D1Quz1YJ_Z}Gn>O?d&dP^U;J8B-do z=j!5o((fmRgIe9yJhI0RS5@m+%L+xu8rHi0c|(NS&b?Yy8$`Z4Q~RX7zpmvfKFyCuetI#m!-5ZtN1$NjIPIAKmY9+dhC!Kz2;2Lrz%C_LfnK zLk^yFtWPYP&q-l+8^)KB%z9k1TyI(D00;-EH$)t`H7GXLT>>b7n@T;WjzZZfk98xIJ!hBs znplL-P?2oR%-Rh{wvBoVWYff3bSol=9p2W3IU;DQ;HSc{aghtQQ-ott%7Z?I`m|Jo zVstd7N(uGm-zTq)a_}MHI{q!FK6J`J{0jL$uSXh23=I_@(COF}f9^^w+8OVT=vSbG z7cm30QNraKD5kIJd)FV{KXMZh2n|3{v;$Q;o`oF!i{B|+8@LNlv;=_RJ!W&@t-D#4 zz3<)atyStVZ@><0Twc{na zxJw6ZYS`MOO{8nz(`~QjyDREcUa{LBsrVN-auz(jgR{*t zBCdYb0$o$=PzcyoW%DYEuop793pxww1e_{T2BF@H(I#{++o zl~g2x?zI5DraQ&mM}xUT=q4$)czz`ZGAst5xcL>uGE8P?RfrilTpLeck`kt!bIU3x zi`;yBkm}@SB5y&mkdEOjC~F7x{;`aBZ*Gzf7giS~bYX(<+W%T%%JU7LV6Z-BVIHj*-HuF&BD6( zhTjl>%2h4Q+FklY^H=@0_63hVi4n(ORkdH!BoWR@-z!g3-lN)G-arn*%Hs*OY5Q}g zR=bT=&b&s5;dI|Ty{YcV@p9&6^TDq55!~~Za=*$3@$zK4)+pc=Rk-y*V8=df`x6cE z3(*>6(=MfFiMN;)#Vki>>?Z>CmoAgiV9)f(d=~uNhnC#=nU%uV8dwVE!y2a!pGBg0 zQrUAZgbs{PEpAa)})+nSTuKyYUf69ZqiW$I-T z7suGlFdF4?JSbd;qDb42SqMb%gu~v2D)Z6#v z-f19xb3;;471cK_2pkUc>AupR!>l8CdxrzlE^1#mXk0*#h#??aUL?p^K;O=F?mY1t z0OEpwv{V$}5@+X9b|rh|tYS#Kdj=zyme6O8*XZ6NxdaNK3w(VjmFr@crJi_aH1f@Vh_GidIhQmDd%jehDTm^YP`&#Ur8v^BVSF5R=3mx-@nbA? zvF2OGl<;k0(pO=kbqO3Udd||Q>envD8=LP-L#3u3w^(NWF0Dg~dXXKs_~*ZJ%xk(6TY}jtm&m_wIv_R2f|s2RpOoGD|wxqblTZYl2a6Vad@JYR4!)ixjJvt@sDhA-m?NF|N=$hQ9(Mjp9qYnas{ z8~*yvjek^?4uU8+!XA=LpxU}vG`mu?ie z`|;QpwPZirg@{j>FvXcK#qfrd+N1nRR@aKIzuG}# zAHKJ&tU>_>aHKVA2-)`$7k&xTXs-qeshedd6y}n|!rZn!Uqz|&Sx)^&9#ymDZzhie z%pvy)3oR@q9uH@MvBq7Qz!^U-I%a?xH?TqLCl(Vr&!}m9zkE_aX=lwTvg8z2&cXW7 za9ybWYonGOPxITO-mk(^k#p;0SN3(y!?MEkreI{zxr8&;kcHNl`K=+{%+dQAdzxLyEY;|mp(YSY8S5p#^#Z1fMVb|z;=xnlk_!NDdpZ-V#- zV5kFK{?43eJrwFxUIZ2X_Ei&GM-kV5pYg72g|kq0{buJbQ6!(K@y$&u|D}F@|VBzlz1BAah~AV z5^xjX6CkXQyi#$lbq-h|a7bajVjYA8nureWAZH>{b9`_dq3`LITt0pMrSaxtftnGXs(#++K=$o2-T`KiL@+U%FH=9+yp=p?I1LZwf*q< zj?8eRb{4rpfD?71ILTtMt%%r3K3jBe^K#=Z3BboKFPcYprDyeP1;a_$n zf!)@#;5Jm3*pYJN=%bGVA%wL)8~enq%&H)N8kliGsFo9d;NNYtCWo+hP*fnWe@OHwfRa;!cA*Mzyl*F6*dnXSXHA}6BWO;E!#En zB-YOhvT*O~ucPA=ahrFA5%k%M`};S7lz}`dAb@pJjYTZl!k)+@B9;2#C2^4XANEXV z!<%Ma3tif9Yv_VzYOy~WzawduX>zj)-|Ujc#}zvtZKlrc4H`hl8Ue`DNrbyy4}52%pidbSLw=I94l{^=yme1I6{u1 zrnC`>y%An_lpJpU)f`zIX>f0IzsKK1!?f){yb!XYU*mq) z01c*Bi@3nlN(oKQW|4|DYx=rNsgR~Yz6KSWDsCz%_MuZBrfqVz5@iBdNsbal_TpkD zPQX#>3rf)vqc$gV_4~AUoEezvLTI|K0~mnU<;eYn&oiZ8@g|^ zdC*bcEZl+YhWWDw#baa*1Hm-AI|^cSsQVp=ns8sY>$ei##=RmM2|7PREpBtM_EyEr zcENSxg?in^%kKLG5x21>jbfvVQqbQ`rIdy!Z{nP;oD+E)wM-q5gVhJ>#28SwQ(Hf@ zg`^8=cYIx8URdSQt+jqXJ%YFtxhp|((w=WIF$Ob6zVlb$0PVIDTru<0lkl+S zC@G(Fgff!i90rddr2t~7yJ#m<0qd;sl%Q~?m+u3RU(==sbg?SVJ~}$Jno3p!eG+cw z)2PKW=8~VpsjWH2>ekaN#%GbOgFk&afvJ*fW|?K?V74)6T6< zp&Lfd25Zu5X#jb61=o+8Goj_dRp^jY=IbTN7xSv90>lQ97JT&mmD}re^+G?!f+F{F zn|xM$If~{1tAqD#vrAzdaG;O^iGWS6O4o(jU(bNjNCrzE8=~&zD2!&(H~Hm0reavo z>b%HJ%qJThSP+k|Su*^*B#HBB6SV~?=mG?&g|_T^vsLl!=;Prxa(RY2hKR5jCu}%P zR$M=hn7Fr&ci6Jt>k5lrtCMB+Q$x>OWs``sWbiAy?l4!~f(H`dJ%EQomNI~kAy96) zAqE|D7XWAe)m@y~^SX~yS-pFg7=nL1Vt5{*7$dE71P6GK2}ziYI|SW=Uov!x&YdznW75PB=wsBnrTG-AFQL{QYz#PF`$s^AGFCAeesS6SvjmkPb%fvl;SX%`}YodJo-a0dG2n=RT* z@oInjL-MHT>9ix{g8nP2AOC1rKtcbdHdd0$pkDRj@IC&q!IRp?P70IDAr z_ach7N-bd%WG0~^+F#>_#dWg}5pYF3A%a_NX{taFHOc6^zzAzNR>w4DAQl@m_D^ZM z9}-G-@~IM_`!753ZA^h};lVfmK4%doOTeTa_^!}?&x?(OC>68&nglIK2#^J2{|E=^ zb>84-{{%P=*N?lYYiRgTL=h6lqY0@U=S<{e3$H0|4XNN)L1@3LWo<_0R0BE7Adv~G zj7!^?Ffy~*9~yh>LMfAJe^v_+4HQ-AX&GPyb=U*q)2wH`e|7$79xW#(OjBq+SaLl- zCgTI4rq2Au_v8%&ac9)fs^%lMykByPDgw(6dN>rMxD@C6#*UkCDibh9k<>Tf_e?SN z#L)2D#!s`Cikc(2fzx`_0g?ina2Z3Wq=?Rs+yKHfi9pvt*p-bAtG)|^6_xZxvfcCK zcKBQ5?nR0k01So3t4qD-@UGrR$yadQyx$3#R42(_u$4$90^FFMoUt+46k2po-T^Mq zHrSR+$ULP9q-`!kT$Cce1#H~9zo|bBNNVh4E=q^v59;aPvja&`yb8)pF6ywb*VB~x zAZgWpC|^gimexk>d^Jv-yau>k)al^!!3et<0>F76sD=Sdiu8^<-oZyg_WL5Kz2(-v zw@O6B765AVDYmr8SrnuW)UDbwnCCT)L3#<;QKwD4(R+!Rym_jS=_TS<2g#25T6om6 z__07)^si#D0*W>h9~+Yo(d#)%pB4b(ph1U2(5X?~=8CmFWKS}pv+B3#hN82%BoYAAHgL2&;5-cP|0YjlaMAN;IeqMld=j(SMd z5X}d-BrMv$HHzS-^}e#`XM0wDe&d_g|AqC2V4+)-y*iSEy5%M@Z=!NMnNAD}zynfF zPM&arxLXjp$Ul!0{bCIJw3-NX|@?Sb!FsV#_Ug+6}peOC>=^glbc zXXfz7Vnp|{(BU01cll*74p+HcQGErf<4DW10TF_zwJg?qPKew>XZH{YAOSi*Yp?r3 zf?|BUa4LDXz*CIgBOf`nOv;(KRrz6Q*)fMO{Tafy;y`9P+Y{kKEd74y;6A-z?O%^Z zixqw+XqrW!UjwVbI)^8r|3a$*y=;(I1!t>GtbnT#*yh%xke1LpRz7%0#&P$K20i=z{;cr){^7|?_VAtsSRy|b-aM1?!$h*dUCUf`C+ zI0UXwZkF z89b(;bgj4&U;pP4VTrqYetIDKnt4T2=>xeAz9i&@n^))-*&|>BL%#r=-X6dFjf9b5 zO9+v+M}9?S8OYzFTSpj-IPynTvT3%VrZ$=#u?*~K!HKK@g^#trhZ_PwGMFq)m1QFm z%yjJu9c#wo{Pv9R3D|4U6Y2Ci&{QAlk z1h&M7cJ^vw|4!b77;_5rYK;3fbuhot{Ug^XB)ebdiRA2xI&hR-HNS9|>Q6^H+BlR| zxFJJsB^B&=>P)!2s0l6s-^q=3XW{@=Jc{3sf< zP}_ZA=9jm1EsmxI>)AG8d++X@)z%$5{@t(DjG7E!nnPb~Mw z$|U1X#TT!J#M|(>Z!1|l^s)q7*zPV<^=eA{CGdt9Oov1*NH%Hp<|*Fgl4W|ukfv=n zB1+^hkonC$VWiU;pax-8n=%kxh=Iab&>eln zMHWK9O=#FeX;TT4coPc_xgg}Yh%aLF>@&a+!&p{d%f-o~Xe5~gMMYoVl-@NahdRKiEjGk zTN%8omSjniDT`#$Fbvg!BV4B!pnqh{w+K-v0~d-jiRK=lbX1mWja7-j^-W!3$rdZI zRr-7wsRjHISs*UqvN&|#cduYx93;^(W) z0%rmcJ&U4x^a_Gg`A}#E%9RlmZ$=|z>Uxl(A;#1sUX^N_-DTaQWcRa0thy!xcTPJFs01_=`Pu0OL@IoyOi|^^on~h-%;Ve#6-HBZRfsf7~1(j$nvTS=+rhBZ&2ROlN;J-Y# zAIKL{Y`7Qy@Y5*Jv;$DnWcvnn|zx3mAWO5|aiGTQ!(Dwn6IW^oY)W_Z) z=sutdQc~TeJc?=Jzih^Z5F}lg-o`6ni_oQv&GtZh*2eWo>K|dfahh^UmfAqEF^I2G zXS9r8b{xVfy9gFdA>ijU%5+Z6(cc(e>DQAnoQG2(xK^qpJX)43CsK)?(juvus0{Cy zhZHX*uvtfl!=6{}Nn%uk{l*slwy|^-r^}hJuqq5TS=ChvMW zb#ge=#1t&5Qc~3WZSJ{Fl1qD~t?~_V28Ute3FR_~cc`72pbRkTZg^j!>q=9g1K5C2 zh)ea~2+*gLjwH^h;j1jvA(HLd>5n0HVikL#3tbLiA710@Aa@vbh!1V3*X3n}nCA+_ zPaK7A0>pSq%us0bzNuNW`~F*Mjd93pEEPb_(CE&q#&l|q;7k88&!BO>MuzC`+mw?I zmk3;i6TeMx(eqOc&NjU@lN~LuEuy71Cj=k5QJ8U2Nmj5;hPe31PtO$p4)KN7Tcsyzt1KA+IGLhhbMEV%rOLhPNj-mMyJG0Pkmw^TT*{!+{S!d>( zHy8)lz@z*_fuR(!4DhD>1Vf-m7Jw49c}Nn+-CP<6U8wP5-p$ZLsFjBh|;CpH@7zRM{E)d32XgN4z^8v)z9I2f(c zA1bMiM!HF~T%c0ji7O9{>CQE41kESii@;8&<3wBasU)B{#+dL{pI?+ww3`(FGH=Tr z5_{4}OF2v3(WDE}Uoz5%QFB3LQb@$EZtaAV|7swZSJP0Yq_bvy&Acpew0fUL(}Wz7 zsy8Pq6drS+OmN|POlb)khj7|SHC}S-qKEOZlLNr|_l$@I2sf`ZDD?6`*M;6*)1sTB z7{0wP^6Y^=EZOCY^nn&_G0%DHil-(D<%VaP z#ji)JL@}%-l8?IA zD=Vg}&sg>(HRrPT5=%O(>gLEyUa~B==>+j$WkQzF0uv$cu-tCM#jun2p#2#rKV0hY zBGAXjDr7R?nDb-YU;I)9-Oqo3FAZ{MzIK-$jpb!{M26nq%BKiQ&Wbz|1aL_g>QZ0r z_2$Q_$@OaS)XoedGiM5^PcvP-yxPL6dE9WXZz z!pkQ7C^hfok=3S~5r_Wka@;d`gW}~TX$Eo{JX+b_8TG~v-vPFCS ztvV9J@|fjJZ6|7-xjPHwVi!8pi_b;d1Oh(z7DB(s=*@I?%$z(Xs+G4Sj3dV&!d9#N zZ&k1Iicc1fi5Y)}Vm3inIR6qlRkySXc3gkhpJ;|qh{R4L82{KGY!Qyp&law6vrU)2 zs^c#&dJZa?XpPe251Vh`(AfozJMR&Y6JDP81RQZ9@&o9K<~wj6DLjKVh7?Ju$MWL- z$@poi7Jm^YUc&xHGL7wJ0Bxk|FQaf0m`+KXG!<}jeBqjaQ9LHSt_sH}D5Sb>kO+_9 z!E{!_->G^GAw@c8+5rOFmNkwi>|hoXik>Xdt%K^&%< z9tP7y9$)5vD|M3iMxdG%WF)#+>l^jDJ~sqGnc~`<=&Q}s(-{Q0f!qnpAq5vs|7hMp zvvdqTditHcEmve=o2vXrEO&vp@b#%4*<yICT!qcj*f{y0bZ%^NX zB=9LJFUX25oVYcHni@#|_J4%FSEy4KU=w$i!jv8jOf%k37z&#R`FQw);z>oJW_^FO z*MwndGapeIE^^`NPmHJK@)i9t*qdBq+rFTJ^nD(e%2M3jn6k*FVSkNj7=gW-fw#+O z)cMRg!=*p{AdPX9U;%wFA5WPu1*D2)M_bes8QZU zG`k_`vjsW;aS@|%9|nqEGwi}AVvqcrAWaRmq1+wmq6!ObO%^8+#Xa~$j>M8u(Xv;F zgKUP3o$W=78fH4(OUKTW@I31+_k5;lbia)q#p%!U1EdeprR&0P1|aH6`^7DN;x7A@ z6GXWFYt?tN@hd3xK*OzOm20HcbTrrB?@2S{q(d^j;`50G=P+JSnx{Nww!n_ASru)D zpciwXZFovCiiwT}Qu^-?=^MSqW2tftTKjAQ)u)np76|Zz3Go<2K@Y(OmZz{>i`CNu z!&|@aCiYdcx$jvTfn}HJQDQx!>Zo!8NLr372uOyij}oIg-wlXIW<E&$Rr8kKeXe*_L*^+kOLXogNK{)YyKBM2S)!|3L5`1b2_>(_B$hp zlHBt_Jz6-X$i|`sVqKV;ZQ{HEDP5I{jm=WLt_?U%Zje8}nQ%Fsi6C>!G}ia-I!YhpRKbO7> z#=iGWZzBwH)|`IcXE(h-9t~Ft!B&-c4T#gX=|YY2IXRdY5@4g5m*BTxw)EQ&Y_$#M zaYOkMiPoc)N9w~(3D=*l`;5d5NxU&tts=Or)o##}HJeNhHCf-NxKa)4T^#Ya{k{NC zaK0jE!pxowVgt!Au5u=Y-t{OZoU0>cn}#Km(FS2i7TV`kP`wditH^c9c#w18fst%d z{BC7iBR5do53eJzVIGBuGV^kn*n`wGDK(|qRkCnSm)L~=S3*kgvOzIHwNFN7qa2x7 z%43*H?$uAT>b;i@Zc4D;@|z~`Vu)q_44RRN2NcyvjcaO=KhF`H|F3^L6(9np9b0{> zeg3AR+_-+PqIV5)U!oX)R*M+SfBBt8(|N5X=xaw&d_{EeT8Kc=-q_1xlZK6UX34O1kB|BE1liSJfn^)|9TqivRUllLk((HwnDfQK~jfh zzh;blJ$j|X%Bm7C{#$|?f8XtpO8Yk|+s zXqSaX$j;JtPYx!BHlU%$7Ee4C4~U;@D;uiwpPQ1<@GLFl^xfW@8ezsB>qx?<<`#05cytd8pR2jPNXe*k%LEP9u< zDq~SPZVJ9+G+H0v=@b?8?@VUI3o0u!BVEj#Dvw%$!Yd*3c#&^yIkDszxfZsnIm0Vd)3PdfTw;laog^+QeD0hJaW2<&xrvm2mlo&JSwA;S3rj5c)4tx%r z%d*5=d-UV{jhDqAvF$vDN0!L#r;coma@<*UL~iwhDxo*!%+L}%PEWcY_?A2-L)7(P zZ??Jybn5Yz{QDxpldOSue{wn1U-+^{nr>^Ij!iP%JTIO6f73$r!wOw{fDsE7L#L(| zg%HLmSnwec&%rFkiYYVBiiql$YBeib@X^H3yy=~w`+TDZ>mx$z9&krhjPSzs&~E!?|IJ?Jli zA;>#A=CQk8U(lplW~`naTJ2hwn7ZH4|16_@mWHCt?gq$7`7U)@wtnAIm)B?<+nEwG zUvX-@+uno7B4Z5ZCMMBEhz`bm(#4mDwOzzfFAf+UP$S#40Lk&Gh;P|l@elno#`%{7 zE`QXJ!Fkr%1xsi9?ueV`J)ovy`3=8~FY#0~znC|xlxtkTcH4x{Sy!C?g=;=vsOq8_ zx=ewBeQkE(n6YI2fuN^1c!nwK5$7lAHg+Zf^X(7|Hgv494)B&wFbk81hRWg_Xz#vF z1SLR6j>}3c?Sj|pC$>m|ebzZfs>_hwL#01_`!sl-$~0TuNy->^St;csJr~Uf_l+u7a}Q>#&ZyJ z4{&w^ss9F-4o^_XR;f93`@>L!7CK;KaYH5a`TF0dSefD}{J948$Kp+ST}RM|dqaf{ zgKN+uY)RDm)eqB;=u2_oY(+3H(m29hD78C$jkkrsTj|lrF(>i~emYM}J)gWG9j~u# zJPlb*aQ-|&44)5Gfeh`eoiR6cC`>}^gnKcGNbWrz)>xn+~dgWNRf#mod$P0rmWxC>8+1< zRz~b<<2Ye;)pb=6j_h?k!s0YGOtd##Ty%Fm{yk(xb0dij0HsY0O2VmW4FXed*jLoc zhYadxsEXF}(8We2I8BVNl&5}g=e0z!Y!FPl3HrmA*A*?T-wzeW^C+996uj8*l4>LN z7U1r|5ya^On0ifjK5fp}ViY+eH&DnGxX&r_sUv%C7?-5(>po|9Ocp1KwAN?Dm7I)v zuw&Lji^hOqO!UTZcT7kcY(LIAS-4_67}R0?H|)6zTey)@ik>r|AZAn$LAd!a1M_=m zIN+TTwKpouI2{=HXcL@gv<>zelz)!gOa{=dA~K$dV}hO5a~T%Tz=cpT zg`2EjAAkx6RdXXjfIbEYYs+ERB`KC}vm<0y9<%hr&qq#f0t+}!Avd(#A~bX$ds&^x z;V8+_Pj7V3z4>`|vu!W?j}$)4tFGlZKsYe=w*mXMJ?UJE$*iN}da}!P7RWwKmFsfu z(h51}Upe5Di6iuNIzI)k(Nxr@L#fQwfO0I?s?iq4Zm4&mTaTy9M%7D(2$2v{PdiDy z=4dEJ@?;lF96fpIJ{FUHMG^tPB!RAp_fZaq2jDI#LB>sz zSZ!Wneu|oLN{KdWevFQxe;7&yl8`E}#WO1p)kN?eef?#$d&x?oS zES}<1c?*;xCRAHfAYtR~RGLodk|64Qgd=q>Y zoWknJl(IzO#mM>)w>S0ufSybU15^97G$&dftYU3<2Fu?j)Qvf+kL1hes{Cg#8b2%0 z2~%W>10a$!Je%$b@LV~OWf$H?mND10Do=PD9#4EoKyH1X>-rQ{D}%fl$uylFwjKvkyzbg*U z8&gRqXk!Q~XWyEGz0+V9ivZv4J9lm`CM81cBGiKqsMXu?FgFb72IAXN~9 zguznGFCPO?_X=FK)o)mld?lJuumTXY%JYSXLUdd=DO3-U=}0fCTrGr)uiT@QE0-d( zp1AsC+kS#Ii#y@9|3z(=IgWoJ#yTirCeLj3%vw@SLn#O}jr zr%bS}lq8bW6>`3fQPy(HIE9Eu{mF_t4u{O`zQYlBv3$tHN`$l<_fM*UHtDwW?eHne zHYwo?iRVSS3eA#l2NeuA+er9jW?>8pMBF8dxW-awZnkti9(Z4e5O!bAgZPa&CSRpF zasdlRe*!V(t+Hs*iNx3c-|SNmWY&u_5fGGCFdg>om?-Ce=@{N%BJvSfMRjk|P^anld2I}HoV?_vmmoG^nWpd! zx)v9}YU6;S`EFF3jLz7Bl~X~SnCq3(H{b{^(`CbGBfx`l&aBmlU%`D6m1>Q=-f{}| z)MBm3rc{%7?@yx^)YY&-mqpq|eD~rg(PMclaure7SlN(gZjDAThuGbldpj?fDxrtm z?1`Je#th0hxBOeZ0JCJHlwy@qFa0A`m2$LgQXY^`sK`FqeEYZ^#d4TLi<{Fqp=y$s zE^2@jT`)oKL-*}|Tpw%ysUf@UllXmo7g2U{2DF$Rl&N8rLl13jnbTXh?;$c*`E9BD zNF)_i!Vxm-DLUn+zp!*S#94gQviV%x^-jNf`tpylujQ(|=0!123Xb!~vY^jmde}cS z9?5I;V0Zt>^$W*T^3DqWD z3BQxLkg;77cL;Q^s!ibY>8|lVU}{-BNHfvRqkt z*T)s1;so>oVWgYtXa zC!BQS=bA)}AG^!gB3{zSl=^|w797ws6+ApaZzCew5u^NA@4Mrap=SIN}(a&W8zC_=n2k|g}bSH);QYuj(PVN#P%S!*qf{i!4Add%PJi; zNeI>CC~TH<#Os=p6>7rIK;h0G-ub!d^p4&XnBFW>=Ndb332ipZOQ7wd zj>RAUov}061CjtSH!JIPHBdD&AyYpBU!cGWs3KbVX(b$=lI#jGalj$n4*f<2EZ~1R zSt^ovxp2^KSHh#_bJtW9dFcV=Z|`hM_tF4a>7CUyKN2?&px`&)nC_WF>@^4Z!7@2V z6TiH;T-z^2;jefH_Bejt2m}9w{kl(ZE9$wvk^O+Neg~n?1!5PAdlsRjjR7c~Z zOj#`#wZ9R>L2$sZ()O&BG5$pJ)9gqk0&8vn=be!Min`xX0$gQ7T{lQIYfC+%^rG44 zeP)w%C~Wz2`@7}rtpKBkHFp(^xWiBMT(;!eoq+@uQw`5lgV`+xe6De_70K@u)ogaE zEU8Vp2ndn8_eWb)BP^bJHo#Fl-A1DM0CO`#4c|L(bdaC{b+N)MKF($XLES45sMB74 z(Iy@pqw(OFD~NIywVOH)8Mdv7ih3HD3JDp~>=g7}5~(@jkUx0`qjPRZSYvTB+12?) zEq?x^Ps!rC5(*bwl7>O_e}WLrk`c~WTk(ICv~Gz8jZt2hn=DTk{meoGG5IsR2y|hf1*aeLFF=HQb8h2?!)`^RFxXd5 zpA>%00!6@SzmZQXZ(G;wPwyq&HFsutv9r?HF#n6E8K~#WTd1_=rJNY=bzkC-<_S&L zTgb7}j>di;MWvMM#2(~AD&T({Zr#9_1VNw^=5OG~mPan|DWw~D#tsBdL;!)FI>66* zeKKKiIXx5e%b#$2=$OOtd_hta)3^siR#kHp@HvIsO@)?h6dKT^9x zuT7miPYL~W7UvGcUre4Mu}$wQu}R-PUnhOD>E6SC{RqtD#r?;Mf6m^-_CTTSGxkU5 zrc}UxGy96jU*8y|%L@T>s9|M2&`Y<+r|0)ok)KN9zz9}Iq}7X?BSeF?A)4#2TO zT*-Y|i)3{aRwxh-P2@kxgv~(+fvJidW)p?X)eS&*Y#l)4wc4!t(g}nnHUvi&0_TOm zgHS5`dZdY<8e;F~UqAdiI1m11*;lE$>eiHh#{RHZh>WVo^+GIN193h5liue5HEz}V z_V$yg3Js$sChQ&oNJ80q2ZBj@^;>D=To4pIjg8qfwOg(`9&(fQt9w>I8vnajo!qIt zpR;quzPgjrDQ!Apbffrg@1L#)0;`sRK$ib}1G}<7;BO#s1_(U#11sxvby0WH{_hJgc)r0O(I9BIQojMEW2Wf5&IQ(i=m=CO>5d`}NHfw~XBx~3 z{tWX$PV!6i!Xbi~q3F?LwIRRFTZ68bi8{OGBt^qX7@D0dh1omWKar`zVF=_{JSt|~ zlf6MU5N*K1cEei!?i&R5C8_o(qbqPnhF_Zt5OTVMIFrk&K;Rby?@B~v9X<9 zIGt-kvik>*pWvfdak*{vSH~&0Lw?F#3dqZDl7qoNq9vkfddiK zz|Vx3H2-r8Y~pp$xF{egW8RY>26I|SUK^&gCLEp|qR%o{+?C5`C*KbQ-J4p*tG2kQ znQL5juhwC4r>yLn0oTl_peuokDa>;Z7+rW$iQd^FYNWrt%!=FS8;E1Gh268iE3x*< z>5tDRnGQ?IZs0&I1;m)x&WVz?zuE2sf%n0NewixZ$JvjKQzLt1H$^iNp66msF#?Pb z7fZn6qlppsloR*V9FR7(2vA%y?^VGv-%6hfp)g^*&hH&`qF|y5QnOI6spyys@7c<& z6gAZ~R`H+<2fw8cXufYn#%(4sc>WZ5{#M*ngQLL?(KzO{1w1SElK;RfD9xnTdCqK= z6(b^p#j}v6Ovm9s$8UKgQq!w%i$qaOPc6irH)n%(_OPd{8{OeEp>$bOXBI*4R_tU9 z^_W7F1a&PSF~v4Gs!Nv>WKZT1@r|@h;u=MwPtAKnmzavT9-(?Y=Ecv_hW5I(6p?@=@r)G zXVkh#f!uIN-@Q;hW{gpM3;2{4tISV2X;9|pvk*V;*g9_=w{6-cPTnNv+M5g!dQTDX zE|iBu4ojRH3Tb!mUpCYTFBJ0BtrkgWguZ@yJ^@LYv0Vn^Okv_wQmA9a!46!AVZVV? ze^NK(s6;s|K}O|>XcOPA^@>b{>uFm%yrq{~N#VR5EAYN4*aLB;t@B1t4v6YBG@IQv zQ@11-at@NjB&Wsq|8P6k-qt%KJ7-8phRr6joYTkNMo0(r<_)Gn|E9ZwDDhhnolsW& z!5)32Hj^skwt%?a?L1y{{%2I9y`SlvX*Zum-l+XiKbmm7FYsiV8x7g?j|OK(Qe>AO z%wk!>A)!C6tsRG-i!crd58vrLu`ZUm1-81n(RZkkitYvo4aZyNLy39X(f(xmG(1acR0O2~#b~g?%PT1G$48ml~a*~Kc-Lv)7+HFE1k9N`f2%?;CUdZSG z*FG`;#Od}~NOKL_(QaKXAt0c@I~r7b_qZ?K%iS>iJc*r-;qpxnjgR&HPsNP(!N@%= z)xpkDS?{vu&@>q2iwW&e?G>H7rjrt+NK=B#mUx(LI>NQg)Woxf~WV*Vt>VK$%AqcK^DFtqqtp0E=s(|L(G|cMLc7+ z@6guXnwdf_4jgkiE4D`;;hrBwmCVp|n;Ts3i-ewi-0epihRp24u)Wq3s%9lO0_yEbiQ7{UE}6 z)!9F8y#dTskv-_xL>2p7Ks)52x|PunyV(kf@Pd*%g~kZM!@n0dRf7u`YeOVSvFeU# zrVCHZ*J~U|g|g?B!f>B+EqU_YLbdRWD}qRCjk%xc?P=Bolo;5p6$JN6;Psu1ID~z_ zVaf1&)G?yB*xy%DVf@e%s#G*}TG~U!m3qsa?y`$-()(imk zktEfq=0i(J$7gvOHP^D*Jkb^5L+SF#dtE)bt&$^d>Gd>kSq@FpP{q}3yT)rWemij# zUD!B5y?-C!zPdwD##!Zwv>6`9fqT&yn(?$BPgaNLa*l{^Q|jwUc{k(ecavspR!>^RGN5A?2k48l?#U$5~6k8o^Yv})z0 zP+lHEw%+rEO$Rv1CsI!NE~5NAzTMJGSjPVz*uX)vfh5|CltBnvE!>?=Pyw{dYi857sDSe^a+aJnf;M96|GHu_q~2~&E!o zSkw))@tNCb2-3=O0Gu(t#T#g7qW>AN90jRl1Cxtd;*?m={*thDLB9rs9I`}=xX-c{ z2OZy@iADanmkCyRhE5OLu3vlLmks}HB6)2egMNGl%T{+7*&~^d*~Z`4E1qvn;7olK z$D^g*ZoO%uPuUpKqvnGlxtHTBOi9Z(#mp_*;NiZkOr(25e_K-Yt($Ey(#eLdUT;IH zrE-Sb;rKo^((DP*gwZ4-Kx}1C*3P6tJb1UA$a0+uCeU4o--CyeHKPh*zZF=baJpF4 z2b6t1WU*a@M`F(S`9{^`hb5U{m$y%@t zGo)}znct>w$WMV*(QFjr>p5MWq$xOfA+j4%rPNNjRb8`au@B}!(EhM`b>T+kn&Iu= z;s1_L@rimP$TrkZ;MKlMj>1}|8sA%U_-pJCvDSv6o6_Nm&6;?gD3?pfx7Zo`6xa@$ z{gQ;1#VnEf+Gwlea0@!;3{Tn;TzeA5svru^N=AM*8lUtIpWLueM4~Q}d1wAy!$^^& z(-O{8w+_h3&&C4Z`b`4b(k=I1oxvD78|{5Sid@R> z&8`Y|sOPD#i`YguNth>sM;!gGXV)t+=z<;*eHz3PmkAxbiP#B%GZv=R#*!aS*xS8& z$7FOMvegwm3UVpw`DUGI{P>-$@FGH1p1tqczgb-H%nKTC%if7)Gzuk7 zxaJeyTB3H-CCk{&d6P;D2K)PuN{2(aF!z|>3zay%LobD%9m^!S z%PK4Ao9wyh0v6WQ!v#rzy^e-zRQAo3EUQCheni8HN-hG!;P#(ORmKr47~&*$y+~wj zw~Ybh%vDjy8uT!e3Srq>V=1bd?t|{o4IRy&x`~t_2VLiw^@$H!2D-eoqak4m9q8Dq z1ZP)Dc%-H-eiCDn6N`oJEC(McMh3blvO-MkZ*_4}*Kd)IGiMp2S4A8#p~#WWT^5cn z40ZV^W* zdNw%1d$ALr1TnGp#!E(IE~FO~6$ty9xtq`mC?{GeYvmM)!XF;2wT|RCKE!f?mTLXG zu+{{XPQk^>FK+@rC^p<&A_D>g+f7axBuYT!!7#R*L#AOectvO z!4RDhfMeKVmpXB7%m}!^2y!x7h&XW5nU6srIb9L!+Mj(!`F6KuqAdOlQ{`%ZkIj{(T+NZ!D&!vxDTDgUTxulk~GPigQ zj5%^Nn^0q$TGGj*`vBx>SCq7eawB|yH&mWV)l2)RPA5lD){2KdJY|3yow!22?`kDVo&J zg_ec&Kd?@~`DFdn820eU*1E@VqYHNi8wcL+3D5#RmZJA#+wZnHT!)CuNx2pI@oou!rEt9& zBe~dNR#^22L8%Oj-`dSlgCt8#_knLCLQfR$CkMA(|GJkbVV!hjiQaNY^DYe@sAE=6 z`bto9;OmCI8e-U(S^lLNX_xc{gCh7aW|2v!;XGwPes!AtH3N3UtbSomg0iRD-KSc} z;Kw;C`D*bDw3H`1o4OG&sDBL)?9^xavo;W1+PW9-QagW> zf1masoj344CEG0hXFoxJUJMiHp1$V=cgt8T?i_VU#2p*f7>!wVYNgC+eHf-Uep2Xe zxpxIyAWO@Y(dJbMX3f$k=g)88#CgO4Pvc$6S{NAcOg|HLtgD*U zG&rGMUyL}%{e>M1y^@6IP+=LegwfbB#UsX$k*!Py%Qymt6ezP!w)yfd9*cQ~JAMsM zg7z`V6H||<*M}NO#pUAE#*lXoaVGQ!E8&GcJXC^*tZK%i!rD$5EtvuUg`#l*usVQQ zhX0E2;kCXEZ!5t8-_1=b7f?nCuRW#CvCeI!D|-zw`j;^J@>tLe|N0Zh1B9RfMBo5q zPyjRlxbl6=CE2-YHecVfO&Kg_9m40Yv?OnL$iInKUcmp3*Fk(p-249%t)epcR}fEs z{vS#4{r4`6L%|7T?#-J2YOnqIAL5ksVyJH=m?23mn2PaO`0_6X4Kz`AkHHluu|5kB zLE;$h9r=47xDqxtHh}c4>>Cwsz>gD66c7kG2PO~=a3$0dqCZ}c7!RjxI|lyxdwI3* zLSkTGU;uC`_^$&QTQj_%k=wv6rx3o4F)mI}^=lOy26|OT$@W7B4CrP|$}XWCY$iX*6rew>uO}?@)87CU zNf%e33jkNeFCmld3km)Z@G6dO^cvNYGHfC)c2w4o2w(lFFJ%jvTu zwoB`c5p$%e#aPem~{Q_s;IzwSk2ss(|LKqs8;kZ?^aqufa{rN-!3={+}rge&S zDQM2&ccM8%gcRKoVonTLJTezquCQ+MJ`nqDMswlz!y;;$Opn-!b8}eR{+mp@023b1 z7O&qcy8=Irc4A0`?2Qk6YMa19?&Cw0YIqy;Mq&_iw{HYGFeJCNWY*n}g1KjNPcQ|b zzh4t*8?Sce=6axV`kb66dO^N=H$zx5Tz$#iKwdFDR}On^d(^Uc(y6i` z#hZ`p$S~)M6i~#(i$A=pJJ;i@uBwg7dJDRO4mQQK!)2)7Od0*uq;)!1l4+gJA=#n~ zBkYm&*US!X+Ako2J5A%mMrmUUpn9NZ58K0cn&E~B2pd91k%xdx50JYCot07uz`Ci* zW%7nl?_0YQf~Z|Ke_{Cr-`2~$2lxeun-Nit3s+_5M1?LHcOL z$ULOyVHZ4#0p+)x)W&0IF$%a+p-4sm><(a-@?SCcGeoLMExo+6#rY_J85jTn3jk07 z0C@mVKOm?+aK9AT~y(RFVb0y8u7)(tyt=zz<RCX7}H=e`b`(EkpS9Du;4fVr7NJvPSG4QiST=c1z ztlNj-@RPJaFQ4(6e53oecnuW@#OEs&>&#~a-pp^%e(8G;0urCg@5vwkmlfG%Hw-gr zt^{8?sC=>wq@ zg~#Tv)G25z18uPup{?5MvyffQ5RYkBcBoxojSX$K4A)c~iu}F#S&0Ov6^Ln8g?%=V zDsa+&$y5XKqECOnZ&2j(seZ217+)1FF$jSbbPM)LHdm6}xtJKhAwTdjkFY*I9pU=f zigwH9UUPrwwAwBfp9+6{rZK%jQq~M+mebGv?%HEOJAT(Uo=*bm9)6M;YeK0gzPQq5 zUL}Q5;XecZlExU7A9C1$FTQ}_C;C>r`8u{n`_`p)+_4;dyj3!9bGbu^KB{>%K;V^L zDB=)+>J+AEgw=EAaMmKVKkl>L0iW0?WvOpFDmd{~JZ1dgDNvFGh`s zzK$Vq;J@Xb{r&w1x@dgD!BJm9^{b$v$?qiZg^WREr%*q7h=>3pKf>RIqAXxx$lp%f z8E^1WFJSxv7!H9cUvT^P2>LSMhWt9XTZ*iU=0C^RSlpMmyYimi_zmemyNKR`$Jg-q zPaFR|9)Vx8B>lkf|1ujW^#2i*Vmm?%4KqxGWh(hzB^||aOkUCN93DgN1heq42-!nc z$LG+|!Fg8WEgBOz+^J02TTMv$tGD?QG0ax|J1*rDS!L40t9Rt0_lfI?sZT>@gV_^^ zKvVC*T|GSKxkWBF3cBSKC=zm0Ve$>if--oTnx8RNL4_(j?tj-Ev<9VM)_rAnXQCS@ zeTnQ+3pYm3^?O>R?diq!hjn}Y5=TRmsekm>iPaBk_Y>Q?&LtX)&RgKWeR`Kg5J*5{ zm<8bpw5T0EvO3j=S=4bOc7vwOyf|}`AL>1|;x6~_fB7MP|3MNuF1I_5|J@boIL%viz)h1t}AMN3EsUg6isn?xu=r)JF@5(#&Hw&h3rR@7Df9TG?6 za>D^tI#Rb--Fm(e?M6U&o}OSqDWA&MrY7D09V9BS=@6fgRwqn;+~HsumgUllWyA^m z>g+WF?oW9Bw2`0cF+u$D3z@Xx%Ai+@+7=fB=ix3qW>-PxDvaaIXIPJYKeXeXeLYJQ)`SY5Ny;d~gU;nd=kbGgH^q&S|d8(SA9ESBce}wJ0Cc_<` zp0iR(^xOc#+PibcuP1@$qNIr%@Gh=;gPHOHIc)Fj{D?z}%fB zNL*micUsargCLh7i~$t)0z=+h9dk%`NLbf8qjS3!ib>;aosEA*80mGq z8)^=cec?Va$(4-EBYF_hSsz@X9tKiE24~5`=PjcT>QLnAmF$-^oX9qGT$322Nd zaixgeQe<~3UzwtFA}MQhCPdHp6%;+BF?PHty{jU5fuIygY9+fP`*P^~*#9hn|09>* zAaSSq{<(YWBFp!&TFi<(I-%k26yiaOj$q-?`H7u496|%et8Q~mq^*Lt(cK1wBX5{q z20mBvmB!nWlEQJ%MW9@dy}(BIHrbn-fJcb=Ug#rIB(2UXmfPgQbkMuEIN_^S|Gl9I zAs*2M`OS&0BN~9t;I8z;eXYv*(LhqpVFoAqWZE))l;8D;>NQgCA{qkrh?=A8JsZ3G z_b`+%%;~=Du^a_hsJmm2A#sr}%z?C9G5zSesHD5G!9=I^Rz2t=l`g~aEK}?HH2t9r zDr?W739RBTC=R49Cdb;TroGm!Bsj&R73!EwJ=YOeQmXzoC0OKe_7Zr{WZXS;?+icp z(ss*2>BmWQU!x)n2MGrb_3f*?@5%&@8`L8q`bLh?R=Vm$ZV->FNJ|_OZmsD}%XRh5 zTF!CHVg-s>mAkNG37OKD)Jf70*X7*3ISfjL_{u+zzz2P=hEDs#lYbB#6s6Aw+eT$C z{4oKu?W*m70ppZP`=nho=|Jr~q|CTlZLJ$PV%NfY>(Y68c4-ncub6V$dm0<)jE5gQ z^Is!)`lkOmXkA%Zn14zatmU4Qpt6CK$#d#Shf}ShO7qB^|337!e&Gm*$4{nROqjOj zrS|xGg9FYj|6UbsPt+ZNRgFeGAu%)L~H5thf_$Qt-_@&YaovO?xQ2a1zx0**0ogsJ8JN!?6<1Y;=rWdZYu`UoxMmTe%%~i@<|p0 z`Fnt{$oet+P!6aJ>AJL9R%jg#yo;~RFdA1se)<~#QNAuV_jO(|c{*Lo1`@Bq;+$*sGg1;m00G3L&& zkR?rF%`x5Kd9`mfW!5%oRkaZqxR~ZE67a_N;&vow`E?LJZL|<8~R`ooAoBRn_Y;!ZqVj zSR;@V#g#|gk?m2xzvag0-!VJ#2f{LObf7Pqf* z0~^9W=V%H>sgzH|%J*#NYXz}R;Ym#oL*!Gb(S}TQ@u)1{*8Z$zz^F52Thyo(>V%O6mtZGs>>K&#SkJIhR6TrZKq49^B0s}xnhlGS@1c!r=;V=tk`N@68%(8_4IkclXz)hqz0> zb6}s}^Hatr;S6U9u)~k&3G7|x#r{R{db_#18>lI$4TSore0Trb{9zxe9|tr8(tljN zBfaZy18Z`Jx)c1YK1V+}KhmzY-~F1q&9Bzt47PW8xUNg@y899OH}%teIiGW%<6Z^N zw(nn4vVMboLcLK0oSE$ty%63`5BY5(-TtV!Lil7{)E_`f_*xZtv>UzK9$5G3YCyds z2>cN83j|Vqn!hf7vVJZvFYIpj`Q?Ag0Igp)KV@g)t_76{ceZ=GfB6Z0M1RHsyD$E% z>hE(tBl+j9`{sZ0`T4(sy<wphp=ysu54Srj+2gU+a25P zBpus!I<{?goOEp4w$rh#j%}PT_rCY8-W$K~zdg=b=DBk&Rx>B^w zZe89HZunFAE;rnsT|Ne6{qni-ss4D9EcwFbar1F=n|~T`@dW-B@=Edg`9inTM}U8- zD;H4yKKsrOV1Jqd0G_=o0B3-bhfnX2Z$9t3H(i(BKmdXFDuD0{;92*5^ZY#l(Bv}$ zfP1;RMtD|z$a*H&1$EBKFU7nX6Xv}EOqq*24CMkzA}H~f7?8a zx%imLknA1*i_bKm<>OlSRO$ucncz+Lh=0)s0BF01c~gDqdXKr*J^2_j{NW0q035*K zD)dxdi+GEMH^XA)IIJ`t3fN$?DfV?*XfR6`Y9Z=^}_ulmO@Sc?vocd1k%Kk`jMX=T7^zP^N^>OnK;ml{( zXAocvxcJ!CqK2$PpC!Nu!1=ugu)4=T+LZxNe&2kDc>&z(0(^Y=`@3R&G~V0ZFQ&st*&>U zrdPQ)#aD_4{wu)whyT0)k}vD7V@`bb06jiA0KbnNzIf&T`FXc%#HRsZ0Kj-}dZ_|b zJ#N196L#&qdwNd4B?6kB?rs^M8{QvYOrN@5KLil~W!+5&53J&?nh>*~W->NZRB)Vi zJtz)47&c;Jz{mgtkL&)Ud2b%d z5c;g-ZmPbVW%+;og6%J7rLWgVPo5wdoEIJ35hS)mikp2j@5E)VtF_;Eq5TFb8bBQE z)IL~&D2z=hB6IjKGFn(}M*5a}YFdD{{B771^wWhKXV*%?4p9PGn>i)iK?*vmQ6b9e zy;4Z@+ErJ^xAy~2_5Z#d7hWQYXREg^P!W8HvB>5h^Ac{+hKhD40z*=#D>Y`JtH!o| zPllKBNkcsIjXzHkITmG5YO;BNL%@#wdeU;_tL^7(A&mA1Sq@j8y z^;EZgd657n`_n`cpG{pK86QH_)-o6cvXsVixj0RCp$(k5`euRTVk)4y^a*j8JG^p{ zXW8!!8(a53A5_J`{vVgcbl6kVeMtTcn-1J}Y&&ieF8movb!zq*se?(Gpu9J0^Sn8N zZsi23LZdP%t8yS9U%tL>6l|+Va4|0rvt&M_0I|ijZE$t&tcbb*p_CZ#E|AU&lWjJP zDH_8DsA{-JD}8Y}v!7cQCY)bLTQpaahLyG|V9C83h+QeyCo6OZ)>Q%yke>X3N&(kJ zT%GT`OQdMKiNRm(^?iqL?FZ}A{2L2w<`6g9jLjXhhVR^j67BGtL_OUPa2ZBuiN&54 zVm!1ZjJjIU4WsHoJKc`7H3T zWyW81R~aU)D<4lYrAzlmtYWXNe(hlX$LqYZVZRUCOiOL8gB!DREu2uY&kJk8ZC1k0 zi8A(B)faI@TtDu%9>L`*Bw6WY6-Nmz7iaq4Y9i*QJ=7vO{6e6Y0tK;2mL1zd-Trx6 zoW4JM{RjtV!!K&YAbdZ6Xa$*a+Qh26)7vFk!tHHBpJ<$~jvP;f{J2nTnbMHy*j+16 z3qiF((a+%bX^0!bKW$#&4pH3ty~l6_Be-&kc11ZfO7Q71xAQua5~nV_KWq>zD>KVZ z>eZ1WmN6&(m+A1{$}|4c7^K_+*|S!+%*cdvfpkA)lY(8{*;e&w0CKrfunP-!Uss>LnRDJ4XD|<5jv*HA*ZY8|zb;!YcMH6y>4TIi}$VDSH z{Ej5vSGxQ-X(aGW4>FJP@=IQ|G;kVzD$2+|=X;9M&*_N!52R3hGe>6~1qwNbL{ImP z^$WxD)p|Vj6{pQZ(SEJ>Z~c@kjwfk18rG>T?8{G|E%CcgfO9x2q)qdT7Oz{se z`!A6F`@n6FtbHk*-<mFu`e?A9Kq82N}+K)9YvG^l$&M z8vf6|iXpNxb{L;uT1&NWI#-81AFuZ$X9VCjm6gsGnO4Ib(4*@jc=IKY<}51k!ywg} zfk_&cuAc=RU4a!wQBrcb$lA~3&elLO{xw6_T(Lz5q>tA~^~cgnoI(?B*oe)!K$rk0 zRF<*G_k*&})Ei9VpoWl%AihSI_&j5QC1LQRXw>X4%mx9@VODePIK0b=Wv1ZnYS_pP zr(0DEqb{h9v?fI7esfSAz>V>`D&IWk`EQo^eeS}wx&JZy#p%MFmt>i04@H73;-v@H zI>K5%3fFLl^d5RoC~1eeby86Gc@>q)Z;t<`K{ez*P4U*`99CZ>%XU831Re^72-{A1 z^PymjJ6*uI+D^?M>tkc5@C7c?n#11ycn7y>&Iek#@;Fx$%A!defuA#dY&S0^u_xM9lct5kSHQz96DB5q`lPhmPH3@ON z61WkoLFoM55}J>zEY%*uegE)lP;M+%Q5^=`YLbI+Lny(L<@)5gzF4rqthpr;#)%Q1eZVbA;*+zX49=60opN4V3b)tShZV8rl7+*$J2#G9!^-qzmWZl1O6-ceRR$Hi>m(` zT^~W}WrR!?`~gK_ACMFdL+HEk5wgaFpXlFiIpTC%T||v zsJme7KZr8;+vffYglRB8x559168{^mb^MTF%9X*6D47j}Ik9^*@S8#9c8pR@D*}SB zJQTmclR#VnHl7@UVcs%;HTdcyNk{^m1;l%o+XJ z&S?3NG1nHDC1fIauj3gzY~PG8KYt7B-+mt3(pl4YAS^T}dH#nx{l4PcLnO~Xi-14# z6Qai*78{`#P zKPbw+ES7ls{@8c!#Z%;dy^H8Rc9yg}UghS}ysu%NmgV`=RPk}#r^NN*P+JZ*a|=Y! z7OkI8_ODL#r$1>|66v(h{V%N12&n>@cgUPyi>6AGkpTXF&?|kgCt$8OF-u$;m652f z$2maSLU_S*M~`V#a7(j8{0K~O+4D%1eQ2wnuitZgG$LRP9rqN*uIUc%8zAbiWBc>4 zA1T*6&XJ4-vse7~j0JA6I1ZJmEBsyRBlG?xd!1G&>)6l(_X_tZlJm-1SrQaX835k@ zae%j<6gu6l5uQL}@uGz(Wvfel-*Ysj0KlTeaPZFuLU{pGig<9 zItfQ+{N6M&Ed( zHP=Y;<8~8(t1E==!vkt_jt4G~yD^Gl@kIQM3;YJ@>~9B?9WR1K$GoaV?`@#|8&mk+ z&iN)>Rb|-J0>rRjR-&$3x*!Z* zQ5#z z6Z}ruo-pA#b?3+BHsD>Hp(;72?QqQ*R6Dc+DfL$r;WcKKMp$AuI0>x*gjFSu1*Ds? zDm8!n$>43SkfcBEZw2>{1zN~<)E>z`H7vTX?Rw5I+IGgQNCB;47!Ko_)7%Ia-{!O61d2e zn=$Ux|54r#AiA5v@i@EhG>eyhtB$2NZZww~r`@H$vaUB~<^K442&lDRt$)Wket919 zd(QR+c#OpMJbVk9OaH zqyW3$C-lV26}9g(DvoUmhS^TCHJVA2H8@7M2I3!k`I}7ArhBuv9`g4BhMxf`DgO<= zf!Doe#E5p=mnCGS3a=_dV+Incunb?xZG{Gnexr+{!-#t?tIk(+yH{W@U^)f!i^T}I zQ3hz+vKLAvDL3S*3BXRrWqp_+^q7OLV|t;*eYFwh z!HVK@OSE8*?Xv=6)u$oZ9HW*<0q@yPKJvbKtUnc)e|nEM)*T%?e9vqEvx1f;O>a|g zs2Be|fd0+{#=!y(Rlf`s0b#>@F0zq&&!LV7SHtXPEQB2Wa~V6}uc)d}>6;_zK zoant&Skpn>Ft%HdkE5M}xlQ=ol3T+WfUIv|#o}P{-wbw@f{XIHnci?G_{)5c6tNZ#R;ausd*eWO1*db^!r5$;jTl< z%&`J4*TdDC%_&qH*c)U55NNXzilsY zCniMy^FP4-my#Q~bd3oW_D_-T_wg{HvAI8y-c9cux#L@0r^ehXmAZVud1@UjJ_QP9 zDeAqzFakG@WRv(&O~a!sU@~L~Mu83*4)CM1(HNYL{AOcQ6}AkNwrzM$%lQf1)pfM) zq=jPe4fH}7QtsGp&A+A=C!{T^d zBmPuX4`!eu`uXKGyP|ms3p4>zkO$phIO5($Df3ZK092NCvv9k3Nhb4;PhroVZ8zF0 zcGUbVlJ594H$y+bx`v}-IMHgNtM$NDD2LTuAA}OF3|K%qV`& z4AqpW{ol~N7F>)aOsmyRFl!sAzoJdxT5L1-4G~k=3B>|BD9?9v^ar&K;i*mcCm|Xz zED>03`O~0YKTs8s7`k38EB@-qZxyko5AYBKff%p{SwBgX3=$NL!CpHFD+T}=zVbe%o7J?8__w8zDMb<{5muAOJ zM~E#)=E0&&2SXHU*&UoEu(>e2Nq10|(tsI|)DeClw+&ID5kok2ApLUU^FR3M@94Qj z7DOt%{p9qwdT?H`jgb#KM#{6|k&GmjbpnjKB`*)Q#r!Dod%COLg#lwmEPK+#=ye{y zr?g3l-yjW*-iFqL_=clTlHg>r+I&8S!l0#tD^jf<{W8_TR!#3KNG9a|+&?l%23U1| zs3-s56{+V^m%t!sCnHSzDUl%A=I+Alny>LXkqyg8{3lXsw;lt!pLPqjISEMod$VYmaC9~O5>`rYSRN`0y zI;R-9mED4woqS*FiDt9#8bx?*em0e=zYDOxYgyc2SBvr}|L{za3-snK1mW1UrT3@a z$~BTYE<97m?|+zsp5wQs#y_ETC|8czit`^01P$V4RT$-`imxBls18U4X!aijxKM5s zt2eW~flY3h)v2g>UnJRkk?yx)f78+I7GHA3{elJZ{*hFF)6s-^>oL#%U35a>H%qB% z*i=A^#f|+BUK1V?a|ROYY(WNUn8ryE3_u% z&*+>UGD#j=GF4r7$*E zcuH0<8jqs!r-U>vuvQ#$3UBxS5=TFNQOm4Ezj8|V3`Pb=8_=9dOj{lV5tI9kWj3)U!1g4 z$!>{W?GBW=*TEF&kFJT(mU^T#b(c5{p9S5bep4WT;Hlya_)@M0@UYqcri%Vswl#1) zDb^Iwxg?T7Ny^n~6~%J1b|$n(M&>@JD3EBWYy7XA7uJWnKO4U)iEo3?hC^wD-8wsG zpDWd6nN&Cm3*7^%W@9$yvzq@;ec`uW!fLRPkFp42GL|DrC3ptRNlX$b_K*fzBhYq( z^IyEwV?EyKH=P3!U2n7LE}z8Jq$-I`^B;Gr%0)10MdgfS$cy4aDM@qxz2Wp<{iVlp z^Fs@6tZ%7b3KN;%Fd-t4C4S2NO$~(3ky!Cf=fVq%FG!*3-1AT_(DZ8+9-TM2(qgwc zkP8M`Yyz{G==PK+j*Zl_2mo!MV~NEX+WFG*nt?Gin#xfbDCR z=>hkGN~K7?D+7m;*m$MTOSuscankd)UsN23g5>|gRPZvjvW+(o8*+wgfEi;WdslX8 zvZ0CiOtj(Dj-Rz`%_GLWw4Q*7odh_FFpP@^H8GzYF^adYGCOFixz2wz9SgA}g+yi? zNGFb%cT@aFzt8LSQ;4qdKO+7X=8~&btmn+bGOo|>}wwMV;?#tqd4TaN#s z=I)yx9)2*rmt?X81}a&cUA4TAuYHd{mz2{bmfx{?5>~GCFH^bJ+vPe$-+HKbcJke} zFM2Gfb;5yeG5!k3mr=^us6YeQBp9e+=Af^5#a;{e42szJ(X@f1H&n(TCwku$BCYp} zi;jbfLoukNVMQp@WAP*PHSzWQr+V*o~ewSF0I z>ewi6$4*g*q}`q)H;KQ1{COQD_XhuI{x1QoQQE$tCG(Gv>#Z*sh61xhD-#%B=t#lE zI32y&ci7`u%-c#!^M7zykzd8OwJ~)`X+?t=adv}0B=JrHZ-m>`+tYEYu<+fH$!SiB zMQ6-G)lQF$U#n946hyael8Xw`AchNb!uV;+aSXyM?PP9Nd`b!lq+EHBUIA&}Jh17h zPB*3Hi*nG?BT6}tO*qLbqvg@O52i_wuO=)4C3_Nz#nonw~WnVwFt^3_kZp9 z(%%0~^b8TMYyFV86$bwz?EfbHA$@7C`d#F%u`d2UK>Z(W)6Bd?WbGHN1~vs+z5LY> zI$}J7Jl8%wXOlu)`~`rZrvGB~f26PfC^l_O%;en6KZptL$X9rgz9@2X=Q##tYTXBun&3y=6oN2h)U-APVv%53$g1(BEH$qA<{eY5b{q)V{Dk9K-G}t7 z8O}O}RhoTg$P1(=Kf;*mh^6XWA1Ed5 zw=j$`=5q(dYCywUuL2lo?=bAz;Y6@dF-N(yZIi3mjsiM~(uK^^68D_T?9aj^<(YVV zQZS=91`=IwD!o44OkrN4ySlLIACYohserTqWB28Jt*qtZwVvd-uIF)PG9;DJlZdqMCE04>Frfd-hJXyhY6dbWRO)m z*WWd_!t9xgDKYeT&JgR%R)c`!q4_#?S#4lN1w(SA{bORl1xSM*g?u0wthia8jla9} zU2Q7Qj`HXDd1~))9w*OAC7?XoVvgw4u7(=3?30)+F1#iVt4-8^_PQ~0z_nu6HNf{j zh;P4qy%gRF!oC~yOg|6yKgP5dBvqudNmfGwhfi}FeCCyw-h?I3DtUzMyc8-Qk@2NS zlw4<_P{5M4Dn`jteCC8F`Dg8ziQjg_Q-#oPMj*0*@TD1Fp z$xy(pq|y{B{My9Zy`*od-4rKeumKtJX^DdiGO6%%CRxgDYAQ1g#=~G{%bjB%Rl*kh zem)l&pD>ih+m1%1T_enTXJxih^F;t*;rG3*S%-6>ZMGk>JQVLp))%Hb zglYa8hQ=35$9aP3-yH1as3#5rc^2^3;^9 zRkb-Yc*zr=I}8HPGDgvt)q(EIW^DT{)Y4SBU{44%O-_Ry$oSGfZY<(B(07-vlXt#m z6s+-xN&BQ7*n{JGk4Gqmr2ZtVD&V2uB$uwo5d3?FBFdtwZ{y}pN{atmHWEu&sf~DV z?Txw_?PPF7R1DswNOe?LKqZbz?P$7Z?VDCS>A~0}Z$VUkP!13Re81ev21l!Qti~hE zEqNcg@s&>tp@aW2_t(6PTDD3L;IM+U(_h__{sG_eoK|H&<(yo0E_HRzVqQ4d`ITr< zip1hLxvR9UH?UDY;Bo877is9wNLCaq6aSRPmu~inQrfwF+#+ax=@9v{c8G4!J&}!v zLC|Cb;xRdl6mm$8J5|6AgMtTvXQ5?XHRzePNfvoS*e^v-A|;v>9kzyTFmcJ>VEgqD zH#V+Lt45t^)?>ipIDv7OLlm;ex(|D0;xrh@<7rQLX1$*S!>NO~hlst?DZaB>AOmW` zCCO`gpe?Ji;}W9~Lw!eE52{@<3LmB)OCD3YDQs?iLTrs?^@6&$Fj^i6g~bPtX8Q&5 z%O^}uSTsKz4HqMJ36`eA$Po=9(xf+=d5@$n^VO__yk`LzqCJzC`%)3??xe_E9_-0H zf)|&@w|Z6k5n_2o1P;ix9tdc+{qVEH4?!fD8`Zf(J3ZPsr9kdGc9-md0+mBdXD94| zU$9VESMb3uVxV|E^@>*8$c&Ja%n-Tf$0cbFB9H{>^3;vL-mp-GIzl5fHD{Gn*(%k~ zLb`4(wnn0ZtiOXJJvtga;2OKX>=~hol0Vq9=b`jIIQNF}MiP&5bHuyKfZ`6US#}3* zurA327nOmKeLi$^ISfU7Dkt{b*|kkBhhR7GSJl+lp6?>R%cbfjbHedGjB_dgo)gK> z&dsbSK+2-tNhwjdBF3SbsYa_X8cQY89_%4l!k>akh*H|5v}R{&_!jqa z*Tlb5LOiSC)k{NcAGt(rjn*K@bI*dz${>a|N)B)6d`=NAsXhVAhsOgwHE@xtyzb2)vTN`65Gc^IMvN(hF-U;B1LawmjO z4pMSl2b8u3?f3c%zK3GZG zGr~$BxHI+$9j_`dLpG{f=vp6oMVU1;Yq2>4Gd9eqv&$z6m5H1*pj6-Y@mH^0J0tzf zPIPM*C@0vCqmYI>Z8Rgj`eudnBX?CcFwDW2!A#bXt~2z91zj=P15TT>A&v#@W$+T3tG z7HGv*jccl>dx1=hV``UO>J%mQNK4H{<4>VBA;9Jt?$AAS2C#^RYQd#`z$}KpIHfCS zB)(SE`Tk~b)A4=`uD)0UQU+51V|IIyxfQ{R+pBaZ6bM?Di~xq*WcaYwfQPn(1}Tx1 zV>bJBmbJ_z&!Rms)#yvmxA6_38}3O$Q4I70g1nZCQJ6)Eqg$9II`V~`Wck_Tvpl~+ zaxZ*9Q#*ZzjB6UQJq)pHyFw;WmA~oC?Xx+jh-Mp&??y1^7Pt%9&>P`F2pe8|u)Nn2 za4mK(;#f37tka9ubUWl7)m+mzD7w|j$POx9ogeIN;3JGHDr?4xgFBOB%fr$40pC$D zbkEuZ!Sfd1-rOqTiasGZsEK{U+0mh4vwJdd!QdT#X`$h1$G7U7nbB)5u>i>y;d=A0 zm-PBUui7z)*Kt9RU!aj57-IsM~g+Wn;JFw+8c z-&KAg92ZM0fM6HNX6_LZ{$$lAl0%-1n^rRR2kio6wQS8v1!#Rs<&rvAk~bSX47dd< zM@SO@B7=>Gwq~hR%j|IAA&P+HZ*lLDOFYU#A^j88Q%_l^BDY){Gg20}|&8B>( z^Imwl{p(v$kM0dG;hu0sT2MQ*Bs_-E($O`4zqg?$H!$-3Vqh(a5jc(3O&6CpB1JXPb{1CBscCzzVbe!SjR8Ec4B;XZ>Gf9Db6n%`+eUl5y;Tavc|2x1Vdz7seXF?EKP40mgYuc6QecRV z4{oYh7n#fNHV?6*vQ)7qcJ51 zp)t^-BB*J1Q?6fOO4=BP`3`y*XXH61ex|;jBY2`k$y6PDypA6P8DzMUf?P_q za3=NZbPCHLR#)!OCN75}5k}$&Ry%H7!)KlGnUqFmmJ>w2OGa^ZlT1?svBL*_E}{jt zt(sqtXAs$8^3ufn@=bf)?fB;-r-6})eO z>X5CY2lVW%hofF_dF?=LN`rXQ*7@wYz#;NzSQE)2Y>vX!Q!t_ZJUOpm1VkFS)F;~4Wk&GU%PiTT+2{5>LrP_t%S&s`bs zzHw3ER=Y*yf#aB|p1uq6@V1&=^A7E8&m$zErE>4IO^0pr_m^Rgt)-Z#(ZcVA?y3lu z)nPGuOSg6H5Xmx1NiG&+{I^=%mtMLOb3IL(PMZQ9s{8dV1SRCK zywb{LzURY%IP`v6N0HLI0IWh4r_{{N0~Xv@6|7-x_3#Q!&bFydyO=x48oe1VA$xV{ zGESP^{>Pm6P0A`UH0Ag}W?5KFWLn^gw@hWIr_`C=q2cZeVdpSgG{l{b!PK8#24&B| zOsD!q&tCw0KiPb-VEmsU~_TtrOB zI;$mUyw&I=oE>tE3V(}ET$&ndLBA>xWF_=u0X0y?32K@xm-*F&+ezp|+}p>Dt48pP z<~C9qJ!=@U-rxiORR2HkJao2eZPkig06HKc2O({O%1`zfBSz)6l$(h!8&=DNYk4kKR z;VTY8lz|FY7|xJSyzg0p)<4!aSBAPc$|sl*c8*(km8?J`iJPT(7rF*LJeXb ziwfOv8^1uchg?*3@%8v}S;hhv5j$h(pu@On~MoLEX{ zEFZBQ3#3-qW1K%iG?O^)%OiyIRE-fP=M;{$qn)KT%($e?Q=G4gp-<}iX3ywwAmCmE z$QR@ReO>w*s{pQVZu`3>TkGa9YzdB5FIWk-TZ=OoJw(!Q230{FSv7g*$GbUiHkTKq zFNMcBPpM0oVxm6jHd%vBxi0%?OUrS+9Ur?GZZ%=vUq&nGR?hhkCGIv7IN~ueeL?q> z9Fi~GC99jE8^OA;&a&)#7|xriE}1{aSfHI7Slw*K$2>cf+dOZk0ux>no!M)|X@08Y z%lulFNNLq9!+lKsm}LA_3t!MMUvGGQK&6s)dloEL3(f0{J>+YPGVZi~94Mq4(GF1Ywb2@guYf9u(9mctl`c`ums;h-&QKwzNx zBJHm<*Gi&ypEWzaIFw7m?3mp>T81`_vc^cK(bBPRdS!Ojet7cTn+im-QQFsVE{w-d zNEg6E_Sxc?#^D)k00R`Z;ZEtbUBXrqbfA?ZZrwS7bo2xiymur#@e|c-eq$~6B_v!) z7$ZNqxD#)vtaT7MRxS5m8&o@YEIY{F%*PtDyt@KHFOvaXXh2n-PEV%66&9C$OF`Gn zN~zRD@=~1R@y7f~z_9KS^PSJF>^(lD_Ju>=n%N1BLV`jxGDZy7Ux;4kPIOVeReSa$ zl^uw!I|~wA?F~*JF2lO}+G~4GjW+jmw&a_`d%0txfh-`At;fMA?lUl_eyw z(0M~RU`xL{Pm0v&y&;yl+UQA>eAHs@EF78(dt`9=KZ*HU#pr9h9|>9DtR_!2OP#f;+!{BbnhCSGI?SH%i+9iHn`vd~J^a($eiIy|FF0SA823 z7=`>R+1@Gj5EfXCSmxDu#>j-bO@fY!yf{1XeO3aIs5Wt;^u~_Pqgu+0a$M7<@Pk6q zqIDEwLLOu(>PX-2n7I}nQyYS<#tF=KAq$NdxwA;lNbG#v$vrCOJQK}$@a~w?W9)-@&|sORFLN1nEQ_(? z-pnBDM?^7eUgp>h$Tsl|o6ziIV5W=E!a)zaMQ)icLDqL?aFn^Tl~6htMee2nYb9NljBSWCo7;kB!VvASPRdl<9!#R2QE|my#+Fg|775=to=LlhzB$aGPw@q}A^ZF>h zky2P51!D!($rZt!B>YoAKm2>@Xj4%-Tix-68(J>l$6Z{z6SoZ*K~kF#3fOGzcoavr zJM#Y2I*f0=r!QiiI9mI`42m$nzQKr}oDZWzHTP9guy}#TGWlDbRE@@Gno>l5g-0Rx z7Sf~Zm|xu8p!PyYjzt8gr0*YF;M@7!mqF#uLFJ0Xq^wB1N2@z{>h7q@&~;QSJ}%hm zHPE|&nDD)%_4`#;+kBJ@>8BG-@oxIVVk&u&d4Zo8)*ydSWC*hPRqVNgHn04-a zBK|>fG8v-E3qSA3*1XhD#>LwQMT=MdEDMKN zuSx<+(XP3=p_Qlu&p&_|3*3uaXkd#O-)rDvoZtoxXAOol{jxWiMKanw9Cp9V%s~98 zlm($|PD@b8+t5`UFSI3id))YO_Y)7LTgKw2MBAPb`W1BSfjHX`7J{1z=^Zfm==^yy zh~8Gb;hxjVx+HfpjQY$Ofy@3F@}RM@+|WX!>vf)32+;ABR4~y5(K3-B!O%BvwKwiU z2+LRgfnwXqS94UwV;VMnxUGbtg=6n_iE^|PY4yy`N(y<#W~3<4G*fQ# zpxHx9SXxg-z49nskKgTTX0CW8!B%YwkwdgP=a&2N@AWZb3c~75PnFY{cE_|fjT*(U z0Zmo`;2RjzTuv*W*!zTt^e$7ykV3Z5)jLtDZfMsJ2MB)7P2lFQ5QcVQuk%1!Rh9|? zTiR@7kBCw9Y)=$fPFp(OgUaJ~+tDdhiW)(grrJcaX$~I*V>OclhAte0Le*)ZXyC$qS5UwTuT&y4Y1PG; zMiexyV$*Z3sW0;_aQnsac-2{ueoJ&10ja5-Vv4}YHyIjT0N0`6){EtS?;-dg5&-ss z#NT@H4N#yAj&zaY>!aWCQ=fR$4k3XH4YoK2Ko+`%{9+*V%*7tw1cpdtJSq5ET!)e$ zxLfNmH`mNt@41REX6C>*L*r!z%z29~;0E2_ogA9^llcPjal3*Om1D!b!Znm}^O*&| zye(ZT;4S#GH8lj4^TE^@oFX6Nm?#=hZq*3%=c-a=4vT#0??miMZo1jP>i1?~I#ATP z9RRCfYolo5Ejz*pzZTDHI%c%6JNRG&w<$JtuWaI7R_$a#vh}Q!gXgayB{I}=?l1o}LM%=MCcMlsYomkuI@&6kvN7zO9UoT!p` zzc=?IZ1j6~fl({YXWw3R2ZLm1)SFq(zV9P~v9K3!;%D*rnQ@g@Ku;qP4eA$>=vS33 zc=I0r&kmf;tmXn7T=TjyAI$yl=;Yje=Lg|~k0K1bzzw2p|f@lDADJO8fJz-6LZb_$~OwoK+1 z+fQ6iqKE6L!|A)q-Q865TjiLb;0-=biFiD*?Yx$kE{nya@Ox1LU`c7VFKJ9Xg?<3E z{o@NzzOHbec^2ULo`$5XianI>zG&$+r^&#bWMb~G9W%;FQPo4np3#ki`uh5{%?6}i zF+dxkD3*r&Hz&a44^lVsHR#+tJIWrb9*DLo(+!ZgQcLdb%~DYk6oA-=suJ^s!*Z2c zX@DCcq1yrm%_~}}G zr5ge*i7etzHEa5XNpVbHTL(-8{7E~n?L4zl3gY5S<#C?~&KMxJV)>r(A7)Bq1IISb zx(rgto?r4cuhF8<%h$m{Ol}xLIv;>DQnikbJEv>vdG`(uVdl8fkGQw20hA#~e(M4| zbjRn=5S?vuH7eht$$fCr&h$I$VR#{8ajZcC3sC9}p!dm=zKc-C=N_jXOV|#4x3qVn zrxT(8*n`Qkd3OuSszGf_qcRvMR6Z0qeO*8NI2g}x`0R3cXiSA360cxhZ8n$GS91eC zex05+eQAXKX7xrJR`!ynHPCx^c(-XHBrmvRy`&46QdIXs=kg`N-sm;Ge`@`$^Xg~M zlkqfZHQ#>m6i38+dqe9SZ`N1V6K4o4>bJG|*~%Bx&_cy)i}eB@m8Cl~zUrr+Ol)AY zh!eWaP7aj-Az3qBxk||)mzF-&hmEobiBUKDglO&rdM%n^SPZO7!fv7JzgaU|`EKkxo`BmLzuc+u zMK6zk88tj@AaU(!Dx7M{n$n_*yHxTGU9fNYZl13D*-u=`!8qo!SpqFpz)S}I^Q5JU ztfNMh6sZIQ=*3CUh4v@QqRdQ)o<>w|vd6g~Qp7LTW{Mh3%iqcGBfju~s#PNh>CcZJ zBQ)Ejl6+01fL64*z3abNTTfzcqQi{x%%TJ`mk5Dv7%#LI8~XgY%Yz)^!4YF~Zi^{4 zf(I3gOinfZp8YITX3j>%{>^&zzQjy4TybL|RTWQ$u6Xz06h{-;`tr<}u2zg7_>uE@Di82Uq(fEmtD&maOJO1LR9mG*Pm z%rh+>a_Dbe*AG^WMR#P`-Kdm3XtByjs4_zGNqqCPS%)(FfhqgZCu$)A&VQ{o%j;ar zXzo)!;C9E0vO@!GmQ&p5BJI~0bkx=nEM|@?Twq4EwiumLr9^kuSPn)oPM^K_Acj9z zh#fD2=!OAj8@s2X7y4f(E9y#9B1j3|RQ5$)0JRF4dTlOXEc0okK)d1FgB-=&4^5!hCj zG<5WiLa!XC6>*J3F1zLw4A1@=9ym_3EqC8HqDBxCf zpi$?h+@-CTYZs!$rS1f_D0967egwTtS}g&lM0?P)COEkQaVXsLsa12iU1|dxTY~7q zeWB646VK!Se|()&a4t-+cHh{xZQHhO+qUgw$IgyzYsa>2+jjo1{&RckTu#+ocGXPv z(`$8tWCJCZ`awSV>=3+Y=Eq%X3#NBt>bVloz-Z`07Y!%{`w<=iW`-0edv`H*6ziyx zAas0u@B!j(MN~D&2*>4KQJ#}#$~M%q^#nq|Yk|UHvD>4zljq+UZndcSALNpiwvBR0 zT%|=yb(UW7^Pp@tF-#8AlbFUux{=o;5k~f)zC8#Nki&xZ69XBnAh^e~37n~?vz*8*y0J+>4D9@rmT~MgXX(M z)txTW;#=|sQJKPVj#c$bI-(&aDIvrcAnBB1{Xej9+SsQaFLv^8cnX_8f&gr>w-vRC zG%VU|lRWD))*~xb>RPvt0l$r6!W_7RyjDwK}6svIlYq0*lCQV?pME)Bvghz#=0Mf|ts#ZRV z5FzNSa2Ct*oDOC4Be)b8)T<8y{zFCV8}c|+j4Gmg+?Za^Lxz<1d}I*JipH_{8enDD zs)woYM^rjP`lv?4ssuTtFo|iq2{n;ZFUG-Nz)% z94S*g8u$hv*)oizNG3f!PN-QAhRK-Z4sLZdNWQ-)mu+j#igYXe1KtwqPyisH|T zL>VanMg5@?$=2g;no=ziv&eZackt5TLdkEm&dPfir2zIswJE5@{iT8I#uDx18r*I3 zszQ(m{q1*O8i}HJ8~r&HZ+5S4Mw5A5mF)-Z0P?nqrK!>ERZ0;t2NuLNeE8))tN5R; zW@RT_gDj`G&{EO=Bw<&JBLau5Gu~ z>x~AfBUoHT$Tvi-E`VE)%!x_2CFd>+6hLx2IqPFRm3@zh3vLIBgZl&p`I*d*vJIXC zrW&R92ld9&1Tid`boh$BL#D`MVn7Rw0K;Vsp_fJ{2w?XpW#o{6S`ouu%kO z$$vvoqgv}uD|kEKRlEl8IS4ax7lg;DViCB5o>^DEOlZ-(^Pq}u&K*|;|3K%2(u}YR2zJb_jM=RJ zAeD}Nxo(%6J~0_E*uvn zo`xJu{Qt1R=Iky%=*yOsMhX9P!-fVZ7OIG6O+PO8uSmvE!Lx($m}xJ?!FC7{B`oL4 zY{_PKfp0n_#iK~%c(R_Ywz*=lY3vv&HjjtAM5hA8UwXD-`I>21#c&u;1FkGWjqG#B z8UBh*%hM$H;f?pCPgBh4eHvBiq~mjWPkk$x3}KKwd3GYJ;W8NDJN0Y_<1=NrIDep8ipC`&5+5BdkttzU8b=a7}3`5kSgf z5-%|Y7qnQk4}Tp$P-??~Ma$x{?}M-FQ&BB=EThb6pn3>Z%Ut>MVSPP>SG+sJeoK8(1tlaq=n+b!>=N~#`|?{o zy?Ubzk4^3I_BZ%8^W4Xp!B3IK#t1r1E-r~uIt+m(E$JB?Lo80PIKKLA$t?Y%>2{5j zO&XICRVk;^(k(?U$oTgQD#~h9V`&V>^o+~+UfPw4VZ08OxJ*Y# zG*RVlh>U4X!ulovQ^TL-;_o2Osz0Hcf2U=CHaX)7Fm?*48$SJy#IBCmg^X+xzh8=l zLXn>@&X6(9KKyx%89?5n3$HI8R=3JUhJraR88=|}EYXKuR0vRKz=ABAS$?M(#@g`) z^A89;ErPH_(3ttazqC%jRfFw=Hw0bW1=O0bTB|q_){R6;)e4H>!JK3_2#hq zh6w}?2xaT|m;RYn2wi=s;>ht5UFL^-M?)c)IW$N?ofvh2N3~~tz8XbFdT0_C#YLdN z){qd!MdSxvvZm}OsHzYw4d!!3Jg(|I_9vI>GLGkQjB(V=Eb|rc*l)ReF6@|!<$|bS z{RwREZYQuEGS^HmB{IGr0JzPIb^%t{1L6}>-KN@;5YlTox!4O22lkL9^G-h=STRH+ zVZgY)ooh9TVL?j2@{sAlPUDM}b6{DZN6Q;5ICnh-tJ!haB6(|EV&Fpg*BY zz9r8})MZ20C|2Rv$ZBGorke%z#)}Ph&v19kk_dSl* zQMrH=YOC0er%nA?<6|9l;ltaxNwTqasV_tslO4yKEJNb-eA1ij%awA0E}2QVwC1CZ za#FNcpgtU3-q6yE-HCMt0oK4+d~^UU(|gA6R4u&k)3A`}O*0%sp!UapbpDSJAZ6}b@@&1H7sLIoq+iQ^PF7ccMd-oUkHh6`Hao7nxR=^sEQiVX8yGJ6tyye23L6YVc>)U*L@g8T^f`I;aB9|B%6zeHm7EFA)?_F_S`xgYM3wX z8dqevJK_4u{JbTqC?jYzKNL@u~7FN$d{PAk6Ghc*^H$9 zg&tmq`g~sL98jPmqr^jdH-ZK%m5tKV7KC*Ge6x!z=g)_9^@mM2wt9?3ZF8LAlD*TD z9wRNg1e!Y^G^`b$N)OSV$K17=d2nsiPy1Qra|$OJxK9D@=5^Oj+J7QTNy``Xo}N$$ z;mWAAouE~~3#n7+JKs{00hT%O*ZY`O9m z(lv9c_Fc;PQ^;ZD^dwj~T(;&9+(x-^!6NFrvD8B!M-SLgwZWrw)tbDa zu0U)y{aYNwRTzoml)sfyuM^&(e!=)gbs|4F!|uN}>i6qWHAEzN@ij7LO-{qWhz;jm$E9{Dvy@h-&<>1G1pdh9|gK%zGVaX>Vbuu7m7YLD!GI1itukQ?pZ&K}m(p8iqIMWN z?EXf_o5%ijk+n=8LxlziUJlBLyy3SdRjU1*RX^uLYnrYB8XH+}%e z1tcC!ME8Ub=(98g>6qQCY(JHN;kO;G%II)Fa=w?PQIRi#a?%OM1lZitNPied6Pj*t zwJo*Vo+(u0uU{T8Kk0509pc}d3w#*4w`(G;)}Y9f6a_(c3Y8lxhl3^756uTCTnPe0MnoQ{p)*a)frWBBYa$J% ziCPw4YnQEm=Cf3(Q-kpGA1A=Zfj>M%c%%KVP4I5OV>s1xBg|dUPzetei&79pD*p}8 z6nm%6$3HP3SnTrhHDOGK4_@hXhB=q4+#HXkK;p z9Q-W>US)F2M>WK0FqRo{F_3DcHvpc;6k3}tjtQ)kU12Mn{DGz-$n)W`t>&#Q{`}GJ ztA0r_V+H25#Xqph0ngk8#fVEA%CR^(FBk^qz-I0x?SYlT&59ZI4~c@oHMN~>8V=m| z5$jRZYIQ)j%^>|Dx7Xk%_&d^wiEkBvR$`e!*J+ zGerghKWt!S#h8;RpKlU1JoHs#<)5T#`vy;#t408Z>$hnXS3GdZwCMgg9-KaX-xsSE z2k+(R2zhI0W9C4?U!*>s* zwWy@B_Bd*W(bjc-A!$o|zsj%x0e=>oHV<=#YVP@&)ptC6^TV0uP}jR_nk4UA_g#|1O1hxLEA*t8 zR=oM9llE9sEF0oe^}2w;F9E>Os8kN^9^j?#$_9Vu=NO-_^0#!OcgF=2|NEbQ9M17L zAhIou`xv{Hp9d@?+G51Cc3#+c8#svNTp2o(I_E4DNAm8(Yu=+I&Ea&9RPII5o*I)gyNfgQbpJ2(2#QcPT`<{`9EHF(rGC zwU93iuv|jfzhY9`crQYvf$1@f@d||`H!%HaQ&0;V+=CnZ$5THWyd-Ec;+F1aZ9%!+4DNx#GV|o8E(wqT_+LDnQb>74j(dV!5#dqN_)OcDAI#1pk#&C} zI=spQvW#ROdGi@v#$uwUUPABEB9m&xT?e5PL0h^h2xBDlnqD~pVp>!3?x1_(7X|+$ za;|&Lv7k8+r?8`WYdQFNt(z6b3abBWhq#7W%aLSo?!@bOB8d7FjpkU-=4%Cpxwh@>5xN(*bQ-L!4WZzd(u-#{q$7Y zd|V<``B0;ix|NMIv{(CH!t}-@*7yb&mLaI|!pVjxfDZ<7osT(A-G)GAHb6!y_zm9& zm!?}ZARUHXUXSsw?yYh5BHyR5u@QhT7$Fvtkad0p1VyQ;SU+(Jb6rZSqyhIUtslI+ z0O_U{F1iG;D0c(d=!-{H@l~Hx@6a#UGidiW>pFm*v<=&NIcc{#+gSm3Imw)V$8vqb zVK2zd13ho%eV-6HK)MD&8QmyNsrK}bBii7miZeQwYL8(O_zRZ6I9n zIGnC5Fo6TrY=R7<3n|GoEyURgO|3;A$%Xy}QQniN>+2}=3P#N0=E;{b+wZRd19HH_ z%j-d62_F{TER5t>$);*sM)VdzCoOn-lY}fPf^U_J2!sM9XD9pD1*fAcBs7OO168X0 zy04;vD{R!GAH^Ny+H|cdHA>~kUp6-m%o~90GMG%Gwv!)GY&@$5lWnXvUCFj{O->g( zDOb({OoKJuF8iWoxI7VZg&ji1Jz_CEf%zh|H1(Kb|^ZQR%Dc0K(Qp~*eq*tM+NcCN0*hNF7BI>J!Z|!&W;Iy849jZOO zEU6z>sW(KG34vRhV!28pki|@=&s{|VH-59pMua^L29UX7 zE((>Ua0Mfb7QH=B>09-4hYrf--B6o>AqSILM$;y0+wLj-?1YY-sOdG>No6##OER;8_BlN;OC z_3N!^HTl3+3ER@{NHqZqlbwsHdDo%92K$-c>0=}ztiZqPh_Rz(HUrIw`eHxO^j7F% zR*xTXdcVj`)o2>K_d3|$w5ZCd^fs{qZwTxcNInb>UJGF(C#+Z3&Pgrf za{cdK38G7!7R_mW;<=DK**=HS?IeiC-;}>}H(7>oeOA?fiUccy4dC1~D$0SRRPOBp z5Fyk#hcqP1j=l7KNtyY>-YI2}&*f)mOP{5jC#p_T$qGb2DmaxZ$mJIBU_)HHB|RO{ z#G4_CfZk5GBCpvD&j=zKEp#67sC&gTm5frc&uGOH;}(C&aPM!_i6rlCJNrzGcMeMt z-zzD_bf3t#(!XK_UkYZMPonevO39H;HQLqU^JAckCpo%<{wsyGYa2Y`SCUV4xD`ob zx+_#@bbD9FMv8CYe;!RKeKDdDti5?Z%7Xv>(%L_2mvQ#H*WrXBoAJ0Yl&>B-E;^p{ zt(EU%QUPpjz`0-k11lV7A(=h3Op3y8b7Jj49@PFWn)>05H+arhtSv!Qfa+I9;WU6^_5@9wGdQOU_A`l*ChILjQRuhJZBH8>YvK z5@xo$LFe>Q3Z??1NP#`$yE>&wH~d~Lz8@Dj>N`(*JB^|}h@ha3yH?I=kz{pf40;gN z-!)&ML`G#pOiaQ$I7)pSb~pT^sK@mj3&oLh`g$5d@z0H17S2pN6->9b%;F>o1GO! z0%v4IYjZ*+MldgStXFF_|M>k^7&IrKL#wcJxm*gfE81ZFRcWZ54c=ZbIZvG$d1z9u z7hzpCmjLc+uQAgl6vJ%Sum}!*h2!b;``a zasd6}jDkQmic0yWsQcH&Rb|Fr=JR}bAE{#6dK3(%CLQg|oP04{suC%J@C7;IZ^dFS zL{M=5F*-pC{X2tf@2Nqo*+uvO*i`k%p1Ocz3wHB{XQKZ%ks(QVJbGbk7n2lh4}U?Z z`2e-ieJs_*ySuE!JZWksn+`&)pWvqpmh*Vxji^Id9waklhYoMahLo|Eiw^Zf0Tyt^ zXO^off(#~MU z&1KpZtL%U53}%12swveFimaS}^sj3@XZU<|P+IxCcM3%gb+B!H1SIF(-ym8PAc|7a ztCkT03$)WS96cHlEhKwYqq7n|Lv#5hW?_uRTnRYJG_0W?jp}q6V!-OPq+QVZ)opz)5Tm?VyUQ|Z$xQM zCKv#fD;(U}S0SBS`nO^bk&Z!r9$3{HFJZw3J0S|G#Txy@80Y$GZA68?4vbkDa#_;T z(4-BVrlxWk}y-p7F5zvFN8d27SSSLI3`scLS{)T z>F6LUE)S2Inkbd4@k~D96js4;dTm6t(~MwRep|xpo&N@bDp? z(x9+lRq$*?_DI>ZZ#k*f5w*!7y1Zi}o6M3Lx&C=hPtQq+nq45|?+NQ>hJ^jC_(Mr{ z+1(Syu?Y@2V(jy}6`7AI4{S!Gzhb~(tDQJ&q{P~up^RD>zd#LVlzxj#AaWM9MQ$_n zBCxkelLcJr$AbE1KJW?lSrw-^;LaE`I*cnZK5aw|ab5<^eZi*)oLJ@yeY?scj&xWc zL6p9jNNJ1j-PNocYD7tSYlI4h7g@rpt>YCh=>*F%Ugg5xxV%7fc zDG%>UZRvMWxf;C7(0D&Y-wC8?63VEC1{|al4x*3cR%yHUn7|Q}m~t>{^cJf}9{jEF zRi|ULt2b)YJBjiS$)_IZ(`N%1nor#r$3k`ii`16dWjtb5sz|=Qk|ymF{arY6u$flh zVf{=Z(trp%he{+i5nP`JZaXA_DqAl=JyDfvYQ(tg3CIoixu!*8+^B{hZk*~2cAqK3 zx}dtNP!WMWx_ya9lLNQR3t!phH#l!h(N1hf4wGm>@W4bsMG)@qc;sIgy|>7}c;RSd z)KO*8xX4nt9ri0*XN9!!VA&zE|Je!6modTy?61kc^Sgzi6@t7Ag7NNi-CRa|=79NTI`k4&hGJ|T~IB%7nLAU2uGw|Rprl-|li6L5X*_z?E-u_mKKvyY-OxW4I-@!sx7wHmwvZz77+h)4qW6l=J2K7*{5 zi3$&Q8NOUJQZLVEV`;gM+{LVccL@AIN~4@t30M+`H-6nq?VzJn2u#|2g0gLqM^yw| zP?UzfbEx$sh_dMA$U!Iu7X#0u^rV!;%E^|dVt3os%K!+0)YO$`Jg&Tm)K|0Y`xmfc zMPtxOxNJQuzTEG{s<1Yp%`T>RwrMSaeRsA3e&80&$*mT0`=o_^Q1Ry7(~r!6pZ9>K z;h^{Tfj5=Ibo!_bZ}J*skTRyQ?r8zetm&hHXg}w2)N)J}h@9N^))4sge2Sm?r+=*& zH2NLhBtJV;OwLN~Vj@fdn75OUg$cDL*A4`1i{C0I4>S+eJs)@m86jQkhRg=DGG-8B z=HPt$XfHL4^nnPc?>*#!h$U;O75X@`1(1*mDeF0pV2d3HW>it*w$?IQL33>hz;|Dg zHExK~AB%uu0b-ef1p@a*yT0FHz&h%6%TKF_HizdukO88>4yN}yF1(T_G7TFjwqz?b zyRw98oliim1)Sn3`?q2N=X^E9OUi*9+{1t%QIFT2R>-V%3dM&(qE`b7I3?N9g#jpY zmsU5UG|d%gr;0C2~FbC0QaNT%Z|- zF(;uVMVoWKhl1+P-UwC3FYg&QAlJ!#7)R8l)j$HX61oE;7m!gc4DFrrV>6hYMV{4C z`tOHXk)H3?VKGCVrVgLfvoM4Psarbp3wW8DE-$SbT=g=ouS7E{SsB=x_an+Y8<^!G z(7c@)$xjDrmuritn62d&HnpsgFa&w!Lz1BtQ(Z5xRNM9kmgu?ke)AIChxu^EX$&k> z5bEb^b(}s*@4qfQtdX;zdLokzPlR*mKOOld&+}Ka(Z9>juIL;3rkltc_mGR^Uvg?XCai??X04 z=GWzr!uT+IeoVMI*BVyS~D7H-r<iySo>> zZo*z;Q~%L|JACFojS9tuRtNsvtnRr*W8YFQ)-G$o7TX2Kx?A#tMeJwk66PwoZCQ6q zPRay0yCj$uE}jM9u^0+XN<`e3i!6n{5m=Q$S)Kvma|1HY#gRQ6`{yTBg|ulUaDCLhk5Ba0nHDq9j`?Zta3ST@uex||1kCzLpS;^X?aUoME%;& z#|(+l$e%``X!OrA%=^pkb))|frYQm~a&MrG_$^ZR!u=xijEyElSC%a2%KwE4bVQQ{ zxcgp#7ayU~nS-ie%4>pRSgzM2pZjl6Ia{RcDoI;VFH*|esiZ`crY%na7s8+n3AVt* z2z#8H@PG<-omu6GOo0S}D(8vo61i|DRt}eiXNes8I%#WvAh!MxEJ??4Eazo6PkTXp zvkem+9!W^G-sm_t#i<2=b$}KJP8~}#w%C*~IUQC+|5S^2SvT}5Y3=4U)|FerfE3U67e8+_r{&)p1}Gwh?8a(U-}B4K1wb zyzB`o5PV)Cm=rD27`9b9xc7tFBUbmGlLg_Vfi#8X2*aBhngQpFq|;4jZbj)E`Ij&+ zVzquz<9f=8zN7*2Ul1rmAW8;=;CN&JeNY(uRdZYd{#sN?k;f(+j_D~|YIf(*25FAU zmlt(iOQ)SYyZ3v)FkKon4}g4B?bR&< z@`PS5dU&a|i&8l8i?V)JuXdnjB;2TIyz&xo=DqZ#Uv}a-?rOF%@x9Rt^LBLjAJL*o z&%yMTP<+!&1u@2g?ao7qIF0S#R!ukUOzNqhx%LoIlIMps3p@Q@b-R%H*p!H1v?b2- zkfC$}MM-8QP=Wl*)h9L@@!F89b}$}&5VqgJobE}#vA@&Jbs#d(OC02`fBKh-O)o48 zaW2M49|m?v#?(oqrkjAph(K3_ST_NeVDJ5JsOXAKd+uXX(Rkkz+oUsfEA+USKle@m zXF*tyP0pl)@qn8QG2O~;XY*HYQiwHZ!*bb);v>r2g{R+{yw>KnD>QXa*-?L?*eC@@ z6}}OkaLWxkn)@cyK36s5y()I5OQH=FSUM_NLuOLNGLZl;@51=kX^ORAxqclJofCv< zcVB6)>Bxf>@Q-|>>2&3iVEPxRmlNw#VXnSkO)62-2%HeW5E{rGAj6#mKwlT2U8Gkw zCtYV1N)ntFxM-;fpd(pi_;gge{;2*Jv@sBb(4{r-1NY()z%-6?M8ZaGAvm+4ou#kb zp@j?FarTYKQeaMC?D58f{ohcmFJSO*-0NRJ+L_9!Ms~Ph%uUW_Fq{YU4nG_(n&d_L zKfsf}CD{X0I)+C-bbp|A5j3%2l@J2-Y`c2SYX}^E<2p1=5voxUu@=f{$w!h2+WAK7 zU~P1My#ga>CLC&FvG_*dZ`Za!+qWUX6pQXFb4${K+c-GG9~mw%iTIr~3R0vQCi_QCa`f5g&+q%|Vw3!#ioTnp65$7R!XVawpn{w-y7rwy%lUq6Ewd8#mh zI*c#siMz5>CPFAE2xTT|NDZx^`4pPRAsdA~3+>lqVR13b_on3ZZ;D}X5uT@1#tq3i z+}?u`Gp%j}lozG{m(RXpahbWFB9~rf=2&DP-9O>aGkZlB!3?b;6xZR|jCm2?fzJ*s zNEA5fAu~lNEyT=c$`A@n4Cmvsx~j<>GKVz0{)a6jOE6s=Y6<5?$%KsUAy04`lyYO^ zl7_<@cWYJNLkF3WH+yyN$CSCp&ale5`G+c>EN1NkGK%h|K887j7B@AvQUvjO68K^hF_#%fTz zoQ|?+Fl_qSb?U*LQOya$3)LVcY^$`WFB4ZkhEyiHewoKz)5(T@ClnoW+V$!hdvhS> zK={@5!7X_3?u-U9UmX_(Mg#CZM9%(jN2zduoEnviB%OIyI_&`ElhKXrJHsyFbB~Gt z3g&lri2hv?$^Up8^Qc_Um0CF#(QP)SWNCm_ee(s;Ks#6R1yaEjECb=W!fQ|s3GPD+ zG+w30rcb!Hk57&Zq>(s-Ou|ic(#$4%(B_G;tc^5fcUS@jemVAv&Tmk~TL2;IdqR;v zj#rt#xa&yfqy2#ru)U-Y!F(u`M9y|eXJGJhWG=~7cvX!gcBM8k<;)N zX2=6W$kmc7V3v8ss^e|yML4J6Jh#LAD3ZUMHdEMk@Uj&*hSo(gAdpaW@JBW*Vuf)n z=~1nSmE%6^i;wA8HE+xL;g_Ser8NAzSnh)$$D7_drVj=WrxG*unzn5=a>86iXX`Yu+;4f205_PXk@l3goo-y)6+ zS_e}79H=T6ORzVPxb|3`y{w$^fBNiQy83TQGy#7KrDFfK@ru)+GYGQWbq*U2YrQ>( zX&sW~$MMEGX&{_TDk5AowT(O}U(y3(%rb|jic`-4W9TOcdk zAkB9EKrRNTW^gLQ&3@Ru+I<;eHNoeH!nNhww}DsaL2Gr4;OTvvC~*QkDmupn3X;ony#BRyA&fncKq~#12)QnW(Ym=USNADmT@S$&3na|7p@C4ImMNr1QeuxR z&+d$_u)6)HBhYejh>9)}qv$fcNW2T@ks@5ltLm_+J^=RbH;LC&iw__@`yEeFiQm_1|k=BjyP`Bfh`bs-WmJ|NQD<;sf_;eSkAKc`(5(8H9G9d zod8G$*#pa?h$gC!MxKCMGX6yLsBZg#a5K?s(2?Kl?A-;<@B?^Y=LS7r6U}lx7?1R% zg#3q3sEM>aJsR^7w%q|#6*PEILxi3q>#?4^FGX*(Hje zRK1^HEmPfWm847mU#9f+I`?r^gzqO${`W~l$^}`6_+Drs1Xptd!Y85}-p=~{i5v&1 z_bx6aOtXKi2}{9Suk_$~59viq&~keN;q{$ZzDElUu&~GYn%I-_d2JoV1}vEmBY6a1 zM@P7#i__6VEYB|5%7J1|U2j&-q&~u4QNYuzxO0?Ig&dPxKjc6Sn}X>gLhj?2OU3^< zBUtyB2r6+4d8Q3A=pd96Ly$Rr4h8szAzUfofZ$ZH2|lUlo1|-%1fMUI2i$j2$RO=x zTHn~^i#kTz@%m@Mm6u{{;khO88l%F81vyOs^YM-l`{L)CAn_w8Fh%A;lw}Mlge*=O zQ}myoFrn-{Jz_@Pd3(i*zWpB;_wxtchFR-VWab(L=*e=Zgblk`j--ag z8P|etW+-&`3bMa;B3!ajLSjzrsvj%=3sY(IFtT$EM2M-5&xI%08-Vs#zCog=X#MpG zyM#Q0@4*gWhA<)-5dZfh$Tmd#-}}>hcDh?LIZT~4?`iTNq}*tAz6>`oxR0=LeN^!# z+Jk})J8E4vPf-NFkg>UmW;QBa7Z;)lkzA~FYvI2J`&^W>oBW`Dk00seh61BHb(Y!R znH(ODizQ;MBRx1;BveW)UP!UPUd#lKM8Y(EU8^4UU~z0c0C^NTP6SQg^sz1MCumu7 zHNp9)^V`Wb`~2vLM0h6vTXC4+zg(X6&$GdJx1jnIAx_aFWD)rsKt7+Z^* z?v3GBc}1NZnP;%hYZrfC z-Dq{ASDR|$`lqGg8OR@8T}I{rg$@z7rM-@$|eKhoG6R87E&?dwqc^QLUpYbhg zyyZdB?vL`2#~z4uL$fF(;;%K{>A{JKW(Of3PrH7oI~0op4q+@{Wosh=|b?D*XsC!4EE8O zZ{*Xr=9%}X^2CS%{yM%cypUVeu_4&8p9h$o3vqxGR)H4@;gMGX;C5`4 zCO$3Gzt@-+AqmKGlOs`PHSls!oxX_q0c(ZRV$URnuy^-9C7)mvxFyO@f9no4H>rNp zLkGeDB=^kOg}$Oj7`}X96@U3*EqJ4Z^Y!7zSvS8ruN5So4-1sLQWtd5j z%%HJ9WEfPkBHlSPFS*ArH7a{b-hzy7!tX?!mss%Hv&4GDgnn&T%l7OqmSqs%+@YIR zWWpK^UBM^e{7kW~-Hs+%8g)Y4+KP6*b#dQ-sKQz+?k#t}BQM_hO3}J>aul?fXql#i z@@N^y#ZX&uzM!#plr-P#e&nSb;P1m$9>gQ2?CGslh|pNKm}#u?{xmL}kOpJcCy93S zQbFrxtZZyYN}#mC3+d(dEfmMGi1wvEI_{8ucvF~cG{i{L$8LCw0-kCIcY6V#Gm<(1 zmC0a_+32r)W}tS|2~_Kl4XB`mz^1Bf{4qYyKn#aQW*OIh&emcb)0g0|AR~5hU;Gf5 zcx3=GY_wB0UIaa%sGWX!k0HW}K63{lLGK+$wrh9v3)M_9We~O-V~7#R(0VMZ9E2#$ zvCmF_=Aj$iv%{~!Z7o=dd!#kBdalv<%U6kr>`wz~vRSz#dt=eT2T+nu`;LCSZT^wd z^JlWFA+1^gLI>)OCx9}jUn(jm2-!wQLfVV}bM+$Fp1 z$yp14;D4MLJFX>ku@zr2Jo%-|M2})bI)b(IMEEvuDLH8CZSt=2xU5!Z@QcTIu_iHH zpkNFap&VXn!4Vx3q8DWM9QjaLhCQ=iSkaC0B29q(O{aL%hD+r3kTO^bSIl~+mz*)KotN^XBm;*yPo+m+(WaI&LCg$YJ9C`vFS=^JMk^q#iQ65;jIu*n49B`h?z zKQ+_+tw(Zi&C7aNgM?5dR7PR#BG7i=phX&LNnUr#kJeJo9vr#}h+!e)skME(-kxu= zgiA~rx-Z=e!F{ERQU~3of-?OD6Z#Ot{zWJM)HOpoD=NUP@!fNu`k+8J!RfPm$orqE zNb_PgQlQ0c(TdljYYa>cs*?L+7o(G9bUN_1Aq}Y$E|OJ~OE2A1Nb#gH1m(p(H2yyC z4L#PIlQ4$ZJp_4&BAlMj@-{IUZ4X5?D6gu!V}iKPJ_M#T>}NnCx`Upm!sWRCQ)8_T z0s~){L+g_KAB)|^6<(f*9BLSb%iX5ASeI7(m$$Ar5WF4d1SDEe>UlZ4XwkS-l4O2% z&cKuDF9leMcmU00d{@me7tHJJA?b1dj>w@n37~A`cGhf7ZWb^OBmPf*2tMsku9+yQ zVoC38Tx_-DOzAo5hKQ08!>r=ZEG}Vfjcj)EW5>c5)~HoNo!A-H5T}s(*Nx36AfQ8G z=>?(^M~A0+;`DJe&H68n?#Ljj%>cc2-YbPmH1m72$yjd5Lqwp97aU6oW~^U!@BoIq z0%145o;6Xxu|ufhf04UFo1fuaBNivj`@>u(rDwV*aoVpkaYhlRl3=<34Qn7EVC%@u zuVWp-c2qc|wLo^rNToqv=^}WhC_jj3l{kQb(9`##`3MpojFtNyejJF9+JwsiUX5K9 z7&2VQ6V4APt4VoV zL=T0%_lG)sn|V@N$pBhP^8`xK3JDVmKn5Hs^;Ob{V&9r_>g0`)it<8CucD|WKelsD z7;58?NWqt>!QJP=7NaJ+IWud0UN~a@U|s;nCRCMn;InV)k2Wd9rVYzLBmZYisg``-n*D?Y1);v^-Gsl&I@vWbj3UtW95R&mrY4`CRlg?YB7oZ*10N6 z{3T4usT&4#WcZSU(`S9>+T6PCTk5afAl}ob(xU^0bfyE6xO}XZ_B8m*v9=e`1QGhL zaRt|n;mvv0cn6H6cDTk%RWOiGPXY%8;IF_GYsT#BqHu^WpbgS+r8fUhTsnwrv-d`L z8g!zed9yR9ovu7jkRaNef1k6J{9xML;=UKcNPMELMe_v%nIDh%pIr`1AWR< zA%Wr)Dl2@B8Z>Ik450)FsRtB=5e;aXh$Fa#1?u1m(!s_Rf`G)&9L@q7!fg;2tR9JW zaK?wz*+xO}(1TM$WjGsj`XigW@ahWeoa_oZjji8Jp>KKgork;S|NOQzj)uR+XU+A4 zrf|8DX$PE!a6YVqsO6x3d~I+VsD)~08)Rs*ljo$*8fi$*1N_8gF26TJ{GcNP%zrA( z`WOjZ+1(}g8JJ%<+PPK>1IJ{HYo2jis~O|)0-MEtKTWi2nc0|5lsYmw76q|V zwN$Zoaqtx|V_!!w=kp13f?r6)cKLjb_UPf^)*h&-5f+BL?}*WR!4&3k;Erg z);ccRQ7N~sJ=@$@Qp-uPVyBDuK0*9)el`*|a3`OGCRB&K#&#Wi%=*NgC}*>2mvXZl ztf7jMT6+?*lQ_tBjuu^$^`%CHhL#}Jl*iC&d|$_tcj9JPbePn1wiuo_uZSrAC-*=o zOTT*TqI;CfX!uV1a@lODa{Eo-WmJH(=w%_;vF%=%?C&y9a=}y;&aRBZdQ?#8Z6d1v z&6|*amIZluD4Q%-)CeQ4d+VR5xkiKqQCu>kBtUlEtL=qCSL z*1H&lKi>v+icipCIy5M{*rJce9>Gd(6U!r+^baO z@wt`eM%&BsIV)WG(l&H29_rG>D!In8YvbSQ*PRn8r%Xsi{6NqcFk!ihd#-qsBDuwE zVYES3xN9;{M1*-%NXgDX(R?#N zle$_Za)+SwmO;wQu>e&}kek`>){c)232wg&T^{+!&5>X16*<`hfQAb$ZZ7#cx zK$cchwFNbrK-_E0qWZwAr83H&SF=V&-b*3`eN@OSEl5nP7K>I2xfVlO_DRSV`zU4) z2IaK&E=#HeB|Xt&eJDkwV|1!bItrGFA>J^?G0!aoI7)i!UAode239We>LL25^5Or#?oIMNa?zU1Mf`ldoI_BIEK>hF_^aW(`qf`0h*e!X?%~@7Ua9%0rWe#*{oZFC zgLb^LYcH$tr4K9&wza*SNI&q9XTufpX<#ij*8&+6*@PwKzuKpu*IENifF}T8fE`AJ zT8B)47Y|AKQEnq~*{&6lu!2{MlP?+O7)MKNJnmh7GkZm+;QBNRq15L}lvxOi0u91r zz}#dPJwz(@)#5H}l|-ii`zJ_~h;A8NYpWvfv>E+U35f}F&K_(6){Eu1 zJsxf2L>d+77($Uub504N`|ad=y*=1cy||EH7n;eO5F9j-wQvtG=G;@gjgeK4yK?S! z&8o9tR5@&80>pWKWkz?e@;9N|W;PW1b~BgfG;F1$|J&vOq+=(LCITXSg@8%G@mQLD zL^%V+=2Y%7n1(E47&~sBx@{I}`OAvJJAHe~6vrSLG2bBTk6yUgn4;YL{Bn8n2;*`y z_&WWqkvU`wxf+&x#v2`b_DT*Tgd$pk-Xl7yP3ri$j7PNswp`a;NXpc2{v04+iW7Hy zcp%d3m?!{D(h`BeQ+s;fr|-~}4u*|+1sf5a6Fc<^4$pWOpU@$x#lWi_$<9Jjx@H!E zs7JW&dR22f*g#}Jr#mmL>v(&Tf>dV}ZI=|oJa^ddIs|!{zpB30C&fowki?}<7_!x1 zA)6m4{cm$7P9qLw-|h(By_@S3OYFeOkUw4T!fqiVVFuSJ09l}$aH8~^Fa6$RW zvaJ3hAz88A8mHOFq@ZiB2{1hx&_lP3HC*Q<%BRM=u&L%{)arSRhAnf3jM8k%ciR0) zEGP~jTUW}@X0{4mh1Js2K) zDq5$CT4z@(L4J?fa*`%|zssoIXUIqUbGIv7OK%l==bI>|GrJ-RI^7P^{9MNvw|m*F8~%&tdpz;*ScA#lssSMB2i$p|6RGXU;MW%)jU(Br2Zfk;c%L)qbvpYi zCd~)nkwKoWN{t&66kEf{&PWe-rDk7yBw@n_RbOy!AQBp=V6Qfy00qWl7UUDj%PwFN zeuSuTjsWL}wT*+NykhhCj_R0(qGMRZ{hgAAIgNn6@rL$#zu@~4qNxc2RKV4Aalm^);qQbQDq@d#m&l|y9B+&j5yIU z?#`XpvAZ?T<%RsHMrf(yB#NRx?wj(uP>ANMe~5=r_#EAXUK$^do)9Pk0uV@-f#pA_ zc^oWU`2zTk$1AAz&{gU?rC+k zcBq2?E=x1oe;Urn_DK%;x7N%l0|1RXP{8B@_%|Pc23Op6IAcY|Pn;VK4xW^s6j3U_ zgn74Fu_h}Lxh}ZALn5U5SY`4#74bBP1K_y(!Bv1-v4Qhgd2XafE5Oa}cwu`SRl(D$ zozkzkQ?w910yB#mVOec!!(v$m*lR5(HhL9H$iAuryS64a0RbmhA(%Gx4p~7(H~C}Nwxa%Dr6n<%hTuaN z!wFdo&J-d{Bn@Z-NWT-d1gR2n2E4Eh@k_|QqfSsw4HU0 z(NPcM5Inl(+Hj~%hgK0arZwM&{v;wA1x+7UQ75E{>4NbVU1%CHzW z9HVZqx6!}YAZR%O2gJV(8Z0G?Mdw5%6sdEJZO&5Ge&qDjj}JY5$Ob!0Oui|nprZYl zyD6hp>Ual{`7g^~V_tz0cC|%DIri+5K=iQ{rrz%9jpoQMUq7<7GnP|g?B*q9Ut?3K z_;_LEXNFAnPM6G{k0jEBA#g)iR;^9n5L|1*k7zrtkcn`Cgljw&actDrNHz~sRbH1X z{4?>K&QnMZRpQoF2v$YvD#%qHJzo)?OsHFA9Iw;wF&9*`gduy>QY9cc#v1U^)wMy8z#16-I%}7aMvtaNM?{*+M26n9?Ty0!k!}0sf zTohf-`&s`MY*9Dm?ZnFuFz_vgy0z=}l@pGpZr-#_+3A={ySL8q;>56TdF262#wkqn zT)jt|4Frq<9PwK%!~c-Zs&Cb*!b+@>Q(-pf5i=T+Pr7V2?8J4QCi${18_yXJ`<}cJ zb!DZ`s-I@^;TFoWUNSO%|F6RbuL6|-atIq30rI}Td&3=5h){6^%0Y9t4^-d|Bj0o0-TqtuByp47y3Qxm-71cC&jGbz%d z3Ka_lAVPsk0{WJ~8^G|?x~p}dR@L5eBWjtG34jYg0iNIkDu4|40B*PdlR!iGCS(O) z02Z(SEGPiHKn8pJ!33&&s_-FcL|2Ks0R(Go!#(}rf>l0Mco4LrEolgxhU_7!=a9mz zZ?E6N>GE@9_G)_k{|aV#HIQsiqw7Stf4f7PYY^CUi>G;C)NwW|c0OwAO4!kdaH?7Ax~H6-0n4&eTRc6noYp zjGk%~Fl)pP4{pI;jc5&CeA|A6N8O@*o;!Ct^xkKc-Sv(Q;JcA)7%--&*jZ34!X`$Ky{CUe5bLFR~;Ux?ic$XchWPS&+^Fg>RyQYUz|Nyb9PwKHe?0b)&+) zn%KHC+?DCBXdz@!e$C37qwoJHMV@E#W<88hLvnGc_56pE7tkv?>7?H%x3F6XiX3?Rq0-mm|wqXo%M_IGDpb_ z60b|E>|JGhT^QGV3g+wi2=mm{Tg1i`N}6G+1}1u#0NJjal~)%x`^`JM{x*6JGNP(mQRhC=A(jsMw7fVfBuAwZq_!T|-7$D4(^b66bM4lW&e+ej6K2{Iwp9j7Y zZ*q+e{#GTKGg<*!#5v@z*Ywj_`Kmgqp#srVLv^kOnKmyP9)N((R7c{T;z9{4;(B#n zvfPb)YUh>gEEK{H;+VHB^>P`A9Eusfg6ZC=>jQ+u7$?e!1|KTwaU2Q%(B;z#ky zLEs^bOHgPc`r2>_p3Ou|$mImeBNUU6qI2(Nfg<2SEMyQxUg_#Q`xB@V*CN68@fuXm z9dFJkvjW<@(mchtUry3cyzKhKg@4204WJz?sADY4ZG!?9RZY+Nq`ZVb{b@~H0CAyM z%p+OBy_%0qI){rS=Q4`mt+Z5e0}MpzY(Wx3PR!3eJ?DzX%GGJJCk?_jY=M07SeAuk zoy(WY8ykxgw!SZ-EhG-TXalv#p>_|bsBWO#^$pyqITI$z_HUh7JONT;Qy+OXYx2>b zdt~B@ibC_&YPT3XP65XEu1As=j$ZH)Gw7-9ByUC|vix@|*|!52mI zkTL0dVTI)@T&t2JODX91Ag?J!ZMr&ja80)3PW zWBa5FyQ5rmwGH?CYds(wpr)EwyG&%<< zVeLxCmr&4zD#6Lt*u1q8Qh^jPhz0p}gOZiQr_+umvxq?m68QJc-$0_^ezyJZp+ow7 z(7(`Y9FX^F@P*$K#wv9O#<|FL7Q2uW$f7F7a1GW06EWEVHZ@^fAcg|Kl{op-zlpOT z&FD-*GMmS~g$&S3TO_iOy=IB|0u&KjRYa_gerX|8uq)zUMA@U+TbrOn)oyd>2F-mK z_Kk7Yzq>XqVzCT{hfEFIWni&i+whNOSEzUAJ%4VYBV>#1y=kIZB=#yv527E~o9Z3+ zc)M7~{pdD@@;Ug?sB74p(Hq>Uu7e6)aHEvzy+T!+d%hk2DEX=qyK;4Qe?ux4QpFWY zD5csY=*BQfRHyy%+-{QoBs|sy#|go-=Wf(kg!7!q>P9ko9gUor-iaP`kzfHNmuFv1 zUO4B87^@rEn;^gYBNr%5Vp8QSH^joTAno#kI)(nnAe}?3a*^dJENG4(Kgm)@JREFU zWXlT^hgYf40QUZI`?IKof=;1*4pweqi_B?IM0e)HalLO@z+Gpct z9z^&EjU7aH0Nh0xH?tV^HY$Ueku|b9ZH78$QWGhY#GPXf0R2 zaBcM-h8YB}m)R0hJqd;Y6$$^}^O0Y0WCiAU9>KuZYz1*`elh{F?mqG-n;dllta~377f=_za6;S=P2JElpio*K^L%@f+1MGU{0~y>~6(SXQ<) zh39@)V$X2hOCrhykw6xa$UYkK`In@edzVn?GrUznh_g^6H*_oY>^{bb6FoWTIq}AJ zzKy#rNW&uo+Md0`(GD7j<}{{RhyWQJwqWNG;0glMmAX|9bhWLdFj@x;c6l7*ASFxZ zC$N%E{xJRx)Uqt1M`dJBhht|ZH=rQr6c|tIHgWsd00)w^d3-d0SWY*LJ_vbD`kDo`Dlqz!jeYwe=*1No zL?+kNhzyn$Bx!{Wf0bk0kr)~QK+N(luGfQD(az~D;dXE{37r>roMn0_jFmXy7aY58 ze80=YR3Mq+E^Dg1IOH$}jFDPqi`)PJ0N)z{Or``hD~Af7&WK`OS9E-dx)1tJv1=o2 z%4RCa>uROD7lKWy;!?p&!+jBhQ3PF$u5FTeMw%qP(Zk|ir3yXH%~sah(_3;i)A4~4n_Y~M26 zsdX7ix0CX=sB^t)U6a~zGPbD|JkQv6IXzgg-dfqh6J2dxNP z_7zFRzE{OzOpN0St(YP|gMqV$Zo1tuUCoFsgv?>S-OrNQl2Jd=kmlzrYKEQwu~eW? z1%g^FY912NI73q=^(IglC~W=mF$oxRlhui)>gOF?^VfpvkLO(sA(>sbKvw!4U`vbx zyQBRnH#m9#s-^A;MgT7zA)WXmh}McC)J)H?d?vN@XE=-sF&=4+e8Bi zHVEW_y+Comb%TzFKkFGCo7ghH9ow{{XQbaI7T2MsXAA80X1G!lNr# zD)+Ia-X&DAf{OSj4li9h# z2nZ%X3DKu2R)Q>wXXBkAT~yxqU-(@eqLKZ7pt~(MP^MiU(s_n>>t`$BSGg-DGZk_( z@6+0Ben$uF$8ATIe}7XA!!7z?0iv6H5mXV3I`J~r$`cKIS!+1R!}NM zcsh4*XqffKG~eVx!(h@4f(DH4c8m*xO93(m9FBY&8bVMdP7i=j5c_6~yTyMG&&A?W z{`Pyli6Iyv*&m2`5)q=JuDnVS=Ol0;qS8eGO$?hFL*NXFzOd^)Wc-z-8A+j3Bc*5= zhn5+Nj8As*I`eB~)NPHb^iC`!{L;o!f2uWhtNgf{kc(pJDoRlWHkhsuL?Y1m4_BG^ z>-uB?uNgv%`XhZ1rAUg_NNMUW`g~SH^eND!8{u;&M2AfdoUauRFvRM0J-x zn%?nArp&(Bx&|K9-30HZgd(znFTh`$X}0%zBM&j6z@*vGW<%8w8UQ>){tfqC=>`d5 zei|ZrOD(#6Cdadzq0%m)4ZUK68#~AIuG~fvkp3Z00IX|_4XSm9Q17KF18S=3nlQ23 z%H!;1wc^c*T6D4|t)39Ik*_v?3p_)ibTGXa+!dz|I!cw+0-KZiM8#9l-bfRGt8H@+ zORiG|3RU|{mTnmdyopGtqg8D*iawU>HT*i?3PnE1UH5Jrra53^I1VeyNp`c)Cq+*w z6i8y72z1hs-O6MF8z=4g4##q`+=irqkfS%4C8;I#jaV@Efc5XGQCk_YEs90bNQy;yqW6NK z=xVGRF{*msem&xG%w_#)WVFRxKP|B;W_Rj@yw(9z(e}Y4{sz}#yh0vdm6i8aJFt)d zg%eLPB(XG4A?J__HKKUeE{BCX1M}QSBLBPuv2|sqPLsHD^kyC0G+Ic!Z?ezHnTzk4 zds1TMdXJ0IW!cuQ6-q(Ku3IOMkYPk#UlAgFh$hE$?ME-Bl|ed!Q|DUK#m}-p<($(o zI30Si`sJO*Uhq2Of}2M+d6^f9SCSS8j7p9F*(SU5EH-8~_fcE-QKSIvBo_0qq- zGc}}nhU}kc&}j=P_g9yr*aT1@k9Nl_a72=?eSi2P$~_2o0{vJ&8ox}n0GRx&50G4S z4PtKiD{``Dv|m&2v-V7nS(vs^HGB#gZkkU6DeZ1PoXhYDV`ZAIB4A8eZC` z)9E0F=9H-V0O!SOu&xsSuAM2h($+OSm}0<^48XO+`oj+3s>z$8x}O-DBP_3>*PV@Lf(cN z3iOkZBKrKvwQOR2mf3I>&b-*T^XJiIluq8xLzX!HwtYM@wFClCGB^SHO#tLksU&t| z1M@OzoT*{&(tAW5RVBp2Y*?K59V4%z1lZwX&YlU%BP>u4 z{k@F3MBOibKcq>=C;JmBwDPn>Rp2g9&Yp#Fd@(!T4nYz%zZEo4_++9G1SJX;a)h`I zh90*tobhA(&{|+;(juE|S%~KJopxGOxZlWA>`n$4vJ5$Z4VaE~d(=Bm0z7xLN55+J6{FP@0q&Oy#b4 zzCG<*X=CBK^Wq-S&mN2&wspBxOaWe^{Xb{YW~i{%^+2pDc55SvZmIeZ08&G4Cw!{4 z!eh>qdJPORrQHpN9Tvouj81kYJrBeujC{?>m#zD=1j}f!vz=}&8DubHrP`DaTUgx0 z66o>Gk~nxg)^CFwSQt$p4c`_ZNc1{pMfE(zg_~#f=Hn>fIACy2GKuGo{&^P>{#^fk z;(VGnmszh5+GG zBxFn3F;}ZGhlD6ccpyNBrTk(+0t2oW>Q7H(QK?~SQ@*#a5k2EIe#EF%A^OIExltd? zdwO;eVc_(b{K|eQd|ZyrtJbyMr`%1@(_N*51xxb=6`X=|E8RGT4A10$Xrlj#9BZm< z<(eQTM6CXCu!!uWYsF9tegl;t=c4vp*#kbpW!MTsVlPnSzd z^Trl_W~AnTgr5?(0WPpCDD8hxx>?F%Nrm|ayo`lWR)rS(UsZW-Y5$Rb#g`5S)-Nus(#7=YECH3JYQOi(UWfreSyYNlBeZD^hX4wlMfTYJNS^maXBV*z=* z7Q&}tW#kZDlWqm41vf$Z^-*hoI_f$Af=X07FBNL9;*VjeI*|Hc2d_FIlN(-Bgn*w( z5iWSAMtfOo2ZC8#{(tZ4k>_1i;NltyG{-CC_**C79YwMGarLU}rg7{NHK#}TUV+Z|A z4p<{zjO`*?+i21ObE_`Oq2_e401x!#ko8Yv!M;Ao2H-0J+2Zn;u|LB&w*-gbkCx3ytw@QdHXn1NF+HTHY#R+XEN+ zf_u0JmcG1YE7)8WNvQmMqVM_DWr9y?nY!0lL8R*Z=gRsH_KGFzRSVKfr&?3F3|yBD6=N5qF{N0#Zd*0!@rQtd^N{y+C zsQ?%d z2H*385Dp$A8TO=*_GHU_0m{}*4DoVj#fdzJjcz@d0x9B-$Pp#jsil!<^i1m-p4;HD}PBqq1}y;+o2!^ArN&}HCCK4Z$Rz;>V<3e~l2%`yr5ih{CoBb>*%%ni>K1(?sM4BX2ntwpu)Y<2g6b8yxW?~v z@U5p?|I_pkxC9P|mRn)64nl9Q?;(gH#q-xTRW^2-VVJinh45d*^2Ee8yVo}(!$

Be)17?;fbUaBq6Et2g-Ko|Mb~RjEhgO`H%=rUfw{EA3xDOISxB-+zGrBNJ}pRqknrM?fNg)ySgJTBlv1QDkK=C_zMnSA*I6jTh49fogbiAYyK$Zm7}H*zTR~ z*uO<~sZ;>3H;O|L?fZFj-s(Dsu_a7|EFW#445T`m@fIHsNXks-TR6Ew0op0ADjhcN zCQMpE+brwtl!lSh|NSk|Ms-E|+()rQ<`p=t1$6Iv*41cOVxLvgr&1YSYY|k47Kqxj zw><&a<)!+%*SYDvX~ccC0rV8Qb=mJjCe zoJaY&*7$>iH9|Wk83vR~Nx`75JD)_>SC*zko#q|Af3ZxuMMtm)+{WM;qppY)!xPOD z1{1oXzJ5s((DTe}KGZ0>(Vec8nEUo<3{#zlVE4D8 zW^!*MXGH?ZC_9$EQhU~Tow7|tAI)djPQk{RRQp|c=bFCso4OTXQ$NvcnGZhh;=sNj zix$O)(BcGHi#3xP9d+}N;k!7)c+xUoG5JW(zTiB0xQH3qbh>0`Sw-K5mX8l~l@IUK zatD*p{!Khtq$U7H@=i85&z=7^p+^rnlrw+gIG((e;@@V*7?2{%q<}LkZTf)^XA8RD z6SPpB7H%SJ+^sEuBMBMa)Ix~1{v$F*)N3%_o=T}uytA;w(wQ3daAw)L*xAXA>83i0 z091T@7Z8U1ZB%VNx6weR&lIYeoAeiUo(Rqu4A6OGS0ELp6KeWIIv#~QP1AS+G$Mst zHvu$2XbfNW>snRSTE6O*tv9?*q;g_(sr|3dp5 zDVTse2-pX#%~?~pSGZLMI5{r7CzEMzSVHnwLA~Q%%49K(n~@|4(;PT{s|eT8RyRgo zN-U(4{gp#UrdJGC>4xu|PGEGxK+>BYSnyj(^c~xMU9ZZy^$>DDKD2dv|84s+zmI+m z{IoVHa(ZoT9pRAGG>c4v`HJ*aAu2;otvfszB!#_JtPQ-fb zbRLhh)Byp_L2-KP*oy=L6QJ1+M?0|g#ZT@v2>?k-T(@wcwBHHXd0_Ek%xNCNw28tU zXl$FkU&n=tlQ_#Yj?9llv;n%tfN1@r5r{S;DT;%SfaMzA@zVL>9TGgIMd$#XV3>3@ zC6k+G2M~S6*(LW4FN^k$2~YXbwg8s**E9t03`dF<7fOuW zXUlMc&|5g7k@$+fQhfwgsF6E_C6;7o2v*2O_2!UZK91-M45yWt2 zOqo7%Y;9%Q-otT6va|rsFf{}Qut+VQlkw@aZvYZt0pK73J1_;^03U7uphz)X0Q+zS z0zmCkeOFEdzPLd9_?sXE*!6<6KM^K?v9@y;Oid7D;>HY-z!sB8VGbxZl3Dm_fJUhE ziX0uLwy?J>np{jO3aJ6dN-i7%sd#BLMC6%)N9W@j;)Q4R9@sYL;~L_Hqe{Hal1?gh zW?@St;-{7wJ7*hvOkJ@>g8tRf`3LLhwX#wQYf48Hgz+U@YOLgC@!vcF3*jN zUM`LZJWv*|RqUvIDXcaC=a~uaodG$#398@ZQE~@XLG8_ z;DfKElm`qr(+x2D+3)sMGVwuv#nNSxK#(RaD|u7h@#<=SHj(Qvi{{y4@Eec1H&g+A zEf^>V5QZQa*f@poItzX$09#p^y(}uPFL1G!;9a!A%)FS$YlrNZ3jhVIB%Eu(G=N5v z&y@U%-E$B?)V#Jta3!VHa@XoOTs#`*npelx@r|Vv_(xzoC(rs@x(|B`S_JS+SQz3( z27_b_uqCL*(M(I1FnBL6&BS2jA~z9#)WM_qlF-^-t6p@1fw)N()Jn;45r!~kWbaB>8T9E5xA1yic6E3b+F`mJXc#LbUQ~C`&N!V5n)lJ`4L1tUDW@UdW&t&+wv=LA%f^9#HX$r>UfP| zw?^YWO$%q+1*_BGD8wDu1A42fXidRx9WY+5*sp~ytOpSS05;Qnzyvv)H|meS^H5@FX5Q{ zAXiQ))lVy4vMiK};BC3Ei}j#%2JmIYe*+qZlt>T&_#o8ISWzO{p80gl9T zdmJsC&3I>+0WriIF0075NYoqWSDluh=1=Szw4pF$D`$Exa^1aNg6xn0F|9BRkz^NX z!MPvZiM{P452S1CGGNWb#c)_rLP0IvKeiD*M=@p+bxuz6ApP!WVT%wY;;RF3uKkc9 z(7P~cRaW%IN`x^{I7NISqyMz=wP;tJ_=K+xMZ_Xy3f7uyiAFVQ*zxb9w$K^=im9tZ z_@R%{VtSp|j7SY=z<@O)-Q51^m$eTO0)yxA%kL@fts3Je-_Lly{mcj!^VMpiEu~&% z>-*_sP3jJ+vSP*`-D^sv+vY*`sE|{9`_8N+@ODEJ^@Ddq6e89$rJW5EzbD}uvu62C z`W((74iH#wck_9ao=~n z=55EIY-TGf*&2<)WnC_e8TUQ|D71fr+N8rMX#g0Kic@9Say<1_=|CWPNhxjikBSh= z1COc>CN2Pvc^3@>{zzi3$^z1*2lMbLWu>v6`U%PYI(J>CM# zJF>R&NQlHJZpgG!Eh_jl_6FLBmss}C|L)_~Yq6hOTJQlpTQfG=mKwp;Zwj~`B7dEci+VDO~5 z^ENz!sCsAX@Y>}vps{%?S;3>3NP|F6#(ytG)GQgp%=sPsv&4nB&Z;}YB8Gp}gc3J0 zIhLqpsJ!bvZ<&*kq?oXCaa52YoCy#u`MOVl{!^%p#3 z+I}jU@BA^E%EPF3?m<;Eh~Nx|=nx<4^k$u;aBL_?`uJ{wUfN^Jd{cXFGAo(?d3$5D z%c#h7 zR1wJ!k-vRBF_6`E%S0Crzn(r=iH;v#So!%sFN;R?N~*~x%&?NtZ|P|6WW{|_gpF$c z?iA+T!@ACRjr*RspNz4*9LA_HOsDA`W&Yl6G!x}P55q8e5tj6;*F;p5O}u{MC;=`8 zP^d;B!hvtteprRjOQyG~@N$+Yo&E15vNyfCC7guiZMDwNS}2W^%cghui+e}rrbJfZ zRZ4hS5ly1(X~M{1;Q5FQi2475mnAkL2B*c#YlPguYX(E-=vT9E+#K7J5EE9^kE9u~ zRg$2O;y`$vp@tbAW3GJAu9JA{`KXmR#<%u0A4db=cvdGaVtVhiwwkAc-k}s?bC+9!2Y;>zK^6f zPQMN`H2f((w*1shzFwGXzB(Mga6es?)CQsu1fHb2&-Y>|pVYVL@Z1^IO*6jP0}-N6 zlJjW^%Hu+XA*%W${XipEE}qJZb)T3TCpcuKF%^>1+yODT`Mpjca$dcv#QL!WGbk+2bqdP-!<&!HUQE(m@PPrIsHb81}ZQgXdM!tzGkD01i|Hl@mX3 z9MFro4EMBTTF|iyh~3Y5ssT-xM?jqej1G8Xp~PCgzpVG2=gLwby&|*nt?0{4Z5E%( zCIJ-rG@b3_Unkh-^2w-IJFWdg)*!D~p-AtIbt>y)Q@F1xc%cH&@0j5ZV-=|F;Ldw_7CMUU$`aOceb?V3#lx!m z*;YojgL2WC3bIFkx0@{hlN!EWvR>4PJ->_qeg6&7ub`SIi!NWfK=Ax~p!XD))PO-h zGqZMMbh(yQM+NC(R6XwEv#+(NDwP6jtHyi6xjd4+z;q@ia0$%Ci%hfz`#L2*dfdi) z-#NiC*BCqz;4|*$Y-xW+Z{gC}XCx3p%;O!su(d~6Dx7%vrrdB$F_Kt%r6_f3 zd-@XE^lEaU4V)+Aud_t0>>71}Ts?=z4M9zx3FXFG@%w6c51S334h1CYhkQi zQRm?*blQzvAWWe81Ep?Y`-P39MH6J>pqsfX(DY4G_~}i8-)0>&)LiBCCt>fep?SyS6Q|8(a3Lr`X0ZMCiCk_<^ z61PEQ3LU-w%=Y)Mz%5_4%;Tx4ADXAQGkB|4PfbO3?tKnIz0pZ?}->+U4P<{tZ0ZpK8-r?fs zV0d&o&Fq$dP}%FU__B!n@IAeL+WZvf6E9Sbo*At=7o1|=CO#5gy12FaiboJ3$4z-sV)In^sl(fuHW08pQ-Hvd``RD^K= zPVF$?oKJ|2n`0;RKzh!9XTR_heJ+L45O)8T0?y#J5aV~9K_Y{C^Y-dxb!oj;+}i6F zc>K&pNk|UhN3-UwLkNaL75Dh#57^S1%fb|+oTehJN?gRJcX^j1qSb~+WrC7)p2F+CE{M~FkVA2oj_@}(z&QFT&fCV z`>#$R$PxmY$HoV4C@!s{ zWXYyrO7k8*`Ez)j(OUEwl1pyyfr3S^eHa)VN|c9aU$D;GWMluk2?! zXzm3YUEx(xv+*?(0dmoCV=2>wmwkv+HcsCc7$7?lcSI%z(ljOLdohr?B>f&leGWb= zS8ol=w2jkc6@ocgettbiUS4j^G+cTWbH2%U!JS*b^s9Z8LwoZ57D9b3eXL(8hx<06 z)}ld9UOdVF3(OWiv7>h2@xN6>)Q=8pfn)q=i$3>_MSKA)ye{=H{b!^=)r9!ZIAume z&M;9!d`zkNf~_Lnkpw4imE;4y)~-d+4>uVavpci}0qPh-Ffq0`7bJ#l-hMXTweHxq z?^)UvZ}?32EY|KybDb1D=Y{=xTW?m)NK)8%N+0}y z!}F~<#z$Euw=v705f_s)zP?rtf$fbq&}#unvCDfdM}T7Cr7Yxv_L zMvTAu;*?T7oR6Ne5q1QBV`K_ef)QmGUe8O?#z^eEakvvmD#=h2O39nVe>iIKsvx)I zP5ZiALWSq8wby|m8?KE~r+qToP|Pdj_g7&33IJ#0WEhqa!>b1$#i zPNX~-2Gi1DzjL^#UOrVQ1S}c|bEh!TF5_I{LY&%+yPpOEpfY@4N_oXi1pE8%Fuc{t z70Fmae=&l4Oj1Dt2^L!+ns+4mN zujHy~}uYo?Ycgx53yt;I1GT68Tv+Wq{#RPhZ_j`+_^kOxuJbJmBa(tem z4&_jyl$y^;2V6W7F?4BF!s+#EaKT4_A#NAo~8cym?OP+N&(tadz@*msgcpb4P zWmk-umHNw>5l#kr?rU`N+yQVl+cgpWwcVWShq4 zXsLNs74%~W+7_ojz(>F!3uoVn;-9n1hgyLB^g>5HYQ2XgR)lUGlSDt7X9nJ+{9!Q4 zj7PQy`J_Xu`vELeppuH!M#)ViK8)93_oP{K;n8V`zGgFEAnZeA%wjc^rs(X4sy_*f zxmuqvf<_y9yAyrLtwq&em`kA=w;CjjWA1-FdLE|?m&sy`nndsJ#PLVfgey-MnsfWJ zBU?A&$^#9~QAK-&6$Uy?M=)FL{MhrU|Fo#$v36?|;s2mVR!uya>cqbTZWA?_Q+JF# z#cP;MEOsT;$M-=cLr;-bjBuJ%4g<;ZaTXu=$p*sjNsdW^%^>Z0>|m3a2ruNt*;4bs zkn>MVG3A>*7Ja8x<<+l+gn{j5k1==c_|$2?!K11#J?MsmO_)f_=`Qaz&B$SGjT~2S zKh1&zT?mh>|FNCuu-y1g)acz;?#_kpnfNJj_D@5V71hD>qdpFbu zdHli>d!gx;!WczUb1Xu)7EdftK0ux*!z-DWj$3l*+w9xkNY>1UQI8?7G(xI^e^gwm z{VMG<#6@37eTiS!1*Tn6rTNmZ51Nd+H3Tw|wFkF!W~_Lo$|Lxj)H>SwdC!Am1!E)$ zoRg>TEy+6ru4-{tYvG6)o#%Il6`y@W*6VG!G|V2{+peFvDCm4nhI1Qgr@i|05s*>N z*f_Me&Q?@;dL$$tV}$n@h(;|$wb#;3`Tp6DUg0uDY7_D&EX;XC!(~`VF4XnNMEuDW z?(gnI7By9LSrI+Y&xo#bSg{T9mW|4rSa{mnd8W1NletKSkn?~7BFWv*P{=C*cqRRliknY-!uS*Yo1?rhs>oZ3c0Fd2@YTzc#|gLBvk|p4icK z5k#>7#MhJpR|ErIhee@$igw@xS;Tv|+N~QI<8Q4KM>99rdZZjP=)JRBF1@yl3KFsB z)h{0#zEfB-m_7Dy15mZ-o!K>3E{jhBW+tA9w^mdZBnZccsQ<%%N1^+CW^1d>^1b55 zx|MU>^S%YTHXKIQiWT8mP5Q{xQr?01s{AUn`Ngq5Uu;$?6oQ{Zvjr5eT!d0ihx=C56lV?C!Y_rOF$D8X`-ctPVwXd-TNGS zuYvEJ`aOq77_rs*=1UnIu%QEepbux(g{tq}fMf~*!Ma0q&1KLZDtB8+k-tcMrDD@J|^ny7Y3zYj~cYw#3UgS^|zg zs{Q0_uRaM9gjsgTD$Nmz8x6}#Ai75&mhAt2R*)WVa=F;n@R=}|1`ogMp`mw<|4JO; zQ}(}hl+*w+KqitpR8tBs=ud{|7;mWxjYN>%l_~d5z2pu2GZY)HvVAyj5}``+>(N3VBLVFvd1x7SmqP%&g@{ifi0F z68Izok~5;|_X|2$y?2WOj=qBtaN&ass^Y~Jq^LR!y49H>yIx*GGePMaH2iS^Rrs~D zwJwq(KrIKx@B>k+kzd82CKM@@aDb`*$)RHGrQ%URfbc+lQ%f;q?)HC7$WNT8Wk5&Y zza^;HUQ&wNl6-}K=j{p5cVHf|azml2Ai@s-ygX97R4Pu;vghE<@4zI`8NlXBQl1pxcnj1l5sKGaJ3J|#b&l=S%k?w&Q(AcT$7D4J|q}e<(9ft1& z>$ag1jqC%_8o&u2%a$+e{0ongtZ0zidWzd3&Q$kdU@4U`a&M&Zb*y>^Abk)%H7UOG zmnGwIz&=BpXSdMxSl9j8x*oT<^BQN_&h}ZWAO<4Om-JHvaam5!=|ghI)26u)v1G$))5nUV*ZYve$P2%zbS(;itE~3N{>S+>jlv z^Ob8IEk9;^;B4Z3C(Eyz#KpREAlE0ZZSIR7i2N?683V~rH{aYWRM2yBE2)doPoT39 z1I4Yy(Y@SSjl=F#1H-9P;;*lxMJ${!8*ud=B? zw`w}sIfwWmZ#?ZHWAHPoaN3X`4ej+n$}6t$0-<*QMo4%*d;lU!&6+&Du&qt{3-;>E zQJZ|-29>G=jx}||48Dbh&xm|O;LOr~?2;^bQZ0oSt=r}95Z;VpWkd2OH*;JUBfTZta1aKdB{b6c^SjHI@NSwxg;*OX^Sjxu_O{+J-y zm7i6w&@fTnx)w&%Zx945|4w0_icOT)cHIKDq8v+^G$a{h>rS ztdoCpKdNCP%FjHVcN!m4J>9~n1v7ZV`En~ndNCJz9>@9Bj)n>-^2SWM`hbXqh8ENc zM_h28M6NbClSFzk7kVDQNhwY#{&c_?NK#|Jr<8AVc-h+9w=S$Pw*#05cEgo7P5K?YhPt zo)wZKHEvhWqw%#XbApLu*j3Un!QZg?X;}M~@@t^qPpr8rlUO^G5^EGf#Qmsa$&|KA z8$GdLjbkuW@Qx>@5rfFj{po_*Djv!j^8Mp8jHMf7v`_J-A!`4UbUYjbqWnILF)oGu zwUs_%w0VQHf%MGV>+w@On>1iRcO)o0Dte*4^_Z&_a`!-UC=K_FNp=;0;_JFe1mdk& zGw#mF%^P+%G@daX@|qK86%8?&O7WVkkxV8}Ch=t7o&OUiF;f2#O8G!2bUwHWi)d08 zFYScVm4$6D#`D-}xSNSf?9)|{17~>fAhGbGtkFkgv7{X}YJ9{suKVrIMu?b`hF?QuuV8s@j)PLp>OXvHb=@81=S>7P zGJ0`)W2_mLLd7|6|Dz}>c1jMQn~uke7SF*8QYiA z)0=(<9Spi~p}cuf3nP+7#L``tWyuwirLNbT6&UBVi}QyBMp0YWyqT6u54V5qDH&FD zgU_dxJNsvApaL4N0Sh35&6uc)$lh9af8I^wmtmvGUG!{V9M&ddY6`lqR$_zU_F0|M zF=yfdfn6--x>j4idOidM!adBvwdztATEhj|a1b{{UMJ*>j~|P`VDuqi0tK}iGZvV_ zch?sU>9W&`OdWXCh?N<1(fm*O9{b|F3*2cj$MjGSAj@i;YP$?^(k)1XuMr_DFZg`u zM~|}&ob76?hb=rFzf*Rzc;Tyb2`&G4L8k_J4u22%XB-dm_?;+6EsK^!T z_@GM?dm3194x#&b7R~+CZEg{H#Xk0d1q z6csTW1|yrjt>t!(cBVLrV}OC{H(X(3%RXsarH!wPmYHk*xDhp0FFWJR_YL}O-EYyl-_RtJtK$de^2KN_PY{DdtANYa6 z&jt?#u&a$@#f=QUnUY2o!~#9CBGa9(tu64RB=AgCvox%=W`%H07dG` zE3?3C>YPZMya6aA>Q_>e057fvXW(S{7i&}9d=&+OqP`WTi##~FWkc7ly`=^614R8s zqq5CMI=Eyvs?maSGYt2l3Sw!d3N59}H$sDbF`=15vEC8Ll`xWW#()R!VtHcZ3HM+D z-Ik@?PUa(YxfsEDJctS52l>qIksL!!lgm>Ypmshw1o*L8lb|TTu}EXJ@zcm00qB5Q zGzQ!Td64#|+fIJ0hq~}ZAb3NV>Oh(4O`dZB;n=v<4|U0+jR6A0y{>%6-vg-Xm@_|A z^CX|ewdnXkU4@K@asvt~Ghna~1vs*S)<*A{NGNI^%ZoN_&?xcHM76>UeS1Vth##d0 zSd(U>&%cNV7YQUF6qm#IHXHjCv4FgFn7aA4qwjpw#3|!Dc6pnY#7}?v>x-C<-jExk zra*b#=L#O&8KZp!Qt5PnQosy_z`SmCVLZe|6jt<7Y^AXqtLvl9cDD}{%H*;Kycp~J zO)b0*CiA)C7@hZ|)*&pq_!spsTGPq%KeOw9U8C&Pgb!3&NT5jbaGFDIx8tFXlr{D@ znS0Eg=yK4Ebs59$8&Tc{R~+r2CtLb6iMuS~Nq*xpQ1DeYxeNt*KML1 zbdnOfMx$J6or^*y7%{=U;7NkNwk8%H-3(X?441)C4?3CvxISTK4SIZaC#oa<^LR~L zw;%=`KFD|gP2RydyQ++wm#ZQni{qxmAQ?Wr$^(hfY!I#?!_nH8TPLS6x|OX)BkkNC zf}Um6Hm7kw(^EXDe-=_zcr($tv>d*x_ZOK4WL+3|9M7tWksQNI8+u11V)B5faQ3+m zW#3PO?G7ifJWPvHRC6W7QdCVvAS6+PRM*yjiNuuCLLfaHE`DSI*%M*Q9omP7{Gq=% z)JnmcCP#+PJ8_COX)aJPOL~m^yvzip08jhUt{66 zG*P6$?GI#o!Q1o~tN4u9PFRbSL4`81`T;J&dMc(9B;`MC<7lpHlu$z+qLKKG;DJ|j z2(Gexk3#_V)4W{a#6NOHuMV^&EmfHJncx^iNmo1O;>L63f2ZF05n#+6!;@^BY=1@# z2b*|&I|>Wa2Y!H`VOK>8?}H3M5y|j#%~Dc8FpYl;)X^p269?liL1}q5^xc-qKTngCHHstJ(r9g~`4wqWN^l(iF9{#T~h{O>_^a_&ho(36I9n)}ATJ1-mjLxnN-b zcysaOHqcyD@B3zkn+!Kd89qjhXHC)CpR-gS_vyf}p|ESh(A$Ugi=xE1gFVTIIp1<8 zU{1zgya&_U=oTW|8OddV`>#1APL%?&rE5J2u=e&s^UyYx#dwXEQ&y9iG6 z-_?El{($mV>kb_>GeUt@L^&GMHQ(quy1}tpaeqRvvB419sB9&Rm_9#*u_(o72sLim zT-dub!~0!`nhwx(h;kBoA}gR&e@OSz_E`-91GPJvIN+_%`BLqnmH4p7gZJ2!PG9P3 zoR}ZqccvfM{^#<^AwQbJ8VScMT6_nVk!-J6zxI%$%tJ#h`WZpM0X-dzVz{=>B0!k{fYGO!4LHF@@{en5Z8UOeE8G-i2H>;@R4;}FKG}XYAU+e`3MkW1pj{<)2rp>f zgH0of6wJY4C$?23e-!qSo#pL0Q?e}(Z4c}*Ozn%@%Y-QfA*AJRDDJiT7=<*&);md! z(w{ZZ^G0t_-Z*JtipdE3<7#}}vVj)8@RzFzs?)=n4FsO{gc&F0xaLw3!8?R8IbylE z+Z}Bg44kRa27=33cvv7(236o7PZb)&P+#u)XcN9`Vo`6)4+UsN^bt{XKM--%jD;OO zzg&nr(Y<{b%8w@sHHTGQPsj(GVAQfoe}OfzBfkQjjX48^nQ<*B|Fe5O`BI7TI!Vvp=mOs<|l~ z(P37DvqYp1wTNgEOqm{aIwuY^6jeNFvC-Mr*d~+z1|ba;PZR85O>j92j9V@%NWzGj zTNVV<-&&@S{7;2Bl4#O&+)wUIId-GCf97Tl{Z|;+T_{4qQNPX#w`-a6-TU1FZ8uhU zo15DdJrbFd&RQ}F7w!v|wRXW5(#%g#9(MXkJmf^jP64&jaa@sykaYm-EA6P=4%jsE zUP}x5AU+YU!6Vt*4ay1*UqgB3sa2o+^?94>=jBNI-fU|iE~|)0Od3y+5rp!mk=PZ3 zw%&KQ$oDi6d$AwOxm&$b#zP0-pi7F+NI3LEdLt@X{N%B2Slkw%-;h1(OsrSX#VYi#DXLi`p<R_L$b|;NKyYC zwTk6YkJ3rYJhf@B(IZU&|2)UI?<{^Q)&HkYmm_?laCt25L8t|r*&)vPlo5U1C~|HS zX#U*ROK@d5|L5FdNRcpOlxFUXp_WOdTj4)WPm=WY+m&8`sIu)IF|l6G zKd03A^>PU?^SRqYr~rL*Rb2+~K&YUKht88^ce?Z-`4{$MlR-1jSVzuFhY;TpCERwS z(2Gagm6J~OY=+=#-wx2RwK(|${n4PT;^F9t{rnC{wq`9;lNNOW@mC!C)`?)W>gk_- zqT@0tZvB%IAO}u_guH=k7{9by%&(Tepho7N_%g^&C!xHR8`bieHFnVGzBf9f#hJoO zaF|wZW0_to=+k=R9GxX}k~9gSv@ttDRD0pUJhN6`RA`9rx}UOwg(E?F7D-Y$)^v_XOo3$AKK>upbE6O; z*Wojf1mFt9>S&b<3GDt8R;nFXp6eh7KfW?vli?W%FMPfLy*pK8&>4is0^SdVDo@dX zMk3~b+JYJ|*e>uyXW)qZm*p0P)387VxqeYk_pZ(QF?Xp8Ngos?i4{XR4z@J1N2j(o zr0NWHq=vwr@r!c4RKPo~Q46YdmMz3zC*Q(j4lr%1Kg~qVS%n;7~pA2Cko+m&yBgN2*E_TqPf(uxbW`FI>fm%8+?ACExHd& zjh!d4wQtw5PvH7dkHBuo4s!SRII9LeM;`_1bKei}cd1(CGJ%xkzp6G<;Q1PEH2(ji)y&lHsiHqh&Jmkmz&WM)?m5GYZFf3}9&r zJ2bLo+|?rRfcNOnIdT^MAK}9T$qNm{{YtxBkV-9J+4xC8O_&sqgIrWJkl5AAVpjz( zfP#Qd^Uy;|L=LtE5F5W~x((vCC?H^Y`!LwVw4eyIKzu*0H&1TS4Xulm@k8yD>Zqdn z9Sx|SHUM+aGI9{Tvi<~*0W_?2Y&KV0h#JGg;V9-GE4aEp8R(!g?-T@L7K=YS+c%zz zetTO)7A2}8=%@gQI)Rl4-v!heWU4M|+`qsN?cq1g{8~b-FJp{c;rf#5cnFsLyx9Kd zvRRb4b~Vb=6Xot2Qj5h)OU1z@S*QGm8gj8@JyTLK)0d!`Pp@weD$szdKm=6PGix#H zc6r@u2vP%6(T5YFE1^H+nHPuk)vqCMf74 z>73PG+*w*}jq?KoqesNhKwi~eUuW9(MWt_!ql`*;=rwEw;|VhfS0F{rA2YR1y2D;o zhBE@!(pJp!^(w!&PFi`?J*r35x8 z@@6shZ`3rxz!S3)DJ#(Ht+(%p_`MKU8iPDw-V2`$uQ_umj0@ZbYEEeXj-J<+d74Y5 z1s8#&(@7ax z#A(*hbVT*QO!s>z_;tkhAoZd=vvziOKKvc=?+pQCeP-M`Ei?gYR0xIKa>iXPr@PFB zUGsYFD-HZf*I7@)lGike1nBSkG>}u&Dz2x-K0sq&D-UOI1E2I- zD;DUq=2l15w69?%42oqs5$CJU`hAz#?P5t4UwU z#mIsm9rapD|Jah@7T186Ky(^Iu`gNZ?u8p9I2Hx)WC!J)?4#ZC>mh5BA*ZFTQ43?` zH(7Mr6kav9C7HUw9Qb*GPGVnaL|`XMMsn9ZBVs3FGyNUl&NayQ#hsAXPgK~+&CP?I zmJMZzZNc{)l`~8#heQ)f3v*eW#~67PZABOzo=)fuEm2v%6JuGAr-ZcAsx^uhe9T`^ zauiE-YgIlAVKe~Z5QP-G$MA101k<~;HYY2=cU*j~IPD5!J)wjwZI$uf;gq|Kq|@9n zmSI|X037Dh`ulDZ%U>JIBnP=63%tb5xivcr;{*bGUp9Zc}hI8MuNH?b7&EsJW^A*&2UioQx+p>afYZ`!C%Nx^WSq;tc{O+6?~qo`6v-s zcmS26!HH1vb$W=<*i#Edzxst$@R^WA0MY-@6EqAuX}ohFjq(e1E2Kfiu;=;UqR)gN z3BCJz#y~*go`(mmlf7%GF5F>XXw22*OX$It8`hRA47g9!>)0TX{++#0R1g2Ixx?KQ ze}E^_4rRJE{FIN3Jc~r72hn<)Ie<23ve!oVi$!V@qzyvv^o@}Q>&>C8q_e6k6rWwB zv#(9S)+<3;8l~DG4eX623qqi->y`_|?Q<;}#R-~}Ag2je2jZ7%=_-vTUeaV6B@WZx&9>hTJ3eqgf~mIcvu0**kckQ;Oq5I^ zoqcmufwyn0Qsdr-xypx`Wa;n$7KTM+T|~6tQ{ie?j6R}h6*`kyDiCG0JbZuA&!lib zKjJdFYJ%r%-Rjs<9}5{M;pu#tlOQ)o!+IoK4?%K0z}k(=cw>u$ zKt*(L28G+~_!HY+QUyH-337I9m=R2DB{RXU;yRhG9XtLM32RQZ;CiPdy3L`0eLO?P zY-quW0Jl-K7(;TB!cy4V%&dl^)WQHW7R5#*O}+@<5auj2KnN;tSw<8y;a_~8?IQ%1 z9D?YBIK!>1hB4 zZgeG>*PcrT^%sEtKjv4njR5a*_lRosq;szqLA5!FQR>Lc{tyDP!D*s9^`YXU3V(nI z+|k4*MuQSkfFA4M`&ZPEwhVS=G)=?eH^V(gKPI>aU?nrhr&bMdcrAH^NJIJi5i@0i zlwAB`0jiY%`zrrx%AJW?ZNKICE6&VZo@VUZiy=-FcpAkuSoX4>ILw{fRlj%u<-)HI zbBkZi@S+0~P2g_?LR{9A?a3O@m|%xl1Ycsa9TG#Mzqy4Z0nR`xuhx6v6t@}xOuVE$ z7nUt2_3C3SBHX9GGFMmTjX)1f8LvrYYG4CKvA^JK_Iq#FH5Qk4G5!yO@{?KqzLH)P z`CKAUr)9@jSQXU7_z++;57^EBRM$ixd)(*cgt}-tm(fUEny3Xd<-3hX&Ogw}l*r@N zg1*0vq+0Q3?NQp)^S_JvV1%Ro%hIv7bM^`1fG82ox9xsz{qLk-+8{6Z)v2zh(E4+j zU2Zs(B9`zB7oV(CNC0#@)W4($gjLa`RQL@+Hwp}D43gV{$4{0?F(<8j4Pw;p{$UX& zas91mlfwmJ`LNs{yYwv^z2&H*_l)I5K7dlveyclEx@Sz`ur#mW$CuLgUH?p%dDs<4 zFa*FfNg9|quEG*mP$W~y2427FvO`Hm5T|AJPwwygeJKCvQsT~qxW|4-3{rs_)<_UP zFxKIiOix4%Jmq{BUah}l$7I2YV)N41Ci`Y&LtHMlT|U(|6)`#*xs_U)k8vkfAa|T9 zKH8_Lo!y9S>I6Yc23{pFMAa*>IEnKgkaUR-AZr>>Lk$@B7{}+Ew3WC%nbXoH(FP{Mi%S zeXuet=@{%(OT9Q?2e7^8`~a`I`Ogk5rdALvlyp-(h$4dss96FZ71veD6K&`IP|pQ6 z2D;i(bZ$5APaEP_ZK?c*4YGG_xQh`GHMQjD>Q0epwV(S}2nnJnW|2y|s|+#(ZeERL z@1W{UV+w&KbBf^WOS}?u0L`JffC0lVwFQRj%chth^)LNKgEVo^TA-187gf|pTN7jr z&E!;5QlK(c|A9OeTA7bcoQ~(MW<{J!4*)&b8cvBbXGS|r)zh=}oS5E#2F4+!A;6&Z z03|S)hld}EdoP+D)##4no{a3f;3Ym3exO{u2u$+xiUy`EDW z-r=c;kmidpk;Q&J;4II1fGFxTSweSIe;nV$r7)%W9()&Fb8JaQYQtMPE>pM)=fUVE;R6%-QCdVCi)OGQZvG6n2Q!T}lC4BQ61c z1fLtO9j?XbEVF~kqN|15i3SEvmy0L77T_~`QA#rI5MR))jlh&#E1HRn_EO_H^V}$p z##>NVgUJJ3FWSjGUkiQkYFwEw(z5GD5om>0Iw*_?@3lhi2`(eSP+i%@>jtd{|M>2= zs@Zvi7-X~w<_)ztoNKu4oeXR! zcs2PKhF1h#}Z)|xJt3||Po4HFkCS5$*nRvAsQsr@ByjqpOq zMcUA6j-CeS_ywsbb2vvpw8LTMoBk-ubq&{NzHgR@OdoEgA&3MhAc16On=}yuN9Hk- zx2bhvvuKt{&+BY{Ef4UCl>#lM8Y}*3q|YG8p~k$7SlB)YXdk{nQ#NqS$Xbv$Kyp^( z>)D|K27wty>_&)c6Z{u)sNrVf96lrVk+{6d(~Zv2Qu3-RhNrw*OA$0Rs%EJ)Wl4SM zmMPjXAR|YS>M&SXf%??n&$uw}+9?p09Dh|jcAFTT=0x=ss*RGGNPQWvIQMg0+}*e8 z14g(t=6dZmQHP+?NTl-6&5I?|3aSkZW8HOMM#!|b1}LWjO!S&nA7j`}o@#{V5O<+#j1YEt{MU8;B8#d9ndEwvz+Kw+N%Q_ari3gL3JMtsvBHNI@IhPJ8Zl^M zosF4xg<*(aKZD2sv&tgRP6<&261PuscL6_atiHw+h2{O){12(tK?#j4wv2HlsC$4= znVh})1I!f^u9wS`p9KEu7Nc#jQ+=Vz@mosomF5Jmepmf zQtJCjtg-_`k|{-(d%}pQmh74hA?@iEBnm~^0QH4*!ZHj}jN@&lmN7ps{JvbK6<7JH z;<}LXDkp1(TDJn%gqYP(7Q$&1j62%ft=lL}5+HXwr|k=aR(u(19q{sTaNT(O7@LUb78h&5W6`jSfPiuj5|K zi#Tj_1Z3JnEnv~kAPKCleuPlKlQo&`O>OB=MpqOWXH0GyjbqT+Pn%w??!hd{+LOT~ z?k?o<$2*NyeF@pml`CxrHu@*&x+QzOR8Q*==*4B#|866>7b{m@a;X0g&?^?)`%YTt z#k;9N__3ZO;@C+ECKC2+bN8JSX{6j~H#M8zdMTo=qgH1eNBD?ZxX4nB4#9czgKRwl z5@LKTbycyLJdL77r&hi8Q zxw#2he(7tTumy$I=vBlG%BE5-WJ5i9QXgL zPOu9Mwq<-fft0Hkqu!U+f-*C~$#MDSW)jsTzzjPQQ5YXh2sn_RHMJNgbdJCr@T(G| z&!?zRSqB{qtKnB1G|R7^NIwngnDgUx4>qT&WgiON{`afaJzioyJu8zp9dn^LrJ96D zxs()}L8lxUkfUTcxx#)XY7-~^>U5N#uA>q8y?vn~aF#vZ3+KUtZba8ctRTQ7QksjRMpn_m!=6EZA(Na&*5K~XM$ zOFy7n$3Fm-YdRQYkM;#$6GiZWc>dxoNW;Dc4etdz25`%uX&o>-Rz7Tq@Alz^f;dw2 zl9*cC0PKWXBBrTA*a_+cyi&;zSQLaaUFEN0o54r^H zQjhb*FcuqVgYb%$8kI9yh4sAZ z7UQvW@4^TB-(jWTLidIVyN@d+Q?IvB@?O?^Bw}Mg+ZOay3rKf@BT;j|gryq2cmhhV zb{5|Sr|ek^%1NdFYM_hu!g8xae{d&xwo}zM zeB3eU4YIvo2ym(Oxjp>dm-Y||`Zdi@;*I0)lhd1%>}LxFA8oEOnFu}chZy3G1Gg84 zSTH|msQa}h^1^%HRFEvb14g0+pM30kzC0Znn}kAvmtPv3A!!wtP>ypUR;JR;aQOk_0eCygzK1Qg34Ta@V#cxne_>G znbs09!uu^y+)Y7S*WNS9*;{yq?8yPWsywX~5 zChhiG1LTaH5OVHc{v_okhi>^pDZ* ztt!VdTz%qWq4bkyr`!5j%hF5tE?RS(u;=Y@fqeLm6UTuk=Wi{WqrC-d{aZZuLzJjs zv%ZVdYfm5hBMgQ5rOa1+kTYww@`=kzQgR@p^xo9bVsz;Ogx)jZ<(qcIc)_Z6%4ZsL z`kMCAK8oH{DQgz=bW@SKVr@TL_xw&wd0?1u*Zh%`%5cxT=g?N-VExk_~b9Mx9RHA84;z;t{BwR3Ri>^0G|yInaPMQ1J)ArH*@(+%WFmDC*oG(SABQbEB&I%GvApN^JBL?7VOx<_}(1Z{|`Lt$tVa#EQFgHCUEK@D_;GY=B}pZSYrepMv^W$!G@C5K9o21Ycwy{ zK`ELd#^soxs&nL$HF?Ea1@p*4d@;#W6mfN!jxJy(%e`o9Gy$B?9Mc`zT)mkh^mIYe ziUC1o(pJnM`H#R^BAGMj`3u7pYW@O< zZu3;zuTih9A?=rq+aFZ&^*IuN7MLHxb1l2>vi}JmHryKTnLmZWuyR668v6CSwk!S2 zEsW(;@izq4>SQ2@#*}1O;qfwK3m1|s-R@hjAc@Wv!QYrml&#Ll9sI_d+2U5PlU)SZ z#WayL6>daJULrE|rTL~SyE69Fbi)K_iFf`}-}TsUt*C8d*+)_vpBjFjd-dho>aUS; zfUnqfXgt*iL}!uZiF+DtVjtqYs?gZyl#S_0Vez|$+&6}hRDLu3)+2^S$w1ayE9^kTsyK}#>e7J zAsh+NgH!uZeF0k}rK;|*b6QQ+bEX-`5l2Cu+rMo?8K!C|@Hpy>)EO%7_9a6-OqQhmwE4xRKOaqVZEDV2ipsMWd z{|){dQ5iz9*^XZ8CUDvsPs~~Pf~UeuDS^=WtLw6h)h#_6jSI^IYhiXWZLTvZd*O`| zZJKJ7Tc(_o4w!FuYsSdnRVwzoCm+)2YrKN*++7jYc3gFUDG5>O@DeqVC642K)1gvd zziq`fTcd32%m-CfuF3WXQzr=4gkbmn?}}}erONWrHzK5@$#MnfM2mB~z)w7aJ7Ppl z+$?|bz&-BAPImUe0NNZVz9zKDJT)JAY?}5HI=P6oS&n(Ug)6REVt{HXu^rl{Dt}(0 zZ5WaAv?eT4O;Xs8p^1$O#|W56!f-?UXByN|sx;&D`^>T>P*t-9hn6&oV;h*8ou2b( zq&y#d00FGYH~WIm(!I{^mTVJUhj*Ny%KOYJ7NcbAgk*13Wbd`N;30PYH%_K{%{(Ub z1|hk3c!LpW#2RYb(1W%w#f3f!#h=Y%euN`FEKrq2mbCwS0fr!IXPE)NI?OM5mWHe# z=34VXuMQm~$#IiMi(#aLgDEH5NKF?)j}P0P_^x6UV%o>^z4T8!ogLUQd zmKF-SE_efeY+48d@04~4$`~*ij@7*+$hbAsyQ)LqtC==8zi&kYn#G84xlkd6?__4Q zUquoBZp}ix$qxhcnK99QXqS{Ya$Z(0U{ENN z9Rt*#jXk9&!E&`6V$7MrntHm<0Ax@}yHGwxFUIrX)x|A-W4Fv>x7&vUq&;?!Vx9!}xnFt!lkP5!-JWGDMRPu_Wv zh)@wnRX4DCRy}nQ3sgm*G$*3M%cPQ%BcM^SIV3vK59=IVuUfcAF;}hRP|{{5H`Hxc zih0gb8FPXc7gr!MsQ$NxA?xn}^v7Wu3gUpG2PHDO4f&7byKC3Au^i|4An^s5df9Qv z>Y}AsK4Iys0y6=;WOnNE_G6_fh2>-&&zlg*knP=L({gw+-zgMm%PoD%_V3T#{*5Qg z`XJ721ybh>;J`#(`GBy&&FP4MOkBLc12pCy3g*(G z?Ge_QUy`YaP9g3hlu&4nqcMvDmNbha$N^y=6!%dZ$KnK_4ypq4e7RTZ?H(1qSp41BmY zylfx*s<}pO$2=g0C$9Zt&st&+_4C275Lg}#m)B(i(Qrpg$Fr<|_^a_`*WO5w+v^N> zxqJ2SpU~hK(E@dITGL>l8wB6WgBwLjApQ4^bClEEKmnJ~_u27T;`Xp9of>LSM9RTI zDBPb;i45n7kx3XhCpq1M&D`k8@_lL|+wBvNUEc3pt9taT_w`nntsnAVPTdq=<-$J6Of#DHb6UK(9ni6c@jMo7x*hnjyCQfB{%>Cy31;xJ|b7 z6_pe%fbou484s!pKl7L;==yoRDE8|;zW7a$Ass~1=F7EVJAgqYoVl|#l7c1Q2g7fS zZ}fRm<*(&7{=%{hu9aeME)TIJ^!XBbws>samUPP{NYXzmz{$aPRa@(gl+(LDrOf|y zd96@W54k_({a>y_KG_wq`K#fJg-cI2DXT9gNHCw#5O|PWO2E9D!v1d2mH*1klGcFW zveEcVI$NyL)**E@&`zS`c0fP6Oz@8I2ygCiMfCmYJ$ve%4RA}ikcI}sd@@Y8{_a_9 zFoD-XPt;Exy+s?H0XU#X-VW)98;hMaV$s16&-=OiQLOKKm@`I?E)2}N{O9fTBu5wh zhRA97xOD`s`5eZnIKI2}s=-gdyLP7v8sVFY@0#%p_RtW9RfDzr4cHMv6_Olmr4z+c&Yk6VA2$#wA6dM?ms( z{e1pcfpB%9w^)mu=*ZCg@}~yPf6MJ*h#2F$uRD%y*#Spo<(Ts#-IIBU$BdUAgz5sb zUT(%&qSqnwg{YeKg|&Ob!%R+MTU~Z7q2M4|tgck!~r$nY-cX;Rn#_+-ovpft40#P80is2ObsMUR$r9Rd!r*(SPLAc$F|}^nNC`~ zj4bG!<$68Q5iW##CmEJLiQ=Ga(y1AS?Y(b)e2|z+9L8_ zm{Ma{Jge!bWRU4CJ7?$$_5gOCCA3S^TOfP)?2IIEV6>A`ogc=1xL1 zkIAJ`$wCDpSfs2()IEF3TunTKXoL~39t7Wha{2~D>i|@kWDxxh?bM7Z2#P&uDM6K) zB<3=ELmh3_6G7K=>I3@)o&>Ov+iT7oQ%AIB#HSV$T}+Bk_1yOxpcu8gh4C7V>6oex zkgy1~kF@>3z^TRM&*NBU0rhOc-^-dHTPPctCH8+;&(Kf5V@A8gTdY7`_C$Db8q?F?H(L_qpGNwcup zfIF>Exe(gQSJNr}pw;|c#>4w{(#Ye${bn=c9esZt78t#ft5KdFbQ zSdw+K^garwP7u#NZHLqh)|vD)BHU9!n8Qlx2xZ;0D%sUBUVO0)Ej~V(UXdhAgN4lEjQKwk;TI#Y#`pNDYqCU7nu6>gRVE2 zX@ce4R?{lBZ@I8yIWDO2!WA0(NpMjAuEeoUZn$eHY*wKy&UPLk!)M&mxs@CRYWUa8 zSS;+U6*ED#lqAiiNZGh$*m+C{cNoa8M}cD0*4_hW3MOQQ#Al?6ykL~m1U9;~Fou@% z-r=g=@jfK)qcI9N%3d&)Al0ov8B;(S49IEXADJMlz;zgT zwY0lCJADoykRY-o0R4I(wOTMg21dk!l#v$80ubP# z7ovdB*=Zq&s^d#}?gnDNwHP7Mum3F#03e91ioR> z)c#oKrktV3%bW~W_Q*>`L>_;^^r|194>)rEP_jrLUgDc25an7At>IQSL55pF0W>euv1>+1 zgu&hddEFM7v16zlXpX>xyB2&B2k~SPEy0AvncT<*!K$b>zHJgrw0THFX`Fm+HHm{L zEm4mmcXUXX5nY7O`Ok$$&+^FsLVNe}|DvETL(!}Q(I5z*k;Hm{i`hWN+jYkt%jSJC z#8`%ngIjBw;0gcoR&NlRoFmnF3iqw}igtV6-8_q{FWF(kZd*YeNsAAr);8H86p2}| zeagk)=_E#rwEIM-36X+6_6f^%8yqST?xYp!(2|I0#~1ob>5Z}jpIpb6M+*a6iUKf@ z1fJv513IB7feSEh>Iw@GD;F-u^a^g#IKYX z$icQ@*xe*eIjgbAW%NH}W9jYP!S0W-RPRjPt#}8R z6E-Hg1}u0dIVaOiHHLu79P!qePFRb23!W&!Yw+h3TxnE5N)nPKM>7t$Ab}w(W%+gE zu4^rlqd1pnLci+2$V}UwB~h8(c-}iCcV#$-NS%`OYLexZi-r#Tf)V9C1R7L=4Xvm= z_9T8|&zfLAQ&Pd_%&oa(&AdrB;SzAf|+%9n(7lCmXN?>+%*~>Mb{B})U zKt_7Q%Js7Pw69yfN5S-Z%)Q9shmFgkTuZG&lsSLis3(;gI6Dd%DyV17qdU^vv}yA* z#$H&w2SopRCkyL~6DkSrvH+2&=UCshI_SnZw1_C#2w5%e{rb(?&q00HJ1C*KejJV{ zueXLmlLUE(76=IDtL69w+WB3#oOhE2nnYkXP)*0v&)7zRh*BmwAIbt4cs&4gr8l6S zZLZO??pM@dk<5j=qDw7A7O&LhM11H;Gjc0tr0FEiXT{g-&+$~BX@vGFMhw=aF2%?h zB$^bkyXOT5F~EJrJmWI42mi4nMNN0a=U9+AwEsu#Md0E+YIeb zMUA^Qg6}ejWxE<6#5Q>!zAlUz@e2p9-55309wmE|ZvD8)EZ7|WJ ziUT3e-`Lp!2Repf?gbBSne1>-WQ*BG6ybl6Vq~~(O(BrUoD*IR*8gMqgg=OzAvpF= zB)ARGiv7Vj*0XFR&;`{yy{!&soSES8?tU!w_0mUlPPekzxYRUDVNUj&P;`k#&;W)K7kk0+}vgracP@z2Jw`jckV^jG* ziOIL@Vwr{!CvfpQ1s;IozR#)3Y~e2~v|6Kz`Tk2$zl8Ktf6`8qR6c>ll(Ys`j^g0vv?J2HDV4qTm7ePNE=piM4c!ToE;}F|89hl<%MoLAPJ1nK-M*wx8ZfHd6`$b3Nx4ukbF5? z2U0Cz&fFrs1szy_wR`V*7Qp~Tm5Mx}XDx{fpaT_1t_Iti2-;4RH-c{$KOR4n>|M<& z5I)W2-uRYexqjK5Ar%zJW?^Um2A%+?N+<0A7yK^q#`_>Vh%HA)X_2LJ@2^nqQ2?D8 zy8#4fdux#~{aG#$@k%gQ03b<EDnbmeSpeqA+7uRF0|xBxy30JE<|y(t6OY-+ zLGR|C4p=>wKjVJ8B|OV5tuSbk4GJTViBOYCZSzIF*=TUk>o~LKybBqXjdC)u?|)5^ z^>s$EpoiBl2VkP9qkzIA`R2GrO8g#~$^EF;SEhhu*_nk~y}^RwaOKj0vBiEj_Cbtd zn#EUZFLgV{{wmqTmgdDPXpxt6_E49O7^_ST_=r_RpS{&3iBRMPp>o&1kASdRAcC>G z6S!gS-JA<(em87F+RWPZ4zW@XmH+ICT*H&3tY;h@C&h{p=KmjqjeB4ls5C#+DC?9a z{iJc~o35%9bd{`3?E1e_TuZdVVxt(im8`8emX+1zf%m|tCeT?xw2?q&38*h$&HQ-_ zp+<9;&&hSvof|{kywpFCv+23Sgls@%>5YlwiY35wvV zWU+HsY(B~twD}_iA4gJ@psYeZ-zn%Vo7@tN26Sn?agI)swNZ8)KN}OgAwn4T#a?OJ z4T5;QF+Yq^Bh-jVG4iV_$fU*{MdKxXn~p^oh$C=v@{in=Pe}UyI6ZVE4h0_HXd=E`5eU^X_DU19ngwDt&`SHO-uCvR~PMx@|J{* zir3NZw>BL<-WO{jNRzI;?0H@=qzf{+8*B~hb^TQ z?ZM}zU!rBz9r#o^cnI|h@uH^o7Qy#C4Hye9 z$Lu=LE#5_C8eyke1|M|P=T^FdGm%Y{R70&%@^s-JKqUk9Vs2O=tzwfB@d5SvClUj{_yYj8+Z*@r zdg<&^KqgnGGNkDQ00Dp;A_FR19mkUA1$;83Z>L5<+wRniKASL@7~(~8B5;}FO1s-6{ti{F0-9$pOnO)s%za z;QzVxnwghs0~sI2U4TeVYxL_VMLxtMHG9m5JVu)uCrk5c!W;CPiAf@QXahi2{R0t2 zWg7vFUqzR2O;>m8+8>}bzo1ka6_0~I(20(352J$xdM3uU)zIA)@nrQl+D#O&qR?#D zacIdsFyJyz!JRsUHs#gS1MN?;nR(u$h-F9Cgz<4k3>tY~FdIB|tfm8hXEL`YvJjqo zKceQ-mM?iB?wiapn;9~nT5$H?A+YNf0x z9*s~z`A7zEcl7@ibfmWSWC|Tdw(?KqE^S7}m!tmH<)rCq(WR>s^%}STj5AM4=XsB) zRlEJOSAinkvl3SSMTvlN7Hx3dBH%lRhYpt%3^e>=5cJaRZW_-jdkW5hFFa8eS|cA} z)g?z_jEBK}g_zEr2`yFG^VRuwaClt9Ixiny!+nZTF1`aiB2Tz%3OU{h08IIk{%z*z zW+g04F!EttAgrEWo;Zp3R#BmwhU!YfY}>mseC?5P26K7X747PnXyzCIse?oRlT-n3 z9)fn03(a;8%f`PL<2}aTtSX2|40rafFH3I6(lvnkk=wsIT&TQ}YOBRwsR=K=N(}kk zghcb`T8DSgbxbg;upa4z)0BBbM3j38yb_YKt#VutkFI? z5iSt@u8vUMbE>il*RZXE>RI)Jv;)`C!1k{cjy#T-%c7b2X%r10Iew4E&_RnTQ=-Pb z()!OgDsf>i|39(EorY8|6??k+@(MMb8B!ZJrH55kuxj>Dy8q!iPwpA0ZHRbeW=Rmg z78$6_T2xi+HTaB`ufj zr%2MVDv`7m=^g%l0+$9T=;_X=4Us&(;)x>ct4iDnGyG(nc`2sG2Hr2BwR%a3j+x9v z_;)f;Yg$P!rsL}N(YFYZJFJw~plD_k>W=I_5IgHwiQ_bQ=^`lXSJxf0=1QPE5Iib{ zY&A{!%`Tfs-%|Bu{zli>f0N_66J>ea0G)o->m9f|`IEQpX9FjyY-s^Wz6VU9CU`$!XFm{x%;&FM7;l`ND!#I_d;|BJ!FyuS%{;S&wP|m?I z?to7I{y?fP&++$#^iUM(2VPMw3*6|!JXG~ zDDJ{VBuOt25G)1z%CywUwMe`h)*U!TlB~ESE&VPg_b%|sS)67hLFelx| zK=ZciDL0&=y=j9gq^U#SszO^0SsLFdsM-KzE)FLOW5vUVsYYjuvaH2z-**rh;8mwA#c}vNEpY#j??FA5_Sy*JvJiKtjeB zwttIoJO+1qJb<)7U#GJ=mD4p!Q7dXbQa%m@!1T@&S#Vmz{+h>W=%2>|Qr4lb`5oXQ5NuerNk6H51F=5+7$&aAV4Ra{;jooL&a%Sr$+LRp&MFYEcjQE3#g;h$p7uq!_7I zIwr~^te;HWzRzxU^APLTRtIH}Quo_->AFBE1BATDy%oWhe;Rgf8@6n$GJQ!KAFF1%;nDRIAl2vlxm2pzPc7{fH zmzXhFA;BF|`D2~`)Uow%UCEClU)zcKQM+M2ympurXC)I;6in{$P9l~*SW?Ral|_ee z3~{a;u<#D&h_+Y%0!8q)ISY{oM)jdp6N4Ll6J`Js35=o25I{C|T(wAw$mm)`L9G=u zP#?GcULR*;T#8{yWj;i1UZy3HRN@05P7rBlnow}2^J1G&7yJu7MZ-e&N+uu=1R;AR zViT2s$J4J)V{h#Zekbty8>+In0N?K89&U%*p0r4Z%pbOa8#s9(p2|6cJ+mKL``1_H z>#)}zcz=BRG|5B=L@a*^exDnM&;s@Lha6KCq^sGsM0R@zgPOH)wxONxw$Z#I!AQl= zZHH``!>+GQ_=}WwdvyTnU0bzlI~kxr7bl7MIz@zCV_qY}Xa3EAf^ph4TXBZ94FkIk3G1pgdqJh~9Ivfdfkwks_h$vxoFB9I%++npllGNAH z)>-_rVO4i@`@=vrL@KgNPz zW^C-4Qwex5PP3}IByxvPoGX~`L8;29*Lb%I0r4`ehebFx^+r(it~6_riw08|wLa~n zXhDZ-8W?W`WQvot(EKp=6aZo&dHmX&vm3%7I?-~7^Sjl_#SRtR?dxcZ;FoFMo!py^ zw}`U{N+?3UiXrZwL~x|*%6b^}P@c}$%P3T&BD+kPxF5Wbl>ZYlew`^Em-mzL+|>m^ zjA7GB3GYn%DycWHoOlp8c@=<#40diA@n?aiC5i+C;)T-%m=FUA2P-0p3>O~2>psQh zn6n@z!Ch#s;~Ka8P<=>C!_8Ow0b3t)iLZ3f4|61iix&H3L2%;C?o?{{xET>DTDhxf zw+~OF>4CoWlZ&ZuN!| zvHLiYOLM?9rrMi%LX!Le;lLsc+13K~)pr%d6umpR`!uJ>m;URK(me%?)XHo}i`{qZ;0!G! z)xY7;&Xf?=QkH{EKM6r_BjV|AFkq@_TZxZK#B9lw@6Xgm|FI-w1O()~+fB9FO+hrM zZ!e;m6E*pD9SuSgjP%%VI&*8tgIn=!Jr0k0V&$ZoMm%vQ#XjYM%vmSQ4EPpv%$rf)S|gzilZ{# zO=&2@Y9m5 zKO!wUIuqgvL-#cd{VI%>vSs(dmm*BW!FmYANcMSh{~XP+L4+LMeL>8$66`PUM)$uw zd(2WO^6w|hw5O%@daj!o)--Bp#S#u2ZoqPXpgPS@2HxT!c{=Vi zKBuCuC+NEp$9d(AXaisA$ty=6zF=|a294?K>iXb&5K_F4eSYNM3s%=XUxp1J*jmPN zjYN0oUM%4<+c70Kp9pA5L4gaOCfhj+J8$XQwe;7i2#%Q%u3vbe?|%pZ^CRaq%RPt! z=sB8MYAP3h@}$81AtR*!_e^0(uZHr) zK5L(b*W`xxx$n}?G%QIpmsUhMdtue>UJzBvwoXFQq9nc&oeUNL9=kxPs+|P-bQ$)` z9@rC+qT*D6u1Mq5>6vuvBP|{_HqB$1cmbl%&P<{~6r)#Fs>HOSSiQr;#BY=g6_9zu zTOMT+0pFblub&qWVYBb-@-8`TQMdg|gAQSaiBw^2wsg|JvpQ8gi6>>S=@5PxLyO#e z&6n|q9oz)pbD)Cl4h(OJE^iGCTgYs!xWm9=?@UdW=NN=|)-AsO*eDYaL1_n1aJpo5 zuN>3CHWhU<&&mR=0E1?st{7k=1WS>_|F>L)4m&?#s!jb?gBp_s&{dlZ8&pBNebs=> zv>oiGJ4NabNDy;*^#?N0ORSTQI8o{b@+lwoF!=@ISE<^$oHz5uLrZw&sNW*%9((8t za1knTHD@xh82fJIj)mnJ7^^+VtKignOB+a$cE^i`NSA1$je-C*rQ^97EN&Z|apjZklkjC6%YN(-M+p8rTk z54&Mv^nc2)N)z6rDzQ4-aNFji^KE>DC?7R-N*=6G?cRi z=b}VaR{mARmz*7$;LH-C3ntj9^r$Nf-cr(A_R=j1o;Y^@duCG=f$8a<<$wcE9>@G zOl?4D7{tVcRs&0VsfGp@>zY5cw(tOihX8!8RG45O`~2NJOyLAlK{ZI7J&C~>Ds0wr zWWb1_hB73@{!>HiyUkQ~mACYGAXtph>|XFd4+azU3M8*Da^{ixAN@dP@cV5DAE?=c z%NXFw&_Wwx9o*6i*n=!HL@U+lPVqgF9%xi|&l=Uz(e1cTE*KXS?2Mn%aJ$CKBZg{Q z>9w}0)#mk?9qR+|DKs~iFN3aMLvI(tL&T(Z1={qqlw2QNk z{ab>za>Lh*K@Qxc%UFe=E&b_`Oq9Hb5Y$^KW(kBg!o5(bC;EKHn2=0Mw!6_uj6%Ll z7enEKCH3yaWfJ99rlLcv;f(wu6a{l^PMxXt^QF}dV*b5ClI7)F+Qw5NbIe2MPM678 zb1>kZ>A1USU-bs`V-)#ScYb+*R{SH?UQFaR-xzzZ!YJcui)o&=UBF~hU+%knGr}_} zC{T8;2dVUY8xy(rV@{A9Qb(Yw7u~g1r${6j>))(mgnI?J_Y{;!Ou{i<_yp!Khc)v_fL?V4 z!}lk#lg(oOXTZ!)X!L9@7QB0>we-6a!r>Mn-L=Ekz=)r~DrjxPX(YgP&dL1PJEbM06u9dQWrKnY&06w9Gc>2O!E2K!F6` zdBWYhps$)e7v<)r3g+6)p1{qwKY<|YjMJxFvSRVE~LicHZe)K-Q1`Iys$um1KK zRVwkqdWTWiM`Y|8OG!M2%r7D`L#^3}3t<`3VoO|RaHj3%!Vk-yL<7k>oR6{q3y)&LZ z?0FqB4%=`q^nft(*yme{^svkq}ppx|nB34}NYGXsd6h{r#%W*I#Ig0ISUKdAGajdh$=E3CN%yX%GsG8Ij4!ZV^ z5-6s6$Y6?y?{0oi*ZYNaM|7ExTIZi$<=`s3v{r7L*eZ4GScM)T`wG9we>ku%+7h9r z@(HxJe_nGmA`BNtp}V@bpS?8N6yw>QDm+hGK+92UF1 z{$AMb`+zOVD-$#47X0mPhSA)ei4t)VjWDE zH)i!e?yw?A8c`DW#ZL=v_Ck7;(yZnAi$c(eEmhGzu5k)zqglGEYB;La>pG2v1(B3@ z348e_?gB9l$NFCkn8K7q_yc1ZIQP!!1VBPWy}fF?>EGOg%Ob)Wo0&0cXSEkA6FA5z zRY63(b}IlaW6Ts{{Uy^435wWOB}SZIp%3=f%p&cjmU!!JS;M;Ilm6m}t;~yDW!X~A z9b(>w9QszjT!=DXlhWmeOCR_ippH#~Jt%zZqXC z>>!$TRXZW=#oy6?_=BUFmiYfc9S?hD8nhBeHV=Q-4Jo&ZSV;|{N68K25NZC=@v+=` zut}($T_jdTDE1qJy4%5uxp_w@5Zp6hYY`!O3j zW7XPIIM3LU?9<~GE^4u~W4B}G{f8UMUx%=bLcM+i0Zg3Q`?1;^{C?V9*}PSLXBaWu zW(3EA51B#h{bPo=I|8UERE<({+d!bdLwgoJJYn>Hs|OG7+oi}`a78xCB=Xpz-lewV zoz9q8-6nJ#21tPV1oxxr9dbPUQFJK&$XyDrgcXDfq*=H@oXDAbbQeb-(=vWNE1)KM z(y(0R8~IZr4_OAkJ^{%5<9_vD3nW+4hDR4-KSG|2H?|l|MY6u2@p=1_lr4sEQGVgM zJyajruP@wldy8#0AvV$;6`{=-?K*=Ox9sQf1EeW9@mk1{mO?L)ogoEDausJ-EQED^ zrSC6JWMz`4&ao3()K{KcooK%nwE)|63HjqhDwn@6047d0B=a;SB%hBjKfxbC=%b~F z7q?l@r)+*`Vy}szH4&PXrc6>AUF|mG4uem+-rQ|r6@F)*CKZ824VyE4>sxfdG!u&M znMK~hPb0o?0<%jnw_YQK-6cdv9XZ_E5m<=(^aGalF&PYTj zXVV!sRZ7-UaGphdD@BX~>;#a=gOhn>Ff1QcN|Z3wc7DA%tj&XF8s^uXCWV;Obw+&iExKd4fk zPUByxeWRR~!+v{3--8hraD3goVf?ujqCFUky$@sj>c>L`6nSGNU41}ALcuS8K$> z;iv+ezH@^QFI1v8ZF5(Oh#=o8-_4+rEhu9cXY_yV7J0*{tK1_`jn&%t=);$&Ft#6+ zw8e7`(K)`MoT6d4M-(8Pw^+lo!m>n&>FM_`R^I^h-G`R%`H(;ESm2M#0wZk4BmQm6 zq#~*i3lB?`CG?dKh;&|bEYD2$Hc3b=S*p6q?Rg+<{5`P3RD32dR4(#H6zpBU(-kio z%+y=xKKoaE&V9|U@HFBc|ht~tftZlI>fmpbYtyZSJxHcnhWs;pXIV5u71ctEqrWdbXPC{{s zhsbRgPq+Gby+z$I7a+-oCOF6mvt|COV{LMej;+KHy4S3(_77?x#rOvVdY93`BITXM z5zNkXG|*iMRKgHJPR?B5)0~>IlQ*LxYGzx!F+n_>9JDl6w1fjM-K`Oo^DA!1h2X$B z6`bvUxCz#hG_N@mjoCv!SZiruvMhxw30(bXzFfD@jP1+mY0bX_4u)MgP~JSKg^|f4 zVreeRvgC@%QrBzEii~sGMft;lt`0gHp>`{UF?)`c2LVG9ZZnWQ3da>xP7%HFM1MCj2B<>1iz$ZS{34rHF~*L} z?`onuCG6&s0#Zc38Pr=LF|M>6o2;?UIBz+crBtyjVNbS=A%Q-q>DB|R&;^aL1mKnO zM1>SrAJ9AXAZmvAOTdDKQbW{7+x6YCY^?}}KtV*3EnGhj4~${!?Gz6GGyDcu01iE+ z)>Zi{W&mobfAbThyE`?{3?nUMNB|CduGA1b3sftFK?F7dG0IvhK?lfN>>~*|q4gIn z^0Uj6B(@A+4b}OEXtkcD=dQFM(ZD#j>w*TXDlnlv*56o^RBy0Q3R@BP#WWU5F?YH1 zK^MKv%Y!`nhyW9z9|QG7APvHWP#l!54@1-;fV*z55OamGaMImZLa06K&iFD!j>9Mm zeWJV&&9Q!T2HWZ(ak(IYb8<9%cJOSEidMsQOvs*bZbgy+8A8%sJfr>3k?4C!I}#Bb zKk*#(w{K4N3kn>jkGLj&=xex*gu2aDS3%3XrEC_`n>oDfDJpolb+};A{6&ZpOg^J& z%h7vDZB%2EfT4(Sbd6LYJh!N%PM0+I5^A`BY@c|Fqr7&jW0)ZkGXb$HwTpsB6+ywj#1{<7ztQ(n{+QE?2|#7S#!yoNK=` zg1YhKo7;Fpg*u43$l$_`(1A+3$r4ORt+Nq8HTuS6MZuoN-S?$Tn(G*aUrMsB0e1qK zLk?;ViPDS%G^tX@+rbAEjhgVDdLc(QKBOO3Rf$<^2CM+hX~IIkF;|gAIZq;P3~-wn zw6b0S#v=`wpMEIv^hdNq&MpX>yzWC0nixjdlCuMM=E*7(8S&Y1llde2-&z72!iLYM z0`XXSwcY1ny`C;A0<_~hRBlaSxM3cuwoi3qu@cEd_eAl{LaoVO>iUH7jZsuBYGJs= z0$=;l!O?|JC71Ubj>&J1m@wa%Zh?@aEq&q}eAP)>=FWbg2#Nt4g> zoJQ|2w#=mKOTW8`x1*Aua#gY4P_cGv^rfRHVPO#y1}!3xvEc4qqqoz1Sm%^j+cM6d z=#n!*fW82)aI^;em%651RR6&ZTme@iuc42Hby#7O`6{e91)3VKywdgoAki4rN<@l; zoFb%rV3OdQ22Ifr-yo^Blvou~tOWDS6GQq;<6>}9+$u>##^~1p{e#t0!+{i(gniKG z8`h%bH#v?Snq69BHgib)E~|2cS!7X9`8BL{j>Y3hU3rCkRfQCt8%%l>>1B z@u4MT3t}ILq3tcey>lF^^Gxs3c$26G4ru_l-r2-C9whDrra1(9%r2m|qQCw11yV*W zx{O%|udkX_K0i{F9qAMpeEyN_#e0C$agpzyGxc?RzRKf~2NL&q*3sd;W?qjxkg$Yn zbm?|4CY8_kpI)VGGVZ|0i0(F32H{9Vi31-v4YT~_0O;R$aG_*)QNcj58G07@0Ssb; zvmwq2%`1fbiw7h!FpvWPpTU*Rgvul%>me#{|H!xerj);um(%RUDDLa*pV2fwLnPyA zLtzQQi-Fje$m)oQq=rbM)^sMLdvD-d&iEEylN7mKQP%-WY&9NIDNWF zn3a=&X?;#3MgbE`0aB>@l<#1cJr!kGHp-c$`LR~`9xM08vSa9Gvc=Y}ifc0r{H({@ z7A!gu)9+-B-lsCVd*=}(OD6q(qXSm7I0d~w)?^_iWj5TApiK>-iP{RI-wp}onzH(% zL`Qwp{gf0b8Vk^DKK|b%R$UsygNLsHJ~0wq#&a%~TGA%&Oc8P*HFy}Kr_e(lvnP<1 zXbFZwGQh5;C&3)l0z!ChqCqfs5DTE~&)o|lrQv;0H?|az_tK$ZJ)gpA)kCR#gbpZj zpRGd`GW~RY>4ng$X8^_k2!id}i-zJuS}$h8|2Rj%OVV^XsAdmwHsz;@4jy$T)#vUJ zCxdQwJ>51dG{xDMS>iA%zj)7dzM(uox0(g7WKm=v87(2b{H(#eff`kAAyY9=c3Zy8 zI+kRGZMzUq;OS{}HtDjzuO)>47M_sR36nbRIho`VHHk->qG>cs3`&x9+(U zOM=ci3g%y0bP$mLK&53-?&i7|mDEdqfwWI53M=rZLIYFq2X_`POZw%wD76b{)l56Y za=YL{NM`@K-oDB~_ia;>q_2b@mhs=bFV`!qXIiFr;~=IPGJH1s`?*0BjAZfzz%)r3 zn@lE>3CUDbft+hQA+`?sXm|Sl-67@+m}1pGTFRxCtjLxg-}$he>{s(aiD?!r0fn92 zv`aE&T|Z=4mJc{mJ)mfRiBK&_JIaSM78*lT=+Ou;>>ZON5X!5O|22V8=rL?MTYa5+ zbhIvv^g|k6cr0B>A#Mx1mP2E5!R&#$>&M13v52x0lyRUXF}dH+`>|0bpi*)NdBUSO z3;jXE1Mz4@W}`g;p9lar&+TpxjXraqLk)VD?9g^cg3>3z3R*~Dr1Cxy)9%E$(zz)b zrL*uLTH40VT!1G-OYV`h8Ec2%ZKK|RVHO)^Q#XDOoe7q;-iBjyC)5VTS@7eYWVw14 z|L4wo0FJI5k}-ofYy4K0t;u|YPagvNOC(A-NvLQziPE0l^fGTGZttX{04_9}ODX^B z8)(I^g}S$63FhsKr-zb5PD$pONtN8QF(~z=JiReD;=On5&vyVZP?<{&tdzAh$8`{? z;4X>5IWj3Pwbslbm4i##j8_G+zao}dnyV||3S&%0URNs1qf*4dVXMiXXOiz8dvJ?% zDNZABo5}cq*)}+9x^QJI(#YJaJG-2&qDKUdNQiV&=diV9!SNOXkb>2ISa+mx$i%{b zVq?d&8038}KLnzG0uPrEs>HN?*7@(2CY_#jp!nY$y52lG|HqM&t$Gu`W-}Zl!?bpe zm&*#oktaqm{lg38yvpIr^C)jmBMF{==E}200AxU$zjQa;AR*zE`!V^@S)sw}l-M;u z^jnEz#2NJzIO$E@v;?@%YUN^oLWx~y@Bt=rL}L5GskS6?LG$!vQCu9FufBpmxE>A# z?rRCH*-oK>0~#+5MPAI|SAf)+GpQ24u8mo&3CVR|urR7|yeM@IK$T}`=wCiH@}JYb z%#I9jjzh%ZR9eH_bm-N0+<4TJ=ffnGn{&vAB((a_JjaK!(6 zqnJ>OIBaT&rbU^Q$X(Qj250P*xD3TbV$C{bjspB;9@b?P7N~4Pi%w@ety^UJIb1c? zHXud0f2X1!+e;Lsel3v^k^_sph;wFN_c`Wou9ha2RRVqeOfsA;p#M%w;-j{F-S5z5 z`!3b305tUI94mz?i2g6wcZw&i>2eRQkUBwB>yj?8=(c*)bFCT_h7no*d{uY55X^T7 zxo!S=lQVIeie1#p6clCi+h|LlpKs(|8^$f?{IT0smqTfcUS0f)&Fq3^@X|X0!~p)O2YaK(*b%a<*+~>%PbOXXM#dSmDK{Z zRJdLrIu4`6Wa=I!(lRcV4`l6(AZ+9KI2RS_Uf5L6m5lbpN;n050~qJzEEtp2OVrtjM#8Vc-Y514+>)Z0N^nn!0v=vy&Up65Mmyt87LugZQsD zkH0H?5Kc|dC2Jtc7!VhdGEs zx^@qeeuxJR?P9ML<5w^mF2Rtn)Ena`57n}-Hec(nrteKiL{{15=M)W0S;+o--qdF| z%`HSEI9sMts|=a-9;2Ep!bcVO_kgoK<_*K)x+W)(#sJ}7O4AF!Vm7?3+!Su>%mbCRI$7*IDa=rCoHalD z$)set{R~=v~tm*w&rj^@tIDf%N z#lcXkz^e_h&YXQq{=Z~_Btk5Opb0l2cr8uEP7<3wA;Si?ddpJRGrjN1*Crq*aVQpH znUJ+0Zh+*i$=9<&1PuZ*jo6J4)F=2ZqNU|jR}D{iw3Z@h zYgElrXv&iN(=1c8Wo8_7VSMBaGkQIw&TAqanf?uF6xz%_qWAF7BRY2zilMSi7yLgm zq}g<)WqkIBp?zpB0ucFEHu!&t7L;tDM}#aVt3t>>4@r6}@(|S~+U7-2X!^3N2NDSw zZR+eaaB<`LE^KQzY;Hl7`{xUUYt)@}=_-bb{13m_@2qq;Y)$XujE0QL>-bH?Ghwv3 z&zvXWKLS8j`#n){ydYGRj4!7=JOi&-l%s~Ka07MvonAp+L&qRA+nqqMG4n}hm$QFm zxrVu*_o?zJ;e637RlmI92xFapnv*;BR@s+iajwDmzs)<-;QY`StuRmhP$>L$L>p&b z{Ac>7XG;z^tY4rzjDEa_Ty0VVH65XV_$DRBJX_NtSrrEP0S0Myvr3;fbz0y~t)$EZdG=ddlF1_* zSWPGFg1^{9NA*a6(@6|C3J7@8K;*sT9To5U_pD5Y0;2i4jA>Tk@T+Z*jrGC>g?} z+-xOShFHebtZbPyZA-%!-kWZCNEyiY5@~P5$Mnk`UHg-*_i<3^*fldEbt6`7b^#v8 zJdjvWspMRmsDt)Y6IIu~5Vr0f62S^|lRd}mLNyuAgiSTLPz+l|M_mQq(a&*r61s|{ zZ$QXsNGOE8csl+sbNN#KTBQ}Y+a~>jOF>no2l)a6eJj&UQugEL2wEJqUwTspRYnk0 zl@x8ihsbsv;<>vMDrfMArXnTAcb&z0!?t!ZyIRFD25DNy3cx7N9y|H(ScJTA04N1C zn;G*#JMo!_B5>9Ihccqs6y_lv`$XTIoVl3q&{Z42GtKHUq{?v(MWfJP7H+lx5PUf} zB;E!4LTaHLTXUrNrgA3}*Ha(jKIpFc9yv_VAf3IaAf6YveB*|Z`Xc6>$~o~^6?uDO z+hS+@ZOcag%nE?}bTXnltY7PXNMX(Y9avwCJ$2iY{!e;V@fmIfYDB5wOefscfA*c> zhEz2`9x&Q1uwyx+zLzK&lKOT6FY@kp1jWBzjo$MW0{Xju#PziLBT?Y%;$7u3CsfAjI#f;*WYc#42w`8WjzD=WlHzC-J59) zqoVD-U-SrA|3Ks`s^M@(+6t|kV_x?~i&A6EA%;~dLx_ESkxZ8WUAd;2( z+-Tj>P#BPEs$c{@DI4Ryy7OTUq9%)|TjY;%%@-rk;D2PASe6g> zkTt=wtmT(=n_oy!Vd23qVueEa_W`kr1ueBw1L2k0Qd?#PS6&$DDO) zP|XAeS7-=9J>>^}vi&9Ma*onV%=*SHKX09KCEbs-TeAe_4}B({a{CKv;*;$qzmjgu z&TOYWZm&LpgCf~7$xFw~lAvtk{9f)}h(0~$WClGS6vdfaUcml@6c~l_7e}dQN|V<# z@bv}8&Ymv|;ey2*JB4X-X2t~BYe^;<-A$o#qMhd-Y_m556^EWI2xlKaiJ(IamKA>eqU&2?}%OVsC zZTFUwq{5oPB=72UO;*JTAb3o5d>EWhW)3`qyt6uR_(jm;S!2}qUDOyqaZ;LUHl4(# zMV0)w9Q{LBGWxKC8$};CV0p+_Dcqd{>(MZmlK|E@kA z!uax#1;XIbQ#;S)kfAFyNZC~`|2sH(jMa24e&N)baBd0(ik zJ`qFDF(dD_BFho%^n%1^)PH^ih(-19e}Upf0318n1w%vDQ~}Op`jLwC#>0q#SDs@U z2ddaU9_ApAO_1=>(RWuG4!NC^MeEFM{}f|ryxRMcn=nXsRU+M$rUJzh7eI~m;DYC4 zN`^{UFYtGuf^kf4cHE0<7UhOL6POC3l#&%$Q5GmZlcBmv9o_qq7I>%Z1jT;G_JyVxQ>W zZhT+_*yA0h2U863UT;B3URRsp`UyAh&bCa&m@$$Qmt$e$a>WZmj%R=mc4J)>PNMEIQuXCHc`PJWIMq@$vPiGiAq*1(`Et1{sQ8{cj z8qwFKV?+VMbtyZw2S+9R?WXawsxC36LMqb(UC;XG;M8>tftRX9Y|Wa~E}GJ!r#uYH zAbAu0WHEkNvPsWt{6ng+5`(G3B&5+1!|8q=TeCgw9LmaZrDPOgK(xeL5nc&ao`06R zRD|R}^lQlas2OJ|*A{o!N(J0Y;XlSr=hCvmP+< zwqJ8q>^_=}Nm=ubR}>Vz|2d4|!%+rULPS5SyC}E*7!wn4r=Z_uF?88GL!IZa-n|v@u;{{@(Zg;M-*z0=(?nL8v>DyzS zH*ZNJ2s(dEvDM$XI^S!Ydg^;JMNL}c`kC$3tcYT{vo6VY6_Z`P4=!7CBm^E1G_ZP& zRObM;usZqs5V+}L+*?-O-nyskKUVQj5GT@X9t}m}JD!>QL$jfH0>@|2N;VZ+TVn?$ zY&`l5zE^aZneTjVhH>^F#@e4A8Qc0&j=+U}5nyW*ig@QBGbdSqwOUG1uR-`wFrcu) z`%ulTcI`@p9=|9Pr{{~SRGyBikmp;0>1pf*^g@`wKW1TM8W_3?kq(c);euCOot(OW zoyt@D9N|_#m$vKmE{aj^dm{_i_Xeb@YaTH$1o8A{KEWT+#yo+F+X;%m=kp|RbV-~4 z6zy=vF7+45f$Z|T`+S1m?{u1+R5{2QYJ(Q+&(L$J7=FiXoA-wW6t3EjVgkhl&u*21 z0GXYSg&z&csFLzk6zh(t;PvjqwD(wfQcZgzbsl_0EjZi*EhET)|(Oz9rm7a&Lp8KK5jG`+!=*}%O6Y@Whh6#dPn2AdH2CwbRS;EM{NxOH9tj*HAij_T&eyeCm<^Bz|D zn9bjt@@0ipbZ;=qROd3>O)_+J%`M4{)zk_-BHco3g8_cQULt^uq6e8-?un~SfvdbB zhprFsF;|L03`I5LcspYjcKoZK8Jpm(^ec2$wFm?W+7bgdK(XzlJ>)c_(|WndbXE!Q z-siP}N7>i$h^bb~X~{AzI$`e34>Xl+dK8C~iFdBDh(O2R7$HlVuLlh?^OsGsq%ak> z(k1kF3GwtBBH0|fRC)Z+;WYJ%D(-EmHnyJEA)QSbWw(;{tJyF^&lv%%;wK{2As?!E zAcDEcGHN0{(H;LvMukgGovzzrj~Nss2nJv%)xFMk9me;iL{muS^Hgm93?$PywKQIZ zXI9srU;gH>i{SMHDF8PB>czpnR53nOI?IUL$$3tW^YCNK6RxWu0q^_LsdXCts&oI_ z?ec1BZe0!!+kkAH2zdh4McK9%7|^eXkA%hNIh4NK5=K;+)kpB~3+%TKg0HR zLkQohIntkx61UgP)(>RRco(N8%SQMlw}PjjZ|l1y%gJ48zApGB-e|)pZn_?TSs?*U z)6!|57NBjZ8b+!c2!Kih>OviJhWllXsmyNOt>@S7Eep6x_kv@K_9~zg@|kx8orBbl zYPgWIX>b`EhLBsg&o$qzdx<|TdWXPue^_5rX(Kdyz_-@n&N84jHzA80wxn_qA(6+4 zXAYIIW7b+hvSe(Jj?7*7yxVQ)rc_HI=-Q)5L3i8+Y%G={Y5cT{tYf262V=!}3~av- zP2o9Y`*x5kU)XJ$CmUlujG+%BMGzDm7|j8|ETR z!YE${Q>Br=e#*JdpDP_EyJ#Wt8dNVxpCSpd-BS4>5wVSCaf%PN@o_0w!MG6Iu`LlJ zJS&p>13nKXyrJ^dRn*Y1>c5zgEA3ws(waJsjjl!ulbl2qZpx=wtxBv#wNEtSjY=s= zF{7RW&-4e)>~3Ncu`|TWTwzIomcD!LVyMK=yg@7@A--{=cKK6-MXwei(%Nm&T)F4? zV0&qxudKi?g-IVx$e6?nVD-J};o=Cxe!Qnjr|l?a43xP-0JO}`2N;+C|JQsc|M|&k z2f5#w-CcGxHu_r{^c23_>bv4yUaGalp-8mr%$99H5gK+13MLrGacuYN{ZdKmj_$%_ zeNav}LX}`0C%>|x3czx3O9p5rr5TI4Dsw}ng0LP;1fAz&=!(tkD1tN(vH&X2x3xZc zKaR+pW*=T55?($RPgKRTNg&kAgMxur!O!_24B=U*5MhvqB(5+!A+}^$S{fBJIa)v> zKidy4z%>B0viiicl)#8DQbF9lG2t~l%GG;4@s}tWBs`~!E!E>;b;mc2!h3qsYPTT4 ze05HD?#ayG_Fm%)CPkW+`BPG3Qx-=D;=;j)JUh=9*9K79NQ}TO&K!B0(@2%ybiCw% zD0RmxiePuNQ_jsX(9`Nc2xC_P>FaF zLACu}`BfHLWu{$^%ZYC5z z?N$ceUYvd(eC~u$IZ?7Uc)vFGf!@T$;-I`oy@3UHG%I@OcNhK>N65e+|J`k-Rz?2g z09vVpGZg?QALbi(mxz@l@VjuB8nZg($>g>`Ii+Ib&FF2@6jxHxr-e_{j=zn3(xzpz z-t$@X`B7#zsk(LQGZ~BRhkZ)ZLBmRQG%aDLR<_L>5r>ZCsq-E32+Gl6`NzVF2rSu4w5EB=%rTwdrr%G^4Tt}U8!-xcQNA;s&#@lghq33_F_1J* zIn_qTfVdQ;X+slVM+$H=T~m#cM6?thl=3ctwh2o7;q@xw4a_9Z5)b09(vDC+%g7Wv zOR;u)3D6KMUQ`Px-k9pfI!gnV;$wj=Euh5&);_ftp1HKHy3CDc5T-ydS0yV!`}*By zX0Hiiu$F{n7!|SvLed9og2f}}mWu>ty)Y3JA1d{Z{>Z^3Q-FXBl)s6=xk@li`q^zV zfy$yMy@X@XCI#xnAA&#Y6v1N748iNHl45`Y%u1%ZH`**6&xVqzYk+l;8nfiDs_aLL z0Dl5qT`|NP3+PAz;y{YG5vR}OKFn@JN_b=|F(J{t8-prEJG%tSlG)pNi@s){`7Ycq z($evq!d7%wqF#S>m` zdKEgFUhGfzQI;XmPXkxt9eUL9!znIhi>j*=>>HaU^?kNb{PO{EvhXD&$?lJ3JJZhs zga*CtWWV~OTd|&eARI+5S)X;0how~LTX;-@7TXpN9-8Jol64xxK>jM8L(rvnSDY{61+TyG6YE;(Wo_$3t{b_lU?S%qAfV4f8C; z_q)(HyWKqfQ0J7Y5X4yB!r#N@!Pd7HOL3ksO8m*M%~`0HGz$GQ9GpY2KsXoI8*Jhh ztPv3Q77rkpi3>fo`am-`HQ(YJDPpezj(ZtsshM{ZmxAtK1)kc}<~t5U>yxm@I>ws}duRsE2z~7# z1HQPh!n|VE>#P+A^gS6-eHrGFwWjz=d>j1)g!W*hFl{69VEWVk|FSAr1VOWbw8g!e zdPb>>RQ=9*&DiaR$+>oQZ=6=bX~30XS*(4FNn0|4yH#Z(VpP3S+&6KSSNIOWiR6f1 z#dk6t(i%AO%I3gXOZ2;!>V5LOdRTKp5qgQcB8Ue`4a-FcQFdggDm7=-cfYL&MT4~&cY3%q zFhY~?=R-(h;)rP5+`>fLJ2H1)Mi-0YW=HAo2bgIsqXYO;saxZS_M&p%!QduLr3@B& zky(7q7Ng{H9rhtmsboRd-)+iR$2;0y;He1G#rTT+ue-8>jS+LB(z(G4D#--h^J3Iy zI(hUGJMJo28LRuI{!$DQWLEOZB7VSo({J;s^^T4V{D?xs6+M40OAdeip77x_)ZjeX z&Y@_UB+i`o=GC|gXEmuSZsQEVFb}mRN=(vVP%*?okW2Nh=PZE{*ZKbbRoniXYqFk? zoih0;H9YypMjjR%x(72Mo8-uN8FNP+% z8hMKLwu0l4cEMSLw@joU^?(&jlY75Q%bk`jWvHE-?Jw$|rb`D9rNI(~rHMuB>ca(` zhM)~V*PlQ{qmLKXr({onf}AQF9N#4Pm#|2GO%&ZSt5g}SC!!M#eOPc8=l#Wc)#jZg zN$UUh^SE%|nDP_ayZ!71sqGyv7}_T%*v8%w+S*! zIP#X|B7sEVMAj+P2z|4ygOqViDHcYrDgS@UBVxW8oc^7p!pAhNU=jRcK?0ph-x#dx z)+_Gi9nwphy+2ZAgE2Yw7dWP#ODSpdswB6gOupvrXE8S`q6ym(TPODK6WzK_-sc_f zC$tu;m$OUyQ=s1|Et=GjI=-$8-4GDjor^aLt#7>;bM8PNGU-LCDK|n1p6=5f?|!cX z^@F|NCyI$pA(?GUzKK}?RKzRbn31FBF%cJo6LwDePz;O$pwqRIp%_19RDt%qsjM~Y zMeFMbuFFH|MR}6WqIC29#>OBhkpprKAIDE>aV4zpLb@x+SoG7<>mO3LOj|03lV|A0 zkkS}n8O~Zp(B&s$*!5AYX{)qr7ysZ|N7yJN(}kUh#usBku0(k=-(;eLMf$|GH!p`} z*Rvn{JMc7pNsJ)KqTiTR7Z>#1if|{|@GZ8I4IJR=`Nhg$3(&Aed+WbPiRw`m~QBWNk9^2H!p_Por9 z0NLV#`R%!Vp2hRl=8EnHC6lv!ys*3kXGdR<*t@Fa-k`*5{sE#TPcVqgJpbWMH}B95azJL|uy; zH>*hAWJ%^k9B)UhyUEYian&6%(=f%2vwV7ISrh{uxG`Pu=9VL2uI)?&Q?#hR1Aw*J z^T+x25e^E5B#8A2vc^78D72y5?QaarYdzo_)%6yU&Yl1)!P?~Rgb9JH4RysWhig6# z>W8Pjh|&=g5CXT-YxBIN*Mm^sl|?qFjdQcsfgiA^x1nRYdd#AvOfFjjbkSx?T(v+h zWi);qZc%84{6Dc+tfDIN7k}gacJS=>Z+U3h5+$b`l}L45uQzfvcgBuSN4NE&6)(72 zhq*I#d^OJ9hfB|aeN=F@cxZwGR|CiVRfEv{29zaGv=5G8qqq_AVpl^Bf%3KEMZT2h zKB%CHbpeJ7`cK6(?K&GeT)FCnhU`)>k9uK%qkqTvQHkNC^c{vuUUtrLVptn4b%Nj1L0Zkg#fcK(HG*UDv zKVAfoIb5cUHw^NDJr!TrQqIc~jwK8!-T2)FPn$fM3rRiBREVSchHJ~{e74Gck*`%N zz)-?1eG`UoJ_Wr3JY8IqmFIm%baE=BCzNG`KhAhL_=z+T9;i*=HiztHf;u;2Zutpp zB{lK%gPHONAM^p>fk*ELdblc+fV=fn3IXE=W1SJ0;2u2LQZhN3yBCAn`c}vaBC0mk z*sciBKsN>@AGo54aoED@NN014QC2>byKp&k2xatYuv|aR9aLuD3r9*2ze3XEfmt?16Blo6TEGS~tv_T{ z%&Wvm_N&1DwYM9%Sh}J&1Y8VU0R3N|fml`zv)szoMmnSe!!ZarHu(I1-K@QT6QQ#E z%y$@co#03CwmY5b!J7GIr+_9RccE-!N!Uxn8fgyl)}|GdNM~^37S;Up^(GBpgCri? z#jiobagbDEUv&3R>MldG7t*{#WF?z$i@Afa%FXee2%XL&B-rrtmrD`Xq0YvH8-2IA zkbY!F?~M$uJw+zy!Sg=!zrUGUtnI~@;eSf!-FZ2W3csgbTT(9@Hx2$~ztwh@;_E@) z99wOk%G_&ubCyDB!VO37YA$6;FzwzCCksan4IPok8%v>`O|YyWU-CELV~|erWxmH1 z_1;&!vI4I1E2I-D;DU< zWMmn}_HyB@z+?v<0Y2P$4XQjpnn7E2ki)lXe z*#T9C7A8CUr+;DUWc~W%`f-imlDHPK@6ckz>~_2e@ks*yA|C-j>wq-Yk&pDt9s~Xd+t%LF}g*QYLI069olh~(lFz_N)~P# z)FP`_N%dD1XpctPyV0}{lXaiAWIDqO0FS5bN?0E}6%+KX_Yca_5TF_AMv2Rs(yp8< zp;Bxzf@%2h(6ssBpax`h(U$2e%D*x+64~;e#6MNJsR78A<{hpjuvUUt0_Ue;@LOHt z9i2B&>tmg}?D`J8D8Yx?t^fe9ZtOCM(po{7Gw8Lpze~vmxIbpz^Ub2m4<{H`9gdzF z{vxJR0NeC37)SATIVDuVP3tWdLY}+;L=t( z@iWH5hzJRSV68+jD`G{mB;yLrL9+vm!@{Ur7X8X!CObNI>de!nH;V=0bRDnRgeo+IG^-jb~>!?-1&f^6GtLI)8x= z=FcXznh+~g1GF+e;~#i^OsBY`E;T8X-N`_P&K7*VP_v5;s)V$=`?ho*E(wECfCDtF zHu)9Q5&=Fi!n$6e1ep;I^;Y@W$w5Ta581kQj92}Q$BzvEOw7oF{xgVGkxm|?Sp^z| z1Fa!@%Vd#XJm8{A9m}w+rz34(lN(}am)k!m*iO+_5ckoiSE3j19C@OYIch3I{yexwZE~w|-p>^d#Nd+93K#V+q29N`y;`d{ z(2oGuGM+u;V2g$tNQHCG%0Sc=Ftk~iP5`Z}q7+a1ReJ_aIi42!9dUvB6sGObX2<(J ztegN6srj)dcvw1tH)H-h4goPi9#AZ6e)3TgIh^TV8JTtFW||BD0UOG_{;Xd$13}a4 z2rDk80pUF~7>9!@U)AP!d}waLykt^O$RU9>zl3-88;62ZWLoVJjggwq0$2C^bcZN2GolrzLj$yr8+ zZn#rRJbE7q3oM!WD6_2P#$I67%!>0>Z8RKXU)wV}J%AdeHP|fYD|`0QBGxp7fvUx6 z9O$--lXRtf2c4=T`{0zGdMFSU=SV>nVeZ}UM?o^C(D272i>{Z-autk~OgAO$fF(T3Rams3FE7w=~)C=4HzqRHN&MYkM!9-+rI* zR6gyjKMQ`2Y*h>Hg0-|DxTtV8*-H%<$9*HyE3eXxq1v%Yy#PFRR;*gxB(m*7KL~;~ z?xZJ*BoZC^xZB}g6kLn#(E6H#bynR%`yXaU_X0#4CmHCQ7kg_`r0gX*J)xG`VZ7B> zXqf8v(69`oq5Ut4yv3CkSi=kf^~B?uT+P(8P&AA9J3$D?ZfI;YL@pOAT_!eXtg_x) z$qXav#N-$+Z1$1z(h4e1Xjx;uQvjC5$hVC%yo{S{&jV~(T+mwM!2IAP-}NVg_I;r1 zazzb}0btewTt8#Crl^>d%bMGR@8G~;{+S-tx^A!doKv z*v`ByD$0_OOH|j>G>%m`<%1}`Ant$yt4H8#4u>Fmy34u`zs_^tLAUD_g=&|CP8jh1 zX$5RL0#I5;7}}=*mH-9&5$RpGLx?3Q@}EWZfIx)~d$NEE16#3Y!qo%TQbcYqZ*G5Yl=MA^>^=+SY*&WD4%4iDJ#(!vT3gvZ#{No$#t9EQ;X?wk`J+|d%G5Q~iMfCuSjSXc-JmVI3WliYvdi%p=)b=D z*v|Z8qakZtE+ur=-V8qJsm`r+24^Ch zD5!^8qvYwrK7dBt3md=$%q$A(VtfF(Yp~#kUs86H92a^9J2l!ejidI^;nQ=5e@wj4 z0f=5vO7-iL70kQWm_Tru#675xT~cdT6lQ?+I-f)EvO6*1Gy#KYe9d#5_ek6w6xjRb zaZz0&;m0&3dZi&_lTXTM?~w4lie{#&EbshRex2|{v3jRK1lYq-{i{L)BnK?1Z-^50 zBj^jbPA>GgvX)k-%W+i!t8O{CsDhaK)*aK6zIlH01^Ri+^f%-#{x)U;HB5q3S9+<9 zEuF}{&4c%1!1EbmLGg{1iLhWjvX%E)V%;c z0CX@+5JfAhO2E*_zoW}y$_JE1c`I!yxdDpZGmaL`f@m={7z|%fS`tJg$!YFs0TS+E{dFutf-3&tBPJTAV$ev7ONT zBe@m!1bP&M7rH(O5>hXUDZnVj$39s8d|6`F%#|-%4Q>D?AcBt%M;&ywh3bnvpo|2K zvpvFU^7k$`9}qCpz}esvztDqtpN`hE84@xc{nU%ps50nl=mnOQfK{f90z$*;A~^I+ z^fy;P*Z>i!4=(5U1h6qW&sfjOEBVs_XpQ!mP1r;uRN88vc?H zWM{iLVj=rNIf68Jy20PLR(47zVCp;{X~WhtTC&BrjdiS`5N)$vcJA{9-Me;WLre>A zoJ;?kQk)i z1W6OM2aMp|ahGeRtS`_rx}a@q*LPUG=u5?gC4_u)W1o>0ogE4B9@yHV^kAjqFFUK2 z6uZXY6DE6p{-GMIa@vZpd$ouLsp%|qOPOs`{3-Ghe!SP>O&EF0bC(Fn*E{oinJ-I( zkP8WC&{s(dHtGpWDe~}X2x3UKY?bx4-pchq)5!rAj9FLZcXI4HGk(dDVf^A2R6QOZ zVud;k3@M0l%85HeMpq7UB%PbE;fXW@p*;~h{1$vwC?8cRz35&Tb;#AJo^zz>xi@k0ry@aKt33L2ELtN(*GHAl8hY01pwoUqMa*Wxz1Uijdk<}&o=Mux@zle(B%I>ZrR=B%f;yCXrr2lzw&ECcuA=%b$WBO=JQNlZ#w8#i)v<9p9*^IR(OjYeS)6kYW-AoF-TvYp#R8~tU3(*u z$p{W4l_#;l^AGmNaxGGkvAjK$X#7`K)ro1uK7vCLbyyY|wO)U@0$Ch~t&_H*V_ZQ4 zmo=S27IssO^s*fmX_o-#$&JKM%t=C5CA#KM?NO@ySB40zZgzN?Y6%rsv(V*IB~le>A-&|M zD5g-(h}tfG_+}u*QCLiG?N9|Xs3O09nHeioi)cJw=&QQk3TTGl>ywT-=fhm>A=?%x zTApNnE_Kwlux0HwegdICk!yze*z(|n%%YFwb)qaTzO897UzTxY;8=!M{Tw_9VB+L1@`NMl2>G+F{t7N%f>*?z!I=2s*Dvlf-zI;KFjy&gd8i!LR!LgmVt z0Z0QLbi~oR4V=38TC@X0905!j4=M9X zl6f%%M~@~xrR?V78?inBM?Z@y0=i9^Q6X6;voMvxGp&Z!UtjcQ4*&rI;uMN44l$*oZ73)=C^K^7-lS_mmB8l;eHblgelr);|etXE>IR%JjI9dp{CH+=g4JgWB6kmEX%jN zv)OMPA-=gbgLhNr6i@w{=$`J23w*srz@YvSr7W16h+Br=N=D_^+OGyESm2H;D5!JK z7DusF05#g!qap9$OnUMo zmj&{QtaB-cSs_YMmI|Me9rnaB)87z!_~E)ah;nO0P}PWVEpRAseB+E*{>8=-(*}7M zC0+V<1v;G;puXLITYI=^jh3c9UUN{aixY({B}GqC$kS_C6{_)-4_?wB4s2tfR;OL& z*HE_J`-|%_ZU-%4^`yKu62`k(?_O?!s9jz46C8NRL8a(31yTS?DD8-aR4Ggs?M=p# zOomrSZAzRq#X5jRlo!N00BOr0uusK>v<`h2uF3T6VG%; zVY)`q?hvsGpx8}7p#%$zZJwzwn2f@FL{5kjv{HGSmHwrW%v6`mMqxf8CqxNaDLl=} z|5C_iDof@gFrN_A*b*~63Dw2RW0HnkF{i0yrIIQAb<(hqW^q*S9%u=o>`%Ld5TDN1HTk?gK zA7s3a ziDLMbRx)+QQvv&$W4R_r@If@A zd(81a7sUQ04dUTBbElu+g=-C6^CP?TI3yYBCSFXu_C}|A%&I^)5tLY0_Oo5Bffte5 zO)>`IVfV3UWRt`27cBVMSydw?l=QKAtTd|+g#bN}oe9xc-~K%weX~jI(GDUx%(}uj zs4(EuHvZ0WXHVvc>qB?rvg3=B_SE_!z_A&Q&m8+Rbg~-wnROGE)IKbnLp*u2zJsA z!Tu1xXEfJr#fnun7l!I+MmIg@V$>FmZ49Yt^9-kd>B+b7nal_Seg#9QMY+K*csEAm$ch6jqFOn=AcHwaLgi_^Rjh zEX*cQ+o?a+#3GQkk^o!cG;<2mbJAC0#W-Ek6Ov#pgJBo~s+_82UzM8Mxz-t7P6 z`u|VVKchFCC&+#2!)-VTUI>ELu7J3cF9tE2qxYo^viDAqQCxzW8C9H1bcZR0iF)4(m`EzV`O%w zRuhS&X3xp3E0#78&6;%p4X_hMFEFa`U!^(Dg zp1Wdp6v`eSW1vZheP)#WfyK>BqZ67vA6=7f{BGNb{GrT3)Hg;kCKi`|m(W<*H7G3V z(GrefIA&Zi`#H#%I1mvkr-7$S(oc0r;cqFi{G#?U%*`=-17a|b>ryfBb|gE7No~?3 zA$?e1Yw{XsFHTgS6qo^WQH|ICJUG+wK}5S;M}Im(7`kdlPnp?JmYDCGQ{+zBzAGj8 zu=zcfKXr~eKJ#|uE4nb*4ZBZyuOD*r9mM;B(E$lZfY_HF-}IPwLxQyV6ufpma5f-5 z{GAB9W17B$`12zGJ^jd1#brojj+s<7ocp`K0&9R&P>*JNaJuGb5W7g|Q zH&(kirOo&Qw{oGo{Rs;OPXK%!fPfJn_Tvh<5Fv|HSpkb=ji}^QE{dn2G5(aX?BWyk z&2ojNypLvdW_J(u02`@2eF{NAL;!)YcLG!^raNFKn4WPCBc89sMyVCN{S&|)X>(?O z6*gQ*k&wf|DL7}Q#{g2KV-6@jx_P5h@9W4;mwKUt3~yU)>^P;Ooo;a`3Tt$a6@Ei3 zbO2aV`TdpMRA=H=Rcxlvw&+NI!RL@KnBtE-b36uXOXGF!!{6%KtWj7Cx6*^ zumrOt__5yUMPpa&8`>6{g{^*V&l+6Ot{fIvBz#jB5~YXuyXjOhfsb#V(s?&O4y+D8 z$FeV*fy*KKPkhrwj`cdpDA#>atpg?so=v|WrXEGLIbh@kq`CUvJi){DA6*gLYFSmwaV%Vgpjbu4VMpDa>O!r%Nh~n6Bw3D= zPHJLU0n(3p-=iU}kcaZCU(vcBC7uoVMyVQa2|aH^Xd(t9C2o%nN{ApC+u)Y{tyRX7 zW=9$55W<5(_;jZlOuqVz?qf?&FVgYM>N!9V+8X>QD0HPXHH={a|D3Cc_s(*uIxLguSAka#uxkp zc1aJnRF;ICxyemSG*V_-rsF6Fj!O;bOS-L8S7W*hZestkBmxs;t2BX16cjIHI-#uF+UHl79GI+ln^^_IVdYF$aYrY_Rsa{K$upHd z1mME{ChGUMp$i{>`?=ftVJ<_0(_%$Aqcj8H9+=gz1A>8?6Lwo$26>9(f6{-^4fdUG zjUN-Hi1J=5@G;fqpO^TDiy`mP?17Iuj~()-2?JRK)^c}VsskJj*)#)3dbq&)beROH z|5E;6QEJNCRu^#V*Pgn&BOC3zYTzp4tNYcq39z{L#DCr0)o|}S*f{kK9p5s?$!ZBK zAfN&Fb<}zpL>{h>0YJwdC!1qot-iY+kw%Tw+`gN0xPurL)E&J_c+cxvHy zyIp;ty0=iWQ3ql$8o=do4l?HzV+e%RCl_Os3+5(dEU*Fmy`SkL=;x%oCRNQx2UJqR z2;38IGy^A~j`7fK0B;9plDsqL8678#<}siflRj0Xng1aGSVL<5t7SGO?W^}qrY=y6 z!lqUNXCvu&CUWYXXiDO7p|7x!DriS}xY>DOz=Pua zoJ3KiDu>A^4y4Yu<5GEYq~@dH9y_z|1tm7&g&-0#f$jfEhjuCaCw8`1^QL0SRNWmi z2j`q9Q1;->8|WgJP{X=w8BSXQV-x_$Ts|R(U^#u2a(|(=#+KW}rJ(Smc;0#5+MM>n^ zDBeU0ezu@#dc6Q0f-MIc9uT9=MU{-`Y zqcOZ_8+1l!jSczH1<S^vXP_473RnSjvG1DWVK`I9K=F*tM+d=GapFriL0I45Km@x|x!lDZF_f}NnJFhQ ziTOGT7_zI0O0SX|5daNH#uCbIc22UP^91|o#Qh5Aj3Q~i!7sbqL8uqf<+|NNj8w$K z_`}<0oLw~~VT=l-1y&_4gVen>VrJR)Z@eObke7GC3cxs7;?N0I4zX`t*j{^a3h5nc zGXw&AWvl?zFwUccRXYex0Pk))(Khmsgsgr1dKo+p5y$}jANmdZc!v6u0I1n~sQ}2) zaj*gZP=Wn|CtmBw_4L8JS&82JC1yL|iC{}UA|@y>rIXKa#zNT$H%qWQanphL-P>Uf z^X^!6bDiZ_z~KGdL%R{4tdCIl0#OaQys}08(@dUibMUewg26q|N-DU@TEdFv4U64v zeIt^b3rRm#X8W_}dd@q8`KlY_^Xh~(()Cvg+B~a-rWt4NPnFvXZxiTXrDY@A=qTs7 zbavbj1yonQPqjVJX<~(3qQDUV7f8!6&~)AMY<(g$ElhJr26lU~ zkQVZh^qEd?ReDdtW1C^%0w*S{#uk8Eq zLwf*6_07S`c)&;K@sd|uR#gq__7_DiDOR&aNMtb!=q%Z`13F8t{5oBQ0^D={rP!lb zOT%$!cM;H`I< zG>XkW{sGHD>Nr(Ae-_rFzl(?e#vU=C6^gHSE|)8ofxxTHbMBz~%dM=Be$7hi5on`y zK8}*KAQR23pv7?SigbcI28HB4tCw6BnqhG}5tAS@Y`yFbdA#biJZ5kbb3|JFbsZ`0bsna_`r|=C6tKUEP96XwbbDC#a5(!R|%}PP3*z*7u zn2vTC@26D|?ko*6t5qIDlN9s)BHhJ#e=Vdh&qao!^)fIQ0k^!P$9ooJAJZn8hJ@ka zqL9k}^e*8P2(!Iq3J}69st*1$XF8w2CPtDVTzYLSL4-FsQDuwbHdJpN)@F0dc+8|b z#}>Iz)irf3m1Kxk_(3zAe(^q#s1%}>g*^Ma--Vup#yGGnXkOOnMi2lH${W!(OtdCi z-E5K<{BxOAQl6oZ5>O6q>sy+5=Es(iPnG{*&tuW~deH6)|FDkiQ;Rd~O7VY>LxkGY zC4z)Pd(ALt_UU2x^emOiGRmuqZI_UI8h*F@upi@C#ad(eQ$uY7_%hDp(3ITZQHx#T zuV%QUA+#AqDtHx_K6B7#K}9=^Sj@%s2r<~Fx$dyK87wk`juFWEj0Ui*LXpts!|Tpo z9?1DK(lM-;aoI=m#v$<^$OdpHdF{p&F_nXT9;G-1FNxSyDujvYGdp_?SxdL2 z!p!Ul3G{m5nmQa&xIKHBLcwj{5ZUem9WOR%QeB{4TZs<$;NOcai-SyHs;WRN@iS_^`$uywYZPJh$;{g|nau0A23Z+9QeBNt3gPxaHk zy7g=x?>Ek8&&>WC>=z?Em3-bSGHm=o9RjeTI6K?kfxraSEGvxjBxe@2`a16c_pM7Z z0Qc08V~i@-3FG4w7MjQ72&^OA8ot!NKQR@mun!-Yiq%{vkB{NyfhTOOQH~>v+&FNk zaLQ}g11b*jFbIW%VC;G=n6?N4(klQL2_n9EkKRSUHLj)3%9sOUAmWk%=Ctf=Y&TR} zcB7i)F(5n8JyQZIBPVojHn@nzR58M5R-P%nWFy zi~?1FT}ww~yq08gi1D-%A4+>8wX)WCqP`Q*(>?f9cph!E} zYE<#U6Qg`5En&=le0kdr&E*h*fSdTK!8s$%yGeOM{x5wZl){K_#Jk0Cr|^5aM8Kiy zF}Aym-_oS;PdU(i3M5c&r}@S>MTh{_%cUf2&)K4_Ma&O9u{&hsfAbAXBE3_Xgep5- z289z9T$(d+in+2WS9?xG@D#41l0or^Q!$#duN~~4;}4r(3}9OoTDmL}6?LUJ4yT1X zfeAKWt+Fas_QuH1`i|i)nvTlii{$IuEO6&An7zz66go2^WN z_7!9hgPT#haB?PGM6Rc#H%{zq%HdV11!o zz{6uW@JWRLPz3-`1prV508j-0Pz3-`1prV508j-0Py_o|0BfzCl2Uq09>6JZkaVCM z2SX5sE=S#loIGH%9r}2{7tjgb5rUP%SG=OqMQ9PBO3y72m_FS~Ll6j1K?9Hug#tM_ z?ry!c^pB|}1T;8US!xK5g?PQRZn^=CZ-!Szp*weY?wl8UVKdPh{8y}uhl(t zb`;QL%G=m-WzFH#w>`dUgOkjR^|%Vlb9sh$1w2Q1xy{Vujg=59WgM5uA&$9ACCA8o`lc%YM zJV|Ty7)-3N26_<%LWxMCKz_uege>hm%{UUuTa#4f3nT!CsEu$Ft-T`Fu2}IyOTTtK zp9a-Xpz+?Dm8fGMz7%CYGWj)P z>(>HgDt*1*&MdK~cGF`ztb*(Wirle;E`Pj!l25pFmNdJ@pOo79qjo&b`k9?Oo`NL5 zhdumQhWLldVbS5?r&IWGq1ePpJsGi~Wk~JS^UGkLd8o;+(%!Bqg7{(jX`) z2HJ=sAS@pACk)o}2>_;p%h*@@&{FH$df5W#k*MavhXUBigGZUrR5g0pCy3~=0Cd+L zH380rJvORLM3=bEI9l^Ob2RXOt@#lkYXW?e%w7377*!#LRo+3Jj3hlBQj^QyZhUx* z5mmwsnRY{Owb$R4$ro|e_Zu1|M*YNo_rxU(fODCrORbn26iC7QVsMZ{A&mm5P$;vP z?uo`8f6XWNMQl}{klSfAL{dvk7y_E`qt@c4i3OMU?##aU#ZNs>T6Kfk1sA1FPo^8d z1_|nlThNnNvGiv6oeIl8D+wxu$$=fj7$RPsWgLuZKfhygMdbMwpcm z^9@*N-DUp_f^v7sBkU>cn4Lhk-S+{T3nhq}e=Q>G80iNBNtK5hFbRAn#edb=O41wu z$b1zS1KL3Unn3s+8fax~iU<@xio70GtO{a+N~T5NNbAp%};8%e^NIpuqEj9 z1M$;DRW9Pe{k=?qwNvanKr-_@t=8>(kwG1DpmOuY)6>ApjqM(ff0rXaGNICV`CE1S zc@Hx$uG2%e2@~hu0lsO-P`ZkZRF1-yLCcd`6iM4gexHxfifo-bde9l?x*#h4FL|oAGm?uSn__88WN`|(TzO=$C@oaZON#+ z3hrd+YevAAJ-7>OGBz{unQpP=d9xe`YknA}x-a%1YUgzf(PVlr-Tlb^8GcVnX(^)e zGyUI7`QCXGX=UM%28z~R=yJpFABh0Ec~Ntv}I&S6Uvej3wikc6D5`3 zgRmw2ImfSBy}iLygTJm1ZYs7Y-gsftV;3n+)pEq#5TpeaV>i)rc~i7(HKykaRPyTA zd_0KP(372p5jU*!|RsFSh4g@$@m8+yO0^z333$_i!Crj?`XoNvPs8x+H&mj`?T2W0 z`yId>tgbGh6mAdK87^pjcvtvUi>F)WKSf1aZv5GM&78LWK1^(<>&E%g@oA|UYhb*q zNeBh@KNPZn^_}*RG%XFPlz`4Jp_AeHetyzv%R-VGe%eRLGq^P(`5lu?gIntRQK#|K zrC4SQ;jR%RnsiquZ>erX73JMd)Pj^|5spaA`NzLHcSMunoo~~W#(h2lcSj9- zi;u=BY@D2xO=|yue1uRs-0UKoOT@7<*Zw^x#kZ3AFv{Kn)v<>XygSxVNk`TEgP7l= z#EeB8IcmkQ(g0vspHdVNV=ZeZ0oNUGTjqzj>^t!1h z{T_Nrqu)r6r?O-Dhb!BrCZ0@#X=~*R#Pm0}ORy)!t2&x%cf*16q6e%oF_2*GsV+G0 z*1u7B^)`xa1^3L2S9~Kmi#_F5!;Z!Oa>L?S?;gv0xjo{?VoBav07+3ie64g^XX)-1 zcNXOAuW|2_$7rY#OSJ>J&Ck6`nhL^O%j1vsEwY*`*tr`|wa56Tw_fmz|;@w)Zy4KNwuMU;i_c%wYGw(~Iibti?sV zIfboG(jf4h3OPD+5j#Soi}i^Vc|1gInJD-RY~Y%3g79$o)BS!L)S=9kE{D^^IjeUj zU5PKjSrC})GZukEx~uTeke7EG=h1Joj!Hqryz3b^$y?<(&x`+Lfh0mKj{(skMF+12 zMEveNcxf^tQ-Cp$<_P#J+h@pW6QerPP-xFnm+k^o^PEB->jm9yiC=ilW@Gw~SNsgF zlwuD?5`VIUxAd+@-~-@x+XI-Abt`;46|yy*Z~uCxCnOA2=gkbDNS$cs&!fRw>@+>A zRvz55@a0k#>n!S&Q+v&UyMCBnkm0!?UGU=rc@}CD2dnG7!F@D6Ak1$b&ZK zMS9H;*oL1-cT-bDcm7ng-Kr|UQ-P5_ECS-N|2Dl_(*X*kA30SUW1QznoL5f$p%N9C zk?uQ>$B7k@Ol%CZ4Jl-$dRU6}KLWoteScli_ZNF?r|rb?>>mt?@VQrpZe;eIH(z#| zHYuI$f0)FP|BbtaB8kCJ+uQJ78Z9OU#%$(IbfB+`9A7-Cfull532Tb=>+YS=&#Q0P z;cMCQsl|9-pJZ?=?QLxzY%|Ux=31JP$r$C9)@o!7JhVcX>L&jvOxOJA#R$&1VW!Y2 zR4uDzm2g1M3B*;W+yUCKOVn(hMz2)lo-sEEq>}syWw=bK=BXATF$=Zio8lDGl2I3- z8%#8Gw%oj}JMCBc3fc`V=koEdyTMkkJcpNQv9xhTroO;xOJNVbk zSeRo+9gWk1x&MHg@HPfwygr)?Q^~}@F&y+~H_9kZE?yQBimo$bINeP<;?p7fyRW1| zhT>PyrxwbwctkB%veBQF9X~m;4~ZBfyfh@G-}Hpe*zQOqtF?apynC@QbTzx zZ9Js0$3u~@jil`U8cL!{Tdq7?O?=EX@3gIb?VYsRsY@simaZFj4P8f&kIc;@tC3rp zyS_DD!q31v-p`#SCCT5FOCO7^HGb`fkF`A#GEEps(nEs|8}?`gJ&wsCt;+bxk_o1| zOuVO(Gp#4lxH2|3+q)ZWicZ!>$Q~Ql4}OhRU8jUx1ui6C@yFdB9Af<^p4d=Hrg{p= zN&c(5ABCztXa`;Ks;gJtpv-Q`FjGTy66mCDsBL}G3TKYjMaH1;TXW_1>R>;r6g-s! z$4MhdTZJrWb#$LKjOcuH2?Qb!`**$07P+yG5h$PrM=9i`V3EXGFp=(upP2lqXRjJZ+&E9LD{$Wt5*)fp46 zd>+L6&wN|`s&~pay7nRbtlsIY0I>2EK$iHda%%AUxmh`0_G`|vM}R*b$K;@0STEm2 zl5x5pIRWczOo6Rn-BXT6RB%x{0vaR#Xox(kpc=OryEkW*Hw>SwnIW9$De6(7aBb!u ze0fZU4$F-o&xY_!Dd&sDw|>Oci|2U-U~aXqXhE9B!I$feFzL55a-z^X}2 z?hxaAaw&|#Y+@m&(jC;y59O=NA3L=8nGA^+fCeKJlLDER>u0ZH?(U7lVljXq-L)>1 zNj!7Yt@6(Z?#1QXt=3dgbgkDm_`X*7IhA1fkSKnEJhPw z9ukd(b2eV6-co2Xt5O7Yv$hWnS7GuyH|wti6R7J+GD3zxK#v>$K7c;L-;~irHhX0+ zRwmv-rR1%yVuZm)F-8}7OQ_1ixr+^P={YlQ^Zgvh)DaQnv&e1@Je!hLr>+pumxp7r z?_eWVg+#)IOx-zoClhcR;CV%}3hDP7KM_$O?nPo<>htB=7TKQQuUpH&9#}YDLcC5> zPpT~*X9ScMcW@0F3=@5jXlW|iJ)pIfL**6`NoeAydR244ZbA0db}n({ZFE~DC(Znz z>c39Rz{8M_eLgdag)rgLWLr1do;cz$iPNFUg{mlGFG=qv?3CA!C`sWm@WfXNyNjX= z+UtthQ1Qfb=rGr&_j5O*YrIb@0<4Nx+I2p07rZA!`>dI>CTRpd(y@%4#uI}hX>YQL zlno>)X}Xh<;;>~awr5jCGc?2rzVte?=WSZA7HKJvXX6r~*EhET)|(T3=fG^z=Uyqk zTo4RRIE096&*3HpPP5bdQswYbb!=`4atBPf01=S5xIZkG!K39n=2uIA8UvQtBpnqawX?Im^q1?YF_*1}9LjhU=<@_M+d(lh8qP~(_2}zS!{iWT-crDCVOZb{m17zEkkC z`9PZpn(>(YuxlX&Gt4j(e0Woeq{?X+{f|1EK#xC%(@`gkA_U^8PmITxPZ{1P z5J(gbNp8AkSA(;T0=EI`HS@0Axlgm1kT`ni)|3hHBGUt+C%^aJgBs)%xp@4BWvVzg zJAX8f5_RLlHd98TlowPMhs88yiC0sxBc=$P+sodiZ3TZyHuKw_!#AIZyx@3zTOJG; zBw!v=o@-yVQ~#Mw1)UR}sYF7#X2!aI0QKsx?1vKBHb7glw7%F11sk?ia|IqVO9;c? zul_9APQ##GW{sEg7z-DP(;2|IKS8q(8$n}MCI<%dY&(rPwf4Q&UK``xU~Y(W7m8&> zI_~9xnm9}qf57e#1(}^c6q2y&#UZYpDd?nQJ3X*3-_--~3O(Y*lx;AN7;N+KM>lVt zW=65M_SK4-1ViB)k$JDhXXqb#%+F2x>$k0-UW`7@`0yNv`@glynXNbyXrUkei&6kK z$McNPw_9%dtY)wV>pNTZlKYdE7E8v0Hac0dQnyy-Vl_+eUV0vs>5lH5M&VvWMLvVb z#RE#|pj!b;n=z289~K^^l4WpD`3E5zf~m(__0g$_*hCaZkjn$q{g$byC3x`u4MSWI z1#gI z@p$cqrO;Jd%$$Zx6PSQBI|-2L)L?Iw-ye^V1J`^O~b0<>mPZR{3c(J+&0(i^tDW zZ$J`CSMeYMsETF*R2@c(#F9FLCR&2eS;!7WBn*aoaKmfeUBtsBu$f2laSY}#-f zEDu0Tqb}|4TbC2CT7;9o1MGR>L(nHQIUuBrf!d4MKyb%C;L%Rj)_=6X8{ezI{b28R z!4C~PmQytNWm*$sROrM%f?`IFLuED0gXPjo)5>4H-&NmzR{dn)_OHmfsU+X6rMmz^ z8u+`f^mMOswepk^^^iqW%JQ3WivHU`rR=d{@pJfd(UdzR135O+G`sCR)i563jNBCc z@mw9KN*d085RcYKAN>mLtnXNvNd!I4Ht)5^z9l{>_CP(Dd%237@k|bya%vbJ-?MQO zF*|@{S28k?x35Vv|69q*!VGUX@e=~KnK(i;mU!&YUKAxn zyxdf7kCjjkN!52IKWK++vmnzG)GyEBpha6;MdOBnS=w`+aQ^Gc9uge=Y$Rd1Weui)=Q7Gcnkr(K zr&Js5+{M3GOx`~smljdvBOX;o4?4Rs+6&zPEONQ0ty5h{wPl>l%nidZ?xQ?)7_B0p zk6(sK&?h)mt@K`rKr^U7IMu^3-YAKssM<6@_6(l)H5-!yqd@2?4nPJIDsP6u_jG)Z zUi|N@q$lbvfXZW@393`RR%*pX&hf$<9#1_$;HXUOvHNtLy0^U3nb{E0Vy(un>a3q{ z`;lLERt&m)^EE&MjhsS&BhJ2;m2_ol0I4)h(r42>2&5iea5QMx+cl1*0v0n6%SBz5 zIX6p%RGA)E0+OMz7{N3_QiG@4cYzy7H_Xv2w!1YB6EWL-${nL1<*@Ty;Sxl8T(Q#x zpNxhI=j(57Ct@s7%&XG;MBO{hV!tlxo}bnz}S=7eRo_B7Dn0*=+zxbglq z8ypGTho#B2|5HJqInw_2G-`&nU}G2AN2apw`>d7>HOYrsxm`<5rEBfiI%mfUCtSH$ zaE*7-6FDydIF0>tsh_jfCO+#UZps&>-Jy{^e491fu*g@u`7JH!MB=Dr`<0FUb_g?R z<@;%vO=q%(WD|b?KmtsD)m5&7{N}loV>`_CK!35IFQQPd1hHQgyg*;`S%Q_52 zn)veX%<7zKYB}7Q@k3FH!St~!1vY{EuiI+z^WD{<9g#TvlkrD zP`NM0pU~pI!S<3Hj;Xv%26gqNHenAM&1Is6&!H&8AWV3ZDIi1J<-cP0D+?yLnW>nt z|Nhn)X3x9{S;?=Q#f3EqEPOG@M{}F7cF$D7CF(53?hinx17NX+v?y?%G2#kluMa>C0yKJNAp z56RyI4zcz~aSMG`20RIys&VDJ*>YKR6ggMB8GVl}dHpmMTYaaKytE}&kY)j(c@flu z?ORKHIv|`(onGlaiQe}W?mbSeXc?JxZ~#sLv_Dd7MSy#11W>ytzC~SrC%aA1I7BEk zFdGf?tN^aWIDdu*X{o=~sBz9eSE+hvP`2BecF%O0kLMLgSq1E@8niBvb;S*%UNdzF za*s}gl^t5)UX&%cX~Y%XXqwDAWMa<*USC!fXF&Mwe-_3SzNMmdRV5u%RZ2tsi1*SG0{Is0SHOfb%`cv2w;AQzZ6t=oS zEm&gmLh5v>jhwYX#MsjG@*MS&t86P@m5YmQyoKJ z+0{JKYLeIM+!g(_fn9u6P?XX%aO@H$gev26jBhb_?dKJ8+U+MXA)$ErHf~sE3LS%V z(!?z0Q*r}7+%lvOLFopImuek58bneoyf-Q|+FW&;vV$^FFNeLHLEls{^*>QP&*M5v3e}9zPy#+yW3ZY=py{B6qS7PCqd2*g2-_4lcQuRQ3JnlZ6 z3T{H;Vf(xTk9R!Wp6JbmwkVG5C0+1_*(4%@+B`Wb>|!A-0D> zU03sqmkSf`7_aP!)>z+J+6%6_vRqpJ>3x1s4yhCgm6gH)2|QHIJmXQayF|!f2%)F^ z8uQ8GR-78I0QtEqR})i~U0W?|kZY`=Q-*W6dLva3s92oNk-qxC5w%`dosXME0BIaM zcI{FG_2XDW-8Y1|0UR*-ro5FGZmxok>fIP2Xbn8NF~3g9u^^~cAi@3}NU77x$RX%E z(MPu8$TKWcDLB6#9pWpSgWF~^fTQ=)P#UkW-{wQPc)c8K9IXd}w&XTrW#kqDrhYB_ zxcA2+Y;01kfhsUpSEUM|(YRmE_2LKAZ5IrCOf}mx9K?<2$)mt&QGABIBB`e#ZWWqb z^8=Y0Jt>e3Ef3QH z40Z{MXy76)=8>EAXpOdkFJREY%AR+}pZ45)LE0e} zXe_PtiIIVHp@;dXRv3l4sr#A`!#Au#!QrQ~rTH&jm|z0==nDLeA!y*rYs{UIDzUXH z)SqU1r%`vwJz4}44vp+c%J>Vjr26Y^ic_&Qd;LJ+9emyd4XFM=qJ8j(+w$4yESjzF z!%gN;leHkxN^+y1{E}G%f4ESlGCbvOZN=BVTgj2RrOp~ zS#S@#);cKB8(_9DH-y| zi2Q*4=yDzD1HKtI=ls^AlogxIz*fPxs4{YgUMMhyX;;b_sh49g-t0wc$q;A%m5ueg z=c(B|T4rfNr>_cN*@uySIETs|3Wiii|B}RT34O64eH|OcT6~1CA@yyC(yrk`Uk~>I z^Rm`r=C_`kqibXS6YmaZ)0(GMTm@iPqinv_B-zGE3zlg|K8i%C&uFAc+_#0d9*N{N zO!KUjD-Z?~v9~PYf%OmnKmj_vskvM1&?LE+5;kahKSHEkp_46pWNRiP6^praJU!?81DrqZABPu6E0iVFBiE{Gh`-{wqBz=@OE?majD+Gd)R zMFv=mYd$k59uRBLePv}7zi@HYDfbe$TrLcCOh8iT}uv^z~*!@!8WtiUg2(7>R_dq_2ea? z##klV7AMv^{`bj@{aF%Z#Uwr9czBzghzAw0s;4tU>_D=wNIOhXl-*>(_^{%|w`|B? zqd%FbsZoLgL;e}==(5`JzeFVY+{1x=R{JE^?ht9P52f1LPn9$J1y>qmsUn4b6$usy zS9M^k+{;G9pMpjfUw(JHqO6$^q&6nWLSTTR->(OW6&{QNU zaHHvcOBZoOeT?h&T2z)F6JXGHp4eREz1>GYwwq1)QAQ`rNQ27Yv!qxpB7Add-$BjQ z&?QsXS-SaWc z^WWE8@ou&fD^}ceQw{cRv3PoBL^<>vA zlp^Jju(!o@*{CQY&pEhFAx6O%6~-Nqoyp<9sXzptF-SKI3DmduAAA{;;AH~yJp60kK zHXN))^r+R{fbi`NCY3OoR+mMLdj$n?11WktI(H*kiyvl}5J%RFm=;3&EQ>>6!w1(G zhQxFaHJ%ud5DVinAju*W`lq3itGeSV*)R2Med8zJ84g$;bf1uCEN+{=12L)$&|@D+ zzoZZt_6^rg*-QIE(+L?e5e9S%w%xK5q}cdr_8FTK02e~=DI0wG#D$i=8U%}DHiy8% z)dsz3OE3MYEC;@xyB?$~7*gd~>NJV4tzP@vwcjr8DWU6+J8uKObdR}0PVT=1GND}TNBMC z(Y>9+<}`~{UWr1C&7*{_HOsX(V{d%N`YQw6*T={P)FxHP9|=2t`%Dm7{@qOGW&b^* zkJyg4?||IF$rKYt@hv-n;(R`36BZRsKn1|`H}+^$M6i@F={z(jB?$9TY$|v-GW!U2 zc}ERRyH&JvvOepRTbf2FAWR(wEAkaoC8WoXOer+sTREjkx1BWrm z);{S{-!;x6bzzTS3Pl4W38_1ToS?-@9dxfsZ2CMvuRSKPkBm$e8?$O;PjN29rY#$D zweY5k4fIom#5dO8Rj8TymOE4xS4=ZG!OTJYW9Ur~>86v3G`Kf6>!Taufw!1*O zFvjj-j#tmVQU#E0%hu*AysLIJCaSNK^o|Rf(ggdS%47oPOy+z|ZLhi1nsuswi7_=3 zdHcZh-)XRq#A*7~5^8b%-*&ouu>cQU13a}*6HA#xEm3xINquxv^;4p#=mq#ge-I~8 zx>a7eO1B{a+)`h;5uHng&VTB&U?FKxLZvEvn~^kG(-W29Vco1-g z(xMmvm`xXZ_&&jrGE;vEWB+bddeRLTQyfr}iEIS{Z~hh({Orka<;kfex_(U{__76S zw{i}<1rG>NHM+ zc(a7j5`T0cv-HwMs446Bdk7aFIrtllpjZhQ^3TbMf263NNIsKlg%}r~)3^+U+%aKYQnd?CxujP^B$&Y1! z5$OK9Sb1|N1r4$%W!&Sz?~nmL4j1~OcLk?I zwKDrnuI`-AEO@&^w~Q!< zLKws)iI}dpFL_Ij348Kp%LLQqAyNF1&O0;xbGR&3s~9(G`^0xeHw!g<^9Wx&k{o9C z_T-&Ak|^}5wb0_F`7(`J3!tOV1oA1d%PX$BxR&Acy7JU$86gee91XZ7)fbFp8@>a_ z>5gF^yShQNebD0B4(P0945E30R{dib3-otQ!5P!$dUTc{x~$~DfbLTTZ{zk6PscYzc;@q)PB zMKTLh-#(#pt9k!L>pjdblK*Q@PBzKfv+F5S!ao#@PsE}X zVVpsH$=8x2b(n_O}lq)2%sw znO_)vg9X5pNsb*XNURF+-i!}&uWyVvJIfh`KP>Gf2I4XKPyK7F!9p-wY0 z-5HI`D~X&--~gO{4-q^3&q*&2JIf}Cyb%{e8e6XLjeKr>o%8XlYNOCuX0g03arESr zv?8d-422Mx{ltDIADzZU^|us%7bld6PmHSS?qQn3ZNup`mb=j41>9;*>7(b@DkQLW zrrn`s2|wvQc%sLSYbfDgRJ%9dRnZ;Baxq4L=lD<|ni;TuJW2Xm!wC85;6iP%eNSAP|}kIe$(tS_}_> z?%=UPfzUGskZ|N=3$B>#!#ma{Nl|1w(|+P#Q`A)IfcKay{~BmE9x=_@#{mUgFNAG00V^CTbFIYSq*={fXV3&yBKJp_dyOX zRoxp%;Pf1wW@46Uyxsr6+qUWm4<{eMv?tiX*|;%r`{q=zV|)tk@vh>vY7dLMzc@Un z-O1fZ-(dZ+QLqdfqZ`C>Y09DoX&0`H2yjI>{k$M&(KR+kCz6S>2*K;NAqc8g2!H~#4}Q#&6vzW9y|fGl7%S%i z#k%k&*i-cqh|XQ9dv2BPyxCN`pItbNGVya?>2w6VbWE$)bR!lOBSQbV!<-~W_>LT^ zX20MXmuHU3`~U8ES6SK}_TN9^+6}cjcKub(Z~o+6JywiL7(|{1I|w5LrJ;>jldA9m zbEW#GI5|HKF~;_J4g{FXarNL?HnVOj$``$+cG>#UA0FrgAVQ*;;UPQx5=8Kw9z1jn z{QnKUP0;i&a7spxc}tTc4gJk-V+aM~T`>lffDpQpZHrOu@hJqYr=Dfj@crB%l8;dn zh{qLCt&DlT5R+NE6dU&?J~gaW*nvPL;s=j{NdHEiW|=UdA^{WPuzlkkt%GBvum;<} zaRM|dR7y<<#PAW_v~s$klo&9G?KgJ`P4vj0hZ@)pR$me=_#yni#VazPOTplCjJKd) zpUvbo1q)bVFaAJlZ;A49Zj!eReo^qGJ;VXkx>EdL6?4rWSFCD&66>Mhau9KlnR&bD zQBAvK<}W%w$4JsWL3c>4a91ex8sKHJbq{|vtrYv5*?FGt7AD8zq4AF(y!ctK;^5no zcZ!xHQC}BnMGxT;sSX(jdI~@LU=y+gC_z?dsKKOXhQl+~w7|{94qWUpi;U(ON+cr% z_ilrO=Lrbg)er-v#BcrbysE>h_-D8t+U4b}1oJas-nRm%0CtUl z53ti$MR#mm#}vUc3ir@ikr;ZG(W?1i$p|TzC5q-zo$~S!i5F0M<4^+i(SV60dO7Ti@Pv-#o4%3`rtCUr6)?p*a!#kZmm2Eto%^CXcOJ>bNf%qX7$y-;w>pET@1rI=jSai*70yF z?je(DPBylalgV3anjqS^F6CO#GxhZEP%il0YLXPY?qAE`ffPC609Etd!)JBS^y7wn zgv4hh+a5#U;SK~W76z6)Sj97IV6z|Mkt&b?SN;Rm-<_cPEV-XP>}$25t2RI zD|Kw)lXJsoWj_d6+@%K3EGi|;RAnRav=gP#6E(>@EMRWGJ67y7v&k6(lP8+*p>4eI z1OkKX1B*BkX6^yPqJO_dH>Wz*dazAhz%csFvL&cY1p3#o2f&hqErP!6A%F~^cwsI6 z`c^H%)zTIvgO0BjOA^9s+Qtn(=@)TQe__%K_Gf2jBZg2VvXiGLzt)q}Yo=Xw>i_DB zD6cE!DW45c%p8R@=H6%+#R0u;^kk(2WG4lLV2|z2L$+N|fL&}$q8dmf#vK71FX*^J zUmt!~c(^6>i^EoNN$$)|cYJh}$&i=SggV`4VIkgWoUHN#Zwi25JQfOG_e#pQb<%6a zoH;DX%NRr~{t%mKYPl447appH+y0qqI+V`r81a-fM@<+*pWM0!ff0X|(huO&fW^2XhC<7ZxVDZK@4L0~9)!Nq~-SYOlvMd=f zrRhtYORQpb;z+-E4h1(_Uv?JmdBXezAWB+L$itLENr#g@k-Bl=9&y>%ZLA<7MWaB? zR%2|fQ0bRYksQI=kb4G!K+ZOJX}>3^;Q$qQlyJo72#Bjm*#7U?v3T>m8c;73Rm-z1Svd7#sLz)RaD* z75l0i=9(ppsl8OuE-JaI3Jig4QMxe*?{quKju<@l8m#|NS@)!KAk=yt>AmXkN@eZ$ zs2zw2LA;c#u*CyfFkqW*2eG0z%Sl^9??bCo8If!F=j6%o9V|+8?q3g2;qPC!8=4kb zz19u%I?sHesW^}gRo7D9_VMys4|%%2;B}GtkdEta1MzE0)fS*Z&dXgzJRkBhfz*mA z0BD6U$NnmO=H|Ymxo@>LFsERnQV%O(3s|@uRJO=dD{UATry9kh~5b8Z#gI z)V-1DSW$+pA1_tg+me}Hjnr`{X!_)4VY!t&DF7z>JyxME3CNv07rgCcI8km?74l%R zl2ZdvA(uc=B2R>N+WNJ0&9k3Oi6aMx`N(4I$mvx1+gxG;SL46OeKaXBt3vU(u>h}6 z#wk%JARnwiCpzLttot>Ub2CQD*s<*{7;QER`|L=o=avq1Ll4nHdnS*> z38A2gDj-#lF{`p_c)56<-bkghLxOj>Y8Ap4oc70u)1A><^kKHnQPTTDUj8&#GyUS- zzy4~@y`6;4`m_A0Uo&sK1|7K4#EQNmCfGOr<%Ugf|uM zC{9+MFwCE0j4<^Z-)bi*-)>+t&x4EVJMvpXIfp5va;h?+}-P5AvnSAI-j348cr z_6T@+C%i{CpE4x zNajTM%@=I+471v*@{7DQ9T&$qA&kv3&I}6`3CwCBf_t$c8l+0gdof|HIb27<&z5Sj z`QJx8hia&9&;BxsBYu2G=P=`(6bmIpdo!ZYo`TBM!#7Z^eL(c%b{B$LK}gh6!MwU@ zne7fjS~){e0ST}vFH=Xbrc4{xUW2^{NkzeU@W=3(qNG7xL}qIWgIYd0A}u+}P{i&4 z|L>tD_%;H`(f2tAu=!+Su7p|%my^hK&?q^uzvAtiypRl7C7NvsW$y5VxZbwmIHfQk zyJVg7nVx;-1-rAO`lsWTqh^z`JWv?;3O$1zIjwsftOJl}mMaAqo zNACBdOgaj$A6X=Wd*%#}Uo(SNa~6ygnDMjkV;vqgJtH={E%y3KFIEYTtjb91({Bn7 z;M*I2d0_&*s9RwSt-(jfR;PmOUtteD0D;H79P-~ksxMYD6mj+L{VITp&77lQOhsp& zja>NfVw?W8*>Ipj*j7_h=|>X>1_+#Xt{zk^Pf+xXT5@Zo9cZ`&%z;w$yu)}zxGG~h zB9Au+5V$|!1J=ja&fN(D9Hq(?t2KxQT^{Kc8Q#T+^rd6xCe(%?f+Vh%{>7dvZ#(hJ zqaaD5+G5wZ^}91JO9qGOQdNO~F*<$zi3M@);hPxB0PdO#@s)8@lz4 z68dk~B(?0(GCANj?k?~5=0Sy25^B1KHx~UDaHn(asHDm$2mBxWH_nM99@DsycaOJk zKyhFLrH(p`2TUkmlR7|6aYxuL47ERI?x|3R?0?!j#J+wYJnbz1fGFirFE$bW+?Emv zMi=@4`)V4I|FGVUO*sa;0~#{fZ(J(4W5H17 z({7_uzqabCBUAj`oCHsJN-rtRWIgrY(}+Lnp^}eo#q%~QvvI8@ZAwpa7-Od7H7_}! zl`Zu|7@Ml^Q@+jFKY9bk1VA8Lr@D_ca z{x0rSYT3%R&O0UJmd{cs6OXC7Pfz1V928?>_r09h8t#pOV3Sk zcWFf~P;;_RjJHluz28}+1^m1R5j!8St0l2@vV4X-I$Ql!>$7U5DX99+;r%`P*Oc>% z3b4~+Fg8wqumdQXl41Ie8_os z6Nl-XjrQJ=#ec|rd>6Oc%Go8eorP2{iX{MRQ586HujSqFF(|WXOY3fAlgzn=RS-H8 ztv)4$860GE2qL3&GJp|_jB(Ome5@!Y?e$T&03SHnn(RPf?q04q!s1=pjsqi&h1>^k z4Q`Ez-e11ldu*5fVh`RthVF`X=pQ!sHW`_A%Z)NDE`Xvp7sL#sm-tI&yl?zB3powp z2hZUZA8}$3vx!wRmH@Foqr~_-b-LwRuDg8-OuR$PJz}3mR*aa87a9T1!@UDWNzn1* zPbN**A`26u3j#QaBB~bQVb9#s#AnBGP|{4KF^CtcF#M4#+vIRjaj-J}YU7}7UTPxz zxdHs^djrDjCi@gnoB{kEheM<0OEWNvz#N99F9(QEg}dLT;^&6Z5d82w6P2TC6ALl>>IkT;XDjYYH)WBOP8K z6sZc7%=cjr-M+=&0qroe*`yg+G#ylkvcdszp7uqDG7x4kUFE z8(P(JV+z&I9rY0?#3UW+bxSt;>YR)_26t}1JfS`kTJA1Hd6Hr-Xw9btqfALI$b0(& zbnQ1h(V*5Ag(((~QNC z%@EWZ-LS3c%U`oX_f2g3<4k@n;&oy5o3SStujw8_o#_&Iq0*?}qA_it*!%`XTG@j< zwx9_F@X}I^B6vvqO4YEG2;sVeH>Ag2#LPS=AA~)m#^_$HQJwXRp5%7~{Qy`jro(F( zY9BNAFRpI$RGL62b_Fi2v!bu&RXIHVMrn8AUmgm=#thr^llEE~lD6S8Qjsp{=A*NR zDXAZJRUIgDaH~weVjyyE$`BWywpCz$%!fgF-&28Vlqptt3!xUoBJ`8+kP&ZYQd=n> zcB(R&pN|FT)b%$s`i@bLShAE=uVeEZUp`S z0TZx)l7bZyiz=6fPxnC$!--nhc=x>KGm@I@H!cIcWV<~slj!OKP5=@;_o2x7WniHq zNcn33t`t8|KGEK>9|$5)TsJTj5+e})-V5J^Uft#`pATT~j)v;>$4B*t(R=gbB>-^G zt?gs{9uAOr1puVRY@@q$-s1og@6`anJ8!J#?fvGf+*9>}+~>s3aGy9I%l9CF-}~(6 z=w+FgIzZ}!;cgLNCIg7uJn53*`|!DZ{qiC8zIY4!2>58O2jut|e9XRDf6A6yv3&wu z5$y3D_?QC#0Lv?*=f!7+3&8&8E`8ST(;oyMA%zso3DT?z9YUfK>UNubI23HbJrfBEnX zfX(;G-jE9hfZl`N^@kWAN7tB79pLh#kCnlk0Oa-V4g3WgfcwO!paor%1^p`b0O$q? z`4suUzNowcFOIK*X8Uk_Ouh%aWxp_-`+NX)+z$YFA42zhuM{7M7v42|aRB^RVZi7U z=o{uW&FkPP=DY2N&qDUFkMF~G0O6b9NBINh8_kpLE#PExt4j^=9q{2T?DhIa@Z__m zXXg{^BLP5vUwoK-5nDn$MtsmaBk%!S```fxK3d-=F9AE4uLO71U4WX&9iMr=I-jU_ zqxZ(wo)@3Tm@~dZz~0BR&+=2^v+e!m6~QWC#HaWD36S}~^p^ix{h+rhx4HQQFz-6> zX#iM1qrE!;WZtW{gzl=}%ntMpIrd?cHW_Ygb!`9%UDgDQJh+)!ms)S0E*`e;a)9i+ z_8q>_kB~LnSGo5MbHF2@^g$m`{z0;l{LVm!$Px3tdB(F0SoOL2q&%8eikIvU-3;Ak zz4xwlpYF#x!1zb<2V}e1JHUMMRqumu#}f|V3djc>eqMxpK?LZX`Rse#yx6>GM6MM` zW=?&sEWn>G{Fl0)^T7GgawAAk5crb)EGH;Y&12=sr~gpzuSxW5uz1FG@N=Ym9+b&|^Q-^grmm1_nkA<8-At>7O{UlGXH03j?R|*d>53CDZ^lF)z|z( z%BF76@t=P>E%!E+_b=0+n&%mJIv1D6-}N@3sLH@`Ww-IU@LrRs9@qWpIu^fb#Ppu} z@K1N4o|xZI{$$E$A{Md2t%9$chy=B~gdXWA<$O9b69sO34BXdM&UkZS$p>0_?fu`P zQh_>xVx{WuaFWSmn6UX@{Pu@;blee4^8N`IO1A&Vj{kT`R#DJLeaqir1=QoP{}5pR z?^OC{a^yu`sto1d0WFlCs^(M(_eVVaJ7E3{i$Q;<1VXKpyfA^D@duer87xIQ<{)@1UT*DLCA%&BTIO+(1oqS9H8y`rC*BP(~k9o*c4uQnAa57 z$I6z&r8Vd`PC^B_0rOj+obd(Q*X6DrBIMaaih8M=QQ3LsjX4-VM>LIk&qi^;PG{QO)J+K7gI7)$bxqs}R-oj*a!Hx{m_ z=nbXN<^L8`c^^vbje)xEIsqM7Q$*}GUj|`Ih+0DMA*w~W#s3DPi_b#t-{=;Q)Z8T) z7-eSU*=?|zXL~r3+N9kneD#+$0aCQ1BD8-w8U;q*FjlF=Clz>|-_7MG=H((Ac;Ea> zt5*5$P50jbm(1NQ@zcfrPdwzFJctKv^)#3s6s29OsnVMU8>DJY(Pw)I>E;UNmgAYA;-;KTECN_n~>#8~ISX z=}LV2>*Uw@(egOOMf}Z4PUP4CXto|(sIsOe~@J2 zh2j219H7XNo(qis!E~(4{dx6+rTd)j&y5GFr7CUB6#c#44eT;af4L^`dU8N!r0Fj< z{4@Q69Bh7>Od5W+z9T`}z*Rx4c5gS$Jw2=c?6UipT2ft*E9h4LPSNOzBPF2rDk=}J zVLydhp1vl1`04V6%PM2~nejhq_P_F4utN*dg<5vy`e zt2xEv4l%TyIUfCAz@Vqz%o{ZEAA#yq>r?`&R>9A43~iApzZ`B}|E<#BI7Z(^3~CGh zcJTLl8t0MfXBV+I$=#(nnOx3g{{t2c-trG>egBP>$a%&82Y~$lfx>^(27e(`)$8`x zs`G!R`e8aW94O^~mm>dVqrZ4H{1n%!ym)M+z3{*0V2W{T_y5<~|1gmAGZL;F@~;_C zZ;OskNN}t?R;)Vyzk%vu$rCzOz2GO;{J~^qYyZXN|6tI+BH~9HmJsScye&fezd-pv z^;A`D(@5J7abe|&KkE_b>9mtzr1k$RN&UBZ{&xW1hni3(P71&Z!4l`-YMq~`a&|1w z)IK>>`}-snqBZP$+10;5@DD6>Wc4R@wrBaHe)_w#X&w8|a!APt3SBW4_f}>56E`z$ zA^u%p37StkBLAz@`tQn0nl2Li^-p^KoBaQ&$)t!=m1bOM^!|%tI=(V+{wr($ET{el z{rzb(FKYMllvZQI{TR-%@;1fbKV~6y{F{INDSABR73~sjedUYgB<26`5kahufOGYK z*I@tCZzMBb)mvCImBu%Jh5uZQ7(RsQwaL5H!wG@nKnStI z1qZ9ewrm2Ub?~>ATi6D}-~w;bR*TGeS0z^cVp*JUmbq%PVS$BLCL;j+=JgcPV>*M- zyaQjwIT%F*z8~Uc)}FH+OaVmnjb|AsKZCRR2$gMR3{VgOJUh`@0Xy}hQWTH0LNxtA zxwSlFJ&8*Z2H=VNom52K5Sy9B*p0m}+sI&%LnQ0>cC)AB=NCKB+a{=apt;c9(oW+! zD}AjKBiGDvwUyB3oQgUQ_fU`yO9EsER0RZ}$MRN6y-8(BqUDk-NTkNyA2R@q@ycN* zQref_TIs_d*gZDLijU1B)>Z`Rl~%nU%=-c>xnFypxiOM4>#nL6X|z~KLKHguj$!ZWS>C)JcnUM>>{u*rFFHWGCp>l$EbX%xnzzCNGn ziffF7eZns&@Gw1YZKxV~om#yb24O8cA`MK<802R(9x_J?<%+j6x6?YlG6H!grn{^P za3!*b!>!I0?skx*O14F6B;~M+2v?cW% zXAf>YUWBEss%FT{=l}N4)888QP%)RRyVh4Kugz&N7B(u%G2@kD4>fS_$dRRU0VVff z(W>}~)Xt;<><>mOra8{-r$SYb?LH|vALdZxOeM%a?BJ(0_bmf(S$VT&VVc+w-e5n# zj==={JoNotZjh1_xUkR%Mde-_frNIoohp2#JR4gHzd3i-Dk1n>pu6e&c0#<_dHo2t zP-eGMtFzxeA{L-)o6yfBZF!y1tGiZ0dDw`16Q0l0o3+B5dgsgJg$=6&iSz;Ph-}Y_ ztX7uW+tHTGv&zeuVpa6kL8wJV0xMiK%;4sG1Nj|f0|nvYr}CqyK|kD0Z1^?R@KAEU zb7Tcg(F#;GeuXb3{Z{Ru+%d3)bN^Npi;f>ljt?w1h(7e4;^!qVG-?#O6?*x(FNea3 za4u7hgDYv`FWQ^vC3o0#`rReLi`e)dJ2C_CYRhZc7~;jYq(NL$2o)WKuH&99X_R{SpzfR75Xy*9{G5NI>NkmP6v^EB@etnO#$=T%wRX@3}epI zHapB@^tXK~V%S~P^1x#tT2%S6CyKFtg};(L`4aUB<+@+@SrktqdOKy<{Rz5-GzO~; zNufkh*w-(K+1ya?^^5U4c6sggGC^KQtYnBhJ`2FV0n; z8qoiL$4w(*!8+36D#!EpA##SARiE}ot(_@Vy2@V~76cM)M3YU%Hk?{Y0T%O~_V`^X zg8p;EzXU9dH*y-8Z9xJ$-kL@o*uJ+7Uq#Glh?|}p18@cC5i~LF&CJVr&`qK*eqolTJDt1TS74R|J! zqlq=Hvbjf2O$7-Z8}k!3HRaD^VIc(O0Ucg_b0Or^lAU*TGJyhT*Fv>QM%`hY1Uy}N zjt6mYn0)H`E~UzP zrUL$l`s^3r<87>S8#Qyor?`4g^B;PcErEQjw)qd$W(VpezR^;YaFD|O@^d*=U^3RR z-3`5l;8=BZpP!yoJcCj6Ur4RoU>T0<3qa(`Bff_~%Y~+`D7PNdFX0{;0K**4yxcG> zIQ3XA)`Hgw-t#?11!M$YP0lnsl4B6dag}hvyTnKM=YXcV9}DqEPfRZJyfGg+3qVVO zDwZvg5hq=!7)3=pah>FnXBnFMK=~Y7I}LX%g5vUra=dnV^ta|*58N(+bq-k)2cj_T zXjf3Br2)(5d_cJfoVhn0V3(|);fO917LTCPGpBQeN9L{!i^MTyo#o0qQfo@&tLAj__Fc{rKwl6Go>G>vuK00;sihUU2SGjtpZ?$q9?ah_VJu$3y z+p9;gqSuNhc~Sjb2p*(8D8oEmORw1;*d*9nuP}^}L*lZ8)IT~3hp-R9Va*UHKYvea zR}^t>+8I>YM~UP*MU_#(S>7XtRJ#ixkQqvcgqcb@4PMo548s40b7eVxdMKe6`0hlU zs}Un_$e#!W96r!>NK29PgLOG6tH}#MxGd7YBbRJSDLUin9dowz*|6A{Zz0?AD|Cie zi&GQG1Vmj7ip&#bfblnSUs7;i(i9Qj?s>HLUx2KKRk%@{POSdI6w`RA!lSyHdeKBn zo^Q^Z4wyigUgi}_@D{`?j3T)`f@pD`tiziL(G|#D)9&ACTC5L3VE83fpXU9OO0T)S zGDx)of@3t7gjaD4q9}Z|(jq{<835@(T&kx#jzC+~JWLgh&>@?-NzgZEBXDTA%64=> zolO+ING1rd?shb%q2^jwo;)bywakj553Ubt2$IeZfs@x~D2{3LAP1gRXa5ta!q z=edI9fOAs-K?=8QP`7plX`hyV=sy^z);Hqa?jDxEEs&=w#u#cX_i}k|pUj zvgDHh-c>Ju71Dgt+Fbyumlgfe?}&oeexnbJyg$@ zm}aRDm*o8Udv~}q`&J>gIqK9e>EwLGBp@_Sg#q2s#fpwWGZ#G*j1az2bxe=Qc{l=c zbITE@F8v?SerI82uY?{YS15Xk4`@3P8a0 zM!aWx_%1wO@e0PRJX@KTziAd2qZ1i~K6+0bSBKo(jfU`cEXyVsqk3xTf;=I?*5#o^ zh)?hPM5-yx0T+H1XKt2JGdW|PF?4z-9zPfp8CaJTuB?KyR8~PFhvesH$D7}i(<1_o zVr=c`1IkVlW^FUd^i_k$?4HL{^+$+W(M6xVt{lr=={I~{mz0t@jep?9b8?dVs=2F-9&Gw+UjelXZn!Z1o2 zb$MYlA62u57n;B3Z{^Dm2UINw2X04c8(c{xu&xE3kTah5c0uDy6n%vcf}k;CH0Fw$ zI>gv*hBvfp?`^;d^a^REQE=1a-tcAXUOR`lxPP3QSxK2v3(sx8Wz5j&rjC>m@)8Igo% zUdcjTC~ZFXtrLi3!VDQnPS#we$%THIPuW?9(3Oh3Ww%HG$PjKla7Jvveu!4 zx5~f?95w6x-{=gb!YPS5t7;cEE}LljS^@S3y-aGt62EhZ1W19Z5_Nkxim& zMtCV@gB%qu>57yP7RtbiA+SSQHT@-b!x-rKV=I3_3Z|YWr+C`Sa>`o_jEfC3yA_6t ze}j*59%$WlZ%0efAH&_iEl&YOC9uc*Nyma9WI@@O35^t5;HK_nRhkFbkIe* zmTnh02Q2BBANXBbDy3@?&b|K2+vX$On8^_=Ei!>z>H?hFuf+Y`C``^&7-^WwUF$6| z2^)8&FDePvU%5eIZb()PUC|hNf69B8vMT`ziHoQzrBV&Dl5a}28W#L0@fV@ z0x!;FNf!3w(9JU!>ZJrtHIB}~#XKK**vo% z#cd5*u5tqAl4?jT=#Y>j_C1NXfPzZ$|C1MTq=e9t0zWc*lNL0xzDPmw`$uwvx2dPy z_$R<8A~LJ$jim_<1M3Uz_TD|Wvc3$?^ffT9(hiP5fTc-W<&K({PrOwS zJE_cLbw5F3ZyV6Dx$=b^zzVAo%jN?#BT0@7i$zN_7+kLl{?||AJb}xqjr-%iR~n%0 z+e#{IJC5VCZgej3tzJ1Wp9`(iw%RTHJ=VgTTMsg6hRP#8uujYcw1)L?n?$Vqcm z{t_wolL~`Od7f7C?Wk$n7rcy!32NhSX#P(c(IH{d#`YTT>xT6^co~9 z9Q;}a27=$BR4R+IAvwQ8pyUY;f*HSSOhhRgc$=h&J1-ybAR=Sc8H`=@GV0Sq>11$R zMC3bEoD%~1)vuiOgDVhQ@O*S94;|g8XyT+|Ax<4X>E6+QIbnHG**xePAXdQ&j1^rF z{6H0-?}}g0-9h2~ktGOqmi}okjJ}!G1@JVs(`b1Su8azJnP0k1c1YQy!(yQz$vVD3 zQ=mZp$P10Mjz-%@1@uWsHPB|@pm0|WK!!-bL8yWtQK<-smF50^5LkP-3*xjR zXb{!17qr0-#|2W#x@#7ovRu9v{T!w`G0BVr*oUAK3g9+Q9YmowQ6Y+C;+@WG^xF!l z^K7?$qmlE(6&`Z3$qOE8*s?f{-d;FgMpu|lmlk-FM^?exqWntYXq^V%d~ZN=qMY+> zDZt55#z~_CtY5K}>=KoENg3I***Y|Wn3yM<3iWAisN!NDAgr}um-ixgC`&12^V)%s zmSx2>SnSUg7|}?#=R@OE{k$h!_%$S4L@`;Rl-Wl^C}{S*o;ga(O1J=LQM}m4Q$6Oh z-qx+sXCu8w=~R*ccF@=(yi2x>!c5k23m)(MirO#?AfUiPie7NI2W z{PbN=sRVgFta}fx)vM$k#coAK1JWqWfDW2!L4K)&y+@W0Aal#p>2>L++c44}@1oB* zC9>C8b5)s1nP+qNukY4c2WECuddRNu)PpD?1ejmp^rlW#Q+fZiPB}*v@WJy$%~^3C zBQFu{8ped^-C0`l+tcLcZArQYxao=8iN4Z-_OI_;)|YE_~Z{T(^V!rwf1~PDy8wHGc0AvAOfy840?6 zzI(n~0@;V`p^5M0SrhT2=4y{qBM0PJ>vl76ZX5p0XXNycGYk>vK`b9~X1*O^IQYw8(62;6VEpX@N5(eb@;ebIY` zEG2!G&@LS}1A%7(n>k7?w-G5b!-9cyN1!-D6fd0z?z*YwH9r#kG^+Um%aT{efQxvo z>UEED6nKeg^5$-c4K>>{#uk2ECQ&Yg748Jb!s=eAMhl%B#GY^Fa*u67BH=8}28Zp= zDZ#bnGWF9}XpFa{N zLJ;>-Zk^4fK|HyFy;yQr+!j1?r1#>8eN;OdIvN{h@p`l5P1NIDn?B%Q!jWJyv7(~B z>81OEDAdM>9>V4Rh6zIe_B?Oq%AEBeR0aa5PM$#XL52?ES46b4hDB0c9mjy5I=jPh zdy~=4XH1B{0ujy56#hUUg9;Svwf zFW4tr&&sKJIeYMg=(UlaPH2rsATo=LE5}iFLgn4oWa>Od6*b+1y%PQd37Zu!rhe=g zT=XX!VAoKuJO&9#a~q_NE>8M6U00bGS(iD{8y46@6cG)riGO8k*g7;6bc_rDj-E{~ z6;8wfE}_!iXD`Vy*nILF+Z{{{Ge1T?NYB^Zpl%+W!8#Ca%T))i#K@nE;_>KtgM6$0 zPTR#$>GXrVmx{undz)MkNckzLWrRQTl*jRV!Qn5C6EWu2FH0#$q_V09mTp62qU%3j zI6KS}f2d`EPj?lKVx69)OKW?-*2Jhr`34Q@4hsU0=I@E1R7+0OYA}A7t-2x0Yz4tc zl1Qn=;2_N%+2q2sZPpWzfPx^HL=920Hd4E}GPrKB-PW0yH+~IaA&X1ekgWo0b6$4& zc@|l?W@~VY0ZLu5LBWt-81#ko^f7%YM+}0Z2Y6|?Mv zLwA>K(c+w0W2^CP$`QMv>*w+Z^MJEMwx>(#ZYu9)|8M02G=F5uA{sNFSON*Ez_+~8 z8prRflrRlr*bYxmB%~~PwZ@J^KLw*^e)tP!rD0{Wy)^c*f(Pkf0*iG5ZPo~R@q5Ny zz_!{swCc`#g+f!^$>Gjvi)qIR2xI_ihVd(mjeE^^ohX53K3EX7L|u3JW>UqTqOGok zW--_)n@7U4hq`&zxglU$ga>o=(%!yM0@i-$C28#jf0>IyYw(|AWYh5aO{C@;4`X;R zcj!4f;#7bpj(KDmPl1+8@N;a!Va4oS5=p-SwE(fEZNmi{(uu=wIPi`J9>A7uIP}q* zg6I!ku9_D!Egxbm{X-G4`u?Qph2<8i&y~5)Fv^L+3oCVFh=^P0OMk?++-s=nV zcb+y<($VSJaUvC;{Y&!a-oF;?-_21mlLtq5}-TnG^f6(5XYOR+L@(E=R47IZ-BJp3P_JqyFxc7d`ff zT%wQt*u&1LI4lHRG1C=x8lIdZ!Tj7~t^0%`Me(+3JRL&LX^{P=)4&8k4odr;KZceu zk2H@qc}5I+?rfzcTu07RWFh}+lv###(sxA0mf3k(ToqgMP(e`Km`x0c^Fq4B+@2`E&*S40v@N_&BX=HsIoH)%}P z31z-U4vcIc(52j!$2Rl`)lvQQWomo7)YS`fD|stLe-MyIyMn1$jLkj&PIiRhs zg@z@2>2k?uM(4}$)85U7@2g$Xlk|C@!}Q)I%p(nFF*JR_)O~A=UrKyU)TqB^dTHVz zAVVoYpw^T6?W9M^@@?LMD9H}wdGnZ*J0>Ywvs7u<^5uu(c>f2Cng*~XCjL8wUb4BP zXzNzv{)7#VP-1q~m%^O4mtO?%gKfV(Mp%+xw`pZ2JPJ10(H3Il9oBE|@Cd%Qny?Cc zDZOMW8a`(>WqV02BQEk=+Nb)!PWw}6^g9&ZUQgtUYy$@HAcR^Koo}d?dCN-~zlPjEXLQo(M@hZkk8-G7MzuV>C}7kn%N2w~@q3GVW9P6HmSg&33fe zM|!>5gPnxP=>OE@F6#LX9Nq7xeUQx00+N}WONMfbHe-JMHdRqpsLQ`FhrMAIXeS^J zPvujFR!GU@^3-2!l5Mh?8Jgfp;J0j^M-1f?VnL9%VzWahR#ovcs1x@>x^|OepW8tk zO?5ih_4ns{6W3bPQMC{$31T)3F>u~@Rm+v>?;^`V^iK@No*B?b5Lj@&D86f}!AU*X z4OnU78&0T}OZv;S_db)KJ(c;!e`>dt@>ReWEE8vs)JiJTh#hQCqxDiy z;Hh(z(86tBu69#+U@x&xu4pi5fJ1+A#-?3oUUC-)N<&Y)znyz9(!|EGx8%yUoeT~? z;T2z$ES+=<_o`eAl@|1iM;uki89rd0PS{e_x)Bjt^fRTeso|&7NoeC4ej?t8rTQuf z<*^#DGNrU^y5A*%Ak3;h#9rzTs_2i1k3-nE)#Q3UCyb-v-zRI*D>lOXZGVv|ckeQT z=}7IM>o$Mv{H6#7Ht%z%Dw-6wd#UF5z5b1couFs)IxK?bCjo%KBK9~9254l*-zj=1Yvo6 zWHy=7@+cG5Y@XEq$NmAJI!G9+yg0nh)SE0iYp7GiOrc;Q#AqkJ=tqvhV--vWr} z-N39;b`MrZzH)?$vLp7rHs~((Qsw)ko?3B4PW#-p9Mx7l%LLqw!XPMGVTIbGklDr5 z!;O$MyF#=3yx2P9I4Ipj?;{)#fh&V~Xk@Ki2TPktOVRNUTe|2Jm78IAK}<4)_f~JB z(XD07ROM~M5!NTbt!Tp^GTPp-j+n!H+SuM-fPMDg7X|5VN^rq32~7aG%srtqob$kSRWn*(dDgMy%3-SNr?5QgWrId}Gt?@`lc*a2d_o z!f(AEq4*Y4V9wLsJZcmu2mQ{(G=L)$iqEv4S=~<{w|h+BWSiHm6`2=-5i_@*eVl0= z1zoz!6QIaFw7WR0PP$&KM?{wi9d%={ar-@_qx2aNM84(r4y2!(YoF(fj`<@0p!zd} z$(;zPh(&};G%Mw%-rMCMSXv>cKH~ru&)*b3H`!K|ydXSC@8s@40_s z9#2XFp217Y5yJ=~y09QPxwEo0f+;{uaawqxqsyG4)=?Z(_KLAw3N}_I)zkgFM#2}* zAIu<=W(SulsGGNi2#@-0H9Qa7x?^-6i1~NZ;J3}o+Tk&uejxtlWl!JS$|m_y((G$U ziq=)QLjSMv4mMhJ9^C`1?UlWQ>0%%EiLrw2GUs&G_rGUf0fjbj-kd1XXYd@^e7g6)eELR(b4^Ho_-PtwzEwjab zt2*y2p09vg2axb9Ae9<#j$?`e`xAxmgK3mn=-Ho|BHQKgmOJ1?Uha29{|HPRPl!}h znJi8MBV}VJ$ji!9$P%Ak9ZPq6QSk-0-PoX?EY2eZA;q!l4(SAI`DK;4p>_bVz2ZeX z)(`L1-PC@i-z^@jQUnWM69=|tgb4>T0_X8IH$CFAW)&NY!fmrCp=N7AOANJ@aoM7LJ-96 zHm;CAAub zKqndhMrC?flZdG8Kxo7f!H=3wb`(XDsS*Wp+&E)Z5@d2)%1a!@iQlv=Mvs_CEG>_s5dp;o0NEwABFHPca6#lFnI;9zOR>UV))luTc3=|zsO7@c-8wP zW%zFK;)Eh|b93Q+g{TWT0``MyJA|R*=AOy{r^X@)vZjpWEj}RV}7BT||~*PN)x? z=g5a-fH(y*otyQuF-JM>C_+4TKh6WN(Sw!yYPs#@e|riL3E)4*{;PHO&MH zs7niUo*(G#NBKRaP&Sql*%4#PtSl^4yx=hRxYA6EVe9l2kiSBMAk986x7eA6Dv&~V zIs-G@n=N=q7`bK|qAgG|?4Ws+AWnoB^vdGiECwIF_e{i}eV!sR^LrZ!(5~=c!#AE) ztRDKptzssNDF^gO&}b*~OR~T5fklou**}jD4V&pm|EUi&l*AH0+V0>KXNR78v|a}s zge0Eros=RzXy4VZpq|Wtu<~oulC`%SKD-*qqkBK6?Qa4D?@827w>|uKloGJ|QIJli#lgQ=J(nV(Qo68|<`!!^Uv~f^&(^iOA(AaktD!1KhOe^_BHzoO zU#-Ohg9Zq9hcO%2HIJAg`->!!k-d43hg93($f1rQ4+E(0!}S!5JOuaHKyyVV$t0Uu z!3>&Z`Xt*iwv3{UOBW?ZT`2>-_PtSI+6I2)lqostV`6j?Hox~9{RU(NxeNpkakUvf? zP{R#pQYvnRe{Tz=NZevDu5jc02C80@>6`~JsqF3J;2HDG60uL+#ejr_x;!n+ez%KQ zE?lW6v^Fi}EQ`HY*(i&i5kx5?(}MRH^GN%V;Ns9T=^TB^M{1ZZD(T*}{si$=T%#o3 zmu%c_kHd52XJo=Y03R2^X5$je9lA4AZ^6z?W6N)F}eIVBI zXm z=iZr~^h|DNdVWmOlYHxMrBYw5r0QMuJ}b?P%TAF+eAmN5*svrR;16iMzto16G@gK5 zG<%t%;9Qsy3{6lgZ5|ZIrFyz>0R&IAhWUL#7&`|+ube-E+o7W;++MFn9Za8ZdD}zz z9yIxrT7Qz}e9Si3{)|Ac@u9ui=EHorB1y7zYQZH7qVcmwIE>KI*4U2?dZEz92z_?v z8!6)k9so>_Go`Cl$N1U3juD)t5+I)EPnb(|JfUnGeZ`s(_bR-ce*JX@9FN@5%aF4v zBL;Q~ zSwKlS^6)jUgh*A&v{IMa7DFt}v){b2ie9e<`d&G!%&OF;J}f*qVB6~{A4TSUlMT>m zTuQ2BC;Z6a7#4%Dr#$|{gKbK&l@aYsMM$8T8cbCc{X&X@%B^ps5_`m_i7d&+bS|lp zvB~`I2oO$5d4SwB4bAg67^D(IBYnlWV~^mOX=Q%?DdPAk*@1gUz*6wDDzTs0zHuld zr~9Qyb>jm_7N>8W8XyZTTSE#-hDOK^ zHxNLRq1Y}BQ~za0|6f7f3JafvXlDq>yOxC&^mW_?3yS)j8GKL6K`Vb3awlUv8An%J z=PK)r`9v}PcV}~Wbwg2TS+Ul9Mx(+J*!JP;CHk3zCW*HvI(up*KU}q5vWxUA#$#nryR@aUYj9avid!{zzVJgX4dchJtqVX+ zRr~q#nhnOC7mdbbjrB?sVnG69m96=1loQpsVMfp)OFFQ_)U8OF8LKDk1$e45e#LM* zDOSCLDc2${>cMCBa^Q8uLj`94>&oIbh+}2is8#Y1VRqRvMs1gG2=Xq2eOpm$cj~gf zQ+2H?P;}bt#+FqWRh#U$$dNKGxAj`^VIUgJ5twat#c_tpu}2Vk-^dzbHbCrpAhbw9 zQq$9*$8tU@DHcXf^79M8sXO{}PVqRW`qvtf zS0)$Mr@pvUl^$dcOhPsE!$b4H_!YlfE|Vc%97$#U?GQ#L`^_f}4{pxDq-u{?k#EXt z6D5?Nrj0x!UpRd&R18=6kVHSS7ZsaNSM}!~d!dZe)#So8`H?7^df4`f=8}LsX+ou; z5M2Z0mzb08;qwED(CVvy{1M`y`|3P_R zXRcRV4H*X1Jm+saebnlbDfp{;_;+2ep9U(JP@HNe<%SYV%R38Q@L!NU&T6Y7isKxG ztFeBUTiM)(uY?ZPUKDicDi*S>7F<+R-xQRqPjaQI{2lpw|2544->Yh6>Q#$LU6nhf2(J#D*k zHi0uoRByDYxrleT%nS}~TAG>HRv8j6Cb$Wey?!z3LB2hrC&(qVT2ig6Iq#ihr8}!< zfz~kh-6fWEssmB2qcu1!Npq&&MEESR$jV4q^c=k4L@VY$oXs?QW@ZBYEo8PWrF`^W zx+27cc$)9|ArW1|^7F`G+N*LMxNMLXtl^#6?(>Qmp?sUZH25dd{oW-4E@{+ry*S^B}stStP~@g)2Pk`>eeyQ0!f7 zNCJLCHS+)qm!Y~fWt>n3bqoYR6nU`pOVEw{46dHvKbV7}nJsH33hSed?gIELg{N;DYGSu!5 zz0wP2K{@za3gk5kPXq`O&hbY8e?)YmTTq6(`4vJ%M{rWRbtW172$D1>b~(pNVf7F((%N51O;mZveQheE?=M=3o-&G_+zi?sO7J+Pgm26k+TZSNUI|0NQR|1${qYLS zFJ04|klIqYC|A+1pqbzI?c4etQTdt?wLDCH@bxHLZ-cU7vhj9mmlk+*tt?$VeEZ2@GFf8@=9>n$C!tCf*br(w}V@B^|;-TB=&YQG#-n_U@Mo0||7@=H?FM zuwMQda)WU`|5=gCWt`%z?Gq2M2A>utCNs58vG!xh-ym#7p9Pj*59;`N}!6 z)Larb$Q;~*30zKJGjZ-6Rt8yeeXKNC*C13rok-^33`CF&;8$Cbfm?ch<<`J?E=S?Z z%)DrLPUIEV8TxvToW@6bqP>(7sKlixsubE8dQlnGi=U?`_78c=#_gi_xpTmDsUatl zCl7RPN{XS5z4C)m7q3f&VCikzy1;#3(3?~}1M(;}QZdVV*nJg@@W)UYtgBkY@gC#T z6HCRzC&OzS-!D-YpAZFds;`97Od!BEF5)<{9O+W93Nq53XEt#p_H=o&d;Vb+X^|*j zi>CG4vAuo-|5tMm(qrLE2#6=H@w^Fx4&h*)H zwU+RV5YV+cjUCw!vN;TDL^x2^q6Bi|yj`RdHgS1`9nMP1O z?^vH#iY-0@G~<747mWGxoCG{JaO@x0h5kvW)GgGz7_UFOH(iS#MODRDCml?p+5J2R zB;hs~RARj<2vy;xmMKNwL`3Zi+mq0PfCqZlYNYv;#SFeL~Ulqcf~qZi(k1&>kIoyApE{e3ts_;-S&Pmx|tb_QF%M2=y9#vNZ=+cFco zV;Lqof|k=xS2bfhIWtm(ytf1yM~%Xp-I#d~twfaTz1E>MVYNPj+&xE$uFx07)${yxw=$uNCQB*Lz8u(08ZQc3TM(V_qzRyMPIJyaAv zq_O)=mD{?3*6*(`9@u2JzY4NIpg~sgEUKgFpl9f+;?p#Xy=(92#!TMNt?Y%1BOo6%;@R(v3)@JrGm5;gRVZRHwsKS9ZAbqEvP z_IMF+Ocv3h=c_6={H!IIJkl7!1PPr{6*n-70(}cU=oO&Zp{awf9V7+NYvC1v` z8J`0=zLJ-q`{7{CNf)-;Lb=XxUe2KG)8$GvB`nJZRinI8avmMZB+Cd{4V|>FMv(>DyMSiN#$1`qjKVv&lnGur~mT@^@AQyYeZvlrY2(P z{--VoM5EfElFui;?*X7~uy5#3OMlnEkB;H4o(~<(O)U@n6pJ1YI*N-%4)`GkJq~mT z4~+uwO%!qj=nxhX2@o)B1$+>o)M1^9EY`0P^%)3jgv|LP67=y(T|Rp`5?W?M+p{$vB3s8DbMeZn|u z%~KG86z+Y&AXM+8X#=|)q!-^%;YwGYXBUC1_U`dppG0AA?_Ez%@}2$y>w=n?c9%v3 z3D^{glh6TU^PibqXbUUHC-P6%+Ph)-O&}OCBfoo8)yNQnK@aGV>CBubuWRyTn^>5n z+-s_$nxuR;tE1aLK~;Nm8CXtREcn z9xYPqG6YWMb_(2&72RNQ!y=GX_)BDxF1@eeF#Swyu0GO}=E(Uu`_%^SuKdXni7p%5JOT4_0CBUl?|fQA9))r>su*R(vgz*el1vNW=(kiFU3*gvP+P%3L?6w*d%lE>V%p$3TA1;Uz9tqm^ZN~!`9 zqtJ9anaH@l)J9B`@~gQh;;Z~u%e zRB&PTk!zc8_T7;K&to2fftGbq92}VDP>Eo1ndA3yH0je5B9sg9n1J=4q3OplTRva| z?wLNRGD?MmvI9NJ(vXB@yWYaoLCl|(M@Z0^QDJaD4|W^Q`08M4qfyb1>EYv~` z@DX=FotO!nO;1jl6z%`L%Xdm3UKxBEueGQv zG})}f@HRR+qv$JE!lZD2BqLuvm2I12i6DGKtc4d7jLMZvaV%`@qC{t(u`C=&tKc7v zTP|#BgyY0fX(PR#br;AB1op7`3dAr|GTqa~3VK{hL}K z;~9!{3;z%UleKzE$?xfe7wUD9S_?EJkStJV?%V1iyXk=8LO;Lc!FT;DyhHZMOchoG zb*WF>!5IJpVOF}awpeK%RQQ(Mz*5j0_Ylsq;x9;N^DZPk(3yUn7gM`ox#=$++ReQ~ zW&WaRJcU8gBAwrivgzEwdxelbL;KcvM<%+~j9876oi}@`2?$^hlnwZ|KV^xGtXF*L zn>z5u<>|sAT_BZC(iCBTDxAjj`fAo*$vuBlXx3>+NP0W&rx>lRwYJhz+={8{Ps%Sk z(z_Vr#_*69B<<7@#q@5Ln`cRg0x9L?S~mcJblNqV93YGX zWzx@CcqCkr+X*>v>`SyOFqVE$<_C6>PY5sZZ#u}I)VhlFVE}GHlEcq)4;+AR+DWKJ zt}}TpD#PI`Lj&LqTy)isH>A7(4)^i*%Yr0g1uaF=TP`@4|MZ*qHzKnLCs335jkrcz>j-Qn=LBNI3s|s3v=fHEs%$F=IbQhey#|(*O zKK;?EA%CgREHoT)+tC{czu`*#G7Xy^M-_FmgZPsmgE|OtTnmY8pb&blFeUkQo9RV! z2Ws+*Hnshs04U!z!%UnOMyBdpceI!UK`^>5@o-CJTViz{Cjnrh3^}w1!aph*j!R}Gxr8Np zf&dBwUZGPP$pKPTRaLRB<(KC!RA5rs&}^&Bs%-BQTm3-UE`C@h2HeYH`JHUkjLuv- z*$Zl;+|hfI0_gL58ZNpNH0an@YnR1dRjMpGb!lPbaxYPi1ATxQ$pYiqzML%%nRgMu z1(x>s`UN0n&3%En)~MnMa=1rduLg3P0{q#C9Ou++nhA;z7}8h^J?*Qseixsg<5?NGI3&Oi)h@|apW#nT^QJ8YPv_%iF44zGrG`%KQQ#ZyYcjsv$|q;f*RbiV z-vLG%aEDLxE&BUXKG_EuF{ulQj&U8}ZF0!La8_mgHO(Sc*%ZMqvd)*4~1kir~|-K&F)hXfhe-d4OqaeB#q_>#t#mwA*Tv~ zXk8PVKH}Qq4)Yn=V0K~;K&B8#3aJcu@6D-5Nm)s%W;`POHk(?xS6#mqvIorncP4~N z0|UY8%M3Hc9ER94 zw3|yootx!Du%IMPda2Q}M&N*Y@QB*(-zzwr4Rnw`Y86a9<1n|d7Z_N&VnNwe*#yao z8hstMq1tBE{(f#(nNNt&S80&=WZPm9r_3)a=H*lSCJ7glU&H(W>??|UvJd(wPtSIZ z_)vm8UyF56LM=dUeOcl^HhjU_TO04HyMV!)+DoBK;Pdu_!S|`#RqR^|AOiDP$cw+S#&Qf$MU_OjI!Bd4AzU55k30I^#NK?-OdD3zJr@7C*NDY077;UNL z%-Jt(ID2fB9X==#!IAf2jKlWa13*mNAEG6!ErZXWQ4lWig>phVWk@X?Ya}AMsw!0K zr8^zok4;mPbDdx-nZJ;A7`0AceclCUNQ0x% z5tghfqK6D;HYX!B_4TG`Y*Iw^_)Ma&8oHC=F7_B&E^kLPG3&^9d#L~4OvjuSjKlQc z?LY!YSi$V2+f`-eI@h#;XLuUFP5W?I$X&w6^)-PnTO7eQll2APtG8 zU;-9s^m=nYEqeH-^AiHdu(6MxvaH7t>lN!$|1yi+244P_}UfB+0~5L zKeK!1$)+F;j@dUj;X(#lvDt&R=MiBt>#!8Mf;?v+ug9uO!<5f%&0X_s|61$fEaZ?% z%iKJG!&=vxno@4fBwSzBRXJR23g~4M<+X+=!O~jEKV%00v%L=Z4xc5n2yB@HG(FL1 z;ory;<+Mq?`s-I|3nsrm!3;SnDLN0E8}hk=+7=^r%>(Fs1usSk=h4b^&}RI>p<5j% z1cUNR7T+PRQ^{6i&}_qZMsw;A0wIu*KTNo0p;g&@#ISU3ptb?hw(z>xOmD(qcA+6= z?s>NPzg`9Yhff3+g`{>>w?@(jiYhD!N^YxcO}|6npu;Tb*NIC_(8sD-7^KFe{*2i6 z{IsF2cvq2llLa`$KJ77|{5SjO|KxW2pYxLbe?3?tz!=Z)9W8@O7&)9CIrLb%w5~4L zT#LbfpBVpZ%=EuX+5a}PwK}k#|IGeDcPT(1>Hi0R?*Cv-5lozZK)2C6*-9Qc=1oC8 zv3D4izx9N`cB`UflS9^XSNCT@B`_N4nM>Nl8fd4%B ztYWqm{K8$DVnRsh{ksGj^{~UzeVDQ%H?THtY@5r}FW=-c@%p||M}5oH0~qhh81?&< zHy$Q|#2Z$yLj+5<1wbU`C4aO?LO&C@D8n~;?<+l^<%8!)q^tDhilI8(U`=bhtCK7N zf;@73J$0#5ToDR_Q?zsyK-Jp*K{K1&kj2<5by%Z14KVI#B^aHBo3V!rfPf&qs7E&G)`>!~WsdT1 zg?~?>Qg4O*dV~f6u+k_;y1o6(zj`C5w#UJvt*0f;*v=kJRfTfjKysn=hnE~^(y@kh zQVvMsC>;Q_`ojv4!=C9jJrU=acg2ZxB-kl`2hPd+z~RGZ#QH^9@XzDyEkPFvTF_&8 z8w+UhW7vFg!*hdYYp+;4igi01k_?ywDjMct`Lt5l7U-Q5izlOVQ~Woacqc6eEs40@ z?OyRfO{G#h9YTMnsXIJm2Cp&ksQ`sb1q7F*%^{!{XRG-XCg9L_fEk%k!D?JKXEyAH+Wsm#ZG!24iaitx6^?7jV7b6PqZzdm=v$=nW+d^B-EH5$fk|^C}TZNNezC*moe6F zE8y+zftRUL=Ci0LXnxfnou)6m2SAY!vY{aCd(plfh;+*pXm9Cw``U3xNMVvK5iJ4F zg$|RsZ;?*P8)t1%Hl)rDxDjnloe3q*0X z$fN;9Cy0f&hZov4W+>PrS2#{>w}V!eGikZ9K3^r&kzv)(R~h2tujHx?ip(pg;j&}e z7K1uaz_&aSka!Yj*JU=F4h+wOviNoit*F7*t%VP|N2T=N%NH)dp6V&<2H${tSo%0d zwE%D=d5pFqwN5lKI$e(Pe=mYxvdTSHWhV&J4m7Fu;0tFVF z!bdwvGR&don@Dh{d(y)JyFD^VVh_}cIou=RFzc1d3-ntMl0Bj?%}ZBmS+dUvZ{`u> zcQLK@9glf78K6_Q0&wpICk@oPu-KQSje30Sr>(|0E9ne}(^oxY!UOm+Xf%@Za^KOa zuQgUPSQ+-9zVUCa&fEZ0B6i)pD%`XxEzy?L0?MQ%y|n;#tR2h+_Vr|~$5*Eb57{sl zU&|sLV>QUvZ0-EG4pzEuK0CnmNDu@KeL_-n4eAibeTC7}Ta7J+oS(E1l(lB;5N(be z`c>1pT`E5>wlgaZ-aCC1?=8p&rAFvbM7tP`wU(nhI7q3)`K0+ezl@3kL*$P|iEBKb zexfMN;D-TV>D865)RG{l-O!^Q1eainw~7IRe@#4AKjLGuixis(qNY-yg2z_=?3Mny z!#*LMyP!B2koMFR!9vU5*njvvdSRX|MV2(D5!es-bc~y+V)M~G=YtI=j&_ED>jJ>a z!c}xdP*+bc_j$+wZ%~6iXm&ag6HW5UzTR$+oDm#hIxbxQ!mKofWC?-C4ZoOv+eGYF zV$t~qH6#Zw>**{s+g{><&%f8kxwRcBKU`&+Ip1y5278fk?t$EmmZ2ZS`kmBUs1vJr zNVm6M7K5<#E|H_fRhMywU#Q%|LT)C+ZwQXVn1FCtgC{~OLpy0Vbauw(Py%~QjAI*% zX*;Xmeaq0F;r_5!W(zSH6-YNbX^~`{Wk38Ap6~VF(5M4cVxwd0ZQ7&a8J4z;VWh89 z29dOm7g;ek1qfX7QmO6-S!6C?hSaAyvQM}Ba#kM~qK7Sn>P8U`xjMjP{?2@6A-@=q zJX*OoNryAt6>ub4+7!3Cp|Kw6EX~-Q3pj=j)ueqYXHTz`zqR=Y+h=QZihN;ri1t&O zM?><18oJzovvfF|6)ztA_GkwCh;Z4TQ;3*bW^=?ZNxiaHr{^{$9SgM|;Urd?T{MT2 z=P#Yd!y1(g;j@4H7IqG|Gtl4xfmjU%8(T=7W>B)E%q_MD!jZt=W#EsFU6)?~>r}n0 z)g`jx@fgS-AkximAue$xgt!PB2-E_{7{Y$%2tkmd@@ZnC zRw(V5B`RqdXoxiv0?r%MPF4Vt&~}y&SWhxs#i8|+GQW3R9JNVUA35EpcK8xsW9|ma zqA2Yn01?J0QIjdpjt)qw)2yvZR|NiXCf3crfzaX^Y2XJ|Cz(eR=lEFz za2a3#?3F&ZiF~5W7D_)!dJtKQ+>D`&lmxHx2CKnL5*koySQt}TfWXaOX8}LrJ_9FP z)y6ICOW9FoVQQTrhc1kzz(mgUO}?Z!x>z&sRr%x2iYs<2?!N@qmKU!~>Ja&31`?){QI zA@s~Gz1p#b`73|uAVubJh)yeGKBXj3Bw1(04J9Dmo5~pPf|`zOBnW*alQ>3()HF%c z>mtYpxw=PZGJecasU-r|z$19_iuL-|+@oh6MEz#z*RYO^7Mkc$5R1K8ee^_oXKNf4f6KZiFV*`enEJG zWDA&|B|WU(?i8$Xlb@GK+`(G{Thi7klg_Ze@Z~weH!bCA6XuFOr4HoT(-Z2U$-Log zsq5n*Ru7#b0j!=l*e$BUvMIK-RW_8#Fr5RQMJPl*X47{Q=yN1&`tarebk~C;hV6y~ z!}Fu>2qOT9J2RWi*R7ucfypq}qA9KOWnDTG5$1o%3Jl**U&lQ74V>EEL=I^#mj$8~ zsmq(eQW@WHA{AvglThb!3DH7e3vk2Dh)Kvso^>g5mM;xeBj?HSMS#s;SAp)U=k|u9 z&>DV9mGp&i$gX<%vBXPOS7+Tpn;sify#jhYY3G!n%WKxJW5J~8?)>a?8 zq-SD<@*cma2IG=kH&9@lW6S^iyL*WrC$NPQV24kc3-du5;`Qdr^DJlbl*IsC%*5yl znJQa@LjX|)sC5XIus>J3Oj6Qo2Xfa7+4=Hy)#=F0*+`^pAT}3`fsb!gszPD;%P-u~` z8h19hhAy&B9WcuERJ@2fdj%=(uIjbAg$)M!1f8Z8xMdoE5U*bNml~Mt_Q)eD^&Bvp zrqsyTII~UXx%;7wJ9Rqsu;Xjx{=K6F6k`zEQ5k4Y74bsf0*oA)z z=I47!Db$_l3AL`O`t~!|6@M<2!5|sk$QPct=h_@XPX^26C?g%M5GJoa&^RaZ*x`;B zytc&x_{WWs(3QblXq0(zN_RwroTl6r$-cuidv?nnJfzHtu;^^1BEJg9oOn_KJp678 z5XykR>{z}7q>_|^2=XlyCbEt0;=uacSdgq4;r{Zr5*FqA$0%ECO{0qUVu{aPY+#K^ z*4t!vF(&R`8QYV7D?{`o<@&BTLGP5;5oicKN0)v-Y(h%ISxx4xNUhw}be3)&^{>S- zcF?Qk0n-^0pe#C`b*cjka9zsu8y`dqV1)&^G^wbx#dOtSThiW{zM^oPm6gkfd2;Pzu6|{C)H!D3P7UBQt+bFbV3U-Wdfc;Sy0%NMcgS!sHC)0*r zSN5baEi{)6PkyP15Y~wgFETL$Z^ykg5c`JhD-@39!NHYMo;D-~X-1{uKU$9HlwDQQ z01tW@e4Cy$hE5^JVeR4v$t`g5it+l=)U9h4NcCpf{=aK1UXZahk$JGXnZN&4*d9mb z{YTh!+Oo1$r8YGc?%62>gFGc~?zMVO3ztcd4+15u7}?kZk#I_gBA~=pVO#klQY=c+ z`xm>YZ)yWX$R;WTgA!GaZtQ_bIwwZsQ~Xh7{R=>-RGe%8D1On<+75`6LtF#_C8iS7 z(hre*PJ+R&$XRVu3-JH@!JpLY=1=Nm{MsBxGF1H#s>hv54#ZnAWHxa4t4M3UY z9)dAO=BnKJKFbj^K7)9?Ff%YtsQW}6oAh-b!%<{w2FL6r@sADosx8laozg+(ctoOTL1x08y{U`?f~5VBgb^fsAN&f`qW2l{y|8 zoL(EQ`grdOo00~qDqlMi1Qi}|mVGq(gc^+1iXV=?Km>KZYe&_?A6CbQb>V z5S%^8(!c=MCSP3XRF6~*wU*w#1;8KEV?DNw*3r%D36DILYcj;dE^+Ad^!L!6T-7BI z<45~iO~85qE4ceisqgplKs^`wnXaV{NEMj{JevXQ zzMV6Iid9E$h`W=4sJd%<-e<}{wqA=1?y{hm%})m(?j;0A_JT6;G#9NQa36#q5_;h( znG!AAAI&kPC&G#KedT+!GTYTxADz+pwNwPm!+aaWlz+bEF|#JRiSgT-8jL0O(PDTmOaa%vGkK{VIXM zodyXl`JzlqPIAk+CZ9%4#!8Q%nxa5ZV6qrN&c{Qc2VQAe_40fK(fNwbUrh9V<=dzT z@@R!^p-UGJWugo~?KS_^K@Kihw*gqtsnqShv%3&lVAK3WF!L5PUHYi}e|ShXYvu!s zBu!|B4wa*ZF*fThbjVmAlQsFqWSER*rP)QET!Ct|YqnK^g%7NKuzO;;A$mDlo zsM>4jjQOy^{4#R>m#rF4kC(S8j`7k>ilvj80YU!$Ts1JBep~ONDPQ>fKG-hR;RNAf zs-(K*cHFCbe+l1JZJzH58Rl22kQlTG-sn|#Geb~mnt5-(9bPh0i`)=RaZuGQE_TPh zU~~JA{7KaWec=5gl4j;E7BUO3B8H3@dM8qDG{Zp+q7f(WfWvhz!HV;|d)%h$q}ec4 zkPY`M#D$&jAU4|^+WsQZ|5AigdE*`38T0h!q>1Oyi|-mn%gDiDyxtVbl`=2Yo)ns2 z?jMWQ=i`Df_)}7fMqbd#Jy>eplwkw^9lr+VZU2}%JF@R6YSD=2>Pc1h&Vc(-KbtPn+d|2Ahq=+;)haJr(pGWRNjpu$7?TbO2 zN=M&e8b<&CTK%SppA3PtD7yqPn6+9N)4%}xe-&sQ(r(fe3<@FL+`hZi<7FN19{KU z2g1TkDIM)f??$DCMISnu+x*^S8(`h27IBm_p4tN1(Z< z50U8a0b2hX`aB~2G&&_CH9_j|VyR79qg3PcsBJg3X`xs1|TvwnGTi26L&d>tS1v+@jNICHsNy@3PVL zoI*`^NXW>9Gk7&B?$skFt)%8O`NrjPTkfyPD_F{~y2)FxJ;BQ>k%PYSy#NYJY+)l* zyZQS~e;?TKd{-S4zAq~TzceWGyFm_sqUt2unF_|)^m-tfo^#v zt7x^Cq4A~Rnb>|o52y$0#qOcwKtG^gonWS}k#1=AL!V7#6JRo z1@eF&1x(9yl0|MxAD=aYSZ49#fVEz1lP7(NJYSndNb+yv9X{35JJimsW76Mi+W}X; z?n2>{Nx5Zi@ljY*0tX7Mnm{?lwRa};U>dk1UmxYBmlRWoepk~r7Xf!t{`PMzQzy+$ z!HvY=9o^n_frOJmz9I1OO~R9^Mi^7rjoGw9hcDEYzQzbLQ_#23$Y)ifgZ3`heAG)_ z_k9<)PAX7HJfQqe+#5KeW0B2{V6AF(8qgNE`;H1TO3S-*L*4tT;v=j6_2ONo53<;Do$EE&Q&WuKJ4qZl|Jo-J_o@+y) zE$pDHT=F*Rvjw{8A)_h^O9+-FkSEEwoZC4rwzG7KLA85}IUo)PmI47Cm0Wi-A{m4W zrz>G-jM$;c5pjF)H3G$HW=F)$t%elk;ELWa`y;JpxCAnIC=#NYt>4W)rC)6lfgly# zSxF%7!UHUK@huv~CLHiVXKI9NevZeN)*oB65O5E4W1iqKSz#zklHbGdXs>wro~F&$ zOFkm}*-fji`*0SM?pGU_>Pp=?3n3Vq*OqbWk*iT|5u$!H;bGpQn^Td#3gmR;;1ZZ> zrQ9shuh^pT*0gV);aUFa{dbW1MCsRIh=GH0h6vB$&IB22(j%zlx_&(8y9ebOeJ>g( zW5uzY-D#1FAHibY^+EE_go<)OUUS&YI%=_PIZy znfoMal&l{01jVgldntktxnKxNz?o#N9LNxx%_q)PRBEB?(Lb~v%aaCNI?<`<0_C4C z>IC*h70AO=hzD5HQ8_}f45LdvSz~3AG_b$Bc}aU(L4{dj(?S9Da=?3@ol`&9I`)dMO#h<^dMi|ryU{a zM$z`V7I@c(&6`Y@OeDY3g1naQ4157m@;oH!plC-T!<;Qz)1Yl6u;7I9E}M^8|$EAUl*+n2nq z!cGw7YEM3_-QX~tB_}`-z_HIpy$p$nn6~n(w*kzfCNeWtk(!dgNS~HR3XMQvsyDjV zqVn4ty}nJu5ET78l>ESa(_1o!?DD{VzE%9^k?%DPH|PZDs=YkvypQ96fbzHo1eaq5 z9=!0P?8n2|TmcPHkgHP4BM!zRg4LaCU$Afe(`msjlq=O{6bUwzbF}VD`Dgmys-xUr^bfO z{@-b9i`V}LHvfNwKd&J+3DyVn{31JgF}oB(%UTK5M?CX>xdO7OhQv7RxobtMY*(G! ziN1=sTOj0Jzn=>#UN_>^Y^D>=EB)t?N&M#()wD;;bC1zzGoW|PxN|M5TX1I> zb0c5UHwh(_?CDtIJU9j1SnE?e4FcdW|6nV705wn6=i2;?sOAioX=#Lh{Q<)Zrgi1D zpO`OsSZqD;jRM?8l- zi}C=y&ET&2BX0WPJujogcMs8->@sJ_KwkM&Q7qw^aBD8P_I`N++GVJV5UZ$c{*elb zb=>Sbt^D-)i+d{bB;Ek`pw<%e@3^24bbzN)eII#-PG5n>yKXxfJ;}}Il1(B?OjiRg zVRomIS`jB$ScM{0O16hXO7f9Mz!P50U<|Zd8QpB%@X^n9t&BNq=yuAW3bV{RB47Db zBFjH^Bsg$y;ko$7H7_E|sQF-kgb~&aK}=};Rv3#m6rFfgzoWbz$XYps;`!}wrpi>| zMHs(`KrKPYaqZh~Da~l>>@9J%pWaDBMYSeiHk`HCxRocvW}~VUgIl^VVLG(Uz&R*zKcNK9LY!B7zqAd(0 z?uB0oIQYNT{h0<2I3^K7a5)bU*}HJ+HVgr}Vfb*kCbqr!nTRg!%{rc?*vPtB6y=)X zKT%Q>*V8YTZcV$fxdpr^7oIxZAF1FL;T7)^HCM*RG)7}&uB8$$`ar&c165T_(Pe_G zvb--@Z6tarij@z>NU8g&9iXoC0g?+&tU%UfHN0o{vRlgw0O*5l-Ih~3_gTHIA>9La z+LJJ{R)=wQT)eHkO|LM9H@gQ+dN@9*9mu$sXK0D**nJcZc{i?HGi}WoLMe($j{%&oEgW=@-3cZLVlwh*me9b~bgw%3VY3 zW7y{zmGpdw%WW>JmoQDRc(jC-{fMa^;Qp#|J9oEaAnUyH>v(6hp#3^5RhB7Qz$L=( z8;$h@ZPE1I3XgGl(|um5axtASH$=)?o&Si2S~@;#Ov;S(0wYahd%VQ+AZPp>{l0(F zfw(sah3a_zW_2Bsm|Sbp-oU+ibrSz8)ox0!XD^V{3kuIxxPy*&p!Ut>HXHG;(T9Nj z!I=%PRVkgj)^P=V{KEUXQ1u@>ar~yRo;OCr;yKKOn={44M;xF}^ft0RU@*jZ_Z|1a zx_mFz%rxf5yDw{VfTbvA<}`JcGL8yP;z(LtOz^oypE_oHF3wZ_>BxNX&;Xy_6Ty=K96lJWQv*-ApvFNa>VvX5+^8u;Z+pkfqW=xD9fF_-L{iB533X%z` zl628}3<7;w(fPMKNNxMO)M)77NhG(_p&`Phd1TP0X95}xZGj!d$NG7~GR=KHi4D(T z3?b~fGgC}~87UVmMZWNk4+7wVJaFfzC=Yn2rHxX}krin-}3*yIYwKX^!&;xrTDP8#nU_uck_+}6u2QX`x?g^Kv{K$o%T4;3 z3Go;ZP$ye^#wF%uSSuXlwtRhBAecJ77A@T@yadCLC$Gw>sImj(@Du8C z8uzda$dB5vS1HeyKia(0^jQ|TiF zVOX-t;1;Y`U4?FAj4E~euMT-Z{V0b$P(4dwSa+KXUdsmwqq}*_v^4x8{dc(=AD9Qt zp8enU3_O1JEDhqNWcqF+Cf$_h?tZ^I)czQw73S+R)+e_RA}+9S-;c{RDqyfuGixDz z`yk`{PY{_f=Ri>;d}&N;nzferTrmvc`~yU%RR&7fo1K4fg9N0c_*B&G;q#RBbcEgA z;4V79bbMytRghb#^fL22v%q-{djPRcY_pu8tWVgWk?L;bgt09|L8J%DOtJCWJnn=b z*rf4qx7YDO!<$66vTFxz`(lyVCIDI7dcS$+0 z(0}^)GU} z9Tnlmp7@?kuimmtXwQY*HfDt(*{uO$TH0H?jqdT`7Ux$I&PQC}Zm!*0qNes^L!#0Y zwWBnlU#bmAyA{Hlzp{4+Mu*F{4W;G%Du_PVo)ioUWRcy&dNO$5;#q8Rd0WDT|Z z3cwI0R(uU}lND-kBTH=rhC1zbTR%rul)lIoChS8P1}qUM2vK7gKw$zAm|408kQFj= z=mj9AZNx$mluMaEp_o1uG!%n(hMZpnITn=%3I%;X+yC4x5CnG~5(%7EBa?!{sR%%Z zJQ8054u#d+ORfuW&wkzLqsB!OYLD~$?4uWX<%?VWD>7HG(4n6N9 z3{D$}SqzUC8+%E;Dd)Jo)v(4Lv;@&oj%})(w=)mhvYA9&yH;wMXeuo7{2B2c$`V%x zcCninC~LW%5DlG@1E8*9w`1}#Hos-f4;!6Fqk}vC5R5$lUA2V>DCWMmk6HUYz)Qiq%2n%BDs)&?}m$Vlk|&9G5j+$trK!p!{A?L zvtHuERL6&4}nBLrOXLDKwl0e?cO)O|!2Q34%%wn-A`G4wT|L31sSzW4TJGx#HAm2evWMUf7$tf5Ic(GGv&D`FQP4xvQ z9)QsKOJ+OiAMWr0c=^M|79c`B^seYq{Fnpjnz3SlAo;tZB@JRgA>$q1Gpnhj39n}( zLdSYLchl>Nb+~xT&aBPCDet7zam4^3x{x!*Xlr;CWBvsrCKXgT0$O!{Sk-Dluisx4 zDIc{d!z#gJ00kaQCuipiP?~G@w8q1sV@6U=QMg7So{#J6He?_qIPt7wxo~>~-1>s> z#lvbEY}r9&WUyS6OT)A3j+Xj&tm4r!Gb>8NLF*c?sL#^?j5Go@WBtxxJm43(V`ku3 zb^O_(mJ_ND#7ys}OcI{EfJ54^M@zLpvGB@5YnHfwX&5qvqL3N)GYOT~ z806$z@RYeii)knDS8l>%JJ$Llki0Z(gU~IBf?dU%JK>NXIhRc!oy}d*1@ppH zuTe&=vxNp9GsN+|G`gGhXa8*Gzh1H|_&Bd_UFr?e9w}mFT;%%>#_FJCLXlrJ~_>!Aw+KTYXajZKim&x!LHS%y)<-B@>90H zEuyLb_iu9M@kn{N>PCW{9FD~PD4bD|Ma8NzdA2Qb^wn;1Q`?5_6ui6Los~3#?bB}e z3D(h5J(Ip-8iH9KFXdz&Hau4aDWtx-7fd1X`E7KnZj22_!LKhAiZMtTMhH2LN# zhA_}s0PHsD76ZzIUb11muDD&penH=L;H1J6xlJbElCk*n%;1Fgkp1qIqRlqM!G(6_ z*OjWp$aLlIXaPDfcW@?T-%lC!{VO+Xe2$_jL(a$@0JJ;~_0DhDih6lyHrjJy9_eb_ zN6E0{ON`ADL?gcH9MqngN>ffRwN+D_0tHER4#-7TzARW0NVS>?ypo9?g+$F4VXFzZ zq}>Sv90pyk-&0vA$ajmAjLA}q{rvaM^zxj?yP2Un)IyAbnrD%xN;^Zd-LK&h+tL58 zy0>#&2xo6)Trvb}3wc5R7$Vtsa0H&xU`R!)E8&M$$i&Fl-Blfv_I*mS- z<|sw=-glM$xk<{^59wOcFO)A!bi}(54YU^+zXzv(Y3&=`1o`PEXXBLWk9h={39?

IwUVs2cQMg9xPJ8$MraXHR2P8wS2n9Ui*yjiREw4VL-* z`{bnX0fo?K(kHU*4H!~qOK)?FBd?FD!v6@_&f@fF^pKGmloTFSKY3wD1GwpmALitW5g_q^R+QROd3vO##~+uwk0$X2!`4| zfK7d>y+ob$kwm@Lv(k4=k}}9)Zm^YJ)Fw>4?`gdg?74;^r0l$N`PH(KTgr)v zbj7uHw)#dS-qAb4y;s~`^_b_=c|lC+q>_A1=^jo*i3xF6_~IG?)C4>nw*w(Ra9eeP z)l64NcZU~2qebUEt;*_L4GRa2JxLh`$>W()uT+y>((-E525Y4h3ncc34%&WehqDH{ zfpZS_<7u1-?C{AyI7pgS;>QxrWG5B)2}B#}WCBgv$NJv{q-R8Ag}IxuOuLpmXV*c`JJ{SBm_LTAweZ6IgtQ2I3v|Wn=OMj*x}$ z;rsD0q64M!-b5&3jg>mW<6X!JQPT2fLvh0<8^yU6LOoX7AHyph2-wQ}?5zu%6@s+p znrR}l+k>D7w5s|TP^_I#VG=1d07zvJ)d0j3PlP-`J;yR_kL6vmrT~eO+Z+mi9hI~Oq=5p~izIJ;Ul#4neWfCI$Mt0AejmP$F zQ7%1T1xbbHk<;ng?-sB@7-8Hnfy9swnyaGZ2~C!bo+Xu5EJEC8%x-Ta%^shy(IdY; zy-dxEQWjilGcydjwOE%|in$~~%luU#ij%9!mM;V_FTXFgG2zB$jR_XtDfDt?Ir2~R zyb1Vlh67U(rxhsO?*P!bGVTLZOSfCSI;tM23fWLH)RxwGjoa9@{?>?Gxpm14hn72M zSG<;GV&zmh&hPdWU4c?qjBcu$sLwh8@JT14>{Fyhu?+VeN@lyi3(K*mlW1F-RmfEl2Mf=Z?%DE0FX)G89DB~ zyi>hiu<2;4j?$tJ?^H=j5Q<3pQmSKV5YqGpXoO5)aXdt9K4@Q_pA7H?0x)|D!69B!S|&bW)TTrhK+ew=rc zOc#=!a*-(np?!2Ocigh3&KN4$PfSN4r1O5Qj~319&-qsEqD>zKmuktLO{p)<82GWW z%PVjEv!1_X|uuGb*P0xoBMnN+RJG3O*whGR)@s3ZjsvR(vKH?|%c?0gd zmw>Pf07cedQgH&Uo^kN3lb88!rT&4DiDPcttS_`>wMz+)C&##YXscVolWPSh!xC3U zg;Q}gp-TLHUDUy}DjysUvr`@j{L6C)$e&r`2Z+AZQVW9`?dZ%#FBHm-P!%oC((Qup+X7 z08Z$PSp}P1k)~kuTpu`gfY&}N#@SZ35(hSejf=f4Nrn^2zueh=?rG}Lx=>1BC8r$$7%u4G!9IKeMcqXv$ zg2Gje4(mlVg=g=>MS_7FPuq`xNmPFr(I0YkIWZ)KY@R0FbC2j}Bt`W6V%o}D5O&Zh zKEZQ*Gu3iGKzha{!JGQgU+x9kIeEZ=s`3<|n&I;8@kbf_53iGdKtv0f%Hj}jNd6v> zmGi@1gw}Wiz6>UcByNlY4&qAGrw}=#7m9zPf;;`jBu3*Yv1xmeh)(W`m6wa-hx8mo zSFW<$BVy=G89=p@6gp58U^56-*WL}!j^i~cdGAl+d~3;N_%Jf5<>_5iBSB>~8~ zXviZG+k4;oc(yH7QN3B`gTt{Fy4$X6zqf|f2{r=GS5p((c>TF2ht%Rg!k|!!?h&0u z!twme<~OPP(q7XfjN_$&WmGigYJrAM-;jwcbVPgG2MATCDVmNEx zaZDGz`yf=Eoy5b`xchCR@}qMJY6{#`u01_!=~FQ#PudBxI?V){<4&^l#;eUx((`pb z56~@_X@sF9C&wvZY;7eoj59ByhO)&66@7F1Dws~qYWrcRYev|z>Y>jw_KT7gvS~>l zcS3kWr^pY6X=xHl`v09Iy+I05(P-2L;rfaJq9Ox*1zy*qaW#N}tyw0c$u_zWhM zzzrcbG90$O{m^%Ht32hm8Y6&9=v6Kv+|^dcm>;>pQJRcStwF+7q4Cs;rjO>86qx=1 zI|EM6#bm_+cd5LHy_IkknXNmaQGf1?PayV(8FKu2y&ReriEsBmkLga5gl-zMXli*y*TyZ%FqrB1~Lu= zypzB4Yv<0q+OLdVUuFH+Y`&fsr_6U^GtwufJV{x^J-^q0c8As07(0_uyMN6g5}!~q zG$?eJYo^=xrLlL6{gFfrB)sfHXST+1mAb7=Z7xc}9KoctiOShufe@dWU_vR8L6&Zx zDBa5|T%0R4P;dzpbua(8ZkMXq;i@2QrP!b+JBUV*5K#~aq1Ws`XC4gQlmiC2-?FQ2 z|M6#j-ne}OQUUV>@%+#Gj1!0(KV&)bpI|iqiC%rT22<)u#(}t7_?Zwal9zfM zh|xDZZN}5_J+y#G{yAuKg+18G8QcuZahF)?6>-bS55;RZp+))}%oOp+FjTbt;G5H| zX2x?sv3lfuK`0dhEIXmZ*{pvgz$6GLfQ{V6V!*jxDZ;*Zb!=NZ(R7V0iHmzwt>7tf zIRUTVctqwfvnFUDM@O`B9dT8L%YZBuxFawKo@AVp#TrNKIV9X_1N23myzv!f-v@l1B9f*Q=%T~F7kfa5+|D`eb%%44 z4R}T4$pZt%VPi9Nh1Jc}M`NJ8 z?=iOp71d+k-$bRX)i=H!1}hMKJ%3mUv1B#??6+#?U(^+NeR|3d(!Qjo;|@>dc(S^@ z*DaTRw^V`7rs4NgJ;N>p={uQNATb~PPv4?N=-M7rkFY2#Y+P_CeBe`hD{JjGOu|wZYT3NZru z*D`cRF@$R@yNl=AqBy#M?$11ND1$+;WC6A*_A#{K9bl24l-W`$i8W@CzW^a~m>h`ScC=KB?9RM^=7T!Ij&6x=AB2G!c$s+S zx-flAfAQx!h!kuF3mf_`IN%C=vl0LesLr6&ZSyR3tj{wENQ#>du{9?09t;7{3!p~UvIUR046Y{&;EAP35zJY0C2)!0mOMA#cTCBpyr4Nvm$ig@#8Re~ zPU}$2g=zA_HzQ=544?nz>3Of>BMTX>D|XKIKuqEaD+rI7?I~&Yu7q;(oxD<`fW5&_ zn)OZ6M#qJ!Jq`t>nuZt&$v-AP0Ogdo@oD_|X2-yqT~4qCi!dWBzOzLAh0z^gEkz$( zw}c124I`559(mKxm%>8FrxgI1TR`29nC$X7OL%nw7HW4NJhw7j6brrYA;s zT-Lfk!VO-JD-S^1dfVB_R0WESII9FqaaR zL`o?YcQ78jqJwt!diN19cDCnF-$0SnZZfMPumzl$-X#ZcCPFJ@Nu2JINgW)@AF+ zD0Uw#ahBp8zP%=+4^ea$?KQX2fB^tWU5k1M`&Cu4hSk}Bu9d*>02^eBZ$MO<^X)^M zl}G0i-?^qxup1%c&&_i{BvebX((9E7U-_PLUYsQ|pNjPx&LCYUUj;0yN$AmK zu?m~E%Ilde5Z3^CvDjuUEwn7+zzJpDOaik#1SVffyEbRE0t0#WHVGvpJ;U;3oi}i* z^PyWilv#~spWooagC7wvM422Q%7yERD?Bx|y!JtOV&xnvmz9_&+D6CuFk!FHpUjuE zGF###LtlQh9z=(T&miXYdk!e|Xrqus0cl}q_W`gp{d#Q#HGB8D;Ij$RP@-8Bv+W-M z4BOwv>jLNl$CLu?Sgk-h5|VDa;cM5@DNRk>sC4A(AfS3*7-DxowRz&Nq)k}ijS0<6UhUDdAMu}VbPm2IOkHW(Q33Gg}Yb#BO>Jvg<1eA`G zPX60cajymx+`x!DtXqHmFrihNMGRVFt0FNe7wzZ;q9`ztJW?7n)9Jd{dSbZ+!t@uW zqj&BjiuBy+H3dmIIYgA^c+b0E)@;E3Qv{$4+O=@3ow2Yy3N)O&Jy5h!5wk!20u;%C z0~JH`(%;+r;?ZZbPElt1kSC}n7dQg_wWgC&FtRGoBxVEWfg9r(n)ULK^86zS!FrjP z!Wd{^iTuK2e@Wn-$EM`ff4FgOlu;Zx*UTNQnKw42d3EAZXq+c-yF(Ch^Jn>#U4zpn zH9tq-VTX?B_gS2Nwn7S1?pyd*xLTzsAl>kpFFU}Yh-SXarLGL1bSkWJLR7*csEae( z$CDaYN|ay6R)G*r93O16|5>LFa2iUuRCstL{>Yz0I0p2M75CU_6sOI;p`UU1k}I|6 zh;S#9^;sLw^)v}d@0b8?4?c!8!n`Rbz;SrBaD4Y*@b=#dQNw9d(5q8Srb58jKM`2_ z_yoWaKm47!x`Ea6rnO~`7``QRLn%|zu5KTKRt@p09Ego|u$hVMxJptJi1N7xGGqkl z8!uG*G!VQx39{~t;od%G13jIKsVPf2KgHT%Dd3JxW4KyjK)9lUfDNXbtzl zkQeTtdnEy$Q*`JY6^TC5^df5ciAj4qyq{50-^Zlmq{{AE0m9=5QwRA@vH{YLLar7) zzA&pi@fJT9cIbW8ZV{4X4~pq!6C*o6;4F{l(&u_&=uwtNJ|*uGpbe9(Lu?a4p>D*% z@I{ysScfZ(KwBDdN~q?;VGZW5Yt++*pIJ`|oW1{-an7}KXZ)QD#0{vdn2&3K#5|#VAMY& zzLW-5j3A17r+1vsMFCWAl7<|cX@cr)iaw$i{AB%V%c21Sno!J!bkT{H6M`<8FxqbX zJV#SEQ1aK%O&#Nn;zi-m7MYc$#Zvdk`bDiTn8Pd-s_ouX)iMMUs6gM?u59lQw8IWt zSyW{k>B3;CEWKK4{~?J2U{+MFHMUw7;hw|t&pnnMVOA94m66|sa^`awM8_!WL0hPP zzk>gLOgAMS#7+bQEvy?{v;jo$u2`C~T=9#5?PQ_I+prX-vW1rAo(XHl8W4v|r8D;< z<}XU%V){>MTY;xj@sQktnuNT;-|mbIEJpuCS=f<8-!0lxt&~)rvy|!d9X3bH4~z|c z0nw_O&CWkK`IKf7%)5^-)nijI3|CuGLW!B|Wj)`fNUb|wAY@AwD&R8ZF zYR*S}_J44VH#oKL9^S`)60M%H1w@cP7482YYWn{sUg*EFgO1gFA0ZIS-~HYHHz?Ht z4`6bGrw2CQO6dOtLG^!`bjtjPhdZF`%NA`Ufayd8Jb*eKT2wn8{y-TM!Y)vDzZF(F zOhA@X5dhfS2afz?wG#LQS0}zm000>YG03dc(2ml258KC{Tl%t3QCTs$j@KIpg z8vyR-$PnP)!vFvz4gi*Dn=V!B{-3;hh%|mH{14eWY4%uG4!IV}U(nI2hLgY<|H~Yn z|GQ`O)9e+<@e~<7EuiT}^u=q@)x`(_x8)MY`(R`?git#d6V}+sYl_X<9A+t~UMcs;D z%k)y}>@R|kK$=ViIJI*p0<-i&w*(F?@L0udLIbA?s~<0ze#c@!di4Em4b7LpW6Wz@ z^)XnebfikQUOqDX?i?hq%m;N7U2?X=Rnk-JtL+&E5E+Mc{|9J(wA)0@7{9M*^pjEW zq?0kNBY~%oHVDVuSXd=k2t{~fLY{~5xuj_4dL;ZCq2NmC*31!aT@;6p=X9HGC;9$a z6hcI9EFaZeL)oM!l78RsC1j9lOS6zG-9AwUV^<(wE8Ye#loZ!fl`m$a@Pqz>;aK-PAnypIMVE$uz$@WCp)__lFUfF}$TK35 z=~9I8`)%JEuam{!aOeJ13Wc;osIX*?O-YIp>Khe~hcKT-<=gV)n@F3nC@b~;DSD-^ zCSxX){##{7W%w_1kMiH6#H(E5No0H$^mWZxRoxun60Ba3#=C6j5uHkoKM5&+$HO$s zHL`~uBoldGmOcSBAYm>KYlwllcKS}^x#i~JMa*?0a_0bkHQOUb(}l<@P!0q~O}ESg ziUAy>ni42RTG7xlMq32Ia4=(Ror*T~fV1t?Lea)wYNXvXHY|+*)HaI@;0qQkrM{bg zvtLU-8`A;OhK?o}3A1(Lm$?a)E*z79k;p8#PN2qbd=5QA@!gJ4mly=!g|htPtT{gv z&SrtUEL6NL)W=)WRq*{tWNL=qqSFGp0zQEL2(#MpLwx*G2JO`zF`B}(c(0UIe=j!; zoAXJZUWy3v15WPClm=(M9o<*A!*gH-02>Kzs9JU&CY5u2FYcYzi;tf~PdtM*8qM z7CVtDv4)a|z25jZUmLKT#3j)JF<5{$SCcYU_*W^v!WRk1)?RU4+{m z@q9c=rDV3*@soWQOV<{~XNwH4L;P^!<~aQB+wi{U3rCiq3z)+RquW?clq=@qr!VDs zpi`6=1kQLvhahS%Ql*B;We2okdi3|Uhwg|m^!wl|2mPIX|G*pwUqBH94V~MknL`` zWpHvXy4K(B@U*uNEHnf8eN9WC**)dqA64f3(wXpjpex}yXsD`PMJE-&ipE@F7%of8 zduA+L+lDqoT0o+VfHSJoH0;3`?zlBl__M>cs+2PIprISxUX%VR%E_OgSJo|Iy^Gu~ z`V9GwMPj?gyD@qO{1yIlQWmC9uZ3^DKU4?@#FwUTO$4$Q9X+eW43}ZM3tl)hWhqU2 zq1x|&t;0IoR7{7CN?^VnoeUd#w-R~zl^H>E<7&O7&1LnnJ4JuWHF-t6?lP&9#ICW= zwpQzWWjuS*#x={ntENJjjTC}|ie@>vnQNj$WUzY@9~|nDs48Bj$q4z_rAHx8KiMX% zcJ3T)xx$1o7TMU*Z!)%__gpm~?n1c#p^;+N!HbqsSgU$oT(SW>Ye6Cu6DV|v`YgaR zd1i~S9njM41^@$LaXSuh1puZeVCR%dPY-OqSwC0$-)Cg~H|)y)XWAdrmzYgj*SRn-0e*_-`6ENv4tjr!lGKBWD>mJSi7{v7y4MzoN0u-o%5 zQ5F)TH|oi8$|?!`MP5Rgt9JT99c|kO!W9q&B$!M3);&F8UETa&ALS_A2P$@;n^=nH z38#;-BCd$s@p{Kbv(gaVuC=6ssv8XkxW_TTfan8!mc*QvzveE{?-T$7QN%^Z%sbW9 zGJwMA#{J&LN{Y$IA&+iP8Rt{LU;Ig(JDkCDkz*RquK{owtfa%b-`FJe`oYTvUGv)Y z;CCd!=@HbpwlG**mMcF4m06=TJdi11UE;^OuG+-*1D+`ZMYC$mqN20 z_|PjI?rJ8*9=7H`)G=6 zQjIjSp2V->phxEsMs1_$3eOPqpUsd}i|7_cvhxPt_sJ_zZEq5sEpixUz%A{ssVG?; z5Mr1qe$SI+{xlT`BvntK3wnD+QRA;L`KYI-t+`h`DRHm;=qy;^iu@J@6m01<)r~af zl4XWWXjhg1?HqnM@kbtNA>XlvS;0k)VeM8~c=za|7vn*4=ebtxQMqUxi$5^Qt|@N^ zwp6x}?cbvin%;t=e-jl#pvKz5?1o3W;|xooXoYSo`Veq5@~RUoC^rJ}CqXHUG>Z^Dc| zy^$P;D2w>mn+RquRq{+Hz-Tr(OFqyjSRH)w;t>qMp%d5y*j(yavSaiVZ^VIJ$t>FU zcH+satXYNlKQ)IIC6&&l$k+sP*|mKw|4ZiLRn~x*=VZo5TeTDD@AZohPi~H@CBgUd zoKx2eKX%b7C4S|J8`Fh&U!4TdE|R8}r8n2mRNFNBRFoGz#|M9B4~Lz|U}wNUqHaH2 z<1(srPX0qP7IYyV#1b^{J<`!*fLVb;J*6dpfEdKw(mo$T&X z!)iuss@YlD)0G+^<@j9aN?b-Ty^kKe`nsU-D=J;9XU!WTHB{2?p;mRt8tfwOx4<;q zE|eB8^QDv-`V!Tdo5-~6@-HnFe5L`+(nwaeFh!z`-6JmE?|r?X%OQWp!;-wy^qVM0 zsvVdAfQTbWGd_Ktp`~Apg?r30B+{phD1USru(UL>K?Z`jT$NYbwT>)!E3aVqbct7E zx-RK52DFI@r$u|VH>RbcU{J0{<(03jdIWo#ipNF-L0%tGdLL|-efXfaUDiBNsclS8 z`E&1MsD%nD52jXP8L&@3k=?u{8#$#s65{P~jPEO}+qB2(CK71vhdU&hAS~qxKqxfl zr-XK5)vGfBZlbTfi40!s1db>-CoLvQO{I#{ooVj;sol6adJ(;DtzL8PK;%(QRf zUa{D#ZciyU*^1EoYdqZ+Nn{vHgiGy=99kse|Mp0`wMDYAdnUSQKstBnyz&4GU^ntZ7lc9UuNSBD5#H(k1qdqq>b}7{!$9BiAmNQ49A@ z?7G-Ob6k|(JlnQ9W4Y^QEGeyeN8@*>#H&A~!mh~jL^sCrG8@x2zHPYUJ`@viZxgNU z6X_PiPG|ih;|B%2QksqXvk&pOQ$A?p-m`mfNoZ*El3RkxfoR5au3pxsMii8LW-$E0 z8}@V5svX-0J#T-WtfoPJWZ;mL2L(yUoe-)k856xnH_Y%L=n$$_0vH2GIOcjM4KX%q z_ft-d4VR|^QY3rm);?I-F*R)ChncN#@#j2*($UH0KzBVvb+3^+^U{crQYeU-@95Do zWpyBChmeCX3^}+A_VA!dd8rvfWIQgF&#cLlHLC9IaZo&E#s1V?!^&8pP1wi1PpWe0 z&pluOpyE)p9ZU|s1FJgj(;hbi1pQXiW02-gRl{8iUg@^oM1oun8v!qWf7f^+$Gs}k z3Ln~{iA<06yku=V_8AE~Ok@K;8G_={6%m`zLd^~rm#n2jz?cilZ zGQlQOKL#;jT@OICAr6GKbR^I~jf@#%L?%<(EW+3XRuj6q@J9Fm8OyXZ(?e7+h1qgD zt#RV4lmOmOB$&ORhRCwvs&LY-C=_g+IIW1slnQV3&UWC*h;%BLCPHMi4&rB16 z>H+q@9AyCi?VVmjmyWTrUMkRKUGZ207OVd2?jG2CV{|bD_bL9isd-IdJ@mRgu14E) zIXsDIFj`sz)V2skIyd(MF0*~k#fTTsiRtIO9Oo8?UOH&0Ot>i$#+8*epzfk))73t= zBpMu;uS75Aqp#P#p-Dp$R7{r0_xNrEFI{%cIlE%IQ#Xq=OL?GRb8nnOY2Reb-30rY z_B$00s1;ul`Zbc2nVC5VvMNe;Zkj|8dnLq#S+Qh!fo;vraz?av_4V4zgblPTGjxv< zGw^j{^ffK~*22JWmmyVs`WrB5)&&dzd)qI2YVhhQVAH?^xR7J$SvQR=<8XgFSyBQ32blWi2{ui?gx9=#VnJjl84m~3xCW~pbZm0P&LBY@6Caj5Lrh*2?2WZYD;Ho z^hES=ggUok?JOClK0Lp|q}@^{tAscLW)RIKr)OC4+$grJT#8E=QE;tWWeX}~N_G35JDnh%wi~sgmI$7MXE)r=0&D`?3%dR5h!YQ30bcX5fuPG$Bxprx{-aud(BMD zJTWX;^ONCT_M88hmEjQW>6#$oTZ~PxwiGl2NNeCw_>05jI4zV3F4cl3L~lBRCfbNn zFMpO1pPTfZeLsw*z)3y1J+725@Z~@?LcZ5^7?LfG0YTU@(oNk~lS!K+!xd){fEd;j zwj?)fn1jswqv32~SHY`Oj%VZI1a&*VLr#GiO>gG2y{!YW{@AYF-vgUbW7Bkn&LrrUz^<8W zD@fm^myUc<#fSU!c&J$BTKbtN07LR_d(AB<5s;SuyBVE{yaTtth*vhFicocE{7H7W z%^{ioMKu)IS!3bg-EPx3t_+m{29vlDSMZk(finHlF^v~>pDvbnP^&4)h3<)m*{rV! zD9IA%uy=I&TdCWO$8pWJ$0~#4%I9E&%AM9~atFeY-bCnt>P@~UYTr*as$}Idwg>ak zrjr0Bj`bj5wyLO~MxK(crOqWw5PGC2ii9=~m=H2UqB7q<&0OSfgWZki~<`RGxT#Rm~MeHNRn4*pI6XC^{bgL@EKmS_evpIBTeGVtsY_A(Hi7gaN=1g&vhC72T zqL$_TfTdj{Rq#@W$@j{=I>r0d-93ZLgtiXi!DPw_=kSR>oeMwjtf$uANo>9>L-gi! z>|6s#9ygadzq3U@v5ct4KbrrvC#W+_KV8MXB`lCTmTw3@=Bm-AD2rPsuS{#(0d(HM zt3ijYaS_gYrER)c?IbdopVyT+_VB_;NW~MvO30&mC9!pQM#~Xu_elB5qp3^6 zl4KQ1I6pWY>MX>+>G=YX&m02os7p-iK(wgld=>?9*7PjzkfE(%58wk0OiN-GB&GcL;Kxn4(Hd6dL&9lEOaxJkW=Z9c7)P+*<0dUxfdMd@oy!!I&ToQ! z!-`A}s$$CVyCFD7SCUJ|)~&zh<)Fh;!F5bftW7MEAS=bbA$`3~Esys>ZV%hbqQUmg z(_da<#6;nWc^>ESyBO`C4>-CQ-X6tV3W}yb+Ax0~5rnbCdj_(Gp!O$~ z0v0)(_-P#SPdP%Lma?M+y$73G>5!`!@j!Guj}GR&DY{N7lxMD1i%sIJ=Go0n?VDgs zrWxVe89P6FIc7#BU9MBoHaPKSsvbc)EB#PdcVW;{-1mqX0^1KCMI6#J*S|`@SljXj zchjtcORg0~*PcvOOdZFo;CwPoyNLAyNsgHyyR5r}vvC*Ac63apJWkm?k&lkuYPGZr z6OWeL?`%oDrf4$qd!X&ZyuY}V#2=qGhA82nvcY!*G=Hb1il@#-LhTm=i1-qJ1J%>v z>?yjde?-MluLSv&@D!$muTSVPKDm&a!lVI^Nm4?>2^%jp!YNo@dF7OVz$j7SqW-~! z1k=Js7^68o-|W(laxwjtJZPXUg@-&ARwvd* zGUVITYY5(d5*g8xY!l7;Hl6O;?w}<(KRQH5OU8IIn2Dsp=&f7|{$=Eli`rfcZhhqv zDkTR!pTQ}@Lm}}7#f*v*kX;Xfv`(f7 zZqU0~LEmLX`n6l%thDmZ+>b<^zw0R)H8DLq$=Srd{?@I(w?l*QuXkYs-v#E{ql<}E zm_ngUSm1Lby3f2L_Ad3XP2*0rn)dBYFTkwX>&AQB&NU9)E8IwT>cbrmSV2KxCMp~v zpLQ=YD#+$oXCbeCYJdBz5lcw(Yr5S=HYbsk=36Eh+wSC~=3gf*6+gjkh2d)e-JUR$ z$Q}30&bayx&DV;oQxo?tN2iLGS;XopWCNa<6WpqwYr~8&W7_;~XN?9ka$8Q<;2>T9 zRmm7hiS;0ie?=w30<&wK9Cm|6_F6r zN+3l@M-v!z$YKmS6u=R5*w3xs8VX`U+be-mwa3tBPdP)6qWwWNl@=(~8?0$^9(a=% zwGA14(kM1nO=)}knA2_Kw1eVe_-K}g#i_=0Rcyb)uS9;v%YuU!i*t)Hqpa&>v-@^W zns%hDqN~p5BT)+%XbsJsYOv??!?1qzJh#nsIy1NYT^=RCti;=*9%d1-1aOliRv+jF zQs5}n22*mGrr8cpc2VS;36=pKWc^vKX2r&e%k-t+^A4v?e5phBq-R(doK0teP>`~^ z33R$-vS|Q1)PiA?sLT{~w2GBpa#XqmK!;mCWRjSXtdCc} zJVKAlmJaA}BZf^9+Mfi75fE`P1!f53fsRo*^uz!H@-@Z^4E^`$???Vjv9>*?%1%2Q z1kI0bgmvR%)U~~~)8zHS4>Z1Rn~LpII+roe#MyyFsPcv0b)M}0(}rFIkb7+^ z`NT6t6`5G5KOg|q$dAm>nmh~K(uVsA3gyEk*NySjhnIqKFot!DmU#?;Om}9&o@zNE zdRZsmM3n+Hk~QDPQAS49Uu-mG?Zk1@{8{J>l5&fv9}K_ojVbRmK8J2ARII03+@#-r5>u{=8WoFbgKUZ_nGeBXe{qc7u?Z<*)dk^^et)Sxjgc53%JZ- z)?pjGbG-4UkIRJPt6hO^Huh$+{ALJ_+}Pk9b2VQlbfS4ksmd3HSE1*W<4$7E6Al3< zLUZ)x(9g%z;tG+vV4MYT=0{n6!9#tUrfC~lgk?BVFSXT$b$NISLK%&+u2KVfvu6cD z(-Z;tg>|&<>GE1NEE=e^j2f`D9P!SG+O;L}JoPS)n;7N!fQ3xG869jI9uE2=KrR`N zi~hiBS5N6g++lCz|Vx7K_qBghQKwgO6MSfY@4k(A3yY z6Bq(%aK~S3{kS@l5GCPQDVVPH#o0V*K*;yn*RNtm!vfSIb=jVi)`d-&d%8D5>Pe5e z8Y(K%QB_vAM{14;jH12n&Qf;1(-Wq>yYkW+cu&n0>!1Ocn(Q-ys@ZU=pojQ^Y$EvY zz%R*j9y5JktA4+**SpuVU0_#w?vnKfe)gL5jigLI$G(leRR$E5E5hYcn;E7<7ZmNH zAnMdQpbs5(5Ae~F6Cxbmr?z+V&MRWL+37lEAv2-En#obs58I5ppnyn`A(A?yS`gZ}r9vkmJV z(Xj5?L%B~%QHRcKS9ceR!WsUV>ca;Po**@%%tL>z)$g2C&Guf(MdWuVLwN{4;V`Ho z^@u8R3_mR?)al2RaCEyZc2 zDlw2pitT5Adx=hF0pz`uIOh}zordr2w-(Cj`AVK)pip7+by@5M4rHx}zjd=iAPm#!0F%9p^cZoMB|lTFxu>Pik`6$w~U3?O|5aK-H$`&kR+uCNn6 zddMb`PYVzK_vqXLLf_ZO()LB3I`Js-tRZ8C9Q)0Vw!@^?V&v$6d4k2q_%3zvPKC^C zQ)8W9eC|g%8tW~taDl|rQh?+Tu%LZ?llDd|9Uh;KRBi z${z`IOEdt<#$leJR6e-^`|t8NeP8&b)@^tFJmB?!95D8zRDJKd-%;pdxh@iQl)vX+ zscx5>de0{dP}K(F?}VOZ+L*O+cOwkV*2!j$bBSyCf#KP2l_!Jt2ZFDNl5zOrS50xD z1x0ed-s%lEVD*e=da-CFyYKsficnyA`4QJHh8JbVx_qwdq3V_yi~n_8 zT6okC?md57U9Op{nj^FF9BU~uLv+lL8Of4iNS>`p9klH_f1ow?h0?0IHL(}f2|n++ zIV#&;*GddzxTA8js{P0VD36zL;nH!M&dY!X;riQM2gYsCWJ^YjJ&%*NZx-iNfcB0s zWH&9V?+GcTpgz4OSdJePfn74+y<4q?7DjGB{gPO0G5|~ImPZBC6}sa&KWD3dSBD0k z5L}m?Jwf=YNp1^E`HKyXoL!tga%Ds41zFiloy*B8x|{pf8d2xIDB)GbRD=cv@t*WM z#wXP9Lz@S*jvzABu&?9=#lJ~mE*}cxW-G59+#0I~MtsXF{A~xI6Coa6unCu>pQAs~ z+kY`Hc2Z(7P`XU(=SL0v^t=qHriym^F4^Wd)kZ9D9`WW3tzJy9e6o<3-Iho@lK3+& zHN0ygxXlG2fs?hXL1GQLrDi!6RoLYcQ34c6C~S*B2kk_qU<@ng!p_kv@sNK z;1RLYZe-%2YVAF0`(8N)>8!NP#|xEL?TBSon&1GxKUQ?{jc>x7ip0n}_XefflP34n zSg$8A{A&hy%w!ag>FNSi_0R(zO}o7`H4-7%=;QeHuUj1ZCPzL~zAwKqL%`XU5(F(^tJA&T_u zAM1V3T5&(fs(`!NRhT%R<;%M2RK34IYxiVs4F<*%HxW?hwX;rA81RH7%Du?rMFTVx zZ%G(7)?YCdV})mey<5&lIxR9{c-+J z1!)|Zlq_r5WX_Sik3ze+QnGCwT3w$_^ZFY}NZbz^WXQIA3)^x{$d9Q9jFNMLN2|_4 zA-va_6oW&*a$&(5S;{#8<~7b6b=+B|+wKDn1c3|w7sk%1OArRwu5H`4ZQHhO+uhT) zZFAbTZQHhOWxkb{JltgEU(~5OwYRpO`XLx}Y(_&}m=T}^SnremrW4@B381AgRv0Xw zeP3KLtM%08C|3rMUpRXR%ds({iSwIp4(5AcXU|MU`oNOEVPNN4?%Ru10L$OMc42bC zRvI{T;u2c44$c!4p+e0P2vPE4S;6vUotvVRg|{cHFH-+S#|_&T@r3snS^*v4@o5mV zEL*tv4t#c7S@Cb0mfVG1EF~mbA<5FKX^Kx6NZ)p^ydmXysPl|8+n_{yjFTHm0t zC}`|CQ5)6=H+y~O?PpZ0<(9G*Bj8nH!I>FXHXHcAW-Q#Kz>xX;8BzxIM%|V@gfzKc z4l%bt^?Fl)-u|uzji3FA88pA)us-r0ppDyi{>;%t<%4O?kg&RA{K|Tz&F5Jk?CQVL z-I_$KQ^DDKv1NZvg>qVG5gjdvt>pr3xY@7agEF9BRpWU=6FCWeQ{Z_iXh_T}MCMwi zu;}5kif^BsrPb~Dq+^0tIz#hO^910u2Sro`N(|*usFa<0;UP)W4~7WVP;?xyLKE}k ze2Q&BRq(?U5Lgu!(7Vaf!BCxCi&74mV(=>-M78KHabaiFQciY8{scSm6eNkviak*1 z8K8d=9y8`>C3GC$%mCQSfPbM9{aUOd*Cdh-+|yw$H+1VLrOtK{uEyl)fm=<^Z6Y z0*B0qKd`wUAc9^JX|@d~%ebS*5_VqSgb4eyF6UDi_hLSDJtr;6&K2DhecPCgS(r3W zF3el++HBowv9V7AxP8ty)wbF018Z|#NH=vfau&dWHxVS3|1z(o&|DdYLpy;a&)Y*P z0bTK!Ho!}uU6Zd-ZEhi1Ys{hBs;pdv5j~!+K7&;~-<`>P#{}MMA7sC4ZhUv7wwMCndq@7rw{jmxdYfON~J1+nWRZcDsGfMOuK1ATvr5sHKpgu_(b35 zOjVqtnhLj#W@}QvTayUEoSoL`?>F_YTfrwu$U_VWb~Gu(#628^IW83Z@zvguxD$-z z13ym&--v*aFlC?fV7~vw1)QYa!heu6+JwXKtkz;AsIz8{(4iAdadgZTg{;`KXE4oi z==!nYRtTM55c_l9*rNTLrMrVL5);Ka@%ms*{kz-*?p#=276$@^qK#kU!O-y~4U-Z; zdv$z66==iRYW(s+<5*)h>m+h~ZU6a8{o7$f^exmih`NM0Mgys23 z^jB<6l<6xcEbAsd`xV9?tK2%olW)oydfv!f9oh~l#~3Sw&`V$^k6tt?Rs9dUejX@= zby(wj=V0}6u>JAvY?vt@Lh|AK2z@lJD8ORo$T71ym9R6-`J~qfXLuWDdlZZtly`Hj zfcU%Mx@~Cr;1MFbNxUC2g`0vulngD<+9mZSl}1%kilmbMkkuZyKy4YOnU>58dj?=| zm7LRYmaC5qjq*+lDCb9S46M=3Rpf^S0Z=&n4u>aFo*?oMdt>HxITgClVT7z@A)T{UbVZv^^4!aQWjSDD*dJXu$zd19x<4UhxCOV z4L7pNH#-2@CeP&#z?=QtxXb%!2&%L4hO;%AE!?)sNJQ(71fC3Cvv{}zPaL~D{biHIH8Pt#j!`S8s&<6?39~saxA+IcLES<`wQc}XLAYgH7 zvT_}OFPE7Fg!2$`ie@3E)mkkKKU*gS1S7l7x;zM5N!g#5%xvcc2&()YGYXKyHLtnT zP@W04w%|(QZ`Y2(&ifM~?J$l*5vi)wqucw!?iq&=HpUDvWVj@V@qCYcQp~@XFQ}{=eZ%P59!>!fMN;l`30% z5`~O`=0bNHxO8zE@k%JU)U{Kx=|8U)6!I0Dw}6iI8eE!Sz3fU8Pc#gK0fREkDWyfP zsXaou2{r|46{=cklWPLu;5|U&q@1smKJH{ zTlR3HxO6zROYX?2GZBn-`_8Atm||ae%UeYyeW<_a-U0d<6G(I=KiZx@CJ;A2%Yooj zG?$Up7H|eOTb*2S2t7nPySX)?*YoV8xe=)%5Z_;}g*>g=FxTeMrs9|n@J{>bQu_9Kf2&gllgCy}gO3_d zCYDr^sC6xJFyR3Wk2M-X^&?YuUb{t=aFAb_%3g=V=^ho{J6|hL{}yPzofAftmj*%e zrT+54EdPKS=Zh^l!^^)3Mo|YX!R(lNM6Ln_=<_%&mgO@)o}b5b=P1$0(BOio1_h(b z+W}iH$V+tp0bZ^i%d>H9jO0^RlNX03f(_RRiw=5q!QmG44`%N)Yi77yqeP$w3U+Ka z#~uKUbq2#3x6FQCFV8kw(QXW$tn313yla_ROOJ&2UF6b7qZ z0|{g0Pt)hoOd+*b($Wjs>3+ z+dpzc&q~BZsQ=sGq>p6oIsh=ZUk9K=$dolGq78IcUxd?kyiVFrlO!S-sEdjcX`{1s z`DMT#X&3gJ>Cl9{B)gExm17M$I(d7qnBT4CF$!Pxp$Jqz-m}zW&Pd3X zNtbqH%m2iq>+}XmjI#E4D9;IuuX-|D+{|It^hRnmR!j`OHetR_dt-_j`kbs`*F-YMu(Zb`7sxI8p4en z41ap;ER5L2P-asR5Yk8Vb)UbzwE7vV}hG$`#-~p;Eu5z%Kb1K!+=x4`T$Z_;*d%@{93UD#($Xal9+^2ObtFa?s1 zg8l);glX6VQjgDiJ&%BvOXfMKAyGNl`ZM8GF zrn{2xXCOre005;AAeE&_n#zDo5P;1_iE90mB;X8FX& zX8Yf-W8KQYweead+Mo8-f;lK|X$rTFhhuSoHT1{5$Us-Mw<2a61=%qr@b$lSv5eO; z88r?h#wdiZ$VO(hvTE`sioWCp`c=w}$Z8m_86Cd3g@|C&)>X7#!-01`JX7AMbVOc^ zY3rTz1}01aIoIh&)I%o`9Y zv)$B&59FX7tPcQZ<^Ni6q$}YFuDcbUeJ;IZz`J}7Jzivsm^8Lh-+T!u^8^3-+-BAB z;}D?@q>&EHHs;L*7+o=gqL=@^IY6<(xkCCpZd5~farzj`5_>6CA!uKxiF;bot%^6d zke}$*qaE=t^%+p1$qvtp31tVm&P(ShKVfVYl%t^;11*hp*qoQluL1rJzX7NPo$@Xb zPCj!+%HY!NEMc)j-GDc4-s#5AJE)G{V3G&=Qm$O>dlj^`PlvUe37`&7GOP301T{YB zgU}mH%S6*RSV^TCcU2+J(*!?M6PHx@b${n_CPfcf*>*lwX2mYBuYoY6H98pZgklYp z#`ZnL@oakN?9XhrSEpp36x>b)GA``V#-dv$Q=p~iN`piM+CIOe@Xf@7R;E0 zj^;a3h=V0usX;l^toitFDk}}noW&z!#BChSzz*+@1?KtY=A&?LlcPsCMRFr96Rwq# zfil{Emel=HI`N?_5ets*v&%!VcaFiB|7CnFzERr=yLF{nBtRha=vy1sX4|@ez!Egu72jF@`YkD>uxj`HoMqOd;3|I`pV1wg;l5q*3ORdJ;ZB zGO4&w64O-wieP|`-=s8^VkbE5(1SD(;!%xqLx8@vscq(K&k)KpDlh@)6kr9(l90Zt z>`+0-{S$yx#PhsFAUNJJWl7JF-qi)0XEpd=Z`^dArdI{?Y3$|yG}^OtKO61PLrY(i zfHnrug))N&AOB3QN(E6o5EesqWE&vEE_#6v9E4J|h8xZ2FX${V9ZvuWnpK^6rCH@) z&^*tz{cZZnfgf~m;o4T+zJsV@{;nNuxPFZ$BhLKt9G2uyPO_};OU z)Qx3j|BzKWe|*DDDt0DBf)^{x9-hJPar5oY5cCUD1T-D`W_8GnE4@6VmC;9~9J-~1 zlCY5Jv=m~tpq}Mi z-fB1bIKl9&;`Y_;gJ-U}=442+-?!Uj#cv5uVDr#(-j0`$M&(&(T=M7c&K;eq&DTH6 zetbbJRz}mI?h#!@dvAx7Gct2{T3%#r?{JBEN_ZF+$0OIX3-PTRp&o3HQ5^h?gi)M8 z__%P#sIyJ7W_SO(@&s@cqMtd~xj^ujL2qVW>+;PdN;ae#hb_9(*27#h(04q}O;3fM z%`TXuxX3xQ^FA1-41k$KyAcPrzEl0#;E3}TWthqSm>=%JAJDLA{W+$#){any0Cvri>Trk50` zXEn4|F0c?yYH~_Ij}V^|Be;`5?y4-fHo{nFYqiO-)tlozhzEwgzD?j=iM#(S)xh5{ zm_g4H1MvwuCT}$!RlkFogXg_U} zMN)yz1g(rALuvr0J#FOKC5>-OIe!>+ndWNnzzb!3HNY$kaeLxGQz_C)=f%|yR{%h_ z2Y1KA_E|ZCW*zFN_-IPdFfghVVve1zTbxoPOw4(*S8aE|-~Hq-Moil@Wj((g=m|{n zQ~VikQQxT)jzjF`n_FT*3XIGg`sXV%89W8cLHD_5I(NOW$5lECNk=GN>$rH7_X2pX zRO88N7I@v3)Jns?`c>kDM1M6#*!CxOg!a^v@zNk2M-@9$LO@U0^qszlX*M1KFE_&c zQf&*zKyf8ejCgWI$xq=*g5JBw-W~`{^Ub*b%BeZe`)&y$h9oI&8aTHT2*W_J65yr@ zrcSd6^U%|tkh8?56l|H3vIlgGtY4n8pyUUspTl*hX55)0*m)%VfV2Msb0%#V%OW`m zrHXWY6VfG+B>W4rR_1u>816j|2kXTdUEWx$X2+trg0CZ?o2kanKxF4F+6x|}nh!T% z<4IkZRS3-X05L zo)`cmT}l^esTQ6?mBI+Bgn44;(_a5_rtq${{|LfXZ9IiCUPr)`?d~#hKRF z?J2SeUw2+?@_m`3LmT-xV7@^bq0y#7S?NMEZoKOZ%&-6fXUmdovGOkp#gphyNmKYA zv(v_~gNr*$rd8h!B-29Di>UD-?I-4NWQ>@l79d(`?$&rzv`kU zrUL$E1C(ZhaA?{aS^;jd0m!@0E#iO5Zme(r!?Dea^Rb9=A0EWI@ zv9(Xj$8a*1z-R#cS>a|Yo48Fla)H}g?alpn%>0S#!&&@=2IkRe#qmAyzJZT&U-{g2Kj%%Bo{*xTRG2OZaM@%8sYot4<*D)O!q?@pZ#v&bSLNImqC zH^$4~gjW01_2z^{@Yus)ThOWj{4@TLyuPlU(3}D0p|QK*-q_cRN9jX^S~J3H>|HS) zN636WncvHjcxSjcrjTAGBQIBq!)~z~Ayhjdv*og~Dhz&^HQvn|hN&Ngz&7gw_%b|K;wL56g9vMQd$!T^+R3AE62{W>MXPB7? z_b?GZD)PPjhJ0pzrE+SEHN`ur%%WAS^tvq;Pz*WR=^H-DJwAa+UdVYlcR$7Evx9sJ z&FZQN3sSQ|Zzw>J3?A>fjT2bV!f+&A;z8O??SZ%<0bT8KcOxSjL*o)qCl?o;WI=>7fs~Zidp@FkthGrj&0os zhN~zEJIjTjcI5H~B=>kfJ+W^@u3Zim-2W*Kell_>RefnUTkMqBhF$eI=las4a90B) zx6OEaViLE&ozMjnzUOTirq_O$s5F4K^i!6Wvlova_qwdpp9+qV@?9Id9|9j5cSvZa zi~hIT7iN2eCFU2#O@Apqy<$!n;FB^?G_tJ`jE?2R-t~eXU56Y_y2{SYgW2)x+3i*n zBz=%4BbKpGD)PG!zATp=J_O_l_VITnH!T^0IM9ueHQxHOJn^dzSoB<>(>t{X}rGGt4QE*wq4AW{c3j(&u}8 zv(O!~<5Rmf;PM#rncD*AQZkY{gw*E#pH(|+q?eWn7q{^^mXieW9rs-YaMVN?h@^(; z=}#0v0UTR>u))R%VpwHnt^KCj*i(>nN^`j>!!y^}m!FpH^9xo~W$TWMgjLpY!9T-k z;JlU?@wdOkRO`69%zcNDH|3A0r4#|764fn}%Z!SeC_XIsIQ?|3<37;|Zkj5|lht+7 zj)+j8>I-#SB3#t!WV_73%0eI>++dzm*#SsZAz6gF8nZ)Z%^a7vCWs+7nk;?UF?YIt zmkk=oxzaS0{)=mF2ModsP0g|Wv>HaoS}`lE#j2sX9U6WMlw4jRXF`nH)DNiAPH;3J zbO<%rzy*25D}|0fu)a&pNR#OMJQ$u++G#qd2cOL`cVW`L}IZ;CB5^kkSu*;HFa z7xDNBlerS3Ge9UWBC-H!guYJPp&}BLYD|r`9m+UiixY}6j~WTjChK6jCq0;MEu5{D z{|Mv3V+${+1w+@KGY%0sO&4~U9>8FryU`aOG?kdJ28YANQR99Ui4>Vg>m{s=(*2^P zKRVo!VS}X11bv)_l~G!3mJC3fTM=xcl$oNp*Z*APD~Ua5)jOo{gdvYPsGWO9>ErW* zXQ>+OA3s2(uN{2mDHm4I`diz_q!A^hQ=>I6@m-g&k0t}4JctFUjqSLii@wwaKx zDQ=g%6IXI0J&}MFeSIzhoKHjO?YNZiW?2D1{U>A4Vy={~7MuKRlyiA1aF0{R_1NH5 zwFS}u(QBTEP3zvV#7!i37@P!-2Jl?ZYkd!|0o#p#xo3|x+C#a7I8-jnc4OQ$QJbgX z?6vcjq9$^VESgZ2j15I5z3dkqAm43BB25c`97Z6-O9E6Phx1Wy$pme$_Ng552uE4b zq8}-(lszo8+$#-ID(jH>SnP{&Ob=hX~%`orFX)4mZR{^eJt6Zyeg6;2^bc zVRunY1qe`4LmAr-7Uw6eIceQ;iE8~jhICXp7Ph#W*}*Bqk447VKfL~7_}V9{!mLYTiF-qM~!h!*hMo-Sa!@@ z)yBhocfc@MhB(Y9h}>t8j21FL<{qt0J`hB%)w~?Jp7R>F@AN;dtPGIRS zI`^suiN`cc=?P|3HGMVzHCU2KO>`J6tw5ek-T8xsJmSjSAF3dP&VThJHrH`00s6fK zU`i8%81?t&TV4kLb3@`{1r<}cUyj=C z+4tHHQ-|jo#X<^&8x+~+?kZd z)~4Zj!Fy0}Ii$&pL;u{>i1V^tINCcc zW0x)nEt+{qo7ORBuP+#%=hIUOb!m{5_)>kbWyhhFB8mBEpHf%q;+K%&9}Oys)>0M@ z!{zrH#a*EEBj$KP(XBA zoK1|ZqqCRpRy{me`G<;RDrv`$7{69Lq_HwNZJU19ZV$w8)Ft6IE8)#m=UejY0s zwDdU~->oyvIH_MPECQTT1!|Ha`aTLb#AEML3F`3e4VF5F51P~LnT&*ta*qCWGe=m+ zE!lw^uiFtvmr3H{+g1t=oqD8_C}q7&GCR+Z#6giDDV@%1*pNlkL|AZopa?EW+)$gh zTuzz*x50*3?f}znRhrl)n`2IxUL>5@ua{@+i)Qpu!J_a-8uQfL=u z@3`fv7}KAE?*S+JTNl@np`hma@1j`;s`Dbl-bPwL82ZIVBWGLq0VEpW+$izlb^)4R z@0F*?hw1?FyIvDm75l;0>uQ^Nh>F4Vj?M8zy}}8}dNTR*1Sc>Iy}GA&U;2cJe~eqFgOZH5s5VSaR}l|U z+xt1ueP5_#4L?hd&#kJyu>L+;T>5KMh3GGbr6yJ4;0$ht6VP+|#-RMMpYT?2nG{SV zDowZE`VReL{LS71hy6qTnyx0Q1(vE=!6|~$EFyNF9L^1rvz65C8yB1F7e+_qipjqA zlS>9=Fin7d(%1y32dNxgAGyd8mOweaog>Q-!=NL(camP>rwE7p*zQzn9ZtneC@nt*x zqKl-$#oU+pKHku50NjvOq`|3$6xNP;s7O5HQ>1XXpu|AzTR)cUyuXIdX20)k#0y>) zwK&W36=R@zF^Tp`L&VcotZ~_ z1YMfCpkSWsnsSLev&-E5e;MjAA)SJ*UUr(o8K;ky(6@J=t9_?4QROhJHUQletz@HVku%cO&6v~z1`Y~=407r=&`3=iW14x5f8FO+$;@l14E)w$U`Z~_ChZvJ*8OzTU9HMGFf z&N>GOPC{ni6MKU2>}2;b>F?_7lBE0U4@%yCiOq*bS9Qw^eoFaT8$Ksh!&@sC>XP5h zmMkXe1sFx7CuwwvIFE#SN<&ft%jgPr_O)ax_^gnrbk2 z5{~-87J=EE-X!rPho+?&#*cxM$)Eq&IVjDz;Bt5N6>3tD3h_oG8^|Z*$oe(-hk=pd zCJ*Sb_)-TAV$6itY8SPK8tPuf$e=y8@~UOFhEGX`{As%`NJ>%qwDMAW znKtWkI2|PAExylJEMCxvs7HUz;-Y$lmb#?e_R|*c>xGg-&0#zy=&;#r>ZoMa5B8lV z!9<-Tx~^1!u$*z^YvAk`hJ^Q$N$*i`ec%~Pw}PQIOddcwJ-BhWZXPPJEXG-B+UT#! z)Y>6Y8~)$W^K&w;fB8=V1+J&)>dBI+mFSNiHd4UE6-SqYn+fJdOwwfX`$b^|U0eOU z;X!V``@tp3vsv%gC$%Hvac_oadgG(WMq9X*+cFuUZOPzQ(tHc!@vdfx@Y)l~DBAQb zd){T%sJ;T{=JaWO3^olK4I=rq(NI7;IbEcHBXah(2}_SZ3<42Yv1F8tfuIJ_TYRoK z_-NJ-EZjEJ$h!xI|IAlqzG^3rjPRQjW$0Wn0r*mkN2j&0NzbH5Q73z(Ftsjg1;d19 zzJ4zUaYHg&b9;rU^PmQV=c-y9im#57NKjPkKh zaH8qr?Sj{xUS1)uiuO$-b$CaKn# z-2SK|tGl>D!>`1_^?#~&#BO5XtdkrHrl$%;4?kU1#f5b*tgNBr!#qGd8fk2RwEe%` z;9RMRSb85VCp04@Fif3wKdyS83;{g<0TAEQfq(|jc3^$4tIR^hq-2Z0XiOmx37zCV zQ#3CWr)8C-5YLQ86#O+Vw8Xbw(Nxmlag!XFn*|K$i0`9d$4fS|dP?(WWuGD0W5$Y4 z<7zXD!863#B}1m%U%TGOUSZtv7e{hKx3{;Gw=CLw%%e|sCrt)brHjZ_QkZXdEl1n$ zR4yT%cVPKpl~lon@V6dY^mO4Cz&(5%dnPqCGE=MA!VOM``88a?Z=n<-4W0?d)%4kN z)ENIyJXI-rY<(hXQ6`Qk(Y2k-=~U;{m8ew5!7Jw;?LOP0IMjQ%$r<;n2y3IgWh*S zu*B+hA4p%qn*mg`tnmMsn9pJ1kWR5ya`c=dv*?V}1hH|Te;X(qo>X(qiiR((jU{_o zeNUG|a_^{c;1pShc)#~$GbFUV;0&ZF7nn2T(vdq~QMasHXzg@ezTdxl5KM0DBi9K! z3T4of=5q*V`8t6H(H~ocl7B_=s?X&XcujV}ftT~P#|Dz zjx~$(%@?hE&R=83$_h)cVX~+=&-HO^LwV6e)Rn8&^_2;UQ}%IU>MpPQ;DFeEKOJ^W z?Q}-5V`;5#Gnggt+mB{>fu`>a(VYdcKqq_<>ZVOS?C)%RZ<$Qe8fept4Tk42gW}xb z``Y`^{?iacN>sYz88;)@|LTnGadXSY<3Rp10Bg5&a#pW zA3Hrx5|k)!ii25dnrET0_#}V<&br*iA;887^QxtCwB5^;sZUMzIrh*NEgh^n4}^ZE zS9|=}iI$u)3umxIiDuNCn&HULQu3HMeo{;`v#|TVPN13D6>7SxrA&nI$EGy%kpgX_mG-z9XB7s0HTuar0OPoW0c3l9A{rWhx1I7EhsXM+!yH^{zvAT|K zcrSU`q1rq4E6HGl**7ZDEI{S8pYV%;=>wcjNRdm?$ehGk8rSqSU$ylz(-%io8M2!I z%&Dy4{}ddG@YNj>$Z`E;9VGz!NMnW=av^Y6K#ElWvHP1I+BtY1-563&dc~R3SnA6Zz+nmwJh!h57~HF1Nh`rx%#yYK2-0ATt&Ce5&{Afv2BQLLlh0+Jq_0#iqj1PtapnNUka z=r3Q>cg`j?@=bXi`M$gR=lahGoH&MpA5-$y`{1vLt)ZV@a50`BaCU1S{}m=S>pb#mz?f$63(Im zTDrLsS|F(i{H=A=d43coG)tXCxp?TW+5vCP2Qgc*2~Cs8go@6OJU|Vm_K)>O97dmZ zex{XlJG?FhdBhGa@9lv<*rdJ=D85XLh&JYHc*);qXrBpb;Vs!|m5FKaQx-j*u5cva z{;jK!ewa7L9qRffb=>@Y`i*6wCkpY_5dl0FB4+Iu?;x%KBO)*e&fI7o_%q-(aPveq z=Pc4lgi4qu85*0EKZ*Cp-d{x-m4W}*Zb@E>z}REMdP3U#nLVYUGU$3zq29k+4;snM z?PfsxMO}P!%M+Ik^rKCBX|!0vKhd4w3yIy0}h5IOM18a{1fq}_+3(OSi($d4i9g}?W(LtcGy9(v5^xYSbr*dofD$_W{={x4%up+Gt!^Xi4Pq6QcT< zy7<>(8Q2+M7!`^wiXy=Q^c>{;FWSu8hh#Vo1mi&T;Z&AVKdV!@hrgsQMQmE@^R8#Z z!!Oos>9?krQC61%e_-ps82L{#s0*nK3BTmG6!AbFAL~&_W^7G>enwgZ2wd6Rkn=*k z!oLpQL;4h)!)lKJR6Jrc)Jl8D(yy}tI#WhA-K>W9 z5FZtJUyP^awFCv}CqZ`4_1mb*r7OeE@7kpXDS?|5&r~e4lA2Upu}rM`?(r4^5Q5%u zxDvBBn!eO8nuyW30K{!X%*BkIhA24CJSf`3ua{WDn`q|t9N_eJYziq|h;YgHOKbeF zzLr+42lscx1}TDUAPtdV`{L~oxwyv`Cdf9tEj8X~JTvt1xBtQoI^=N4oWdz&&X_;l#2c_A~uSwwnNRy#w`OsWRZ~Zy#q1V?y#nvvQrc@oY8^eIf$B)X2QRrZ_7@kDC5yj?V613 z3`m^J29naJR2?UH6l}Gv1ii_W_wEqIi^I-q{Osnzk!D)k#OLZo^SCrC1Q!Y6+v}smfzsMe!oS&13 z)~e8X#=_V}w>{*Qe2c?Zq(yH5X4cjUw$<`|zm;#LeiF2L+(Qs~fbR|NWCD=x`E(`d zKp;I=wY8E}zmmS#%1E|N0|nrVP2KDPj@Mo;W)F`{j9OM|wv63& z>t#M!vi~D)9zWYs;h}$)1sGe!>y3qPE-g|IQ=Wh9*)iKjxaUfa zSiwa}J0FCH@va7(trqS8abFS?O{kd7DwXz$k4a>zpiHn2P~F5UF~=SPe%Lca7gyMf z4?R`6Pr}m$k4n(l!KE#^Dd7VqNQ#!t9rc4$g`$e@eF9s!hpBTO1WT~y*c(3(wA`re zZnbn4WQ@j709|AEyVq^EdwOomMYzrYLg__^6sM*D4J%@&sc^GhauZZCO^7HP<2QBF zJn*-zAD%8(VMLw*rl=9SZMg@8kr1zCC7xq6&tyM3)4Jn`u&+oR|*TQv&6QOu5dib@K|RaMpthEiZ=2T6p>a-!nq#0Ob} zef){XR4T0-%DxvxdhOEt!(fAvDet4sKuUE?j$rkYZXL210@b69@wG{vbPjIbF;8(+ z)><<}Bhu;S%&Pvs>x_MCzx^_x3qfI&++jhBbR$DJ)ukTowxF9`^eS*mw403&kSY5F z{s%7b?cX^@=l8^Q+zjI0Wo_Amt6u{oFPcAJJC5fpd%zfZ7Q(x3tX`1{l3>yz>l!dw zrIo3{wrL$p{R$8lAF`Np^fDDLIUG+d${@}N96+wd*Xp* zTg`HCF{}I#fy`MIr?}yhr@~2JGKhs7sluB>Cu^bNxC?CoesXZ~-iToGeuoNyhF_A; zRRi<;oS=ft=Yev|3GZJf^;Yl8IT1VCQG(vPagz)ZQND)6epJ+iL}$v^>fU025FbwR z@CiL`Th$5D`5&QP|HX7zTxm&IdLQloo4MgXtGyKicjZVNmh3#7PorOIcA(KGZ0l#I zY7Z@_(Z=R-YQa-hAE}?r`LhYGZ=OQ zrfZ+vExB%90mWY10hP{A|6s{ws;7MLO0E;N&o4r!)5!*$7AwLiDbEta1$vOFux+>V zo5vIs+$WO>48Wg=%U22lG;eh+0}mi%#9>U)1a*Es;6&g!<)-->1Lu%O9ZDQl&ppa4Mitb7HW1 zzaFo+1=z&Fc$|+TSr=f4#i1+iG#oeV6h&%$+Rn%9qUDrB6sxk%s-!7+FZyFcwQ_f7W3SnEn9;zZ178 zJDCmQq&!M&*M>Ch1aTw@k^3ua+5tF?So_s8h|*5q$-#_1jvw?X?Xwm|tHY66#;H7< zQ|h*|ano+}dbp#-3*fifB;Liuy*o}=P~bj&IJm#l)_tRm=jud&3C3Z@;tbc&(n%b> z61Z1U&xc_jZhYXS)zpUZE^8+n#Ln*U+GA2hid~$U_TuUGAKw@AM#j2f=EgO`kD?Bw zSvSX^yW7Jtp`ssRPHc{Ya)I+gBLZ*S($Ls~-AZ;uvH?l1nq~CxkF>=(b2*+2EUpdz zHPDddFx4bE zbo%riO1dz?X&0qGaT>9+6QZbPh1}hc*Afji`v5m6cDPvpN|>Xd0Jgl3q@4Jk(ZeV?M`^^yf+Hj$M06bNntn z;{l1*CHU0?n`Lu0a-g27_5@K&1B9Sd5FJ2tvtbc>Q|(e#P7lzV?3_isYvPQIeYsU7c@x4WGIR> zDV*K&#Z#&~D5J{c4dn(nJ7{W4Fimf@h(7Is=rb>3jM7Oc0ZFn(4P{90S!ue5W|)M- zNg|z0#(pfW`4p9L26rJa79s)LZ4Dr5M(Mprs{GBqS*{D;G@=GEP4?O26jj=^r1%pq z568&hdimpQ`#PFuK<|FLlx|!;yuz}FdRqn?hj$ed@lnT0^njS`v@EhayHr+Cmp|TC zdJZDo^SI0wR!v)iU^cB$+IZ--!%eR!#&wrG^@} zbD_sA_oqYFL|m2u7e?3Gwd507MmF4lcNUk^+X7#iA&|w?D&K+Xyu1q-iP~a7ZG-2K zemkNjedWQ&;HC81oQu-gXfLoRJcCa$-EIV?ps=hsPlr1?;mTUAop) z2%qtp#eq{p-d%kRhB!Au{IF|&{D!oL8?@a)irqzbH~`Nn>(sRtv-~J!N`cMSv7_Mr zi>IwO5>GQ)|5I{d-&2@z!yggr`(YDn?D(1oh5DQ>7K=KoLD@nl_J|dKdrR^~-qALS zyveCQL{?NOmM)1Z`4<#K0FKNa?QR}RuYW9km#{{F=lJOcd_EzM0W<=k38^l?|WH304*`# zNXJFmvIFI&u%dUq%H=#xA;Pv50iuYu%sc^{>edFzy^R*RG|TdL4a3-AM%b z&(whNYBQ-z9F^RYGwt66s;zCzcpVZ@4!ouS*KK0suGh13265j2phM}ZjZwC&Z^_2V zl=84W!XIy-i)9#k@?KJQ56Bi8+^Y2cKG`R9eqpvVjTC#f9ie5tDZW=fqWX&tj3l2< zTgd-j(@i-b zXk4)bE0X_0#<+@Bji(QB3hw5MH@QSr*Qm`e8xS;wxU5@UHMaRQxa>ScYAO|$cYN4v z=^liJjZ1cf>fIJ1&DRYzP+SX*u%t-YH+&8~^7oiFRo*rNWztx67UAMD@>D65{6=_g z+I~iQweGY58ZO%5agwzM7(&CB*@&s({86saPfv7f0-Imb8DkFE7LPp^9r}gr-@XIS zmLcEXa>5PGK&waOyjhu6lTtQLgro3YZLeYaRmyIfkcC#TMHE25DVEp`s6y4pJcieW z8WBz(OmmrQlkaKjU>a6d+OBYSEj#wLLc)FjT>>F)q57dw!4q& zKzIn>X1JrdUWi;&F8xGCfL9cUlS6KXL)n%gETu8CtzS9R7D+BCavN{osdF`gkf-*e z0Hv;Fbk4G~NBCDywoj{3`v+azQd2qsS#_O-Ae-IKn)TUr-*BsgF(ul=C!%v#w8{l; z)v&n?6OX&0EOOjrpkO>l>hs}*g+gr(!1W=N zx>oEH{obVBat*0@ev!>T^#+Q+hus5GYweSD&B^`g4_TFh{eB)IRq%0Zj?2r=2%HG| zTh5Ss(+N9<3)cLD_Msmkhgdmb#kqfjO#u)W&gu6zMgG)8{36ILzPuie$nr&{rWops z*GZ#HVnFx$9IXylTtEGaSbRKJp>6J1S!0Zd7cR$dOg_Y@I}|1y_k@z+WE}1Px|>06 zLx)XdUB0y_n8l$mLamex0-?(b@Cy9J!^u{22C4! z*Hra6yFB1oz~pm(bk$|L6Ha89PcRi2+EUVKxN?oZ*3i{pf3tmstcVi%6ZKhq=)Y?3 z3yt(q#)92w3#nPEee$zQ;>WEn_E-1-jv`unN^(p_W`-4H{P`(Px@H`$mqnXP%l&4!kQ;E5my-W&Nu8v{f#*%%vgXATMFY7A#%c*c!Kf(9{*dwl~k zij#AaKb6_5Y$D~IZkba3ILq=2^fhR&2(dxO3?>C0?Q)C3A5ef73pF-)6Q=5LXFh!D z#^a=b+ZN|rtc$3xVfO|k=dJysW)~G2a}#6CyaY^&oX>x6u05Q?5a#s->-2CKJI{Le zxgOR%1Vk#Dc?&Gc@`RbyJ6XbqD358<2O&@MkhDA%+yZ4mp9SUvpFVlWzy5pxCAGDA z?X8RHd7^)pq&%8|vsB>-9ZIy~jG8{tzT2U`xiE89amVZ4iw$e9q+^HxSTimucVX3hV zcX!dk^5-|dCD|}3=%)s+{b9@C+O&AJVexn;q)mC5nK#SJ%k~^X?;z%Xf{3l85J^6< zlc?v$2mIeb+(9A*i7WDb!j4Wu zEz>1X(4V^w%Wz+u67!<1M{%(9epSzrZoyk#kMmuY3sLyNt3h7Q&dJR#`jg+S-O05A z>7Tdm?!Y$8yMX03_$O1NjTyyFZT#nWoz)6J9KcYCpio8s^)KA!%eI>)Ar7GhDe<%q zhe`~0vW77rWEkg2I+Fcl{<-dzl0EE3fPtU|Qr+(*i1A_rdD!$3I@1&B+_qm4&wSW$ zXHbZj{ghFpeLxX9>U1*vy~X8_X-^y}4g z`75monRGRf4b8=GC$MHQWDj3XQ>F5#Zu2kJczK3g zK?-4BVvE4=&Ku?l6qPYpc?*}D8+Jv?4GHW`-?;nMw5VOPX)vqf2MI(VgHlSo8({r^ ze^r9E+t-wl^M^!xgchI|g~zucaIYTabqIse3b>o^ua3S_=m;wS@J4w3&H;B(GI8Nt zsEh)GrQKllvJcZI2JxiA2!xSq?j=%sb?^iW`3`Fdvf}+sl1Sq<(fE$SoAcgzR5a-Az0N5y6|^S!Jm(iRFi0jtU=OdGZlV)Rs2ii?(2-mW3yit_Wduq9T%>W_uQfY{Qp%+njAMWfMEn1gDw zA{bCpgy%GhGiX-SlKrP$>{D2OY!@Pw#IPv)9)i7(&;gMP35jJIGN7kGa7)I6__8L|0!}US z)sw=6dV9q@sny&`{M!^uzwAMZMcObzN3r0Ic(-ImL0|S>90d4wVaqf)zk!0|3isMM zBmXV*wwA;6E}tV1qt-ppLBR2WkyV>vpikj~V?Yux_W|Hxzux(Y;Asuky#tNL37aM!Qx zzVu0XCx=j|RdiqONuI0%@ckt3HwvQxj%#MbHp|Gx(ZX%JRS*H><@Oz$@T7W<1tj79 zZ?)w?Tj(DR+I z{l0n?DM1;U_30)q%KF5O#Mu28Aa=viWdW z#BMVHeW*s2ABNFv0vIo;!S?J$^XWnH1N9Kn0!;>U@H75K9U+ToxEz-DQxp7trRFFh zyu(Di9Rmn>O$L40uJSG%==_F0R3Bk%XWxA_Ws*1ff5loPG&)y^Mq_h`h9y;E$-M#+POu-E+EddJ4c2rO z+xZ(l&N*7wW}#!|?s5)%@?uLQq@>$=qlO;_ag6U%I1!#F(XzlL0et=yeu)??jn~f4 z<6R03A$!Sx5m6011Um$wV2|#KSM}!doVPSf&0S=5Q&$3Y+u29=X3**H&>w0oZB`BX z3SbLr@wWlz4{e>nqVNI)hcJz0qu0XR42xOG1`ZRb41?c?uLNf- zzJ#;Mk%W2eZRgfNVbD><6}KF>=U!d0>iP)D@7Y}!82<6T4a%!d9{iv5N%{-MWx{9K zj0%zp?TE_TZUBfsZ+9>U-5mCmq4?c&>mpp#IDwmBZ1VY}DVRXMwn0C=6k1jpm)w!_ zm^RsKus&_OQj6y93i%jA(Gi@8{i!05M&?L|QoE{KBmeOrX+c~hB{}BwG|KAJd+N6-$3%_Cm__GXfua>N=7t`i@SoT0V zs_YM{Yey)H)R;$9BciLorh{R9KE9h^R<$d?wRKIKYh1rnx>mSO&$9vKPfB5_AcW^Y zg^H0`Q>~6S+#^K6Lu#?U=*%7ar>qz%-|Ji=67>u>$`;_;EZaeCjou9=I8PA8#Ns;{ zVpAe4t_2v3`}*L!)Lre;FbhoPHuo_tO@YR|QA|a^9qMC#I8CBtI#h9o2S2h5Vbr+J zJMNUu9a$YK!taGuh}4o5*s^YK-(;_SqxVS@sP?mc4(Gc$KpSi&dXgX)ye1kHN`4@* zJ<260Ka9HsxAU?tE6If8-#WWTi<`is+2ffDN945@kI%&vQ-56KD~k>O3_fXNXZUOQ z->lgyvjkT}$sBBmH>(;2>XeB7{lp?srZ2y+NH>|F5_8J1XDgNz=Wdy8V7T3~kv@5u z57>Yv3CytQI>W7!if(L53#M?Glhu`V3*i21qX5vT*CZ@tU~_ZwSTp&8a0tEVVl00C z9oT+EF;Du9WR`+R-Q$H8B)aEd^xSvJrp;RJ&p4aMGqAG-{Zr-|mqqJAleKb6>7uUN zZ5>|AmOC5?I_GW1gSdVD8@q3f`l!Qcds(t%;h4F*=xDHR+tH2hkV%?3iZ(k0!F?k4 zAfa5fF;^l{a6+osjKTA-BMZLw&}Z(k%j`a}GRFJ$7|H&bnk^u36ekj^Byv@EWyf`GOWDmTNa1mZ#>lOonYXs4f z>N0Q6qeUAAQaQ-nJ(}v^gpd&i5rRjhnA{HEyTy=;NTVx!{%J~t7-J(>_F z^mJ8Z;PbXxq8anv(OBaBh8b0PI^h&{2Ma5L5kul3cM7oVKR+I0?d2twPjGzk`~HG= zH?85dl|p<$Od9i}AwBRAZn4Pp5v{62w1+6u?$-$r=69|~?hyb_4g6ej498+abd9uN z&+z0w6-wg<1^MLd$)pEeOM!zG>)~g?y@=`+sFmZ{QFykG$`7*4#)sE;Ca<6dUv>Z- zrPp=Vh#Q*A~B1j zfNNb5q2fH!i8E(>cq(_B&gni*-x`yEjqsXA_5l66ZL&OwxAzyeN(U*7cmU=$no?%- zP^|GmhvXsq#gcWd3Vnw?$)tAnygAP;NLPNY)UF3+JFD}p<75h}iy(fC%C*iUeIF#W zVFBAV=B#*DOD@l@=De$fN_%URLYohUfC1bG^bptiX>E z@lfg;yHL0fJ8lZzQL=Oxl@Sp^$SC{br7ld$DA&tPqTkt_>_%qDEg{aD7`D!S=yJof z0@YS_1m5MI59Gh(qM9S z`O(Z9o2+_uNNZ;-vxZm56!@RrZKM%i{+!z?CE^4@t?=lr}= zC2*>oPkpq*rsiO!(E+CHl@*lMGiyu|vTo&x_6&BC05Up1o_E25V+znx?M>AYan7JN zXdyK4X!^m{=#gHvDrlp8?gqvwE4Pb_58L}AUFG4G^fm)jHMrXL_dwhy+hSGJmhma8 z>v}oj@gG>s@3s9Yc~GOjxCAiu`U0WrAJ-X`I*)qT1F$k9($1=M-0_@A*thbMm`ft@Eb)R4rZ<8=Ce@Y z&z&1ORY%!(mI{iR4X$%NM|K84C|UEjpUn+^e0od8l8i?iDpM!Tg2)uO?Q!JxLEb5% zr0Totu0-%+I)iVHk#$GAMhcWL{SH8x9e+l6lI`p^EF<<~*3OKGW)2MU9F_J$2kMwb znmckr6ImWzZH8|+tBEPJCB{qpVRF4HXj*`S7n{ecg;QdZp+L?4Bs;73Z;qK(@0P~& zv>WDQxPQtuXDu>M`;X&ESQKQllcZx>m%9p z7BZMxClV!8!5RCmb=IFgI7o0##_-SuURuOq84-cAVpXkSOHA`dc;ykJ^xeQ1b}tfn ztf}^rfd+$?{bs27;Ykz!LDxI9YL zYYB&m4U0f39Mpdc13OpKKe+zeug_)wm*^fK+WQw7g|an3C!&{nwL3yLYsEuH(f#l6 z#`DXY&sw(MzJY?4L+HO z0Yk07KGv_>IFEqrp{ET-ZZ~I&HlqdDY&G>?o1kAF#Q+%TjzHnkb@{}>bLe;^X&8JOMkt(<@ELzR6y+X6^jI_ZB^(HZ@F5OW%AcXH1X7`54}oHUa)Urd3h>|7Rv(G4aeEqr zo4h*Aj||}+;Ci#ak;K+A{ZqJ%(<{_>R!)oJde zR>Q^@i0v%%MjS}k{jdv+%2xR+Pi+K*oq&`i-JnUnMLoL^ zjTaD8KcPcZtzIN2!%OtLkLEe#RSMExJ5Wr+^@^C(0ev%Y=U9dYzq+5$?AoN4kLjq3 z0=rjh)E}USIAuAeKoZ=-bCs7odFifA5E;P@#$AcFBM!Gg>ckr-A^>@{!SdqMJ7&9&ZnVsb=fUBqb>LdW#m8WEZ zTS$0RQSJ`=Z($v=eOh)t%IO~1VuN&HEyZ{AJ~d<_6DOyq;EUdO!I661xinv16#i5s zcAoSek!ndpNBL0gkB)|cAt1+rg>6t^lf>N>T;T-4L3cPF$>rT=c2#v!9pnZOZIQ3# zQsejB8}d2g)M>F#=NMg*tfZ6y#YT6)SKJ5YnQ8U;w?_hfastqlIZ7BDlyx|z&GWSg zW`?Qje>1%6uA+ihIyoF~wn=GVoLoQ9{;|3vn9QH?HtYR)MA3)m+XRw0iXukO3dY1# zoowZ#>m;1{3sDLNK_Q#}aR?Yj5Y!W8#N(JWDig#sBs0Mf%ton$&RJ&2`C3eZltZTe zeQToOToHQT_6tjF%x&?maD65qg$d_mm3AzZAo~aB2b7p9>n*Mv7d?T{V#+*uK`))NAnYc zw`YfrgB1~E)XzB{byv{$3u3KP0}`3xPPP!*-HWq`As8q5^giOc`Cj;RKqH{e^S%e#j*~H6^y?(HKW8@@3RpCbowB z+mgQ8SL?^d3Z9u#QmpyFCz>hFgz-$#t#%t zS~MDASdj6o_VOkVib>a3Gx<#`O?6FV$JleIIYX1%0EyW33ONO|Vpw-~u)@shfd&AD zqFLuQUK*uae`Z0#8m_muVe{XSp3Bl-JlxXiq`_;)WS4NZ(eZ$F6+I|h2Tfen@#gHZ z8ck{oD|Gd-lMn8}WcAoJ^@XngS%n%$-MCR6O3rWH!13Jn);?$xWJXjjj4Q!DGIwAk zS+qB**Nm|Zy#s^tJ$QXPK+49U%W@h%Rhnn_Z7KolUh@v))*08OrC=6mzwm~L6d-g2 zxHbF6`G>(tB-Hvw=h4mnotc0KIh2-sU{MfeyxfFu4_WJ^j}J6S7bc#~`N3HUjb3$| z?i2QZ8+o{0Zt4r)MW1cp8#nAURSySGJ_$F0185g9(*?MF6mw^?rgD@9d0AQ#k~kx| zgS@dhV6MXgDZuXTXgh|;>qhA|VktjQ86nm5sTvjKW`ri)pPrlTZY-Hdzx_T3yz;$a z`6QWt8m9)f42baulkCj@fnBc} zw*Efjam_<5$dNK8h(FJIl34e|#1~S=WL5qgNTuz(-_+FsKV+1_nnrhvFAfMW!wcr{#DwtB%o>?Bxk%D+B?(n7Moyo(U1+qE8 z2eHbN&uGw8Qd z&c&_~_L-a$>xiY9meL5$6;NMBsE~1b$}#oK}JyTRW;Uo#;2HTDM;+fi{<(N#u}G` z_o>uu5{YVw40n#MQQ)cY2cwrP(LCp=Yt0moWl&|oE{kGI5Hc%xS(j@O1pa0P22{%l z8hI+2xY~$-_6D1XaI7il9QkV%gMay}NGk-x>1$Kavk=#@uM@Afh1bPqdJ_h-3k~r< z-lEO4Ml{xcT`~I~vupohHM72HHHZ&RxyuC|wv6M(GZ0Ose(V^0=ST%Pq}wK==mL<@sR<||hktgOhO4oA)#@c}Ql+wmP0B4PiVrRl(T_dSMF+29Y~Kg00%QH!=V7X+ zOZ~dA<3_4zt0ItB@1dFyTSi}E-DKI+P@aza88g73)4Ef?#Uy56BUZK^Z`W_L6#XFg z)ZU8G62S2WtiQ*eE%7w18!A7dn6>U5NrU%UOuQUMkSPPI@#_7sj8G=2{3sO8j?=A9 zzO19gZ;vgqNXWqZ1@~$aL`v!Rid$~dck~hZ>cVFk-}rpMjVQS=(9Qi2FE6jg0@#`e z1DBZ_tEyc;l=BcG?!=v;S`cbp_23`$@(ud?w0@?%0{RqAvT+N0WuxIlwR)Pu9t4{^ zfG(BoTQs*Rp8LuACo53*d(BakEQAw9`(u=L6`mKiP5k;7l|r>FQ$I~pq6-Z*S0?-Y z{)@$0s4f)Pl7x`IH8O{`AE>OS6cvBGW0cPuOFxa6_Pt#=1F;s3vn5}%BF16O8pxH8 zM%mM@p$CEi-P!-3nAGXO#Y21vAKK>h;SXNYu{mlh>9U%>*2t0VJg;P~C z?YO=+frVmK^VvFhg3;d)?A)nzb9mzoH7 z_+s@M|A4?*2AgW2MJX!Jtoe(in#z55BsmB?;{{}ZUe|D4sST=QEzZ70d%X*7(GZ#* z+akJe1Bm04Vy76WT}ebhT0L&Vg!WCod)hB#)ry}@Z2v8@@No+LAT2hAa3G@!Ik!Wp zI$fEd1-Y?4bQxs*#;(BrN<#dUFvmWLE{?!I8skG z8V)<733W+u2;ealWOZUi9=e+E?5OmrR$}N25~>iyDoVq)7VdI|=A`k(J&+d9td%AY zM<{CR{rt0>7##fO!@oqf^NnO#pOf?`J?QDwBQO}0Tyagqq9zo7NK<47tkF#-D@+CP zO|=sKy_u)H$?ssKHj!e^__10&a@NCs6a5r98A#dS$4Etrz>G4jSjvmGvq>(^KCV#- zH1HdK8qc~ITIRC18mC;0hbd1bOAqF|bsmSC%|P2dOzh(LO4wg2*OaQsmB#Yof(rbr zFlQFnXHrV4iHdSw)o|fN7ymm2gSoT_OuKR~g76%QWe@@zjX=86vtJdbVeEYFVInNk zw)AzAA|?E_P5M5FuK;S~v2$>%H=JO00XEbXE;yf<>L&~wjO|b6>KwvWty^f~l4pu+ znc#u+H=j>d&dW|}3Tm`O!rwJj!q22@np%6g;Na(RxXTYIlZus;H1ai*Om^$WVx|`9 zo>btoQrpC`5>GK+(^NipF!=QRhYoCqA&z{CWNc2@HT-p*f!QFDY6Jg5@z5Z<%Gc}j zJ3;-R;BzSO1#wC2RX6sfnfl=l;;tjy*s1DOiZBGK7#myp#4BPWkl_cP>7RX zTfMpRo~#K@=b_0R;wQ!mW|+!0bS%8}rVipBx|DJmNAHiqUkXD!>s6r_R64s^D{J3ES|0C_XHChvItQEnc_Y6!byqt#P8%#lF*zwUsIR=j@16bfDC{+ zN>a&26b!t@Q6z4ZL^1?LeF7KP4-?F5lMikjun@Ol-o=EucQGFX?|btBLoMB(=hY*c;J)YWvt z4ItHJ82^wgX@)yXoQ!fJe*AVGo>v#D`Kre&;Fb}e#Oa?- zT>*D;bDc7?3M%OGAfmJ!D-z@AKVe-bmk$t8F2|`1$z}MXEA|aM9+pANzujtxatq_x z0eJ|BN`r9&U+;q2({UirNg8E}@2{3750*2RdE;^wy|-TE==I|{V>#C%qq}nd~1J>uYW>*pFSb zQOjurTUMjg085e!qW3VA8tE7@ggXNFaJkSJw7>Muc*sg?=$$uIh!iNcr|p#4??lwQ zs9vMyusD(m{kI8r&`nap9Tezvr`an}VqXZz!zD z%Er8W%!ob&ar>dih5G44TF(Y=wNOC8DMrYI{$Bj_K4?cp$WE{=UFRCnUkYiuiK7Jy z0>q-dsxNbrv@lJ}`Xq?}U`Hjdd_|ZPQM?1?TRB>Ig3R{)6}iVVdhI-Y3dhQxNG9v- zmX0+kX{gShfXC*JK;Z+w^F!iu0ND(n0T8-}y1!^?Ro4h6d9ZH6jo&#D)!qg&rhROVUo1xh<<)J(GQ)lQWT(gCBnoEA!GZzEHAU{j>RJeu z!SV0Y5JSW8?Q zMHN|5;S)iq3KSEASk7vyy_$b*oXQ{C#hs@U=Do`X)VwYi*owrX{Zj(*SzgD6eU$f^ z!w9?jK{s)IjrBb_-hm~8jMYAKj^+JB2KoSgtRdnABllQQ5`iiI^IVC z6=(!3sLdUct$`{GnCiaMO{r)dH$WqK?Bl-gRr=#b5VDEi!8NjeYXeX+rs#J zpV^eju}8aZ0*u9*q2VtrFxv$TOCC<{!f`OvPt3Cp0V)*^c^nP@UGRM41yNZ%S7{s; zQS#uh!rsG84Aqj@cW6_SVlufNjff6+3A(}UpYwrtTNhakdb!TQ`ygM6-j@PCCSx$m zB(@H-kYtc@jC{lq@Z!8qwa3*8DHeYznjlQAlgC63t{bMKwGJ1Dm{dpc><1Y7%yz#U ze%>6afPBkn_XA8P7y>Ek))sT;iBz|VUi22%K#f9q9E!aP@sv}}yYP=*YVppuGThE4 zxWA0=Ts{+kYw-Te?pI_s&VbZ;l=|?H5#JLoub>>$hCZ+_o}?E=%mMb1v0^gJCbClO zE?4oq&!ncXNoa=ga-6zZFhh7^=NWkXIzAM2q6bD4Im8X_L+@jYear|mi#vTfRt-->o58Z1hsC6}!33glbjX{%t^9~?TXgB$hU7z8n1fI^)AG|9vbD?eH!f-zixV9k z{N(+jZtR6!ag`#L+06}f`z9xXIaZ~G1!(lYfeRo2;KtN*(q%8l4ebQeVB6Pyvu8^F zPsXVVt2WT$F-YHqb^cGgSN-6v008;`^Z)>;j*FW1OW=x*XyqGr!-ZBcHF~7r9?|LZ zSQF1LXrllC+5mvdwEy?!Gp)C#BZ?tNOmRWzf0a{c!N6TULD8Px|IaX#N#L|epnG(# zpOBXf_+Yr%Vifs^DbpfczbRRds6S6N5j50YJd22mq+7e(ix$^#**ikD z@zT@CC_oYi_R7F)%=orM7r9Qp&o_IGQ6pL3V=}=fEtbDR;Y=TEx{0K=VpC;f(@#_h zM~2`9zgqX}K+XUYdp^3LG%ioMfew3t&3(^dbFVjB#gFY?%CnE&o>K>KgV#hNu@9^| zSjbToCo?JGdiR|zuteU;lS>Qr*f>7|U&NjeX0ZH@uNe>`f~o1on^$pthxhwF&Dz0B z@KEM#UU=1PWb!<<$KyE9m;IP@oT$u?$@A-u)Hm=+A4^XDqRsx=hhM}p=2PK{I2{EP zeI5;15w($^IaG%NQwT8r-JFQ+?=p;9(~~H}M_OuM2Hs)3s%%9(XW24qo>XHbBwH73 z?gLqGY6^A|Sq&SR3g8q$JDkf_i}NV7V>nE2{-il}14`?o-q>|;`ulDoi5LruhUSvF z^x%skRyLRHMbmiWKF#s{xv>HeBT5nvs z*87iJn1wb$fnMC^#fB)6ZGxkX^k=gnV)FdNN!7Y@q)fFP*i~s)m*X1xgFC)tQ8b2I zAB|2^A+exfgunufy%DLu z9q-E@VSOs6wv(qP;D-oc`;&*q(Iro<6{&=7g4ki z!@(GGS6c8kTO3u9ITYBvv&%08^aZ5feMyJth`ZanF!nk&%9zQ?EROM)H-GRJX&8PJ z0ip{a3~d-xke5Sf1y}72oT|pJL-!jNPTQac2V<>&Pxx;%2ewS zX*1%((jHa&Y;xRrqMB=Vb<9k>e_9_LYxvRFW+^DPe!sYCtvNxD$^L*Ds`i1 z;&LlQ9X%kQ(&xEDoVdDQ#I=%xY+ulgqg6pVhP$`Cf8ZaDP>yB)s7hAs<4rRb{izz7 zcs|CSf})YGC+gMPY4D0!aL_U_Mk4%YKh_iHxIKN-#=xLNdy;o^2Ae6tC@Qd;;R{4r zc-{MMG_C^Jf`I6%_HJ*gvWT~`a!?$>vCJ05mCl5$myVy^1Dy~qm&EoCA9&7Po>}LwhMV=J`WOa__~c5SVyv< zaw}ClhVxp-k~lEburgw^zhER38P}{HOBRcYlid8OSat`3QW#$y&c4_cH$gKTk#a2& z2SLa^S+Ri)$Wd&10xlz>_0W|cS^D&h(?;(FPaJtSnxxuq&_^V_lk*gDgrp)m76T& zR)OptHy*z%3PQXepj9-bXj*tgUB4w$BTMWfUeb*w(+H(tM}t0Yzb!b{b@S*ZCnM zBjE30#7o8(0f!WRv<_xYRL8~>f|{I zLJ{(|-9CwGk=JO$_=|Bgzv^Bt6ZJR>oC-Sred=v5Z&f~+mCm_~6`8HcRwF>0xr$a4 z;Ms0TIZj*j9$B@3FE!l&UmkW@X6?w1IBBC*iagv*QxuL$JWb}>wJUKJsyp@EI_;r= zD_!Ue5po6Hi%4GV;$1MwdSIj!LL|v8_@CFWw2fj1(#;PEg-4$kJ#KXNlA40dOB3fj zn|ypyc{m}plbtLkx2tX}Mhu9|4q)NaHk{Dy+CE10?^L zenyT$wiyjqQmAgYjZAe;f+Ob8R;WG_O1>;q^CCj%KEW;ndNDj9l?X@DF4Vd!Kh0+1o>2OFrC z=7_@}`a5Jd=l2l7Avmb>I&O%RHH}yPfIKHG9*A|Fxjz@ZXm zBJj`tY-{Z%L8)P51!8U@hQYBD8$@h;-xly8;{!!CjhhS=rt{(5X4>wV5;1L}GF+$E zelp|!CV>f@rbhXfGftvHu0dKNi!8Z@)_i~6r=flWIHAphwzLZ*l@LX02TtVbbe*~g zpvDZ2uL#2$s3qltc(jlj#UoyhV!%K!?jYqRnJYHAS0n0d&)VnW=U@Jt1JP5hRq!UL z5xyzsU}t9E_O&+0hX9fl16JUQw##nf%kIVz)+-OZ@i!xXkK$Gi$rQ?JWjF) z?e@6iM$G<(q`0&HDl-@c^P~JJ&`u(qBjtvKB_Q3eicB#_!#npQ5-aGqeu6frT~aRB62~5iJ?QuUmTLWP9|iu$ z8Hm3{!@WgUT?Uuhbpx+TVxRgOy!)!0eM#eQpsG}FC2#4+ZDhhFQBA&3Brzq6d?y)e z)IV3ktkXK0>&|NT+1niewh#477_Qc&)k{x=mU5JK`2I()Rf)wZStDto55cFUyk_bH z>-klqJiTHA-Z)1)!o$jG=SCx%>{~rK;NuRgSZ;~kU?5wu03zjn&ncy6$OCH0UOUH5 z4aQEh%##i?!-A^@<`)9L7V2tYpY!qDU#zBX1dm&!n}@Qmx`-(}_^KV$s_+!%Px02| zvZSd+S296psQDk>9!o^G6E@r&r5CtR&pjL((4k4JYjfq6DI?UOvl#A^le?etu_Ho9 zxa{?VTS#&+v>6S8gGF$67oLDEQU}NqE6UNg=Bpm#)e+q<5i9~I;#TT7JcXdsL96H@ z0+GgYNFkIOJGYiRb&GUPAOE6ExADrrB?(Kak3a>uFDX%e7XMb}d?cKSToV5J0^J4BW4s5aajc^h*29PJi03Nd+OjNu0e zRD};q0(*?+IAX{@spIl^1B6f7vfQ7ec9+FH&mwaTJj|1q!qcHJbHZWf`veX|Ce}13 zw0sMA5RPmi?S@u*wSce1yrOH0UNH1(bm|@UIqKfb>xaV#miIzJmKE27 z+$@}77tt0`lEIF1sm*5rR>`=;rS%+SgAZ~n`of{;gVPvEtSl|&PFPK-MB5}=qa^0c zZnxkHyFF&GqdNt8HYYAP<5pvuJ~>lYw5irJW@ap=ks2~ZCn%48jR5e2Zhx9g}>Q$gGK zv#%)f*JVc@>yA%ef4uv4BpU*3j3bbHsh@-v!FZ?3PqS~EOUi(*2jPlI9|@VzX<-Bj ziPl#6ZlN5KZfUtxe$`jhn&nkYU{rYsJDClW#b`tAPb54YI5ugeul1V@iH7_W7dh|v zLGIhD3$-uJXtk^uV`t^e<;GxpH>XaxlG^r|lCf4rWn5FHo;R$LH}lq44Wcyvlj;Bz zSva~!*gKu2e|CBk65pYCfQ!!N<8PC8r-n;Mod4Evvcko zAPl)ha+5Vfwy+Q!o>qUAX=XB|v0AoyxJXiq-dU|KkLCuwGsj;}U3x|x{kv9jxa7z)Py2{TznU@wQJ=)!wxtKupF##><8pP{7L?}KsD zuSd+tX1hWig`)WxDQjXad+FI z^^zfQhkBvG=$ty{q+jS5Z9kq=E(K_1Y#{QM>`{?u^N<`R|JV;IWw=or7ey*0ZBwSP zS4|?)NnZm34npMQ_H9^wR;z&Fgh)w4)5C(*v3{v8qk}P9fz@u#BWwwwD|EQY8na-c zz2)Rc!#T%K`z8z@K@31x97t8%aj3q~!tXG_7Jsa2k=oqWT1yP#+m z1W>2e0DWk&dw>rY9TDO1KE1`H-P)rpXg3HRBg7J~*fs!0iztL=2!%)TQfT?Hsis$n zdaZ;%5E_R&<2h^j&AlWHq$f)+@ceV1vzUSU=~4FrWe~Yq*>oE^1OWl2EEPrmLs<(byAR@j>7{-G64TeA!rH56St5%F3H!vaBl(}tw$E`7G z`ML!_4Ez0=d#@CqtiIO)tEsBtHM@DB7qwddL$JytoI=-QIs$O#i(<4pGxOyRh=!DH zjH*Js)8q{WXcgJ?!L|$JWlt(l)YsNdYx1c#r|?ehM&AR|&$Y=evHjE+??-@6%7V~8 zmT1B+*#%X%PstyxZE&*Iz9<(LB{H9;o(qIzKWpV55qbBAT`Sd9_qzj9G6gT+l?$Bu zMB$E$g9L1)^tB~FTQ!thxk`yO?*C}>xPBtSkNP!DwXu>yT?+$Z5mn*GX~jK(-5c$x6K7K`UN%4H9g z^_lUWd*?Dnis$OLDm$*uIU{>>l95V-k~2nq9Rbceqos-->~|`;YUL#RJaO8TGP$Bm z7qdV*Q_ADJQ(!kUB-FXQ6A+|T>+Y3qp~jhPxpl}Gq~c}Cpgy!e zFp729toc{dMoBFGJ6F>gxl`jnD7k`L6%CpY;Ph!K)4V}wd)+*mhd+rJX$dg&D7=<8 z2JVRM@yxeJzOV(j@w~>6dI7#`EggxcZqQ|PH2orODO~sCl&jJtREn8gm!*?#qy^JW zj@W;k+YO4LF)RMis|Bco)^teIp-*r|Xl_i9o3QR#ABSbdPb%hYev&kU`KMz6hojk% zx0J8qbYL?3R_N=OW;3*G2%u_R2_XhJBl zTIBxi54WRmoxkXdQzIphCpc*-;UtP+lR3+u!j$k`p1T_l1TAb^v{k%iP)h^c_?^w? zU9aQaf}@jRnlV%wN1f+gn(?S_R)%2YEaAuU_1|Ze-PxmoT*mLuXW|^byT_9q3(?S^ z@Ns4U8j7=(r2Nw)MlSV^nalFL>sPu@SLiV^7x?w~QcPfu5|V0-jao6w34~8gmr8~M zqizMBnT(J~!|19+JZOey3?F{j*%LIcqEg)YYK)9g%Z5PPr01I zVGi2DOpYqxn6Fq|^rcmw%I&qp>x`o6oo}N|M?tA}>bar~FLAiFsp}uc1HCKD_j)sx zRMbVck&md>^_~j7)dW@}UuIhNk|uI%(#H$5c2DM}ea=ia?xd`kGW(ch3hx zns3=McEvJa2wwr z>%xlUCZ7}t7=tcXpWOaxO@IbDlA8o&B`ZXi}PHzy$YMd%MgbElQ^l6UwCFRPLm z*PuIC=atB6)8KxWz2FbQ4wtk%+^-&AdR3%eLf zNVEcyrB}-}nqE<<%rpV0o}fs3gbi9&9Zv4vT4$tYi=ft3;xXj2^}C7}UCT3L%N!%m z@}?Q1JMX`}CCsrI5BIg@H-By3JqTcqL8@#{H-`9??VuOdORxX2Mfe@;Ob2J{B3%jw zUD;N3oSFU14U^F4m*Ax^ApO4GzkN|AY9_yYyqUT_&*|Dx;IDB7*>0!fAYgK!;7b|xrRIhT zlv=IdP=3?S)ey(rT$0k|m_?@dUr0Zbuug=4BSFSa4{W;>JA?cnO{PO8X;SrTix`u7 zJ%YzvhoPhOJ-1w=HxNh{XF)swdk&)6dCDz&e4`m1s(3mpgQS|m2hZYKY(?k|8*nl! zbDaqzayf?EBeOqriT&sIU6XD$XB$Z3Mi{dBum}C?j~i!0s)e5ul|B=eB_~$YZFqWI zPTCb$%l|F#ma+JOws~JNJRPf>sOwvM4r#07mHyfU7>@~ zv{U?BmLTds-U#El&0#ilthoDnxji=lBmEegLZocXXTyS)8vur1@^c^1%rY|Aq7v&x%kfL62ZFbf!zQxrhGCJt+3g=!ks{8+JMyS3r2nftX6Abb=)loP-L6I-_f>!>-4 zDdI2psqAf3*4Q&?r#r#K3(8vJTVWHrfQ~Tdt|8|hqkAuTWqcinS#uzML=T+$(m%dk zVs*8^L7Wb{=&1dBPAa_K92TW7joO9srolT=h(cGt8hCuskL+aBwrMX{CXH9az_;}_ z?|76;@~G&`@GqO8n zw4uj4KnT9(f^&7}C#6MtLj^?&moydPM-MmY9c&sC=&bjM&e_ax{JS5h?=QM;;8|3> z{%#NeP%V0Z>nrUQ;v7#2Wd+URgVjM7u+esNg*yI&FuhM~57}5EFht3vuA7!k|9!Ld zW{rxUhL~~8P46@EeBPP(9(pNSKzOzBf(?YH<2#|RJsuxhU!TZBWY^N4ASb;P zV0+ZRWNUr=F!Aj7H>=HGM0)w}7O=SvMH#R<4|-h$#}#`C%odDT%~*}| z<;^>LMxmw)hE{IzjcT z8R{#TWH@aPF7k>4`B)B^w}9j_SL(GVrQ*e-q-VG3O*@Ws2TgSJi6oMbQ=uvD!H`=P ztmF0wG;pK$vD35E=>ZQz*W^GcjvS~UOh&c)W@9jH)p6ci{iKM%IT-8*V=c3q5J)9Z zh(-!4;?CMa5f^2@d*>QwE!&o;N^#;8V#mB9eXSHlxP0=GM3okNiK=u2Wc%r50o?^A zz(;wrEk|=QOE}E_Buh}W0_DEU!YsU}X?9Gz`6ThS9*NU*VxlJKE_{Pj3WT0~))W|G z_5+mfuM@bij!faI;IVK#<+2qN+VtyN9v;MJ4heq7(vX_czOrpYdnI{;_8ofg7s+~V zFwva0;ysDp2v1mvP-PkEMR$YUrB0!Oe=n(gTC$3`TXY&0x1M%&38w~l=(>B%SAG(C zK#0TF4P!nDph|FbvpltulQUQuJoD$E!)V`20&=S;vz|~OUJ+Pt=CWbduJ5FiNf3e_qq*Jm9tb2c|F@~=e@x)wlFh^ z^%!Wtkkdb_?0>EFCOU%sdM_)W8VZLWm{Hs2b3~xAKA+~&s^aI1_;ftMu^KNP?Hje1 zIQzw|1TppZX;|FV@QjRh$^y>yu2?L`3f3-3&9bG;2v53@f(-4q2hz8R)2@v7tO&yG zKIR+Yd6y>-BTKj01nLDsO7|Cjh%jsu=nBzbpelAlt~72F?vI`U))E^#%L#j2V8?wL zwuoE=;+2jIm4O(`L~q2HVIWoUit5>kU^?PNO@u?YT1E_Z$!SpZ5U5V-eD?E?an8~rRgI45?b@CPp~=qHNE&bXoN&W8je z*F%ZR!xmQ}g$HvP)-~qD8A2PbyyUq%cRVQI<=ID#lWQzLwq{Lifhyl8{PQ3Em`716 zi@isYfNhzrJ;4|Yvql-&A@-Ky%oZU-TV&IZo?MD1$6wpbg*r%KPXRj5&Imcsg$(bG zd`C2fg~58}8kH4@L}bSM{%FgdJ@Uij9T>uNQ&>tGf7WhaFmyfr31UUj=ini(NR#nt z^gq)Lbx<1uKO?fc;{Bypi`=eRAyM)Xz7mR&4I7%=HNAg~TAt$EnCw2}V0k@gmaHTO zI@LI^SfIxmXC6M79JTxbV^?oWp9~|CA|g4U`aDbHf|;G*Wm_c#`==x>fI=VKKk7x;oZh zf#iH?Q@CH?ji`gbDap6!XN~~j`J+pdiOEK8!&T!1Yo`GhpV0E6Z~E&K3P89%lOV)H zebdAnYGVMg60X|nbwTi;-t{N@Q&4_FX5^c9!57m3Yhx3EEqu@>G+~1GUf6EzGx{ z8dD97$^QgswuG97F`gZ}k0^9;%_e=Z3?URnclmg0$g#472Om_Ji!OEqQ z#^g)K{J)5E|8G1Mj06TLJJf7ORsSV%CV_RU0s~wDfDd&_puZ&a7BLm9)n)mF2s4?% zgHL{^)}(?c9;rwbomlG_9VW2^s;a5@W5LaTsIO>+IH^RLkF&>#DrH{q##UTy>u z2iB`a7ac?c5r$C9l07CR=*>1Bf(4%!r=gLY?xYRo) z`lkiRyJkupTnAB$!UDaYj6lU=Yb`ka6J?Bgn*?hg5_`XVDaG6jl^Q(zM8Ou$?Sn#X zWt~Jx#4iTzY$rZ?i<%NFvm0gZdA2uFP80qELDwASxEosmZMy9H9@zZZgABIHdKl={ zms4a&?pA+oRVnctZzw&)3@b+#=sMwS@v!f0eJM4R~5RQp*95Q0+#GkX#MmqNI;P0t)Cu(qu8OwmK$@H8(X z^t(SMae-nhcG=EmY1*xO4nJ-I)P13MP)Lse2$lzrL7fO|vq_vIp`wnEw3Bcfc$gNo z(+mY2fzTv@yivz8Bd{aPbf#>;LA#15ACqC;!>3bRX8=DJ`bgS*%*eyh-y=jKESHL< z|5G80c!bhBFX3M_fwuTMqt$(B!EhYH4(orSLY*8$43xC<%)x)iN$mordqyOm-5R^= zF#zyXk2S6Bv}DmJGB5ucp+kg0`QTUEx_D?$LinpnHir`#_k~Ga}RNo_1kouZC6VIYp2NZ*r4@UOwaVr|Dc}8MHls6TgZC zhaC69QJ{+e-e6A63|1$=litZ^jBq`!M!z%NE3IxKaw$bipowB=tjsZ^R%m=rbz0^( z3%z~ad{qwsRkGDYAMo@C{}(vc(2xJZ$`bW)|AuI&UN(ih#Bw?LA0BnIrG3!C#Sp<2 zssCkxEiy;skis}ZVh>`YhTk~v`y!lfob@&8 z8PAxnB)CsC#iEIbRkH4T10j60Kl-_tRYo6?Dio4$Khy@2Tg1F^xXBJV&uG)PKTB*A zar#=IIq@MQFMse~o-#xJ3C4Fi7Og5s>PqavFevl-D=5kPrKC=EN*YhulSIMv_d(a! zL?%0Hhv37JX+xmPU9hwmBR;#l%pJKk+6SB~a16@xD??A*_~nVvHBITNcX&sMdntlb z$r8$2%;j>y5w_#Yybr`B5Ho>=zwu@gXOUM_ti|s;r}iT6r!|NelBBqK@WLj{FY)<) za{(2^7FAZ~)EU?J!Vy3MJB2n7Nz3e7bS$dJ(EBOf*;I^fZAvAx4s(b`+$4k{6{x@d z>G8u?lu?XR6A=);7AChYvbYNjqV>la;B{J0QqWTrYMxQ2n9BcGUvA70Kkcycu7zg z11tunyWlh)IaucDcI76ta3Hz|8943jE5#nLdVi5?TvX`#+K(U{daFncx6Ok$g|g1w zst^Bdv??e|dMdMx~^-PzM4x3lDg}0k8UGw zo(R+Ru?iyF@eLkSTYtc2invPTX(Ly>zF_CO`!|=&>>0;Tk)SF?;RJ(y0IS{0*S9kX zej@xCdwRTJr8zmg-*21UPn^;dpK3S1{!MYE{ifnqeeo&xJ;^%gj^Oqv=`$cQw;Vdj ze0MPPZkHf{DWHTdwrvj)XdqFh`)_>qptFdxB|%-U7M@0>r9Y6O1I@!@ zA~@0p`en;9Y(2Wy2j)pLqKwqJ{SMp5kAQa=L7%Et_O&N-MH~clU0}oYC;jEDYX=E7V<9v0NaLrVN)R+)nzB$uB zZNj(f@ET|5kzyBsi+$L{=7BAkjaTJZzs;T8UTH1~`Zqr(LAE$p`T2(puoX{$d=fDr z@!!-$|KBu7XUePo*k{yvr3ycc0sqnVX8_x++l1d?zGKj?iL&>FR)63X*=-XdJU_n4R`s(Hi)k*Q8k15((qfayE#c>Q2?F z)tDUsphy#Lj_k4Su$Z$(IF+tJizPk*AKC!4y$L^d>=~Bj;yohM#})FDkjGh*HxO` zKJn|owZdJq-5e)Fo1fz9$G^J}&1+nb ztu)R)P=zFcW*iVeJLq z>@>nji#xSG_bKD?#_=MPDn_Le1w)O}{U7%JOurB}P;^Q+;;7S3-ScI{qdH`$mQwhk265@pnY|g^PF~l)(6bC^(@a~_~`lAo}X8PJy z>YK1GpVl`5UgU7O)7O&%qB%zpYrcFkG+p0+dRc8^pGM{E?KBo_N-7ki|Gn+X64hHq zTUUK8#~%~~F| z8Y22{Jm&a^&%*k%I8(%?35Q6ER8{b`{Bj9>!Jb1Du?IJ|QQO>1KJjnm8=Rh`dwM7) z{|d(N621$(3bI&lEiGI2ik=h-5*W!E8Pkz!*-|35DicRB3|@)MzrI-=}CkE$~j?v*^ogl35c@ za%YMd6hr%qhVb%t@h;qj{cKx~3|yX;si`tsSe6I*6oU@d=5Xd7>hM@5c6hBO@71pHGvm~fPUxRLNU@d3 zUC@VZ`0V4b{Xb9g9Ar&Rhrjrgb)oK};xKAkRKReZ) z&RWlEE*`U%g;`FUtp2ArTY1=b_$=4JmGO#g^(tdNh| ziU|Yv)85I-Ka}<7Lt^kX<~!5BnrApnLJly22SM%7`5j1R38M|#uh6dO+wH$4ZIU-4 zU7CyP>p*s$l99ds7;<#wr)9lNfbCdR`sFcY3)yY8pJ+x3*{lZ_+zaVhY1eOmsINVP zX)5tt@Kb%xUWR^fv?e!7igYtxH{!;v!#`JAHFEE`i%|BSfZds;_RvZTGkiZS1U=C#Q9Hpf5GVQvyabaao{bPN3!XBUjn+YQ|rfON-}A{47i z?L_POV3R4B;`QxExs^m$0f$2lB?B{I5DOu;Ts;!P@` zJ?l?wt<7v>+=ie`rfqE~P`C2d6ksuZE@3fq3@?8uH=i{4YY5yby~)gG_jDobbCr!_ zdL)ZL|A#El*ycahn>u7Q+}PT*DM3_f;D{OWYpOC@6)n5>{Z&un?dLnfBG=Pj^A5A( zEzY{Z1pKJh`@DjH;eaa3mtS`1T;8b@tu=37KR}C(vW&_QVznI1&EH4C={G{I9mfia zBDa{l_*DD&Gbiw3p$K;ObQem60Wf+8hqtDX!vmnWxl^T(oo4MRJjd!KgbVS%cuEK$ zjIEoyCnv(=MX|Lf3Fycnn-fq* z-eNFzSqHcqeosPq>?a1eavy@P+)yR!?9k1! ziQ%ol`rpE!Q0KEGIP|if{y?-q{ds?aQQQ{-MzSKt`h%67jm5e3a;DCBlS~15lowRA zlOwWucC#d0uGfPG4btIgpr2+dfzWM8?DHOZOyJ<^Nw}FcVrR`yo*>dS+XNT1T(KW*Rnx z$rSn=riTUE^MLv5v)i8NnYmV6>vdo93VdrI=@XTuT(?B@THOX(n{FzQkqydRgdFp- z2=XacFYj|F@yTVLWu9%hdKfr2pDl0^{x0i{%T|uDcOEq!>J0NhVQq{jyHZ-0ruDHZ z=baB_n!*pBrvMX7tW zgh#7Y7{j9;OqU+c<_ci6(a4##C)B)wNB=2@h@7T7J6tzl7|88t#-kzrprQ<02q6Gp zvDM(Rm<+cBb*0sh5ki^mig+cb6t>n*<28Zg{})NY|CtjxR`b0Ng$sM3CH|gLLZ$uI zb9^uW=+_ZHLc>myZe#b67tGDNMB-KnY9T{sJZ%;!i!^q{zp#8Kym_|ySgVY@h&-;>Kj;$BCw|K(Ik;oeyJGZW>bC4{(FPpkv-5dn(K?qN%stP z*DeX>jjUmRDjn`xjq?H-K|%FwFyh_8Pm7ibOYBhQaaW+iaJody`PLIN#B2rxbzbW|%5pU>GY!{!!@+)Dr_JUg z030ohZ84BYQ6M;BnuSr(4{>Yf$oWU2%DdOc>pJm*yU{^Yy&H9F`;F0k_Hh5WjBM;! zPDe<%FjNv773E<8-w&4^z7q5>93Fq>Mh&;RxoDm%D=&P1b!PZ<>GV|_ZG@urbJ#5E zOyKfgZ7jL6)~!+GfX*&B`5I~b^`H+INZHDNp+11?Z@TC|Y8sdS(Q2MMw^V3XFk-(= zr{X{zi`Fo86+bsZcDxeO~pOiYIAm_(|? za=jt7l?d$F9}UH9?F^0uctkS@morh1iN$WOZS0ZWs`$UXyaU1fuyhPS2nWIKv_33$ zg7LNNY`KZMUf#Y$0}F^*Mz3Y5D^6tgeYqqc|FIh)k?S;43>phget&B>p7YYD?$&K? z2?XT{cC(9$mRz&wktjQ4^E%R@KT)A?;_8Pw|E|i>ops{TOIYe|1iM7+>_;|KV!-(k z@&Lz5hwlpDoCa*5=ITR@XI*5jqnYS6wei)>rBeJRt79?}C*zcIT+-*A!i|35UWYGd z7^lTbYz3F=R49hQfKZSt{hS@VhL?Y;H$_qbsqsowAMs$ zDyEoUOVEFAy`xwv8{M&kgZGqY*8RQsz=IbubI`fLQ#0pQ8sR^u5px1kf`0{r{eJp_ zqv7sNKS$2^rpWeFs8Ucql(70>oPZpnOGwHDP6}(k^gqI(2m#_MYuA}`yBc&I&mSNC ztq?5>lVaQqb`BV-zA{;Wy9rHVV0Tnj9g}>X{+%o9VAHC?g7#x2U|Kfn+fxQTC0AX{ zDfoK4<Hlgip3_pQf3OUZsiFOn&j8!u7rLjhg=Jb{j;Zkc8nUC z7a&vsnmg{yuFx@xL;-T$LX~pf%~VL`u$3tba}e?Q=N?^&VI)$1DR59a(xOk;en!Rz z_V5-dL<<6mma_gME(`L)x46u4{Vaz|!?UipLXEl{Xa{i)S2 zPkY|w->P{WG>Q?umEv(u)WfaT)gY(Lz3XH!FSvi8OpAbR?)cXUEoU5Mf#c7jz4&4q{BZKZcgU@zss%e(P9)yO6Ea#+Ax53L6cp-7 zs8m-R@XS39QcBT#(FTOSbt}zp&%zx1#E5Ao_$ye}!&IuZ9j&(c@f)s=6$Eufvo_gl z>$m)tvH9#4p5rMi-i*7AmhL95Rz%p+kw+7Qo`lxTvH|u_`dGI+(Pu#<<$0vb(E}mc z*>TD*wFm}AA+T}%n&8+>#_#ReDUH2AYc|>lRM4>5iC~HkzhASgPV(V8nU=}cPDxQ4 zi>>CfOgh(1#VO`&+Y*i5$#VZeegpcAn9@Uc2~wF2FT)RyX6lteA`Xh3owDlOTCGaL zDK$aP5wMcA0H)OUE)%h+;|sAso;^4B)4Jkb#;L=aO@-37n@E=r)c`~fufOkkMgM3m zbU!zmh8pYE^Ra00((;d!TQ}Mk=-5pz+>gW?e9B2BUu541M9<1k8$Q->7E7`GQpjyh zEF0~w!4|UfGF$=$7=vCc-W_=A<$!qK z0=q0pg+a+o(_}_$BTzfA3Fzp8J(Yb1q5B^c?FBhFF(hALDz~Yw2skrPxW2^zFl9M> z;gU=mZ&*)dqMJt@POCAN`=sw|4sjFb>`(5h(uIq1wKh?>P(SRi?r{!zmdzU2MAz{C zlYr0!wg_eCFmu>c3ADBR6M{-F)6CRGBvJ#wWE#1>mOz^k!rptx~iK`!40cF}P?c8FO!FlKS6woT_8t@^dcb5G? zX%ASTm0*bA-IsVhHW|AluIY2|zrLEu*-K_kb1?(`WAK5jL5 zEE8sVKHrO&DqAT>Z#7x=Ue90yGXMKBZ{-y)Tf|HK$H}CyP8^SXsR2{QNZ) zkR-;t6q!2I*<)5LdB91AzWi*>Y3tG9SSbmE!MS=Vf{>0&Y3`PTs)6A!65inSJwC2B&a;0fd|2?l9Zc~> z!kCcG3fQCY`PuMT|F=Df@W!#kY=>$x`cH33(y>9FbY%hWXlm|GLBd;^0I)y~CO|3F zW8`+i<#jFv9eKgdrybJ%Q?Clo`DZ3;ae~numG8HKv@%H zo9q7Es&OO`$PMnA3gX~t>db_?$780~j0-b^N%=Ga!ICgc##h?1g&e6_Xt(T+8Z*x-fWq;RlIKbZf&LGS2aa<>I%|AV~n!G?d1(= z$Y5C>IrOA2pnM$OcKjZfCcggA>S#c)4d_KsV9BOJM5MDXljv|N%Wf?I=|l#CE^NcO^EQtU#iV1R;wF# z@U3lWz?o!N1rp36>w1`&UO2aaQ?(MQY_8cdh2cA)t?P|Ru{<6d&$ z`6qTb3q-IA(~>;frS6B0x^$LQ-8X(YywTMRUGYpO!0)e1|UY88a&Fu zl6z&V+G|l&4DF|W7<0Gi^12QeCqr#J3)QeCQ}J1grAz7s9AO0w4Qg+)MATWEmI8yy zrGTsNUVtv|MsL@#Z#K z^J^zXhrV3D&K+T~S3t*_9+r65**+|xgnh0@r&k3HVqdw}{Am5=c`&0-KKkzC{;A!$ znpH}711Qg%V20%oOjdLUBO`X{VR@L*VkOie$acz^YE@my78BZ%+Z`D+0&`V<;81Eg z1COV6l6nNlkf^wDuI|;7nXxa&7Jx)ymW4b_9%|NMo1CRXMQ!Oofcwg5{lQ4Y4G+`0 zJ@TA88Xw98bd92pHQV4_*cOgqfsCbG|2v~!Y2}m{IcN~#tlo+p1Jb~~Jh`W*&++M> zS58VsBy>>o=?xYryiB|i6vV`5p1ZSdf)WAJ9Dl&pw+J^RlX|4=FTAM*uP{V<(a^Nx z$@wP##ryI1OY~f!5LLF~I?vLJ+>>dJ{e>LVU$0#wS=iT;{}-4P*1HcJ1-kiE@xu2r zE*T>GR4FN(<;jQ&jj|1f&UaK1*f;Y!$o_hJlFAcHgCEbw_!t!IvZ9$2L*y4VaBYM&y09H3+wuA&wdZ!(a}? zFrYaT9r21NKtT&dw5;0_l^c?{=%#l+u*)RNo^|>NxPFbX&bfznteuHFUh@xp_v;Ey zozirAVqH(e!{jC;@C*K2xuW)|K7W#wxXLe2E}O5Ergq&<*>!AHLRuF6{2oT@kJAsM z=ByMyNxMI2{Luj#1I4V6jU~gr6Jed_7^)2IK#T&Q4qJ|_z)S<-oaObG29+?!eH9mF zZHgi(;Bnr=<)iZ^(NYI`S^e4&GLj7h2-;-fFLK3xtG<`Ki@2ug20ev@JxvG@W2qs& zef{^SOUyW6xV_1y#uzmrkM%nPL$<@qfTJZHf(^a|qE-vtK8IxD;-lxZYTp_d#A{>x8_)0v5| zVLDd4v0dR=I{8c@7?I59M_tg@KA?Fz5s7(y3^I5JwT0dqLeAlFhJyk8i5vV*z!)!N(i_En9>4Cl?MQFh*AG+^uzFBJV)|cFse!Nc^Xi%QN+q|z;?;elYmza4m>N5{xv`suLRak2 zb%hs_@7wQ)OPFq_fC&>(w9FWK9;iV%FgJv$^*m*iiS7%zi!`N1_4V!_Y6RZbFw`C2 zxVW(8#@-nF)=ZNEDR{rBDpqx#gXw1`pT`;PmJ9Xwf2^P`%z#LUBxI~&uZ)oRC0U;4 zZtC0h{nRiiEiVju*3yV&f|WVfPeW!F@=r02{GSqGo^ zrtd6l`y8D$Oga2aSQV45zg9{IcGKBq8PBj|z=8 z-h6d2@!7mL?7vb^7aA|ThKUbhU?%pR{iMYzCQeC*6@xRer!WM-Ay=30a{zl@)t{Zr z3s-=QA{?*{Xa{+?$%_Ow+D;}S#%by@8dpUb5ZNoX8XFzTjz7<(44Bhro=Bfek+}r6 z=*%jkf;kvzq>dTKp>T?(PLq7NT6*-%1gx_OV36<_<6F3Y5L|5?;;N*w=f!mG6+QTx z)z7DW2{Fk2|J*8Y5Qlf*+D)UZuC6khJw7mBz3%MReFtc}ry#xR983#$>FcKpg4#mp zyK6IirEi-5 zq;XH0V3RAdc(|N7_~miDQ3b4?)QE6_iD&G#-=b(C3 zOZ`_~A0Ew^n^FW2na5!uw+sDv?23G_A3%hyK->q~5mEI$vu0 zt8Uy;+uH2h$k88So_75|)hBrf0*J}TT0v=PWPZE}hAWH{GnzW5sC3*wMjfP@s&)(| zIG%&SMFaWhM!?ai(xHcKl++{gC9D_4V*uh|7CLsuBT8CnE68_u`h@Z)5Eh6e;20#h zgQElUyBno$%4VfOi7l|b+Efos+rsp{WV7VaV6+M&QwFSMCa)yI?@&m*GZW~}js-8S zaxmBgxbqs9Nki-2J*b9U((+Uyru=BC#(Ep0Tr;wu`7VB2^%mc$ATee? zF}7%Ymo%+UC~Ebtt-Y_PSQms^$_<6Z7URsQ_`5ZvFKTDOWq)02%g3s!{KEuPcN*zB z-PLvQ8=x&u98+JX?5omt9zwG$85ku%LqJK1U7sAh8?wj$v}d4kuHI4ntD(bA zgw-)>DG0P8-j6A(2HZ7#HRp^7&nwLrw6`^(S#t@cIgspd(~I-|7|!9JKcaQRZZBbR z{ob1_s__YC?-@Fa;slW@-s2ra6rm{ zT!Qr*_YP3rPBroI*tIBeRfb_Z$~afQf(!KJs42b5lDeU+70kiTCAQD==Y{3ltVY5b zXXw|*XHq;=ZLjrNyf>b6v?7=C8`a&nEUeKAvtYSjkd6Q4fagqt|i-l-;bYujdNgAkpWl0x1Xz zT(r}oclk&-SV2O+&w!a<@86_->%BbR{MV3!xK1NpQUi>C1-LCE19|70s9KZ;H*4=DmoJF}^UnDRvfUk>2B zAwoxkiO|VueR+D-Y%b($3U30B>7l!4Yi>+er$<~h9LEIOInWszO`o27GQd{`D5*+! zT5kDe#yAEckz~EXvC0ixzLTjo%$CNR@}nEfd=Yd7RjyGOz; zr+hHbFmbEFbyNbCjT^&-#(dKAKR~K)>T_+pa%%1Y+qs7S z(_n36T2dF4XWJ?qe<3R>y{X$w?i#gmz#l`{r2UjS-O5W%0QME~mKmAWK^e9Ea2j_D zz(Uza*kOc-KLU!805@?UNpF=?{-`HU5?p(;n;I4ubgQ3fpU`^I4r6g*ACMWt<{fH9 zqvans@iW7_B~dzq&pH*d$mq9ad?=uSD`#NOxL@QdKZv!y96nX4Gj(wV6X2KJBp!Ae zVpvZ@gC?+bFpgq@prHw!N2=8F)dw}+S|fl`C+)XESngWWef|cu1BV&Tc z-v4%^OGq1Xxo8j?@FO9DG{@niy*(Eyu4?%~Kq(;6^NkhFkwXB;7wK47#&zuA)6f7P z&4GzuX>!rmxzkkFrjz%WwK!^vASKc&g zlNln@Wi7gc3-@;d-^mjXx!m*}4xq1SuJZM=cCoOgp(`m5`NEk+`Fc|n&TuGjk>}p)ME?IYb(Hv^Y zN9!r6E*kY*PlF&#Jd`|757VECcX*AAOrH=$;IARZYPH zbDWw&!!9_E2p0iBhHoW~2?Jt26geRl1hGcOk6f*B-h)!PgC*MiOTIYkBtqGD>yPRn zeE^T^p(~v5@xL&3j?I|`jk=C)+qP}nwmESowryKaY}=mLww+AOJ@2klb@n-*_CM&V zwYq!ty6?WOu6lvv_9LCQK7o()HeQOr@v{y@Q%cI50>C6Ra~<8R1b@ z`5H@-A2Um7BI7UKb}mircXU`8T>AcW6^%NF5#lT7s3-FVvQgXQemvqlKtY$I(-#xi z(XDY8VbpyTD*9F~8-qq4{BnlDA_nopQsNeCp?eo95!mj@U#K}VP3a917XavzN04r6 zUN-6S)csN4W&{IVbcLUGD?3LSmPFYuZFfL8g-imI_FOI6R-m=tG1LG!xd`im?U_!6 z^Mt_1`ZW+4aTNWc1+K%S7MPI~!$uGm-k`dQzau0%bWBK4J!F3b}%Uc}_g8FnfVE zTXy{M>u&bSA$H-#AbT!PCH2=_PgT8ZNuj{GPkV*(-Bq;GBTN@@T)An{i9Zzb`;R!I(69aT|`jmh@xR zC3O>^cZvw?iQyRFCK+WEhUcijqb5VI@w2Oh^pnq5MgDAD(*uD>xpyhUWOZwri(oH3 zQRSE+DIY0NAe$202E)&N(C>^Q(%}Uj1aH(c0rHD?3dwEQs$TFHRXT;4uzu3VaN1*k zBOkf;BtoZqA2lnBOx0Lcr^pd5*8I^BieR1TO`avY+RdB;8Lv?(!<8B1m+8aGlCb!rLWyD*YEWR7`;vx=Y)8{bys{%r_>sP{v>|jt8;$QVr zs*Sk|^)9x1)-IXQD=}5t+A$~=>Eo+Z(;7-?i` zh!7YX@6NY4R4ZwEPJjZ#N#u4Qh^Lm_fOkTOQ^TMSYnH-|+xgpGhIOm6Kjs_NLQ>X+ zi7vFd+Y+EK4IGkv5UdY1HWqO{D=u zM?;A`w?SdpU0V}nTWWKR3&80@Ky8>iSuA3V=*}O-LzqU!Q0K_sde++&I*Dd+k6#Xw zn{?7*VKI){JGwP!ovV;n1&YKSrckXcL(D zD|2pKu#;(MbmCIo@!bPUy~Thm9q>YCUC|ZIx=V9pj+{pf#`@4=%Y&d>rlwsmf()$w zX>+#vRre0&;0QcCavD=7BtC~yhqm&9a%|X!vcjBE5m58*NF?Ekh0$GNd4{~IIpgYU zA1c@^yaON27XtMmG^;~C;~ z&CIcmhu_k~qpPJ6+^*xx>Z?v-MyTLt+2FY-v6BZew7~LDGT_wa(w^n10Ado2qZpS2 z`;C)66NhMswQ}ZVT!0j10oZ|Qb$_TT z-I5oJ5be1E;Uf@%77hcemjTh;2|>VH0WC#=_T&i9^))YbXgW+8S1b%SG($W6|6*WI z^!#q(;KDCiX~>X%_fu4|32n00lo!15H{ane`n7v>Lm!Xf_$%M*#+dxlK-NQZT~Aia>GMh zhNGltX@rhN=x-6|9{u5&!|jpb?c><#{2O;( z`)*jHYr5GJuPWO;Qf9`n>BW0ooELY9rb0HkYA~`X<9xh*yRXRZ2+I7APmUi6P0k=j zH+zY;1=b&knDaEQW~+?eJ&$?HROd=I?k)2+5Es0Z{8+U7D5Mba3VUhPc4Ire@bb%* z*%bV|TW}&>g0C?N?Xe3iN1!0b8rxy=hZvnif}d{7+|(Y621_|5;6vOQ&cEO^Bl0O0 zEfkUF{jC^%On{$1CIdx^);bXKG`*-s$U7(aaTzUSM>fQxV0kTOxsN_{C)5zYXuME* zz~qpZv5Lnr_G{}9v;-#j+z75#Ul82(Sm0}$f%?;)2zy4k74;aqmxZda2y)+1WCVhz z*YX#TgxuZ{TszR_6m{(U08T8m#S;TkC%t4azx?svs1)Mu)EEh@I%HJ%=>#}PC>8Yg zG>PufY5Et$e>s0op$Enl1eB>61_{FEtNktq?6i7<_sgSaFE*uhczv4s#OL(`A`ktn zT)D4-fzt0Laabz3EFxY(-XHn`cR`P7tL7Sqrvx`0SbLMk7r zk4-611}$02cIKF?-p0LE4*_N$nv&KW8E9+{g~Iyb{do5ab)jc`Jm)q(i}n%Vr2F;H zEa!w7W5Ae;iaC%WM2L4@IeW~7_vqGZC`HJO?=8a>p4hnV+3T458o#jvx?=G#yjbx2 zYR*$~2=hv?4Bl>2)&t~-PXOgejuf#b^X8x{x*W>-D5-xAGNs~*H@F=5FwQUKE9mV3 zYgAizC1%Het{@AdX3uDOIx{SRTdPqe69R;#{H2&sl5H|*VtwmHqgG1k=MeuaS}PsG z`bvPC!~V{$b_{8VP{_l3F$x8+6;5|wEP}R{Tz>iOXFBQ#4oAXhD$hLlPh+2xCLuOk z<*tf1WzSAX-Yw?pruBhmp8ebbRdu?Dnv8%}FS!AP&T}LCIDYt95kDp+W2eWle>XDSZwwxFuE341oKW}RNc~K4N&Y08ST^BBFCzW(AN}acm zJ3Xymd>?yKt#fMWJCl2$dwg`Zl^ZO~^>W2c2AZ399HYkGx!sta#%R8a zeMFNAFYj$pG)^Ly_uwHfOAdhNEuK?bGkce=Qd8TScqtI0$ii8VeX;%ZT5b1l{D+A! zo?wC4{+7;2=N(K#O+iwq4vWqj9XQCWqOqaHOMeAmzr2F0u?RC~Xwz=ERDDuB=f|M} z13O`i9E3|)59GX3%CB+i_Zf_TA<9MVKhu)lA34G!!W*k4aCX9H)FM~_0?e#Ev2#E2xxW$E1nwTzuDPt$E{}HOLJC`ND+bbM+tg?R$9=Q4g?H z;w)~2?|C)fuR?+h>UKOEFPuXHM*SD}Lj-9mtfl2jtwJVqKG8RZJ?7ojCn`j5K43i5 zn4>675Z!Fxjg>0S#v(jk*x8zn$bM^=Wh67hwd}4WbE@&nIjC(H zB5|nKB2(m_tsYQ0QP2Y>8{J~qiYg>hcu%g_NdaZMZ~mKhR_#ky00#hNWCNI4s!@A~ z0FhJe)8vv}?Kf;}_A?D$%ytJ5!#xC`6YmuN`$v#Hl{6u(UthqHq4N&dyuwff+HrUl z6;DHBT7i|ZYc7QE^H+AQK_0UizMYeXPHElAV{&lkHq$a<#)S+vB+P%<;Y-}(!qAd`AiSS$m@6{S;x zeaMp!!@!uuaoBNN$4T@jHDE4=riO;3gS)W;^cibGoW(YI!kX&I(E|8H2lDNnZv3Ks z2joW6FbE)^-`YE1vlQ~RAZh{oIyU0wC)@=v7K|&-EAWOwbcHr;uICbAE?$ua9q)~h z_sfZj_89|Y48A9hY9{HeOsGDAe0qP~sn(%MG0!I=WqS*aZn(D%i$l*IF!gTN`>PQeqo zxC^0Ks#Xxc(Yx@|hdG}|?%pMvjV$J}9KownFVTWem|rPOTLtKD5e)Rjw^&nb^g#Ab zDP@kd_4OvZHc0z~pNSK{?>LqPkY`uDEI<-{4CaYaK{dzgugI-vHPnX20~acc_!nHt z`a21C+gXMFWI}>IMsLRc??FikOp`Z5Z_D0SgJ5?I%<5q*|0E6qh2EmcRnX4rQ7AY3 z5>-EtFD)qKXunq@Az|xoGT9~j3_i86=Bb$l-jSC(+8&&}eTk2Y-QUvDO=hQIfsvU@ z0w4>o5hRN4@I&@bsr&)hySp^XiYw9iqmPA=xc_~gn8btkHlr-@uGS9M`r(SD@?gaTe56J5ay*x z9$b3|OJNabKUQLP#_j*uSVwi}f4;;W92o*$C@67O0SH|iCfCnm;(9(0<7umku3L4)J?R$bJPU5vQQF5kel+x#5>0YeY(jS zLYWz@c5nQP4KGrhDs)hkcF}RECe61yc_)56+*GA za4N|sq;{W_T&{!R%eU7{z*K6G0>-J!DU5sm+s=quXL6wynI;6u4pWm7d78r~+iKge zUmW-?zwd`5*J4l!k&{qbclM5;vhE>uZ&Bqkr5Vqf)Je&{o|jpC};AJnHHv>UNZK3WX#ZSTki^eU)YQ>zFGPL=lb zgEedD81K8bXQD==;#Vr7;&b8cC6Mpn^guhQiV``wI!qPA=gX4b>&8aIW&s5R#?u)i zU$$vN%(xeRNe)~r`>4|a=DM`5&MMF6zs2!Kof9pD{Z$9*tZC(u zy!!pWKq^u^1eKXB5@s@VqWA3E59Tsw%ki9~@)?AJKL`tG$Wzwa4HeH(G@a*I2B&(( z117&YiDnqDm7u)%f?L4m@wmIsH5p}v8C8^!r20X6XLZzlkC=lPSt*v`I3_c+q658# zJ53^%ENvE9vwQEO!wlwWZoAW65Vv>wN)dwUy#wZ2H+a;oLO>yhqjV%UNZ|?Zk_=k9 z0&&Ep`*&jcSx`)KK0HILE6P)0GqWF_((6F6i6g36F%ExgBT4x+KUs(VL&nslBla0W{d0?mbks8t*SgxJK% zR>i!ic-M!OZQ6+S5uPj!_uEP4rl741^CcvrDVn)`5h+g!3xj5+L=tou6<8HhJ#ftzmiorB_=AshZXzVk!I|g`JN)H(DpEi==|*&j=Uns zJKo}?k*nu`z{;yA<-iQ|_;cZPl1bF!a7||CQ~Nre#9g8gKd&;$H+2OwhWM?@Q~!my zAk*MO;P6#;OZf^ELubiLEWb7`r+0P3$Du28=nEuly=6-_c|^^H~RPIhlk# zl~lb@-n(N6z)t#}wC|U%=s5N;vi|^f#$W#g6hx_cs1n{MyXZb6I~1CWvx5CvF|4mW znp(Fy{TbO<9-e&#*`<$g(NNkYMf3#NF3~*D9MX)qa5>#nChJcVE}o0H3hGJ%Wx%f10QO2s`m#%P}M3B6nJ;A_eED+#*_ec$w@AL`|0< zy29D|`aial<7UD&FH=bzP(Zv6W*xxj@_klr0^o9ZBYe0|9p$1kV`0N+qRpjNBK`vO z?*6y3T$9x08KfPaVX-s&L>qCc!Nui&IBj-T<)|g9CmjC;^45g4$y!qWX@zyf6WQ2! zGr4GjYyf$|wSpn)N~GfV#_wMJ3yLBP7XtS&b|WIKC=XA>_QrEoj}`kpl`#l5r-#fD zdl0%WU-wrrlntU>un8)s`; zmVXh-Bw18}oHwP*?VKAe9Z_3hD(fwx@J6DP9I!UkDK}YZ+6-4z9`A@3HPB~6@Edoo z@;5+SKALLl9{I*m%Ne@bIG}G#B|o%uVOtjPxx5$Slv{}DlKnIJ6Pl>S(jB97NC|@Z zc0m?*;(pbqr(!h^16{*yj`~4m?AlNAUh=2vu&Bc90J>J4zCP%>$6gz7yX+m{Zamu(W z`h+n1l2DMG8~zXW5)*!n2g36Qt$L*ER}*C$>`Xa#tIV+{E@f;wSAX?3C4P|%-167x z-j3!ohr+Q1ne+KdM$~}ShfXa~7h$;ea14o>u2~cm$~L5Q6x<)*d*$9Om=4l+LJ(eL zY*lj6H}r^;n=Do)&Bvpp#vf-!Wk+*>Yc^L6d{yhL zq2_@ecihGNSNxF?Um$gnY%VnfLopu?^DRX*R-Bh_?9@-X&rE2H(Sl>*7@BWnsU6l; zmIM{e+fSFE#80h*%AD|DHd*t-jFLKnCRynOSJo4xDj~{ew1tb4?D^@Ysua#PM<6p! z^3J??V#^g4rDN$sz3iS?K7%;B-?a*B66i9lr;o5&%woNP&y8Ck6|Bf3@-iCsIBSD9 z@#$maYxvzqwZn_-5Mx}?b~fn#uENpkhOiSoytpoAEfIO9486i{`a3ooPsU`=5JHB! zO6<@tePUVFlp)V$$q|`K%N0u7x5vA7!~KrXq%PkwJX4nAy4@1vj(s5PZ?NmSWyD3F zu6LV!mX#dZM#7asbUBPcG{h(r)SF=w{N*VRT63Q@X*8^6Z&h;{3_jg9lEE2=pJ{{! zoGx-r_5F6(Uv$cGqtb)rK=nd-PC7k!S+&NZ#x^3P+=kkZCQyV68qbl9Bv$u7widMTFW7oZ#p7tkWLtD>6{UW14TR4@9# zUJRm0K!=2bt^!`ula~aMisG?#!t|?@k!gDe z>@Ut7(vaR7?o^>v2$lwLbkg2Us+9sjsQ4=ah{!q*MaIO~TR$s5g7)^!iE!b2dR4zA zMrSW!Zu({cx@20{mD#5(HiK@>(6+axB%kE$rt7_<#PmM!FYymzrF3n}tO)!wr6w>c zp9H`9gzzI+kBS*qDU$nYVeP5@%2a>eFKW;2nP;Ea%g2~D%5;9tu6gaJIy#_04uhsd z#ky9RPEXI+#PFaGJolbW*8`f5sB2cT>4%x)MOsY=1a!bScv}hMG0Rlw1y5q<<;Jur z-Liy{Urw^9B-7nIaTKp`(ijzcvYw= z-qUbWlO-~%y+(n7;=RV4bZgQl;mTp@jf=EjWsxeJGs)kMjJuWur*>CQj?L^%R34!|S}U3`_?vcl1TQ<6z) zG%+9?YqNRZMTto2HN}cO!d2M9L`U`C-%!j5d$)+*e`}`+L}0;UtGeaXa~+d6++zKf z2H$4w32B1{)l7G?4g2YW^AB{2s^%6l?q@!jlXj5BSalQ(2yH}G`urHw*utqVqRNvz zmKMJcGY6RC#&A^26(&liV7Eeg_6>9_g`c(Ox-=scHin5BUo?{MlN<|DvHn7UFuvd( zNsr^sh;7F;67A>uz#g6@nB8RE==@xcP-vmqd5UT~c_IyImi08Bnb;1`d?IB8d+dh! z!KZA|3@RAzV*K5EQPwhQbd6hdxl=K1pHUmGwX(CzB~KJ$_uxXb_Jy5EW|!WiaZES)K#0bwYh%H+dk@d6N>d~@UO)osp_<&Lhs1hphug-Qm!k` z&saGw8oJ}J%&(aVhI!O$nxeV6=OXG=xEV7A*^?G992-$D5)4I?UIBI zgl4gcX!7iD3ICW(gFM|qJm3m?7SbD8EL9NKkzYcs3NzzLi6>D>IraGYcT+jv@L!*E zoV#!&y2pTzehn3dA!dc5MSP<*fTae~5uuN*RjJgv&v^spH?c2rpiCLdJ$yd6@$T-G znmnrI5Z(s;z9O;B8Iu*zlOm0p7L6*5Ag;lq2a;PE`B}m$oHFy<9Sq5MKx8??Q8b9M zCp3RAC)(w!z$ry1b^xyCV_^d=F$uq_>lG=rq-6>xqaDsv+uTEzT>5d`;-a^HMRAy@w$tzA>`5AFI;sYbIs)G$5SySXx(RMP`yH9(41H<%G z=DfX`t7q6Ekt;a;SxN3XdHc#&WoQ^D1Q63KtPlh-5SB6<5nYELuZ&H52BY?h+T0+q zd_oEXDw>Zan@^VT7+lI;>$#EOrr*E%JcYqhdR4J=k_zTr0yOJ3 zP4w@R*vC=$hn_aBYQ}NbV9Gs)&^hVx$0?4e%_h46ojKBVe zrhAW&f7~;k(IEK-mq;x+&TxWDBqfZ+`^nT8Sv>^%HT&t$nAq?LYeKLOiYBA*zG=i6 z8*)fH(FfUlAMRN1QKV!b{tBR-un|9xtRWJr|Ba~cf;f+MlU@b2r`Nx^75wFxeQBvA zAO5>EHr)zVv!zg`k!K{zc#yflez^oh3hHjkr;JTTe;l)t)PDe2{|wvuD*RHHffkt% z0=O4=JRXw;)O-zQYd>6P&kfR>3pTyiQa5^6wt(cF&){7j7<2yMW#J5}x39earj8Xf z3b8p;L*`WxzO8W7(0=*+cmJy}> z&KQA~%{OoHfh>eb2XJ~tr;^gC;v2$wk50;n*!je(amzdoM)nn%#>B5xW)b zw2c&0>+0(8iKyj}ix{!un!whBTDxk5XQI!5wT)Tq(8TBpYubJ&T6`O`VBr^B@ z7zG3kY!W7>xb>atxZ|=TOLK?Gk?`u~tmCjrrQF6@um1V|F4(#4mkckjc|PV}%BW1x zjnH>JEl=U0(irz1+&=m@S)xwC;}F!PSakZvqi2({j|JO0rj=z59D+R{+QSRN&I6l{ zS!JfSDMa0=fPN84%Ia0s(=Xw!qGo%kgo42kRYZhFkIGtV10_ZdwAoE9Yp^7S+1WtS za++*gFmgic7Fa?Q2M)OZ*s?)pIDx9qD=VnXbz$xx~5;5nY!uBJAo=$&bFH>?|_->t^I})2|tF9}cotM>+?j zef{?F8{{cGK9(1XKGuw@xFQ4$kGl{2kNij0eg%?~`W4eOY793s~Cu^1d^lsUE>UHtaZ&`|IG4|3<9w3q`58hqzB67e>f5Cb;`! zVF_@(SbOajkX>2$KN-$|!v)Im3`uJkzSnFwoipv_!X;!=+2uPHW!B?JY&++5;<)?^ zJo|_Y-8=Ce3D|bfb1^o~VUKhPcpr=e<^}4kXytF8Q;<{;{Oo|?bE?;2@DaoC3cWz8 zKewwC>UCTE;Z4FVJ!Yq&5*E00a+>oG87KzK9?Ju2LM1EBr7!sVBo!fEw=V@e2M#G%SCxZa&_T%Lm~NSvm=Kl3;uwWW%x)*Q3@^;Hhgu>8nQz zWAm6Uz*j08=g*SGN&p=l+kqlZYc*0tytWrV`@GIMz?BjRE;=0n`qu^5+VTn5R>eOK zi#s0^kgg9NjioA>ZbBFh*QyCu>5ow}yfH17_pRO5%ZF z8p2o9`}G+iG`7rVK|LQ}uuOofLp&@^MY#o^FK|RyV~np5;XI@g64UDo-ZF_6Y6Xqr zs|)Ts*tzLeMYN3jss6E_Z&d)uy^79E-vP8;z2)|IE*pQ-{c;wm7ht|=1MvxUz*{}d zL+P&rp;^UU##+1Yey%1xYv=~p`o-1{4@dr!ng@G$SV*0{N7ugadVvyu><_JhA|IAjg`V+!u5d?I-7Lgb8-zEoV*D<0e7<)pX6BYc2jqr@e!~zfAC*+ z!hU-xdYO>@{wqb@U-v)J|18Og5_Tw!ms-GU3omjkmDw>ylfAe)=lD6QTM8HjQ2Og@ z??RK?jvEh~R?Y9AK<}Bq>EiaJZ!g)Fk=A$s*)K7G4h(b!MfqKB&f|*w=U7R=ks}=i z|BKagJ2Znfm2^w_Pozi3U)};j$?K!}a)EcIZc;F87?|@ZQ+^ZM11;VZytF3|mZ})g z-!*?@1`U_rMbzfa1_M+ zi8OGA8OiVrZeQ&W#}Z(N%>Zv|#nvu)tr`r?pm19p;(_-JB2Rk^W9gljj($hCPN_q3 zVo;W3+k{V+UpahUF+hL+LJBN@wH^y-$!A+KUZu~cE;_?*!m0kgx=-jX58R+Zt3 zm_7jC*rM7C_NU97Glz7?buCDGXKa~8-Lf29mXtN~6B~{!0aCFRBfckD*WE+t$+Sn8 zXVN2KEVObRLVEJ(3r-71&R^R4;y#{ZC{&kb#zEh9;RNCDozu`MxVIq9E9s1LaBp8s zi|*u@$%Kz`XSytWMob(6{%m;3>t-5;2#hV0YqCY#c_{q6#0AJgdIO;Ay71wbC5_tf z7qno%t@Jvur_E79i{iuH3}dAz|JYC~8DIG#J}WLMGJO$%TI?X`(Q~q5ee9)`&pT6j z)V_(&<;c!D?@H9b5?5kM^g@jT!?T#ag>ufYUNsn(xJ-;Yjb#pa=_MWZIh(Vk+tyav zGi2m=@7IS0_T%_7Dnq3Cd%CchfO$$b@FS zS(0;$6%%-@=*42(+wT~$Xtcf=M``oA`Lgb!1HML%bu9NCwYDAisdKBq!Q4FlrB^+sHy!o za=8#y)8oi$yoN1e?8;>sihsU?s29y=)#5SNmwZK1cZR-j;9P)2n~jH4eW6k>U3tFa z0$=&B3zmt0^6R;RQId!EA5Jgf%>lep(vaO#A7(T_nY%`CsmWPvsu4v`7i15%z*k9keE;eh8X3UK|v${0CMk+qYQ@G^@=Zg4IzI+rOuA*r= zrR}+p%zZmx#;_E(boO!LxcvN!%uu-!Xy2(4*okJ9R8U&Y4Wd5+I5+=`hZs*Jk!NoR zhC-SUX7AbIgCrFvg57a)d?!r8ZR1EL?5KVst%Ifvx`jOM5$6P?<5KlJ30q7m2I5{1 z-oy=raL4vWWT~ZZ%ErQ?Vu!_SN+lEto8-P#Ija(9W0Ry5FN(nu0@7X$+?!3ed5oS- zIVjv?7Bp?J;I!P9pNZ3NFp>s@FFa!i0Kz$>ez9;WFAd~NzqUH8xtjl?vEl7;B2EFdH}yuP}^o_bJsT0#OM)3RvzVo(dmZI}HDDEOhy1)-+ULFlN> zZ1A%&Im@yHoz(;IH8&?F=Us~f{0IT`ll-i(V-OahQK~_@P@pUoi?gXUKjF`WmfN7D zLK?z==aBW^q(T6vHg%Hg3Wk>*O42diuu_rjCWaZZCcXrtSH!A~ z93El~`za3J`M5#yM_#AIvQ$G=&yCt z02sn+OCZBa>;YxG&ueJd;Zib0i;#SW6B>9cHutHbMZh0KZzICt(AuR^tV64?)mJ}a z-ugS3t{-C@n8)MlKlbB*~{?7x;q&20`>DlTd-E*zm#@ z0yR}6HojaP*!+LCF)BRKGRVnoRI%1K_)`YeFTQ$j7~T_(s>_SX+Z=Uq?-^{^#`I@< zx{l=pCNrEj+34oRFJS*VhA^Q39P3x@Mm+RlhbgVkua$7AuPMuWwKPqFTqsY5d^kA0 zQAbav$D8UpZ75br(tHZ|LGj?7TE=06S;w=6ANi9rqFF2HwnHe*{I2XVU$uN}+#*{~ z!XPDVRfkJt?{X#D-*6onTV#UJJKX)@NKY)@tC_BxQ_X91P7>xv|?QWHe4 z(>B9XBY{UhSICf%u~jjXd9SVuNk)1P$+~e`LHIqX>LXB9?XY9tZiUG#X_kdOu~bqG z!sFgohP9NIP9$*xu1%_TtNZdMpQvpG$sI)q^KDpl5Jx!)f%{T4grqLS7-b;0WAyH3 zjXO^Z9+fp#?HOL$!3z)2*J@CT1L43ThE49=V#OXF*l4gqt zPoSN~2dcV%@&5pg7ph+51t=un0Ma%-hWXKel-;CKuU!>=l=d6yR&YgedpqS28lD^G zVL24)p)p@J2pgEKo(O;pu*#pw*O6yGGg0p}C9`apxPncqkU0&5!v)}iYK&J}hvMnU za2=g(BpP>z&Z2TL1@RRoHDu4{3+-0 zIE5vCLW8oBZwmnjIp$+XMtc{wMp*-E=6R5tN?9&DRsxP&u)qUr%eD*Ix5w@G^LDV3 zlP&-^XeuG}sR&>9<7M$b^AQ`PNNk%Bhp0DtOo8%`ieh*v=flkEa7J+vu}e_f+S2wg zNKt;@WXSo0m=)J1xMSI^>$`V-Na?L59996$RaZM9ec z=(Ij3{7*Hsy`7?ho<3rmm*$w<&ti+q3JT98l)rM5{Bac&Soac^D{aq@TlCTuV%7*;WB}6GP7aCFtMy0zdR^ za?%K^s$4d+cYLXR%te=*ha~$EexcYH$r!2KY0+X@nd8E`eQ77;)9XjX`G}@#xsY>A zT|DA}4@GOkr1(POO@`LA+|cw2O=Hf7xcZiWz73ACtXBrNt}@lm(*8AUSnR`RWMYvQ z$0>Do+~etTxgMth#q4shrBN8%6xk-oK_a`X$!Htr!tVK2>VPae!m38fnZ>=!_ROup6b#W)1Uh97a9^pv$^gpz8L6 z@e6}J;Goz>)1UZB=|qhJMZm@#u3@dA|J+rXxm%XzBFxU%e+Wj_u2kHqaB=Hjna}O7 zT^^5|*lL({bulW26wZpiv+fZpr!EI&%E=WbEa7Jda=o znAMYxHu|y0)%3P#mJs+nFVH1$wLQSvX>>LCx1}GFi8*&N*RNSy7k~=CGFp}SPuXIz z4+Q?swiDlx9hMr3EbMm}OVqPt$}Oy!J($FW7f0tgf^iH3X7+&VOS8HL^N~*UBQiiG z06+DM9<;|mpuzqM<=o!}KEp*RreL8q&G1~rQxN1+q(}z0~&V@}s7zvf1yLH@{ z!6nhRO4fQm!TeillC*_nOO6}RsJO7aP$2{IUdg={8oIiUbg!0G+JY)$ns&Alpg2`O zSvgfkqs{8feQHZK^sSc~FC(8jh2RL}dk2Q5en!U$8qsT0CE%)!4JQZA(ck6NSqphr zo}-D;ZSQ-w@$3oqZzAT(k|mjGO0o$+oV(|u;CJL_{R7D?9IQ0BfkKHlx2vc1NOym6 z+|N72-W5jUAm3>~>Dst&&00NA&s2dxEXahB(zWW00EUKT$5gp$mC}GMau29zB%Ss> zKYe@@!*!*#lT=`oKdkqkRVs~pRCe_!EXCxgyF zSdVuY&OQppXS~Ph%^6`5G14eAPbJ(h*C_(sHw&jt6Zg;f$vl^4#!j~JsU2w+P2Orr8yb)(bjv6S>X_?8rZcpS74i=p7G zkSxd#J_L>m+=GohesU!kTO@yL@~M!#sf8r7_d_=*=U$rclOT=y<+IU`8r5MBL^o0| z)?D;mqJY-a%!hOWn~nS?@vRk8K~tsjKRV_c#C5sU_&VRz7S9ES$sFeQLnHJ09%;ed2Y0-+ra=@)9K3G z#)%s(Mi${dwW0f3qyPv`!45xo#sj^gC3&4=?R1uy^ zdyOZgx?^mOhYuUq!f@bzV;n}eZpdz2cKl88_!$dtp8_K_oq9%WIgmkxN_zpMkf0x{UK zjv$m3`w}}=58A7afHV#*pgfLnXf7dhA9%-}+>ZVwsj3~JZ66INM z9wAyIusn$Khsua08MgM#WZj=2y@P&!NxQ$5{7LQrLPs7#1ugAEo*6*`ksaiB?9v1vw2P0-m3T2{6pwt3GkN!Rp5|{ zX62iajQBbl>k2@87Jp4F?_l|B;){94Mo!wf06B>ah1*H|B=JJm(5d?QQ#6X2jC%Gp9gwOD#}4H0PI%wCeED{bBqMl8Orn;y1gI1Cm(}w4C-`bf zy$n0F8k}y9i3I)7)NATrv=BS&S%c>*4>@fF^m?brsHhj1nwuW=$w|O`XcvE=#(bD8 zThyL~bZu@plF4T(y|Jg>(P*%vt?K1&|KKzBmiens>7zzK_Pb+mNm3OKpLDLQUAe#I zhD0K(&2T*(;Ip_ne$V<=q&ZLqxG#;OP}i0})UDuT01itRff(@1hs=^PQw#~}mqr-z zIWmA9uO)EFQl^StpTbJ1Jzl`Q}_<2LNKI)9m~** zWp~K$2A1jq5z%_<>@1GCw>_wakyLy@i^rmpTP6EgkzNPDoY)y^i60UF73!+Km^xtQ z_(CeRjYRJI_JQh^j&yP?22OLs?je`LT=e&))-qF0(YRP3rxQ#T(TA}V!&bNIXTyyQ zBb9^~fw(CJLv-C^R!o-UMde?YeRCH))L9)VLan~CcpDYkyxwG}(?B;Gx_tI-D>^2A zV?>)!JJlT|GN8{OzEc8Bzk1VElU~e%hp=y~%LOwfG`v!igv#nkAOS-Yn*U>YV}UKK zNf5?W%CZsArvyw)Sb`-QXtKuXWINtjk<|9n8uRs5!^Rcf1S6&&7>$>>Pe~*LEjVd8 zQYt~sFX;=3%=0XM))qHpUt^P|c9weXpG?m-fgsUZF@sQa^K89g;8Q&XCK+}0$C6{t zynl`d6Sze!VdnJ`yLZD{szLN6%+cBJ7rfCFV4g=eUh2N{EFm0o{ug`i7+q_#vNcEI;%(6>Vu@W%#fS;w@mDpS}4Oi7#$tQ{Zaja!SxXgtE+6T`ZBAhhayY z-fwXdY5I1yKEfPA)H?;mV=4zt>IQy77#OkOVg2A)8G+6dB(NS|wc3z7fb^BlKq_S! zGxoJ^_X;{<6Id529CwHinV1)IlOP!lS@Xxv`*l=SCW!qg4YSk5FVO*lAP*=Q6tAr0 zS`m`dh|2gCgB2$;K{;`ZO(cZAqjFd-0`?xiNcWQpRCpu|FaLf`BqevGk>0udK3@%8 zvWAQcxB4w32DsZP&ZUzAS;5~KcIt6WE}d%>P(c6C^RtHUXbR{EBbVaA_I|LmI~L>V z5Ig6`=oLim*<142%m{579f6kgsAUjn0YTQUp$z8omge4b%BnC#9UAct>SQ~Coyx*t z*3&_cF)c)FU9u*U)-8o}Sob{kL)G_ZP6=96c^?WLQ^#+zY#v;S-K-zXO#ndsb<^_c z{`^z7Hlq6VTh9JKZmAh#)3%r(Wn0vDmvCgepu=nIl6Z5>gIIU5p(5`%AnM;tPWHkP zND>Iwaan%C*^=|!*ciPl;N&};x3Qfs@d2`rf+n=-Pr>4QJ`Kb*OV#eh0;Iz45tOA? z7}0*5WXc(9P8##2Q%9N4YNxC5g$`dN0WmQvly(y&$!Z4)HrrR>g{Q_A0y=5A^8o}s z2{Qez$T4}MZ$+mAVMAQJMQ95Tg1 z`@ZXzf!oLYL=I3!$dtJ`)7V4czOPD}UMO(IJ_?p<5Ci+-$a-J?Ka~AM^5R zD~dN&Gzs-)QlUqi(qx#0nor4oQ)!iPO|=Hd@0W5qFL)eKBN}FV6=-sHaxH^^Rvs03 zIfY3KM#K*<_3;(gknjt1Id6<(vH~B%&!e(wAZB}$YPjS9KU74&seK|SH49;F;0YGL zHU7)Hh7>(6%k&yq5-hI0AJGl{B~^K*j7BQMqidwPE5U#{YOk}v*G=$HiA)wfSET^R z?`4}ugTuB_doJ_(;Tr^>v0X)$h_e^T+iY&#w^2A64M*Xo@Eb`eb_a(-VMix1)cYSR zG!kSxDg7EVe$E4P2G{^t;|>x)WlqEtuk;tquS^@X0ah7BzBUB;vi3oK_4kV;xGSiB z!M~(zEQY}?r5^R%oHT+seo&;f;B4}}hBMi$0$ZXq2b?fwg0hg5C1W=Eo^`tlHlr%s zy7+3$v`mPN9gNWH$V)De`4v&M8h_QW5cLYE%Po;7uy_mc&!+PEvuN!kY;U>S!4 zrs`Ob(28m_8Vyn-td<*F=jGgAw_W2N1YFM*JZHNGW zJOUS$o0*oACwrPFsUXKpBrIbpOEcHxxMFxakppZu06gb*M9`=HDrv!*s+f1qyNK(x zc7yk%1IEWc zj6H*H>laB&xhWwsu;$N#QvXLGqIG0z7_kE>w6FBLcHVX(3m!V`8J=Qy;3(!JMrO4?A;bzV|WYLdVV3 z&ll_us{8~|4_hq3f&T&93DZ9shJ#QJzB^Cr28`z>@SejFy``5~cXv`Mm-8n*akqXWTp-B(2vK$Ev)_ahpLf z4|{Io&@0nQaJ0VhBMReQ*uv4FGB|*>cPtd-6#FNB3K`SU=*=ArBJ;UOS3^2QEbi^F z#ENS!d_W4oigOoi_#l(DS#eEyrxZR=vONu361@^F&?Z2XiIAYTNruPjmII?fRCCTVJaV@w@)*w)Mn$n_a--B5YzGR;jpA%Ys+SzkG}@H zCUC~tB2d(uLua!-2(Ug;M?jC~Fi~ehiM33nh#;c{;}w9&n{d9t_Esj_ae&`sFhOW! z$yu}PVlAI76orNJ?AsphN`6@g`b)$jvx3BUIo_0%X;{^zO{|vZl=3*|eba3bDHLbQY<=B{wHF&Eg2xuf{_lRfu06VG7FSh-$jDi{0ERRtl; zYL;pZx>PUp242~{)~@%w`!Odx1ZOGEks%NK5JP>Z%{I&op-*J(;W%L(IfPp|vj&Uz z+dbI&{@Mg17oj0#irsCa#O^BHeEhp#O+hi%Tg%4SKg19;=x6n1NReb_8Ar@E-c{gs;p(cre*o0^)gLT>-@Q0%VRPD^^vtK*A1aZuvcSPC09hZXwLeZjISM?&rT&8{^#zq*%U1gu2 zeYkvdf+&kV*0oJafK%Vu$VP-VEE@xF`7HM{ydk6DRN8^_3FyEzzvWtG3?#Vs4AZ^H zX8^DRuK6IAbIL7;jqixT2yf#fQ*<;Y^nZmDU@jRvbiU6X{`$-?{J~!Lh!CxJ3kH|P zM0%QQO)6T4@hc0mS-eTt6&+JfP!v6E!>c9B7kWU4VnDfclKGc#|0>g&H3L{um;zk8 zoz}j^4T;Nm7m6gey4TaIUp#U+?pL`QW88>%KP(|Ojzr{H19P%l&bx%RmImSh*yMWY zUuEVX9;J}C>D-SKJBy0eh3QO~m-k-B*Un|FXS!~?f!vGP1B>~x{)aqpXjKKnJ!JU; z0ZEIjgn}dNTxA33%0NVDhOaYJK3Ap?sU1C2v#bJV@-i^$ZOuvG$ri905)AWTTXxPd0Jj; z2UkOpPhg}K9GQql8q1BLuPnw(l^p$EfDZ63UenfJwK!sQWrGBn){$X~@HBEvxB^Xl z?_aRI2b3G@skgJF5ROaRlMKJl)p7M_F;xEu^$M@Xm5gwlkF&Qwt)St0=r|YtNQM&^&!Y~nNTk2C zhUh}oOD(p4RkL261z$| zbJON&UJ_RpUDle#qEEw8Q{3YJT&m8`qW;>Vvo@Vu?V_GnC81aS2|m!A8f|5#su{j$ z8{v49{n=uSjQ*>JQD?K(&pFlq6grn{*%WO|6LxT_8QleyP5Q%D_Z(c%xjY!nLWKvi zK+IcK95zIvbS%s=w$&`&dem8>IK>r-wCTDSc)%MTW7AV6-(=`WL-rakOs0!Z`9>?Bf2t!6frV+E;OW zy@imbMxp=-n?TmJbPH$j9%(o|MZmkCzCQ&}>y0ODw=glN#36X&PaNQCP!l@>wR5apBz40Dx(Zc9}`&qm1L*E35qx zuA)!h%Gssi84(?h+%v`(k>E$EIS!=#tlDq%0Pp$Wp0|8E;BqCF_C;n_3l~|80sM-8 z3}9y@2@@*sqZHH!dsWtfmk8py$9B6_V2Q`^m`rl^CgCNYW~p8q5B#cuIIA)mN1nd5 zZ;vu+tGtQ6f877h>}_R5y;E$v;fl5$ch3ym);O2N@%aRqYsoAv6Vm8S;!I@=Vvz|bSuZCf=%|!W6sDeU%?(8ZSdFg8BLxvM`f^ZTu3nT z7`?&>P1kJH!-DCb50R98T6@OD?@6JtEfu0gu?fVmhTgbU3WA-%(BM+Ulc~uLfF>cG zG#UXaERstVdHn!M!j)(RiCsTp%r7dPT;e;H!_&wBZ8h2z@pwsd`dzm<5r`pbn#>M;v37m!wL95*3!JqWS(bi(H&P#?BiE5h5|y(yod;Hznm->AqjY^&f$U#Y23!wz?CGszO7aD8T>lAqMOfnQKmC*VuB|s=p>;US#yo1ib^^J$>_a$X z*25*QYwlnYM3;(N&guFJMMOIDZZ%~9y48-SCxE%)v!AJJgvz#8JLuZGcl0kxG>0$% z&*M&LykRnzEh4l+VxZHD03DRwrMJNnS^FuRXqTUnfzXlQ>$~QQ9wyR%0tg*49UFC`x~FcjS0XFt6)O^4 z>6UEVJb~F$Jpn7@h|xB&t_wx_1Z9`g%a3d)TtQdGl&hsGTwN!0jL9F1azUH$rqci) zg)>e$r8V|D;V?JZNX+SuLee?Ld1r*mq`kCX+Uy)D3h-ZaDA<>b%yOSRzYS$N2lQ zAl;!p)GoqdZ%C?fL*Ij%*0%WMgt$6^$h~rSTdR(;GmN*#5`Yh1Bv-g6A*?O)JU?c$ z=5#s?6&r#Q!AzE>6sxx^K9_-DYT#WYiqne61MP+_Ko&e25z6jJb5 zc)43a=bGl&kakkdfF(?@VX+gSK6^D=B#FB9hJauLh?pkXEfN{BeHmNePx^M1Og?1% zN~8H31u7~_RB9G(@)LkM3bfy5;Ww-OJXM(qfRS4{Y}1#-2P-H^bQ9TktSQ`nURl#& z;?2jqs01OK+L$qtE#UFKx1h4oBGaDf`MU4UW$EaiHDI#jnI%4LotI1NVFaSS!{{Si z<7usX7$&1nxU-laMcb>z7mmj|=0$UDTNrrw}86HZopBUsBdg7;E|)(u@9 zzo{S&+Gdqj#)+kIG`cI^$(!mEz0|(f4FQvH*?X>z#{&rhAklw!>O%%jVX}#g@kOd7 zpd-(u8qFF)aNK%JveZSdN_5g3AqcRY=VCfW#i%0?h&8)NTKfj`7^YXov{PF7mEy~{ zcByGgAKM#b!aO7>_#H&MstQSg2Fm4{${%)a#2d7M7;k58Whd?s_#@Fl`BGemN8A(2 zR&MY1ntFg=Q^!{?O|;6gm!5i?AVTs35cc%Y3NHvqnY&P3d5-vgbkqY;WS`sJ%PExE zK@@H#KyU4jRC7I{;F!Dk!nD9d--Ley)au@R$X!99Z~G%gRIi{`*A0dSG|VGqX__7a zq~46y%G{)epauqJ^NI@lQKE`)hz zE)%5y!oMawWCas%KRetAvfk>XdnZtB#sV>?#)L%$9pwWD0s@skCF#Zi02urABpBHa zeacBZKLQd8&J#o~6S31E+M^0l&(r7z?!%~rwFgj4E5zrPrmAohqIN1=$0wr{nQ62& z&a$W)F>nD4#v|aTZK$ImAF<@OaB1eLf}4u&R<2-w?1+yjyiGcIdUU~ZJk`{ZRIa+| zR(SRa)PzBIqV@>L<5f*&1K@*2JzV^@U~*T?`))aBXrG%_UIP=cfN7J2tS=K6=+{2Y zCZ0sxW6{?}=oDPPi+1N+ z=RS@8dx6>?&oY3WM9f_0nL@83GI@R2c}E_AEvtZaq!Ikh@q&nMhBS^WcmQQEs^z<{ z(!zvu4g}Mz>5ma8 z>X=3qn#l|UY%C58LCyy?d$&lG#tUl`sDu|5AaPBme{C2z~Y%56Il@^PNx!eQM z*~^|Y_=ZEr;DnZil#9rhwHp%heFPqRHz5%oMU6+u{$nTw~PIJ1n@&5J};q3mHOaq`VYSCrJe8!Nop zbfGsHjD8-M^#{xcg;CSX120)O3E7kbkS72iV+bv`QuNjLUk6>M1Nsb8M=JO0Nz!W9 zK!UqTzuQC|x`|i!TwkAx#ETz}>b5SPVb?>PxZu#OXes}KS$-?-fTom%J1-jGv z3(GAC|241dzq14z;h4!&mY;!Bj3$6J%db{`Z9tU2(AnEodxwjEy$WNR4eI=H6zl&- z^fF=r{n-C||IaZ%n!Fc|)YDOS@LRQfZ{gR5(YU&9+J@QV0;qWR1l;z^7cmC(iw8BP zzpC9rDmOGDar7hccaKPaiR_RF7Oh zt!SVIs%!x4|LdOjkKKMqR?(s~B1KYlOUMhd96wA`DNd6S)l@~-zz z$_g-ghitxYSNuQ=sJFKMH7WlhGY{w8=$n!iVE78#`r4_|LknuSvALX*f0tQ+3#>S~ zZfK%Gy~hI`<;H`s6c0;1k+Ggvq+(ZVAKt;c*>H=;7Wqr$Aa%DyK5P2)5W4lH|7H&w zsCNloISLNxq%aU)elE|gQYnIulpT?opsJS=VdKdj+W{CgeNg0LFl2cA0Jao(lVDo- zdx|K@L8AFL8#)v&Jw#ML!_Wn1dTkQ>XN>mu3?IO&QG(p^U+Q33L%K2u(^AWM)%2sS9ZHoeSbP!7@z4WYMCe#S^ijNT zEEW37Iu$1-)>n3-!8Wf<>jT&Ra>-uGo=}XLtFD}*!&!ii6$WIw9FddZm~yU-PIQad z2tiS0i%#Y%WN-Q^?5))Ou()iHK5y!r<%vK{kBMD~AI8MsWcR&>*siYPKk}<~u6lr# zc_91OC5j>>ISF(i=q7_7`}>v=ip&_F8Tl%Js14Hn&5@H4M}fJ?wF$)f5DH-F>^5hSukrkcQu^O*sSZL2_-YmT2<8Z+q=*f zMHR17UAyzU=391F->s7IUpovi+a~0PuoGhXl3*VUc|==4rereb>*o+(%S@tJiaraT zGsIbzwTd*$%v<#x(rZ5AKt}Oiyuj>9jlN{0pIZ}Xj=++jcQCGyE(t#^gh2^=!ZL}~ ztE#pN{3<*ig+Y#{|Fw22Me>8zqx}|IJCyQf?b;-cciOs>L~$etcqrU3jdVb%U> zJrW49!Hn`Z#c|Z^d$BiV(ZE{b?{|l3o&y>DzwA}T;4we^%p5p+UyzGbUn^q(y_29l z1`=86P0vN1u4I_#ObQ_W762T90RXT3z4!Ay_2u*PuK#1ijPEnj zck}4_^8hn|j$C>Zv@#n+uwbh5-)9d}O#C$2o+1J^b zF0G$>db>)WA6h?>r$6`0XL>*HRX#uG>0i7#d_P~@eW@3*KR@|x^3|1_?=wcMxM?2@U^$G{>v~I1{Zu^qm+wg){dbdy>PEhKb+KzddmGE z{;f4Mc>^Nc#{>$#m}|%o^p{XbR_K2SChx0_+3V!f)8Tm8n=?*`1 zWRv7i;pM$utucQc$$P+lwv5sZ|Jelv?;C~y4?^HGU^|u*f9Y@hHlMxM(Erv%y9EG9 z2h_liw*FWxF@Cvv`4b*Z&}?kq)+*oN*@MxOON-65aJl)tqus|?0(ndMmOK2|-!`zu zARjzwe_)h(p(f=o@I=6Z@aE5ce8%{~y)wtUyZl6P#JlT^Cg#&W=R?%a`wjeOrTSkG zBD?O0n4^NCc?=U2%7&r54?eD_{R?^ z3>ASlAg*%v3*>)6Qj@I$egFwr&Hcxee;~%ZsvY|WRDaPcZ~5f*PcWZ>aH~7u$B-`n zSlhiHWNaI2;%8y^gcE-3I;YTQ?HKYz_}|%o1^;7K#h@H`w;PbR+&`7T4{9{AmZ%Bp zzamQLWR1ZZ^GG@8AqQ5!GbHIP!e!cD3i-8$g~+j_D}i~S+`l*uZBsjdf?NBi&aQ`P<*Y_)BGd;e8-{_;VBgGDCMi1(KN=eg&@+f4P4M?Ic3?Wh+MUe*yB>Oh3Ln zfJAmyB>tZ={e6&Uf|Wlo`?E{pXAvI2Up7%dY5&Eu-yf_XQlXn}#c6Jz%dV1^3V*Tu z_U(!A8OTTOAn;3zo%6II%vLw$>;KNjAGBB>VvnJ)tHwb2!bAKeL#;vF-w6GO*?mp% z^ln2gi~;xv)&Lo;1;lDM`@g}eV?dtwP$M}fWvi$DceVKw?!U3~$3pR8VC{tZzkU1E zO;0=%Wd-=Wde%(%2xdkBL1O7gO7+VNK?OY82|kUe;>A8a<~NK69?8#_iGXV?S+h> zLHu-Hx?J>6SA5G0YmCP?hWzvG%ir*nr7!#JZixTW(Y8E&B1TI91zyIja35#1B)}RC z&Y;5k3`zdR1#gA?a$qhKU`7ys`qO7XvVM14x#7|2LT0pIG}=fwf`n{*O$Je0u8nFfgd-b}8>1OiZBZfER zz}_P;9or-TyMcIX8}`v)9j-9k@SC}dRqp1o4Hl5D)QDfj4f$Nxg}^Ea%!O`Nn0im- z*(20Iw~0nDa@nt2L=%Ys%P(0qIU~4i+=}yVa)*B6F3kZJI27fbqxsj(?!~Lexswvn^!Z~%xmgz7c}*EidY2x4=-C}p%kuw(8&i4&C(3#&dSGwx-b=Q zDx?&JAhZi2Bl9$(`F;}=MqQgowHDP(zz{ryke0rg(s;XvL{KxL(rL!D6gPlQB4lKq zWHh^7A`#GuDtB2jDJKm2w?j7fGom^P1tAC#a8(r$F-njI)Wj7PQbZpRbSht!o?fCb z6ZqLt&z*{=!_pvbC-@?dt_5ASEu=aw^&pyh0Ru_WeYadAmVU!kuQ0q0kXPB@aNJ@U z34v8~*gi@Qd_@$3xst6Jyn5#9%dB%lt)>y7;pJ~o!15cfMU2w5ekXy5bH4cQd-FQi zrKLsPJgfOxin11I#~Ek_f;Qvz`vCz%%+YK(ng zKB-V-WR2IGD|Hr<9N=}k^H4~Zra(CM$`n_S(^^m+AQUm#=K&}(CyL;?!{(|gJm38N zyvP;NX0ezP8a?&yDBE4=Ky2HXzO5uajE_y%^tk6Y0dTHKdu6avpLGjzrC{Uof}1j& z`Y4>Pk&^q?Wm|ur(PU|lwA?GbQpO#8dpP6>`eJ~Cw!aGhVcukj5mpf(* zBl0}~P{aPLA@02EiMv3;7!Wpz5`XS|+nqsCk($`n6M|(}QB|}fb9Wx%Rk~RTcQAWf zuzZIAJh08VF1R?u9bmOHD607VO13Z>q+gi-y+3Cto3Se>en-r1ZlG3|428y`&8%cVuvg^tdzU= z*}Vh^N7n|vQ=@owV5BYz*L^*DF@Xjr6!%AsDf5hY5$&zzUpu+`ZsY;9*_7(>UjualaAeGtC~fB~cei z&g2dUQG4D=S9L=(e7SV;DI0zFsl~8{47;rz(^wtwG(^L)7$e zhuY|gg@jO%)G0iiu{{JV=|#!F@N(x6oN^#nCVVw&`NkfAO6o*C9eRZ?kb5r|ETsTV zaox*MOTxb}Y{s`y_IQq>$;JLKfx+gL#1A6gC3uLDiqgU`O2$F-;hChfNa9%|7Gl|$ zQM&7h71c7(vQF#gYXw`Sk!9+yi z<;7#-iRVaTBN#jFRUQJgL@y$!5yO2ZH>xay?%+oqWq>cdE1G)V&%bdhk)6>!hsuJ_ zDV+l$=dEBI?5ys%DQy719tlYI#)$Qq5Z&naAgYcT6u6U^v6~W>iRS z!`cH<#sOF&ysb=KiQyJCw(jjhM$ot;6(yO60j5U;`H|A}zf(J%>zk%t41gMBFv{Nb z1`C7!mX*9}b8b}~2oU0lykAlhI0QE$!9>GL(_*r-MMt;|MGk#>xzKwI9_#!~SOAD? zzlYU;fPJXMfHk!@CPrg@W_tYGk=jl%1iYCHaHmdIyrpiP8uiT}NRAo5+RGw>ttE^; zsZ+@IR7{?3)KXxCczvb5XVH_E()icf32X;=Z0txvDg1P!(0<0`2EV$nf|Rwid?ZEb zp(!V;qJORyDIyk(3U7N%fUaz)T>~~;LIr>7M2KFSm-{iH{Z0E2i!-#!cU?a9(~s|w z_V3)eI^NY}h>LOG_V#j`CYEQRlcB{{7=NTfZ(?k8d>)UpkeA;LV|?vgoPOh^lbX)f zAEw0Gm&;TllV8#5?CieU>FAI*!s`bMhjl7~j;=|PP9;P*2GfId%g1gp&(#higQ8_J z>vL}$S?B7LqYjAa9}*Yf)QHI_8S>$j#38mXU3uedY-IoFBEzD$wqXIf0G!V{&vG4c z#en0|5m^(iVRS!^mJc}sLFY8!HhLl7%|N*ls<+?=n@JOZJu+NwE2j+(vw4QJWhY*q zu}e!JPnDbdQCWb?>C~8Cq|KtzALDy<*OdTeEL=C|&X0;I;_}&s$j#Plm^J)k4?&qF zMW^2S*$ZPD)Ey=!3=~e;yONRN5#gJ)W@fQ(s(*$pG|pp=W>(lX<#`x-pBgH7;rFl$ zrG15goeZP$#pL}`roP&?tI@yZWInxjF=uzu%Dgp1SgrZ?9JZCA(1I8G#*Oouo;| zh_Mh!Y*85oyc7?g6dZr<#cDT`mePKmc{l#;iSVonhKWjcV@#TLKk99(M{I zPdM)NzW#n&V}3_FcuK-h*x~C=gA7QNzJ-lu=;&{H$a1|~Q;FHw86esl#nnGa!100- zQ6?`cMsqDcvm&RSi)_$_qbfNH&uxF);%~}Ma&`x&+J|mZ==P)_a$)~txpGYHD>}Pn zz%AC5a2fqw997_<3`H5}Q$ZqYuT=0}^1K?(P9%9sx-coK5(c(X4bg}KQQ-au03~@4 zfGM*W^lshY8hn*7Xa2$FqQ1`xx{%`OR^iZ{VWTYrKspznr|I-p<$xn_^l})#$-b4Y z?g0a1-{|9#8=#eMB(|SD`B0mfKv$TJL+Fgd%iZL;_BK|o-^z59sPgYAg?DWvy;O zkxFLUq?^ztW=j%`+6&wbjUiH87aQ+WhQRq<_$p^Sfp)>RMc(()!a=#&pjhUyW!c*< z9?)5um`eMSZt0OHAW_rmpMiAnmh_5Kcmym+!}wPM^v0m_?BG6VXXD2F z%M}dx09O-ro?PJxfNqzevq)WJmIr{So^wV3<~sm1+BpPkl~?F$KB?y1D_xVdK)^Bk zO(GIjsd7@t5(&oc?pHv1rNe%fR~Z}x% z+H?Vks-L|e%$N_Ob0U_mDGZ#c+~oZ(J539kqUGlyyJ?_>$rH^&-RBl-^x0v+UYfoa!hY|1|B; zLG4Xs%^lh<`^>6Z4N~E>#<-3t4He)nxShx9-2uoeB}^8W7(gukfwo^qVfCB>Dclsz zWb_SIF-Ik>V0AZTv8^2iQccm5&h4aMk)G7$Dg)&(Gk<_BJVmj(M}nT85oQq8+t^+c z68<^Y`^Q90_kNbRrp0nuIw54LwWq%vxiRg*wf@G-IQmMNUMuljMv-L@SxF4*-5@lZ z^eIEm0QN(pZK3&$&qz8j*+sZu9?E8r($EN`T ztc|1eknks7NB*|tF?R?ZHYl?PtvUS}T_$83IJAM#tf>U)?po&yv`RNF_b2)8QvK0P zhl37KPK??LZSt1>3Fby@<>Pb!>7yRU5e|hSnd@cj#*-bl5 zinCRZow0MTe)5DdX4)$H`7jv zuseN>W+10{9>SoD5MHGOHZxbE48RZX!FXKqEnvlU?AG^_iHHH|>euK4YXbOu$o1;p z9RWLCAG@^yyPV6g&n=oTqTD7jFv~05EIbEjOr5~q@BJ-p3YepYyF7EoV0At(=hOSK z{O%Hqe#s75CD5&Vy2prJin*I!x|%Wr^rDbnr6(*hjmdRullp$K!Y-M| zt#e&xk86Ro#1{6k6V1vzq*`swKMn_>)_2~8I%kS3b*^VuN;c|m~sJ4b>KBa zvRboDLqs&}hvx`;vn#AYqzf4_T#2IrBee`1YxYRdiyGE@SBr@P`1s-xH+5_5cW9F9 zinhh$AvFn72PaDDf73?Gi3qQIA=A=g;BDI@8G9m$?P@k|WiBm2Keq^*?6(wv@K*sq z*SXj&)iiD13Baa#ispD(L68T)$oImSDa!GVX+QaZr*F6 zntE;^h;DBbNd6@shv46rn~ZrVNAZRwzA51&W;V`h)txN*e({|$I&Uja;NBS6Is4$} zy&*VZXpmJ$z-=+*BVJIRtcdbsNkR^AV>!0yO!Vo>4oU6FE~(Sbo-oR)4ATA;aX!GM zPLdv_>K)vwM3jH!9L)?v8HdUP;t~I?BM3|U5g-OgH`JU!XlEac`x>(ln&hK`>t*3yN_t<{F2PX}j zbIK`wp@KnQj{6b2abbv3hWK3d%$P;mwATLmE0c5RZQ+3^O3 z5;9Rd#{kjOH@VI{*>Vsq9Bn?X%&i*x;1WFXc`o*~*qV`2La~e*C-H3pW`IlRk8_P; zObh=AFqRrX1;#636xxkFb4LUlNXnf9Uln{o2K2!h{@D_&G~;--Sqt=*dF`5bfe2GZ zYxKe#BOFx%ap}KRL8(tFJ~OUyYicojCM~n~h|rcBPRLTvQZu?HPR^94bQpf|%2nDE zcg?~7TkN-jWVgd6bmhVJTNxET{dfLk9jKlonySbghyx35l$&nVtcM-=&?`QPsMudF zOamoSCK0k%qT7x?HL>cW?79Rz*+dGxPoT>8p-!}vc|DM<`(q91p6#=QpzF2#3y=Xb z8ClUL`!+SrgU|UhXek26;Rg_?g{*hJZw8eQbf{DCddx*dK2^~1@SIbc^k}9Qw2U5N zO|Bd$53}{W!?2e+RiJG2%cRH>TOFi*W#e#$O!G0~?*yb#U)rRXW1BpO4&p5;>uhBQ z9e4W$c#UscLAg!|RU=)nd$A*H{zoHl>;vNOja zqtmvE{UA=`!Oo%`6RzzjVy3RK+(O-U5r!8>sSLqS#Cdp0Vknv3^<(WAp@-H+ zc$V5`2;4wj*-Fnp*pNA0J~5q~xBr#Wn>PqT*Q7GZf*O{Y&_{?6!17pI@yw(TA)uQ* z*+yk<33d1S>U#1^Mg_lY3>>lyFk$EvCE0sXV(*c{H2XW2Fxw6_?HNgGZ5$=ZLp`CW z0DtqoJ`y4jB-Esg+ZLCSx|46+PD;y4T_9j0CS6IfJJL7|ufP$Z+t7$0Rg3n=X$yTW zN9UO9t}6R>MBZ`pR>$f897P^rV3Z&&*-P%LD&3#kJUn_pOqIjiH z8D&570b;}@(|IHE4pKWEv2TaMLBP@s=LCWb6%H)KR#1pPK?HkIzz(qMc^~g^RL}}} zm^hJ?srT`F*ZE{hZzqeR3bwpMuSNZl!PH?44hp=o6&3jGAy!_9bCdmn46KAk8z3WBmm(Ix=1u+YD5?{Zid>qg%dD0 z!qabK;?+s~LK$|DXi8Rz(yE>fwX+K(U@nBGo=3&2kobktY$4H{0-I|nFg5^i=x6YdCzPL3h8dH3 z_e(Rdrt+nm(ckRd%`~s44ob&g;Cj{(02GRa`NQ}DAR7D?u&~*5{M~O>GgUpsxBgo7 zEqY*nnu)}yF4za^41c9Dk{rqEq7MiaY-Ju@5o27yypq(aK5bl!M*BI-eE&h}%&HQ# zPIZbq)U|=FPDe#W6EV}=g|wih8{F_QvFcDa&Z0|04+T5t$aEb0smbzym>DUXF2_4f zrpws0+Pi0L8uL7L9mW5Z^g+xisAt@3{afQOr+3VYQm1I3vcsHZj3%tYq(B9yIja~g zSlMCTGENg#VamU~v{AN*+}34~oY0~^Wn7)Yj3qwZ^o?%00&o4rX`h(YVMIMvRqUc8 z^Jma_S_P^W+$CSl+Dm>_3Z&}bP>(xr+GcLuX1zMwr|3uo`%4i2aV?=#o)!WN2cgN;iMR-pnA9dw^T$7< z6Q1|ZJ~lBQWy0sPWfKF#YE4ajrX-zNaA)(w!I^bJ3?+x}gK=B^SQB~~=@XH4?gJMn zw6jg4zHEjAKu$wX7FJ(q$QCj3vl`n=I$jLz>7gGC#lYI`szB5ssey=Q-8quB1g9q;Q_j4q9QgB?@+S24DDklV$r|*A;+Z-Z z@Q9IlGI@R8^Y5Q^_IQW)^6^WODW)zcqU3T$?660F(%6pR{6qa)q;bq&l-8y8jH`%r z{7J5=6zM%&HO|{{XoG;XS%aRjLcvAPxVIbNjac5LaTET1X@j1@!r2!;8JC63D3Jat z13zPg$Qy@Jh`@|Ham1b!-J?wNvxQ72Y;ANaqE?K~Q-;4N)8m2~_fB|}{rdRYL0Qk< zK2If$&@=8S^8090Nz!dqH}fJXn~9o-oRn|FUPGs65{BAfGZ3zb-dvqKBd{IPWnNzd00Dah+1Wq@jj@DJ6 zqJXMx&TmIH43u7Ls3I}^2n@Hd=XVeG$;u|i zDb~3KWlL0t$t|G*>`hI#h-1LW|JogQqYGLpcWcyi@5Dc!GX2Sx z^%g-ahYqf5-sO3hWnvh=AF(d5RUs7^6#9YYjAGER~xo#PX7+6Ob-)!&J(r8sV*mT>ZF(3Dp!C1{lu?N zi8WQjT9oV8{?d(?`o-g$EH^FhKf8#7Sz?*$hgvh!qn)h3Z@*HLIj+GccT{!vwXauf zm45k$zPZxM%MzUZaM|Uj%-lX&;U#aEFWYPP;KfYKyCNnMi=W1(8E=?iFnh6F$_nPn zy?i^Qle}gu@Rk=1xjRSC^-ak|9oyg{c}{N>9(B7p5I-~7Nh*CN7%Gv&Mm8G{U4uBJpcb=-=W># zw{2|`{k|{AURf#1c6Ov?W7L10J12wl7U{KdTzJB^WdBpX`j6szdu#uPTnpr1^fowm zvBioX{RZjZ3jHQrJkZY_Q@qQEyLq?3S$pecOnsSoSI$?RlCIj^B{zA(o_RIzldlW> zZ>-Zh9W=49{)uP7e7JAhFbB~95*cqYf6(<)vz4`y-o8!imk0!0nSC*c$ zeqvwKyUp|4h8L?3Z}Oe~=Sl_N@{8BzOuT$oP4d~AnYnwONrxY)nHQh%clpEnT&;C_ z^}pG+nT1+Z=*6T>zI|j`z|ko?b}rGov`gZD|0(tCy&;zllq_1XD_Gjvcd43d8S59` zS1W2gwm79O<$305s+{^(>23GK$XaD<$A5iikI&t6X3@E(!YzxVSr0s(sw-HKC2ASa9*^I!I3qY`EcmL)_hV5P78yP<~F;;wNWZpe-bCaae_HK|!Gt0%h z9~xOeLPl0lA-26cp+f%5P$90#K~SM&JE#y({s*W~*+r-jU-UYtQ1=O_kdQ|sRA@;X dR7liR6DqX(FjPp~UkNI7c^*_q(y Date: Thu, 17 May 2018 09:25:58 -0400 Subject: [PATCH 151/226] remove video --- Angular-Material DateTimePicker.webm | Bin 1911223 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Angular-Material DateTimePicker.webm diff --git a/Angular-Material DateTimePicker.webm b/Angular-Material DateTimePicker.webm deleted file mode 100644 index 53c499eed487fd9d4aa73502e0e218a14c29db86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1911223 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

G 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

7g(iC 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%0DuKeS&L2Hfg?-T*Eg(Y+5 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%0D6G;<5vs-q367N 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

XNmq7-*)HoaNs2F`${?2>x*N|5HqfE9M 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 z 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

;3WkGr=&xm+qOk#J3MyAkz_`N? zQUFm-16kpy5S&li1V1_e__G5nva27~w8k26CZJSKrSOC)`=+XDFK>3W->+LGz5;g@ zZcITbZtbs$+wu3FH?T_H_C74`P-eXRz2}EB@n8jl-Qlr8_U>|Q=qNJ0X**e=9UrntHldN zvU?kxGF@QV&*G2Z26|WdK)6A!I<04h%ch)=F2FB!d7VU%kQ!;^3g3G!d_`6D0rj@5dE$FOa%dU>2HZ&5c9a%h zV?CA^b5;#7uCreVx%v1YnKSe>5Unbs-U7Nca{7$R)q8LiiYHUmC?B3$AR0+AL&g4q zUx-rX1bng)RwFLwFcI?vXdeP3ow-6C6xYcq57s{6aY%B(;7z2iZjuYY0+^jH$j{=d zgBfo3|HLiBy}YX7vjUz=MH=2wgiS|pyakp!zmI@?>QD{QO5gDcxKvIOF?7YV&xT8= zX#Pyu*OmnzZImbZl-*W|5`MR$5S4Yo=8trz!CI&mQdVxSV;rym34n!yOC}7j(x~d0 zkphtImAA{DqmWwiW~2{QoZV{JD5Rl}yVh1KEWLhPfP?S^>W~FQqpwYxn|)h{fUGAA zh~jfC!b&}@<1gsNpi`X{$ zsS)Dr{%bCW_Q;lYVGvq2gd)kBzvpMnwResTfBJHpV13|V_g%*u6dnFV3Gu4_j(S($GC@YTNXeuEUzbYTb{B?-p9jRdtd|ER%5LJ9UM!*7rbHT{GFmi7WFMHqtJ zQmX1@e#ak9Heqqnb}$FcQ*fKAiTNm%@x5A|At|HifH@ooF?vfDlMZK}nYtDw4p6%p zV)6w)?2v1BC4~7LtK+}_;Cd~UJ32>C2J=L&SE=Om6q%?VJCiwdI&+MrqvMo4dw_+z zio(WTzKAHrEMinc#JSX|R_LE|(wu}qmdJq3X(RdI0dQhoK%rsl=-Lx8yT6u7~tCzosB*7IHhAAa#eO8DF3vrrq=M z2OkOu=!?k9zeW4b11T!9YeCRYDF%lm0>F~vU=+q>BJ#+kw;9 z!{36sOtG(SmaY*X59!R@*wqke5l%wwCY0Xqt9hpjkJYZn(Rb8<3o4TJHHTe9_tDzzZ1^=$wd$gL>6M+qFamP7aZ2H+xVsO0S4Xpzq3-ax&}^1 z`6<<)2QF3s2hM*as=q@O=Iy~w$o58}000519>AzGRy4zFT$AXHUnI#tWA8wF5IUBC zm|)xeDV&FdUfA!w@`rJNhP}|5*DxuPiDa0AAfbTZUX>#s#PRj;DZ7xo7-8r*u$og< zV>quA-9o4R3n3PkQDoxXXjRIj5{B!jb+Cke)|hwbeyUplHM{|Eu)Y@{Ae9V(1fQ2Q z&4taGURztiXZAJk3?AH(Tt+k6SM;RomY>l)U8xb00dDtpf?c^PL`cfzy03I3f#?x~ zQ+{2Up1v2bgn`>IG!L4?k#EejQq829J;4LcqDu#*C(BVMIz=)1g8pQ|r0{r!07Hp#=kG0jLyTt;?~`NH8HIGqlS< zF#0|CidoMcM1h`xV_PHwG1y7fH}36N5_h|7^+Kx0J#9|l9oF95?pSVDJyW&++MM9?T#R3ep?njV zG^P`FF65BP&8AJndWF*k>iGe}b-%^gWAPp6SSCl(KvZ zp|5{J7nT8mxoZCC0v%(FyV|BGEG-09FaRR8_KnE@YaM(1hzwQoy?_M6^(Y&sifPE8?mCn8LUQQ8p@!~( zi(8@ti^&7>Pg#7vWMuzc(;ZhFDorr^vOqNof~4>cJs0}?#^TW9oG$P7CoYGHJg;CM zHt)5`)iaANCRFb{?RJCv5ks()|LhDIU@te$EM!3?DPBW@H=0IRLS?A_VTOg+oKo~v zH3y7i)}CHdO*Sd{CQCte@*<|`%lYHk>Zi0yYwg1x2sS}FanqSy*-s;$w$IaJ7W(H| z9MJV64-Mdw0)AlAaza=&d$C?HKZKvziN_So7LBP4D?NRi2s<1C=!dr#UDwFd7`_V#|3D$ccs=<(%lGzFoQgqeSK4MPF@`(#acNv#AG1^ zCPCTl6TI)*c6w7Q)gs#4$xbc(<#*S1SB0dq>A1eZ@n z1JDew5$5M{cH&8F9%JD7SN^xw5GdFZ;6sp8XjAm)&lM$fN>4A}!3emq2GK7em|x#J zo|TlLr|VqU2#X_$>m#@{#bXm6(DjR-MtxcP#viCAUVI=n~>}RE`DmmR?@~ zkG#r(yPa!y2tQD#iQDzR4TyXx+*RWM8}N(R8X_7TWIzQQL7O;$M8c8nfWl-T5+i6- zm$}B+sjBa(3Cy-ddF`{b>Zf2TFkBR}P6F5*pav+!(n5I{UrdJV&66@Qr8f&`2{CyD zap?E zZK7@Et9NUFA?2#R8Y;7!l@kpWSimO3Z3C}*%rN&@xvg1^iujQf{LEeKi8q~QwQ?ba`du#OQE2H*{jA7rBPl9s zEsdk|xCWZ_Rzvt6Rc}vadi#xtslsqT$3A<^8*QmML(77il<)YQH9uVbCuXYoi{N?R zB(sB<3oF~~*%bHbCPYJOV06f0yPC%%cx86pfu{~jS&s2Begg0YMjmi!ncmBh1p!-e z;H5EM8g$VX|5L1BfQZxWZfzmwpur@_wR}&jmf7f9&xw=HkS1HF>e2P|`yr(H6Jd zH&n34Pk(dNG>97uK;|&NT~So^e)VFby!<+KMFEi$yEQtP6iW~t4Y@R)Vq7EAxtkrd z_{k+*^gQ^?vk_$)`LCSB#`-1Mm`Dyf_3UL4nJ7ifav=Ox!iPH&FLA6EI%*#kP2IF{ z6H;8H>r9MO8rSU7A*Ffw{|_ED5e#?kf~lQ#dE*x#I+ejW2vI%2EFzmc65*!8sq^lX z%x*i3(ux>s(NTJn%-WvBLN}=D+Zi0AdIuZ+ioj^HE-r(}@AIQ{NzoB91Y+rK!sFm( zwud;Gc_5AHm}ryrs~PbDaTQI=Pt0qKr_+KURA?=M?D*h_Z~mrf6n*vr!6Zm{#;k1( zg|?t(c$hKiKakQxXL9kkAh}Ylk!9Hp(AtNdZXFN=0(<7aU&;p7He~MJW}_ z#83oCF^CWpq14M#{dCC%Da%!Lcx(06@6EVwCFFhZ_iRUTIr;NiSdJt|pL4LmF69vo=qJBx zNG}t7MryaP;Es}uOx@*Lt^?zC>K!Zd(~Y~SU)fpnuwkOfgd!zr#L16+JgB_RAPC9h zOEl8Ec!=9a%6O*_LhRRD56eMyPH8p?)#wQnU0 z5}oJsp6g9;O&7mgNM3L#HN;Q)%|rxw7?yR_#%{gemUs#D(=zIHJTb_)6E=U@yF#=r z-gyD>Y5z?s^$%?DOp)OMz_TUEFxov9tILSWJs2?!i*fIMYUYilJ6t$gN|yhxh$9Rr z8|iyPU+KM!{nr203{kT|+cj)|qEF(k@@NK&Jd()DOhJk46!eyj*Kn8 zTjV0;6S{1`yT!L08&@2E+y!ImZxGp|6{BTmI_W-Vu)@ZI#yex59jYYrV#Wki%!lFp z=vyZ==F9yZt=aflRUIhif#gai8F$Nga)H`h;^nORAut+s=Il`!3C&o1Hn>-StAw zT|mNCOE|b1v5xaB4@ivst8}7Azf@iM5*QB!xM+7CGu-jP><8DD%qD72gNyIC_~tYpg|}3MhsVzmy3gnvu5Y$2+e?NjRyBr9(UB<4{_)y6sG7 zU+h~?13B6AFz&>DWb1pFWIpF4#}wnOC<&Ml0+`Kh&m^k4GA7zG=C=Y$0xQB6&baQj za+`iWOLZZQ0_BwH%u-&pbNoQM#0PI|S17ldlNPBnp8~1!b6Z!1<6`Epv?1vw<}q@S zz)!1+wR1OZ*vb1uSsr{b)UUJ<*a>AF%>ZWC2af=emiV-h?Dv0j4>|YtS5Q$V|j+677Za}T0{muvlDC0WPyU?J+N;Nx7VA#WVM z?CR4VCW_zhZ^+B@m;3TILT7}y%GM^ips25gK!z2!fOBMyjjlhAD>EM}m9G%l+Pc{i zpogjWq6(abY+b%bb<3HXJFQ(k>qql)WXMG&R|1!x>O}5GVgyzf&ukX$*^8X#uewih z(QUG$OaIjY@gWIj9+WftjMaS}NA>+gl4+>(I~5yftEfl6hDyqAr$qDTIY;7O_8tVO=mH)hhO-vCeii_xfgyys`v|DO(JyD@ zIE2Z}6ZQVRV8RBra`DjT*S`XmL^&YAV-SkcrC|9rh~&5Jh(j0xpASEecCLsrOG z8gQprs3GlO!fQK_D;RSY0AGJcWWogzOX?8$6d|UO?V#3e0k(N;g#NuTxxGIW4dL`` z{D0p%_w3Ys5%`Q`R6q{b-JuVh!P^uz!Bc17X*2WHmD{wuhTheCvsS`;Lb(4i!dlc$5^ zu&%-uV91PzT02tUhrg0mpd0*F%nszNm7#h^J!dGM%@RcJNg-ez_qJkfcx)?i$WFJ4 zgPSgg2ZL>O0|DMO>zm(whCttpm>C@Tneru@q&#>{#o@ve@v zY25I%NwVqS%Vqb1BQOV3S%s+pG<(&jk9j);(Ha$YW>7&w@#g(g>0$wwvP;c>(1sCB zNr+C(99EM~3Z*m_1b6(fhn2zBjdGeCoxy|V-3EIB2MNUiCacoJGguK&QD~*TIP3O+ zEpJ$FdST2kJ2Qh951C{1y|oDf$qF>)&Rw2JsCP9r7x_3TS?@ez+hOmmnSd36$S{=n1~GPH$bCYgiVxgT7W@Pck%eqBG`o~U zG8A)6j&xeA;D|f{P?G|7G^@&MDFS^7VX!{k_xG_PNS)pKLpV%UjNk|=>+??C>h{&t z(E_#kKLz6()#MRLjZB}HzQ|l$Vf4>GhmSEM5Q4;2J5tT_gwZh8K5N)v;A-B!01{r{9@mT za?a$Tk%{I=qD$}JpM>l7+kfQsMu9kA84!qH27sWmB%!^mZ5~Q|LKxrxyb|aT=T?+f zO=v;~h~<@MdIGMyCnBn_WH7Md0Y2O|tH4^r(dn>otpW1Z44eejB_$6H$55)ve<-da zf7dS=R|L{x0B%8jz-&39doOhK4GTA}Mcze>*Kco$C{slSX_T^x6?mqy!p?SMc5|Hr z|AW-ZXSJ!+NY-*csopB5$$3ro4uxH3{5p)mj4JN=TwyYNXQ4v*Q)KtHLgvj z%2>HX&nReRtv&bO{ZZ;l-VHq{fQEuZ2<&Qp;3q>L9I*lqL`JRx-NiUZ4Q}bNg{u88 z*VZH7wo%xTjJwqD7E3;V%-C;P#yZ!3g$1p=Mx2%s5UsAbs|-UP}mQuETz2p z=u%9j_p(Ai1e@7C0A{wT!GwwluHEuE{XfNGO4B!b%P(ySAh}SjbXx#4JmKgn2EF2Q zuysCX3zSi3b9qb`_&t|_+7V4pEQkJE2~z{zFBOgO^5;*=pMywkPu;A+o-k4ollLo! z9H;b8#nM}NF~q61gnN;EJyS)u`3&?TuzrjWvF_hl?zEHZGCczQ{UW+4b|CvdN~-1N zbsoKPTa%0~bO(dpzf{_Al?#-Kc+dZ-ZsU!_aB!KpTj&(e(r!B6^y{2k<6-f)NKI_g z3d>IncS)aX_oF2id_7`x8(Yd-4*&W(XM$OPEKpg?Wfq4a>I?_Dogm8TjQaC+G``{3 zYkuq@Rxvb+njL~#WvL|0q~Pu;s)PYztU4a;zfVkyX$GF1hNKeHo1YkR^3z_|l#HB1 z81*jO5O_vFF080UO&=W1cQcYBgc(2ucXg!X0xMD26#+6wQFzrcalN+FMdcNX0~5t} zk{uY-iT`io%le3?C&~A9#@#4WJds1ASig0{IgW;@ z^~M~~S-hJneWNX4IxJ6MksV6QSKr$(I|9 zk9+Jgo*3+)&4r;3px_tud=0d3_gu2KZu*4CQf}oHU)%S{s|_CzS4rpO-|!k8=Y6a3 z@P>H6`<8SF;zV(bLyB%QoM_WkP^@*3qH^0ahE|G6v`1S1QtIMhHZltI)l&HGPjgo| zVjl-C657;>j$co|25@G4F!N(kZEtvN;Ih-tQ%-7_q`p z6RHRtY&Oq_d;5XfokuKgO{P6w2b7{nuXjG-D)`2&`$)DHrEH^Dw&99A;H^s_RwJWMV?f*|69l)=iR_0WCe~UY`Ndh- zR9Wzkp|T4|%-jZ$5k{>naJp%d7z4_{=No_&sm)4O8^{cJQ&KULlp5Nx#^8Pt{=au$ zO{`| z2GrI=^9y@vwdbFTQtL{vA2{JZb-}ii3)CWse2q;p^K%b50aA&gadn))5x9_?Lq`4L!_fUz4Hnhsumr=~3Cx&ntn;cpk33#5&i z!iYBdf@k2KRHE-gQ;idcq;4YH-;A%oP1;%(*`Z}lf)e7 zA^=p3Syy|;1>8}%qKmC&Bi0rLv{qf8a8e9*K*A}S)PS<48D2B7D3;V3%^g$P!$S-| z)a&FWbUPX1-j#c^NCYC&+vq?bGH?$?)tK@W42jm71FF@#jAV47y2_&R^y`f@(LIH1 z9P3|pH2sF=$DPuWffjJo7s%SCqT(JRdJd?LkWEB5Z1da*xrl*Lez3m7c8ko(B=QR1 z+6{8Fa;PJ;YPnSjH5*!hEu$F_kY8aZo&|z3>iUHtea_f!6?sr3!_DwuK;NjKVjIfF zDmCP%D{M{9c%M|9B`;Yt9zInMvO+`>PCbH*z)S~BR4=9mF4V7lg@A7}7ht@?Mm_cuy85J8$H7ZA& z5hYgVW}$Q}f=BP?fHT*(VI^b+jjsa>4>wvO#_(0?KR>%OmJs2l93U^x%s5@AvVFN$ zF3i+2RdUz^VU~u9Sdk2|Xh_+F4eipQ#z^>29^Wu{ON^Gh_k<%7RstJ(1T4%86dB8! zmCT01*npo(5XtM9g1zepv|aT6>hC(usVO#CIF-}{ivETu;3nMoo&~`iWg=7Dnkcsj=H!u*4QQ6aoUQ`Qwv8VU{ zoQ>=MVidNCp+M_s&aBv*!BJ8L*2pQe5AFBCHg@)4PK2<8PBK!ItK``s!X$>kjoM!{ zi}I}2PC{8X3vKg!p`3en@&`(%-&JlyHG&K`vxu=1vvy@ZuCJ`1obZ}ztX6ls{qD|$ z{?CD7^-~_*3x0 z&~t^jG~*JCVW?;DjPeYi6|ta_dqWD7Q~A}4ylal`g3jEaLsQc>X*1&9w^iK}f*mQ( zKK&A@DWE8sqY+{;IjIn7Mprm~IJruF4W-A4gv6%b(BEGssPjF@QRstYiIFmJ3E4_eI3HTB0 zg9$Ypt@EL@I)sqvsfe3D7#4QV971^sI}3tC>=i!a2*h{e%Lt&m2*RhIz>?blD|U+| z$`PHVu($CWRt}a0DYe4F)zu4R7obNRS)(K`a2>JbX%jAE%joC%!B$ml2C6KxWvSp- z3C+iUN1LI-lZb6C-f5g4;ih(8WfcuYPC8Z%Fxg+JF?I`h`I#%ytMyJ6Zm5?SDb}I= zEblS-qGREfhej75UDAK!xcsjE`SjF%TFtXSewObko&@xl7BSp$XH53WVBCS4P>Ye_ z4}D&EvHgTV*)}z)$C0>ORGUc6$$SDy*s67??BIu?FRBjeqf`PiK8fA}gzU1inU1>sAnx2x8)Vi8jz>WwMS>~s5t%?W?JSdSSNrkTdAyAS>RnrI zsSNZ4p|q4mMF+s`*j0X$;72d$$IrGDsSa&FZj#nwE+67I+&e=nhDR9s%0{GlF~}*k z*1OQD95nY~8#pJjmHYP83S@l}oX!If50)eGPH|4<%cNu*cdObyx@Ty}R_KrbtpFJq z03_l7c|ZdOKm#@*79e|&42%FMVgNqy0Kt$242j4)y~|~=X2M9cPC?!7TP=e&5=EkN z4)1c=Y#FeV{Nb7gYr%#AG{QBH1C2mjsWm?M#HwAC>i>5!wKNj8ko_nSg4O(1_T>Sm zJ`8sF5DW$k(`FPMEquyl-41+jk;6M&Fw|SS{8`WkO9tklsYxi9FHEJwlt(#g)iNWR z(sT66BjY$9ps8FuI^{>6$uK6HrZ8yx+nbYv+&F#6x?%}0OWcn4#&TQ-Fwd#AHnb;l z>*Nh^9LXuIPzWj&LYWzgFkSW@JPA7W>qiUgzry)&*HFwPZ(5O!HXwQiDyM*>e0SX& z#u2%_++Mz(v7A+1tuq^;#peP)aDj#OL6ilILBYOlJj2R1O67CkeagmPr)Am1Y0j0k zoxFVDKqJmFB76SryoG$O_@CcyQ+o>Fkp~w$8Z9w&P&Gpx_bTuyzauRM`r|)?`O&Zh z;^KPIRMc(DL@@6!Y*F3AXxwO4 z8gjSAVkow@fHa3%^{M5r;zv6_vno$L%8`nO!{Mk#vPhYPN$?SvQ4@gUsfgIJUT$;2F~h)#iXN8To1N;?>a zycGwZV%1-Et@07UWOubmfK4sgBUR|%BdgGcb%er!cvs+HU2^JtXXgF5qMbH$Q1iIV zN@GECbe=&Ij9v`3UZnTYaWib+B7zg-_nR= zR1`9PAJF~%=;jzjfLE=galu5rvByZ1LwABnU_+gX)cI?*d9{ifAWr!;zo!;XR8-h2 zYH^EBl^SK5t3^bik26vz~Oetp@YKgetY=dle#A_8F zzc2f#0BHt*WB?_SMMLGXEU}tM;5@L#1!v{6xWY(cE@@sG;OCXST2Z|lKs#x~sLA-g zvxvwDzD6p}4$Qo7He6}uP9bi>Ag)mkp#@uLmjj_dbSi%GZ#RZc{~d}3lAIC$Rd>4| zaqVA*t3gtrvzA&6?dDQUg7lt9Dit~d7Cl-15m=hgHY>x(p=&TGTj*ll4Z3LZ8@Y}# zOHCyKaDyz$QJtt%c+#rHM6s}665lu`;5!Sr^+<)u)#pLGZLBQBuO^aUy`zz}X*UD@ zW|{SbC1~JY3n~Aj0emo4+C-KBZ?R&jP?-5xBDZ2|XHDXSg#LL&NC^9df_Bff$P z79?*P@pZ9*vTeOQWea*izZZOAH%)PSCuc?!cltdXK;e`m3=?IX1O1Jv`L5dV2=#J0GfUP17vmFk@!7q$s^XZ=%tvCd&veLAjZv6>X8*Zk3JdmCNk{UA`xlu z_Z``J0Go$fQwb)~b~2QU^q7x?%~_W?#1_9GnSs-Q8lMeF(|(y4vVnY z)bztz0elY%;&Kfm@XME4hf$6O%tpX&jkeM^DA)>CsldSm6==WfKwbtAhE*lkRghTJ z-!*5HjD8BAPZw$^hGlJ`)m{`71D(pfXI-?w_xI74&FJQ7v5lSBqeI#$=M+?pc=ZjD zdLX+=x5nbXYT65Lp#=ufAXxq+mHMKy&a^7rVxuX+cCtrN#mN65r#;Am^<_)GR308e zz&xR(CQO6={wS?Z+5;N>Nmd%FhdQq|dq~kg!1V;cB+L`V1L2sPqsKVjCRc3Hlo!3T zKR~8m!4RO1=|>g7DvTB>@1Rj_{J?L2A=>X1Nu^V51YD?n$Yz7I!l6l~W#Kbmpb1q3 z_+M0I;rtiw4m3F==b#f&VBOSTj4_}d*(fUxGw7|d>c)m)%}PU4gtk-M&86DrJHRn< zE~Pxa0?FACERxIFhj{!|iTg`C)dU+fzNTzr2Gxqr)gtE#1Ym^F^V8HZ<1o`OwdoJ1 z^~xNtP@lM3&KVB#k8$WcF&H|-^sPBwwsvjOx>molBPw?okBz3ROzC%AYRSsr3LCS= zi~O@0nti50{#MNrc<`2GKe*p5^2& zNj}z@VIB12)wZ_dgZ{1G9t5b@q{t8(tryq}HsRYJeD zJ@#oBz#uth5j+A+V(MFTH${Ku6Sk0Jn`0+h#<-3ci1V;yWyB1#c@Ju|2Afy}h=XUb zOUd>a7a-~2C=Sw?t}eJqnT!TYjfyp5kPZC|2BqKRiuGWvl5(-pjM zwg6^8nZM-qSLW>tVbs-_2fLm|@^J0Ebg!Zio)i@X`^*fke)glie(w;|e%V?**z()P zc)Ef@iE%L?NC7)~g9xZNRPM7lCa9g9XJ8m_XAxopkyYd|niG(wd&TinU9~Kz(=@$+ zDuQ4^;@&0A8Xo3#6hcVN?Yn&rzykhh9H|R4upWOMiI5YwdPx@T^1h&3c|b4Lpwmm% zhQ~$snKq-AFFJpe*U!*QDF1%{Xd%3Vb}n4)gXTZO5|&8jY%p-WbmG7DneD)=FqG8( zP7$;)OT`%mCi;whZGK59P1nL-i&lD^EpT%jTv!tPZZ)Pu%(0dCmWw1%yn{-!umGz~ zRJf{h;&@3Fl0Ab_>=c$yF@OsMu}O!&Q$qQ`ept%$FE%}5872;{@6L2+677`^a(X&X zM;*69Rr1HgaU%qJCTVR)iq^$$1FL6Ds+DCt_YLggEI>(A8I2nU!+u~n0aO!nR5c?h zJ>+FFpcnIY7iSgQW)Tl0M`v4fMu$0cy&cE0a`FB z963NnB4iRx%I({Hh1;JRuavh&i`%CwY{fgqM3qdOM&xd{4$i{JAr}@P5jr6>Z0>Q- zHpXEaGsRm;B3W$s$x6v%EQ%%npqjvi0n6$U3zLEx&t2AV@9p3<3}ra=d@WmT!~Rgq zBAUVQh6VbOU>1VsL?*N49E~YWDlRRQr-+4U3NYJ4O{}C!wc3uk7+q#7l|u z#71MMn)ZrjGvlexpS9bSJDSP9pDHOAc?PabgVU*d(Cf6Fm_~Z z1Z>n8;ib_#ClKD9fDowOe3ZVh5=yOlIyGGTp|6|JX*8 zrlSLeyHH!9c8UIdKi1FUT&BQ_aE`?>YXIcGAW9`a3JpJs{dj%2yPa{^z>EgDo)%iU zj-*DuUaT{8nZ#kFo6s~2`b$Qvofsp3x!`9z6ewgwO0&hfzQ;W)`M1C+hAftzb;nAPs-cGK*3D;+Qg!Qj2^a#FZ#!3*6_-jFb3-}LT zky>tc5z-xnilmGBlU{T&SUva~3HusorSx)|G|NhVPH!;fy!0=tL+wrw z7_lSQmNg)8!~Cj^g)e3FR_(ygsZ%FpYMD5V$N(Kbtgin2*Tt7w>nQVfBl(^<>6JK~ ztk#f7B5Lvq2Qw5pQuwNP)m}9D{lE{XDD`F3413e)87gXwb$#$t*vzv((h&dr8S=(A z7TB3=BW(EcjAv@{(WlDep2dGq%}bt{ci)I0vRP-^6W2kc011jx4%#XD2YPR^|Qdp~N zesiBT>0KIX16ex~s?f4Fu5{bd9^o8VAFKg`G##I9t1_r8x>@mNCHw$8^)5a#@vI5d zv0yC_IxiDWzs7ESnl5(Vs9oCJyzwLat zme=yValicm@fWeX2Qx#9AQRkfKnFj}yOyGQ`x)iSd<>=(iWf z?=m446eSQ9xzp->Otc1k%b5ikd{;Yp!n>r{;g0mGLBTC&7~%KF8%lo^m_2(JA#y0rHqP>43~>kKfF?lW}#mOt52xnWyn2oJNd<= z?1KIXwDrQssH(uGiFpjjPXH_|+y@Qp>t^-y{{pb_PyncD+A;~JXdnuaF;ewyg+kQj zxwRG!X z*#L>ouVI%sHKQjtEd~s?q)K5zHk|86KLkTRKl+|zmLV<1jVM;gV57;00qHO6Qj~WCDBiY`yepYg)||C)d4cX_`7n33xfaWtRqGwa+D@fTvE#qhP$4guncJQ z)irCRZ)t@=a|Fx&<^k3SWk-s4r1thO7GQ$3Jj<58e16?7zD?`LQE^Ohue{YrrWr?} z1N`53G-{r66ixd9yTc-6nMf7U#)h`lvPhGoZ$)*J37n$@Jx9ZUX_!f}DMHX5+oQX9 z2AzNev-P!TyY1B&1@;hP`p*0)Q8~^|S9v_}ZKdHhmKQejf$lrB|06OE6Ww}vjK`2` za;zz`b+z^+jZXzk1vQ_^_Ujf`=k$@!pMp1^<^NYkUhs3HYY!0Lr8eeY38h(MaoQ#s z#Mu3VK@Ys$R_fT`&*f#F6?gbHfF9)EgIVfzitF?F<4ltZP#-9VmdR+bdk&vh_owLA zD6j=$XFZMX+UjJ227VnlRMc?22AJTT-7}mFJ?63|1O@Hyd0?N)p3GT%Q4G=p$nG#t zO~l&QJPvVavlAU4#ct6&H1o=D$(I4UzaBT<^7C_3wS|z{qs8dKL14i z6wN8FXgKV~fChJGF?}SF8I7169~U$6ul>dc@kJNsjYSDJX_&~Jc55Die?iXfTazy| zpwkSCu;TDLFC&Qoc`eRx6!le{;80<&_)uGT-{CIi#R_IZlH#%_1YU;I%%m0WWUtAx zn~r93Olw$hp%EBnzn;f&c7PPawDBG&VyXEqm532Wt`QjnH;fN6fOeI%4BoS>KNuf^ zT*+dH!97i!5qkF1hsE=n!3*GZh&#vKO>nX4ur=Wl33VG+*%=?S$F}np(L%QJHT!?6 z`iL%x0+0EAQs3IK)JLJ=NOCae{&j%35opwldk-ZJYqDpZPcV-Tesw(1Yo&%e7qWj+ zis1k%`r}gpco%h>T2D^G--9f)`2+n0@3(6{5!w^ArJ~20WCenv7z5+>Br@j|Ul_W4 z7}SC(qR!jIDOzU*fnxB>GXFJYx!RQqu3qaxpoQoAro3qo$CYSP#>deHIq)`&WxS3& zXbe)N!OSK9ZOQ&|{<>TwttOfXDR*)E|HO~~vo@b6y9Qjj)pry=tX5_BbeOI#4W=xGe>K zq~8|@cvA0U^&t!YEUgIkW`LThjBN}as#9FfMQL#Z@nTiyF+d;K%w{sT(%0brg z5+P3KX0o>S{DBTO>&NXPS(4N^(a59@S@K)~l<+&XqAr0gLQzirS%C5JDc)o3bMaLG zQ1_0>ANF65jmw$od4K!1H#(WmP8%|5cUDMKDktAZl}5PDU>S~SSe054@rcc>GL*Kk zEWso>kUhaJ5W;HXfR^7h9{6jnCzL7i0qvOMo1=SCKO$Gq4n!-`&{?99$em#z@J>2N zwY8*dFjU- zY>4DZ8({kDK&E>YQh?ruAm<$LSxJWl#CDwtmy(i_WD&9lflz0oFxbi>2}t0BYwSgi zI=II9fDXIXMMrW2j}B_B$_*FT!D=Hr&I9_&E6yjhxs2>??1w2{K0-u5onWS6_K>Q$VS?yfxsn549*5(Jp@6f zE{WiBeIV!IcWCN^|7l?1&aklw%b%O{5W{iql(DI^7*v6|D6P<`+I87RO?NUr>fy?( zM%0hIx)D7_d380|Qj!sAP?PM<0Y|F^ljA`?zLQkq-6&G^LAWu{D!)Wrp01)|3XKd4 z8)(Hwl=ZT=T-C|-|ELN9sjgIqDiGJUu5c(XK1uO=Ks8h0HkX3vZI^v^lVCr2EN8|f z+xOyO0w^6MX{&Ijti;~_I(^mr_D%!0p)<2OJ~{(6(aU3?kvi+krN6uV#sWg?<7+rz zBh-}zp0<`pl*l>_CDx3GTu%B_2(L@NG3uiDCWAJr-;_kf!5w^BoKZWqoA21EESFyi zNDeik37S*UvLC}kPqN3IsH{M^I^DA#%^D!MJlt?KN|xZ4PifZ)JI-gby0Rlz7PDNI@#tVxv~7;2kq}Z5f1jaHAO6&$iUL zegQc$FR?l}Tf;H;q7g>b$^%^%$FWJI3mmrKkj%4Prz)7N2+eNdgG6!06=2;e$3@;2 zs33Js{Qr%IlIA2o@#JQz*M1jU<)qpugu75;`AyqT5K_Lh;ochJ>^)_Z)z})PvN6cf zr3M+!BtEnXs&}nha64*&BV&qT9P>k_PoD|q4*xG;wybdXwGQ-Zyb)H5zz1C6=l z2oGO!nwq$zAy^$v=Rq#^-tU@s)9y$=ky6>yf&e;}bP7Q^;02 zL?3vTe`X=bG(SGHWbP9%QIWLIW7K_OA~VHL?rA|u-tlPp1UN($6V-AO*` zo#Wdr`8pE5-I(mVI+v?QuhefAD~)?pfwJw+ceeXk(1HVPF=-wx^|^^AKB{{ih;b*D z04L-rkVfc$3%jLgWVYR2>E>J3k%18wyDu*%>!U*<1)z(f3-ZF8V?!{-kJj_USI!QU z1yvA#?KcBtBW{|W*T{Gw@-5<^1BGyJ-~z?ufP;s7SJDV0@^dB0hXDp70jZb>o3lRn zH)9dm1#oG3oB=sNnJ6AC>zH6$v9H`@JKiRt9ZOJLq9Uy+ORPvBJn* z#FsSF5TJNSjojpy@&9!jsPwRME6nwRBePGzuK>!j14)6`z5255s;QuQUSBXpT z6VHb4ZHOnnLve@GqS0P7(b6vLBuMqtJHq*B#^kG0liZ{Uyt|{0n-;JN1K`7R^t{lG z_=O?N$XAWOy2>fRFhxKD{LhjgV>=5dw0N7;0_1(x?7z9%lYSHaE)gSGoDAD4KIpnw z+)2vfSi=Ukq*$)OkeGSN<=2VYkaw>H>N3T(Z8~Kt3Qk7lo*=^H7&otz$@ypx55+m- zE|2VjpnytAp7KfOI1^9PK34ntMGK5c+^IC*3?WC`Dsgh(3)^{9`ms-ob%~nXE;)ld z8wj{`=;NlGg!iqFy()Lk*Y&sYCDeq{oBEP#5C%|Vp0dZLR9&24h@SN}Rx~d^KT91% zu|k!>1eDEiO8Kg@xdvs*d-MyS8Yef+z&L;B;DQi!m%Q&Y6attiasDxPMiM|}sY7=~WX-cJbx0l1DkIO5)^*i$S~+{k*tR*V4h zt;1y5YtyF%wV+26y8=^9y$cnu7Gc45h7pGv(;CFA!((;Q9V{gKjSy%2ZqxBzIZty= z0t1m}%N+a|3pmhRO|7>gL=2IioT*LbcVRz4UluroN}wV} zyD??V3QVhkrF5ZLuh&sBO}*o*m0okUXVDR=01?w<41v86h74Vzy;>~TmuNgDZJ_Zk z>qyXT){h~G5cAo2l5ZIjVU zBqjjr5Ro{G$9ji!YU}!wps@Nmlz%mfT>3y1HfVyYud^FzSn*N=9jmp%!Cupoi)-To z`HR$kC(67nKw3M@663{*OyFRT$99%}^M^s+8LQQWw1!W3RqA0i1g07*qA}2Myd|py zDe`vu5j~PUTA?vvBB;+dogzkeLA!b~&~oL}mhrDdiR6Yo>jjf_kNo;yl0q$vTo%3E`y({HY7(#Q1=;6#NHG2OuiCB ze=TeE?`MX^8v@5Lc08K1u%9;(mNd^sDLJr4>hZ_Z&y^76N-3JQOtLE59!?@;wRt+o z6qIlW{|J*AqwW(C&-Kl?dYw7lrhB8)-eD$Ue|YPcu@R6Y`E!f9)npLIOsv61_oZO!MR7U19`<}olx3+ z<@8Y?IUIORu~L74l4xL>Agjapgy83}1C0A=&sFbYrP?e=r+)-&{w3RxE9Z_4l(bt( zr<&*6dROrW9PSq*QIaUKA*Hee8bn@=$ZQo*yw?sIHV;1dQH>;`_ccIFe}+KTJTBP~ znqdF`R~UQM$bY0sCnZ(rD(-MV8NV-p7n|i?DKS2cV22mUo=6#f2SOIzkvw?VNcV~;x{a)+O%}!d@4}1q6+Z60kd4Hm!p;r3$ZQMI|To@G>+dr z;M7uk)3ZHN#cRjN%x~tiuQu^-c9J@=ZRDy+p}gO|}(rRu8Xsu8+p>uU(jZspHn z?Ry4dD+C*sifqG8AA^%uAr|S3w!12<4NZ%7EVtB^H0JIQf@v=n=evESQ;8lkF39!R z7kzxOvC{ilVhMKQKua`~9AY@_*Wh-_@))BDg*i}K7v#R;%jMljX%XC3KE^1iODNqu zLN>xhsR3c)2QF-FD#O$#2!%ZyAI7ak04|<3OaVwlR3W9)S`?97GmI-WwwtQpWq-p{ zr(gs=wYcva9DqbA!o}iQ^gsfX;AA}CUV!Dvt)_8n%W)AseSi zzOOi;z3k8#UkWTgN{aLFf85`6>C?d9!GD~?t}k4|h=57|yB7o>Y#SA>^^0z601aRP zaIgTvpaS?H3*dk+f($AEFM$()}Eyzk2j!umPZzQZI)-#>ki7^dAuVB7>Z zfX#lR*$zDhBlwWnb4xf6hr+k;t&H>~WDo*Lhvy0Es^jr*BVxRkMP))S45~83PxYAO z!mpi933(+$q0A23C;I8EQ;GQQ4VPF0Pm)G&UAl)}@W2_QRkI1n66v<*g`vBd>)L#> z9eys^SHya=+A@=>NcV!TM7x_zlX||?6FD&;S)0;D4;+Fzct}NjJy2wB`6pSI+Bd3e z`Yri{;+{F9+{>>4IW~&OcK&L1tDDfx_}bb$AXkx~0$}YeF1uJ|JALH+Nl$&0?LQhk zpAbRi3Ao++?0m)#xBx}=I?D&jL$*cLyz}=GQ&VNKVVrr}BmR>x@{xP2-y}jP8?ped zzW<-w_8|kaNiT`f4Qo{+;1}E;*D)H4An`_MO|h`7rk}T59#i;+NXR!1TC`U%@~K|s zNrJ6S_lN3>fJkkPqiH-%jPniK(iUshHPtJwF@XrSswga>8OH|&329+=qx00aKTtHL z(3UzYONkhF5CTM_S#k2Ykpf^H2!cjFMRurzm*G3YKZ5#!ig}coZucXhShu)zhnn6~ z0SH16geXwHYx0WCrlT|*xj?o&JX;le#;1JREdc~bCRSbU(I}kRl?S0a*uWXT0LcaaE0AcX+|&-+X~}B zhATJ&NqE&}%*gNzP4@nw-blv}HeXgFkc&JUVo-zor@dJb= z$QNILBFYXV@5gKG!Sk_zMl>m_!^V|L>@hQuxV8X-rIq}1If*}IDQ)6nK|}p3adv(? z9KtTVw zEw76a*tgC*B?q*z!5stfgr0~vuarPxpo)LM1|aZ~-==w;NVhOfwW;;5BdVz1dkitG zGs`OW2-qBQvvtYI4QPnuoE!`JCUCx$!0K;!ozpQg-6qEH_z9IP@3o;+csSl&%BGqM zCxS_}5nSK(qVEcx+$ph}HREx^W6oeKUv3uCaNh8>LmjSNL@ONLg}?Y^8wW{$8+Vf` zD$&e@AEV+Fm+3rk%4YDS)6i2Ct{Ld?U<_VoW${dy?|kpdk~#Zv51~dgK}Mh+hL+IQ zjd?0Y9_UrRuEP}$^Y`P9=Y1B67m2Rp>u^k-CutJEs+8o|bWPKe$yl$}rcI<-M}gE1 zF%HLKo}0ka#o>^Y&8#ql;QgR!im0I5itkfP6M+h@$ zn4c{REO@`O(r`HKt2(zS^iur9GSQu> z1wj4K0FxZ>XT$kLJqLeJA#YDs|AcYi|EqpW*^4kp5DPUFXptGTPWJ;hBz*(%*Ws1o zq4GTI$6xbsrau?(F4`?&4#G8vja&u0ci#$z9kvNUMD?X9&=a1{;>%^q3Dhaz)ZR%? zSMx^YpTg?{s<}F8XQ_^z70iQddyfK3N!}IBBrAI_BOF4v=mfArPCdDJxo) zPkZ2sP9ujll;I`GWBHgY)6O~baT-;p<7{y~&@Cq>fh#%x;VC?dcKq~-5G~3-R?1iHF@Zqm|0u?RF zqSs}#R;0KRFP*)n)yiC3*ob!g;*8+aBH45ftsyX~&ZB5F%yLmRILTKcJtH+VCe0JUkVrY9c_Bz#uWh)mh=O8|Pl(T;s5PBEk)f-aNq_?@~KonUxs zfM{+2R0)xWQ+3vUV`wFUDMQS&&0zxG>+Vo99tLG?!I(o%(8xsx4OY9yQjBTdhhkL3 z5Z+h8@wE_erW9C^iT+-nsBwxsEtXsVTlyIW;?a36#NNGEo>&zIYQF2y$2z7^83+%y zr$?mBPF#tiT@{@jTRF~$u0*(gwX3t>%O}ra`C>Q0u8RJyLat2LD3Y%_e?S+EH~Asy0T(-j4+dXC{*E_g z7X)r^aO#T8YLzRE$kK0qSH9}p4WD`BDz?efMbzwolpVAP({wgDC5leqYPPz`A!o%h z#qJUxS8zLP5_wtJ;c!&;uMR1hH{gI?m z74Mqo{1}z;sVi(4ihOK|OMK_jn0jE%^*`&~0*pB}aP6tzl`aBi- zF8C&PPnJAnWy~Fs3m@pFhh_7P3`pbt9O8+SA4QY1Fq?f@#bI+~ol^COcRoyatnLd{ zl)tvNt%)gbT+TH#$>)C|JdGDis)aY^5!{(_Xm+J2nIXScqaM&}zS?pzB` zcqwLgZ8&+aE2;0Vf#2JHG4bK0oBy1+62q#SWD{|Q8}iZ>E0W;uo!$(X_mMkBN6jw@ z&E=zEv?R|+m?US+08xf{lhi&-W$7p6#$#M9LF*7e`0EirB%~Fl3c5(0jCLZu4kU>8 zPwB;Q)RKaJNd}*#^S6g7XsI6T;#U8E5~Erka~5i{3NId@O9*3 z5~Vz?uh4c<5-mLmXTVeX2h$All_R)kuYJ41k`y+a0&H);`n0zcHk*H#k^`6zbz%r{uS&Koa$?4^Z-8SG7f zi1{D1S1O^Kri7Uf_{e;Yz+g_!6{yNxy!Lo_Y2^FbB3VSK3xu$caM5O(;q+S*M@|)F zQ!vQqw-9_T8O;F6-}0c?0D>EKh)D&wtB6}3CXAslplrT}Z?n2La8XugjV3AVRil7-dl z-=Y&awPCx^fyyRt#j`k+z15d)l#tk&v5r4sl>SHR z0oaTj7y3p<V&E>gqfiD=l<;1-*_*~N5S|gk z8Sf#=gi}7>4*=Vm0DCtDHE{ zOlb-byL-(FU<-*^d2WXKM#9eI-OR8j8NdZQEhW@OsH00)GZze?SX3Y9smeDWaPip3 z=i~bP0GFH>$e=6!F;pd346?ZzZkR~wd-l`h)yRM$a)}}&fE0-?P>fy}1Dmtk04sKj z5bN;jokzu-DRQ@|(s~j{u3zmHD6O;)O4l% z$B-F<7w?W(OB&DvM`_xTfB=eb54Sm<`yHm38Sg{1Bh!Rnk_Cm+a?BEnM-F+Zw|_*d zcPgq1nGbpwb9l4LID_+gW+CEoHQlKAKFMUz2J#Pz=lo~3?~=GLccL^X!oiF2_SAR} z_IA!3qlP-S;H&S_#~U(EC57lUc5%3`zcYc0GT`^V*Uje8$wT7j34QPD7N{BTF(7Mk z%UtBS6*KdXr>yvz^x9KXe*142$lJ{sTQsvqJHE_J^UWmF$ndxC5#+;;jug$E!u9d&PL%LE~E5DYwuGL!f&}NucGrokS zK;%u39BCbBvGJ|m<1cjA8#TmZrPN3T9w1)7$tB4$Uzc+n*_#0lT9D=3iCW+A|G0N% zBAC+b96pDAZ!CrNQ~9~8+Gu5_>+Or(dw|CnI$cD7QQ}#TO;kP7CEkb_ z*+NsVq8^>0b*8$bdDW&6F(B8HPOG*`&RXFKzR&wzJ$QWH!>`TFUeiM@H(zgGuD!*} zeY1qZZBsP%I#ZefDq-?Bz3^}*dKXT=7FP&lLD$ah8yBFIG&u7VA|Gbr9+QJBQu?E# zaZ_)e`eq9tqMHGqq%vBkG2#yxUuTL9&L9NeMO~tT= z(+;pm$xWh1Jv0~$_~VG4g@S>+e24k&M5Y7bQG(wzOBvPzu3_I?a@TadiFvzRi($i@ z0;KNAJzZIj{s()g;7y?4_=9;ki0zKquW}otwccerADPZ@BPQ@F`R_u+6=mD-_E?u` zc#>jNm4`i8BGv+B0M+ioe&%-D#mT%52VtW@XKC>^QL0-;d*XBqw^*xj_HH5RI5M>_ zsya6nHu>+SV6n^GpxojBP4seCMGyWw8D5XP0!>prBHB8UFif6C%=F3dj#^5(%mk_2 z6V_l0bVThblBZw~z{2vD{8gb1wlgJu24Hw^z!R7Y=1t2v6O7IMPJ7;Nlnf@6Ol!3l za~DZJbkRZUv$DW&=c(`Z%ZupvQl@SlFQ{In8YwehJ)C9sgl=jQ839)^#8eWq!Ofiu z$!pCNTMt zbJXMaeN%;;kcP^Qa$gB{;G7rs4b7MIiy}P&F#S}&d$gH7$7l~na)-?P=-J8r^WENAf^-`obG!ysmHg^>rpG6)= zh;0cLYo06#TVMhuX&sp)do{q)%ZkxwRsDXHZiWj{qZSv_Wu{mR$(u_e@nCV_qk(p? zut=f}O4diPikEM#k`X#;pUAW+6~-9AWR3}od#us!z^h!KtcBQCxo{5%xTK0t4#7Y7 ze+$&l<;E##Y|Ecpk%)y3{b%BT5(?#%GYpr1KlvYl#t%&82op=n3vIe13CO7#Z}6P2 z{~Vc~dY(Oycz)JrcWGYsh zw8#LZ;Zqf9-}EW-ngX4q8}nsrD6T019u3l)UU_eH8Yfqy)v?ZXSG+|X^3r`Yzp=(+ zO&UNdz8sCCUBEs^V-^5Gbl+xop1qX-zrCaw|5%u zEZr09$I|YmYF#oAA#udq8RQ8DIyvIOFYgzs5ha^UV-oq$%_39bHmR$_DN2Dg{lZ&{ z0iRQI1u>g|9TYM5N-2M%?y@gbS2n4TWh=3#8!UXngz;U<;04Ne#&Hookg#BdV|lfpHs43GbR1_;as(<#3S_afu;~RA8*P4o^mYB|f-6Nob&@W%>~M4ykG+ zY0Ry_!g#84Ch^4=2O;T(_10aRgSS9dKAPN~^A9yE8~^^FHkVC-uZQQe>_q8rpG>I`)em+*yD2iOCCRm&L$5 zpGNY7Kvra7uTk4Y&n_4HcufGbmbv}(0uiI=6H>Sb&VCk5iUXP$>;i$Ck?`GQlsuj5n}6HsLL9{LprAc0lz+YZ4PXrrL9{;&x>-zR zxp;Y0&WvhpKakhC^|B+`f7!W`_y(Oe(rUMp@i-sNF|^yHnClSk)VViAGlBr$z3mG# zJMFg2>S88|sf9GVKZ+SFnz&f?S~BENFe!W+soEA0%75?G@<`kkCw#9`|=(RKvOKYVvEbe!Dc|I<=@n2FWKGX@Xz|eHeX;IhX z)?9!U0T-_=`1!{R4h3&!cn$DaxKil)y3}A3@4BcvbC)Hp~EaYgPkGi~jCM zw+y&3!|Qyse(%K+8bX-PXzmGf8J?9DgsQM%8_OP6Ztv?`WkmGn?w_ALzO8Q za>;`_nBTccw6s1QX?v;ufuGh&5KDNDP0OFNa@`ghH1N&(88B=4Bk9va6VaFl!&?qf zY-uMYQ7v{D3?ndk=ZcmQ)~o*tAIA?+gBeRmxlJ6nzQ9wNnhpB{&%5G$Mq`7B^_V=B zm%Z;xA>EAJfIzgB9TH!U_-XGi*;eUgUmw<+%{nO0I&i;J8mdmY=s~C^&w!+FjY#z; zl79a)BLznZ6m6kxh`Q&cLN?%_M z*~PgS#xkFwHX@a`QVQKVM`Qr9Bpxl&^ROldfhnovWGkkO0%MvBC<(MG?~rDTnp$)w z-a!CikN#Z`LIJsj(}e$^Bc5c`lH`KjiWHy#)w0??hr=6eH(81=09f)<&*ve-nvkYE z=sF~O)NY6xP_J5%i}P@cDUXFF0st*SYBbYcfO>5p3j}!rIRM2^i>$kmP}p5cgR2SH zm<587`KqMS#5~BboU$ZK$ZH~zLDAM~AGLAmar2kb{|6ROyC=#`!4;7VSsT zUQ~)r2=|PTt{pzKMz9X@o&Xb{-L6Ccbj(JMJJ`qLviLL&I%TtFPy;!OV~rl&F9Puo zol7hk!2P0=CvwQe)%?E!5|!N!b`Mk$gRiS>+$h>kxAy}O08sc$pNcg;m=8C7Lu;|m z|=%A3cIQfduBv81v1wLGgLXy;=mGNj%Dvll4z^w!*nB`DdJo% z7?IaXo$T#W!Fq5j*?joW-_p1R$^2uGD9Gc}=6784%yxKxPo`7VF{SdH6Rv*AJ+3_` zQ-bN1(+~_^BI_;)2sJ00Xfb_es*O?RHu2$u++jD9hC`(`r%8#U$~ekZQjeHkgA#D> z=2uFnzMNQD{z^kQ=dLa+Eps*4HrKCg=tULMHbTt?-T2met{Im|ucuspbiZ067_ngd z{tQjv@HASO`o52QjfnR4cmvJ}_$W>ERAHAv?)|gs-E{!eIw~+|T-_BOd9mvYnVLuDp+1!Oj+T|Vp298QMLV&#JiP^BsD_ij^${>$E zc4(WiVR&aEbOuWkn`B1Gef2Y}^sR=P|2H&sW#O`u;{@4f2duB_U#C*1`z%xL(WH8A z_-s7Zrw_(7mTb=y0s9*=f$gzcI06qA1ey*@9lXttY&z`ir`rmQJRYGJ%PZ=kDf`R^ zlUwSlUS}2lHgqi+Q;nh7Q1#$pg@9{4GWKy8wGxo z5}+S`WvBO3N}4a(9-*`q`k`=;gLTh3FZ`qPk|jxs5tz#}CU}jC6k~l^Y?S^t=$o4y z(Dy>j>$j_H4%#99i8<*LsGjIAE4GXK;oj>lJKID3`lV-MdfMEePvSaR3w~}Dc{r*e zhD38%Nua^1dOR23xTwx2fDl0eAwV>GZn)3jOXuW1r5j1MHx)PS)4BUs?&n$qgg&aSo7%W}oIF$mj z`&O~LWpEULw5TN%*k0~56T*FR_lf(HMm7983}~Cd2iWdY+h+4Ft4(nJ?E(T8b=u=M z7F^)qGE4xY#m|M?4`3*9?5kJ^T;Q8!=OZ{Wo`ujj%3cO-$_JK9dC1D-NUR&xw3L0A z?z402&N@DOmm|IS$*8q4fIXRO&`WTHs7-*IE4q9l8RftYc+3GAu8NTK*)Y`2xbfy= z)9@)O7`H4%;QklVu%~1y_Ki1~`aKir7zRi4IF@oi3Jo9@9t~Zmru$8P$DoE>jF09~ zL&&8hW(8S-nd+YJ(iCiq`zk2GzXxL<&P$UmBd%G=$ZztT^FR*Y(E%rWT&lD6$y1?} zd7y!~&2m|RCUKpJpb>NT2ig3G2n#I0T%rdYR5aPX{< zN%Q~u++cR6aNmnsg6@D4Uq(Hnl;s<;727xu@U08BNYlIouc{h()#_NRzc zUBOMne_B`0kR2!^mbDwCVs5!d+GGDVha0!hXWg>8O{P`jTNKB1*67sG2FrxPWJ%Pu zemzA`Vq8OR3ngJ|kS-7)j?r{v7xXftK9It}P0|zwz-lahvtsZ)_1=RuYaesJB>5?g zqY99eMwVz`cLQ=SN72YBEt$l|FY{W#+nbnf`rh`^5TU7f9n~^kR0K7_Z^l>z#%U3; z9zgoPW!5EjBOHN$*or&+Th-u}2hod`UXqCQmf)jXB!TNo6YIB#XF9Tb6AO#&k~T8O zlaV)wPIEpqw^4~#+;+-arw-+6+EH$IKmsPG$0i1Rv$iJkEkkiHyIpmk*g4%jc!-6K zTQb@_-6Ob{gAZLdSrN%uRl#5B7eW36uTz0Y_dF?9NTT#^je6AhR;xrXBFl0;MyF~X z^ZySj#^QyIt%p%``9&}pvzo&9T9G`1rW za+3X4UBI`bH#(|;3xfB4VE8^oB$w13Br(FSIY z`lu>CO{>vM2yin6A_Y(oT(YYV`g?1Tk*~(*W!ngT2P>-uy|aNjkjUyUZyfnJ$TK=t zQRt4+(U!FK-OE6Klf5I*uL@hjG@rEMiWHHk4-XlQ>^X%J;|YD$A7`EQ49I7CO0|#C z&b$1xoNrTnOT*{}cyXx_EweXC9&V2mjX-RT9vjiST*~1ZN!E&s^fhx5Qy+Q;;eW{z zG#|}qFs5K(6%of^{}g*oGdt~zc$Eq7;scNUJdi%Y!gpQebftII zQr6^!Mk5xv+sDUKTwQWVxcp!H-C3isK_+v7$uxeMU=e*%()hXvsf(avl*_EKhm0Ko zUJ?)kGF4-VOR-uHta5IBuKnF_P%jmc;Y3#57cpab`OHj2Iv&M+BF54Ucyj5>={S zTv1wDrG3Kmc@c+DmXycQr6(N=w0ajfcX_B#5hw&po0zrq!Cuu2{E=28Q8f~wvv2t4 z@zybrcKv}*Dbe71<>)eUJv=3~ad9~peDX%xRInjmQ+071`WYd>6vNhK+dUOA4FuRVFlMPy|G3ytn z+)Wnx;w8S+(BxNWyg5j8??PEx<*_|%b3C1bKHPNqAfLQ`k{;2P7)J8Q5FXU1o0s#+ zM@&(cgzX(hN%rkUr+-V0n6M*qvd@QVX0G|08qB**f6quFxll00Tfvvx+_c2THt6nM zhc&;O<=0f1gQ%ishKD|?lN@D#8V&CdS-r-_O64^Fs=*B!qc;IlD zRgL-?s)}{i2BA!?^)ZAnOt2Z5BFS1Q!My0wWK;d@ zVo%a8_=5kf!AEKPA8Th%*<8&$P^RYTe7KLy)|mp9HWy1XYmAYPgunsJYR*eB@ISuf z0{&RGKTQZ}UdTnpqbpgv@SL-cuS=)EAmmsD- z{Hq|4W>jIi4{Vcd9+Y{d7iw(Wi<~e67zx?tVq9p(R&=YWN|hU1zep7Ax-$g490xxX zOA?{r-uAbap{%?uO}fM1~ao-1>bVoqo_O_*BD1ube3$% z=i0_!lH!t?@wHPVOPx_aiL~=f4p3prt$5pv#pE-%9p{1VL|fi~ZUqV$1yWtcwnoD; zgt>`e+1OvEqCw{N_@&Bl<;s~vEvVc70~XA`bf!$3FUJ|*S1qgjT@pD93921r5N6k< zv;aEWI1ihAX1v~~_7*Rej{VV7nQ0Xn26i&p0tzguMc8Q>~| zA2-uKn--&d8KUt-@CyF#tokc~eek^q00^|g*GK#NrrkEQ)1V1U1DKAVKong>Ex}4- zRC`SI2y@#Vb=ZpRK^g2DytJfZ5!*;vsWiSnDFjr=!uE$~+U7cwOwksD{nnOw3eq-o z)MO?WFuzwqeQ{MH%A`L@77c6cXP=aEe#XhE{9eZ;Gu>fX%Wjkja=bCsr5jRL3-dIX zJ}!x}J^?EaiK|%Nx!>yl&wm}zUSbQMK)=T|j)q_NI>o+tgEwTr;o0$+fk|EM!8J%`jP+9L{6D0X+{{^SKlw9-_@)nx&Z}yPp2;X)`3n1%!LM8Z59KA zv<9j4u~V@(09in$zZA-P-$}ZPbykmLI_1d#m2eSHE+uDVlyX@4rD82Z1&NfykB6?D z^!{Gfn2J%0LYR#`ET%QkS=M%i-VbiRC;)LLtfQ=V1HwK&rZaZkGy<6e1(E0#$&7Js z@ACoY<9J;O{MP)sL4{<_f@yVzN_OJJ>p7n;lzjz5jcp{q9BzZEL~Y9Um6J-(0qFfJ zJK=@r|F$G<-Ibg8hscxe3`r~V9zeIB-|~xYG>hXX2=CCBk39xlD1(1H3dn<9k@r1f zY}XzHJ^cKLC4s&701H$x@T9szR$&$&;QCQYjY*D1lvV#jm~UO@ZaiR9y;804CZx$1 zkDGWtjoP*cek>GOdb?@R$Co3SLQmOaF8GKT#FLGHMP1Y9l6`*`0qj%{3d_5nkL~vm z2Aj!xOuWLN@71;wRg7XQO^M*VCK5zeC_Rafcp>UEDuogOsbPa41L$~rsVcQw6S!zP zFkv>i!`Ng!pIw=}5s+Tfj^CJztPb;iRM|5?+*(r*XOgFio~fd7(AVvGahfWmU9fa9 zz+)0lHUaEC>OA4$R3EU+3}%puENgj6(uf(Df4vmp)N6zSS*gcV;y7D?sL(ERIa8h- zYt(|bqtC9T<|zQsoI)2Ew`vt#&)_^~VEsVkMb~^An$jvAcp+d~^@n?J>wL z`&!#Kr&9&m7}6-@qbi-uSp2~B$QNlU(}`bgKq-u*`((qe=5`7fsj+sN74z`vTALsQ=}69~!SpwO*iyo6my3$8 z9G$fHrA7ydvFH*u*O&^ma%%)1=oz4V%k2^6e3_QMWDoNkb3Ty0`x%$vpq5=MQN*DQQWzuf6`If3Yl6Zr<-{y2G+ zenrt|CP;@swTKX@t33T)Q&8u=1XgrBb*pMOYpii(lCq;DOl>grxo-|EP*Pcedg%F9 zC-v{kg{^WBy`bz>K7u~9LC4+U1tfArknlw~M#iBJrl3MeEq4C%lq@u}i1Z3YuZyRW z8=8gWWUI#A5czMVQ8X?)iP>xrQGtT0+@pubxk+i6IeV+~*OoU1F(BI;xN~mvS_;+v z!qD#Ff{UqG<4gl%9rOGUCw4ftF*}laSVVc3mh&_ModETc6PRbvtCX_iiLJLAGY6ed zeTCpCZqozJ0MyoEtpx2J(q=cyeFe}4Dr~ihei*w!sfkd>)KmajtT!g zoWJxh96fd@HnlmB-$$3^d)ruM-L7nxPz%!5f^oAxRn<&+z142jyc@)4+^=WGP8Zti z4jP`oI$Nae82Iz385bXN2p;&G$)n#(=sTZ2YBoe&lyc@$xd%4MBhB0LLtNz_!CPt; zp331uMLYjAN?P~J?6*aTepHKXWQ&D;Ylg z3uRd3rlpDq_R?m*svmMRw&qez<(+AI zI=UyO(jKrH33KbZEtC}wr2lKz4{?pLh3=2}Sb=m6NH5vNr}@eJ zE<$u%aeCH*QH)<|k3;R<4|v1=LdiPS%Aaf9Fk(|kKQ;OqwsqKGpeA>z_6!1eF*@d- z#X17;M0B&aPXWU{!Ebx;dXK81``?*^OjV}c971z~>V#5kV*2uU+!u{x#E?wS4sYtz!W<8xt?VB&~#OE7mq{sX$4d8ZP zOOnKC5s$5R3~5{|-=t0+5ZyJBUmBMrN0p%$HP#6~FIkB5nbaASLQ3T-mhS`Mhx0P2 zK-z^7xj;>>d9bw>&R|!AqgUApomL(s?@vQRN2U_0DJs}C?D$DHc4aD-jcYbNPqkz{}3RY_li3~}*kY&$K ziP`qwl~e+Ah}FYp;t?yV8gu%DI2wVLG)n79GgKYaUxcWEM3D=KxQLXbZ#dH{o8+my zAW8Ccu*IguGP>7IjN38mVK#rphwIrlzBDzc@5XWfZ#nn7HIRfiL8!CK9$ zEzTTFGcpKn7px58Ydr66COkG^%gB&>Y%ZqR>$NF&9L$T^BK`AHU_xdrWdk8&W*SU% z=RgF-kAQ$sTbhc-=C}GURh=qI-S!u| zGGmRbb#<9J{l?xi8E;I>l6IU4GGXih#Kllrg46HJ)omFf39zBcL&|Iz!v}}t#PS!2!&&`C&w#2YTqDCD1Q0mmEVultWh>}`Zu7&g%5ECdr;LGSr!m#4k z%CrVL{m|w(hMjFZ&bMLFsqc`X79L23cW4kIk5&tK#6tTgJTB6OYXEzgsqNC_0T!WP zIf8|PuCLGDCL-X!aceP6T`ckrK|htChGKtmv|2K(9BS|~pP_v5MLsoLxNqCNGtq`! zW+*~3Z?rqsr;o>Tt z(yE`F=az=$42(*$SCH5&$9UY1Pbx@OZ*Qasqn{|K4XS|G%WG5c3)p6o@5rFP$JX35 z0;`oS1`Nw%FZCv$R%W1$nsL9VMAu%2t$eXWv z%yDA-G3Ra1ce^k}2aiP9rimk>h3srGh_Lu0W4;a2PT#Ha8CLiRuA4P5HWm&cBAb0wNK_)7M6O{8dcqf97 zpSX<>G_@mVNFX1Kb{;tLbk6ym>Lf$P4vjP#%?UvNp1DsWYkRYARc8d1FL>HFT;aZZj|Myg)!cJYz%w(fl_i;c-#AWnDW#Pm|=8cm1&=wj}Fnf^_c?eCj_=@|zt2 z4kMJkX!8~TMRw%ZFlV%Ml*z$4c7O_9NzQ-C`T!B<7unz~>r$ur{2Z zwblibu1X0gKn!Bz4M=(Mk#ullyetfz`8daVqVLUl8r&Ow)t&S+tVA_h?K2#v69NX_ zW!0E5c_wt}8XeNN>e?V0?vE}=dJ_y`*=rLvET3E>*i?p2DLk^ZsRVDJjz$=I3ytcA^b1D>@+&oHm04rb_50>a>?Dc`>W zgQ1m7LBri7EF?0<#&Aox0QPLgfF=!}&vmkC^_y295xPpbBDn8Eju6)IA{3 zxo@s&cxMGI7>#63Bj7-m|0V{aktKB~>mYVuotY`-;s@e4wdKBLm^qdS+Abn!h#Biq zRE9bLINwo5M2XC^acTVFicAHs#UW`<1xm+R$#S{6r~wowUPg0xwWSb!#VpmEeZ&IQ zyf7a-2DkvDF`6!S*;rH>I6fg~*apShg1 z%b)t>6ItzlEOOn+FG(Z@_*k$Z12j{_7%$gyg~Xmlv|bv9thScx_}r{Oqf+( zS9#Q(W5ew^FGf8d-z$dE!W0*E9mz}VnQz?7{7My2ikWd@wnmznPBRHT5IuyRd1G!34u??br)~N>e}GWn2vD zasur#tnHoG@#aXbFMX(m3_!?*e`cyaJ*$#FY8;Ul!HUYo;ebbRQ>LS_n&!+~fP-Ys z<#isC+tw^DHQ?G(d)2}Ue+e+uf#*fD);q?cqPC~2bcTP5bKC1EDzsnn0y{Z5DY7fG z3%}Q>XRI)OMgYt%sPD3cr0Pp5w66rH(G4yZ(M5{0UyKNAsB=4zhwBQ z`X3Y6ReUBsQT>CJdE)j(!p!R%uN?NU*gn>4uGZd^y+fn+7`7)U$Yqv6`rX=yN)LO3 z>|$C|{JKYu9P!!#hGj_DwHrg&kt14RLpi5T&t4XP-T%XXV={uUCv2PZB}!h1-j#OJ z)AxE9t}zeub#ZoIm>Y0XYP{rF)tM=RBrndw)L#p)H|MpS|qi%i)rl6RRH+W zk0EK?;LB2*A)kH{TMsqO2*pmS60YEa@<%HGkd78J$6|eko!+wheK0aqIT<}CMt^m- zqoeYN>(KSM=b@wHUV_eSRez!3w3r;7w=+Q;Akt12yTtozJSnaSJE6asd$#WOZ`|HH zuFBHsmEXr>ch0bUei+Tp#?bHSEst`oD`)2~#Ql3Ad$PmYbjFcscCAeJcnHM`#+mIU zi>_85j!LUYNF0S-?3gi(b|p1dccZIKScx3uRGv6YZnP_5+=8) zVjP0P>)2;5B-RQqcbxEhZ|qbCWSBM2n9HZK(}nUDz4HcniV=`))S86=(FhZBIoR5y zfA-9(Oej|PZn{oz~~=@eeb`nldq zn^WO9zo#0{;5`oeoM_YHF{l(;>o-a(2`&Wa?(f3ivx^80WZ8miwSE3{0F5JP7-$n= zDw_iBSW`)1a|MbJ#vsW=MZB)Eafgjvg%9AT>nlM`{Ia7tdz{7{R@{vE43!J-8e46m zrnx|Ji1TvFN-?j0hF734Un?TRfhXVAZH zy*M?$emXfQv*>{{lDky`ExZlK3?!?|FTZk37~CR2%BkH z{s7sTY3;J(fl^RPddJ2(Vm#~QimyM|izr-sn$8p_fGoc8f6z@>Z+U<^1mERBmHaPu zv{osAdQZ!u$~4_0?qV(1qkqfgu_Vj=Y;`j}E|MUQGz=I%mo}{DH%RPZnfX3aX~(9V zN_wEeq`26`bDs~+RKtNo|7Ip|f}s8`Q-!;r8?yQ&k=?Gk#;v&{ZO~b3 zrgXd+^Pc5xQ!zGw9tVpZ5EPJJm3mFasRk`num10hvZU0Spfu1H8hH4EL9_(Y1rxA0 zN36UI79#WRS`THX`RdYo%>?PU)Q5(9JU`XU6uf{0u8FR-8r)6;AriNlymtKxhQk!X z8AXYv+i5PK{$XJMn4gixSv~>pASFV>+TaoCVnb}b)(P_&8dJ@Vg~tJ=q6YS~Xp*{Y z$Mz>#zvLg`#>#1C8S~&#CF2&!ZWjD1>OopUFrrXI(&ZV|ok9BWucb-_YNC$uv9PUY+rM^%AdrftFibO(sNVI-gs!cnmQWgxz0+BP7 zzA!V!*V!>yKl>r`-|YIk0b+fx_Wi41(-I0EUM+}KPvHvn&xdxf(9;5xA=4ygbvQ$o zF|#WDFH13w#E+)}E7@;xU3>L!UBYU=GqDQq4sp@DEV>Ed{hCHFSe7-!@EP=`c5{^f z%_|ewx#64WOWW-@-QAgl{Qp5%{iDCNZuJL`BCoX-Js}U|qe&S~h&T)YXJBQ}u8ZO- zF{s&|0d3ZTAK3symcA1qBIcciAFxOCtWT9(RJUIWd*JeHt|CIm6PmU9+@;2|fSZe} zn96CC|CY!A&}3R@k4aNkuchK|gZmy9`VP#C=r#(+QyuH@){4fm*S=Q|h(WTsyv2+I zq;Fi-05bt+Q4O#0AXQx&H)hWmB6^J>`mzAPt*J>r)W4Y#EgUz-kLhc+)~wqE|v#w9i4%Rp<`-vC+Hml-BQKpk?@{RW~t1` zgS(3WI)w)}++;NqD@3W%tA{MICLm&Py#)IL|DhdHmE#jMq8fEjOj#foJbOLVuiMCd zJyR|310YwJwoC;`!0T@_01U+cnN}MK$#8U3qlhl0=SydzS|E9_+|A19r&`lJ2&zFx zNGsp=pf~2(w{6dV;7AM+nOPbiB52-|CDNN+@p!t-OF>`&M4%Q7xf6yHs}y~vWufl( zg6Y*VAou#@Gc1*OkAC-U3IQhYyX;-gsPzjtpVLYQyJgW2LISIUqlr^c=1?lmA-bqk zNrNItviGQs$Oq{T+=!e(Ctc>_=_py1H@4yy!8`2S^8Y%hZzL* zPij+WP&k$F88tSVRId-E#T;8b0uDP zDV$pK)`koE3e@p<4)b!IJKB?VIQ=WN_aT%!tQ6w{xp+Q^xCAJ5`1om<0CMqmM)Mj0WWr?<{4|;A ze`leu+>m<|T+5+sjOtlZSTanY0w_Zq>9Hk(+(Oh{u73U|N0H&NanJwf7wq zK$W$AsGAh<>6_>T-?-6xF<>Qk@2iepWl%w@|0W)zA9QV7r{?Xjn{%}Trqu**PJ+eO zi#k1e>j+{N$}+e~2%-6X3iMzs;vi_Ra1OO#{Rsbb_}j%tam87wEPG)ou~rs^luvqX z0vb#z2vui|Ri(aRDZdCP!%SGo@5d36R{F|cp3%kkugn`cj&)J0D5$+LZH4g(J!oD% z$AB7I@@LUV3GE;`=@;b8iaH9d6h$>bY+aQe^7WGAZrKBzg23^XWu$*lgJWcUMJ`-} zZ1n|tx&P{UeVXDF1EHoF9a1!wO&NCR*<;p!n=$1;_cvOAcPf-)E*<&1MS@dGuf^od z<@!mA(m>jzL8g?;spF6$eC7qDS>YB5l`Hs>UPOaXaBXM*C+mUoF5)2`$? zHz~i72zAyu1Rr4=-Oe(#9j0*EI;so zcoKy&?zjd?pP9G~R*7mTxrP=HI}~J(%5kSQ%MEGW?h0$z- zC3M4Nbtb!SWlvg_?zJUVr7}rbE=dHmx4E*g^P7*Ps8!N7+6IT{@;FJH?&uK~0nwvX zs~j6a1^*K5wAKb3slwf8ZOuZb_4OB|jASI$FX@SBed$q+c=5MeOApEPkTWu0V`l?# zWklgL4d;X#udNTFwI)Ff|9WLL`B5@hTE)~> zJ?h#{?8BBDWqq^I^EifEq@z`(BaAv>(Nv>`^kp<)hBKy+`qrFT&~))U3Lw)I*!AxiwQB z(PZFa!A*#e0)GlcIf`j!$y#t_Vg_B$!l>mCrZL23&&K)N+pr>cr3EIz5qsz@!QQ8kV1N47y1%D zug4-#s>SOpw*b$O*N?poY$t#&6G%aYX`RJv6C`YjR*>%X>*Zai`0~B4CxUsW{KZ%k z=VTWjf7|aN9sF6BM(h?HEI;f*V?0;7kpo$Cr0tXl{4ku1FWW9gF+TNZp=@Pvv7bV@ zs%&dlQvmiW6EoU5&(aP8;~|BTH92yRhXlUEte)f|ZY$lB(DPC?@%6{!RORmE)1^dG z+6#wE1@mycO<8L)&?lXFtRgy#xx)5eEe<;C9mNq0GAj3sfXLN$ZsUMs*<1QIb1?@b zJ(4m!=YeTv`oTD8GCMmfVQRZb9+xPNxsR%X?gD{hWF0`2_|;0>rbYm1@M#FmoPVc9Q8Do0KkRca^rOw9XB31iqRi5d$D|+27ZDYrjXU z4N7pDyrlCL*&*u^WkWT$jOd#y?RJ#-`p5EMhi}MWjySntzfB;=fpPMH8o{!NVqDuXh{l$OZ(lMZG2Fj zR)AvFfL!n3z$O-RC56f*gn>0ao3XPx?1Q*lGiH0il#vd}Ve?gq=Ur%9pDvtfW9!Fp zke+NblQ%mNWbY$Yuh|^xS4vWmM2$wMcvl3c+(d6SO|Sf|40^W%S8%cblAwS{^Eh!E(s zs+o#<-COI?nczs8BjkFsbKHX3n6H%AoQfvWdt+jgbBuu)13*S-O5|+adqw?XHiQAO zyerlIEYuTCJcSE}vo(H|JSEQ5B!<~J=Mn0td$lv%xrNGHo) z6OLZUuBV%-{R;i|amXS>cB$!{%O$CmnB*WFr!s#LGqS(ZHFV5Jr5?K;B*YOjT5`3U zHset-#9mUQ9)Yf-DlDF!P+l&5Xd&5}CNKB7C~_HX+W@F^I(n>5^IgobSp|Z+B~b#? zDi@x{Jj%KGUJ|TC=3Y62yzxOfO)-FlZ<2zJ1Dqel#qDj9E6AT9v1tV zD=g)bFg?mw^h`O~4`5jGZ?h84@JB+=Qb7lvWkdM;7IdZ2S3-wF9z?|3jfYpgsYDol z@NZCiR$~e;aAEYr9dY{WE&q>OyttRQbxA2U>nJ@rFoZp|a%X)3R~db^_B_cq@#YM3 zshNxVHxL`mnML|-02Qt|e)5>S8%57|lQD&buq zhbT9UYr!Yc^v~CUhxtcWDO1c0;B*H6X@Gi^rjhQgFoqcRgl5d27%Pem4vJP5irflL zr$(CV*%JG8D{e-LvQ*?yKcsH}p2)jlb@Zj5&i`&Qo~h6{tx`HObJr-WP+>l51Z2M?ZWt0)WY9xhOUQN>lT6*?gCM!-`yI6AjHFrf5#k5D799M6;qwBRBW)v?UgS0L9`!4+~U&3gr4-9?%DTYt2sh7WZ0(&zWesUOm9ry4PtXY-nU5{ogy~_t6Dt--RIFp282cZmo$BZ&-63cW!qe;Nr|8Z3C zQWzr}dZf5m<vLAqgfL#3d~SiSaSI@6Xm`6Q`TIYll-@1T=dsGVp!J z0>09#^01E{qif()kxc+Nrl6LTUNzy?i(N2PwikmaLE(ruzaKCKIi{%$*L*XEJ~*!_ zbJ?s1rWq2Xf8fCevL=t)XaTPKG>l*cS#q2x_0AH7%1&W%pX`hTHN`U9usZ_}f)uSq z*os8*rfzQ|bEX79%?fjFNdu<9XJpP7lA*=Qq@~8QqH#upHz0zxiVZ><8-0>jEcWGB zyRi6)g~i#&(}Ca*uFa{DF5+`K-r%7DSOG~VPz}TOBeQhbQTS9oC!mj~Ddf9H_1s%P zhBLz3Q4PN!T&db6cMyUOygNy>{1{*KhW}#ulcnPQP`9=qEP*tc)>0ZV;a>0zQAzobi z>sb$aLB+h2y}^Mc9W#nKLMgS)3zxZRB|c(cdd$3y`PF)6xrl>=S+i4V*^d=E5`vUr zo29C+`b1098qJ}<+~O9)A(qtQ(7?6Js{;;U18PP`KX%MHi>&<4JM_o5D!lpA!^o|p zj0(b5yF}V_7p2E}th@yEt8zj*j=_U8=)Saz#w0l}D=fC(*x&daUQato6Z3R(-{_ad z6k@d=ZyB2?ARg1zYn8xoa$wrLL0d>%W=f{F`iy>oc21t6ig*j-901B%lcBHMUb0(P zcJHd2lDl7!QrN$%Ud;CA;{nQ|QUma<5_bk#)C*ud28*R(XH^ysLVNzxOE#)&SWb0D-*HZ>>GpVeh%ws_phaU`Tlau}^QF zG;=n8e#X|u3lUSP;jBb3?1POmq6~nhjdasRkE>ptS|x>5hJaP;%vA*ao=l(_$ce`# z^~FzeJo2{v!m{#kZN5cz`fZ~5TB-}Idm$xn&@xf=@0=zBUM}_7D@0`HivM`N4)GlbDeUnWQEqA%OHHER0=+#4Rxd&&UduCXO>8oe361|%b)CeXXdYzn^m99 z@H-@95-$w`M#P>r`C`)=z~sY$p|Ohtp`);7*z!I6g^4n`Rfwx<1IdFAGM^KV54jh+ zG&Mc9tK7$rAJXHXO35_uW$H#86Y}!X5Xv= zjHCpKkR1ZRhf#_%~MHV@!A$%!!zaG>7$_qv)`;=CE0P=STq{ z4#%ebO%uw!eg#XST7k1Pd%k#lX^KemzSyq)=?^^(`>HwN9DL%e2e{jHykDceXOI_w zBhws9ywi8?lwT5Ug=s^TCQFQK5}o&v*k*FfxgdY8I%V&I-R>{-&D>}WII;mXwMQ)- z6`>obkXu1iLn^^ls&fWM>ueB4*w+zZ8m@TVt2pBTWB$wB!Kex;F@nP@w5)F$Mb3#h zkC9!FyWXOF`?9`62@J*c7pq>h5@WTGl?HDRH60qG)r9|xgh<>3gMO|^^SP3v-pX`p zwyX!Gz|9uX8bO6IFoza>_X)hn4Hyh$Wc$W!WVR{678LE=OQFC)kET+ByUHjT3*K5> zU>i~(s@*^67)E8eNIBmp0Yj0rC1NnIf>!$R;_cu2UI@)8@n*kSwgKN*KeYfHk&~ur z(3sDHL+hF0+j2yV!rveJXDr`fFD$Qpd{x?!!X1|b^UJ!zK0_fQO8g+SPAv12*$A+u z&8^d-npAEaltBll4tMy+6_REE2zre_ZlW(#I&CSOUen?_rbV(YswFlI!I}{Y`$2D$ z*pCIXa1)1lC%C|rT2Hy%!l)dPqgP|5s00GW^m?@fW>c~~R`T0dfMJ;PtP z{};Iz>b(bL#n8-ZgL{ztFFDZ1gw%`i^f)J-8g&VY{7SPSl=q0dU)JG+W!vu@4r+2{ zZpu$h!MZauM#sQXC3ohyw8obasHW0^=k!0@%ni5yeJ$a9lL~#Lz|Xj3mW9*Vw=yn3h76)9zB65K`02$K?*2;j3A>+H^*R z5}q^2x>$=9d9CkCf|~jys;=Bz+8p$PKp;Tbv#@#RPiWiQWIS+lK6+E&5jnu3RmJxI z>w;Q6$g9dsG_&So1>tN7{{IiC8Lc!Od-lJL6R^Rq#dUKC0uELae-bplHn3ht;9v%_ z47xcCK)>wV@2LjSH1m_IoGIuZ|3(6V~?&tWZ-|(imeL);5N6I3Ndj z2WxiPhp`W0wpehV7XX!#z=?5z0MW&ShR#3)a%b7tC#qQfQvrS$OL&eo;FYas2e~&T zAG?qqB(=fyCsRCep*przy?JzTrW0}yMT~Yk_}M629xSQm9$7oWi^`r~H4=KhejY`W z(IJ@bwpHS(9qsr9I7EsZ)~j0+SbH8i@A$|zJ^#$dJ=*^#RyLVq0gv5ha=r_SSfeMH zD6ym>d#F>aWJD(z5fV68$Gn5sE?`)LtgYFv;_tnS%OPweNPpO@{{ieIG&=0_!dpjl zyQpndiF%MMNr)i~B34?V`at24Mc^}-Wl<7yCsyKO z;}&f9h}U|5x7_jQZy|T}gnS1KWS=(?mNd^sDLJr4-rh6HWn#&fK!@4=i@X`PpT68j z9eFQxK)DD_d#N`5l4-nXn=<*!-I$}(zMLHP0CAsfInq!n@}@r*1rcjo?K|C%S_J%9 z-Xt!Q^KD5cxOiyjJ04~ZC2kn712YA|Oo0u6i^ z!e+DDBR_zcniz2MPbHA_7U|w09muXju29eL4l~u02?h~NQ1*M2awTa8G=cDiMt`@n zKAeg52q9k(_c$c?m9ws60_r>p>{K8coU^6kC384TZ;dXgJizI+~=ZOQ|Yfx!njb_S7fVPJEE1HvP;oo}!^ySgPA(zg`w1rECJV#Bf zeMov|uYU;{jVR0O^-a{fbtg4_d8@NFO-=eY)ft&z0I632^fYKryPv)_Y_MMCj@y?g z4tfw{#Q_Wk_qJrL+k@6q%v#IiGWe&r^J!lYbr5)FKclJNMc0OZpQV`1@Us4dX|fxt zFj8a?Kki(+XYVS)Ef!l56s1a4?SEN118NtXI_hhZO_Z&J*VK88 z{mir2>g^jx3d6r$A+<%+&0w|Z0|ec@8XXTW!8FZ3&SJGILkBDtUDkN1O_6-i&G1_b zE!dbl)Co^AZk1E5#fea!J+~tWq>X=+p@#yuxbD2AG!{xD&QHS1`CnonJD($Se8{Pu zOMb%&nD)X|^Z5jlcI|o)`PEe@$Q|gILRg&=_yI^{ss7W*m6`75 zbI+!*l<@aTXyd38`9#0d_!Ub@`%Jc&p-y;cVCSXLZ`osqynK@ZRUBK*)X-`Nv#ZL} z$!3>VbDM5G@6!)jpH7U7I=TlyzKa(|FqFuyp?X$O#Rtr$t_J|z_l|NQja6ln>GU$i zR8{ur8ZP2w0noT8&{n!&kp;Q81$rI(y#cHR@4hw`+^Q|#(E{S#G#}T_wt|$wq>>aw zoZ>MoA%#6VISQB7D3W!q~gEwC(Z#GUwEnA5)tdVQ=FDBom_z znW_xQ%M|Ra?;EY+Z*qiq;H%)LBEdaGg-hw0u6Knl3vT&qzpk?~b`Qg9g`V*NXj$Ln z`F_#;-){cuSkE>I=!@XSce%z|m}bWcNGV-zLI|6|O7L9n{eZNpKzW~4)0xFk$N&T4 zt80RWQUCylBtF540*-%$6oDw!G5go2s)Q{WX-c&c;`7skY2xiV5Xua?li$STxc783{+5l3cA2q(F-B1Ekhqdew9DcwfM)uzFSypnXR zR_1Dhjb1TAB|&ygJFXm7I+TZHDQ=KyJaX_0=FDMV!I~%`S(ZaZ0N>@{`s6-UJ2pZ~ zjO8KBR0<+ehBsw+uyFUUagdf(cHxiv3zJvqW*@!NBCTAmnc^b1x58T*iAyYGnibZM zLt78JUi@{KeB05WYsI(!?)P^(8Mh06uw3(2h;EgE)Emt>@ES1Ithk0!FyCI;PT&`^ z)kjHYoSQkSJ($LZ=*?n8)S0ShKaUp{NwfFyge>a@CbN1rI{8rOYN@|WOlhLnwglsJ zdwia6@>0`(}IrPZJ3u1>ns zTqQEXNu)D{8cY=iT7vYr8c_@gZTfo3dlW>#r@ep)Qkkb5{aah5+sO!s$*29 zZ4?Rcs#Wx5`gb}tk9l7jj%w`2OP&xLVlUyst1)^TMCLkCXDteb(lSDS1%~TGwx!fj z1RN~jLO+e71|Yp$!}tdSlEHZB`B%A3ARAX?jfx(cSgyB>R7(nNUB2)4EI_R;U09M*v#}A14*B*uy*6&&gWWqPuQxrjr zW1XA|!7vE$44Th@LuLc@W-jU)ZKcN9h6q0JYR}bL=txC!^d!pm7&(OD6kf{ z3;)5kO}BPgbTo2MZEwt#bIzV<>0N-Qe=q%e=%Rl})}|u<;@UrXG(>VT2e8!EyottGey49aW&@U=Z>`+!ZHYXSJtiVCHkT`VORG= zI?B2fp|RnX}EyiB0|u}-)Sh6=&Q1Rx|VZ52Y*3z(A>|1aI%))qqX z2McLrLn00(GvG0IdJ8oi<8nQsvn9+mAzBPp=wfIt87o=LpgnKO}s8D!N}m zu^{@ON%>}pIe7CDD8&+Cjss%LNfg`6VU_wk^E;7G?>4?`)o$O_&Z zB{C+WuFQ+$-jRx%1p!!ZLb>beiNsBM$YRW%&a|k>#EE!2DBz`)adX_w0nxvrfddQQ z-`LJZuT?+pI^rFHKsTZF110p4HH<6LK2*Xf`GT#6G;9lKb|HETSzxHEOgXPD5|YGx;Qm8BCG}MlR=8&fNd&^!XVAuJ1{?=(CR{P#O!p~DLO(p%i)EX07d`+R__4-6&|7AC&vS&$5$Cums=e_%TfKnVkMhlcJf*p?qCMO0{NGKPjZMt?ZLI6PT@MO z`3eMcFf?%he8Z1wygRb?U8MI{c|83C_5EOF$!M-o23TuJOwNsn0CdQE9wL6k-Cjb} zFRO0NT3hnhfBE%}s0dRuOok(f`h2?A5|5HeRR~5oDfUw{65pWT6?Fn@hw@uaJ8L@! z<;qOusS1F&tBSKaJQ@@tmTfZH#SJ{2oN4C!g2oH+%_;UJ@PJKuiHjkdC4ah9{8bR` zXMXM8&sS%@oi#niNj$Dk;e;7#mLU$BRM0K2%J3TMNfK-jT$I*JO#g=M(G z>ev}BUM3wx=u>BU%R6N3aJ}Ee)~!gQZ2=jP2sa#)pPj4GcVgv3S=}2pbSm!3Gbo#C zuzW0RTC;(t$Fgm1(10}?h4G$J$&1>j4gEzWu%OxkX!0RFBx=N$E(|fW!Qc0AwTigX zA=Yy3Q8{x&n3MtobryyY5QjdGL2O-*ii~cg__&Zn<|9RIpvWr2x$XRJpMxhB$PNp; z+qTvqkYZ7-Ztllt!pY;DAZsBoQXQ5q`IK?M0_>ghPpaJ2?c^kpkTp(06iy?rv?q^P zN2d>01Bir@tF3E?vRIsc93m)giH^he4E(nJ3wg+qy7>N9=X6)EBFU2h17pp$ifyBn zm5(+4gN`L(UdV<_oiX)&OnHgu8)LyaU>p0q^wbEv7WZjVp7-RWIhLE6@BU2kzeP>Wfim-5&%HHUw@c@|J z%Rf9V-Ev<^7_k9!6e8|bKMUwz`61k+!tPAOQOOb2F7v3#NBevJQBb!@-Wh{SR#Faz z)$VCPF5AAacVgsFq&vC$zr?>^7nHx{b-ZwsCv!2tiqQnk2)>u0K?-_>h>YG^8QO>U z`T%~vSE$TKmVSxb)jRnyWAH~y{~+yO8xEn{;3|d+#xR|-2=9sZcUc3_3W)Q=!(({D zZw(3S`+hAt0ZD*k*22R?@)3svrSX;2c81?^s|S#|^&+tY%85E>5{Xa$a)oAtdDvk^ zMRExCud$KfI2wRWD?M#VyJ*ti0dNVL9k*6Igmkh}wb?OUiZ7|FX_v{XwKN4hsxfyZ zx@BKpMQ!^{L1z}#cllxm=tZ8M`~`Ilpwz}%#p6&xv^7Yt0u741#-28bc?`p@4#`Ye zSh=!i$zNeGr}TO7?mWX28QGlSYPZYOVX!GWEc?8K4C(v&>UqS?O`ZMnRz1OgO9{+gFHtTdD4INgS@xfZ*_B1R$isJiyK4$p~a_hl_pCgQBoJo8J_??(oVvq8Lhw&*!>GqFwGmEFH!9D{wrV}O=L%)vlOrMk5Ol0p z7yl;Ho@#YJJQVEv;c{{98{h=~N~bKRH?!h*NR5D?m{Z_nrd`IrmyEORHh~iwky?d=Rc#xyPaj+1%kREI81)yHvE8;W<%CMLe~Rh5Ytv5D4n@PBZg_| znDqGqNY(G-;jK)JsrF#Ldhdbs?%>2EV8Br-LPyumJ2g5Du+jv`*22XZ7_x^4ac;#t zz^wxoAOQ+T;;?WW1o)@u8!A4x5=$oo6lfnz3W+1Zzd-RTXx$-zIXOi!M&#g)&9SE5 z)7KNR2c|AFoE;4ecJ3^(QyN@#fCCk1v(S#-NYsZk(GuH%I-qkl`2fe^L#luWCS0^s zA0}uWE3-0K6r{DiYKs?1G7BmY&X9f$rz5a(5&QRlh&#$INu0qf97rAln0y*P8#pGG z-)eaJVGGL^m`RgwwvfEBqS4HZ9s;kb0)Sz?=hS8V(wGqb^h5H)*3E0;-xWJ3y($yc z;L)6cT}$F0$1-^tZk;hgsiy4Ce4;_-cgtUVkn_QeyHLfb$>2j2iZGn~ddOodhzy$F zP|^Qln^C@|0!DmkzQj$bnRS(I_de<#!uDI)Ebr7jU6N1i8P7%aR;J{9mcCGG1z8nN zJk}!_Vjm04H$+naN`rhpL-zUf)9Wi20V)}5w!rtQn4kn~wYBPr!XxJ}xoM{+IVlqO zIETVrG&d;p=LKWMlkH&QZIzN@BVX6DyJYi801g{kk8rf-6;I-ziAK>rJFW(Q^+}0p|D%* z+brN|=ke7E)*O@srHI3j4>#qfKkf67=qP64My2zO)SPm(>Ss_at*`*a^qg8nFw`rG zc~MSLjM?6-g4E0d3RHSG0JRheY*p1YWcCp1)enyyc4kl>kBXfouXzd2humuHXQWH`5WFz>k8D>JYKqaWF%k@wzM&X zh$@EhpVa|53t*BOCw`;LN;xK>W?7@@=mrzBS%y8`vtG+;cUp`w$oT~obU?@spgqk39?12tbE?HUkj43E1q(@|l;-c| z;ZSZkpA1h+hG7$->i~`S&SIrJ=)96GrTh=$H=;LQHn8kmbP( zJs$hX^PwtL(l&}3S)@5w#EDg$o|3^aOcRTnw^|auIb2xzyotmQr++DTVFh|Q_MA~dk~IP5 zvd61yM>v|cxQHxCqyDV|rxmQwC^PJLKJETRbbbW?Nzo=!`^seHWVh$!(rO4fM{pzP zJ8D)kAN*Oc$?ZObI9@Cy@w?d|_ z$+wW>jB4lgC%HPmJLub#SgEk~3y;$ELOc~24`2k5rGYpUC|AaZ?g;Ra3ZbP zMs4Ytd9JGVNm}i7?@m&?u&f&L%(0(Rt_a`&SUl9V)T9b#1_JS)-ebo1S(|fEsLk+0 zk>|94S!(p@!P}CJ^JwmQl>|f}skTo9rcbF0<%YjB1QppI)qJN95A1O?m1L{s%q;8c zzC&!{Jv<;%sYS;w#~AnaG<|#e*BhbHW4B@C(B5vM)yEk+`V?K??~P3u~0$d zE?#w_?G1Inp+E9!usANWs|hCwH+S@q8{cYB>`1M#$EMu*R6Px!*7Qk%15l<``k2BP zCRhy2kz}n&U~W##2y7kr8u$F#N8)@OSM%O#EIs8|d?c9wjg~}I5J{vj=2uFHdE>My zBR#co>_By;EdQ28zmcRZ9L&1|5Wzg(zRM1g?ZL8*RIVsPgdFvgWWl7*Un}VUy>`zb z<3IxoX6bdrw=jsBDs3*{&o1)wV}OaJ(JJvb*^2fNUc&EGr+uEX*AH($t=)bjb5?LB z@>;UKIzO)TIJ}vQrfZBNt4`sg)HQLhGX!y|0k9^|x%*EL*}!Z{ZDn?EXtmNjV5r*r z;mzhLsN%W+j3X~tSIw1LIsKd3kt?xb6vZNUf+Nl=IFce5N=ip01}uBSE)Kp%{3Oz5R#y|fOR1&4+J8H1 z5lNMMr&_hHtes0GU86Blu*T?t)1{~4Gm8{}uom!dqdSJ+xN$AbqrnfgyIsJpKr(*< zM^FInlnlRy(kE2J_u%r(nY6Y}5nw7TuHS0hZdFZOgQ5XcD~-wNTfABS;Y5-#=Yr3F z$i6r4THyuHNZ+?TSqRayuIv&F04KXiOwWp$8X0}%|2HW%bv1HRYTnqCUhUw#cWLQ7 zYpA)~EMEovJ!^;O<@gX~PHqqj86Dfr(uWT6wmlrS80W_HcJKFqq)L*oNe_CEnQONX z=N?FcbmS`3(vze0WJ7b+yb$1am@*%&bThY$WRs8>F%x(=Tjr|*4CL;nPgZ2*#x%c+ zTUxXqTp3%t3q%*Ib-utqXl9megH>Nm)8>p#C+^+=CHZ^YmjS7BXgxXey7*@V(`3k|N4h^B5bt}A>SmG9MSf?I=5$$87CS(AhkS`=y@W2v5V6(28 zJHHDO;(3<5%SdED1C!KW=Xg@WdHG0O+Z^~qO zY7bbDM?NeFFbngMMQvR|r*Wanam?aeE$tO%3!pAwWJt7WrR?j~icZ4+`Wt{l=p7cQ zwR*fx7P3QSwo{se-|InT`L%?$-5q8R1+7EniY=)RJKTrl+DJ)e}N3 z=V_)-DkGv5!*^^^NYB5HB2*n_z)(t&86iV8c~xM(I!aAy8h%%X&;y=@7cuE-R>*aZ zgB9)SkC{0<)E)Uy5H69QudqtTWEVE-xmjz> z`5U)Yb$G2$kDDxHXVi8-`Yl3qO5j04ff_+-R@!4|NZh z3#N0ptUPJs&PCbDbASU%bzZhKlT!+B0(j_5IH!Eey^%Z9^ay3%m?s+M$l^zU$(K@p z#d$__h~qk@cLaR5s|Pjd;^_4RMe&0Pow@So-lXb4SqLS#__dpZ=}qSt89T)t(6JVA z1q1LB!6rRID(^*i>kdWiS;!cCl%MgA0KbDXnJLPl7I6f{;US0rqsutqtNVz_6hpnP zZY4fs7t~hu)BJb|Wt{F^#7+woMd@(oEc5M0knO0yTgzn`Alsxy3I2iZJ{4gyiE)I! z>W{O|`i5jPy(L<9TwUYXEaw~4-xBcp0iGOcL`!VV(np)4#UoG~BS(hxZr=h0#t1pT z*|3`=1f}N8RelMok;KuB;vl3AWLDYMHo=#b@$W(QmrR$cimpC+E*^qj-N%&q%Ea7_ z;^e8PJ4)=E4W1zBw9ZPG0K#_2rGhj7StZ{i{(`&Xc*fg)g3GmQ(u`;)51ghF}L4{)VqK ziQK)g;DunSY^?eu*CY+WACYRB@2#VKzlCg6PrW2xOkADmUeyf%p^0c8eNQJSq}D>B zhs~0 z?N8t<{6&h^%s9`E*p??yZ3!cOtXa9Z*|y)ecEf>A{1C(VRO7jxv> zv0F(Gw+r|K(x2~R5`K|)#25W;3Oi5O`&&AG%H~#uU$k4IqJ(~SFbryd2j7{~?sM^u zy$*SrXx;58$HT{5BI2@`VBR4or(pb!r|E% zz2{L5t}KA^aLv&JXKXo$vX*>_&n_blh>B@rG6AUs2dS%I-~ly6j0v24!~j1P_Ga@N z;$EL;yL?4+a3D2u594i`=T;3hB)`I*sC6^m8AoVXn zJhOxD|0-A8^Q@j%oIbkSd9^QI!?Yj=Ih#EIBJCKHjj17B`1{K`z7&#R1E(!(1}VSr z4Pjbk8fjJmC1N16Ut8D^1e>6N3p%R3%z5n8rL)5>*Rs?KzR>alB0z6|BCe3G+1|^Q z@Ftw#BcyXOR5<){lxYJrs}-KBu3acMoVLFm(`h)sr01$^vzh2Zc&diAN(^JwYK5l4HyufH<5 zZEjM0z^f}5U<`ndGRzCtN6N83uYO!DYmkNQ2V$x85%tigjlEQxQ%@Tv}KWNvLtN}%rC6{f(rdk&>$!PBtBYmpy(2IO}?#C9!Cvs0q2#+%I z-e!PPpdPY9a}4?wa+X|iHMZk!uA+5ZKuh1NV4h}GAW^hIub~+ajz<@8W>!%8iui8U znb2B^wNWWJh3N>!Bzz0L@QaIllr+`Azn=t)bs2F~T-~&q#Z7TFR%1Q@h*Q+(EHC+S z&@ZewP2E$e2vP`jq=^Kd*nZ*LkKlg%v>#cUgwQm@i0Bt|#NHZyOA8_{&wg45j6OuH z{%9uxI4iF1;Ixz5^YfM93kJ+mY(Qqh1X#9O3Y_KdDxKVS&JsyLU7(W zuY@i8l`4q&$^>yp~B-S@* z+3rGgO;^J%vw>p-KL03}2*6QzPsFHhxiFhF*wA82(^EmKPK&EL;6chH?~R8CZ~yWw z|0zL(qv;a)GK6ix60S+3u_PwV_hfZQ-AXZv?07rfhKR&9E^+f4!Ek|~ z4iKaOjlWF**qp}xX+-Blv-3{()0u{wKl`u()=xF4i+TWQf=bb#!$4RMbt2Kc-!iiKoITy5$ zAQB zA#SSB{6-)e+ytW)^@e$ELG)Asp0RH@K4la?C!m#{XQtJ= zRBW>o|GHyn?A+T%9OV<`&C@cm6zD^5eq{A_D>UWVp$6+IE;X?8ro{Kia&VekWhP2V z;8cpe`Vi5r3C;Tpop1V&$3@j@^)6R&a0Gs}wrat6 zfVrC&Kj4k5s&i@QzRe>T1jJ5t90NHLhU}m)E3c@VlmVdgpZ=(}3<^I7XDMWaggak)0Dq3s{@T(no-cGp)wwu;# zmIA#M;0luXuWmPNN!0*lm0()+{4wCWXb=BlI9N{}-v?YSot-XGQa#>=v#Ib`&({-0 z3O1bhWpna)y*UJtlczIb$`pla*DCC&nfU#^8DcdH`>pH~gkQ$GkG+5tQg!B17H42i z^>J29r8c|b@pYJ%g1{p>K`ip;MNc_-4Q*}b2P)te+?VQJ)bLA4AbDgW3uhYa@QaK! zA?LSTfg{X#=P2h4}y^rmbcBa%-t2t=kae#keIj`O3*v^?Vev9LxF%`gJyB$8WnWW4^< z(LiHPV!4|LUv8$ZV4j!ZjexqaU7`8W;CHYVHNVP%$zDr8L6I{(<2N3Y?pE|u!z;(f zd~?Maa$re-f*7hA=v~|Hqp=*Kf)yNSm1%s;8fmG9900Tb-ws^58`;;~>=G0a9nqbG z9I%Q}*R8kVpoN10v3@m~`J*Ni{X4oUyX%4{-NN}pR6JI*>2Vwie_uPHSadwH6W7ru zMcdY=w^2*p%%BqX?|L!9x5ECl1vu9O4OUI zS4T88)i+CBJSM@smVMx!NgNDpDRv!VH?I1q;(vW=DaCthM;`Ox=qYycSoGSVxJtm^ zM>5D(OR&rN8}S9IhPk^KwO?bksgN!W417~&&NlHBp1Re+6~V2_;&_aq?)ghBh$>^S zF}A6wNYofBgMWC*6&1-6|BqWVi*GRT8QCcn3GVMk#TwDd*R32YH zhP?iNN`O%m$y>>BaI6dPoIVPS-D&?ph>lY?y`sMj-rz+&I4(qk2p%8!4I#C9>$ZM^ z0v<;$+^41@VjRwT#tu#B>zR7z3lqf4f4ja3EA*|5CrdKOa7QIRqQQY{w5KcJLq_1! zvCD)R27zBo2@ty{#NZ-tuKUm)2+HkKjYu`C# znP6wl!sFNIMT+Uu3Em!GFZOcl!FIVv3}u{^NLAM>qQW0FBn7G)Fl{FX(|(xUN6^6Q z>>9}4V`bM;QZ8ix0rv4z61$iNVC=mlATkeM%?~V29y?pE*3eMzjDx8Ea56w)wd0I7 zq9+?CUvKeLW9NJLJ;=AI?H#DxXRHXM!}L%+3iG}Lrm=9A;Ua5#mLbS2F1?0w;!R-4 zBnhpmFsl(n9Lhb-6Gbh`Go}zCy4TM8rTQM{8EmOa#aitI}k)O*9YMMAabC^ z^UKAc#B2@VN7-rwV>(<839@8RNb0FK&ZY(KDk7&Yr;(+lg`FiruQ+C?#rd`K%O?d- zYf?KVYAnMqIYo`*?%4;6RE?Hf%Vfv`-cp`@o{h)Q^c6`CN`HNmAmYGqV^K$%!bV2; zLG+Vp*zgM-wq#ME%$Q@9K)(x@`ZN|&3ZOGz9cb*#`2C+FF43WRnPxiyNjX7cJH(Ds zOXE&+btE87Q=JzG(IFNYsZ&!8|M3bi#2^_0?Us5kp1NTClu?G>RoTbg?epS_r-Q`h z&|ul~E+Px90^vPlpZ-A10ieHcbdQs?xzKvoXqUYy>r@8x(S-6YMNkxX-g>>_uSotN z>fO60+=K+R6@ly9%b6;l%uPu%B06pxGE+`a03#9Iklk_&V8Sr*{dT>Ug|&HEP$NAz z|3NfqUwp=>ktdRYlvSe--#{e* zUM*sbo8nMG@N)N&;$^2E2f0DS72r)EKx+BDsvJYU5pwrA!r`DCp%DU|wE_Nv6jfw? zCTa`rDq0Ak>C-msg@i0V};l{lm@N3WuXNOE#bxX|^86a|Wn z+pl0x1lWH3LwAeT9_~A*e6lCMxjQJ=XXTS%RZ7GIXk`^EM6dcERZZS5pS$=D+!}!7 z7l_=+1|idE9tw2eHBGR(X%wrMcT(RJx)s#fIEU*q6~}mL`f$Y1c_`oJ0$0JoF&M0+ zI#eZOs#Qe?MYA*CIrZDp^qxz~vB~d+O>(&)vq&QtG)A!-5a_4Y)N#igVvBgO3B~Jy zRgwTRy78xFk=Nw525H4uZ-c#bkh{ zd;@#dx-}%ZSoPR{)`bWozjSq5OF(uu-~_msE?&O6%o^Kd^re~`>)Ob5uO%d>@7-(k zunOkGA&uSawPMQIESK{wN(G-zW$m{eUy#KA%(6x?qVbNVM5MJWS_w!TLYb7E$KnD^ ztR_mXb&p_6T4u~?XNDpnIKuLc6(&=3;z;Jseg);qf>?p#($zT$3}X1_Dj<1tf`6e> z?3#MWq>D2Li^{#Yw0q&O|FAeuFR|glo#qqmEFZftP(+*o-JZx1O1<9Fky8*hR1mC3 zdZvP0x&~Q@gorF}G`>;De+8$b>BCeo4nKnjz7_Ay!iK8v^SnS{sblSeQ-+l_u*d^SFAZ2yB!% z$J1UNjH;z~z}b%+b=K5>}-f*{koPQy62B7PGJ14cu{C5OOvk8)<;bj@qtQ*sJ4+<9Q;mnS5feM8 zM+6BxI{ENGj1{fBg;gox=rEu2X*oj;b4p|wsPpmQb*8Iiq}tkGqm{9?#baYdhJxIY z+~Y=SeTAwCCn*g6YunRpZt+v6KJbf(hpN2 zyzfw;=svR@`%+@F?giAjr&!oq4>j{-5F)VT2j(VYzh@(|udd8u`#9ZRsyclfWr;uu zimSpUM23D~O%?4vM3S$}aMgd+H;;+kCa5+dJANIjexz9ujWs<0?cXz_%D&QsD;hyE z*YYFw8w{8j0Cu$lk`$`0h)Jhn(m@sIr{OG(%M-U5tu#;ye(8qMg6wb29riCgM_9VJ zy|Kp=5W9))>FmY-Zq99o6-U@{`VQ?ZY8?nz$OpEOe*F@j@GddvmT+t9Qq7PJZcvh9 z6p*txBqWlDykFH0bU3gRanF_)jmd>pMw2=bDdzb18Q~K?=N_ko3_rsl+^y*kB_Y0( zU~o(Mi^`|%7UtXB#Ai3on@nS7NmMR9>Cw9Hd*G?0NL7X;gr<5SdB8a0{D;1wD#!Uw z<)lFAXq;nC z+yXUNruebhf9N|}pevFDjeK)^>zMKFD5oTJZO$JC{4e?&Wa z%C;2umLo#L& zBdWX2Y3Eq=`o$n9?FEDwfN3?N&n#CLCKKHg& zP}-=t$uLY7@#9i;daLq~-d$-kR_u}s&_}wsxK)>Hr|A>aNXnL+Lj1HG*x@t?O=n}P z+Y{4X6RgjQ$vXE^Jq$xQt&E<~?F=ocYzYmcII4OsY)uX! z11`sbx=U+;XdMiEmI(%AxS}=U-?$zydfW+Y0BHo9J0v7DWc^0l+{{tevqgKScx=iM zf7M6D*2MxD1ExsC_Zy!Pk;uHw02?eK+lu;BTT+|$93o6gVj!vK+Tb(h+59Isq!LEW0z&%1c-dO^Bj3 zxK}jTS8)>KGv?&n*A8|qZ2=kWZZBGhcS4oMKgEYGZs zVMye;s#16#LxyY_Z&($pNHZsI;r$lS5(MD7#>!jF`Ms`zDgW(Zbfo2dAKmq9D$`|l zCTPfR@Y*|DUTi@*Ui*e+9~!w6Np@ASg@BkH1!Kf2lVUbMYrXIMl~BbLi?HVBxP-b@ z9+5PsXRxbaVgm33cFG9c`V9x+{1(&@V_p>3ne8UcxXLlX5E7L#5G2*mGda`s0Jn~Qu57$I=!8vBD zvQT3&;k_iBXnAq>RU4y(^A&(Zi!Deu76b->qA-8FFY8W1QT-NK2Ga76^Fw$VRz{3> z$ev+cnh~P!ra*{wJV1qg)SWFq1+BfIg~F?CWvGn$^+iqjZb0qW*?R_#i?U||GFH(+ zixnf*7s+%Fv_-Akf$6F_gmNbBz{!6@qnw<36g<^>@M7B~1}GPZtgvGhR0|MgJ&_$x@-x)|MJ5UcV5 zV3ZjjC5Ij*^hJkWwW2I>JIq{N=_jL^EAL@xhyK7z$?}O4?5qBldB*3lXv)h@-9=V@ zJnvzt@ACX%)pZ1wsaqLB>P+G-qpi%}-?ol*`<@B})gBD8WLuqhUs#UP#5dc>Z4MJg zRIVz|H#a4T+&+|cIKJ)`uU8~g?7S1lb>dM2NdDZpqamKOmfFOzGEyp%(hrPXd5PMh zF}cJ{#`)ik-&IkgYdbZ%Xvo#{PY(q!CAnNthZxU0i4hNU)MT-G^UJeTs~NUO(FWEP zyCgw*>x&N@_d%AFW;@7Rl{2KnDz|jTvvi9sQ=eJM{kVzkw}dpjc6N0u)m~aO4N*=t z#ZW%p2^x+{gY@*ftHCaD+p*Xq8mYgpLKuk*+JD?Lo76oNlHkl~=<=VMAjcyaARr1v-tY1y2JS0|)WVh;+hg3Hg|Rsh5HKL0Of)Y zywJdHKQ5A^z=(;g*|F?*90;ZglZdZt(!x&L6dFdL1%ul`#NjJK@V~1&P#T4Ta7y$t zAhN)YI{?_SbN9|+cpv5Pz7%_PnZV0X?( z|8mN-UxMKMjy4&%<#JR`z=fP#hd%ewI-Myb?OT2fJZ7u7ngiD*DVvlhH}2H9^VpJ@ z7#h*afRCO*UzvI?aw2M*>kUQfryyzXf`i){&;n!miVNgl>k(-v4O65+yTTk^^6qL6 z%N8>CVf+98>%No!{N%&Fj8swteZ}y7YSVNmoF|R8H-KANpRj!6DuWf|CN7H33)am< zW?aQ#Z&(2Km|&nQ?R(0%*!#Cd>q{}p1V2`YiLx?6zGx;S_=>+vGZa0F;AL+YnGR^W zYCVAhM~|ID04;W8#QONcZGD4p-q+~#nlodB%xa-7jSCbZ_H+jEYS_ha^z^qj>rX?B zyu5IwDTW%WnKuqXga9p5l%(IY8bFsJZ=If@^$n6;-YphMXiGhq`6B>K2*?ws)vGRw z%gc7JBxJ*Lsd>E((AZML}}>s4hoLkxmc z`}q)jxYV2G+$cK-qe;=`&_}VeT|(z-11JyOI54a!ICoTa$_XMl>Cx=x+qDwaCeZ^x zMoQ|@y=DmY2=gPVKZ20}C)%?2b&UA4p9>qec@P%rr6U|hxx8{l+%6Q*PrC1*Yi2nA z3GA(uXY}K64gh&89#@0GIyU*NU5|tnS=Qt#w(34I%hmE(7o~EHS7D0r)4Cua5k&G& zW?MDjm8}pDDl#eb$wUf4ah%FhaRzbL%Nk0qalH2VOH-JT2AOB=RIc>cf z57I&*mD8vs=_QaJv=`_L$kVYx;DX|mzz;Ke1Q=zKG@CU3e#3;;;wFE%B`E88VV z3fkv*5Uhh+#{8ibQy88HFd#8BdqRnV+lc?H;XZf#aP9cY0pR2-WoWm0&NloWxnfbl zQ;cMbqP>lL>D)oCo1KMbc)k}an^hAzvYNQ(N5Xb{)=vXc84SGwa7K%WAF!KR#6TQz z9@&YLTs)YaI6?s1-Au^s+dZaS*!xcVxA6cvhKr=Y56>(nG!jB>12?Se55=;0d^k>nV6j{wx`zO}DzRq=iCCMB47+N! zst5FB(Z=yRg>yvBDJ*uKagFT_#G-W>K%ncLnk_I|AxMmucLcEE#Ly(Lb`Q75JW<)) zvY`NhKsFltXQJ*D(M()Skt2(gWOJX|jBI8S7FWd#@6^<2*Z4>{ebv5pDJJPy#EhMX zjDpx<76g}s#2hWR|6*Ed?PwZTz)|hu9i?O6dCpiqvaIDg{r+jG?TPK=IbCqlVH=of zM-iH57~-7(QUlCWR4W!X_w4 zZ+XhMxu*ZQW#Wtk7}va8?-VzQjbX%@aa569p+yTJ)i5Gs zdab%T?hwg#;9_jkK!B>wy*>U>WIKH2WO@*7e_AfR0@`oWhQZC7iSZQmnQYb}$^1md zuV*1wQ&1qFwEoQTov^T(&+tFH@87A?Jcgj9hn9g&y|TGv`ZVq$YRnroiE}liZ~sp@ z7WP;g=fTKtR1xarQMK37_8kON@vPhs&}eFp2Labl`7sz?eV`Y`qj5E0r#^EgAncvq zmGGX(osi|NSD{ZBG0O^iD1+TOJov0@W)^`vR0WJE@LT#fkT`C3&?g>KTaw55^meXE zF4V~Je^4wtVL%E_Z#3-)tArvH<)pI;`R<(I_XL@*rKK_Lj^X%B?x(u>td*o;4MX4o z4i^R=d)iS_X}%oqP>pcGu(^BWC|I<1q9FEL#3psxHM`42Z&zxhOT-Ca0n6yFCle{E=QQnXi{Q}!q~&}DIzz&vhVja#M!}0qd}1Y_L+!Y|V#eD_NptLm&)y)P zI&K_)2A5}}PXFsXSfus2+&LbhQ*dvA{e!i5fo>;Cg(xDDKy_)gGlTYw&2CctG=Wx4 zBLfucf`Aw4P_6pK8iC8SRmB)i<}q>_JdtlD8I7_nPSWa;zP&Ndse=GZK;lOQ?C zo)_6Bi9B2TGp~pBh0f|(nvLQ=^=Ezl>XJV|Bk=oiRsQ+qGNo#$?C~nzpAoK@|5S{@1l!iP#RoNDDMB*@I3%aZ(CMJ)b)VRjgl8TO^fh>Zkt@5x9Q%d>S3J@W z5Le8OCJ}TTo!38t5#h7QJ}9DMR}~3! z^Cl{Pwbw+pF%QAN$pBqIqQ6ksy`Z(+e>7v2YBh%3ZUBMNyqO}{J6ivP5*67OCb7+$O+E~7J@d}v)B(o+# zz{x2X4=ts65o6mmIZ>O6r_P9bHo_>1m7X1b7R~}=%Z))t=_NbU0D zC+tjEM$J*sc+_Prg)?3oCxdPDCtHL&`IMF;H#Kf>iO&B6WoI~a z@(piy010+HJ5#_1qoQudHj|+S8*Ln0LwTLBLqQ}u7FvM7#baRdF6rCZve*;+mLEj^ z<#LmNsrxLDI*M-43;6P^!)cv!|48kVFVSo0mZAoZFlKN@xqxH0`$G{0NLo>41`Q<44T zsX!5a9iLeIx+BaIj(J~rx%0GXV+b}C->3=hE!`lkx&8!*^vKbxXf$i$y*g`lKXdr| z*l?ixXIll}Ypxc1EiBjwOJ#9QoU&mNT~5aH3xOzy=0t6rL&+uE<&nd z>^ML#^XjH8lh~b*7(3FaibHZ-nf4=!Ln6z12kraur!dWX^APGGfZ!>U5XMYJ%JHpH z(k+(jw4#f>bq$QGUDFJ*Nr$L-K2E@}|CUf5;>X|~%M5G zAVL|=YukAmNGQtF77B)ub!t3`zAtWVL%NBFK;tJl*Uo9w;I$^7Jn6RRNT;A7HAuixUsWpQEuCmkSA|TFln8aQ4`aVuFGuf z58q~2I+{JGPKi7*LJ$dGwG(BHP*v~d%-n(u`BqEX8TTrKI@7I$RHoI^ya@d?er&+< z#`o4ylipd7Vbn3FlM7xYTQ}1sI%>U}H#O&g@(Onv{9xX#^bC#xuVo!?iLmmcxi~f8XNwJTzH6yUpAyWe(7fZQRVy14r?;Z9LnZ7S--PF(Q7y=ttn#M z!0sBNHd|5mYgGYfKuY75xXpqlLBH)sC%+xtNE&!I6h}Yx6pgSX;QcDC(UEFet@^J_hlKO)Mi@yswR&eiYcZx9~AXi>FmtisxH%E!%$3*#vh; zjm-|IXotc4y+_Z^S>HAH_d0lYjZQe|qVtLWuk|OD@Ds8XyI?Uy)Gsiml)%ZL)Rsyi z1MGNN&%q`D0`jJ~$Knj^9fZ}$-GF&s6B0MeGqa$Ysa}} zv>$eK`dQTlG4!aB>AU3(4aTduKTZpmdwwKCr%oiI)=5#T=2`9eV(Yxgw-c`Z#?Y9p z=YT)`O~?wx2r!Pw-W8|sUWuMOEOam&D(Z>S#)X^=EgC1L1e)AjnMI+)wxf>1$h#L$ zYD^(IcEn7sNQj|YGd%w*oxVr?X5)*0Gb&vlkE<1}x$x`1$QE`OQi}(gpaN1}nx^S3 zI!s8lvLfu=!*5T5*1!cUc;1kg8}e0=#hEiHJDadN$>5Ft=&%IH8d4z(9Rp@Z_u-=M zKwxQR0ZCb4)Xqne#LR_wQXbqwS;!I>mX+J&#A!>pdF#4byva=HDkmqC(b|^4hLa$p z*nl?ndzJI}O2d*9U!R!bgHyfZwFaPrJi9lrr!`An)0@!pLgpbG_@JaWE565HgS*zx z2pd2zZSTV;=H($6cODz%qPYCT;|$? zfzwrKBbi19Rr!x}LC52^;}dT?_w=`zrb(4>10^O-p$GLwPNIEKIV_|BbFjRQ|8 z&`D)pLTRGDw_~0cjXbG*l+$h*GV4#V)jBgw_GmmCZl1FBGgu!eTohokpQ<3QhC|izpnV~5FsVVO zyjmTZpm_ic57EP(Nv)5WGb?@`pc7jVyvW)mxD8L`9}|gY6TRqI`|gY^Oynqb&{mf9 z8Nw|lXd-c5qPF@0&YncJmx*D{3606jwz$DE=xs|`F)*)fh8mL<^;Dp|G|~VRv`zfg zul_=5%xP6yCv)o@&8m}4*-ew+&6m@eRn3*wfN+%nM8UIebHkbK9Tb1h3;?!d5${+g z$K?(?Yx&~gMERiw1GQD9SIsT%R)*K~J2p#7>gU2}RYZp?XAeJ|`Ds;%c4vM}Eq2*W z!7eyIuW>{soQGh&JVHxeydVB2NV2jUrsZ9|*7~pnvHLRnWi`|Ay@RG9&(lHe(J{&%K;o&Lk!@&=SfGE zSDewy>d7qbfQEM&w-8|7uY~xlAEbuIKy|Y*!eib0t^{5})J&gQCLPmMmNF^zOIscJ zd3k`f=1MOqzZ;6w3C5ITIfHa-IW~aY{;hxoSid*u+e7J$sR!wnsP4d7g(dhvmO-oN zfus~t0!sS5PrZGQftWVr3>;%V%MafH!S5N(WFK+ve@E@bqhR@(QMf(g$FqbcFpucp zt>?C{iluNwT6TEfnBvxEpYTHM4CI0y0+jl>BRWgn(Ic*j_3O?lUtZ_4pFz@R!lJDG z4&&`qk-t^|5L*|GxWO;6LL|dmq-0j8q*CVhR(Jj0ypo%R-h1HeFxXu>4-)Ul_1Hv*n>AziwTH zFV&1f`%ozz-}B>~8*0;D9EYa{xG?eK*IUW8TJ?$Hp_Y3r2+tH6N-UnokHMN=y-~waujFV(vf-6q$!!Wll?7SM7#i7X#`Dj2ySkG*2rT*! zYYqMvc6hb3RLC(Y@zxYXl6=96Q6t~d4Q{ZaLf||tShiu*Ot=#&4jVFyXEWd}ntz?* zh(%Sv+(Y8SNOG=A(vhc0yo{CJ5{mz+{X@W98#Qd&HeGDu34jQZ9Z`%U7VZ=H z;_dz+dzV2uAMU_7G<|`}W8MS1J&@=sASos!lBfbu02NCLqS~`$p<Zgt)`B{AWYRL~JH zgt|wE3e!^z#w@WB4o%igyY;H4ykY|etDyMWCFC;@bx!*%-AVjYLTetLG&RVLpiD#M z=~XppAS=1fj(@UH4`qu!V@BXk&9a(ZYR{tR8SeB>k_bJG^LrbdY46u1;%z<&rk)m2 zKe+|ZPtGprz2Ezs^DXX!6du0cDvKM%745$3f-8DS{(z}iAO=g_%=YrY$T&+q`?`lD zJ4WNZ!ZM)kLm_*l&R?cvGN2F$LF_o+t+7&O^ijii1<4sq*)`&KfA>z>2uF}wwrN|w zkU2KJLp@*;^NL9{>p=8N{sv+j=y+G!OE^z0w!V396emt*YgzL=rl#!JPT?nXVtu_L z47?Vo8netG?NCd5T@0^q$(6`fZ?6n5wv#qdVo6aD=(vQ^EK3^VcmX3oyNSB+1crDF zg@z2Pz|X!oQhTKzp~YBU9sPI$t=bizufh^s{2ah4>)(EZswI^m~fZWP86i`(Jgs(qYm^2-4MFf(OykyB@ zyOMwmo1$lwcaJshN%DkXcMgSvsC>V65s$EXgRd0jEp;sYq_3+=cU@?HeMlf2DYCx3 zOQQh$*`e=6|9Zz&gHcn9t5J!dxMZzoGm;Yet&HM1aQu<+^s4E72E>EvfhXmf$(;?8 ztgMX>fDyH@BR2BI-&y$ESd7p!EnngQAXWz^o2>J|D~|f-6(rOi4|~0fCsATYrW+10 zjONji)fYLbxBcCAWE07Q{AMCE9j17Q1OAq$EuH@co1!4C#1PG4k&cG7_vC8xy)`mJH63Dp&5L<~9ksD~%0KWNR zS0RM1%6JKD)o}tR#|RL!iA~2^up3;ZF03|snszvq+lXCf4$3sGl3XFEzYCQ|Ti9CPIR za>iQ(U&UFO{pNJTNX$mZAd6L<3+me@#|!v2y)~w%3dJ$P!W{|y%_8%0Y4gXW8cae? z%c^JPC#b2K2M1vohz(&BKvOLH=Qs=638S&F!%B(T`Tm?Ir^$&Yz%nb195>|D4gMGJAw*9wdGa(W$_6Z+`RKy($R3;qfpI*yIK6(V@0CbguL0QT1<$;bX*{pp zd#wPf>^`2!^)@>b>o6l|Bn(UtGy)SLHxgpI6kk(T(=U@(YG?|1RATN+bjrTGire;@ zg3V*MbkS4=wb_uSgB$!R;HLHvAjBa3i1GdLfgd>nS?knJcN=E22&70~Gkz(W#K;=1 zDQpw&I9^Gq%H^Y9YF0$^T}j!}k*Q5;K8W^|iV#K5@-9N(5r;f@0Vrg{llX84LHfnb ztd3UYLpiRA!MVT;jdRIZ6P9)Jh0hOFp%dtc!Ptj@xIj~ea#>A*FTcz+ za#Z{1y?qzy#ko9V?j2AJeA8Rjppo}I!mBP)n;{U1FWTj;mosg-fmK=9)XfnGS7*J% zrZ9^y&Sf{wS1Spv{O>3++^5S~U3C~6w?5?j6Vg~FDS~lxcI!e{$1H=jMGh8-T@Dn+ zhN9rVzdf^IFb2_6&K%wax%h6b3djf;QdNixjNu$Qo5-AQzZe>0W-eu7c~y>hA2VUh zVW$mJPTu5}ZFL};3`HA7v*ZS&nC4B^9AEli3Y}@duT%y&ll=2vT;?bPd^d}(=evxH znOySf_MBI=P#ruDSuQ#(yS-Y?+x62`E!O^}tnX(k zx!GR7e5&jLFjWLw&aqF#0d7B|B8BMQ-RgvKLEO37V{eFZw zSayoPJ2_P+k6Iny4Rs8EsO`Ssbe?Dql?k&oP!k;sh^U!Jm8uA!-7Zn{6gf79RJ>Y( z9ONeq9%d_;p8)8oWkZ^)|#kS1^>hjyNK-#OFDSuh6^9}$5 z$}t)ro$OI8ZC0m37&o~3_ui0Gp?wLW{(=z9JGI6oIMa&`Odk}fl4TS(%Px4i{3_kX zHt6P(D}8eJl79%E1C|95L=B`Dj4(uXz2hH1uiUJ&XRjCu0}E>g5SzGOx{Ht?}65JIky3~!R$QHa(!x{sT}V5fWocL`5(WR9Cc`NUC(Fs#s^1KKLitP_Q1yMfp%hMvYK z1Rwx(>6bFKuzDDv3sBs7Qz~67L80QP9lvBRty8KVkN^i<+_pOjC-`r3@Anq9RAy;~ zNaM#_Zc&2p07gC~C!iTaKxviexIK};4}c%JK8?sT;htHdPK8n!EfVfOcfig_Gdci7 zG6eoH4u<(_gAnD&P&ahUv+FX#*+Kws@_ATf9+F%e&$&nCf()m?dOzx1yk2b7nD;fH zYNHVTlJp<1DW)fv0>n9z-#GWJN661GAGOYou~FG>Kch_qQ2GfT!8`Yv`x)Ks{h7kd z{8qs7az>?yQmQ`ph!QmuqTmxRV*)ZtPRs$Tcv?#%N(*Y)2d*~_`WY~Zge8Yvm*KL3 z9c`9>58Xh+fnka~H*5E!-fd~ihMu8>{r^K^OmJJ6&Jaj%haZ+3Qx)%Xov3jtpgfeV zQumyZ!FKw`PfL<`L;(rp5-T(@d!JF)DP-S>bkiquJ5qcCxhxC-KPM=Bc4MWFjbQ zG`Kd<8#zB2#whON^zfyN-^@rQO2Va_q;o-lD7>{Y$CEz75%!&fgCkaM^S5Mv$By)@ zA_LO_EfG+-Uj~w$gGkxc*yuCxfV!ihp@YsC$g`opS z-vtfG0=PaC2=Xjkh-n?l7X3bV7jnANh@lT=3)riwm=vJ{akSC*U(5#f_F~) zmMj3ikgci$3je9b^5Fql|HNq5cN`4&gpe`kru0W>Kb7)+ z^h=D0naTY2pfq)(s>?$t z?aCQd6#c^ecu`1|C$#VX8A$cDoSBkhEj_D_x*1QV>iw%MIAXQtr<4%xKRnU!|8A}x zm*#!ox;S^@ltk$(@deXrL&Q5ZeR@`F+3{9UOU|6|WgMRTxGq-ts#*OR--{m)IR%ab zBDj}meKIcomt;pOOe+jaOcv9diIs!Rg$HB*o+_~qL{OH7Tl_7{pQ7HCf96w`$g^k* zq&&mxMm+;f#-*pa-~8D8YmJfAIq}a*!c)21OIX~cg!j`06HSR|$Mv*(xFxMBQMf>v zg)tk9`h(5hu45=!Aj*lM2W@^6>yn;_!Wv4mU5SFObsfZQgSG!>qyxnxcfOgFoAwuk(1Di}Jv^NJOMRX^ylG z60iMJ*MA8zX-b+O&Z{`~Z+4)5h7TWDF2kS>&7!~}e6HNlOd3i$RyTjT_R`Oehw+A$68 zH0Y?Nd^DZ2(yX@+-|WnA!kTQruI1wMeY;SWX=3>hkMlynXB8-yA=A)zT#JRDhc@WK zSliCWOD~vG6*T5+22>$7;Q2E2Q7)pWo1O|c+qp(?hUV60Lyc~SM4hmIRT41X#~-dU zgq29F<7u_~b~qw8^Bd^dXUn zMp>Uhh`QtD_i%F!%mQjFGajbimcA2=vQ|b?j3XR5gboY97pu;mdiPE1pVCX%Qwc4! zWc#R~1C8UxMhBxZeeNrr=>Dhqr)0bWio#uKOI9xSQF%FH*`PcXp4Vg)@V3^f7z7q^#rZXNxdxX zPf6dhJIHaefy0mq45s+k} z-1EfKInM2?XUF-6I-6xt;2KmCtZfr6_Kx!ir^$3w@}wc5+AJ%WZ|Na->M28G`L>KK zzX;8VKg)pNYS(nbd;NnDtH~vTv?v;2sg|N~*iQv&6X%Z5hTWzJiX7xwwlv7(&lN$? ztDeL<)t5SH!<3eiD}sy-6MktnVu8A+0&&)*gp}?>-SmGOL+kHO@i~GXQ4GjD@TH=N zwjnOYD`~wfTwHOz;te)sM=7*03Z&^EuuATO_FBAP%gG_*jPOt{OQygHmZwajWs0#A z-}22OxI6%S1l+{CMJ9hHf?IWD44VH84pC=7jYOij;rG7^le|S&zA!8!?vHJou+UD_ zAUpNX_WeXo!PQGVY(_X~D7^vE@dvs;L#m%H2>FC+d844`DrwvxFx7ue-G#f%@9pi% z@A&9V?JxWs!b0mi_Vuh)-`}LtBsxGWcZC)n|Di^#A*(jI)gkd`qR6_gs90&tf207) z`xA}CY)NxUt zT>_MJbpOZ9|59TxZP`yd91$P9*{szv`zGSdY94uVUFxtkPIRO3M6RKdYA={7Tk|;E za!*{_-t683R7Lt;A$37Iikk^W720kBcTh_YT@!_IxGr;aI^%bY%x|IICTc_xH;LxS3>L<+2&9n4RoAfEyP-^emU29wtp)=4J?*}7W--tesC z0UlFQoYTQ4^Vz*oPqD|pgn|MC0A1N~l%pRvo>0$yEz{2T-_uuc#;NAys#bB-Nug@P zEp>bdB1OYHP38WPFEQNevJi{`_%g^%R&=TT_~RNcL2ABJC?dq_PsqnG!|0!2fMP95 z;;7AW;V}gP6QI!#HKeJ%?I6ZR8esogE0Aksyxx9>@Y2^;4iw?U_lakS?ZBZ*itZv!S9Q&1% zF19P*4)+VQWn=*UfCv{kdNz6eRrc~*!d>TS&VbfzzJl~&h59trpyR-XbFd6=>Xq0# zs0e6&0=WS`48lr(p>~&ITeJP$-DfWJ1tnfDbr3e)!&b-gQ%%aZ7D&8j5U_EZtW;|9 z^$Kn9NDGRxlr$tVnWQ83MCeAZ7!x-ECE|R=oa|lP?|$^nft!=C)I`;P8!5YkVwHCa znZ0s96&3b54Lj^x@7fu@C_~Sa!y#{(CG1Jk>3Q0o2bpj{_U2m%EnJmX3|X3N>|yX? zD}s(xD6rktqI3O$3Sj#%ls9!K{o|!WiUf;_n ziT>V&INl4*aH$f_?1|={y}@#agyr#n4uu(=3Ue{SQD&M*=kbvw<7OxTH^=oQ`}-+N z1e00ktsK-slE+8taUhS|YTu1;K zQn+ATmP*D!=`u;%5LAS6QRr0J-;uV%f6Z9fot*k0vSQsxUFrW=s5Y42UCet368}zbvVnpdew_#BHA~0_D zR1!?5)Jdx36kxO*%^bh;O*Y>)Ge1?yM2`)aww&j<4|NxeSv=I_DZvK7oRR$362%0? zN`Ci;0vFS0GT75`y9>t(4$?<6En`JNn-iy#er?ITeG_%_Qz-f;{dbI+EVuxiX=&@_ zohszoF8Nj7PzeVj)fcbTWXl!*9x_6>S-&H-B(XDNQhqy7t8F~Ljca&w6KEbN#|?&9 z6vY+pnd2r)E)flz89)Zg>bKe7;BqCc{d6i_GRCEWVqdyFIU7I#z_bXGTOTCM0En%t zZF5QFrC2ClPBs8TCU=*HC+Da@R`i$oYnf}` zXuU`O89)o29&KHNH7KoVjXsN2R%W9K$TsTkklhjmc|viY!C0#$FBo~0pCC=UaPNpM zl-Ye3B-AwncvKU6bAMj6+)ETM>zXxC3-f|9r|D7|CNkEQQMFD3QZV(?l}Ev(Mv{H% zeKbMCqYrqYl&~4YhD-v(leyoI`bj08BjGOE$j8OAYw$lTfiUNRdubD0%shav4?}=z zo=k??NQl`$qr`QISl#f}VE+$Vt~xV1H1X>Cym0Cu4{E}2i-ysFvJ>&!RjV<@#&b+dlvm9oAKnS;$H>K0YhdF|06B;M0QV>0C#_OKY%W&^&>WS!Dg|aTvrUkbg3w0HUH8%UiQC%7s{7@S=kDZ}o=96c9g4Fq$q`s9O`dZd;#YZ(h?PW%b5`sBBC)e!6A3}*O=sP@C^bluk z{T=ZT{CTyvGBR)bg`%kUSD>Mh`)GH1d;4fy6{=Dz@!+L})v=z;!3$kwLf#>-#F)`t zcI~LJ;j9)1<2i`b2_EjGRVnn*I7&0&f7{@uBGXaJENW?tRE|7hGd%~e*BKFQgpA0z zHrQ+7u)%HEkIBjRKB;&QW+(U5G1n1oF|X-oceRbn(cL!=qd`m%YWNqSR-(NL=SBUI&QH;3lPLf zEi7Ox_#(y6MoPfsLGb)LbSv|`@(l{WaNIdP+@d_lBL)$HybaIG54i>@fhweK?Vr z#P@DEOhH$*tdV(kPrStD*!^Q4!yHDby6#}rz^ajs>D%TNAvHDP(E}@$96))^J8i~3 zUkB>2#Lhf665~={L8oRvH+6AC2%l*h4|O%Wz&)p)Xl6{k?~w=t)Vu>Tl8ai_inD6t zi3m+J)}=y3lM_vXFrHW%|r5IN?$gPkaJovlB6|jpGQtZIn06w~Be;3I_)UBN>kOLxQ@M zM(fm^M&4ri_6TAY<{s51up2I&mcd`YmjV0kkdYg%uNknOW7^c7e$nkOLdY-*vc$Zh zb^BWYy!KMlh6X)V?S{^sNk>Sn!unz-0S+mQ!-34%{`98|?yYL^P<`D7XeQ2>LT>Gq z=1++;OWxfbH-P-u+q_h$P4GA78$W-Jn|yHNM3H&M6QXhAqhufAW~>U_WpTre5=G}2 zTI(Y&MNhGqPGQRemTw&4jokc(R4yr8v5mYYb-0^b+dvDrtN>t{00PP?#;jjqCGp<2 z4PB{Yli=w!6|u12i*w>zJ){+to-n}{1_-vA-SChYF*vwjXjB)=lDK&u=c9OC4_9V<4w?`2Idi2hJ`F5JF~zFj%{w@c~KB>PH{XRB$c?w298 z5ob{wp&pVa0050=FABOctrQ*h#*-vk@n`LW3TE-MIU0-yj#soqmO)%A*8&Bo5OIif z@vU)}40+4585IUv4`L9n7^iW+s>z-th>5@yTl5b7OML5Rafvn0SEc$Ot@WL0U&RU? znV3-$_`l1NaXmC&IrekBi)Wz9DB$lv9KU-6i<@N+V=mFA-T5(Q6N+-3iIgLB=5a!g zDsAHrg#B)~kj#k|bj7w8Y{!sXd=DNJ3u}}tS)=Hxg3R{tkN_eI#W^w%4_Kg${~mRj zh#bjiSg-z^K-Ln?-Rp-04elad$4!}B(IWf#9b`pr2um4Y`14avMtTK)YZb6f$cbe^!P z>Q5kDfXAYv1bR5<0YZ=#tJjtZpri^wqzXW!3P7X^K%@#lqzXW!3P7X^K%@#lii^Mv zW(;Cy5s|!52C^8F&Lu%qis2PKE~tZR)vAVRm!!p3r2 z(a^_erN&DRBA!g;I`npJN|@8~!je!LAd_WT#yaM+{hrT1S{6bb%dpREbqwYf>! z8u-k}_74EeMNF)C8wypRBMSd)HJ!S6)3RWK;&xfZ%kVQY{_T5B38Mp=;9h4*XSi2M zm6p>7(x*+glYA^6Gg0Pbx}SV7b}~pcyp&-Y`YD4JG+grwwKrr@1eWg7(j$Ov86PW2)T*yv>XK z0vhM{qN7v?D9HrI3G`G&MJS(S57a&f`5UNFdMjZ zN_O11-GZEru8IG)5wvZ8FHDLFfZLz_y%6MNlG+Hx+SfeQRM?7(HCo47p zhTs<6w+kKka2ml}{3q~3dB@{*KZ9dcu#;ly<|zf%n}qRlvQ4mQgx~mdQ#ezBb@_C5 z8Lsjad#L7Ox0FHR1B#F(Qre;ob`S~}l*`!7N_I`03?9ahtar?&)tQXxZASA###-eB zFw(O3bLbem8;%B+-(#q&A#mL3XK>2Ocsdb4*L!yOgkEe+HBhtcEby*60iJ2EZ+f5LQ7Rd6@%Qf(~{hgx3hf1i3xoW7f>cZ;dkA%EeY6g@#t2uL}HJuN51 ztoicDtkwVw?&F|4OnDtTtU~TD^t^wgaSq`;cXvD&j0YgMC!eY|-ME{oG+^I2SDU~! zdsJNpXV1mhP{jquRF`{!GKZhk#oX3@qna{bKvB0bg-^?ySRk}lEgmh=p5=6=#5FZz z$$&>6+%xuM9dS;m%^+cX-O zu+JuoX>PDzV~tJ}drkM_iqc-O3#-0o>z_4p%S6Q)#T0DE(lS=?^Jar226a1fX!6eY zT3cBP(~Zj-UcLI5${Eb2f(RMH^xdb>n<%Ckpc`YVmmS86aSS`-KWk#2L~zc8`vF{+ zF6nFx=I(Ab*zy-wY@OsruAI_(dSojBS>Xv9FSzQ0z}N15F%!5^2ln;56l>0=>qk^{ zr*_6a&VV3g)ero#AQJ#BjaNRL7L)6f!3+H130ld)C_FMGS@`*j{NT1Xudzp%-|<_L z_*Ed$m2rc4t|RJ-yZn0a#EDp%D%Ge0@(GC}Eho7as`mkeS+_MdY)KN74$eEsQy$+k z9E?s$Zj41b5y|IyRCxunpDZJ93NkR?LK^Sv& z5O)UV5j(#eNwCs;IJ9^{O+ zV!3r*57k3W{);>}#lAdY4Yc<#s2yghf%uk4z2{t?p}>#;yr&?&4;>fTO%B{#or$1> zN)BiM0)^Xt&a7d@M#1mZ^m9=QwmGvIjxx!}?+~O>a3qV&SoBG}J`2d6eMK86lL|WS z`L??nIc?h$*HKvZVV-t#HG?Z#Go??vXCcF#tTXGG<>KYlCxnbP; zu-^3)a1BEDHpGG8b_6FYQcHx{duocFG{S$VbwD-!R;0ug!qZS16tiWJovI1H>b)Q; z=55eLdTA&Lj?vjQnrbXO4ni16^lv)iZG&hpP2ccRZsg)jK3lF_j4Ox!?P0-|g%SXz zp9PDuMox_rzT_WR{P+0d;3IJTo#{i_`MdcYH>^lxlEJ$zwlA!F1IlJ_C|Kh^4tSeN zri#gWN4>@vgj)kcg}b#+^U3;ch2nzabx=I*9g$9{@;uB60JNY?5uW6!;{?aQ94vMf z0ItvN0P$uRJg(hOgHk8c8>-U#Z$`!n^%#@SgQBeQ^XQYAwlRO}+gN1+hjYv5gg|lf zu6&9i{r79B;LP>0M~xGUh9Z1mdChax7M;(6tqhqj5N8-=&ZAJ$B_8hUvSlz}M#AHI z-bi+?M|i(?Dboy?#7l?ikSh&vXFNRAL`UEMpLyFf6#VTsYX=fHztLn_B>L$f z&QVkKLAa;I7yK_rdx3P$e+i=6TQKJSMf#VAd6=m`?h9O}4B(u9 zAdLazDgIjjJX_lK9cK-%-mUC8w;;P|*a)wZ?T&LUE37HKHS(}bR<6kE=0th!T3WYn zy)g4x)fj*!imQ?-BFvv=iqp{L^IBO_heizyko4C2@-Lqe^Tr`5I(%>O;rfV#9Jxs5 zF7zZbh_hQ=lQ&CV6nQ2z9=c;j87jRlGU`)%4%))0a8N}>4dsJm0z(W12}*))U4fxoY}wJZ4LQ3XSc`okM5s29 z6o>A=!G>(VPaeaOTe;ZcbFVbj>h08PH()5F-JP$@9Nd1Pj%zGaYDszi{kS_rksNx- z&l3=kc%5G}L15iYWAO5z97wwxAF`(}d1x*%&}+Gm7l7XYL61Xfl#p_q z4ZyLftAB9yb<7;_Z!qu?qnge%Wb%%0nwBPlLlJbAf>TG;&QDz?0fwUJK{N(E#H?$B z_8c$=8s~gLyzs^4MiFbpd|P;7Isf|huPnFr?#W3`Sy%u&c!|gDXV)Eh#4T>vdc1Vl zGaqZUCWgF{-&Z7TahoZ=h7r`_>sazFY`$XyXlOxl16#fM|1e1u9kuvRmtj?z1c;aQ ztvm>FeLRoIePu!@*DD?2vC!Jj622_Dh4FY==$tHFj=so2U6}=^J*N{jffZ%>tvmbu zFUtoaybEi`lv{cYxFHu606~y*!l#iDlfG2zL=bo4O-$(i9yqQfh^B+eTEC4`bDc7I zjlK^GA6P7VfB5V3%OGpRCPqXq4`p)$#n;}S?i?kIG3(das`N-r& zVqs8wxS|Wio=bOCgqs)QoARvFPQJYupa@v~8Rc?kG>e{v|LJX^qE|vaNFejGb*D26&Yl`(rDn=ouoO+ab&E4Z{My@SyhLnD#2rHQO_L1}wW_ zxLeLbkJj)lh5%Ew@S_7LASRN_K_1ThS0-L05=x7?T9oqw7>uRF6_G!M-Nm)a9S>;5ak6z?|-B;h4wmTP=J2e2E~uohB9=0wQPc zR1jlc6xW&UCe66YF~N9Cjf;;QSfyi{WY=0uwMhJaY56^K0>s@EMXb-1Ye(|gM+N_} zcH62H1Qml?yFaN^MyqH+r;^DAOiA^**L=vCbR9U-9k&Q8hldR}^}s%jlW|s>hgJ`v zn6f*{Hc1nw6=Ukw*X;YwQ?zd+mYB5qGQD#Eb&g-C7+Be;;2052xr571tm@JI2fXBd zmD$=ycm$S4OHnT4cd$&h1@bA@E(NHiB6h823UN<>-PVpX6&hCyZDPteznuHPPtJN0 zyAMlXdGg5)a8 ziD&}iZx7!u4{QyFtNIp#jJQixmTda$?rhtxiVU&qGq4Z~ZN8dH8@lCLDS7%Z4>yjc zXWdxDHylikGk5;e-3UCLqj8dQ8Hx8TH@_Hgny=}AP9ERYuTE7wVEcmEJG*h_KtGZq zM0PQK6-FeoSo9rTYka@VUJyKOtFU;rUcyYn3?{R)xyNDYScb)eXX~t=fs}e=)q{LB ztW4KgZz_j}8*`{P=}&5a6a5jiP;_9wp&v8k_<9Kx7_Rkn01=2BMFAEa6)Xo&{qnIq zSt4)dp&Qd2g99n|m=oqqe_)20ABW7d0)yi@C>v}i#1gF2yPt=%IKf<>g@GE1L26ud zW`lQHy`BlutNO+EzmuMtxJE|*G^LaX8C<&m^`$$nW*xD~d{m4w9@zF7fj5I$PR{!wOPJT; z{g0y~#ub&w^v3_Atp&xgPG69nhJ)Kjvx*)VD{Uf605{SxFz%xkvdqJd)3cR&St)>> zvy9}zc%%@Ic@!U6{;9%! zvx=O?LlXa={PV4>y>(bz%d$Q^xLbhW1b25QxVyW%OR(VX5Zv9}-Gc;&;O-XOo%z_= zd!K#Iz2|rT`sP{B*jlT)yZWuSdY-B3N*((Y2~{eo4T|ja9dB%gS#F|2$kuspoo5qA zqlqxMgqFtbg2W;!e7{W%s7-uP*QGW;gKf}!bI$pJC6mEz3AK`~4tpb&ESbTo8_U;? z`lyZDf}bHfV0m$Hgl3bO`2ojypOfL!f|y;iKgPk(>Zq8QtS8lK5AJbey10#&cW%}L zk8bWd>y2Oe{XRCsqgqWI+w7NFMsGqN(B2s!Hy$M{My6_&Q?e{f{Z|1vS%~G?z6S%c zCog&I?J5v|D$`sP9Rf3IK9_hM{ztVqhxQ<6!}b#Js?+5QZEMN*+=_O6J_CIuRxa=R2`P*b zF`+>UDv@>31YJULK7zCp(fIZRJI_W~QkoXNC?xp5$r-Q7)g&LN)=g5g5D@WYf2Ka* zKt<+SYOEtGnQG)K=n#ugDFH$A13}$h`tgCL{Fy70Q_#?rCRb-DOX6xzK`6*PQ0EnTc0DF^r21v!5EmCT7G>CTHG7swgBp5q^YP}>APw+G})2vH_fdmCaXa>2T z;`^@9L0!>_CO=?w96T=(hdCum(Chdf_NJqv2nZJ!h=Yzn6t=EAQb|P;@arc2g2yMp zamY!+^tM(Qo{(g5%5%bvM>oWz5!xgzq20t8;1;*VsAwh`Nd*<(!}psjJROP<&T$ z`jGO_>6kU&HvCNJ`7u@{onxm6y)^2vr9}4XVHcJx17>MYjd)iM>%9{+yw9MG@ zsHP<5^#M1$ipJR&%?ibM(17(!GQbo~*$|RV2xj16u+mdbxXeQN)E2G^flO)L2d-Ut zH7Jn@$ft4+3@sY44h58c*L~jJQ9pnb?=j&74J6cNOzZ(co~W~?tDpth0_SuEY`zX7 z;?Lf7k<+^(LQ2h&VG%b}pK~VriXzTIZDcS&dnl!q^8r!|XO{yl-$xYp&C+W+2X?Q_ z>x>S}^5uk_K|6EjEE;C^${tBdG$$*C`qY@yo+L1N06SUSlz757xvH+u*%Qt?eUMNA zC3~(KLOY*Z8+c@)8IBEVK?cS^uO8Qt811XY9a)O##XB9iTg@ zfyYdI*-T_TPlJZwQc3DQEPaWg>pa-Yj(-HMx}DSz7qmf&a4k$cN@Lr0{sur?s?;cG zll$?=N5%kHini^{&j)1WG3mI9u{XZbYI+qqq!(S+dcvTJC9hQ0;J1aQqy6 z13{lL!D`JmNfEamu9{zz98vJ6_gy=6nM3Np4;7msZ`VX$8EWxzki^v&<3Xg+)UUfq z175d~DaLnCI<|AD%es>v&A|6@H2L_)R*%rgOLZ))6EDTJDQzpQPh46JYFw%Zi7(AJ z3GW+rA@PmGu{G3W3FF&VGN#(R3g;JiOtU#hlUd<^GB?YCoP5xS$PiVJun)u1?%bJp zeq$y&#yq;tU~X~Z7N!PkJyEyNcX2!V^fOXFhCcjSs0Yob-?eJE8<-ezqgX%Cx}Foy z#xA-RpXOB-3fm4DKjPB|dJJQ>?i1^|^NMh@r>t79$GoxA+$Joh5*XeMcH!G}3`_5e z+Tq>Jn|>S$b-s!)MJE5H-f!f~>3bGYXtMLXx38U>1+CV6X}2Snp}4IpF?Z>nTZ~Me zMJkUX?%G6U`DYGpGSIzCrrobdaC)+yey0nEY3MM(w%offCSU&tFL;y!kkhYRf$pJu6EePk8qU z)Fu9GtJ0$Aw~PsmF&7P>U=uUll`TsmsCf8|SJU+q(9bLr zM3Aqm9dRqF*^e?GHSo`CEf|K9{QFIc=rM~ZBDlc&u=bO=j3gvw8s)+6@uixK7Jrad z0o0~dIG!6?GCkk2eKE^PXFbs`D=~#ILF$Pl(c_ z9_2IgQ=Z)`#sIHFO@};T9Jr_+J~wy^a1m(oQ|Rwf-&HDzfr3h-prPalEDkw#4sGP_AQ-^? zrGr~J8-=LRFW$eBrjrA#mlb|w#2JP*LLf4y`@ZIbMeOA6*$}b=wWZx6yi8k*Bx(g{!ZsFMxjS5( z)BJmIVkLf~o*`8PdjUEp%J+2sJf}=aL+Xpc2NZsXRys1`@VcS#iP*<3LZh4licvzd zkz~Ig%}3}D5QkVNI4MG%cwPE1_N_5)Y9XW8P*?R$_|lI$1bGn ze`&)eNB@L|26srFV^gwUj?modWgEsIpivu`2H}6a+?%D!j}Gw1sKXO8G?EP&%U>M0 zcbWYogY*P1MZoUD)j6tCWPvs(nkHXAGN>*^G}%mH6nYYlVsu`^#0)0i?s-i{%A2XF zxy}X~FW5Gu5RooV-)^(N`zw0;5qN2;(SgJ;sObW@F;XiRA^s|71jX064OQ8CF#@tz zZF}+;y;qOAB(^8f3|2e2LZ}{PJ6xRt?^W2*B{_1a6iexHVo~zAoGJtBS<)NZAa6#KjfhLyFm%=c&)a z^g!9F*;$J*wSJtPqCrUSz1RIDaE(4O2xmIr1}JuX&o}FY%$2RgL>%`2#%lS%+pR&_ zJZajg7`LHHeGFe1<(K2$j_}6FUzeSXuKgq{0g34i<2Dd_-qesR>d`R?tK^RFyb-5j?Hdui*jt}RUl-<7!U**VJ z61>eKf4q1Ry1o&adI=145GM66iN5~0@id6O;KQTtxZA9Vgy+?tcAlN`0T@y#SRRb|Aq0>|x}a=VF?T(WGp8u#LC9ODP}hJT zGY7MX47%z=_S}hHbSpcRc5NsDya)V|B)JBTe*xN1Kh1hQyIIXj?$>h%#+{wOiO2|= zv>eAB($-aJd_#y4zS7N8+khXL_S8#udXG+i;jQmwu_N(3s)P? z)udiyF0ZsBZ9~D}*JXz1X4@tBg6y+3oE|TZAr$xeC~VU{$~PRLZwU$wl=RqW>CCQN zm`w(sfYpzY<|BgQxor>;N9 ziDs*2CiKxjxA8V)^#j&#bSPqI+pwqojAf&J8Yn#QnQd!Zl_y^iLX2`!l?(fd`}wtb zuAMzaiN{H9bWFg~Xh0)$9R&ATQTT;%W24~sI}bR#<6`WxpoCgj!A*BwAvEn4P}+K- z?3fu>1q&>Y1HiJMqL*2P*$NyaSr~em*-7>|EWGdF_rYiHEnQy1;w5rs2rck<478yZ ziO|(6TgW2lApY8#2`L}H01el~_Qu2&CJd6El~h^Fqb*>HDoYFvgSt&nk5iddIYt~e z@sMt)z2h-wy9R?e_)`N zSNgs?C?M90mT5~2hraQIZ7@y}|8Y+61_@J`7d${0)omyh-#Z7M#^M$(Vb;M4pbs|7 zu5wGL&rhi`Lf}f%E1IpyUR&89Vq zN72kA#09zsA~colsH!brBJ~T)n+jwZCMk)~s_35IdYbzbPcC5@-JNAB^rF1SS}0R# z6U-kl zL{yrPt+cNDH~uO(e#_!*jd{q8qO~8hluX^KXYSKjjSuQH!e8CLmaRtg)PA-cB<+Lq zG?1#@Izlp5M}#p0}?)5ma)OXPL+(v;+kLq&ct!S{L2%48vQYsqOPS`!NJSZfN!@E8kRo(k7D3Z<<>C>OlclsHg07%spe* zEd-y7E4IMbJ9^KBKc57pT`5Y}l~Dh+6XS(cc6A0TOS~4c~|PJWJ}utweV5wo~5Rt3_sy-Il}PPTVHRCvezP`L1joNdo|oKI)+!xoX`cj` z1&qQG4f(IKwUM&|MG>FvYzk=u>IYCDYOIY&*!krlaHekKrrv_Ic#LMN zXnwi`cdRrbHpn(hx;;+c7-L;hoF0qw%c2m=#szYPlIvobAi2#cvt&0*HD$rzduf}Zl5AWzOi zbXwlpc{_7`eeDEiA0_Ll)3i=cx#rd?CL0^J(7_#Hhyt;yqYk}$+}{oiQPM&ST`G0Q zWVd2Hzh@c?+{dt(U@X%NbU3`I35-$=#`*8gcBv%VhO*62n@NR z4kbp;mz76%VlLm)&5Zj%Q>mQLGI>HO%+w2?k<2`Yqh{$3|kbU18t*cHxTaFn48EMi9I zz0zIf07{Opd}PEltqXqY(}^#yDKt7oxXl6ug!-Vw{r8rzwf7R3^T#6)p@R#ID~T$; zG@s#THYn7fH%8W5f4pe%hrpsCV@{GWChNp1hezMC?AUOSv=dSivVQqBuC8?J!GF6v z2;~Z5l9~>Cz-Wtl=iKer^6;Vj1Q{L|+6w_r>qP?omrkZLN_)pj17rl&CWI>WnGa#+ zp7w{=bRhDEDz9@%n?F!48Ala6vR_ZR#u<@EzNW2AEPpCn-rR{Du*_Y2NNF!3JMB>C zoL0f@n&{kelDYNfGeLP9nj!MRjiU{;LnzpSw-Aq`ono?ahVlglTlN62pdU=tlRR!* zh^yf`JeG4i``eBSIWd8s;vSZ8KVR0se4#(J(#}Pqzf&4;H4u!TmXYMPc_%q#C58sB zoL@cp5Det{T9jGK`B4A8O6j>p)nTQfqk&8e;}m|BjOy-Bp`xAu%eo>iC8f zZRFl*_Or`lAjqfa+oB=4U$Uih`Oh0P-T3z7N|h)-e`(IReX$>FiRTBfo0PZ^ znm@NfnDopJZT&RE|sq(kVhQOb=dC;n&JH9CZt*QKJkqXf%GpP#JOS$DS}_EZc^ z#utG<#A%yT8|vukki1iG6e%Q47dgMc)NPbqRsY1%+wX})ypM6LKMNqkZaXguH)p^A zglOr*vJvtobziC?8dRm%TGcK>VPyO)6uGtg#TqD%mRt7I3PbTrx?kmO)eHRRbe)Tj z>EpCMy^N1pqNMrA$v`xEsGVbXrt7N_Di=joDm*{=*UqBdz#QX1EAt&}DW1B1=Oj7V zu&x&0+sSWZNnU1CgI1+f8G1R;2SM?@tKH2*PN3qZkJ`f>&Rps&)LIWj9J1(N)R>$S z*##8(3Md4MT)}UXyiZ5zD68(lM8Cw+f43BZGt|2aS-zxQ8(Hl=te3mOo_;R36#Ie? z)h62I^|3Xh;yni&b`+GiHKcQc+0jA zj%KK6iCVR~QPP(RJCQGD`yR<@l5J5nh&yk>9LcJH`K$^C!87@8am25WqhxrF4g;z_ z7L8g`j!)w_I36C9KJ__gZe(1J&k2M`U>K(GD6UMuNI;{nT*gc%XFU|?b83ulAS5W3 z9zrd7N$4sylIKzqx~-@xXkzSl2156ub6pbz_Nffjzt9tfa6UTyveP{G*MyC+=aCK3 z{JPh(^}Rx_^_C*(#=ec>1?=KO6=ASrV@A>b8$bfUWad&iR?CA-TIrB!W3;y0lYzQN z3^j4gb2}}RDXBX<;4nc$b?XR@xcafxTbW7r%tE0>1#Y21$@z1^6$nIoPv54-eeoIF zG@fj8qRmzpl&FBN=xVL-b_WFj9z}SsWYA1h&M>A4vm}P2vkzhxEJIZUV$2)=9IcW5 zf+2B1b}W{aNnBVEf6 zoafzTAAa1|29-`>AS%)6h7}(n=<=An@3Q~NrRaT&toZ8#g_n~7ru94U=#NS|xwJ#5 z87);vP~J>Q3>7!cW$oe~=|*M`Y~1Awy_<-$wwqrW+-IK=%bpocRr^0%-O~hE5+R%0 z;Ri%c@v8kQ;hLP`?Ul{_Vfmo!5|UK0(_^MkFLM%+gX&isulyrK&H>XTQm2^i8yxqY zt8jIGwCm!a*0(uZe4AD2NVzq%Q9kx(k@Yms!mkNvkAE>h;z=Bj*X{r+EbFy47gyDSW0jXe; z!h~i`q@*!odwFAYs{OQ9ld`^a@V0vkB)E!0r)(#%P%E85FRN55hOAyvJ#tJDaG=@9 ziD{}dQC>cH@?%-5mzV`0poJATw+mMstddah8^8AIQ*ZuQAG;9v>SC z24kc(PScxmI&y9L^WvlYpNU-@&r(p8|kKYoFqo9@iNB0G1sUuLdyE` z!JcA-pgx}>e*`L*t(9bNJVr=9(IECCkCwAGd$gEz7|?8QSZ_Jm2DQvaOv^JZSTKuu zwr$)>PAL*ZBN+p*f?#$op|xqH4!pXw~EB8@(|#^9=c(DRUi?7Y8fGaR0gg z?lwokHW6C>hv;6t@1cn_h*glLx?=W>={>%U8a2{hHFSd6AK8tTq;sP`B@+~22U2H$ z#C)04lUntRq$M@<5V^30q`kF9`$?oua`uWN&zhnU6hLN*SrI(KSMSJbV-0}^3X`DANdE9e!{YZ{?f5ua5Gcw-Rf~GD-r5O zf0h{y(D*6YrVdUq$#1(~%ElN3SkVz2IJ{6P@yWW8HUqURW!Q;$UmQT!!q-4%& zs_=ceAPdLSAW7yvIg8iv5Z~+b;j!mwR3Oc1tSGETB=58mb{NK%EZxZ3Z)?^?%nlW5 z1`=9^$JXp_ehurpglZ=GI<83h*!%!H=X`eA^)MxYSNEnL8d$|?I9b$c>Y(6y!LL|W zWRCE-rqlD)o-ulwrG_PM2_-DwY4X=P(j1OEgCB86)BezAX3dT)B9UXC&}!P4{lzA( z9>k7oh$1rwWT)o$;#R)uT^(hRAJ3T!Qj{;-bwZnhn_dkox1Yaj0;0i>%~fze-(#q{ zH+FsD)Z`Y%u1W@whk3GkG?UI|!PIgyI%HEB`_6}}wM+~Ahc44--I@NlJ8 z!3<&?HcwsiMfs*rGB7>Fy}L~Fol#tRs2m=SQED4X|MjBf!p}AHeNEM;h|G5SCQavf zwX9+?6FU=;^C5RH>q|n10t@rUq+DK81|MZnF8j|C6@V1Ca}4AtHHC=!rI-=G=f@kYc~J ztYW!aPXw#BuE+8LB>}U2Ni?t1^Y_nJUxA3IfFBf@OwXfXy0hLtJuN!Qn;t9$iS5RV z1fTG($TP5*!8qZ;RiDsomyHL)(dxfKAloYm+{|g=<+I{r3!G2*z}@OY^v(8VAtq1f zMT2ag89ZXons`mDWU49kzE}3hPL?Y&sDT_bzZ0MYe7)q4Nwc$8AALZ~)!fc>$Xq{v zn-u1cH}+qktjJJbGPxnv-C4wi#=(7IBqx*femFoM;31A;6TwOQu#f1i%9NJ$n zfdfK&G>z`ongA>Xb&Xxc+)YY#&<@<}3E3vC$Uqzrp&g$$QZVdQ-bnIIGV|0RP#IOY_R z43+RqwrNGPjto+>=81OOO`rzBRQ)?R(HZ<8#xQ%os(+d_Ja-JVE!>@5I0;NI$#g`o|KBUy^)TAKf9 zFLRRNF`&KWCMmn+fcS7N0rdMDborP|GmSkADn;=U)(h@!f6@!g$FM`lPmwSL=(OT& z-K#97Z|aS>Is!9}`>iRmUc;s0IO59%`;4Dy5`N7v<_CP$kq2X?!`&?G4I2PBa@S;S zzWz$QK*#xh#Rv^jZ4WZnj-_^gO2>^HY>r?+1-;yi&u6+(#Ot>}6wK=j^7+AeJ4K0G zH6E=RH@TJX^UdN&3%5Y2_61ae(19B4cbLOm123lnCl0MidE$tZT@ed{cRrY&EcCU8 zy*G%hb5W44M>9IlVx0%N4KoNxGFcJZMtsvpwbJF@X&|ql`S4M_9$XrVt`X5(xZVZA zY=(VgoLuHSo9-j6QloJ~3*iD}RSaf&<`*|4m>)`8I8d{iW%QB?Hj~O|dv{SSCC=Sv z`9^1Qk}|Ril53zq0F+%-si#p|LupTTx8eQK*S#{dJWW+zt=XP#(B^#2HU}KxP3?JG z>@=%hJRw-vwUr6;w~wDd^$(m@7ww;MWbc*cO96<*;zAv7N{M}!<~ypRnR5=*`nXJ8 z+)%ce^F1p+(L0uQ^7hI&{53tIG5hUyWnifh_m+nZUq%i;&{Kjf1+6k+OVCE|Lw@>R zPdw?yhjkE78Qw@gdy4n+0Y*^cGvs{am^i(LF9D6-}EGyaJwwCI98pDQ;-{@U76rVv~mQiv|zz* z#MBjN8yC#$*rW&^VOKyYr&F*NIr4^ zD=29{-D@HkKc7v+El=@P494XA$n~h;f%OR zq*KZ1H65jpdKvhz7W#(U%Jc9> zGfTgKP+B9X@z#4i*3O1ch3r-6Fdmk!2y!uQbv8CW(@9hgA4rewdBN{dh792n4Fm~U zT3VyKvGv9K=y}8NEl#fR9j{`+5_iZF!G9X}Rs^*v=X|8E5R+LJmFb1G%2MAlnvRDs zqfExCt*#5sr^YeeUrgR?Yo71;tYr_)vvOMyU%WP_wS`ZH!?bLx1_}3E2u(hvyCu1B z)}uW1($NclPJ8awh`yrUsea+|6kRhe5ox&zKbcvz!_ixi+YTKS*}){JDOf%y>3o-d zyDrg|IFd$1e@DeO+EH<|PK)6ZQuyqt_}s=@WL8M5iFjSV(i^Q=USnOZZ6_6a9Ca-| zMBvh?BjT5-1pJ_hla7B*j+qf%O5ssV@*FtTRXV6AjmY`w>&(6_JSxV?cKnP5BzS0U zKz8&%-d;iHA{d&BjM#Jvt8DlVXVTZ)+At}HJKH^RSB(hsi6`t1_1MZvIx7auLCOk3k&S{SJp2cvY&t{o~2Q2&jj@ zqlBWjeSk9J3#6F#|CwMaTofn+EmG&}n#WP-T099KHhjT7;&>J6{MjlprzuYR zPkV`(c6T!cMiq%*3D7&veKgeLRCK3ly#cM7Ys$Onkf0?)>aMVZr2$svYO8A~CA@AV zKX~t*oMcb%CEeCjqa}jKpB*D5DWby2ohlea7!7_^Y+R-V^G|qiMW$VZdC*g*tbLbg zPbWMxW0=7`36Ft`=?29sf`19}8&eVeXbgb+oMrZvU^+a{X_Oyp_ z`{pdOIRzoxrA?E>xs^`H#I>QB074~?40`(`Sk5g^5UicA;2hsgK^G(im&fe=Dqika zj>1BY#mhZ^nc>gwdu<#-fSl8>i=JYzd+mHO7EZ9uI9bW}VEs0Uu0Ad&a1MPa!%RAr zzp08CgT{IPBG09@zi!{iX+T}vJB(1>N2r9N!K`l`$?R6wUj_}ws?3-7aO?)Bcq1iT zhVXgbm_IRC6GYSqx23sK3e-z96JqE`BiU2glad4jfXt29ttSMIzY*}9@6Q4S8Wo>- z-`Z1x{5B46g>{d^ZAAy~uqi)$`#~yTw%!bcgKX@K1)(F|kBR_NwD{{4Q#+eIZ{o;h zM=1#%!^V!>GV4@xdnef_fU5~lVg z{65r8-3XI`suv>@eiA=HlQAudw;TXJ-J!%{AO>Hqg73Cvu)`bH+RlZRyjOV9Y zOFd_%N#xHEJ`qtEs#QsR>?P)yAw7Vwcn3_dxL!0T$_AKQ6seWu;EH_lC&^E`t6j2a zhkjZiSp^TR?Q!ZH91>app0pd`Phx=|K&#)&e?BCHbm1x^2`ny4D9|$;_cOQpGnx-g z90XV=`^o(RAlB~6z!yLZ7rxiAGhvc5e$>7i%p8G`&asMks6C{RBF(du*`+lGqwi+y z!)~|omo0GJ$){810q7GrgM{aR5y4hUCXKJO1W0#&F$=@`N`UK|BCB*a>rCrFsh$ci z4Hd6E5yjmn?51WmEh#JH9#y05_%Y{!J-}{pCIPeIC%6z1h4FhTb<*2epBb8igI06@!z=_!rSHe(o7ZN@w<|mx_+2 zk{JsnKE-a^7lH=0Hg-edo8I!%7H|NvQQMd+ zF(P8rQFs#WD^Y11I4H%HE4N}MXlM!H6?0wh_HY8}gz(Boqj-(NKR}J2kb4b1g`Z$m zX)`RdvJM@`m?0dxgw+_r3&jclF`Z_uum-2@O5m3!R$>G16E*MbaZy;P$RK~nG_~TV z!}p&kEQ9US9LoZkZs!G)!R|Md*5LTb8zjV4F`Rv`t-N)B`){WH#eD5kD@5gGlk~?; ziI#Rw3%@m`rb6yw6xo0FJzgh_rOEO<;5Y7b&A=fP2oLEC<72xgyt zMbs<9NBd4|;z~~SLk#I^IxlvbG`#6}&Pd%*3Hw*!N;~_jR|EK9TQ5jZIaSOr(zhcr z%(wU6Fq$`H38pk&JGRwZvotF_^quR5&6}ksP|T?V5+EiXVrrC8Vos;MO^>fj+H$K~ zV(c`e^tt!baRZ7Dyg4QWsjNJCRU&Umc^zFWrZzkBb16l!-@dnVNP+9lY1Hp-`SVDN zt1CLGLO`rNP`Tbt#xYN+w~iLJ)=@OU%gy;Bk@8Th8dzQXbeAP9WM`1tN`27b?)l(w zCmwQwB;9opZkA|QkiJ7EdS`Gmw`MMeNX^|2DLtVa26zqVe90ZI|wRGB1MnnBVZ%Q?5}bmms{EIELDVP`)OU%)gi00fxTAP6a3pjdAZO0`!gs=ba z1D`&r*RgCrX_$>8pw#o=3}sZ-2s=bun52$7-_&k^ZC9sX=?1NgP(~A`19YF%xMTgt zntxV{d2!)$?VA&9227hgN|p)_GJm+}n}jHQhE;z$cpK14AbIn7OG{-k&Y!6wqC+VR zp=(Mbeb}XaxzV()+=zlmC8ybJl~;44_yA`AtA|OI*hF6UP}doWc$ZU7;iC6*+nGe& zZh0Mx4Wa0;vJl~5ZGbbQbs9UoN5IODmghhO*DHwzsl&z`#j+g*1EF3Q4k88wpE6Zp zL~D`4p>0d;NpSJA;;t#DR^07giW}??WNE%@-57+*B3tVHc3Ax-gOi7 zVN#~BPH97sQw_+e12fc1Q%{4xu4p-?yFlga8_5UmG~e!`$psL%=*uN@<%_Pgr@g;D3@!rz@(GWw{U8+pj13@A@4SP5K*c|yx6D5d9C-x- zzfD!-pB~)ly;k2(0)f{Z+CE0FVL*xZQtI@hKC%3|uQ5Qe_kU)AFK;opz}t;y{)d=( zJs|L&FWe^nTZ+b^S8J{r3?s5D2{Rh68c}312r}s$cBJ?OHc_fs;V) zw;kX{-F=<+888ND2i(~VdFp=LIM3eeKJs>Y{rP(SdjIh0=F=Vj@K?&0?=MI%8&~`% z{MSB(uglLQZ$WSQ&)JXF&l|hlK;YhUEAaU3d`sva6CuNcJAGrHe-ZcqG|B>d z;%q?jeS^D$y1{ufyO7OmLN!>$xa~gm3GxmF%DrLT4ZML}f@!&~Ca1jlylgy+-2$&R z4uFk5kHD~Bawk4J-6L;#Koel|>&z}bHfUoT@F)v6P)ek^J;0S*k(CoGD^#vFK1YQ!qV%+(h@e^fN=^gPmc|yM> z0>j>Rp5q@E9w$QgalAbevfuN_*1-M<<6HvD^F8s;4Q4k2mtGfdrVq|vd=5GXeHwr( z`^iAHCq0w%r|xauBcGpFGuQ6Gjklq-^w(-2(jDJ+cdbt;@aSmZ*a^7sy6_DAO8){p z0&YGx0@v;$fsMeOw@*Ej_jXVGZ{1s8YkYEnw{Jr$=`&70r!2#I1f<4Er*WX1oS5CB z0$N*BJ4D}0Y>%xI>z~=0+MymAXFHN8M7tOwv!F$$$OjTa3nKsPNeVHHmEeTF9XIu# z@BVoA87?Z6%p3F~xysLS+|L#3R-=Y)hp(IsV%2QUw5L7tsbUesAzLLK6i)`d(n@o_ zvC>NIv^0OiSwV|I<*&v&RNue-eTucBRIyMpkxKdfMZrtp*?W)%e8WVIJlIp8?3t>S zhq(YJHTR^B^wi_tAG3|?oAWf*Oi@_J#>*f=U=@R;PyTHav8tdpz4*VorQJj zn|@NZdodZY2>`(SdUuBZ`vKBBabNqx;XibOQuCMK^wjizYtpjF=&e6m9jTIof9R39 zQ*m^IELJU#|IWvN`X9|i{(G@7x`I|c}>psw#>J@(*;j|&h;PTO2^kK%T0AlJ)C^Z!{<~Z`jHZb^;rWIg_r`4 z$dJSY#8~=0)(?L7O*V82pVMz4F&K+OSCOY95zLJ;4T>R`t=I%I{Jnj9g{%wmAojn& zG;ykQ0+d^fT$6~Qb4P3Lpy)z=+2inaL8^lj$a|k@%$E7RUxARpej<|Mz!XT#q zuo!SI8E%jCslNm4Z}S;{fG9jM{1XiS-jjbv-G9J=hj|BteMx0_D;v89cZAyX?*YD> zAWDt5FJ_1g$c--LKgL;{j#mlO`xpNIx;3E1B`e}DDgTMbf4bnxT5-pT_=i=z!)rjO z@Yr@5yC$6vh)!cSnHh_?zi)c^2Nkev!2OpQ`D!da0{UMOK@%4GEdk;i;|C_+Ix-?r z`H#Z=|JS9_3b!iWQ-Ob}YYo(2jO~zT473I1!jhunwe24``Y82{9LD~hSFh6a-MAE{ zeap3i7N2eI4!rZ>UZ#t(i{?GrzwP*M=!^p!F3SHzi&j{*;_cJtIeLS!FaJV~t!Zo~ z^3wSqOeKh%Q2fxULKb@ZwpK%(=)btfRGUPn~_qN(@c873Ww`y!$2&&}`QV6PnAMf|1)*dvp7WBbi@ z>8aVpqH&d=XnM{x^#uLwXgAQIp8f5^NJw)IX#UMYO9!IRtMk;mw!k-S(vrWm`H(vL{su@et+fE`(x1*` zT?Rd`iDTkaBx?4pca{%Pm1Iaopv(g-diW0>(_HSh%J!%JhxyOnDG4?xUy8Afvqa4S z>krppP5UVIx8M5P=O9#@&2LI2!ws&$G;XJ>6dcmGK&b=|L)=c(bT`Y z+5e5+>`N%Gra%I`@v-sWt(YZ__8v@1fa{5v3BQrq_H_QscW2mri+m9N_3o>zG#B*5 zm;RWW|1Iy&^})OPqN|KD7k7XB$r$$P|9E>vC}HcrnmfSRHR40z`a|M;V}8m1KUA3j z(nI593cJit5Yvd{%`-@v^^dXqZ8|-{yDy@DVg2tV+_g=abARxA8373or+%(Vgr~+dR5yPlA+C z!CkELKK;g)!w(ZO*sNRt%j;=ac?Gn0mtk-%2- z3HWZDGjSQ3dYbGddEdq*y8L>bsu`QYdlEs~?GKU|NCe@eTj=r2%1{9bVNI-NTP3@0 zinD=qcv`#11)$`0OWOTP3lJxfZ?3VrpEuOFs#Tp`#>1vUwv6pv%Z{N}t@HLZ(e(@f z>0W$YGF&8Iv+@>b@S}#6p4TpvXS(>*7Eq}2JRHR+kFJxDX>dF7M+VBO=1p;0)!W&DL z{F)vq=1HX`O0vRd4|k6FTsT{b`q46^deDLxX?$!yY?qR1Lf%}x&yzz#xQ3=sS3E@Y zP1L3l?tH63Qcf>A* z6hc^vz*GVuE7?1yc1_pX#O0aJ$g26w6BCz)b0g};;;&dbmE4P|B31(S&KBu}+?S9- zAgtI(^)$Sk4J(u!Mp>-B*a(oqIIrBOOE@bbN#Qa^4}-UGeoJa;`HuFc;ji3LBmN%{ z+%USEVEM}or^q5oRTxtJv@hywvQ05h&|EtxAqTasqawr1^+(Kvg`eNcuKP8FJwC>X zxK>?Q5d3P^;$}3DvqAM3gI%qL#e5}tqo5}g5|T%S#B+I|>*Ya(&rbWAzgM=u#uJLZ z^^$PC*LIu(wlNJtz9^p6ZgJc+vSlB@;7{J}#7{P-6ohq61@g*dI+Vp)f1?T@6EO)n zb1Tzy>4$^3{v7MWQLp7?E2Xh+S8SXP=0N+Q(5~|(G2(sG?MUW{GFgcQaCEfQkiA`V zK}q=!3=k%hjqD{rjvf1 z&PyjJIe+Y(gPnCw_S*Yf-!IYiEijf89S2@NfIL$0k0!YK)JC;6dO$7Q19U^TBpaK+ zaW{-V?;lq4R|rMAygxEc{%$s4%RRZ=YbIu|g!@z{Z4aDMG$C(R!L}A(ME71te+5es zjkG!b?DSWHCFVap11LcPRgBiE(kfM4fWGdl7;q6ha6nOzjZIuxZjY${Cn55`(J5}c zj`qQ~r#w?zQ^?HWSI+{&25ZxX{BkMi$BxL_D26S>{U+G*CXT_&{XM;41%h&Ntsuef z!j6c9T~bPegRP6a>`8c3lHnB=N?HtAsKfJQ3=&CP?ab&p|qudlN<{ST?k|95FD zsc#A4u$0OzhzQW9ZRHUx(4K%rv=8F3VDN0lA=vvlku$K z3c4kN7CU!3VhYbCvJ*&+bj^^Osaio*lT}bC&GP%4QvJI2x=JfT=YVXJ{OxjG>O3w| zR>U`qBlv3n{mTLQe1$Op(#ngd-Q6u7OFuCkz>YqEjytZLJKPxKix2iIK>guZOh+(4 z0oU$30U)cv=Q`-|n*dN)r@B3+x;-TWSySWY(?TwPLbYXf&`;LRx-OUW%Kk$ubvZ`~ zPO34s)rUQaaSyCkZHin$S{*qXQuK=wZF2?!eb3o$AGz0 zgouzS7a3@s0h4*@mLfA|iSYQgCzs(naG!lw?|Ec#PQ@WFC@KvaIlw1X!8?qL^}GhC zD-?lVqn?FNI+%_%cfrbxiNcXzK%OB?WHOyzwXnUVySFWgBoJy{WXAx^sT#>_9*AzJ z@^d@Qjh-DO9NRvP4h+h+-gWaAA+9Qy-a{b(jN+Hg`-+Ndst>=&SWa*SxS06*6-lhV zhz+c&J+NsmYOL;UU@YsiLZ4g31t!PXASsX z&*ZbidlDD)U;U=q%_J7?1am2{GDRCpWy-rYg_~FCb;X!h)KXMvbg0Boir&4njOPo- zo~i7LLs_w|!4K1*Ml+iQqZ=sy*~@U@%vk2%*o1YpkJ4AQ`*n03TJipm$9<1Se#io; z?b)#Y#xF5e;^yF_4ytGrK$I!*lq6|x;HKSz$)m3!m6uZpf8Mg&&Dm#3u=7}K{g-f^ zxE$MG?=wh4L%i!LdMz$$9EW!N&ph}QDo=Iz^TFg``R`i_3%^3O1Kx{zQVm&@fr}#U zHESUYr3wfA3z^}GraUz+_&36c-0)o?xNF%x^l-ef6kBW(_+MnHc8(+NC-Mn={4*}z zssk@2aO8uvQ`!~tO^gI=lGuQO#fW>X#c)lKyY3AdYY4kILc8L)fKW?MKDS8Ka(N7a zzc(0_AX$s*44nim)LKQRI<~SjEF~oXFb7TO$VAxA+Kj8B6 zZec9k8Mp%N1U3tHcaV2n!JL$T%Rjt5heu$#A-0Zt{>kJ~X*!I&VJ2kVjMiGK&DAzq z%Pq9l+Gx$yky^{c)z(JK&Gr8W8x~^;G+%OY&r4b%GRj4++xzzxugOeDiC!+3d3Z%I zfN-V*{;KB{k9Cws)Wh0fp|a*xi;E>vkM%afgQ4Ky}NCW{OdKG9#@igW3MVHc%g;$-URZB9jkQyNm}e@ zRZ-aDD&lny1gvC;oOc)D7GTq$XcBz98;1o5T)*xN{F3@BoP%#Jg2OADMkD$n&&0L; z5aPPJ>}p+EB2@LnS`cs9hC8&Zb87NhxA@oEf+=|LaQ8W%hqnoA323f#7db37&ut|L zfb91?GU8`ANgh3v)7T}$#E0<3$QFq4*T7AT1Z`L9i4#7JNLIS-PI5mxNfCfUOxRg! zU|E9^9+k}Yv3`_byQJTzZ_N;y@|lSw>_F>kDkpskZDXN^rJ8MPZPWu91vHt<`<(UGPlK%JAsk8|)tqSiRonF+HT#7vi6WI`ieZMOtBdsmNY3nDmV z+;SRSb#EBcr=PQJ#O)vYB1H)^u5?Ed%9BiiC9qEoQh)8!Ib-gAqC=isB9~wz`FAt! z9a+5{I#vk=bZ7*dCd0T5$8ZTUZ_(B>kvjDM=Y=)5Z)>O<{s()^ZBm)pU3ejD+mh+mkSrKrx zf|2^`vsMHP3;UU7-s`4x(Fhn2XimGTXidcn_=enxbw-V&a4@4C%|8ffW7>7DBXh5$ zQDpHixHto2Kc~I>Fsf>GQcWl)3s~n80T(L(*5CW)0X-5*m`}s36*|F8DV9xdV`_zb zE04k$ev(}`*NP=V7p$DwjKlV*Ysfr3Qg3S&2p{4FE!nsJRQZ~~W}f}e;uGR2sdsxe zJhB|zy*q3`%e(qa`)!f;mf)_}Eqr!y_-8``GkjlON~1VkvEB z&`5SQ0Z9qgAU$CaSbgjvF1$LqwZQaS*(5QRoudrCuKWVj`T!uY_7d@8g8}@&%~wz# z5Y%Fc7?xpkA!250M2N>?HEBz|NW60><$i~u6nQ|6ur1er?IXN9P}B*y=@#6nS0+f@ ze1!<{P`oN-u?LB77Nr#PcL2ios1Y{h`!2tRw)+d({ny=q+jmNYh#N2BA?}Hnr7d?L z@y#QYqh@O;hi;R@?8tXreD>`P=5_k6cmOwV76}p8p2mXQ5idxaZh~SPhbc$QS5Wrd zq=wj$Z@KyZu-94C7`WsBT)Updgw`)dJb&7kO)W_^d~HZ&foDnKg_PTWHV0#SoST6hN7DC*Baq z!PWb99XHikE%?TI`ji;3Kk>vPeqVUG4nLQJ%v%AtP{=SEXm~fvb_L2cu^f_(+`eD1 zf_K70u~@*59(}(2;i7~7T#=S1%!RV4KJ9gKtB+D)0rijZHS;X3nXB|g6w4x(a=SwBkmJO$ ztR?Y;7Pv(KChb+RY|J#uBt@^PfK?i3;J+|Vr$INBVD1>mRJdaOwn7g)-DGdO(3Tgk z{}zU}c$4TDke3mw1FI1}BpY-s(zqjbek7zB5@p8Myvsrd=_ACCsmB%TZV&c0Jp%G= zDu~#{cgsBXUjf5z^0~Qayv7$!5a%8O(FI^?Fa3aMKmcyherpl=#TsW|bQxqpPHEs{ zSxhP;R*0=TJnT9ls$V2soS0O)fhY7*wrC4+@SD3m>@089VNAD4)%UwFVEd~FP0YDQSdvYm6zjIVfH zx7oOp42m0&1Q}$nq8u4~pi;4lw}H>%!JYF|Sbe36s4!OwE>o+tTIi&`7by=>Ze#cF zXU|n!KLS362AYRMsTRKZ*a8dQ==v}4wMPBZHB=(e<01%~8RByTltLaphio+EfjCqs zl{>M{8Oj?OsbFaVUG&Brz43p|$RK73t;K{!lLog1!T>#zj3>@XJsgX_-VjTA@G=(l z*oNCcSgIY7VS>x^?!Z;bo&CUXO~>p(99`QaB+pWLUi`>0RVTs~zH!Rlqg?xG+r(`2mO|-Fw5Zz)8muxSYG`K)#T+gf zRnW^vYW3hNBFrU(Qvztg-RjKW(%Z~R>DXRA|9G=)Z?X|2V03OY1{LWYM#F>#X)ml}j~leZlv!cwAvfFlnDJ$?Om!+N>H+?w0^o#47abnElh z{q^<$OQiesC_4n_2Yb)8sZ7A-kcFlRr4y50*p5uKgm_Koi9if$F?R2YeXrRWb93Kq z;Cc;{oONRKS^J0RN@(8BBDrN@H;uND9|&>*U6G^9QCrsr>4>xdKVY=VKH*HcFgeL~ z{Sru{E;q9f@uF1Tx^r7ZWX;hi;b8nm@TjOjrkOMy;k`o(b_ekYA!V}Tc31*hcYGz) z3_Y}XVZ>P^^8wRs7aD9*sr@x;0h*AB@WSfNe5|bK=@?oFC9p$iqQ-6XhK?XO6;ZE` zZHVa!i0!2e0jxwO+xShGTPoy_-!AXhe|1HF_Fy1)__IR?*lv4(3NzV%{JpayqIPZj z;!5pgE7cs3=nK@`PQ2H4$1C1bG5MV5wx;{be;8Q#wf|{9a?9LD0pt9RjZ`!<3P*H+{qGyKRSJEH=O$D?29k-l zi(dKCockuiIRrknG**;eeV+q$+fn6YAC#c<&cF{1=xItlcb8``*^Hh}C>W>#00pmP z<8;>}9Sqo~GV;KA;1N-NZul#R*92SGl?^9@;pJS(>J2K`EXNt7lSGW=30iNZ9wnMoPSfI1&`VtP9x!_wPk38NYz&_SS)i zuhci6_!Ru@(qJlDDYPhXyRb_k7&I$4PN3Dl(__PZ6V%)o$4-R|gLgb_oe)&(--TD; zy{sEMeZ_>t%b504Qg3vCMtztPifJ4?jSk(%S-`-lc*6VI9i9=utBc8S9aVo-Haq7R zY)I9T%M*Y;#>5NBBTO~M+@w|jx!we}N>-ft2jjR3i$zN(HpTTOSL!656b8Y6!D_?d zB(n3-!cKW3p~0O0mVxpb9mX|p*S;1>ZvTC1#RPA}&I;RJl8@2Wb1Wap3?mZxh~Cp} zTepG=1Di)pA+D>k`x=6-4|vdBa2e8%xZ>*e(2QLQ#+?a-7ysR??g{tYxgYmX^4!Kk zVA-F|No#BkjV4gq@n1m*#*+yp0Z`Cdj$4B+P)2Ms2j`2tk=kG%ais_J~*o=h@f<7en24J1e!QcT?m#jpj^<`7m+ifIeO$fDszJ1fFX z1BfWTg2{F@!h*>;tBwLeJ@C_hWCij(a>lWq_u21y1^hD z%t@y)HI;3KUR*fu`uu-n7+s!R7NMyVuN%y(L7&by}I%#G8378OSqdD1*SYQ1 z`@P4LVD{R$pm4GdNd!$4EW}R_U~8cm+s?>U`9T^jB}nca6%mT8lwccqsx4b{>KjU! z?RR?PB{b6R^J6qM0Mq~Ig}aRQ{j+&U#s_P~bOf&RHDAoA(A$t5Tn0TghS5fE(m<&# zQX{7d8S0556^rRen##OjApqGxIRwR%8oZVxD>JK|yIi%)4A?~EG+XayEbhjOa29Q1 zc>;Qch+u$$=Ef}0yp18kuL*8WM%{uSxKJ3ED~E!(ZicX;?00uEeFWl*TA8A?Flaxa z4+2q!ZW^qCVaf?2cJ68Fh5n)?a{3V<1>JCuFlwwstMIj!y>}n;h+y(yAIDl%M>+O% z653=CqzGY^;0``1ZvW2)z37qM=Hpf2F(|1HbV1oN3CLX-jB`m2P!+g1p4nk|Z^Kyq z2zvK1;W+9gl$4bFQi#vsKx3ixw2%HD(-~};ow=1$O`d3^fGwgURW zgfL2HVB<@1zfYd^JfYy@~g<_ssJMMIWKRf0Nk%94+nE|r; z8vu82Ds24Z2?(<OHevt@F<6O02R0t0Fb+?M7zTzP!|6Y_hR8c-VKX%_TKzsqV{ z^c}b}emu^3!BB(Gta2&CX0#GdJ~2SNxy4U0CS_Ox@gCnXTkJ%3Zr@?u;%xeDyO^#s z-DB63?#Aj$@6|Ly$`K1fN1;^;??bN(Vt^gYJmud=fRI9L4{hb=VK zh+G5W0YcY0{t%!TH#EV$#o{Q+rzcO$49uXY2sPrm&%~u2k5SKByaOC)OgZ-U%JB=+ zK^Bu}x}{q*$SDG9Ww7-zJ)%G+164UvaPHL&B%q#onYr(Ag|RO=7%@H6!P+M`iYg)s zI}pA?=S1(oTUD=37IR|h2@oYnbf|z_*?E*VJNYp#m~t+7`ltD$)6>p^fOBpNE}t#x z`9-JF1}yqGk7KK>&aTsQff|i9-O%{Bq*0tGR9;2X1ea%-8g1D?A z)0nB1MwUJ*ZQ`+0~tn9ayKd$uf?!5+TC=eGe-DQKr0BrCQx^}NWWsB*>Hz8QK2pijiCkQamLNl3e?@wZhr z7%5xCbIDVrxc$aj*xb_64YV1ofvmZ#D!F2V-#*M98j&I{e)*WHbBn%RRLTuO6>Szn zP>H{MFAY`S0BWr76%WLZI(FDl;DKHt`RY?Wirwh9f5Kr1jew9}CLcxe{;Xe(Z9ykA zpdVcL?S#eR$Ro;Lk%V}*#D`^k=ya|3udT2F1pSK@?3UJ#<&8`j=;V~kOs~yz2}1#L zwfqr;*T8=L9w9$}>12D8a-dxvj;g>;2A`o5#GdVPs~uYguf%iD)xTzHNR{ooU_95v zlPnh+wAQIeHbCRn&n61MAx|XwRr+2lA70bO7~ibuVj zB~(AZo_%vT9(CMK9?$TxG}i#@B{8DgfcuHTzgr+CYFRD@;0p(VjZL~9k@WfI6!6m> zTCd=+^qIkjUG?Yiw1U8iA~70=PF_W-afi-6wo7X| z&kL|2MA|slyx@C-$_WD8iAMCbt~*C?P?BpFh6Bf8+`X}32W9T*Wnu^Gai<#$o{ud~ zt$+^mQXKyJ=AY(J{f!q&bE>8sR5gxC=>P(5q2Zcr*U}wf$;3vw27y;x!564J z5x(n-N!ENG>7iPIWibOeXBpI?6Rzeu!LmU=KG@!Msz<14-#AFV1&JAG-v`fsSh6SP z{oW;CJhZGrrg9jAByRl&d{;K)FWR+0m7XD>Hj;9{JMlp;8XM7VDjM1Zwxq8%zUq#% zrvXCc!HrJb)0Q@YnSfoqKpzV`EFEJlX4XXIDaJ=42@-cWF}wZHQ^>+F!*Pw;F)_w{ zQo4~2Y>o$o+8mP1+r?KfxsGff$;JEa0`FH`fA9eqdrvY7I*X78(-tDISWSuP6tx(a zVkDE&ioh(VGdw`#yCw%;W>S!Jx+0i-U7D%X&S7kEgf5z8Tm+ zozS}&c4C@H=h&cz$47Nis5m9Yma3(Wxm2Ku&V!~@sU2yQ<|kumjBBQy(HN@o4Q$L$ z!oM|femsF#pRLPPlpx`Vq8l9My0cm#8^^!!FVKG}D1S2eK~4ak34B`d_C@D2=(U;= zfeM8?X;Jg++fHg`^asntCF#z`E(_qTgU~Efb60zX_th{>4XOvNxgjh)_)sXAi1=D} zE#M^^G9RgAIh9oe4|qQ);aBySlPbyCuPZ1TAR$r7JA!U3RiEXBbhnwY?!gq)uYTtv z&CZ;xKkX5x(>+-Cq+Mlxu~-cdnCUOy@E2 z+(FamkwZ27#q*uz5mQ1@HmuBckw}E)k}@9x8__+s#iT-CJX1|Md`Q{5sg+&(Vg0>_ z3Q2`Ox+fd5h#LQ8%%;ooL6@P&bvY6WvxERf%aWzo0&uGiL!a7XpY`vOl(k{A4B`sD_S#;0VmAZ;kIT?h zY%!cm`oi8_?VyK&iqS}fqWd#Px2IeRg}AP!ch*O!{LSFP)nn>|9B+v1csGI8pn46S(K^rgTbE4F!I=FP03wuu zE{DRL0NwK|9(Ua`+N*!N6^yRf0QxB|#JD_ysyA*^8j67)kPVrgjIIB9Ck`N3a~h0p z*1+(@Cz2&H-4h4Y*J{wlCZH{hmGIx1ItG&XTDcZr)8rd1IXq6{B$ThxDG>PYcpW4i zP)r+*766a6Xw-JhC19H0*^u(mVIUuXis)UcU!Ar(-sR)gc!uzr~t80~r3JDH*f ziLz+3y@*FmbST8h7y!zCdI9MgCiFEk8OJgxCDK4{j+vYS1=7DAcl`72ViO*@jYe>u zw}T%bDP*}0g3$mi4kH4!% z|F1OXKhs@!Fb?BwZ8xv)Y5 zwehYXaleMcI$#=r*Un)o{H#vALZ0y_n1b;BX%B6~SE`(K(posQFSM6A;WntcHT;t*wEakjD$wfL0+G0OR{=KN*K6E_XxhQ-OzzM>w~} zeOq~{gV&$;Yq~BLhmR5Bu{(O$`#Xv&S|yZtkjvN=0q6~NFt*FS-dLg3q2tc5VLi)T zLlybmB&7E=ajT2ngWbWWk^&qzhc$-zXIzgXUIobLN;OWAyd$p`U1<4c2 zb|oTpzQhEjuBrt`W4va(7*R~!5TP!h*b*Jl^wZfi6Y5TpBz!8~vD0u)GM#?c(IgA8eP@vyp;`iU!)Gr3%rG}Y6ol!IE0Sphi2|W8lbf7V(7@OaF@tJ-th83W*bh`hec`R= zk2U8X%vh+c4w0{tws*;nbwZ|b>AGr)Gp*4C3X2e7Tg4+x=PqxTMiB`NUx5O#X_~1} z+!JaRCWmj`Y$=-K5RrXPy^1AB1QR#}TI7G`;tg5@G?eSuyc_FO&c+ayA@5C$B*cFvL>St;QE`Q5-98x{w>A4GR#+KX_h*1OVX{D>if#NC2XILhBt)gDSadsH zH)pPLX6#UhepsWhSmqS_HKB+QZ*x#w8sq2mI9<4UlFR9iK>9eA9J;FQr2~~)*wf22 z7!DSV&lFV=Nu-;GEzbLCdR9`V{QAqdt5lN<iHEUx3{X^9QH8gU#| z?M{~GyDS3iiKK3Xixo!fl76 z5q?>0JeiXqGul8{rg+WkQ+ycYc=Qh{X;OEns-HrH9a+x$bA7M9XP0w+j9I_XMowK} z>MTa6-s0*$`(fG@2KG>kOSDOeYfUl zbHl2?@#TmYSa7@pRB!o%wbNG;m7Cd;IoiY-;BTvs$Y4NwaY0w;YH|yu zW_>D-?vksTC*NY3h2Z#JOLhdx&H53eU>NHw9hrUVyJXVZnS^+Ez^#Li%-vCkyZ4$v z5H1C#7?mqtwo6%vy4+n>IiiEcd&IDyxY|;<`ULk|V^T8&2Vkw0?&!>sRy}Y?h)q%E zPuD;Y;y+SerVCpJvb2p6p#OIZm8 zX9{gzo1cR%Y;PlRHz%t#<~irO@vFpG=!5|R5_2gFw1^%9aXCf5evOP{*J#Z_RJ(4L z8=43k+wfYxLO=-jMZ5*n@;oX%JLN97_ihDdFjusX+6|o;{_7X{L9eg^)}s*=FrwnJ z9okcpDMsE8iLvtzo#M$?wk(xh{8IeBaPyup$V)3C)Gk`l3P8pr`fO4Y5LU=&VaMla z7ER&Zh1I6k37ma0ixH;nzn}uFWwSic;RD{#Bl!$RV`G(I|6)KJ}8=yFuI6fDYFgm5|yn_1kQD=5d$2~CVQ zEY7cNEx;~99LE5Yr*PJ$@(5YzapDx)*z<4bDZ@-k`UjxIAjc@3y44T_M;&TzW^h4x zPAaGmuetdBur&tsJr)el`uOVG$ORdkjo-rf-4)XA5Tr}%J~Nzj34sRc!h8TCGU|KV z)L~jvq&@7g%RV9Scm*}9=3uP&3@iz?Lrk~L5(Dfi5316wK<%(6pr=igd{o=nk?kl+Th< zY&S_OAQKxRMrC07h zUyMi8{w@seT*{J0XqL@h3PH{e2A(5|4Z{byk#C}M!*TSY-Y$BY+rj#J@yKG#qe<6XO<+HrQ4xfTS{cvx>fa% zQ+yVh&EE{>GfLQrfSaXud|os+>=13=BhP=B*=N^fqB*JRJrUW3x$K~LZJ`C2zdMQO zfls#W3h-A$#H0QG^U6rU;`=Eo*;T)^leR|brd0_dv@Pt>P>9S;!t;Q zR;H9E{|~UaXn6kA028)z&mzU6^rSr>acGqTvDPI@cDU%f+EB=Q(ZYzTUcc|cASiCk zTpI#aj&?Kip_=U9i8`8XCp{b4`fxDUohm76aBTaZ=3$opI+WgF)!NPlRPB#i={zlD z_yYzER2XIZwH%4vRXbD|Ny{8U%+OgA+WBdg`ea9&ft)QyLFLlSGtFyInM7;v_aM`pJ)e>N$}dYV%yEZeRoeYg;H7 zDc;Pk=0uPRyt<0sYoe8CM)8m?K(4sRC7%y+ZA^_*V&?oM8X)D}#vk7Lc zyF+vHW=Up&Tx-J8GhPY&jWd1ZF8~$h4GirbLpjegseCN<`bSBZ&a!}dY?PQ(y4;z+ z=Q*p$29fXHx$GAOkFvFemzK`Y6^0S7b>v0&C$dS2{QEnmy1kG=q*;b2XJSBpGWjhi zc;iOQJ6dAaZp)zYBA>z2l~SzcKPf3TQ5FJl$#Amfc4OokXGJz!FjMo*|McON|NT+!n3 z?kc95eN^ism|^mb6x;4Hc1eKdTKJZ61&Munx6eJ4NHc2TRVh<0s-5=sXN+UIzIIZ% zuh8XrU1K){y+Sw@p7ETI?4&P7WIf2Z-*Qzkg{~Sio(n19(2Z~-fcSg#QimgHRniKX zl!&LR-7X(qC{qh~~?3lxP!s0TcB3-fJt)xz^r zMiQq9n{EN)ww($_rB$yDm-E@-<0mAIB|N9X-PEetT76jyV}IYCe`57P2@{zJUkL3l zpO>jF$NR!D(5Ti_G-vR8zvZLOQQN|#dgFG@>e{Pdv;GFjfDq0EZwvp5$9=BlSYqt+ z?2Ve)f#_OCkS7dH7e5oWOxMAjy{t1NF`aXcPz&9;8l7FsmN9HDXP1DV3>OP=evp@n>Z+U*#xZC3N zAfHXAIznvbzf`p9rGsIqR#E7n^_s1>x>vWg^E0|EAVbq_B;Jr@IGLjV5C0K+^xZLWsd2Rh; z*qkfuP2=XRE?M$~6A4H^<=Uq;3tPv}_X%A zRK*5;{JJ(uDE<()py#o?B9@i-fOVDVQFm-e54G{DG@i7KqNF5GdMRP$T$R9^w;a1d z`32!wxxSUIE(Y}ZIW70WI~sPda&At2!~R{_IT&8N5wFyE$|P58g@sV7<5v&;&ktlk zh3FzXWrYP6b7Xu|Z+K|;z}U-}-RFpYeD`9ABdCxuB_J%jY1;bg9Xr?GA~Q%DT{;C2 zP3IEH`F?2jd4}dQYXD|>&#cQ%r zol_eAB7$Lt_u;W1U+g;5?4r_+1v!Djv7f%^Y14aPQNX!-;nC1)&8>X0usuYVp)7a* z@f|4R);Bd7NE^#2Ttsg_!ihM%e;Vj#>q=9QS5f`-xq2Hb|o` zPAjkc>&V48hL}wRK%ajuUE2aJT8DQ*I0fniOL_Lt*4XEwK^_g0+O69G$eD7=E(S9m zR*&XtkaWvPcFgv~eJ?|(EGw1fxPNnYNwTP2BO}4u59%!&57-rsDDW0y{$A}J0!oRA zqr|Xkd(<*F~;rSh1Xcw#uG!F1WbqHE)PBP-OTyi#)kS0 z1+~#Jjh$3YgmIL3*St&p`X9^JTm5%hr8R(@KV{V|x@JacBqymfDU*Ve9iX7~<$G61Ka&3&iHAQ3LoQ zTNd>Z*5Sa0FDdYfemjUo#Au6uo>{7q{pL2(F~i)dcuUfH<-SCA&~sd79mb-?!F&~f z8rW{zuaTVZ|oAl5>*d4o9f?njFe#x(bje)Oj3U=v%qj*O;XaEj4zwAoB0fB}*F&;B}1TQ0-S zce?u-)H%-bqJ$t|MvWo)Ocv&^^P|2`Sd=`uYy(?qz=|B%bqX7hgjPe(ZPp|CWX;^R zY!#F!p*)d-7zmC0m9+e#mKCIqdKbZ+D~sc$+weA+T?^qvkx5=E6i0Qui*+0GgGq$A zi!7C8(w%>hluM?Ij}>w7wZKegIUFik1!XJfy1 zpRF<=V+YdRn69YH!~u~aE67vC7&RPpr8L1x^?!~hHNGxJ9Fw(>7gEGV{9+pF#?DRt?rK7U0JnzspgqkQ zhKz9eMlv7rMq|-%G%Lr#zUzR;XNzmh2`>Z1di7u@Ft@?qQ(zC9fTDv(f|+8k+1#m; z;L8n(-umYrp)qWQrU z`>Og?cKy|dmP5yq>)Gj((k=gM8U~2x9FCs2@^Am`2@6-q8U30@BGu?3s0_`$!uJYf znxY=^gubGOxy2_cC6CtlXL+6mlSIXNnVbVOSu+7H_oh`VIPl+fq`Z)^Yqd)L=jZU# z>7u3=TlFPD4iDlWpe1BFk|592A`PubUKa8*X($SRGmX@GZYa{aDrZ7RX-*hf02L*N zfnz~<^?dSf&ViPu-anR+yTQH>`5f;_y6|272NS_t@~A?Nlr-C%4jw;`BMOm{Uuei0 z$uI!kQMOZD$(S9a@c91oRBx(&%o?_6GNn2d@`Go0YB{71LK(k*oEey99Ok?pl8ECZ z)}(}LdX0VkIGz+h(h{e&9FKO0upsfqXaQuzBay-b1v838x41MA^tZyx2SM+~XUx_x zTl941z*-k60CxdMc!ehf3LpbJ4-*Dd@L)3`bUCrP4=X$GV2Ag&ffYz5tG6Hj3mtZ zQ{A|gDj`DUaaLYN!)5IF$K#9vnoW*Vqx$zcN&UDY`_Pz#R2w&Id6zuEosZq*G@a#v ze!iC?={hyGJBBikn^YNLmup@kfEkj?(j}urHfnKPTh-3ro{tbfHfaewx%{~aQnUL& zN*ko(N>|53!!i8elo*$HcLPosh&>z53s|sHM)EQq zJj}CTtw^$&lH^H2F`-uvl?0rQ`fAjzmuUR2`8Z@Q-4lT){aBUxMn7LeIyy8_nFr5= z+L;>pkn>T{1i-a`RzDG9GCThb#_=R;i;_fuxzJ)V#Q913KIZ}D-BqCeNk1{0slTt! z>b7_n*8E5@j}{!a+-p69D7S?2m4Zos5o`bwCA+DXfsy0nRz?`<`cu2zvb?W@W5TkK)gK9gH-fY zrJtt(-sOX+hEBRZz(H9250*JP=2|0m>CjW2!L21JWG9%Pa@S->tGreQ93+p?R_jILo zQ(yS zMG-+zr_pT)20rY`{U_Qs-R<`S3z<{%Z{PN__tzFSq66jHOyz-Wbs3ZfiI{!&LFr!BR z_-zedt%9?Bop;I1QyEsUOL|YVKJ8)~NtWWF{B9 z;O2Oq#?#b1GMfiYVuthS1pt54wzPBxiNL^899iWI)0%tkR$XeKWf*6!!V5V`ARWVx zpk_vvl8lf%GYu8y-%=!{jd-%%NC1mJ0W}4*jfWoLkbq!-fCcAkl;P3ntujx~Su6YChDLE|wuE#4BWO#twDyYfo&ZUm)lwqI!lil%yJ6 z8cTo&9w3T6fe_#CqL|LpPpgmOVq}-+OF=Eu-l})#g_qe$ZAo=l*v~B)kpTxvz;Z_U zz&Z8}Rfx%Q%IUSYhJ^`2DuHR^M72uaea4Z$_E;dEiY*S16|D!nm4s>uGIS(flPhDv zFslaOz>%hV#m#Y_5ASCiC&e+|xf{~gv#*$t|FwOzCWjv`wfMR+@oH>0GjNBS9lXD3 zt=hHU6J^_o`e|b zv{$G|4~BahpG=xgFB8F`U_B1?k4=t?125{*H9UUj2r&KWofV$~>iWD){?O~31K%eB zi)dvDq|4^HfrQFKu0G%=-X>0cA57%IYv~bu5N;(aFuro!~a@6aXLwzCKM3;Lk022UL2%mcHwf4Ht zawcQWwptwa${M`Dbhe))jgs&q^WRTpIysWQ+tDC?HR&mLynj~w0oXtv;s3L( zetx9P?d0}AJ`qD7E0eVW4#*KGZm~lUQcE%Gd1&7G^#Vh5 zaX}Beyrf4h?n87yGqt%&NSRrq{I5SX5BAU=9mgJ>< zf1z-IbZ%e$&V_AW;mW8STk=haff50a0)pWfBGr(`HqJ=|xOpY-9RSAKQI`*fLm6T0EhAL9?-uWSMo&_D zG>*8@v|bo?Fn8Tt+!!X$z4wRZbL%+t#VxhxrX#U%s&_9TV&zu6vai=K%dV?>tdamo z4`DwNBWm?+#3RoF-HP0x1;?%*^Z?#ubK&LQlIFMIg>P|@XaP)(I%tpRZ0_8ADUb}s zjX7@a#R%_a)P-niRFxouT%W4}T9~Ln?}v~ai^q|wcx|??8Y(DZR*y(R+e9VBoc~ny z1c|vWr~|HQfX@vKsBwnntGg`fB@|wM>i;+P&LKz?Al%Ml+qP}nwr$(CZQHhO+qUl9 zu|2sjsY)f4yvib*EVAg$-@9Hk&VSC=DvS;qwXcWgKvvT>1olh5FwBJWELWYrYt%eGXXNUI_bbFWv=!) zzlxsm$(a(Ghj9vUp1KgTFq4_fT|y0-Y2wpR&|Vok^$(117rh@pLDfy2eM< zD17R44fyA1e)6Pf#d(Q4t1@3|pc8Jf1N1v~0=6MT_UMlE{IxsDKm8Uq7DRS(cAIg`m()pp?gOHdxMLXwpttauO3Xm{4GDE#&p z5~Pg5G*cem94){upF!cwUXE@}s4!GAc@l3kG3p`7TKks4J@|Zv<+xQ~2imocCmfDU zH|Zo^;d1dlPNK0#lz^a1RR-pi(|_4*bqqe%NVvI15f~oY*f_=e)aO$MsCwxOo%U(>!(u-9?XX1MJV5@-=sQlJE-Vw-l0X|%jN z0!H*rTCDU$t=4{NCNu>i;LAY6LGVj4>=&$-f&?rSCVzTut)VDXulAOMAn= z(A1nn;HzCqM`$AG6MB~ag}?9UN#Ajz6@WT@bT6y$L=v9Dp@hV-QPJ>Je@YZ3>*GXYTNA@q{ti8z=s9Lg!f7Q8!_nQPgV4k;maL&U3;HD^;#jW8p4S4gDfb0f_VrLJi$Uc>7^5=ZTrP;a{?O&_Fsg?K2H@g%&@NZJ#zu*Z!wtJ z-Ft;eLT(xo*J1#+(fDklW2qJ~mw`6#S_#0$V)J)0YC9PRpE`8Ga|{IQn-WXV+ElHx zh1lWfcUdt0z6Yjki|lCCVx@#SVq?VM zMqW)A@F&)X)>SE_rUp37$0s%!QNya_3T&Q$RUqt%KA)0%!NqJi zxAYdx9TPI;E!_ zx;~YtaWO2?kX9zP1x6EqnlYhvP9pHpE~Nv=_V3sy*fB)L`SGIDrxR~l6=*Fv9QDHu zxUO)tm}A>pqR5X4|3SfE02g3Y#ocvyjjqLmXbC- zfim|)cCy-{^@K&L>vRF2=*l_%!-K+z`iZ0|_G~8rEJNq4`&-Z_U=rJ&rLV8!ygbcB6L&yLkE$?o%ijkD84jA=#j~_69sT4qoX-^D)QQ8arV#?lMLRH~;{spWyv&awxRo8mnq3sLBF`>^2z^f6>r6IG_wHi==4QAfVLS|f_3m!wK(>-@9I3AJSk)=C+4F$y8 z1BiKp&XY0!jqLGpa{ct3Y8sA`{5#S`XMsq&(3V_Nw&~)*hmx`d_l6Splb$l*CjL9J zK;!*~Yf(+&Ej+cN0ydS%m2jZu?AI-85Q?wH~M_S*@O0HP^OvHzY zl{n9Ey5u|Hr|NwunI!PyxV+E|w}SX!GpsIarh#@cpRjOEjB{)HCz*7Y3Pm$>ApXws zVZtxOYrj_5*naqj;WU_t(!ku3NlmK+03&)r5@LS7iXe;CZ>{Yc`KeH|SeWeCSDuF% zg&8Xeiz{Nr2*1ge10zOV3*OlAhyj!m{O!6*pwHqoEB{xdAjr{VkS+~q zhr4bJJH3?9JiCT}O=`Xr=mf{Bl2-U(BdsIR=3`61Q;!L@fY}9VGb=nya`DPSzwX!U zG+d4`UMMbV*6%$aw&61SQ8qY#Lyc^eKXt`jVS1e7qtub1lK3^q$R)uhx()zP<-ssf z_HG*%ia#ku$*nJpq+xpa^M0MX!%7v^iR$A+wS5A~Wb+|Kr-VeVosl$^XO44i(TEr9wUznp4qQNVqCW z!rKcblH{3(*1h-TZ$Dt8L7kIfiq_W`QUDZsI05^LZ%J``t58ZuwU4%QToz^}4{)uh ztYP5u4$#w3n)}6`qPCKn>OXD~AX0 zhCBOPrt54?!)~L=4%qF`-bR$7$3k~`Dyq633wko^@(V{mZxiG!R0CflLC&5D>4(vV z3LzCj;7vwjOk{Ry5iK^O8jk81#qbfL7SVKujUD%c8u7z(nfg#5FhrNiuVnI~V|TT| zXP83BF)H{jsbi2&W^k1047+zoOvpqfAIFowEIWtH*XY%UtKtt0KYvO+`^nSR0^}I!Ba*Yuf7bLyc=E7 zG-<$I8*>W?T6VK{CKv7AM$$5hA4M+02&R@{*I2k*s6wo=i{RE*ZuI6N4;>Q5=vY2n z!kEIF&Z|Wb4hWRMPD%-EEEr71!z8f@;AI(x77hg{S)s$QiiTko4Z|uLhE+5St7sTj z(J-u{VOT}~w~3G%;iY&Y-j3`Imcq)I`otzuD!_kS56?cF<9i`B!aw4Pcw3WS5=%mT zzoGx4owBHU1q&~geWEvlcmx2Ku<%ydCweD{M*wjDzx?0V#JX6(#j`c|-`~$h|L+fN z1Ax+n2*z@{VhXz180Ib3a0Gt7+11_Ho zAP|66SOGxsz5!qq@Bjd*-G=T%eEKz7q9^)}?M%e_OVbmu5dMxsxVSisM>AkNA8*3D z^K@qIl+;Y z_{HmP+uL+p%j7cg6!!xS%n2||B|y~$WOvgtd5aXk*Jc7r{#x|w7E&c)y;LejW+mgx zmbv-a&F@t0vjBr-hTP9WbJp~#Ho;7oL0y|#w+F5a%L(lgf$DT8N)QpiK1?vZq7t|{ z-94c%HbqiLwW<6z)pyo9d@5)jlDKbv4Cg=H$5h|3S3pX;*u-ozI0-anhrteTYwA!o zeei=RM}M?);wU`w?t@$+H@KDTRGfMr*73lpJfVnL=9f=?^_sUNLi#UcCMRKxf*}5h z%90YR$!Uo&bveMpn&$EKsx;Ya-YyX5ly|M;8SNGzVPDXzBC}4ot_F^A$wNkK_(>dSsFju6sYZ1;SDy0 zGUrSSB&#+rt?k+jYrlxM?4Q(A5jZtyI!)T-&Y!!e5&&H>ff@%O@k$!-L8`i?AG;jK z%y_Ht^s)e0Q~>RwiScN8&x0j*XS5N~0wAgqAc&*}K%Uukuil1RmF(GUA*=f=SU1GYfE&`VR19=gk`OBXI-CBm+UvK{ z{q_k5zT1*F27pTRPTev=SEzwji~C5KC!txk;65Z0u&}4q2RrWfz`ieXz?&yBMBU~z zC(}vq9y!OI;W{i^m%&n=?k7Brd+tyD8#*rQ!i9BZC@PL6(UiFAV3G3q&(mkXj$*(a`T=oW(6oe% zWZswhEjf|up0Sor;Q@85O!W`eX~E!eK;T}oq~>*#2Cc&$1;e&6=BEopWQQul;FMoZ z5ZP7;7xKIy7Yo22PrMtXxO2I~kYxq*JwQxfg}}a}vckI(pS)o(m!MqH_5+vUZjQz+ z@^eW63o~b3E!2&n?vEd^@-LZVcRK(4&(9OCqbvwXG5U+e*C{C6A#c+NHcz7BJCE<5 zfrzXii5Jv*)B z9dvGHq2Zua_3H1xw>$u#vlEaNlETD!0oWFvDH#xOnqJ{i>S^I0UM+90j}}$&jK|>6 zI#ac)JdFFBnhTRhy#|?>bSolG;8;Ikt zx!<8d@r&KaOC&)`kUWhobe-1QOZ~j=O>V4=_a}jY0zsf3J=3kn2TSFD@@ZJLS~z1C zSCak=@ZjI#2>2&>qH8Ko{Y4Am?o);utF-u9I$SBXvqt&*QU8I|1u&LD6Eq0|xLe-( zFNq;rs-MH&)23G>5v=x<|MI7mScwK3Q^C_VYr7JIbZ=Rwis0g_V7v-e!MwZwi%WIAdq};T1b_2?Ib6Ig#jerkj~37bGIQRiyyG@sZylJ2jceSSkI!v z{1cCx6fu{rrEuv^D618&2S2!-0X?wl7lDjib9StEo4dAE=|S1bXa%B^5mn{aUcquCWP2>KAK%i ziYv*>i)OhYQ|p3(?0MQ8yKoUC3p)Q5Uj3@LVas5dsC@6>$-kta# zM2KH8%KhzbfS5&P0Fo~@>~EIrBbPNwtheQ%tYln%zHMdb5Nih1l%}v{Duu=GECxEl z%f2W-y=ivH{bM})QRJA}%d3U&vU!H-WD*ka*`moOG^ku1nxn?7m8lB&F3abh8_IvY^=lyB*S z=+KMP8mNe=TA1D!?762j- zwKxid3vy>W53Z9%5gy)Zgrs6}WG?d;6jFAE+A{-*o?MBj-i2B}Y{NtjcN4=e^lbIK z&BAJYZh4P`E|+z4nc({9JqXWY0|5ie%5XY?QzVE_TcM|Ez@}}q@i!$MzYG{DL|!x<5yw;Z3uUxYyl<|90$BSQXW(~*`yKkv;1an zB%ijbF-e^7|MsREO8FpN0T(}2qajp&o(^^MEfFqlmA_DbTvin{aZNueAc;?RMUavdoyz#^fR)a?`E-2eBjW%^rvq7kmQOph25%8J zd7RCXdOTc4x=aA~?+?NFMh3%x(_{qB?V3lo6MoS1wrD2a_LSEOzACp;L(7Z1_Wak6GEd1+7hTGWmnSg* zN=uk+&L%Dwq9?gJEE=dr%Ntk>q|Ok6I1UhFy8a(~|NnEZ_SWgD9DbziwbaV)jj(~f zBgLe`-+jnW84Vw6)xNX1UgjU|m->Hfd;TAw=r$UPUhm@}aQ8ao*DO-=lL>dum|I5P z9wvY&&&^cDFajuH7MjBWT8P>6oRH#$wt^|~+g^xHVUPoRSKbQZ%x&xZRWg9RGVg98 z1=Z750PN!$^1l+cGG&^7!3;>035{9_6nn&;@{#P@1^9tgwn&A;8!Hi*FQfVeSMSws zMH*LVrIHW>Q?TU>;nhZsdoQk=g?K~rk0b4CEfY{A$oGUn&sW$wp!j=tQ1)$0lSe?U zbjwYeWwFv^Yr~RI8Ub&V;SYS12#w?@X)4+X_8y+ih$?9K(*72Ce_xT$42Fp5v7yMg z@XZp7uAicaPLJA=4$({R_$1>6SA&9yr12|Zd27`6i`v}Hy~jx%6qeX*y)e#E>d zoknT?s#^OMkbMbMWdT78tXCF$WyXqsfj$)UjyUJwM^JQ<=pzF?<;xEc6z2VAlLm%S zOyvv6O&A5Grdgt%tMgdfLtiW>Pv`|iT<($Ef%Bp%5x_L;-8MBP*l~&u5kOFhqj{|a zx+CPrFG`rCB*mHOw9j!ZmFTR$H_7Z&Y*7V_u>XM)&1$p+=+-1-`jh-Bwg z%GQns-US4jkwX4>jiep_+~Z?zk6z$fFnV&w@hqS36dMH5U*J%@h>?6Ra@WiLgMs4? zo5Cd9_qPG|8E&xuJ<3Eyz0g{4J|uVQAt^gzV)l@bjT2k94#NC8Jsq_*CTbfNeLHhw zo!s(?1X8~&S(MO(7i4wurahk61}!%N!6*~F44m)S`EXk0zj-xPoWZzyz7bL2^(p7%0gmp&S3e^wH!a%orJAMmCnZ}k{lI6`jHec{B6?{4fP z@G!7$gq4?eXyHk6!psofD^9{hn_#^C$jQ?F*U==uOv|L;kq;4A;6c6_BfRs|dLi7L z%0;-82ILycMPlL{kJyw!?&SQzNT#w{tagL@k`M9d2M1hcbCL@gG{8O}$p*ZeVU>(F zc;%tJ!~@-%>Hw!T4i5I$bxB=~ zNOBRBI(Kmf^hMA!a;=7W6vN?0^lxatVj2V%3m%^I4{_C!K#~yhlL}Qj|C@YfYAwQ8 z&!cpq`P5KqD8bKD1A~uQFcVr;Juu?Nv|0z{uI(OD3dDQ**sXC8#ziN2i28Mf59l*T z5%8((^i60kfexSb=L{;M2}NClqezZ{R^}%ss2_N*Md((G{@K;opsulC`npJO?&R9O zCEp*l?`=3|%>aA28}J9gVlzJWYWbt%y$*x7XjWw}TS6rYlSs~o!e{v3?Gk*+N92tVmGH>HKOtn`3ETP^!V@n(r{i961^M z+=?`m!g}uvBX!BSv5-deX;Ilje`dnw$FO^c(n^hh9k^3_`=LQB)J+0W_9k1D++^VZ z`-cK6%n_*`1>;@5hfO$9V<&_$eZoeY8L8^zH9X3Tp;Fokz;S*;5pLsqh!hon32%f+ zHdJlmLozOPJ+ljCU_`K6HM??QE?=ifh#X=%6)`8fdO0Jo>*wSvmI_24W#;Jn$)P7g z06H89E%>H6*-%{Pz;V2&`|9NGstTv3K#lYl+0X^Ltq?;tt+t!4Y8!|>!hEl-#*5x% z+4qlF`^pqSrLiM~`zp*UnP%}@iO)P%Q0&T6@aTzKD{CXZJ6Rj?J;>S^H!?~B#yS@b zI!74if_bCR97uDrNyhWWkF6eyO0*>3y}nZg^xdQ1;S1p~3-Dls--iR28W}dFh$(msMSh1nZbt<17x~>lNE08*srLs78T<|p>35YO-o2`MDD{^FCY0u zG4U?j2@63=%6tN2XNg`HrKwuD4s;AQGbTWEa@v0BmC}(K?4^pW8EY399UF8FZW37t zJ^ihWV_(RfA5Z{lXW&V=YZo8}`|aKPva5N;XH=w}dl29ed=kcZ8Iu8dHUK@)uOG8b zvLv~|jcfm!SH-rUHRF9-+=F==8hzu7Zi9GgjGl-=n~D4hcWh6#94i`|&~z+B-=Y{F z%gu2nRpFwdi#!rQ`P!^l2~cQPMe!5=^?H`>wG`p_q$GYgX4+PgP(#Vr5G(@SPx8=? zrq0W0=9^u;#VkmD85s-PrCwXIWM&GnL4Q{zt*!90%7)wK?d-1G()?VS1@q>}+(vv| zXn&QPuxX*#`&y1dVN~%=9xivau7chUSmAK*tHP8`wPS=>?+a&9Sv&zZmutn$lRe zO&KC;cWYox0eas-|J-VbE$=3>bVNaTBlRK?>9n!UBFQ; zdw%vWCl986xrl-kQGl-?gY`nu0_d2kwh6{gJ_iO1xFyowZA&oM&(D2Adq!ECecNVb zAFi=+6_|M%zHIKi_Hp*Cju^$A`!(ZbP)B!4kvJFBk15Zrg(vD4$5vx;usqvW6ur)& z68s?*d#Rh|>|9%vRV=)@G6@^zH%9hakaz^Vkz zWNu2#P5`Zt$EyTze}7fJVW2duy8&@wbDzZlfG|yfnjQ>l zRX8j9?}Q%~ZhK;ZzgME|QA61W-alJwv)5@ob~#Bf_}d`?6&busYtO?z_|)zb2s?{U z5`PCy0H5ZH3d-x*eNakcP^;uNi$lhSiVYNi**1a4EzEOgW}yP+kW4WafiV;{V1%ag zw=JBIh0nQo58dwN0~c10lpGS@&3SP&#T4>i40gdx&t|LFhx{i)hW(&CZ*l`)SgGAp z-%&r6i_-UKMft-7Ir0iS9N?D2Gci@aD94Ge`63%&?~8XCzZ9`hn6TZd{D$=V-BPD8 z5RE4r-3Gylnz~V&m}`RH!FzW4VR_3V;10!}bk53;Mqwk=nsj%mL#ph+juev$fA>Z= zWEb43q}xzStqu>a!CBS=!a`&mAU(js5>;uNaVgaL-6rwQ3_^TQF%Xc66Laj zbSPCtaE_RbmHbyqD_&DNLXXJ5JFlkeqD_u;0yCzp1@`eo zm#Iu-6>~WRL3xgjAMVVnOhlG9gf4hBqtyO0xSv6~7y0&B163YhP#vO>26m4sh4XP% zq`K%yuNTCnPJPs}Rhh(ficZ*g3cjary!Fd$z80}7?$M4G?#)lYM~`mUVUt>xW9rMui0px{Drk{(UO}54c2Kw(xEnApY&qck%Fbw026r%<7##TYD$@!wDNXwc$~L zuNaK3*Ax5K0XR1$5aaxR^U{AOA0;$Z4au*CM6C|<#ut=L;Z5Zx_kv?*|JH#_=@Z;!eAWdp0^ znZqIuWEahtNkV{KCi6R|mtPdT#^HH+xHeMzXA1b~n39!2WNzA9a-Dv|hxG9VMzZyz zF-~_pyS_aDbdkA;qcBJ+`)Bc4hx1we3V+cjS;W{}R`gfdxt{@U9%PWo0c8CtJM-LADumaY!G#haHYov4#qtukyu0s1vh z{Qj(4|0!3BT8XAWQbLl_+!ffmd^f>DNbe9NZKVi>DO9EiSJXuTCFFmJR*F^I>(^Xz zjjEsbYt<-Zoc)V1q>837b9ZnHUvCSTf2i&SYx@Vsj&HcStpx21mmF;O$kC7~``eFpa^$I_cazm0d|6qQcoB%_R&bQWikoL#I|8!2&{2r$fiAkVQH3vahhy7A ztcXt|Z{xOWlnAP6qUzK#dt{gI-)56Y?ThHh61e?s<&OaaZ8Z2z3L2>-fP6TlRN%VQ zB7+EtXL&Xt^TfLCgPgGq^qbp#TC$fqZh7P1Y0L`lmes&n?CHOirhT83e^nga;O7Lt~^)d{jFg_QlbQkNm3 z{kc6)dYAD`Wl@-mH6xt}0&_@90J_Xa89Z5s=XU|jK1y}O4|JXFhasx;^8SfEEZ{|{z?Tueu08;>q8;# zarBfQ@1>clDj&rQBzVZctXLwwT5=F^dh>T7%YHCJBtqqG~MVj8s} z3T1*7248h18ke{%c%@SqT9A0u&3kuMVg?eA=$nV>&rlb*+*ypYc&-|_(#&;W$cl%0 zx?aA};3JA9IZ_%Duzb<7oz}J7mnN4lX?Ub0hK&)0c-MrVyVOB@qi8|R zo%^bx1p1#pklro_2QBQw_*R4a=n89tJ?w;zJ)=N#P(vIr;-`DyeJHY~5D(SXJi)8fy8vumVwp9W#+A)wGGG(2pfYr-=D&zm zo;wIviDMtVn--!E)^J})C!N3Zufvuo{upoDe`L&U6!ZLER?tMB{0gyG0MS1Ilz&t| zQBwMB^q6<>n&npX zrD-1>x(YD%mX|Vne}8+rdiuE_oF23Nnl|3!JASY$)=7T=-W`5R;D*^1mscxL^Zrx4 zdw9}}TO*>RrGb|$f@8onHi+Ej36a}cyrXh%rfN$aN6Z~2$DKE%rn180)8g+%?EZhCTYN1Gm@Kj?km-b zhY7@~G)#&ZL|ro+sfsb}z^NLhf=(QNTNUb=77D;9{#SMACV;};i?Rg$*Oc-kYTd-> zEE(Es{bixjmBi}KyUt2M7eYDd8DB|&cyM9+K(V>GSj}Fl?qP?xb3M)6`~j)u3gy3N z)lp!Ce)dg&&foj0e^7c$Jk%b6*muDGjut>2?G8CSJkajBwd3}Pcey~fwB4C{2DDNd z!UI3*7%^hZ@2~ZEs2uQH@k}D&v&VEf_KFKt^%>=f)%I^6H=0YZRX7!c;cJ7#aHa#0 zm7Z26VI|}6WEiRAUU7Vr1+2DPA#>jy8VB7ZwS*7~+b}(3-A`^IYrdfTwHr$D8KXYX zcrrqw*VldZnE*qF-)ewz)m9EA=7E0<=uI>;Muvb$;BSpPPKmZVYLum`9#YfX{vT&Y z@CmN!b5aK{S&NG&w)$fLejPW5z>P>1K?O$hJ#pZv06PFjg9UEa3zp@5ORYxj&nhzM zSs^Ea5qN@-v>d`1WlFjMbR7zwJ9|E$_%PDL$9a1)8Dsoi+pYod--wLZ9?IkGvOcax zd?>?sfzR;sd~{y#&>RKul`2vo-an*F4{>Iv<^fT z%CuM_Ul+JZ`+Jy)R5Y28ZFe>7^p2ekh#ou3e1!y?*4hKV&LZ6g!m%wp{rYg_c}1Fs zLw<<$dWeS}njy+QG&?uYDP3g@Y&Oj@;>HhnKP~6H0r)g8<`3gvt~KXmUCr{xZw%s_ zkhW!*85(6@+de;YLGE~F@gI{O;SWDlAD6J9)PmDztS+`PWQ|yjhE)}9Zc{}I++FF? zt;>fI@mkRCPom#V^HatfCPT^xX19HViL_t52eZdDXk_Mp>^6~f^s!>Dpl6H#df73d zjjEEK1a)hlh=#5#Q3r0~3|(J?xY#z>`!FQ8j8E~V4fU=uJH+?9k7n$ZyOq?P{~yUxa4QLpELIPAOD|fBAEHqwxgU%laz3!6%OO#`I^PJ)|Fc5|Q-AY=?XJh{Ggm zJ`m{HszG83ma7Hev2f^1k#3I_`usg=JFEQ=(RVd249q_!NEdl>{ zWMX7Q4WcK_X1eZktaD?`;hQNS^+@ zSzj|w&x#GBCylX;nkk6uZ5Vupewse870a(?F7^gSqI>x*@({Pq$Jl`Xi(bn9`i#hb zy!>KT%^n1f&L*J80Q-&;Z{QZ;3DMv>xd>VzdTxLfGdXE-a2}Um7bJPGf3hQ~DAy!H zst5vGp?(2ump+%=u7N3UO9$?-9q$RSsizRjIU}_$^=SNAl|(eolyrZGV}# zPN6?2euH@rh4=( zw)c$xPI@BR7*dINJIq8?7iRMiod76I(1Nvti}QV)-%KF3rWXKt$FAn7DEzwN5ML6q zgl_57MbjJ79KrRj{cN#rMchqq2a zqHNw0^8=(TfwOC-VMELdxiirOqsrZn9VM*%`3O+=^=VXrpVadSvLxCav+7XJel|vr zXEd057?)jvWqm_)X&b8bA=GNeaw^mU7vLU6oUMgXz9!(nlJX;9#c!_+s79EuoSY3+ zi$5fAnPIE`&iL7vQCk+q1HZt4Qq5QPn0QGvb}NKK1gM+n>`vU@Bp;@! z{Lhp2R+5utr% za)WzUL1Y&ld23yCcQct|5l6m3FhB#O*+pH`rfU4f4TF6_zB*3G+ap{!k)jqfdeR+> zC#5(PYl`p+yW9;9uHA$Dq3_ZHz85Bl@1@jt3Q@jXQ4M;-BuZR;^0DyW7HT9YXmE}5yp zWtw}-wVUboq)5%_OI`lP@^F6}8`a&>9R|+t=C=_^dJ8iRG{GFi&10yBHhHWEfHxnW zd;a%w$o~!;J_ui6>ZEbgy7gauv4}t@2B_0|=>OSY?Efk7xwTQ3`XHldo=2jNkDbxO zCioJJ+}@86`B`*^^_oF{{0^z%qM;-hwxg{78KO8hCW>(n1b;W8vlu_cEF5KbD8Wp* zy^3<@DfQlcpli8rw!*hUT7Ur?dQ1dnBC981e{tovw)O8om4BXhn6fu&a@03Q<8BS( z8_UCiCnH?osJE9suf9b1URJo4bf2GHQ7i~P+>M6xFc$RlU)?v3Hg>`FOA@1>kGHT| z=^6RkowWE%oLVUTsL~i=If`}zh*AeSKlIdb9XSVt+pvIN&4!}j^iUTQNY*7;km6!h z`-mE46aBtsVWTRdJ6Te+U%`m1z5W7AVD2$=_23j!sF;gt4b+-wN@yh?Sr#CX?v&9& zIb->_56%SjjeW{?t|nK0VD=5Nho~b20?%p#j|F#30=x}&`Ve}GVnW`8n`Gt4BSFq! z{WT4G=TxRx%UY^ezM2`MWq`Z4zU}V%g1B&sGF`mlYKODw4a=HDZRDu# zeH0pNv@88>pTry;4Wf08y}5M_39#77yYq##1Q* ztJ$cEpT$zf>Ps*gVM)u4RY3Hd%-#EwAr&SH5C;x-&Bo~tKQ>hBb)BbpT$`C+g%RgK zS^Q&wjvx8}xPToOH+-;fOav$Hysgdgkmn&otpM+KVf6K}21s|G<}XNZlXWkRogxh$ zt%eiGbG-7%cpRz-4$U#0NYf>mX*Yk7-P2Zmfo8$FAs~m(!P@p3Ik}VsC$_o;B(wq` zh7%Zk{~m^ZH5qH+PTEBB-1~Nz(N5ct2x$By$$_1NE`j4|HEe_^)1vEoP8_N)B8n}1Bdc{wa+c!v`xJ`{&71S_S6<2%X!q;Ge-(O^@dR-b%)S!EQF`yytIe+a`4)MT!bJ8 z*}F;gsrt|kqk#W6(N1DVKfo7frBz+LX-1;Pv(L$g&Bmz=K8PcU_~!AgNs;#DeJDfM z-pwh`%cm!pSDwCvD(cFbNIY0B7`P9Fs+=#sHjtC*B!>cvlZOz>bEyw>jd^&snd~7( zixb_!@htQo^-g=+X{+E%RXs1yCWw^A5@K5&v?kzE-r~v$)Y%V@Ga|e8*az8+F$tG~ zUp>|m#1J+MWJ;HSL7qp$PtLg^NaEz|#*|mw>OQ~%V#BY|7O1lzp-fOIqs^ntY}ohR zs~N<-2X`|kiqojHyKAG`ak35@r@=G?;o8PSmpvnY>kARJc+(th38{tRJ)#53R%jYm z8zdOtf)g=S!<8mf-;5GJxVHgN?byElYe^KNpu6m2UL1-2(ytVsX1V|wH-Q%|J8N0k zlng!!liM1q3u}cyPPz1=byxn6t^+snKb`z5Pu-xYk=v8!cE` z$aG9`L#906E;0sb&iFhg*B~zSaJ7%U6#@k zdSwPZcOmX40`8;-8sB^$ok^lyjK2{^ridlYnnf%wlEWTLc4s5itq{g7DCj#aR_z)= zwdblCpssULZ;in0LeGc9Mzm)O$WQLVDd=_R`w-%jaBSgC<9FT*P!Vh?^M`%Uvyw&V z;LN+h<{9>Q@XZd?T|Kd7GcM{%tHs25$h1;qO421+$wJPb@YT%bOpA5l89CHE4^KV$ zAMfYFnLBfQJdA`Ig@;7$fl_q^N%8*PIb>SjhLpuV5V@;95iI!LQ50|m$$+cQMqbmL zxU%B6BVjDHz?ZhE_dAeK1l{n5L%WhEN~bo~)BfKdJLBKgp;@OYd#M zr*sS0b?ik_Z;fgP9o4=>5ayc}WeDQ5H2)&SkO00CQMsRYZKtsv4}_&Ia>JU}G+JMc z62D~mb?E2xlZ`Os*0=LhhG!d88wTixR3TOhv4tKcQU5ePF;l)`M2T^HE(px<)bYO6 zg6c2ew!v8LFlyF`!sOJS11;UkvIHTdh$>qiNb*M9_75S+h}L0~_8B{d>B(+)v5YDK zw^Rt3;yax2T<*&^4yY_lrB|(4+{eE;94ScpNv+&#k=998) zxX|KjlO$1!qAH0?qJYe1e}|_18I|PEw*eT|5TX7O7UdS^QdaP~QGqAMI{Fy}^nTUDGm(LV1jcr5GgkI5CUk%a7>p1-LLOqFXhgi#gn8Q>p z$1MtH5-D4@oc-454FB4K4PZvaY^Z(PuGkDMh`7%>2?J8eAZzUT;1?VgrVuqy^_U0V zzpW3gt*a%%OU_cyI-JX(j;0YuwQzP$f@yu#eum6SB^+vX;nJ$=#Yp=iWif2vdRAdN ze3HhkB2|5V(9C`ewr%qs+qP}nwr!t#Y}>YN+cx{oi<#-y(LMd9KkBC{BP$}KB6n8i-fN}DOLb+& zmH9i^s7OS!PIInv{aS&ET-$p-(Ga_Q){P)~g*KI*@-Hju=! zhwiP-msv4NdSM5I#3`QHYCqpIq9jAMFUp6VQ4>Ys3@X_h4Dx{pT|?|U1c368c2z8`YayA=1NprrZ8KIP;? zgaxiS`XY!PI?7@t$O}|opiIeD&wVVr<6k+%PxVN!4#ICNy$kyx3zkk`Q~-Q?4Tkyt zCN>*feTk{E&0EC z>)3yoDV;Sy+P0>*4q6P?Jhya#0bT-Ep!|Uz;Otj5=#C|ef)5}#Q5DG5dB30H6~BbpTebIRNF~(c}HZuP!FNv{0#syD$Hyy1m!98_%+XW6sISl+(h_g)?IXia=Tkk11d6K-V(S=X>i6nh$x_#I)0G zfG9MW=j3CzdIbExH`);wBoj|B^Z)W10P_$_^$(mIc|U9@~qAr@INg^C8^JAD`FzI)?udzp#eugq|)14XB^FqxGZhZ)m&@; zpTAlE^$`9;BYlLl5i>I9{YQy?H61`Yl&PiXEmM^0YFe^pOIKIHa`W*qT6HZwMYD~E zhe)N>2yZZZuC_9X@`+6%CN9SzN$-KvaLwyi1!Id4pM5E`HptPq1;2cT>QHDpmXZTIn?lFPVGSBOvjhJ)t-ySnY5(UlJMf0QF_UU42d*p=w6ixr zWP`y~GRE++;~5^kD~bcqdyO(Y>EQPC4pWgZoY&hUD+J&l4Cr*0&~QGjUcGCJh+3Vt zwMjkxPZkX(c?p(CM>bkXD;p*bYUee$WNRUA{1g?ziz4Zmd@b8xkL#KMYnhP)VUeoT z{*}9tj&%IXknwo={^&wMP=}ADI_5g{G>r{0eF8tRjpV!Cc=+hbq(M!)<6G^WwK34z zr*GxdAnx%JZOG9QvZQjqTO_Vd{|FRG#4=Qdl<%%^yLn1%VI`Ie4^3E2F0^%xY8hbxeGQbZ~Rw~lttq08>WtQ{A9*W^_@x!OwG7HHtF=UQ* z<5#n1tE0-|IS4qr?6r{Lrg9tLWPs{a7&z|LLbr4Dm|bpw>a`!^$hA;!eH(m%NlcQvTmwg>lK(=V|xw1STAdlj+6aNb||)qd~{q(&brL~ zxGE~SP)KOPz>BkGzt3U8?4Enu@_z zR-l+SWZEo@`ZK6`O15?E92!>2&H`QqzKXEAZ{V&mxJWfae>1~LNOi%rFtPMS90tn* z9C!=OV-Ma=kV_gXIB^2gmvtw*5-`3d`MgLD{Bb^vyXWf@EUk3Ft@I zEG@=GDbFh_;)2%}p~r9`{s%y$65E^qJF2W2Y2c!FH{fRrVu7b7|6OVC>_J3fyUfk> zUu;PHXnWYLFS;=AD=ozPP2W|Ylujm}Ii#~&rx(lof8)}B?jar`h1ud?;#A_>KCW;aMnr zsU{4=JqDo;G{)1fKSd|Fa$5jkdvK8wlzt~7(MpTMaPJM<$~tzk1f9N$2PdxD7NW(@ zQ7~GAJs{p3whmO)??o2z1hEJ)QzOcbDEbI7!cm{g4ygf zHSqh4zchAp)hJvIE*&mi;}zJ!%g+Q4jA%Hc`65}WYR2)5vGN! zT)>KeUT!R?l1NT$D#59jrw(m{v89o$90xQrOAS0ThFBVi>O>6wJnuLiW z-)EqZ5$-nU^F|>0Pj~0|>>HP(q^mk0j7dVGq?1Fvb>{T-0b|WE-yZez=U7UeO!aNq z^5RP=EL)cM+D{b6*uahmR>rq7U0P;XT(_fV$!7Fe#6tU~F`g{T&2_jQGY^>Qa39ebCG%Gvu0P65)m#LJOS=-eRl&TGRq2Y2^!>siRzI=h=WhX3i0y>YY^~lU z*K!AFT2?x%xxNy5H{{#rbljhYXBC8{&74GXL4k}xFG__Upx3<(zQbMu>8m3Y-YDzf z``_jS0n9#2Dwx+W5~<&KQ{9|6E~K*2qaqnkU_@kzSS)g|uk(O^PEDXdp;^kDrs4f_ z@6O?kO9EG4=M@4ByUPma+q5%@?|sx0DwTqjf=8Xig>9vQ2@b*Wgt;UFnO8uTa##c+ z9$xTn&mjJe=rQe#AU+F^&x~I(g~p5@B(fQN$v54<=e3sRW5KCs)~6;pMI0Ydbe_ev z8ily6uM8{zt+QIefz=7t-;Fg+^b*@b)0aEbO-07#S$>ric4-6$=AP0>6FXNB;+j@! z1b;Oe2&MssPCStri{WcBLE633daTxaF|~~pS*dg&Dq%saz1o~oC#)Tvk+?cNxjrPD zGh7!*d&|amojO_(qOV0j!qvyq?4ow~>|`LO5a!19%V_J|t|-z+y9NSh01l6s77)T( z3QBJFhwQ26~Zr0^KdO|6Uv zG!*<&xlIY%h*m7D^mh5TxLTdayYa^2zX*WqDL2L|9262KrvL`# zR@osEYAvc~GOyrZw%@3M+4{y)p)bzXNO&+a4<8>fWE!1R32(I+3 z2yivYP(2UTl3Wfw_*&_`>-=SGD4YYwoH)!wxOut zI%^Di`}ZkW=Ni8$(CeV~A>&Fz|Wf3&M%j>6X8RoDX-<+-gu1U!U1ve1`XeN_9_abOXb z<-Y)5wu&zJ54++OiU|}X(n*)@f@YK^*X8ltkw^1fEN6k*uR%izINhWewLir*r&GLS z=<46zP$xq6{vo7HX9(QLj3+)({FpzxMMLi|8-CLV;ziBLCqH`n#>q%;duQf78n#oM zAW-g1pU{gAd1QqX_F@9u4_n}q`ysyUtRg$D6YRRV@d~Om z3K(qH{bvdhW75S_Aj1r77Aj-v>xk*Hz=B5D=iG7zq>1Z!fzt_z%MgN(4zbOWxsb}= zq9RvBv1RbU4x%;L6w-Be&-v~{yAn$($brNgUa3*?pO06`Dlc@K{W_iPlZZoBQlppz zXj(Ogsf6$*8}*5@JG2fk3Gqymcy?@`@clY)m_h=k_~OZoZNnvv#NY0@j~g`44cac_ z8l1`PPe>F|4s#Ed>|$pgZqtZm^5D9iEgKBt6|%YS(!<2BCqCUcxZXvg_|_CLNEr z<6`Rdtn}4w*)4f`+qNZ*0?Bl~1Nml1ueZ3I{?|brc~prOLA17}KV*x*0!N(y8up#v zOW^y%_#C3%{onq6*A1tnamI?aTX)sO6IHmU)2n};bO@k;%qtIDvZ44?D2ke%f0Yn= zcmq5dCKq)`0QvD)i)Dw)YOO-X4Qm6prv%f>m85ESG1|2rKuUceP1zKo1p^!L>}LM) zDo*owGvl)Ohl(GNAG~|_T)?td1=eH9bFn~@_8ZEWr8M;WO%}U5XuDy&kCU=EoGa-B zIqcwpGbz@T?2?!t(62bf=(f;;Bty2q7by@%9qiZox4Y#&WuN;!5M%qNu+kVm9IoZq z+J46FMV*n&))@W-fPP>b%@l(}?{ihIWu&6i6k{hQm|sK-GKyv3<((8&>i5@M%o|w) zU*@C2?tfq)|IDia-wu8YU=%8+})`sOOYgxJGZreJuaoGOkH=VE0tw(3DasiqM) z)MBBe*=tW(3h`{0A#csmy3%3mnn1GUxN7F)-L7-f4yVjEF%*8%W;ku}86so$Sey&9 zqd+gtzENAa9ItT~aZ(57Fj;vafD~5I>5uAZbj}p>%6AH&8x{NSO##SM+qldK4sr=f zcFfbQ!IDwA8j1l>)a#D(7gp=p61<}NNZ@EaKu?nt##NxHTt@$5umtQ?O%xllW)9#& zDRLQG|K=W>`d? zO*oY+fBC+)$wLuf{+UzStnb27V~$}05TM8!MO&apyw(yW6if$#sRVlTWTTJnP)mev z$@Sa?+kqYh0Dc99DDi^A7yf=(5MTBgsn*G(q%14frU2G);zC=rO=|I8+xHh{gL*=3 ziLDqFBjwWnSM}%H4rDtklbpX|F11f#h{(N8ve0Bh7GKyomi~qo$mdZ|WcpTn{F6u4-}{khnDnu> zt{;ltdfNrE!hYIeeY`~CXGB#bYQ`>d*LSSh-h9YyNtI8nEi*%89g6q{{`X* zETSD6|CZ||5tJ5lRu6*-{$F@wtu{-k*hH%%gCORh8)8{ z_)MAnNt%3-;Jd0B{gP?}795KiL}5j|LAyVF@H?0=_48kKAQyAx-z{MXE`3{mAKTpg z|Dd7N=?3wwy-2DJZ_;UoJcuz`pnNhm$q(SuEXHaD=^Qf!LxE2&ziDTYa%efy43EQv z&>!6xs8bnoVw2>E`A4fUyk*@Y$`=c&Wo#3uyYkel%1!Ua@TlphLPL}BGAUuiSf|X7 z>z)+%F}>NXpja_F!e!z<-C(RoyLL~kOAfVWh9uT#d>@h@uk*p9Q3g}l)MZd+Q|S{k ztR#g8BorN{qKz0y^op3rx^3L!wnvH|mH!P}DDR#(|E8d)D$A1wcqznnsB4fnsg{L` z4xl|wx=l+sSO|zaK7EJ0+MTW& zs!+_TcFI;dI!o{wXk_3^yoZ?EwpBnJ3VS^i%8xk6B{@ik^H!abkYR50ddsx;(b5Lq z{;Ho0CDa@*wsZ1+y2UTYB8*=D0*fK9>occ_`iP>5%*u-bxJZ;&sfp?4zzj;Zk$Wht zcMEkDOp-}`q3X_>s>|Oa*XPh^^K`;$FcY}1IZo8pYji-z%b79ZJcFn>Y{l(kDSlvx zEyVPHvHgxh36cp8WDJ;VWZAplzSo~dgIP5!T(8#*FV+@INdEO9Az(fYj{EiztF`h9 z?x~JPnNRu^&DPNe`GQg$JK%de2k4!SOaAlFM5uNo#?e}(U)oxhWgKD}iPF1R3iDjc zI>!BpeP%t=kZ^kP{+>YOmDBM)gZ6f<8<3|p>^L`Yw9ik5J5-S<+w^Su1y#T}4XC|4 zh$X;EsK|4b9g{-5hy@B44&t6y|QWJhp&o4BR9<5I`ErA#WB(d6;k;sjC%O?Lv*L6;Kc{ao6>Fat1Fd7Na=wk76A zJ)*RZ=tNS(sKuqd#U-ub8O(=DC!0tX=zBi1qf}hiTDXbNK6OhqqrKzho`w;KlfuFp zv6d&nUsXdk&CK#fg$Jci__?xx&kpcwhAfRGcCFV1_ZQ{CF!S(utH4%ybX9-cFMlh; z0b@ObwxzPv9tSn;R+tnXx7(5@FTy4VB1$b!VY#o9=;O2q_Fuyz9#({H7PLBB<9*BUxbMTM-+yw*|ZogZ!=Gj>Py0dRFdAr(UrLb z<2fMTh3ddqD;^Fd2O#$S0-a*<6bVH>e(owA};<{e|Ad zxp1jm6LIZkt0BA4{)777UTf&<{p9-|L&2u+hAI@>mi~J0h;q{AGr&`OBfx(XZqnT- zid1FarZ)ba?Nb67pcy*FrcWG62ScnAx2tKYlhM^`r z#H~XE?~Z5VH7ErDGL3MuGe|ZN=bQaCocXD~bmfAUGJgbSBmdJZ?_g6P)p4kUX=7mm zey^KAVrFC;7Wk9P%VgF@bXc6`=pQO9>-4*V@oHv>g(D-0-gR5+5^J_D!5QP4NvL5Y z1EEQ0b7nVPEB!9H5E?F1f&P6QVL5R^DM~>BeM%|M2gZ6H zrxsve^eZ{fH%i3hAqlgdkP(C#n<8ZLNO z9JI!#m<9{c-k(rD9o5J4Mid9-8V>pm@WWei)EiLCdhuwhyF2o6{JQ~S1K~y{@vyt8 zcrwd9f>HZ=0=M#Ea2b2!{qWaj$HfKd+2b~=cw96>IZpBePM_55+_?4Tur1>z2UE*m zG|DwA<194t$chlZj2b#!gIUWbPF6vLy}%NZ4TyQ` zl>;4N-cF^pjJ6r-7ED*-oGxRSBaFLTzJCDI;kHRJ+0pF;}Qgre?jG6fa4OZ#&-*O}JmiKq>!`rWgtYMA{oH zBVm!ATcI$gpmVk*szMbA-VNbsI`6H;IZAe{5u-4Iuv&AfASzHt&wI;q)tXUAKJ&n!>cV`CLIc4Hse;VYl`BK(Bp8E#QrLg?N#(|zuOG& zoH@=p*zBCH`lr|B-fk%y!CyC1%fOCjyu zur9dZh_ySjx4Z($;!E}X_Grmk>%y5tKsN@}5voU2czkEIq*=sjp+N;CWQh{oHNWZ< z32n&4A(wZj-9XwRbme48t!m=mO(?Pl0!Mq&6d`VY@m7Y-({Y(cPpX3o>ujMMP;)|H0sE&pYsx z%`3Yt2WI6FydD$n*(8W4*Y_Z4h!en3O4C}Kx`dM_W@TVcf}f*WfkP#A^A((lv_=}% z#JU?_{WbcR<(bveB41ibRtWh(fu(VM!kMJ4^rfZ7_NaX7p0q!2{5s4gy-v3)ej!J% zYZ8brbLc;`=c>gSS5Jt@2==@UMMQ|?w$$Z)2!x?EKtU1K#h3bXn8u4qVD#I=b28VK z(h4o|w8epybwfz+qGvjQ_Ic(^DeAKIrQff>Ry&UmfJ=AhJ=veUdm?k8Ojku!Bk9elPp+v9VYnO9 z8WOEVbRTjGVQSX*auM0bLqxln?v31k`GGXC8~+&m8bLIz-NPDIL=Zq|I_v(oEm8Hl zE&0w2+8kXNAiNF^(B83auiFW?1M;#XdZ~v&ad(YjK1}3(WQWfiw-qx$c1@AFJ*m|! z&-e&UO^zZspb!UFD9gZeHZi4%R@F-%I-86j+L5HI@R)&);+}!Cj`#;^%}{Z(g>}0PNBBG7AgNK|5MaQ&2L_+!omg$p znB?wS2IQb(!#Ot%%m@Z$^=tE5nC{CbGXL#EeHe}_f=U(d%sA`Cs;ZiMnIijGWxv>{ zv?tGg^|bX>b&F6ZKnsG$tMKmRl`27cx^r1hUfIbU(?G3g2cjPg0O^ezhR?BCgLQsp zfBI`a^%Xdw6Q#K6-r)v z{fwSFOgNZ5m#vqM3wI9tu6)l$3tnmn-Y~79b=PQ3{nRW*?4~0^N_qsvX$#+>zZo1* zRhxK!JOWT-=JnM1Ox+F2d$M!4fp9W^f+SzWavpb%z-O{eL8Kg7xCygolW<9#_-F)< z1k**uGYgb&TwuQ(bI!ric8eZpr`1P%vn+rqN~kC%Yc**~pc;gdnMy86++sjt{PBzF7Pp00F;I?^jqAFgUQ?M92w5{8}X zz>r<<&T7Js^})vPNW3KV@yA~fz{wi6q>O2qDh#-i7E_mAiv2}2zmNp#5U;-Mj@GM6 z#U5;SO?Y~VYg(f14vKCKIkc##_o;42`IRfKB361Zi9ulPI6Ocd^J4%S-_+<^?WhrJ zAEUg8Th8Lok@D1aw6O{rP}MuR6&7~&wx~+a9P~Ll+-TN^B+e=XvvXPvZb9x%zc(vF zD+v;`VuL`qi_Gb=Jhf6wo+Z4y#5E($=TP|OQG&uV5uT9Wp~$k!1>9C9YtX@+&O)6Bg%g}s zx{6QomU)K1#atn05PpUw+v|@Tw<8rhe`zafP`~f{M?J~z*iA&oBu7iHB9>fIXj*4asZ}n zO`p}T6d3W+Ci@#5oc0>DAvbH@57s)+^% z*%g!ZxTo*rg@1Di$tW{1A@m;k`91f8q;c@)ul*5FS=Z@Sev0vHR(- z=4NwEUtf5njaDj1INJ=CBy%-?qD!V_aA+f$X{Tb)MQ*u^u_&O|m|=j2l9p(ur-#%< z(MPJe(|HT78dR&^ibpN0a&dgz)N2Sm2TXKE0u$ zZ3Pt}I>SoCf*pe8OEGe=`=P`RsUlVffj!|x57{qI&ihJ0C`tfg5Y%?UFS3GnuHXQr zy2KyiILesTCYvb_6YMYHNat7Bnu>M`kCu+n%-Kzq_xJFb$y`&xp?htTo2 z=eL6e*%$A`@Ev1IVg|`qs(Pyr@5zXBPZNABsZxhENjH)n)dEZ z2Qj{t?B+_^!X5ZnVHJ~%xs54~XSeY@9IOtiNGC($=y~-#Pn9;j=gv4@Yf9(z4T05L zx?tVJL;5y4#wWB=dIAS#-04)oc(QLG+dfg#qvTki-NljD-Uq?h=%++t;fS9)pozxA z6YiTkcd@?ASH1=V3F)15yAY=Yf^EM&r6wk|gl_E;J^B=l2Oo*~Pg__F{co5P#gT4P z-jIW1eV@TDQGu9K5`iUHH8do&UddR(W19eu}9wt zum5$Okp^_0blv+Yz|9@CRdq^aG$i|*Qnw-^3I`s3l2RSZf)2G_M_TlA*-4NKa7!^w zVYToJNdk`3t0BxkbB-U|YMbR&7`DPoT3-J9LDw)f=IiJ?HEUoaB1-M;nNy^+Nf!{M7I6N* z8mbK-tZfG>j0*Fr8FB5^yocXwe^n>M${e67hWIyUwq>!}B{C-R1<1|gSh%tpWe*N@ z394+#d4Nd6vIF^b;@kfFX_K_d5GrtG_8adtb|UP{1#&}}<)f+bn~ZasksVWBryM0k z!hpXH@%cfZwP~;ns%$l4U0pM(9HOR$W%=2jFKYHAxTR$14-i?=eF#Kp#i-I3;gi`? zsYwVHuouyn@p`yzEgUF3A=3aFlp63B{0rqRE7L=Mzni}Pf}Gm=%bXP({<3DXBSAeQ z4EbcQ+UV^E+pA~zOVjt-@7rR(t|>ysW(S!@0a7R2ZC28{b0~GMLZ+kV)?*s7V9O2_ zqtx(h0%E8!u)f8pyII)l_58-Jsl2&W6cR(!J%nb2&5R$kDNOY(QPbt5Rs4Na;##N{ z;cY6JkqYeuzsww;9NffRj0(Nqzh0qNe|90-uO&#I>zAJ$uOD06FBmZVJoXDZJ_{k? zwYA-9{%C`p8(MNpGg0`ttdzti0Ku(}QwGZx4mf#fCA4Gc*(j!=vOYH_Uhpf~9|7>r ztrrvljS}NL>kmhZdIWRMf4&^lS;b%bdZ-L8C({oUc@~^@mUhP5Srzp%x%c|704sz* zk(0xw;K)P`Obdk-dDUGj#Ya1qzi6^z>yp?9$x*9V=NCGbhm|Z{3saJ{}Qqh?t^_qWt_OVfONp;ozLR=9Wn?}-P0ZSxcZrN z_OwvZL(z9K_FK*O7k@_L@s+St&9SLgC*{BN7_gyKlP2RMMZSM#e{w>913aE$;un31 zE5O~tu74DE$kF@o{FT6n^z`@CxV3#8nSG3bxx`|QDN>t!B>W1wzm1^RDeKkCS!;D{ z=_HYMR_2AQQy5Wd@$D*E{RDeNnA}dfB5y1`A?Jp9&JX+qn^T(L{lN~1*o*HjGVGOE zU`>N2c*MN21|DAI52slNTQ!*RY`bdgk!=+WePb({__kK1Wqb3z6f}+eA>@Jgl^&?y(R@KHz|Dna37RRo0#pe!i$P0pcboI`@%8@R(EYo@hxrIueN;Bn3%tyZJDsSBq&C$#{Y0?t__$P zc6lcKEnw-Urz_{5=a!2Lde}`r4FDUux>;m@2JhVz&5r`{+Z|?AsEcM;|ERVW(-a>2 zf`d{u$2Ked*pqU5?^6Psnbw&0@L2*??5$8eE+q?5TF;wx#_{h#NMPPqxTBApmQj}M zX|@p?`zzIinB-Ar5Z-3E3-sY=fXFgjKUBUJ7ZW{hq~YAN4p!OccsRVA^g z3w!{9#+yEW(gm<}l70ckM6U|(KozO^)?9rQVm35MHcN2{#=B|bsvEI$@RQ#Fqf4fFvyh--Z+e9<@``1$Y89Y3Oqi|S?B!Pg|Bqw>90<6Uj zpIf#`s|T^$c1g<>9hYk@y&lW;$UW; zQvODoGuKVYb)*^Gyq42i$-f<{A(@lpDsC}R=nlA*(86{8Y~BJ|IYJgx*zwoGdp?KP zDq`d8(QnFPtu<=s5n%WwdZdAE#45|J9Pwam_Jp9nV&O?C*%S1H9A*lgIikSW>fN=bS83-9%wP9BH$Dky*lcg_y=j)HNlSQE2R$St4RgEQ;bR;9 z@hk^izkvfrku0?QX>Ropb-1|{SI~dB3XZum?gztUV2cJP#1rc+0W)W`7I8v{qiaKL z;lwo?SnZhx0*8a;Bp@YZAagzXmvJx7wn_2c!$1Pa2i5IRIo=UTF+O)w9vlc#=G*j{hzLtSQ{%DVt;Z5Y+E5R7c=ifB;H71{!#OR7)}^wwTY zmYrnse2?wbCx$9kWU#tJPLq8vFSa((9LhH^dHiH2|Fre8LZi4sW=kb~yTL3FgzM!{ zB;n(ijkcV{AZrzUg3QZ`` z$?8dvjKm)=YuwkDgNCp?AU$ZC>5`DZn%MFLa7JH+}%p`lU9vT4Z-19lrqL^7P-ta3?$9^tFN}H~* zzw@#QYMvi^li~rQG_An*)qDd7E2E`_JDX{(b(VkvfAO;0CB|_kYd{ERX(JZc+-L-7 zW<)?^&xumq7h&Cz7V=>uSERxFa+Hd%SFsRp7Rpb0j=M^Nf#|(s*rgcBM*>Zec%mS| zk$9i`XB=x%EPuuheZv-nY&L{y(r^um1DRHO+O>>-cm?kkMe~;uScB=VYXC|TQV5pk z!a)ua8O>O{p*gSt6owT@-=A6=+J@vbF`R9MOd9g;9pWY{o-jMZRE{fBQAGcc5nBAO3Dh;w@FHCW{d)Y(!qVY55 z2?-tNI0z7wwPP;`P2M$p1b^F0pRh_FH5sTHOKgZ|-7NwTLRL5JWD^aM0$qS>UX4=i z@Ke5)_kr=d&YHt%&be3w#+4q`?M&zZvhzS zR_U>lK7RICzxGZQMHU%F5GnW~Igxh~CaS*shMQ|&B1RB3gSYR?lf_qgk%^$g4Ew{A0PI9-z zO2VTJr01muJ(|ITvPer(?WeRd;CsC%X4L6Fr;e==Bd;2;HB$o zginqvkb_{znc-0iv|Dt{1Kf~rN8x2LAwvz~Xso-eCyxo?XjBhErsr-;2Gch>j%?|V zXE83kc`grhfHgr2UkOzT!uK47cWB*Tq zKL7wX>TW>zm5DtdMFIH1+xjh$As0B2D!vXNRw)4t001OA0MJYyI0ay-fLV;5C9)R4 zUTHj~O;#{MN^ypF;Vq(AQwY{EzI!B35yk3%b@y98a|w_8JV|n z82s#-6NBt7T=IaSzl`^sA-=3R)p6ILsGH0kLAD1MS^v(Z8rXbw~Rq} z$2lSFm5sQT?Fqtt%SIgzsg5V_+i^1j#WtmFHM?OWBAtI@TOf9*qXA~W2-HyQg7*jw z;8{JevgD=Yw~ij}O-8>S^C{0JE=}+MVYEAhR{yes$;rTJU`+FGe5@`+_{@Tq165Ao z`9_Twd{ht!s1iK(OSNKWF<{W)ivGE2>RqB0X`~cAiwSZu~q{dUC`Z5xeWfM(X$LC$c%heo9RHf%sI}o3N!Q8h7x_V92osMpgp3YQg)Ry z#gJ~xqFA99N-kv#zV{9xBdm4YZ;%TsZ7PnM8*&TW$VlPXBdsS=Pr5Y?G{wQ;_-Q&M%N6`!MrnP z2kKseFxc||nZ`=wzqo!yg%nP_IRBXcIL4ApWTV)oX$#==EjRauqSFXFhWYM#9x|w` z(9#NLmu5?v4^P4_?se*06TZfSNd4z^^NNn!w<9vu=%6DI!_B~|Q6Xk4Y(QxJFz~GC z{-Jp37H$gF39{+D)}rOWbv@u~qAOW0mpKzsE@7kKqBK%LD#Q(fp{C@!5$t85&!P>Rm0o6(0Er7v zeJ$Exsi{XA8>(8RX)@jIV_P+~kp&r%s+&IUH+dM|Gz(oPOL5OwD0WmsBNB?t=X2vf zC_bYU#d?_>m5(eu)3*`i$KkBIje8$z&S6=FW2*a8>eKTqA#_f9sh%PoEqb1Sb_s?pBuZzrg;$w znC-Duv%wN|z$><;47sOn6xcJ`s3$MoIlyQJg^59r6p6ZM@N~7bhnx?+T!?pe^s{Lc zis&>RI@J;OugJ+r3SkWoP&mQ(h&Un+ym%}OzT(RGai3WQ+ZP(S(t1+5vXTh52@76u zkZH1AF1gQ-?>LFaLBr2LWuIP$@7a2K##L~iNq60KSKEJyRIv6grH@h2UBFi^H@=Dt}M_~nD$Cxkh}ebYV=78mF}UXp-`+9=ceONH2x zl*AUGCEd$9787h{aKOcXc)msQzN%`Q9+ugrvYWCe;>AJIja4E7_y`oQ$J z0Y02t=tWDB@se^A>1&maAM**R@9ts|9)yJi5JY?WAgauQ3)hm!`4W@dSP{o!8>Wi! z%1-+xUXBll=1T?MyEJtz76mj$Z3`ZgIC%jn{f*G;6%mq4P(GByamJ3M(&e2X{=34y z>q1ZwzsP`PszCql|D@b9{f!sK=aKrz5`K!&S4(L`(5#F{)%WReemRc z3L8|urFRfldUy}Fb9=&FxS<|5CIgYS3Apv93?4K&JE`$o zTUwwvx+mU#2S7WsNz*Ii-E-kirgIVS=5=k~8GIw78X6u?eJN>eaotnt=A}fGcIX@k z1wlt*(rINl;pmLzgG|Q?^_Fh_8<;H!2GdbYLs<+Wn(*eqT5$u^f(Z09zH6iw$RFs$ zG4$AtlMkoo!KDY;Fl6voCM3@GB3_rHncG6KZk>8!dECDT+P&MFd8iIJQXmSIfWYX? zNguY2!jmm+>nMucodh@BUTm;=e+1~G1Si=0sRo~vH_uvFhEkxNCnukK28_LKIXko~ z!H{ySv;@?ffq4L~4%39U@m-r1?H*~iOl?6qYO;Uv=4WQ5^G1+bXxk&FWALT2zomi+ zh`DWoFA>@T@^eV6Dw3G*?lAVKaJ~YbTZTbxSz`Arako?&g!~kbd4P!r)U0M#u3#QB z1CvQ5P`l$p<%W9Z_~ioD4O_(jQuFynxI{(Q@5-pyflC7RK$Q*LCl5)Rl)_x6_pVPR z74Dp(rZmru5epodLiUE{UT(lRW|Z1eU%*7=oPYRMf~ICZG=raPX(5ZEWh*!sPnWg; z_56ID#rTS1iHRyMiB9oa=$jE4#*dWDD3vy;XWJ>927YkWuU7$y{*8tpQ(!-B>1Vq# zcnAeQYzC-PxM(j}q{`qRBgwzt+iW@1XCNWvb2MqWx%Ro2WaDm|K!4HP{X@~e2jT*N zJpa~_Z`$E`r;3}!t4%QoZCvbqmc&55Obf7@T?5KTMZJo-BX{_@tk98je@a5EQ5cH_ z!zsdfJ!?nvy~5&9gVamtrvb#9o5+S(NpsHZ!NfN2T^%CDOL?HrI792Xu;1=JGk3B= zAYeUtX^QC1?u>WJvP#UO9%noMj%W4nGlMi+*$YBrbTpseNVpQz*djzloJmx0KYD#7 z^mF+#^YAgoH*|Ibn6ct&zuQ5ozShY)rGi67|4^cg|99uHLBP=c-{b{MTCpo#ga}jP z)I0_20F*|)E^2ZhJ7uzDt_~;Gjy+x8Rs%0|8`~8U1FHC~zc2>)7#aNh+V?Vu%Or5n zmbR@aK8~osi5H}No)s~pGC=5;xgt9iyrub$cJF%bdOO?{nd#LmwBc!JR`G7n-^wGz zsacuvWNQeu?4MPkrni(6L}be}RK;TYjscbmXGiJl7J>(7MY0i2mXCb8cu0@?O0c)Y zN$%>}?lLO(*!%2u(h&$tq7*>pb&yOo*JG7(TI;O99QeFeqA zqN;z>F{Ff&q!>fIZGtO!SnS3wnKwMijc3i=OZ|<3_X)7MG;=^QuhpPa!=Iacj{360 zNSEpUIVF0d=NbQHn1Mjt74xNz7cu?(kuEA=OB_ysEj6_U`7{!b#t>D(CnI3ifRuH! zsKJXHse+0a_uKNr9=5oC>a_Ko=TY;B$`vCqOYe~mUppHPSfB*2_ebxTNS;rsE_jT#Wj(nx2$!QD4^%|_C!`d7kn_2G`Qw_U=+O`tw|d~!Y;O1a0)h4j_cwr z7~8jMPha{TYDhzK4wR*s52Ps(0qCh?Y@xS&4nZHQ_XKotV&M{U?LsC(m?_fL_vXW{ zpnc1d!u`7|)NWdh=6j%jidSm(Sx6f@CJ{iE_727L*`2STWUIhx;1pEjYWTB@S*yp& z{)G#f!h_mjPCDB#y6IB-tHr5}bUMAJY^`h9M%oI$unMQw-lGfrF7cgme^+CcIgrr3 zv&>M3Nv8U3ew)G7;ZHZ}uCk^&@N@<>#N%XY0@pl}M-zA|V14SO$X?DwOg^>(yWHIm z2;CpWw=o}wIh?N8v$yB=tQy-PMCNVr)uIO_69mQrSsa@9a69*P9+(xg*>3l82!3rY z+)Kb(2mNQsb@ff_mXUI^&%fxuQT9%;qBUW(<+g3xwr$(CZQHhO+qP}vY}?lTFLKlA zmrg&gw@Oy3zN$IL5Ha8rdjNXQyOh_r;oYFWr98d35~uVig!9v`Cc7zmzC#~>J8&9C!i18J}Ri_AkR zh+@vV_RI7V2*CUI%Q$b)ShkARGmesmHia*CpLt}i>-hrH^ykszVA7wkzyZv_&ALG~ zhz?O-GlHPg)@D`0@G_|$C(tlG`jtc{Wkpy!?F`UJ=W4R zczI@N$&RTKO5tMev_eN(M-H&k=Q$rZOI#Ww5^|oD3c^OcJ;zz)a75Iw_hV~5@1SNs zDqf#-`&?xtkarj*iif7~RMw2AH##@*n@{Gcg%_^<;x%)hzKpt@y2O$x#uy%ul-vYb)n{kHox#=g+$ z)X=ymU?^*}Rm&0f)inHwo`Ck`K#|%euYE|~Y06@Gqfk#iCjGYH!N_;!+PON4L z)5jNX6q<;0u*=r^^M0ObQAAEYM|kRIdM_jDT~inp<(L#tU36D0R|mH7$D{Os{kQ2q z323YKO(=dQPf;Q2=ECSJa0atUxSL5)X?a6p~7^lsonL&@v^5ViN3`6P8!mZo; zq_vOZF|)+15Dp(L@aOyySZOM>RTzqIY|{M2Ui2uv@F+c$j`iRWi6B$JKhF9UpBK4t zR6f|#kRXxNv_}XiDcpH0DPMrXJe>PmwRFc=JhO(q-jd8joMcSw!YqOF)`27s73u=G zy@?x9$c3a?D=e}7I0Oeh~d z3wSehQ##AUy~tLjgt344JFm4WPCPtQP`pAz4}^3}S~{&A5tTP|U>D5r-xprUkNzn9 zUZQC{?|PB?w@L&R5NIz2v!&J>v;GeG+@ga)n1W>-b(jgP5f6Nhfay_jSZYV9le5lCScL+y^v(80zPqn=|1P~IsR zX*^R#dyg4cgi^c`%K6EI%rw9tJeoqJnuK(xz!r|kHQMJV>>CRkbac8H9RJBkc*>IF z1@Kths6kY_h86_CE}><2QV>d*Y)~3B7Z;8lPWwDrv4naM@ZbHr2^jNx5_`pZfZ4D( zk*-TgenOM>yGs-+D|IL*F~capi9I1(f}3TKw_z495*ezuFg&~OPL?TKs0Na|wr~Gg zM$ah);?1tce3S3ZG^e&B*SRVXUZ8Xifn=`25R#p(+m;k`tc|1^*^Xou2g|dZth|N6 z4q>*!92*5eC$qjpciV1tO8tN&%lsw+eDfYfea;K8C@PeCSRuL@>Sx+!CvMJ~I1Fo! zDv)arrw7K`VwKD3QcTy-2iT0F=wKOUHL<4oRbf}5)?_^;La*mLUPIm?toMiBg@j7E zZ3a0(J&<__k?-9(0amb_MbH&gpgz;t_W$Wzbp{#nDN%ROr*z}I)y>WsV z#mu--kup5Y9c%8YOID|%UFBHoWc30T`Jp%gTF6>O4q3u~TerHS*6W3W+~1a?#ui_n zPm$}T`$^MDxdWOmregVr;g++PNc{s#qQUQ!Rkx8LgwG4~R+ z{Qb-Zf)S$)rfC~Y(>9oYg+=o&i@fjg0eXG2;*2#MFQTjhAp zg=ppW!BO~osg0%3=>rrJ-pPaG*lRO^kqZ*-bNDuW8SpMzknoyQLt6jx6a=m*uJRiW zWgcX0Xt{E@TO*t$3g%;Ve$^d;-BesQ^TGbybhF|cxZ##@&*e+3@h^(KIDRcclg<4n zV2Gr5ZBbGQuK}6S2kL|Yivi@?vWFL)O%D*d40{Q+c7M zsI-=!5`D%%tc=?f3V6k_Qr>H{3g!SvEd$ZIeTwFqHHHRm_;ZxRN~mR9Ldc*zo86># z1tY5N;fzwcD8PmwFn5Um;t!beGQOVQ@{8Z_`%(Q38c=-;yNv~Dk?WgM2{4}toA|31 z0uBm^)EWpy2q6|C>i+cySmRtyfv=6iw=K+@1`VNe`ry`o=BE_@{b5WC#)@atBh1Fo zpVEVo*AC`PNDWBn-$#&0hn&W8`2)r-Enm)nYf8S8U4?uUQp-WFFj$M^?>#r(^1Pyw zy+I>5gXuF|cTNAbMsB^|Gbhc(Y{S)?Uj%ZD|{azZw0S7mZn>&;eDGY|Q(> z^Rtj>VDCF^Um10%PD`=PSt7wW=TR6Y0`wCMg;SrtwZ>=);Z%u9p7DVCl`BJRB;(b! zFFfj3{cA-KE4b_Gv?o7~aQJ&}ozv`mOXM&xm|*4wbvN_Lxzj8-r9( zHDgl$BNJj#KqLWo9^fY|1P6|jDN5v%Z3F;|@J&354jNQIoonjhKlPhEm=*k}%&%A1 zc6KHfX)QpxhPxfx_0>W}3S~oZ#`_rnu|*EqFQP2 zEm5QqkZF{qr%*y&jp_bpJK#9Cnbj>?)^D}Ci@91OeOkWS7xC(<<3~4i5`&9(qisfP zqLLm8TM&RBkMKYi?NB3qTZ?pfwIQXx#M=DN;};RyKJt}tw9k3tuLo$=-Dq+T82`7s z-Lr9`v@`jMm5P9cIlzPFLhemMAh3eQ8~*O0;}te6$}P;z3?J;i8=p>f?#zT-0rP&RrwB6@!0vvu56M@RZ3cA0${ zAffwGU*hX_*X9gD?{GL%+!Br$L_E~wQkTw6+f0aMsqE+|znDN-PH`|IrhYEw(i$M4 z%s3?#%RM8p&k%Mx4t#oCN`8pCh|~E=qwubWP*j-v4BEcqZEBJq-CQn5Bu3oWNc8Bw z+3^p|ZRd1Nn^0a5Uuqbn8Bt8p8>g}QAwkR{3&m?}5+a1VDzn$$!3?ezWsXto8UhN7 zc^6~n(JJi9EDV9Yi+E`-1ib1^G!OSw7@(D@^i8k$e-79sKi@w>82J z-PE6f6-NON|IE8)=43%r%ocHCnMK7`_CDB^gK5g$uDrBp3!kRK`S$PTmXnpinD}K# z(qIcPvz6U2h_Dl{G_L1lM?MsZkFz%iZJ1l)mqiGA{gRP z+I%ug&{@DG>X%Jnlr}I3A9MVb0;*%ZfA|N*R`^mKBsqSA)ad;+AZDBme}3ULY(sfK zb*=Z|r-#jLML?9;l;r*gnMPVEVoZ(a>_5HTGy2>{oPcM8|38}k-2;d` zYu8kEx!-FA{0F`9sXt#42BD}*$x z{XUno26`g>w^>B2et))c1J=ru*I|r$r{u42iBkkNMV!HKvE!1NVm9xIfG!_(POia` zz?mHlckP`NaZ&Hg!59(Nl^2bJDvKz|1y~t*5Lq2|7P`nY>1ZFc-=3@?hVg3h#)-+D zOFtGPTMy}Zh^I?_0vzm~x@H`NFo@wi6#NlAx%140!F5?jhaGq^zGb`sIM^$29Aq0^ zAScgL5Q&NH!6BmF5^*$}5H`X$Onj}`axb$=4WdU`o{7vewXIPjuv}I6*8)fX-6)x3 z;yc;kcx2NU5plJLcLYD6%T`~QSh{aPr+AT`uaE$Rh?3A#d@XylD&>u|G0(z!{9gKA zT;q;Z@zT1gSABqqRzJ{D*~Qt*ya|Ho$HrBQ=82(j`*${KpjPnb`;HQ%o13abZE#{+T@ne$u?NwwyR*-O>#3*HkB1 z=~UNU&AP(~(loFxC=!oDbkD@k@owM9@Fhe;MjhO#m(7=xS@Crkw7sSJ=lB-u7Hg>xy9svxV02 z-_)uTNX7CZKNH#AFkdidoKQ4n4XWdAl6^T9OY#|GJSBoTf{?D=`+{UcbDe;nn6c~Z zo<|-%0-7e_c!R>zxogkhW>z<{E5OO%Be`sUNwlqYJWE^^14v90oB-d!m_ijg_s41))%c(`DUCocNhGcgOVG z@H}t^v61Nh@D{wC%6U5c^|n>?U?$t@e{i(coCUk4xmI`IbfF#FOQ$p0WH-3w0sMFt zI6oRj(k@~UruuX5&5Ef4-n@ zkvO|p?;Jxj%E4ns%BrvIvLMD8BTYT%3mc6liV ztxit2inCrIFvq7jYf=dUlLQ=@G|I=h5xs_4m36_%iqs_d^g?&`cz)He85QbhR~Czj z8DR9^EUTIq>F*MMT&jHVJ!L)R@paQJR+1=}0;q}8aQJlHa>A9yd6PaGmClpxx+M}3 z>zk8>fa`=I=_d+YX55flemK2i?!WWo2Y23ALEkrPm6Cwhk0O_FFiH|?+wBt$W zibf|Bqd3`s9#JQkSuxE3q>V_7;&@{eCmSG`C69UnHLUFyM8t~MJ04(aT&r855PI63 z*7VGmP|&GxE47h?1_#94IWq8sqBV&>$;i}!_9#pcv>b0f)tbI#R_VfOFzJrCw9hd` zNL>=59_&>#&z?F_SlQ!8CDWS~skvuf)F63>e1p=R_kM;H28il$t$WN5e3}lQ(%!G7 zP#0U?Xs*m$m54&ToaAG$?AJX6f^OmC6MnSGVh{HO9XS(Q`^Ue3fH0NLg)5i1@v~M|as=eVe=?W3CJM9DHU~ILl2%sEg3N#NW>=s@ zThzFJ{|NKbFO|uajTa_C`wh;Xl|Z1cVQZ3EWY=Zh_?C9@3W__GBGjW$A8-4=YD;=2 zFzxddayuHtdrXMOVtg5{22oot#mPQpa#f$%fAPH+|YwIzRkU3gA=*Z zKmQ#eDStGNu@l-L+LF!3e$qSl94mU1rAq_0X|-rI-iW$vuuI~9vT3CgW44PDUzPwR z+o2o=P2=xDK(kvdB~Fcgnl6+~nTe@XoQ{TJmW{N@`6CV@gf|TiFA-VnHg0mUVguF&_A4+cjd}iyUMBY6W-#(t z>~CO%JULAwpX7ghU!|agBOr4FoqOb7W;&i6E$3Eirq>xfrnSiolzBQPJ<5tP!E`6) zD)77qNzB-w23Y1va_GhZCavcWb*;s>VZ^>k9rH8u7#V${=xp>pF@@&QKOA+p+b)&m zYWN0|hx#or1OJ7x?n__%Rsw%xda>I5sW2BJg2Rf7m*vMV~~o{RvcfBJKEj9RQ?(SUE*C+zWItdT7d~+VYH^F#YmqttrYo=47 z^PYprXlE1)$-38TL3pR6aNhdmKxS+t*>a%FTKm4}?aYrI8KcqrTB&UB_T4fEi~McPpNwY3#il+P?bFLs(@eI!HL8X%V@7tz!Fnq8AVM6iG~%gSHpj?@A@ z#Iv^#49gAwiWLiTfn`??>h_cHAYJH>(C!rcy2FhX9QcMSeW)+6#Ue7<-A=+lX?1+i zX0WK*s-Q$Ehb%N#mmL6*)m8^VU=+{FVvD^Mr_*jtMEXnltLrM*opx6akLeYEo?ol^ z&)8SiOFVTD)1B~!>*=n#g2?BJ`4P;7)1)*RA5=N(`QX_nRki8_~C@hdgPtY7v;6OOWOq1^dEy0P~xPpd0yO6e@x>xgoOANur) z_&S<;1z&{%cks(g? z^1gdK1AA?#ogWu}Lcag{Dn^-R7~qtKWaIuwO28GmDr7M&2NShQ+T||svDwJ(!T+M+ znBTeJpAnxcD6=SGH%z|bVJv!aX!k-%?Y?AjvIb?_m}uW&&=TTz-uz>_zDz)V7ZI5L zq=3+w@zigm_O%;3k<#dS7czGrT<%r75h*7g7du|yJwauNzNrp8P(f*tg2jc42_V!# z1qy)*=rea%k;r4*gWj@YqJJZS2!pif0uAb@F+76`$JIQz{fgtKJ(+>2=Puk$lolOu zuk||^Z~3z!b%$`46tiIMf`|bTDzN_V0F#CZqyxr{P+F)Tl7%JU$jZs{!-KKl)Y=kg z846ArHxlj_POhB{l6G%*fk_Q+qhp4AJY}Zi_xS+qAw^pj8M9us_+SnSQ-7`Yw*p}j zR38lka*tzSzJo<30IM(CMl(rKpTK%X(~2d=)cT(JV%N07e1{**rVE~9f_pn&Lf&Ea z*4#U2rfPH3PHF`SfvH5@2z1J|q^Bzr42|I}$jvm$6|-ad`WPn?Lc$^Z4F0jOz9d_N zFo^I*0}wEz7sRXkg-=@EhWZ~J}g_GvC;dL685uz?eTQOE&P$5VK#m0hefO>w= zoB+2kqt><01@#y{cI&zdA~zM;nV!c6%dp+pDC!ZMNKA^6wnQr>kgPr*u^+0H;?H#y zfI_$1nxtceOZ>}aL${F5B(7R;M+d6Cg`ablHc53C?HljCKrfRd%p~d;FYZxSZF7d# zgG(08^*8eEjQa45~b*Lcla)M|9kH_XoHI32?gE?qaYFvqHIEu?$8_ z3c%H^FN8fRKhRQhu)x*ylmo`Jc%_ItK4Gn!{_)dm#_m z3-WZ?_aAVEP|ScFQFqV+Y!paic&-(B%)F-}z;o-G>lxc0F;v%fmU~WqUQO&o)E-Zm ztm5@WS5**;5?L?Qs^|o>gTpY68LWmw?CRi0KP4r7R;r-T_!uTCyuClUpRKT$=`OJE z4g2$qYaqff3?ksu&0UW36IicFJZb$i$92$%^s|iUcnpI$pg#0z_1G%QuLkNH^atdV zv+JE{zuVVyW^JOCM5i0<7+-8V&F{G5VYcBi|BR$M2w+D|&Un!|=jhv1YzYDJTzch~ z!-h=VH8Q~aa$(F6I}@MJ8hK|C9PgL8zy%J1AcYIlJJ6*&iau#?%K7>f3-1O(+f^eQ z{@m84Z_S+d)+nC%SrBAZ<@IgpyfQT)!pfF3M&1#%oNpc=%9?vj^H8;mKX+B5wjQ|w zk#$Gm;wWVQnZl2X-4F3>naOml05;}LWr+d7)X4ccG!QY=K~|C$$al0*8Pu6Ifhs4` zGbKc%(wAo8SWE0bdcr@4UhbSPN^+H%k7EJ?J6E4*`NGOf2jqI9B;XxNi3yC0P^Nq0 z4>LLk*o8B8`(XFERQo}Si$nlX+}=T*^G419+%Bjy<%B_=rw^MHUJ;*(4d$C-!*n?5 zc`hI{7s0gs8_ygzOH}X$me{KWNAfHgcX3sP;i!}Mt@?DAwRT-Mb=jD8(p>j*PZWYz z848s)sDzQ+c%1PMfnEGSw_>3LDOp@2v46DYiy(ppXMA3pD=*U4fu`?{QJL%__DV@z z;`@*}t#x1Ko^yAx%q^nV63ao`T`rxA2J}^1?ba$!a|43prg4?(&O=eRtnU1$w0f*Vju6`cVS%=P?|FAJ1t>wS?ANou zsf4SOhqE+2dQ%_H<=)zv+%`jri1+-3Jn@S2qgR7a)D(cSF9p?2`EJ--{%Ws(&j)CK zF5?%MZq-F_O$TgePJ_6GCVJJ#HM5Hbt&7iX_=xeNu*n}UIrdj=nzKJ$09TNs*@p01 zR(p{~Lp>utXX%;#cV8^R-P#mO2~nW|0a%P2*SmU-bjJ8X;g$!fU17!4Y+&)g1Z}!r zhBdJMjHH~b)WJzS0CFIFaCsk;*MMsbqBqM?Pr5E&_37*s<8(>apyxW&RzNa67HQO zC2G-pDAI$K_%MerVOcfwW}S?xb@!Fj?u&bm=PrsMOe_^FAw$=dJOo%)fY^hqeZ(^# z98bs)B>qgP78=^wpD=wsb!)j-rfx0w|8GCu zwDpG^zIc$=1@i}M@pk4Nk%*%H7mtA2T8Mgg)}e?>cv+@~5yPuz_Nmgp)Gg5H6_lff&RMLsrZ$_SGWhwX(CIzC!4aOYZqPM>wKY_5b|u_Wm^d!CXz#Q?M? z5ooRSVWW;Fg><#7+~xSt0tBkw3dbFRbZwG&Uvl=;jXEnG@_%h`T&Es|`^+x}t#426 zIFqq0T)mK(LpR4JE8OF?C%D2$SVWks1-TQdLn|!rJEJTU=X`RY!RhWw1xQf=WG2-f zuCH`C?=qK6e@yr0C1BN9NznVt3@sKCn zSSkEj+6;kZ!ry4u(BdfH)Cl)G`qlZ&H9r;f5uEb~U6U~#p5}u4#CrC4I}O0kfCAyh zO$6i)4Qa0IWNH|se<+Iw3qr8=7MN za}XYR0XB8-$*N1kIA%)7@z4qlc?=FZV`l|E((r8@Hv#?hN6m9$B;3nnq(EqpQW~~0 zC4-REA_axkG^R>?TX8^&wCX8D=>y@_(iV)wJ)r2i=_u($j1CuItwni;{P|x^ZV=cw^<`vF$8Y$w*-%#i5^boby^(_erHNNut-~94FZ>%f(tAy)3QT`DN}+&E6m}Nv{Ti2KYD*Br^xVE63a}4_%l%lkq}?h&ZDJ_O3xKzUX#4-!n*qDDdg# z8@j^4Ah2uzCf{4lTx->v?O^IIc;VW4UgJE)#m}J~!zu;eCc957Z zI?4XEQQ#d_NzN&2YXSYV{%_;y#CXLQQM*lH0Z6HvYFTYjDY zxn%HE?zsPN4EvX*FMoMGtA&dik`I&cZe$E>SC zv{--o#oEOVu6WOOjWyebK{Ugh6yuCaXWCCH6)4t-pL9MCu`W&igdUEly#n0ez6HR& z`ZAuH7mg5mb$TW-Zrs4p^0AR%qyuY?Zn zT0`g|Rs(Z8YaA81JMFw`pR$NYGXnG35dI^RJaq4pprt=)_`OIcJX#p6L@RaC9DoT3 z`&&RRIIC4D9B;^xc+6D}gbxLyZuNv*OXRbI+ksw-ff&cgo0`Kmzc zKrMHfKO2wZqDMBm4fpcS+x-u4rGG&M4FLZ$=xBf5^s_)I{)4r(+j0itP-|@9!JHFd zv;r??YPZ`goAc<-&xB#eS&>s{n&KY!avPIiB=f#($fb&thW+G{Pcq<*5Q}9W`$4fH z%mVB{y=jMXrKSbNY!D<KcC?Mwl-nXJkn`F945)Yp0 ztzf4o&%FV2yLQS<^J5nX;{5@DSujJmr~%rS*}KN|BUHpF^Ciz8(jqkxR#Xd`BjBss zuF)M&ZE<3xubpl;pXb(dIdm1qRssywrdA<4N`y&xrq=vUNZOuDKSq16DM-I4P$J>BhMB_TqjMM2vYI|rxd8)#b`FbRJl2cSeOH=Gkc zXcAmX2X;Ucsux=kSjGc`_4nBBC1vp*^0s(!m?BvpTPK=QQHL(3kpe2BMGHAmFBLzd zyXklKUA03QpWYv7C3l6UMGbYJI&!?BnwuFpjja^3zhJ|ZSZ5Eh-L+npb^T82N!24X zHI}GaoV7C1d)oT~@*ACS3@*QmVwF;Qt%!>qr4Q^QZ>l%;sx(=pj`{v_P}Ypx)ulKn z`ZsQ}CJXD1P|I#axy%l{Vg(;prmoKAG;^cW-O3GVxplBDxFCdAt0n}^Us$94VNybn znimpQ)wV<47Yr3azFlB*jEyVum93^%Cd$9ZkvJhQm#os@T%QruFRe>79b|f1{@ZVm`~_>m>W{3&nNe zE@|Hv3>>MQQG(;aoK5_d^8*vB~tHrV}5{d7}Nud?ESt z7@m5IxC94)O6mt-^#rpINK3 z!MR^&ueVi`N;0z4IRn+Qx7wrPt3hyk1U+zVitipY(39JrV)v2JpuAY`Jb?fhKWpG! zc)a>ZI2LDH9=I&}73lLzGma&ZF z4bL~2FWy}1Q0jzYe|Ak8ylZ;tdch5tTk2+@tqukxCpqF|drO?&V_firpy_`JyA1iS z7!0CtLVh4|IPuCHfhc{((Y^BD;(It=W_QqU`}T{D3X^#BGkqd0`d$AiY$!Ponm0U9 zoHsNn@8Znz-dA6w@t2xB%})5B5Nn>=&%4kNRVWquXj@c;BQxF!Wl#GQ?$b^rQUD&4YWk4*J<+}6t6 zOS;bBn1L5tFdT(k(6diZDJo(5h-T1Y>(&mryaVH~-(tMmQ%hX!n8>{DTN=Ef$K3DB ze(Gr|C^jTe$6Me%iwv_b&-L&{rd{i3DGDnaTa-nV@6u8+2p0-q^RH2Na@C+>fw10D zawa|t-+P*7dA$@auQ&aR{Dch+i4zx}q$Woyyh_ruy)yWqOXJ4ha!med!MlhN^ttO< z=o%bCo~Ju@I`0CK_Q_~Vf)5yiAFKfZ3A%-RyDi!Uxso3ksY8CivmZQ}422=C;@ftp z-S>H{6a|rl)m8$f(Nuq&KgfleA>i&S!gMDJr)gq;s%v1@{KZ06isQW2km3*}_$2*N z_FzghZy#|UM#PcrAKYT%*#9qW?4Oy5-D6X@@R>!3EnFVyrhX^93B3PF6b+;y{Rbo| z@Pj)gl6^}PB>O_oQu}HP+XSi7=KfGh;oX4yiFOVx{oD|%v-k~DWt!eSPIMji8i6f? zfFL@(tDU*_$YG1eqiq?}D5am#qQrXWA3RiFQBK~&@X);&eQNK&Yo|j)l`PCLMy-^g z#L|?2Z5C`2Bl>0P51rfgt0wR17}=|n5R)8nKVbH$n^d3(wjkvR4hsp^YNDceyDP=2 zt-LD`YQ*ShF1sTa71AlO!zwt@DqWMSa6B)k@Zd;V(u-1f-9(r zr)?7>yzjitGT-7$MGv6;Uzm^2-c1q1Q6G;%j zrV+QA^*@oK&nvBMFGy0dgX6YA_Uu(7%UMQMgLwC)591sAS<+@$b(8 zuPdAx`*00WjhLR%N_$?{{9PW?MYG4nB%hDqwPl)!o;ngF%!iR|$idDo1sRN^{!R^n zfKP*3B3DY+!v25-AGk52`!Uo&QoR4{l4Eh_!jM=Qkp-_3@haFePaXc&A=T5Wt>zPz zH<^dx%msk&lS(rhi#GM_F)P4@YOF2$M?|;TsFn_a?;vt7UjP86=s0N{l@!y!I;vb- zl@%~wf^SD_hf@BBFxRb-C*h&Pfh=Ylc$~!U=;$zqY;pRgoVoR{R*&?s3MZk z=EHP^7XriZ#n;p&9=KDo5OBm>Zp%NtjV5eF?*N@gd)__}NYQ^oYnoTk3`S zuS0f=cl6OrC-H=urOQutXtYI};51Icn4#bYEqqoUZyn$-nB1Ng{jK__UX;zmZ(ghe zH4GVQP})w_Q^~8y9~)?d$@jhIqAIm--*N$zM^ycxx^MtT?MynDghFOdL#FUcfB>Fy zU0YaTv0$O|gF0 zLTayo0TN0HFhkNE@#wRuBl;HP{g?B8%zjqI{IG2R)3%+u7v;1a9oUsVG0`Fsqk%_I z+l#y=xiTIYY+t^LCr_QhM_@eY>xXhP{Thias8*r*1|KoX1jj~*HbSBYQnJT%Xym?2 z&qD|Cy|LkM1HwgS_uZM@7y>P9w+XzHAMxd$L1!@IDRf*9c~i+of7z5xlyX_WPa)sc z(m>&lHro9?)BZJBEN1>>g>deJeCINK2k<*T=_Y92@!=zR`+cLi6S1Tt$k2K`ZAz2& zhg+)1Hf!AoCUsbQ6>E-%=BjfrcXy*3VS=L-GzW9#qw?Qil%F~ z8l`{&%_kMVwPc?o0x828$II35>L(f*CJh9i$^Tr4SvYvNtG<3WHBzi50gU;U+565? zARQ5~eJHA$ywnp{1Q%sO_hlY?E$tRL&pzjYB`J zdYez&Jm5d`e`oAPO8Ee)ENwG|6hQH>c36yll+9Pp<#3thYJh4b>9G{$nj;eKq% z6?`gaNNVvX3cf*HWN0nq;_QhF@AmipDriPvn!a5x-j*`(=0S;WgMaUb{W3;{&+VG5 zR3|U=d`(at2_+H|uPKPY3Wt&;TvL#;nx(t>MDtFq~Eq{cROc47=19-58Q zuX(01m}A8tgs6QsSdwWf^1fv5qG5+)P<7htZ0WXKQyb+{sFCxzs%bV^6*lQjbLVdS z!aIQ31-(fH_r@rIC65-Y`u_|dQQ`02>ZTmNr|dn~%I<@(fxaQdq{836(M>s44O?xU z1C%aAFpd)<7{?PbfJj+|nRU-*0Fa(*`WnY}U1hT$yKP$7m(tWXEH zW?S$Q8Z6k-G>2vx`x2we?v$ZXVvtQq4gPh)qnq#RdfPd=yPnUd0(>+`?6^m zMvtIv(KD5>3<*@bPAZJmu{f>vB#~5j;s)_lfTO$_m`e+}xD0mzz4^a}y(}IX?Uqn* zwJ_(5&m_2JXZt_f6`T-vrDc4CmaVoJbSq1T`a00#`ds_bgDxd}W#1W0F6m_XX{B-B zlA(|VyQtj)w}O?s-#jrXdozJd-)Qa*(BL_ryfADT;Z1az2043X3-}#R4lS}Bi2hfQ zg@_4^mRG5Yik1Puly1N^bq|zlf7e(V?`Dl+G}Z~El>6PQ+qJBTsHzqTQC22e(v`~` znAZymrL+^&Ly3=QYR>cJF&18VH?Dj9mbmyL3AM%)VHlPU zq_6;$dgW{;s)~N{YIAjIpv=LyO;%`N5c$$|OIdPzK9UJ*$HW7HQ?k-yAj!q`VLvOG z(xBn#Cl}pMPN7mxfw?eB4T&bm&{=lVJXX|S9QJO5^a160OZ@)!dxqUJALRNvwLXT? z@j`FDa8zOH>rURT)ugXZ>y55d!6dgfcQ)rA&no=K@`&D5KeHrM5~apn^`7lVkGnQf z;6fXmEuY;l*ehp0FGk)#e>Bpgs!2Pdp$9jMv?ig{Wr)48#<7gjKzNMrar@%sw%y+&4Hx1Ik(a#$b#91Gf z(l7OuD#?a+wt1e3{tE|FUxM`~E!COsR4)|PR6KOfClM}3wR(+rJt;L5c`qYAwQh&T>3_m8Z4b0{!TDVTyU?D1wFwsA8obt~0NzjQ^_uDpytEle_DR*;Zm&{Z zxqUEUggSIvPj7@P=ox9ck^&Y!4M_&a7Y2O`^{ZP;oPIj;0(UFOTG!YYukmt~sKE`K z4>?#d+bV9mZINmWF74-}UsKz{9}~&gGCN$QsH1VUf32?!is)qJ^Yt>7ZRb0;?e8O4 zrkyDCc;5~k5L9zXhWX|fn5uZ*J#lMr4A}o{0jb4hEnbWi+ZJg`X2-gGtkpS+LivEn zbD1Z5nXsAhGwdsHwG!PtaWDr2K;24lr`=x7pVL{BiZ2by++?N=P?4|lO;kG+a_Q)f z5pzC_?0b*w^}z)hJxb)2!rLr*)YyncQdx@Hvk`vM*pro^wPE+~i>sRWc0B z`#rj>;Y&!jNvBwbc>iTrhk;8yz0l2I$m|d415X8fm&u!e+H%MP0OmBD$BJ{)roK_m zZS-Bi&OiAiEU(&xxG@F~D>@d-#pz`?7BWo=j^m@9yQ>%3(K3~_E-g7Pc(M4oeeVf# z-ZXQ6ah#rJ*$`H#LvKMzqydRH6w!-EF%PWr07yXAc;blMDAGni`wz`Ic7u{H=kE0a z|HjsMkk2*uoM1|aHy(bNXtU*Ut}%4Xy2U(5y&Y$n)-#C*?MTzyi&_%(P~S`^$)-oC zU#Gj|U9){c5gzB9?s^X7>p13CHltwWlu1Zo5&`!p?}KBQK26gR&N6TDvTD&{ftxx1 z&AjbbtvYrb%TkxgQPQm^|4~oPNGl*2#W6*vL6yWx9{-XFuv<5#M3lh`BneA?U>i{j zHp_waZC&9)c{ zow3&Hl>4w^~r8=FF|cSCI)ouTRcUIe!-ww63io}|EYR0 zZMZc5qjgH_Ck__D+L3~jYu6+L_TKT^KT_Dn(V^)zoh)Ife#Mry1*1nRykQ{LPC8O8 z)2$5K0pqkkkx5u{-E$>RN&2U(X6+*4uY;ZQ75I+;19^F2+~%mrxyh$-j(f02{MumL zs6Nzf-rq>D#1)o)kCLExzDqNd7MdV zzSGVFe!#+qBgGxU&%9m6fti<_V_SZ3xZgesE(=Y{>cqT*LeQ0{r+?#;6-qrUtc^CU z5+&Y*FNj5a8CkadOLM5i4KLz%S?kmHhACiykhpHe>9GF`RThuxER3SZPh!iO9Wc}A zMO?UMogb>i<4DTb!-BjKHv~r_QKRO0m#eHszI5OE!*g&bQ9RQ)#B^(xhs68|__~W`KcgJs@ zx)a$$5hy@h)y2nSDJY3XeF8hs=&+io-bLSj3_EnLpaW==w1CQK`pW$oI|P_F(Gg#T zi3oTN5XQ)GJxF=8}M1^om~S2B)m)ahAvU1&>BrCS4hp z`QKk*s1G`4VGu}TfTG1>PN^|7BbJ;U^?i-*#@sM^iOC!CW-Nk_M9?>xool`(a z<|68%_6B7XUgG~j**OIZ76n=M*|u%fvuzvoY}>YN+qP}nwry*wdnRJ~qbH*0`~2Q} zPDbX+y`bK#m!R82D@aR#L`(U;QZnwM%&WF||FRj|uI)AU!0D?2UrUK*SRnIE@p{z* zVe=#Rsm<$vT_q)m%Nvo@%0*D~=&B=_ET*`(^fv{s)kW(BJ%YIqWOnteZp?i_ zK|{FYdXRS820wcsV||*OBe7qtKcP;vBS=ygk~CXBspdsj;qRkhsOdZ z$1_|(8zDgte@)t^pO{S$t2$#>Sxei&yMT{F1N7LlYx%-CicFYeeWz-|_IyzRw{vnV z5)eTSYkqpi+)TPdV-|!Cxg`n&iwlBlq%X0(mcA+GYqSjPsYQxaM(}wY#}R$Bfk58x zCq?;ruh|=r;t8toj=xPBc~-Gx@U#?-Kl3jqVNLldutFF}GP(TJ$JKu&-C8UHMDq!5 zR}RPH99CWO2x*dTs{Fb8MqVgJW_2^cjKm?y@PmOX(9DBemorlb&(0%vnwiX{cVDxbsSRp5#!jpt7ilK35jl8O@<6P|d9DLj`a(FqFmECxae zp?xGG1+=aqPT%sWUm6N@pmE?ZmHp-e-8M)Pcs52ZXd#Cu+4ax)0-DmkP9`(R)QOYM z2lE+x5?m4wq`~z_bMr_|&2R}Ph5qCp@rp(U**a<}2THe;6=fT!vJpNNnZtQhQDtu?7NRZXb*eh0lcD$87RvVl(8OTv4iG)a08g^|YC zHb$9^7`*Ui3V9Rw0K`^~5&JCvD>WtVbr44?aTl(5@9}xR3JGmAqmg210oE#%REzBx zxX@eb!|M`;szzK5Fz#=XC@P~cw(~XJq_Y;<*bYCJ?LasI89*tYhm*-1Oon99oa#>bBgfD0s#qVb(F4vvU16Ew(r;U)WJD*BKDjv#Z0TW1hB zU)}*DO^gmC-{2=+h9D|tB4VznZ;LxlBQMsITe8c4^x}Ptgax9ey_$jfH;ybm1-SG8 zWT4*%<@Ab_s9nK`CsbNUE>HF2Yc8A>7GBumX-;mA9fPYywMu~POi_U6(-PsoH(4Ex zp}zucbKmC;-)I!blgYyhEkvoO_uSh`+=pY*lW95{*N1K20!Nx&Q++BG_Q}hJAeBwB zs?M-~Qxhuk=+C$W7=DNxten269Sm*s#;LKfmLzKqagm+1ID^0x0V7tQ_ ze!X8EaiLPz?+%Nin1dINlUKell%bOemA&w<0G&^)UR)rPZ zz8+mhCpKcge5wbS`{*#ib2L?vtE%pE^+q*8oQe+Ktu)B-HY0OiStcumH76+N+&3cC zaQcA3R5MZMaCJJDykgC_nJtpH2x6%!+2(Wg52DnzBS0tO>?Jt1zgK!)vJZU!3ZV@1 zw>2XFJMRzl&qS% zCXck8Q)%fTS*62_$V`B9HtFE3)8i04T8gm0VL%;pG}vdP+1p`y?%Wf2maX4$gW#B6 zvSL64$d(vVp1>4U4P!k3EC>bR&6{=qoMIzT4mlCpyy=I;j5C$@j@xApN{mpDr z);4-#F8BefhdI9IHCQ@o(p`o1=GI%a3({T@%_qRqextUB1&vI=psWn z>#5eRNRHudA_xJSss#v|HY7*gGa(hQZGiI+&t3ngOJnyXY3rd{avOjR^cgNH8T#s( zYRv9K%GOP-3mYi4nx&$Iq*M((Ebal);Y-yd^2#MzeHb1x;4ue3{>r&+Cap(n0|MFckjwc+MZ3mq4-T@|6E;Fs zOH_EoyYV0+frfn%VRLBO%xKIlLe}QE=S7xM=Kg)UlJvkIQUtIw*TY7u^gzw_JjeIV>iN#QDw z2rh_ho$G_lXHzNW)OlU<%c`~5{dgp{6tqdzn`6$ZF?1;bI%D*L>c0>l5Hr?Y{~*eWvkF%lbckNF4601M zo9$}jOz!SfnQo{nqQd>}V?J??hki2Qz|mqqqbxf^Iahd8(h_!v^mlOy^fYzZqcisk z`?O%dgf|*|JM@txZnzEw8^PVi4`w|PcrkN8IL48o`N{b47a{v(1G{H4ev_J4Vv#sR z1Rj~GqSP*kWI^t$t=RRRHx3p4Fu|^lhc~=`3y|>5*r}`21f&L#Heh2`Z_1tDiHxcP zA9mE#Q}LVXR|5$-e>@MML19g!iS|&OcsgO$K0PR^rKJY%5A%cC) z0gclk2D7hbs08fl`F-;$hw>wYRD@MP*oYgilvt@40gnP0Oa#k#Szez7oDhr$!qt)* zBFcWHc-g;`5q8pE<%Wb5NdV5u=Zzfdb$-L!&fi;#3mmm;twlcDf`FZK&oMm; z>|Z0nhS^o>HyE|GzCnaW6uPbe$b>1}9}2!ol&_vXmS9CwX{ayKUm+AIbNLKv|4K2S zs(oRwno1&8aC+b0{kEtSsJ#k0>I#PR9^+l1>4G9Pl;X+OgNdDumJta7=CBe%0Iqx0 zR&wLrjNL_`fdM*`FsbmnTf@jgpmKMGIt_nsqKYbim=Qy*k7J&lhZCkoKX9-oMyW$4 zm(C(?UIScIc%tOl2Jv3w)8=9<2Jm!VOd-Q-ObD9__bdcVM>1nD0GYeW8Lb*taTwrSw2eiO9fifX ze4{Xp_w5+!Ui?O233%b+xA4IX&W41RcBP863nC7-u7uSj_Wg$)+_&T8oV`m(ay7b0 zU;HUR{;GpJwG&^ffI=PcIMljJsv=MX8tQs;&c;jh4O>CyWF&xe0-RQ1j~h&5MVLEB zdt8!oH!|}fpVLEx-8OY)N2k!+`jQ&T+3-1{l)1&FcS=7GTl=hp47&Bvp5v9tHjooKbgud-lJB6YVU5!*%;ae2oSkK5`K=^PZuD^ZoewhR(S%2cP zzR>bs`e*4|)o2OpdX>1LR0)(RC0DI9nk0VXsYJt_`ueSyI*w7}rS!b6(FYPOhij^k zFB~md0zks1&kYGcsYR&aUs}4-P(>ERtSiK4wf1S0O?%UFdhmt%^@R zmL}jmEF5rFsOFkL7>>Tv5JSe)kKOCld*0!+U~Sf@51?tGmX4fRyv?}oE=cfBs|IJGs1IoW&`{ze z`2@5!Bid7(5$a3lkKqv)76ZK%x7i$6GKC@*3t0X})-sLV_dX(-U8_B!UVoU3n9Z2x z`7;YlM|xB7Uiqr+wUF1qS~Yo%BgV{DC#>e4^e5#2vzuNHxL~_eY~uxXiD^~jBUm9A zGufXz#^Zx&WQ<04mkvpE2ODtn0{{T{_*(!Z`vFn|0J#8wQ~>~=H3I-heF6N7W=8-3 zmUM$;pqQ>^`v2XY|F6R>}kCN-*vzDP<4Zr~+&G`He&Ro15=2+C<*!Zq=`yxI)-u6XK$0ou|p&Y9AwXZdgM^i0ws0OP-K zW7P+eoc{$s>;n{j=#YL@csNi(q>tX5&#I8|n*JpDbE@MC{qE$0CxXcl-boiE?BkkPSL=>kH_Kd@nuw_^i%! z0;ka23F;|8+w#fCL(B;!K&Uc2{?8%xX`#{1PXr~Q|1M+xgB_#Gr zT!=T{;sQ`giXVr*ER^Wedg&t9b|{Em;iR$b2`^FIVPZ^CEq{0)z>8@> z;uC84X&kWZk}!hIVg0HN)wj(DmP6;iN^G) z1I?*3?*}16KQYjft3VVj3)cu6@B0@WtONelsXrS@fDJ7tv#w2?d#~ZM08Ku&TdJWTRZ5^2@kj5+O##=e_0+s3eRY@C`Ev%rbU@t`d)~)l*0Nom zuA-alRIsjFEm1R~Sh7Zpa}MNyPLcBW;`A4i%c)+eg8h8UZB8iV2x!EjJqB~ai6XDT zlQ)+L;aEleJA;rmqg27UTG; z1770Sr|~-|e0V_p1f&cKG+nqljPS26>HZ07qOAy<74EHLEB1G!adxe;EQ@m z9VSSYRejcVQ55F58R?B=w#1L#Hx2c!-}q}AG4w3uHBBSt#FV={AHg;AjsLLK39~18 zvF8V7{9X$hWWPoPWf2Zn!pPtXjagDGhWWQrMFgIe^(X=7Z2_M}Q6P3URWeDKP;{sH z1mitmV7APs9zQ_6M?4^Kf*}OEozMquT^t1>{5+HyCC8!~$_TqD!kA!1jOK z&~$A8@WA_7qnLYn$o-x>i3uQj`Yf5G0{-K7XhZtLH~a&403bL3@JGJRfgK1}Y)TOS znZk)Ds1Fi*qVU`eAXV}g9@n!4(SpRn9_vO2qPH_-f?RZ41Bl}_CD-FT15@ByllxJR zXkaknW%3d*5TaHHq*2b_cx&uWOmYI%pNw6_f1UJq&l{y0_80vgM>%beqG-5|zcwzI zAsm6!)+Jnjbm}%-Iy9Bl&sJ^yU{0;yCf|_4o{(9B6lb}5|M*mP`YRp%hOqJA<2c09 z8Xa{$8*XCfDi@4(3d662SYCPvsc?jQ8fm098PC;7U$NX@a_R|FbI23IWTM|^Zov7k ze-E?QP%;LBxr{-<@^wQWJg*u@OhYI8Lr>xjC6YCvfBu_4;%;r@W&)TLe3Fsz}KmvK{A2@k-bMEce4 z#jvnirSSBWu@ueq&mdo)xuxmu1{*;fK&Q>S9jsziIbyZ%cjy)=arYC_ZBb^ZQog4y zFdQOoXJ^@5mQ~8}K1^&PvQIdyfnT&OFRU54AA7)_`vTa4p%74ycJ%_pqzing{EYHrR~U!VQo174XoYJBHe0`OJ= zy@!w-hAsYu;wijK|4GBXu=V==mS(M#WxE%&^m)dX1;IqNwmYjwt6yN$jg!XHU5BjL1h@D)IcvF7?e?C&(22^eUhWCj# zuQMLK*XaU5U9oftQffm-(4JFGdu?kS5QFsPpgLeo*DhokfI}Np@x~y~RDZDFEw2e5 zNL6F>-oPLKNI4?4)nb7rnQdPxIG6GChp8lK&W0cn-*C(BF-1=bW1WGE~O68I)>s~ByakF;sifL#*?9|Qe0p}$797g zru|fG`d3?W>Tc(lj+n?5wT_WDhSfO|gakQh4?HgNkHT?x5t?vdet4Fa8Y^H1KA7B^ zf>oOueRo%y_N!h3FR^mWw7){7j}koR-`Vps?3hq{xY;(!S=bbS^ME%{(Kvq<1x8!3 z6HRI@o72|yJ75CihlVCQPuG$qsml1tmh!!P01)<0WiFLz|5edSdUNWNZ7M^kyhZ6= zBeTHg^;2N1NSrt6Oje7XI{%3ur_g;Df^xX}fKTmhOo}xerZ0|EOi} z<|9Ua<2~p8_7Ue#%_96ZnGE8Z1A56zV2{I3ENgM722na&cYSlr1+dq#qwQ;ns1sz$ zs7Z@^TvVMJ(;<^mLbHcJJ?2rDUG||sMeMb*ums8XaDi*25f{ueyymj~&Sz1bH8dE% z>(${b<)R8EqMHSXH#Pe$0%JJvrjQ8BePsz2RNez8`y~HCA1pTem)G7*ig%R&F-z_P zwyz3myO%BZJoa5h2;9&slin;1Cb=osl>U)aXyJ6ddh@{a5$8rEnO_p|MCa0P=leU2 zi+t%#pFEff$5ph5vW09tL7$UFJSs3XdDfuUivLZvGu!G@AOS@{ZOcdFRdPbyGDh(| zBq58TPDV&It2UMiH{yc7Ghqj&=(B}(6N=T5hi2sP2Wjh`%G<=omc5i`Wf1ZbHglYJ zkg#?kK@R7mIMKp+Cxq%}PXBaz2I_V8Rsw}fvmt2upTmowN&h#&F$RH=&eaBwjZ|t9 zJy_>{6!xG|-BU#oKUjyzvAOADTbgTDYxi~z>5G<;x(GgLdla$RKo9<2>rE6i6%>*s zm{75XD}hjvg&B}Uyp6RoiZZCtrh}tm3@44-yzv6`bI+=jD{emD19l$Nrh}x%?Xs7P ztQ15w5Zkm@Z$jv9=Qx(rWT@%Z@18e)E;T7@lbeDXSg%=r4bo{T#+4`B$e##eP?q+N zy84UxwG17Sdqx7xyT@3Ej{UlMn;9; zmXLkgX}!1{H>d)G9{tUVf!<1oG$E!3?x`=UA14?U@dVA+t>Z2~pDNP%ePTc~d093g|IKWBX=nD6cRm|}$G zg6W(jRGW9EyNby+{yBFbDE;uV@D4aKaL-t_^bN?1NIF{0v@{zvluj-}1ciYnq3lZz z?eT8RYyew;b(~vHbkOJvY709Cl6-@sY;s}>m041=DtFH>a^yw~7*hS_K(ZBlU;DF+ zh%1ci;)j{L@@uIdHjKr#?j%ZPWaIS6g}}BBa6De`jImnx0(nvfd$~oMN|2kD`&d%E zPEhLK;Ur%B!l?bLF=>R~&pQ=l$OLQf;&GN@x860`7!qCcHD58}8@yDMu`r;!Gd@ea zHxUNLM};>NpB+0AhkN+MWtdt2HJ>m5NysYo?S_+aF0lS%Xn+0Gs*)C>&;A4f zTL#x$T|E%nitchVTLvPB_bm2nq`$=*#j7Qa@2TY3O>scrC%DJYsmFppDHoJBdx40< zkK2gxOf`ptzp~06@n;V8dFVvuq;ZZmL{Vf(pGWlX$;s?S1*zjD;ZqY=iN@cwcxNgp}uMN}a;@VOI*C|1u0bgn88&P#7b8c7amc_k`@+o)FX~>c-4}g z$kV^Uszo+*<2`6gu_;B~OOpEZ#_{Ux&lB)$mXS~5J)tmH7n?LH)Q z7pZpT=XtAwZW}kgNH@TeBI`3A%OiJuL@)&4qdG;oX4qsmeS~WA->uZi`XV23<-&sv zs)nU9_hWTsKbTk4nJ24cF5pt(+|e5)Hy#*&q<)J+t+irR-`i`Z2VzHHT$kZkBE#o& z18{|VvO%a~PnMXm8RBf%D*(9t& z>p6X3^pij->umy%8tSPNy!R-c;tDkiuVIB7g3%7KT_Si3D3(dy2NW-Hgb%g>(dYwZVjvhczL(AVe zY5^wQ3g?pA4Lswkj7|wKIpJ=Ta1rR^jsCIph!e(;EI9^FUu^btza9~&2V=;m3YRmV zC;qLa%u}-T(`6fyvPdgz^M29h#OB4l^zwyc7!NXsH@ki6t6PIQihZ~K!Y4?}9EDqF z|2Ww?awl=nf^3+N8{ijz`R z=P;Lj2u(VKHFLp)t+LTgk5qRFmDOa7;2+4KSR|v#@B;mFm1mZs-99HpoEw{uo$+YM zLu)apZ;kcX9H zfS3ude@lHWU11R%ZR+X8R>%Qpf{D&JBA5_PU`oZGD5-6;%5gqfSt6}GEOmE}7Of2O z;VX}su-2{)*sDc`gQ^aWrZp+3AXZH(uF>b_ontU5>zqI#-`iN+X-HQo8dZ8tm8ip* zFluIlF3iI2bbETSN{Y$6oiSW%CR&q&7BTQ}%p?s#OKTdnlpWL0!Qa7PUhRD;^ME0o z>nGTI&^4RgQU57VAto)I2x}NPx1b8I_6DaI<`HK~)L(+xPXNGl*MXZsS<7^pT+)u}2G=?~9(gARLVukj{y7y+2O8K^f}nyxzbH4;nX^i&W`3TqCcTj>Fb?*J_BFeVOSOJoU-xR zNda4AC^m?A)F?l`(FcheqN6SS{Y^mYN+ia~8gC8xv2bNzWZgWU}A091QQP_X@Y<;Kd_VC)oj9@>D|^ zpEu&k$QSnI47-_{yZjS*Ve?n-!*pyJ`ZtjJ-5Q?$-}c zdS;dABOjatNxTXb33-L29T^`M%SvszEgA5zAV#b`b)sOkTXQ083Nw2trq2->oGB~L zw0bMQJv&Y^Rt?C@Rby1lH{?fhc+H`Z=nz#O-d2%Z?82AMp`x8dc97mqgWV|2N&{|o zT*lLIwWYyIbG@a;T649P#!3sVr6yW)b)?41|30w5(0UqAcpHd|xhikwU7n%p3pIBX z^D+HPR%BRN0a9586V_XbYN#bDUugd8;OrM>A!A&!R^P|}3L--&+w6_Ai6LUh;su2&?uAsvTY*_&|#;#%LH`s+5cHe(Lh^(J~3 z@j)JJ2I*^BK=m1bR3^%FlUkRZz3!Q&hEIy9+5A^5K27;s_1`ihwItaY>)dvNkYN_+ zr}>~JnkDrSF#NsF{w&>GnQTCoiF%Dfbeu;LOzt9L52y}!LnuDrk0wEQxt=>oL#zOf zQmW?K)FqreF$+C=BK#cH3LGk_tB>GJgcZ`z;Isg;($IJmq1lMGRgGaozB#gyma-sm zuUyrpLrR1y7P5Oxk+|sI{0&F}I`Io@3T)YQtK^3m)DTdSZ|1xNKnA_LJXrhb+drVT zYGByn`Hl2DZb~pLv8I~DE$`C;0p{wbJEuk(?AXWdD6yqvT3`h2L;oiI5|<4|JwtVd zLG!Z>1+#UrNxvI*q09jNmWiI{PmBy$J0M0S^=H?8WjfH@X{ZcYaQ3GArMGpkw9iJ5 zQqZE)R5XxcdNAZVnWVCw0|Nh1uz^wh)mI#v)93Y|n+~fgWjuK-O4B|| z$=>jU2xslr=Uat-OXr+8<5J$dk^v4)b#uD|N;8%Pzz3)DP>Eea4&VPD1w0yGr+b>+u0WyCw#;vZx zL@zJ|lw6;g%lp2Q>zTTlkXtdNJ=YcOSSH$>OVCml{jp$T2{%!E zF>G>!v&;kn634(P&y|M)B1xQW*Hw$XSnZndbP_i-L^_=mJQ{Ln(a|5%J&y9L*IdOd zbYK!gz}oS+fjZ_V0RDc{Vy>&47JzlM@=gMBPIrT1y@R_9%vFAYkBqXZAm>sc4l06N zL6wZs3TwHH*ksgBzO+V!n%_V#lmdxiHPzqU%|O;5=?@>OoQQ`iRf3j-6F;1L{A%Gw z3QnJh+b)Zc%wXP@2Dv!Z1_LA8t*1jiH37e@gMQC^$hIP;*|&_>?lH3*(uBu{X>c0V ze*DRw?QJOX@67tuxe&RNhn6s;R2M9SSTxCjX}gcdSP=q=kG~Y0><~e4){! z8*R-#$;yM3O`27-um_5j>M_htLoNWkNF4s7iU`XKk}Eec17X52oGqH5c*h=Wvwi(&f}6v~C(0D!dXUYRWWiopnD5>fu*$u=w-&gL`kV0>Rxw z$5xcz-#S>BEATJ+xY8T!b~pNC6+}<651@n-O`@%=;WJ;FMS3fJ2UU%P1ZowrUc@#v zfkm-!;o^sIOc(EMG*X)eX`rd;*pF2ebPA^{yQI0P)FZ_9s16utjZcL_=xv{NSJf)= zVRvs8ftO1@M)vXt51sz4POHzZ{e;gg{u1u^X*z=$sCiayRGUYWs$$_8I>w069!P)- zyLqk$fsj6N=~&=rAS909%AcTsG$v-BOG2N}`}F=(tY7Ff%FMtuw!sjEbu*yyN3MG* zXykJM_Japq!*1rN1So!freYKy*y1@&Ls8uRv7UI#43dJ`W@Oc6i@rG#0_Qd`{k-$% zHB05LKB489y)a=L^b7W>kaM4M@Z0{AJIZw_kcBmX>EkJgB7A2CcK- zCk=|YzNE_ zLFHIniqa5#4B5!zRsxSg!Ljm>^Gcg#0b&mT0$_@+Q`EA0c%>}Vz=Hufq?vSw(X4HXyW$j(ZuM3fS>CBNiDZ0)N}Nys(Hru=x%m*i$pU9YdSh+z%vCv~rUdJxmcQ zU*0s0kW+;01C@Gid4!{Lj?50vWfc(%+A4~7J~`E68h)Du%UvUfmQnvaE0CG!T43pe z$ll#h3q7P2PMDS3QnoxP&kXeYjb__ejH`$a>t$4F+mt1l|i{Z<4&P%5n-D5eMH zmJQ*{+&e#zFb|p_qV{Y->egFRJ67lVez;{LVupsKX*LKddR3G1@Eb`#I^#EkDIK=k z>VjhNxsl=l?dhpPr78rN#?K`Jmf6{kBz8XXdY0UuEm=K8$QyhO-CJ1Fd|KQD^Dj_K zM$D~X5=S){XZTsEz&*%at`7oNPiKmQ*^U8W&6_$CRoBO-!jNGc8)PCd1F5u(Jq4nX zi#O5`)cYQBAuXs>eMTuZ+kPun`l&{SdGRf{45FW+{V6F+=nHW#^wj#y{yL#$jBT<8$s|;sH-;xFzO^dpR^VFxLzr9fS7M# z!&^hksG!5bKfvSmG1a0x8@X&B3|0fP#PF?5Uj$}7F_LZ|4d*LuwaDJjFE7De%5E&* z6LKeQhuQ^R)D4HyA};Ir`WSg<#m?yz1xLHjwp{AC4(&f;6M`}zV5JfA96B6!nXGoH46cE4G z6O2t-5ue0rM259^-}!M^ zeqRpH(g(EByTw2X9zdj!0rzUH5033ZS#ud7sU)UDoqymIaMl_Jbg8+gF(a$ z7r6V^Um5jWi^WJ{9J>_WxzTe08vrtCvO4)+r+y|+I%$v#?){3=zw-+IjDdQWguHOX zwr+F?qGzpSO)Y%!&62-_xP%Vn9M0G?&QSOT%00g6N0BPd`bWdqFOs929ebMMV&MxP z>2C9O$s_MhMl65z3+m4SI=@oE(lV7N9P?vxev_3WfYbzNS?-jYWo5x}Tb`eu@{loR z;{3$rQ}x0cL86SPPTlg#?S5*xd+~6h29SSs+u7#OUVOm#{8Y^9{ap@+3}Z|YG6yDh zQPXEuo5n_yDSr{?tpxCtxPN2a$SeQp+=cnq42F=w<{GrT@cj6W#(`oOQFKdzo!lRq0|FSXj+~XJV9S%j@N=+yjr;z2)qt@N$>3gsxKI0JWiYs*Dg+ zkre5rD0SZkkyGkA>fg6)niey8?)J47l$iwpmD1|-F)3XO2ibHm-n~rFn@nup13*W) zsgU5~@{Yag<}EP5Li&6QwQH1q7@)nVOM2vLJSs zs-^U9b`WgM{_0806t>-jlUqt^?j|h@fm@=-sEHxi6QKa362qa#%ddAw`}=p*6#V)U zaM#2t_c;~IoiZX}K88l^I~3)L7f4C@OCnE3UX6y?3@3Ky)qw;6A*DATOR#FOCNc2I zhDuL&IOr03aSnk3(`H(cS2-du`E$TLgaNgq zr_{M(0I<4r88_Q&yu-_F!}TzMx*{vB4O?N~JKao}Av6rA*Rj|RM<^6s>Ea7-Bb?&c zrUb3twV2^F`%h7s&W0JC!hk0a{xR7SD z0`P*xe^OumKx`~>y0b=U<}zK$AcAbHusEo!Tlrxks*S)~A{+YZ$dV^RmZQ#BdG$+& zQHXpWNGad7dda7=48@VmR>w-Z5KARX9mthj>5m5El#O4(TxS|>t73c0&7`p5;disjQ-s*s`%d?Q(6KhW^xtBM2xg(;lR(gmm!WID{ z#NKFyEG#kj)Epb5qaUlXDO_}GEi`Rji|p`UqzlhVO_dVv*>s8^G4C?O?Ty!*ijIjU z^0`H-m;sg#5gIdz7}*YDEI_iS+`f{b!4*Z+NxXR{WgH zHT-kPuhi)AE4b3Y&zG^{)27@tTB3u@h0p@(<2i&1nw2aEr7vp$fZLVXhEq^VJ^7pC z0sN#0pK9NSiVa}rG@ZVPlTDcb9sA9mEI921>g{HjgCbP6*YA_ANUBuMgq46I^PFfD zpe~aB(P`c7K!Ofhc|n;jCP3vcxzCxOvwBpNpO}atWwMPEj^TmmcYS?Yrq}-JaTJio zgM@01<8pD_paeT5B4u^;If;1tV0AI61qG9zhpq_Wg6s~HQrhmhQF`<2bZUBIk%~9vN$w&I{fEi=+&947u0b>Hjkoq@EU0b9N z+}ij_c!n$Og%uBI)@?5feI8@jqVzhK3`k6D=4;UoOI0n})L7jnO`Z8}AJ?X-jV#E3 zRMY(Vu*F0Fu37ZD_*5b0KH6Iq3EZ^O_3`fJzoEj{hVbXgub#;qgF-86By5u1Zy#VmZrRJ}5EL$J^;@a701enbKW z2GvXA`%JC{+eQ?R4Y57n^lVyG+J^?`YrN5{p+yS`O*638S=t2kS1iy7)PkMFKrO?8 zii>flc;xp&;jRiIMh8`J|4>2P?~|+qq^K##;Anm*?f+?=3qD|f$0`u;ynXiLo3?Cy zA8}$p#cB{$a`1KR+MH7UmRT!YZV!6w26fdMnKDRwS$_yhHO7YR!?Nz>5euNd2$F{H z41LjO=)MB~CjzI^W&?I*L`r}4(MTeGOzl2AnUX)S>hO&`x~KS>q=GEz@6;LN9HX66 zqly*oXO7F^$e;7utB$^5l(PE67R@HT*Rw`gt&kuep8{|`5m;+z0tcJI*5fdMQDFkQ z4mYc!Z9k%^j-V)GKYyWF0LPcG^VEd}T2Cd*gvv@3AX-b2xy&<#aT9LvCa#&`Q z+$Q8LH&szskQpFeeI&z|7B61Cew44NuW%~W67>^P5wl0*$=RCMbn4*E#;<|@SG3dH zXB*_6B`GyX$cBLd5zwG}xRj1A``Sg2T;}lX#7k6SYefu4C6RpT4a6tdZzE0WU#AQ{=W#kyP=@qze}(BGJ~+KNm?@Ou(-kyHCtes()mE5fWx@)AK4 z9aSYNZ3$dvlcYv!?I}hDl9$%}%&dy!L2$(|-o#pO>p)h87sQVFL^hUDoku)K$fb^3{ zLgrqcwU;6eC8i;s9ht~f-&Y*#L@WgN=wO)=dB|$T>8Krtudze5E~mhHso7ZN^}vB( zmmvwYd>06Ky}>07=Rf+-=($P&D2Yeqzy|_hr*{tr_i!O)gPXP5Q?f{8GkU)Da4A-5 z0^u8`UM8|1KKwCZ^)JQyBjDdyKf}xU$S{$Z$NC4!){;SokS2{Oe$m*06A6kss6o{; zC#VWN6QqUw$x(+;dkK@OXlAb}Piubs+ICj~ZQ&(nkx>$1Y6_bYge|=vn{8p1+OH7G zGvq>@7!b(OgACyscJ%HC<^eqwvcJM9-<*1c#%F$$^Hqr}70D1}vX2N|g_)`+s4o(` zd4t3O5J&#ue*Is-H@pQ?YaMJr>;Tq$Wlndudbpj&h=1`*!`msu`K1_gq)xv-NN(od z!84Y43Iig5=ddPrKi%_shA7Omd++*GQsB-hYD)858L+^SDP(VG?&SuIqDQGM^aPAm z&iRLLC1`5qL(=)lR?coiZM`o*;!(oaj1pTjo!aIdOSho)SL4C@>1Ve~3|Q>#U}_j_ zAZZjYZ@_)AE<B*Qj4l<*09Aw>s02nr8^+hVDGj5`D3TF7HDmDUgX%S*OKvj*;8qwHcX4BAOk z?8_4pQJ_Z(kk8?E-5rKeUV{J^ktU2<42$q zA3g9{lk(*oU7*T}W7PNIGE1XB$+$~i!5;^35DG~Vi&%NSE^#O~LLM!SI7ob3TAZeQ zY}5^yfh8NWA+)|Y8T`zkQL1Gd^~T}t#Vx9M@e&T-apR968jW2@g0+nb>SWnxYWcpN zCzk(nw)VMpu0TU?oib+;FVg7qQ>1#&m?f0_Eg41c5NieQ^s2vuKt{w;5efw6ikB)e z_uF~JZ+%-LX$t?d|DL#`QO;gH6=|c&AWCDQUMS^oaaF23r*r`GfX-l@IiCjF=?`S> z5A_(^F=k@(kX1lrtvFDj>;g`KR*V-T5uK7mN7q$L{pk-8JFVyal|LD0>bYKK2E$1A z3X{uvr(1yP&77Xh`ptFwWTjP_Ny$d<%M9rMoLyHzB<8PVIxdlxZgsK|=_p7QPd$cY zBuUGQzWUVDstlnlzqYNkClWoEV7T4I!E!lUs(C4()K2>oY6?_@Q_~B5jzLrN!w6K> zA_zWAx;aQ;f5#ezlcybYk>o)Zp1hwe0jjjt6!1ze#xfuL3{zF`H$fgp7YXJ2e{psX zL81WBdVt4wY}>YN+qP}qv2EM7ZQHhOJ2&-`N?u+TsqA~%Ro$o0>Hj-GvIx)<&WqX7 zVa=C;z^AKV4wvC~NL7VqmURV6esym+s2yV8^&7pNy^&Vj3rw}#b#;eZJtvfvLOOI{zgK5>uV(*h{tVI$oBupZAX-s{j zy3Lv9vRaO6!`4W7u+%jjR(S=r^3lco6T4FyO92D2m{#HWy8Ssaz*q*X!-t--&s_Tl zFmPuc@>ibMn>O@oZZI*TV(?7r30qDez>6jlqryaRtogjsy-tk@)S7I7$_K2f_B}tX zHG_oxLtdrJ;a^hVJ`MVY?_e8Cu*%MV%+oY+qT!X!ufWVMK>!?T<~DUSeIAfN2zQ4Yz&Igec>%+MO4l_CjS7>P`J z><9Psp>vG5_N>0HaPMsf!mCmw%sS^EM-(Zv>UG$8Qp|7>oYu_#D*mxy53fr@p!0i7 zjulvRCW$tbP@7XjE8jRyQ6&CgE#zR!0Mq^Etk{5)KwC0SyjvKftvHG%2EtfU+gh2>vuw6Q{=i<;IN?HE^cUkXZn_1vNtiz3t^u-FXx!Yg#0w5jiYU(bH?v5%tM zW~c^|pMn0n%bJ|$(CPR8c8C`RD>V8XX$q#)WUtU;38XEX?Q!pB6kc;a;+Nk_AN8g} z_86ZYfP<*SO+=q+d8m)rBQv%_^jP?~b_q=}-CgUBp^~oQ9l3GHbSA2t?e#_)NLEEZ zQJjimbx7Mj1~`U4ijXf}zcNsd6Tz(piy2)Yo{J}Me+kSA`WdxKt*G#X-H^7m zN(owI#$m|#xNJVc(dQ>9L%+=(!ZHY5!Z7U=-V@jh3sg?iRtKp1PbMwBfE(Jrg;>eC z`UFHCPwCLKMet<>L_PWr0dgAwjHW0CV{acK8n7PUZkr=$6gTf}lTOtddU1P4<~c>`$x7XZsJ1r zM$E-f53pHxDONUGNc&k%Dw&~Ek|_1Tl>9w`3NE z1V79Gsu9ItZ^_hGcIQ>Rj|Zan$7}1hpt=Vf8qe+vW$PdKTQXBexAxqbl+-DSo9Jfb zhD+(#WGg&?3=7I^Tc~iPBwJGic`de;$TS%oU#5VQ8b*d6t^=92GwT6WsdT1 zx+G>UdjKkz`AuJW#Tkr=4>CVGp#{Oz*A3oK?mcwl3~EQFgyZifUDU=Pw!OAo^b+zs z$DU$Hw+aU0my4T`%_}MeBVy-2`ANU8&KqE5xyQij0DII@p-zMd$M?tE3K6F`p7!gI zC?GZ(t1JxFZ&W4OeB6Z*hei0j+WyMquJBwBfz``}j^=?5`aY>GvL3`~{(j8mzae&+ zj7n@eJ3f~p>SCYh8#%y>^pn+n7yWh-53SpUQ!0yEGV5oYb80W*Pm}OhjJWD!TWoDZ zS4+?Kg&R?Dyiz(QLSw_Gt})kO^n z#I_Zm&L$^@>+B}8XjlZjBK&>06a2xR%LHqJGO5R@q#J#V!RK7;P83aNB#0MlXX*wZLDARhiXDQ)G%(#tI?9{F%2Tv|_?NY~b1}^+hDYcn> z@rQs$rhqot_UIFvjKu~Z2T9}_^KkkTt>nW|ca6U!W(b#REI(zeJRATN&qfsss=KBK z`y!kJP=HQ@t&fEa5nwhDK(Qd~^)^Xx*z@mizMon0p+M})Hr#YF`k=XXz(;*KO@nh_ zv`1gvk)wVFy;b1H^A7QZ(E(4>WEVeAM2o$7D9BGg5f7uuH?+vrebL0)6|->wm?1Lb z%2ToczH(B;)?%zS|5`9oKIRbU`l`&~%rcctFI#SY;t1Pp+!HDr*-Nu3e>dj86lE>G z9W{D>mJlhvq!nZle5|6O47PgvFTy4blFi!T_ye)ovE@~NGwEyhn3YcsWDnF!_W>;d z0HL}1^XjzlrtTh>hQ&)wU{N|CA^-O6ksPK{nzKs|)7ndK$K+`m8_--gUSe+mm6wnK z&sT$F=*HZmmq88&LnLHEWDNd&NiY?5ls2~Q9SB(y6`lwlH8eN!!XD{@f zezFfyWKeeX;+9?O>4#qyXa(Tp)oqPW$p79sUYErS|9@kILJyRD9-A*UwGMW4%@1k2 z=0^;%Drq0dn{7NiL@KQ&Cup>Ebrmc(9v&i9S5uQTTe`XmmYa`{QLAg|{?j7YXgtDv zXWhlhS4QM5%yB?O#1~`pZ#oiZE-DmYmuHAU2(u;Qd>7rNhgd24vIMuKrVyMs?8-`$Hm~cqQk@6lro{(gz_KMDI*g0TtvU4ec2ofchb-0@F^YeEu#3bEA!vV~Dek3%>%= zC*kc%jDQ4Q(J{%3ZZ*1zr?;}rI0nt1%2*A1H9ZQ1Clr-v7@A|fT)K_`QKVNieUtTH zqNqOJ9X;51dB2G~){QG-^|PmRnWM_`S)s(tei3#VfG)shmN5KZMJN1O)+ieEczkti zG>>hBw77QZMwl|)OD8QrSL*+7LpbnC>nhPm&L{QVW(;hKthq;w`OfRl1T}9QJQpSy z)rfaG6XE^XgNF~O)Htm*50qcr_3{EdI&h!rNziJKSp`8=5-BMY{GUJf^PEX|FCvG& zDi6;}6#Y9hMFn5z85j~oC-N$k->Cd{lj9cAY8yzzg{2ZLtk$oZ=1#9dmObNi&F zEeoI3%E)Cj04B(dZ6yWT;yR!~G&%|cZc5A#yJ|z~ZwX;!*#sGwRmrjg{E&9K%VXG; z?h20Rt>2usG|gOHPwu*%+;@f8a_wH$0xTj-uafhI!)?@w^}lev>l9x&#WTY`_HF5? zM~`R(+-PbwZLWzt19WL`Yv+D7GW`)r86v8$Az}ew43n$+1JT{|D-Vha)aFer`h^B{ z2#KA+$0&lSH3;zooZ^U7OO(9cjbAZZ+1iU|S8}Or6oc;83DBzItbRIRO8i~B+=G{I zj?^|4@XsMk8p^)>wrKJO9u6HPZ5jEsW}ZM7cM=k!Mnkh}MPhqn(Lj!;yZ)-d)!xp9 zfVWg12oR{-yO-;~us_2V>OT;rVWW&pGP;pQ$d}uCiewy{JB*}Nok4W^Y1a?X2IF9I z3ecE)L3bg0i=0p9*pD~I=MS6P$U97_e@of!K24P!q-dTLOMq=gbhU_kk>pHlspy5; zwcJfFdq-Bx1Zf4fXD1ru$IavPoHskG3-yDkUs7_4FB6dZuII3IDdwbtiyfK_c}ve1 zMa-J^W1hyT00UWCzG(+7D4}O_z_}ug+Mh1Zmv6)mYFa9&`3q+9AA29+j3V}bOVz+l z)~)997z930V$b5YH!#Y|IARY+5&_WgiMDLOB15Z6}no?m(7>yp@S0}l{QS-Ow2S%1U z@nVH>;t$Kvm+%o5l=z}L=vW<~jcv#}nHRUshESH4o2M73Z(YC7J^Y-_7KIn+6R(W7 zSo6w|*iWoE(st^P>obyiEdhy#=Rf3s+M7pMs$dPO9)YR65m!d+$CWlE57d)KvFp0ORKs%XKnU>{oPP2W*5j3 z5G5?7G7uqt<-#!SYjj|ag@Sn{Xc!CO!&?kV^LKyBZ@pF}y-5QH_S_H3F5y)yFLv}d zk&fvDRqTEN@Qm_u;r9oB*iMz@d>od*%nC^)HR~meXfb&0`I(*lRShq@?k(#Cv~M1` z!()Hgk}sy!^iD%=N80&epnDxrGU{K%Qa5a=bdZ5qac3>3&%C(NpTq~)@DD|>Q~(W2 zq80UJ)<4VVM?vDzJftBtzmD}6PThp`N{@iLLGuV`N9?xQcLm%q2Ey&B*!?a#HiF^=xCB!>r}NINYp9 zWsF)VO?B$x;B1Wc#YMqeCT&g}s1jNl1qpq;i4w}_5(dT&G_eD9&CC!bBl)ZR<(hIq zBXKXn7~5M~jxvJd!ZHfoD$Ib-U+_^k^UBd8L?#sm8p7_oWtvqE=qi04a zq}R_d-z4tCfclt#+Idl9fMk@b7jmjuw{e;?ai*blZ7cxs^ryHw|1&i0mMmMzeqUH+_|c!BcmQjqKKvaW`?-2xo=}A|u^N0a#|`b42Ke z9yFdttz7o8ebR5{87!)RZgaR6ON8#@Jwq=tfg&}F$o1csuu8WW?vSe)r0Nrv#Op%t z2nR)Y%1F8Rq>lV=xCo;z1TL$#M-5@{Zn8-zVa7oCyRD^8F+0WeL!y;N7dgsJTAOZ% zS@f)HB3GFBAZf{5YOW+zwyeKD=+P}E6?6WV=8tD(KQ0O0F&mE6@*flLhYdm?*5O?I zYA@xRLL;4Kiy*(A{ySckD6wXr&sz?cQ4R-|aXjEJe(sXZAee}Qk9?Q@xw_?l{=7kj z2Qtsg#m%e9HzdPjb{?2Uv!3o>?sd$2d68_g~PST zSYipq_if&}&|sF;xLIxwRI7|V5nA3_z7`P0S`f%n?6PTar^iu^Se?!~%H53k8@GYe zpU(9L4vF)F&bXAI+eWgk>RJ@Bzwk zFl`jy=;}nBpNW%><&=@#2u(_hd{G5A?ql+065@u8AP<6YA@>9zUk|imxX#4e0p-Fb zdvt&*Rl8a=+&bxOSbLiY3EH<|b!7ZnjX!&}5^neAdtqABDJ7~lqnLjWF!aP22se74 z*h5uj&K=WXyPji)AJL=}5@MKqv!57B06nwgkfXr%E|wyg9|dH+%gQMEs4NOLU~?EO zs-?(&I2h&g=e9c3sVVIPJxo8Cq73i{l=}K8#Cq*ei#4*NmG6P!$rVPOxm0&W zH?p57p+gxa26N1|m(f8^4QoCz4^aV9T@gH`Fpww;#Y%CyFAVFih$bqgM>0gIGrh%@ z7_4Ty@OE4x@*s7?_3T_i@Ifa5bnQ}Ili>7H(~Kt`foNcXCq=s6ksn%Zb*BT;e)s4T zO8mv{Nc#Q{ovJqf_9Dh?Z^*RASXPl+r2`tDe|5R%$3@K=^y#Kkxbbn~1QEMs_9)WA zeRYLJUj+EuX&(khGBzzYoz61g+Fu7U0~ zdQ`;jPF@S_BRBEd7x~96!tm7I=O5sJi&N|1ncq#xIH$u{4(y594-c?vw!w+E*K0dF zleIleO=TG;A*15@z~H}TH>BFd1UK!BEPmhr-O}kBjV*7bhw{ZsHf3ZEE{4`|OJ=j) zSag8hVbyx1#t}cPoaV|qX|g^C1`1;2721BQo)ISsca9P_zR0yfR1UfW&H0Ne$}AW!X-vRcgH5=db3sDu3mowJF=|V$U&oUhHW@<@z7}Rma24vem+VS=vduxn1xse+6n(XqFBkrW zax#$2&S{hVyJIy9G>YaqH-tyW$u>-(x7)d%gioE5%%sqDu%pIeL_}%%c%jYgaDs;2 zJzQ*0VqtkS{_D4{nfz*N`5>@U;QdO(ux0`73xMxkxtU3Ma9gDsa0qBJ$X0 zt1!mig&|9fW~f%jTy#@)Jk26vbiB)?iiyOfBT+Qekq~y^ieF+_3W>KR@g-+Lid^&~ z88(1V<>qIB04vsGZK%MB_beD937g*VW5y0i)iTek712LN>qqNjM}h{0LOx zB4V?TWB1)$=5|L1B!npMbg6MLK_ao`e0!Ow1r)!u_Km@z6r%X`We@D#{$WRsU3s?} zM`V1$=5UKY&&#U>oGyW{+vR#=(6$nl^%(`tJBd>s+KflIFBNtA-k*v(A8Db_J{2Ki zQdomqRpIJ$;JQOXO3Gpxh7WEMho(My?TQ||sDDBFmm^?zpd>TBfhy49C4#Qk!v9*K znFG`x!5$e(TjlE!@Yz8ByZ#vPZ@Uj)v#9Zj{@OpS$3h;B=s86ySaM?>6}%^jyXO5^ zl3#@8imsVrj5M1nbdyRI=MrA&uQRTeW+ZrPh&G$0JMt;hF2`tA2d(Fq<@LdoRsBxoOCy%)F_Lm2H<&kkA z7Iy3TT2fgN*AN71Xz6huc_z~NYuT&IHMDMONB!u=qaI^O3J3fs=-zr@>=&t^@2f0r zQf=8_Wu}o7p3&ulMLNJPX{%bHIuf*cQlxdRW=+c4pihVbBv7GiAq`oqr+;QP?Zkas~|*%YJHFO zWN57(tF(fN02?)Zp}?aVnkwua7cAoE2nu`&DFpMfWo%Jy58OxpsUOQfLRw*<`XrKq zA3NyV&RbVIWPHlTCW#l@!L7K!!x`R4bOv&&lk8MNy__d&3^6DEDi~(V>ZO6>AF&w+ z*mi4zj7*++vzxD33c{B4d@`gq7?|hNKgjyQzHK=ixk8_<`wm7HxnaE!jbmX_&T@Pc|LU5=H)f;z1GV(lh4Wv+v{Sg{-1V zuu{#Jev1946K(eq?>T$0h1@Zxy?_~|#@vK1Qvjk~ISV=Qb}{aiM6$r1H z$7P6HCgM)L2U4ts8^jORHNRKYnTW*pB=~qJOuQ&acsa6scpHC$9Boqtv(&x%O4^?Pl#Mp}{j_1g5AKcmo_LzqngkS-V zCUSn+)}S2)U1A00r`~oZ?*Azfk)Et{stq(we@5tehBUaT{uaj%*)^A4CU&mlp)l1- zqx$RB&+RjQ(<|h_veXaok1tdD#k)f%Xer5<{5@wII(&IIg2N))D-sejGT8;V z=MmX3x%U=Vqc#k>ozM-_MtIdW#2t(R9%jfZMLmf zJqGx>SLA>fa#JJ60?gYji>sV!t+6Fg(te!BfFpzzY}i%aPq%hNXD18|P>qee*s}&( zQbT%MhMY8cUP}c<>O(^Tn-B&ks!{>P|J9m3IiCCrK`cC=Yp#1#^8*`jk;frHAJTk) zP-jTg$q|bihF8(DH`1YS^EQF2l)e!*Rs`0lT{&wNw^zm1A!ym=ghQXmgkaJ6ErPQx zD7PkQSTFc#i+$JF{n5#L{)9 zeHi|w(Y-R+2ZO721O0KavJnUgz@J*cUx&u=%Dp_j9FNDbg*+X8N~74aJNxB&#A!PW zGAY^nQD|%+;RxMg~yB<+8J*e zcB(6ILu_A34+5nY{!g}<1pTKmZoL=AGYckh2|D2{!ZDp!5_vZRHsLGS-WcNaS(;3ZcD*p1heBkwbfUcN5O3Kh1^(&pX=H2DV5jVR7~Al+JWhXID0)+_>G^JF}GIkm=y)$?p)| zySs<)AWyYLMKg2c2bb3tVj8Y+YrY=wVpCl%051O3q~VwVm@aPu3F&i zj*ht%{`&FEb;acltIJRld&1MTmQl6_7O16}6FSUS~KA6yT5*4Nkp8 z_OoUqhaykw$z}wC5<-*ao9>uw*b+g3XE&+@d_`?JChGp6y#kFS&cEG8aB;~(sxd4k zwyx&?w26l>SQCCHu-qQ*W5t<=ODBE>&7+ZbhvI*ZEZrp+Jhdw7|Fs);`ePX-a@%&_6?u zi<0ILL{BuT+<>^hL@o;i*o_{gmN-QdL6aw%OrywAAO4>fOxqm-j=+=YvG0W#63J|<=7bsI zvDLrs5*CvV`}1c4KsHTlf9WhhxjEilVLjEZI$eY)xyXBUk}D7{aLZTsOo${xUXMN` z2L<~({$h5KBaw(rj-Sc!b|*t}vaUots^Tjwv9HE;Bx8zp^~9#w?(m$(pRsvn_PCw@~v$ndx|E9*zf$g})2ONA~&6u(JuTt$CF5hQU|hJZ$`|!;YtHTE4^CIr}-V>_zyr(qZvzf(U)*#ZTFW zV+YhXwGqy_uHBF?{%CP1ktj=6`dv7&2UFvRJ2+}-zB+2yj{DXn7|Yd$UvB6xqNw#4 z4yKa6s&OYbOjcAwA}EG?7yKxmc0tQh;!6G~YCs7uQaohw#ErC|F>e+|Z@WxtbV&zaW+ZLE9a)c$UoKS@u_hIRU^rwdcE zW-m!&HsXn|JawQ|SK=HzH*y=2X?vwSQw`)K$FR4bbOt8RLi($4_}*}3-lXE~Nh#YI zJxBcS5~-2&FsOO_$Eq_#58Ksdv|#!^tpx}ve)HN4XY$Nd;X0S6L2?MR5%O;pJ-BVBzRM{LAg^LGg)%% zayDt><#AFD3MeiDt1LsB=o1za*N%B;agyJ9E{WcwD!lN@HrJ6?xzJny$fia8pQ`)k zfA8iya~MtVxCvFe8B;uohnQ!8z~z;5?K8VM?B=&=1!-pv^+55eB84B)Nn&U6ET%9X zbKLYc5;;bQAJn%*(jR6>MoCG#nv~EErnsnL=jkCm&Z}riog}N>P-@iRiI24Lo*Rg12 z^E0HrH{5xqucxr;wAPH+n<5#WtBiuSibFhTWiTlZHLGcv((nLs&zaATCJB@P9R7g#&bx2{xI-aJIY&zUqVnhVQ}%3Q6gdEO)GR|%u7V;p>OlnIn=7)hhgioGYg~S zJ;ir#Yhkp0f$L=}JY32lHCSmMGdo3uW<*n8uv4dtKeKCA zw@rKsHW?<}%ndO@ZC@DUfMQYWw*W6YNQgQ8|#Nc<+=We!3{n9#utTM_pcs1;*sXN$AcKm8K?AS9jHCJ~9! zO-MLr;h(t%0=-@skl_M|Gtzr*LNh_Bcc9vbC&GfH(!<4AFp%?2N%|l|y7Ef=gRLSk zSWs^}mSzNyvX0qxjDu1+c82BU(KxP^M%rTM8_)mNUEvPoIXuLprW>NDjBu}?hFN_< z_(z|6RB(s_;=o7!SFb|qobY@r^}!i{wsES%HIO5(8I1uI#!uo%EKBGn<{3)=G%emO5sbm*s}P5&`XYjrOWp<|g5m*;1Lhd4nsfCR zVE?~&xP-bb(mTkIL-3accmaIXj$7hapHJc$qU({cfmin%z@mrGtpcOgfPtks@y>gP7!s8kpIQ8dN2hl*Y$f7z?kSKfJ!46`MN^6?u88mvKYkgs zS>8k>Y11}Ek={IMeqa-;bYcsM#OEB_Z(XY!UZ!s8O{wyM@SESN<5btH6Q)X^35xw( zZ4MwMw!@oh58$98P&6No^9dw5%Z~O}3tas2Jt*H8&7EAydmQmb5P>>##7d9a294hI zlp~^PAY_~xy8Z6REt{fSlvRl$HWg$RAXy~yIF^~687QX?>U%?Nn1u@Ug=W0PVN&(q z;dx-{NvT{DtI}cdXFvhH2V~0_+VR$_>uuzb>eX@zVSDxF;bGgm997;^ovWNcsE&WC z7t9KrKOor@fjFE>b@~FGL)4mFY2&OA`U!}V2qCI$cFzYRMcLb2`xcI$_5ivY%iKfH zvS*CFd?q?4cZF`laot;Xhge-3qOzFAWpQ7Zx3NHdZ6@{TC-i(uURkk$&As#XqqP!n ziS8{8wO}FiSkvf!ZLOcbkx)5%eTl|^U5~6Z#~$M6vKS%TdLSI@xr$SarG+EN`_d5N zsBknIc8ri=NUR7$EFr;V30I@-sPl?g|3C*%69tbuwO&Ut0G6EX!UX=oy#{ukCG%P$ zSfxwOv4B;*FQ{5~M-V!zZ>q*YA<(7KcT-3^$%l1Eno#!}A54zZ#B*Yu$n7Bi0A|ym z!sP(BWCxVn1z;}qLr?VszODmE2LnJ`!w;m5xX~ob{y%E{zMcbx|2fYUq1Lo8hExvX zK3U7`kg97L6qLcxGNm>j-D21iWz&fAWMq?8TZm;n?2W!@N_94}$)G37x*qYtQ2WXb zpaie=WZ6UJbyL|3@|-zK&a`!LVP$V-FuD3wvqGt%>&hC}w9ulg`qlgp$TO2B9{htJ zdTiU0Kgtl?dv(hn8y=*8v3>|Abo6ku08mxFHTkc1?Z740roG?9E9>ca4H8vM0^nMn z9Y=BT`2zn%UQA*CvxX+7?ysNKUiSyP9FPw90|^qol6 z1Wc3I_R1tjXbQLPq=YP>Dv8 z`oKN`)0C(>YddX-p`bC`soY|E*1~_jX-j-30#1@PKabV4i?l_g>EId9osyne)Isc6 zpmAmdK4I%!S#YyWVS)mDo^@FgeyG(9%%=FwXL|1$nb7QpQgX5Z4lZAZ0J;NRRL;^R zry$^Go*q)itP)C@T)KDkWtp2Efea-J`DQ1XLQq4vEU496e*1dc)R+AR?`sL^GDdQI z;;3`MAeiUoc`d8ZkZxlnea0pF0WbY_J^HX)kU&JA-c_etPpG^OUg;7I6I+=U06VM= zElx`R&4>9%LRvuIM%yFzRmB4|*;0QV?=_F8L#L&Vt~^~>HrRq(h^a<9Q-Sk7r| zH?8~{kW>U`u@m`Cc(a%ej~x|MMhz~j?nfEYDMw7M(*yz#m(R<(RTM~Uj~ArkAPib` zAA-{V@Xgv-PQM@*xn>rX#Uw!C`$OcH(hYVV=o!0&X-0UScuWV+LMRhw2u{^)hK(Fe z7;o{Q>N5F(BbnPEDhLW{`zQzt2yEA|2@|5&)9Ehq?}2l$<701_z8o*)Gq>*ym6?{t z4Uf5x1n`Pv;5``im{HjAA~Xo`3^4vAKg@*pnw`bBov392-`r(DCNYXVZY6uUMA8Y1 zUvEUi+qs~cPW)lqIqUC+R4)-1Fp3$UEsY&YW+r>^qfneQh3W$Sq&?8CTS2dHZf@B> zvBvosZqj)AZXVLj69dI2bOV#x-ke1sL9`Ttq%=btOghYsSPKBJnmjJc8*o#9WL*w$ zeW+NMc!*Sqq^@6Lf9#m;6=>;S8Jc=%0lSDPZ;SMGs_ySDJbOn1^cYa2X2-`K)gl$` zh+YE<#?KP9zNsWBQhi@0L6qGuPEyOv_}a;@+5vktBZ6J8By*eR*D`r?uZ8XM7to~( zwzLAvQDd*_Q@B>8kz!&n)cegbz?>)@n}LsbGG5!Yk;N;w>%+PoSHgpzoSTgRFr}Zi zDBOS`lr9O?VcxgsaLT2jxs}A#OGim?#FFGM7S*if%^$bqt?oC`pc4^MUVC_`(a!8@ z6Sqx_&4z{MBxSG=OkdEa*n!&`VO2rH*IUC= zm!$e^e?3pOI~Us3Z3~@j#B<_dD3-XA8*r&%49yRO}87k&i85fl`ztXtiZIYrU4 zy__I63ZY)h0jl8C_aQv*@LHX|#Sgp;ua5ho?Q zfCuXZRR&Aah1*jtjeeRxqGR3N=w8d8q{^GAKvxY;ZLQe%>#?%QXv0vjW=$ zF43I4x0pS2n5>PU4knLXkA4!BRd0nbPhTc*-h;Ycl-^~O?_d`dyG8$GC?FuPCohbk zqPt@PvRWmH)X9piQIr<4SuiYlBPsG*3Wg5Xx!=jBsOL*TOQ-;yyGhAcBKs=%zjYx7xsGvZge} zJSP$ad?U2{Z4jbdg5@L`hCH0OSYm*M+sZLd&DoxsHxR*@jRQ2r4i~Y?ES%scbGF;w zmb3C!unk+3U0XFTNH=VUcpb11GaJd(Rx)%ANCkEJKZ%h~fo~5957**R4u7^zzS`&r z|0o-*nid@AK9V`!B?+kV*oY&YO0e51nM}w->gB_-pGWS$V(!VEohnl`EI#HetYY!% ziOI&P&Zx(W>Bc`d*F#c|_R})E^^J>p7%UqA9uHtdxT`v)WE`%1(qPnB?W&(IUKT4wjHl#U3q8u&G9FWCGz;z0?!;|ZgH;4Xf z`43kp-Q)Vt zc5U~gT7}B-!|<&*8J*+fDQ@8+RD=+#YmeQUUgT9~4e+?k9hxJabl0sxRz^8ewfw~n zXq<(Oc#8kh4134#MV~gmPK*Tlnx52wo_^|Eg_~3&+(tyIHl`r!axzttRSe{<0pP+0 z#Et{iM~fd$M>7aS@Y>;)kb8TQe=^7O6Z9}JTnI5;8ePe0y=(CvFqt#qM>;bSuV!m}x+_NxN{ zGoOch6ne9Yz1tVEA0LWb$XTZ>p^gaOSl|I?8kc=E`4-h=5-Ah^(tOXrL53D2&_AKZ z0muY)C!dPS#0QQ1*A`>v8ymVRS<7V{tt;;$Wp>rXxD~hP;`CY2Ub3{5@>R{Piz2$^ znSRWByUW#AZmZ+=t7)GN|9U&G`vPssK(xVX$+Iz(; zRJBKnqc*5!pI;2eN)SQw34&PjMhD5MY#szkfk{f>0%L~a|N7Jh=*R!GOwUUADO^sY zPA&1ERhK4VZ}Pb);OZ{YzfFICy_cOcylD?d?Dy~NO;hxwKQ$%I^GDs!S+70aK$;`02eg6eU6PrDFwOJE!3-*^F0GFC%^ zV4ThRBtO<-N}n?p*X?UQC1-5|6X=oxEOnhLYZ99zo+oSo0Kk!4^ARWm4dvZ;w>HGm z%?Ut`IVxGZsh#DnVT4W#iL28uYbFVYqr1P09lD5sqWQ1Q%>TW>`A;8K6acIjT&ijA z?dbk{v15KnP0|D(M>#?SeU)!J$q$e32HEc6?WRwdtoe0C)PSU$_CMlT!77v(aoI%V z7h6I=!fSyV&{Pe>*>Q*rIUN5aWhhB=)S(C#<>O`0dI|ojeVawmHn$Iy$7$tF9!bb^ zsyHPYJM*XSreVLEuEV^M?LZz)J;jICd|5qCg;aJj-4ac;jUya8Db{mEQUCYtMR2q;YLcd;OGy1ny`9G+j?{X4nT$ zjxa5}G+#FHi5R-iUVY#vt6zlsoXZ@5&IR53%%eN6v(mTpfU~g)@8OT+P-QM#3Kxt| z-hmhBh{nld<250P9PealCo5e{wd(J*Ik8?U|M!RQaS7PTzL_vO(MN3yTiob!3yPrS z_U?`NR#T!N4W7PQ*{k1eCs{@>EH6d{!&PRJL0-%=tw{o(cq#bn&3$hJz~B(D&X0oM zHT2JYX!5+V-mdZD8s@i$AU`k%OW}Z+eI=T&<#LM4DH0lA^T`RqA_72o4gS)7qt0Qi zDLgIGX=~x5IcFJvBsp5j=5GxBL}|lC%QSZcxlcdmA~G_Ft$PL2auL(SM3S76^o@4C zoHAN14hXTADny3EP#(nnvLGNcBBlsc^vf9t|BKfzE-ZEv%EkM-fy!#$-04&@ zV`26_`?CogYsd3FbnM!{P+k%{u(4bip})3ZRLaX|fDZFEqd7g( zDLu_3Ku+vceHaAgq6FXt6H7FoN??Y8@179jjIDX}m1p3!PEc0Dk$o{Rb|2;iC>NNq z%HkL3{M{Xq?-wv9sW0T~AE=et+=Wk2G;JO*5~e3v``mm@@0F@Xm=n!UkG1 zKWXwI3#aUX9kgk}FbXs9158{2eW4>Y^_du#I!udD3)P&ZfZzXbHf1ueE(#9~2O5e6 zAkAPC0LjSBrxx{i(uhW^)ezr;d~W%nhZ6rK$!sJ@z={_xGmlz6n?LTlyER%0NJ8Fl z7{q^ZxALIXwK6}Ud%S8^vad{Bn{JJ$noB(~bgH@5Cax`ZM%1ii{{w+e(bAv%Uyxq& zS1DW_oX5BO?_eQ{4AG#w&+e#gp=Z&h#t}{I`ex*=_8I?jRo{<1!RMq}$#0h;Hb?x# zL+Y1*XtEk-PCQ27_6c-Jm7;1j_~Xgo%}G1%ev@j*2I*?Z5P@&u(10Z#yXXGCva=zQ zCU8y-@(QmntqYuv^-t(d+fO5Z8^Ej4QaBK#5VPlwjJd5V`K2C<>o}){RpmwY2WU>h z&nJmm-@7$0+<)Wjoq|M(qBYI3ZQHhO+qP}nHcr{LZQHi%l zJ|*_TzrKI%{XxZgeJ#vb7Z2D9n;E*>aiSb0YV`Ro4lNus5H!8mXSsDzuyJueQBu0s zHq~$LT<8gIhFdxA`B?{ahv{|K-QF1<(%QcSX%G&?eE*wmuTz#MNpf+<^05^iz(QGt zDekT4(E}It1ryK2VQut0XwrnX{f-5M8P7*rC!cai0jayQSv&Qc_}%dIFxDPF-zY{K z?M&hp=)W&51ud=GYDxUXj%;yd1pLKF3djeJk~q9l>)Lgaa=TRx?Lr@3dk!5o zm<(~ULIknG(0*i?ABy}D88lV^eF~aM0EaO64~SJ9;Z4pz?h4M=e~|=F4M?HH%Oavq zu?(*II=XG3mU*qXK;Kdk?jDgeB~5Ty-rdEODV<OtnXB;rU2VTe6_X4hZeQqk0LxfS|W<#~leHum!!r9Q=C?5fgCq^|MGm@8!*;j&eo^Rr_&ON<(-`TF{ z%qUqYx@q^u;$c|NTKmQ9r#c8xQp#pH5bNZsZCs~k*D~>b9JFQx9>i@x_Ctf(3e->e{(%@bs|CP>L|`Cf-$|vbekQvphO*|bTV8(WGVAvj*moZ7`t|>-HU%` zL`Oo!4-~BJgZAN6WmGMBxqsiT0t4&*M4Q@eUj4UMB4n_-T(lqibVmYULgr2sib_4i z{!=f>2xQQz3@LLqo`U{aGfyB-{Wxxmg#d68^LQ#ADZc?c{AEnfBjLbXq%?g7$@c`D zDu>_o>4y9d`%m($kc`z$_+Y!s>_pV)%)v-Le;8#{HJ(8_Chr% zAMr$z=Jow{cBR@>$mzz!#fDG&{YJPpjMUW8weGh~g_jHX*tthMkq6R%p~+ZncZ~m0 znn#7#Ot4ws+j`AhSIQX1Pz=i(UVC(IY+&&|y;8oZqNi%PFM98r)rkJef*P9%*06h4 z+?C&**^OXX^frNNHdYh!_}?tj!eHtn?dW+4yOt;r1EZvblv6m)@QYYg!p4ks>Yb%Z z7B9MSVF>GNQ}wM4oUqqsw|p4F09&4V!;KPt=A>ABI-UZZyE_eudB?Z{|7E>&A@$oh zs?Mt3lH2I-x$m(URoCQ>G$tNKj_*@ZDd*kzskY>*NBAp57CK(jH?o5tzh80JL{T&J z+U;ebrNY~J3rMACC7s1gDLidZ;}Oaw0R+aGtb|bBcQ#4i0G#wti9N~VQgpK1K?$Jm zd)&WjhM9tXJc@8nT8Tzh5FjGF0Jmw>XgjcB!g6~d6o3d0k!0@@@CyR__4uP+BP674 zXI==#*1sapI`_kS`E}z#UDC!P&)b)g4;gFrI$yT_kj1V7!zN^S^-K{Q2WLZxYiVlWZ+@g^OtSWA1M)q|9qeN!R zHihaxgq4D2_PTuk1_qcI{n4b1X?i*N+vMhft3G_CGi&WGkSeCw9Uf=Z;46r>0RzSeL)ghe-uI0#C;Q0& z683GIpaR*FA0v^TcPtgqyvv?Abk;_7NpOkC=9OL%vtAoCMYTyixwfXgRB=;DqI2#F zPDu*1$BxgDFNfsPC5k^Iw;e;LPZA<`(Eiee&{Af!Cl%j?zZ$-N7F_#;7p(6ex-sH@ zy@}XFG&-NY@F)DYacNr$NnncC(}UYOhxZW;Eopy({GFc_gvYg;1VexR9(SnS9X|D; z+~@zj6Vd+;5iG8Z$pfZN8gs2(4H1mvgz!-!Z8If0hUk$M*yiuFF#T4cz1L0;YNoAW zlrVJp8D%#289O-03^y$DvaH}ukRVmQWttf2%1=|z<-AqYubEb{$a`CWkn+qBT)S-9 z%I3bz+@$~K8;|uQ6bOZ8)(%ALvH{*n-cv$5O&s0&iY~cF056@0Y&f5On(=*=T+Z9%q=u z5?~2h-EFNw8bBA2V*%k+KIXjE5V2J*6hF<8k9rcqJYgI;H340>r(IgR@KCQP=j#RB zZKB0&c|?EB-iscBgWS41v8K^~`_lpNGrPY5u%8S&d3_i3!|PR27|!8!ZD;nMR0r)s z+gFPls{{;m5&AVb7x+UF@+`B_3|$G#J6AJPu)|ER@?`GQrE!+Y$9qZ>_nm@4UxRd@ zL_4JgzoExMl7D0F;>IN7r$fwC!v~AS@r<@S^9Vrh;riv(!xU<|FHAwXrce3A{H#8H z{$rxf4%;XuX6N+Y&LCMr$`e+3D>p!m@$sBAJ9FoH$?21bg+0S;b3rw$;N>>XnRBns z=ky_R{ZjjTyA1DieNxWW?N1sK!Dz6Wpw$nN%z!q2#>%lC!!<*xo7D-^(yvB=jv2Y+ z&jkO?@)xdL7rPg`llMzLt^Lo+h*r@;-;g4RMq{xgi3V^v7CQ2;5M@Yi4qr`BjNvR%+-*wQx_ywBX<#)=!_PLgl!-xdnpPd?;*=bY^e{dh;{#4di;J zAG+wU(0Uj1O2rBqvE+c!l5ncTr}*qc%}OL*$?(CbE%L@QK-Ky>d%40u` zl{HAAm+DiArE-6yaKwe*e5d4+8T%uzIHv`3wW<)qQ4;5P+8 z)m$HnS+aZRF0_WP2Ytm3RiHcW>GHKdy1oF$nLlO8B25hvF`jp%${&zoDMUrIAk<#= z_J^>4g^zr3_`jnnp!^W%L_wFAq+2#7&i$*7?zrxjL{ahphvii~+*62o?bn_w#`!C( zrVKpJY}rmYT$&+kv7Zwm#%t$Ym{liV*|+&2R%J*2saHP^?Pl*#q@AK7Ig%G}{E;^$ zqi7@kZEQE=sJSem2`(iFu1#bnNL*fI4qbO*{qdmJLUj{WMJg($wM{(w3;UrYy*v_l~ zDw*>VQ}JK%H}&p9xM7!uSpS7}z6=-*?d)%uK9{<=)D!c6OOgKDqU-bC3Dru-$wUv{ zh1vbG2k5=%h;bhjs*sZ2k#S)`beF~Nc5c?sypOw*>0`8Q6Glai)9;l_M_#$$CrvVV z(MW^&{z(qi+~i~t3sI~1SKd`)x4c%FeSvJEJU5)N(9z*OS9Uv^ zrg>T_@kOOa&;b}73h%9xL$I=MjVnN!uklB*NZtb`L7UR6Kd@{*@*l`rjVq3<7j=HvzBhVv>c& z=TL(p0gZP*hCaNouux4`n9}{7w;Kx^Z#6?R10CAWv-T@7uo4vO?%cay&B_n<*3LUA zTg*ZQ)y8Le{@a9aS?<}pe1B#-CN*Yq;(`G{_D;L0R0uRu9p4JIgEL;ofAWlRj+CE1 zU55l{o!9wxb~*+C%3Rd-r8yUNu&@O>jV{o}+|T9*Yw2Ktv7XfiEr2KYI)U&YH|x*l zxU?j$IVuH`E!j9j;Vb4A3!ov##^FuLEADw_&ZJk5zv5o zG@yPBXg~v+|K(JARPDqSvL?Vmc^sv6W)MPZak}^ai}RoO|5pEOL(4-~20;)Fjs?uf zkH8KmlBffKJN!XVCx`~e0-#^now#;_s0#o!Hl$cQ?Ens~g1Y;EbxaE45``0q;ITg* zu@)NK-di_)Jo!(u`2Y5b{Be|Ta2SCcGT{@5S$&H4H^_7_Z__y4^L@W0;we<&5K zx8y4=`!j{RVIUcxX0yu*IiVKXsC&A$OqEHkO}f0%Azbi-JKeWt45-$-8wo19m-cJX z)V4nsG0pMq9BU0m%+vCQqSobfp*(C7vX97ez^}D{a|85sj zd0r&8i}Fdw3Nr^_JK)BQOLS!zIsV>MS0Pe6i5TFZ1_;MnXup~;Uwa&>T8hZ z6Q6RC#Avqe5ImsX*@LrGWwT3RsQz`t%Q0x#CwFP^@d*(n9#mnIzNRrZj6T~^+Ym{B zyp&r$o2$B*?=~?j$dtffb8N29FvK*E>8mgEfZSPTQS9S_sYz>}dRUR(S^W>m&i_T% zBdpOAZVvla*WLQgESAcKAkgQv3cf`s@BAL&8;63)W5-jMXj>ST|=)9}TJJKs7jLAm}Ih zBm5D9aEH%7rtcmZ?%uPQnbNsl8j!sj2t@L}K9k(QB6dci*GYxTy%I>(NJqq`Wdt9?52$%aG4_66el9%b-! zW7mt{MzNR&&Q64l&xCL$FNbAlC_#2$SZ@?-Vt}Kjv98IW7ifb)<4$hZ<4{^8Cdem$ z@V7+pFn!U}yN}Sn9Z8^7;zD*xg<~04Wz7*`Z95OgHiIYpZcJXliru^eXqTh)C7OD@ z#?a-xJa6j1DyjZ2kL5pE1Qn_Nqw9t5uRO3Sx$j z1dF0OjCkWGl>8uX} zH2G*;b+A(i*#3aL189&9P%;NVe`G`71OV$3tJ2y5YsnH1KxPJl^k*%I4738Fe>miR z@S*Y=)Kex%1?HTC&p21b7C@Fm^o1q&7Rgi0w#|7iD=2&wT)+?yIP<3V`lgg&zNuon zFj{FNca!9HF{8GEna&vrgR|-{%Ryq}!zIR!UAn37Qq>^xjw7o5w0>;!PPAZZU_8`z zZbysZIpRv%@B1h{!nHSmDKB70i^;93Fc;|#65$zt{;!*~5aD;B@<4(+9*Z;EgIMaM zvh65k1u5c^@IG<#S7a84{!I~bf8J|01R+Sc?<8rxV87<@L%Jl4vKB#nZfP{mir~8_ z%+7$1p7EbF74-q=t7?r_Rm*|xs81+&)|?=&OPvcj5z59Jcww7P8q1t7bX<3DIJ z)9t<$(XWQIsI7u`0&|VDf^_wjEJ2ngo~S`680GuriMK%T0lPmO_=B3Obs7CKiMs)9 z{Ixf!Z6wDqUOxoiZLTZ=wYf54s`Y2S_7`HWtknu6kf1g|ef|~Y^8pmb9gFwv$@m~& z5iPT|*eF-w{E`tl(IG|^PkmrRNRW+vuomStNY#P?4Cpz!PMu6W3Ifce3^M_nDP?|V zV;?$FT+~u+QjK~h2+1BmR0Ji)@&LC!vCwW9dXS$uC;e6Fau@SKkXS00OhjQByf;@# zw*9u!Q2hGz!$;oeqOGq5aRi*9j4r8-p6d=^syNQ1QRfLZ#O>PGF2xb93{-xthJ1Y} z*5W1DgMwgJP_8{ksmQ+5U!qctpK|)C$QISX=CZ3^P>(Q3qmR<=0frah{L%9qi2N5*3!{DrAFFC z?q{Skqeqb!7*|oVzD}#+f`@XqOWq*Yd^a-y55DnWNNKZ*Jyd-v)_P{`dS-EMgiyL$ z67B^QbuS-cIrBN=wRgj+GY7$AM>`I=-6Q}7-fA1BN1DQsnL9m-?rPRt$WW-hJY(4< z>M6nx5$^jMZ!n!SJSQ8irS>Rr$TSeOQ6Giip_A*~mNe)Wj{8g7@E!-1!dBOy!>2cV zVndl@mLx0%Jxsxej81*vvja%o-ekE-+eye208$&ti2M0eAF`X-r_M<-OL& znfF*UVw0r!c32anf*06#5%VF0qIRK?~NpPNYNyNxpuoMrR4&e)< zYSOlrHv_SuhD3N%w;&tnCS)O97M0RZJ<31WWVcO_VYIeLGw!^NYdP1ZWhDS07yl4# zZ8i!GAYL}=sgkeUWc=D;b%Tw@1+WQ>p_2 zEOZ=|H%!xNs+_%^T;ip)%#;=E7c@8a&n!Z--!ZdiCn*RJx2Y6w1JN04b{AQ^$LYE$e*MvwWJo!!~sq1_4=L9FKtJ@7w=0g}Vi&X&X$_ zI`BWYNm^kV|JMuKod3U~D))x}9(oy?HnrCByVN*MdAH>11}n7~$0>KV^fmqaE1B-} zA;-2+@`EU_f{?{~`L@pHdrS*$FX06n(I<;JDR>PJE;1_^Eld=s&Jm?bQB1FiheBHj zesG23=!!gvm(Y2}oPut68q+Djud|6oNC1%Ud?`)RJ;G*H)(vQh>8~Zp$(3j3FisTS z{V`BMIq}ZuI3r_1aQmr~7Li$16i{zR0rO5fKCn|OR8PVd6;ZI=&c^{D>uV+m40b|2 z13B^lKC&nC(!ueO6ot??;a@Xq?R>17|HECB#*X}J;wLWhSOXI*ZN+sS*dxM82Q!we zCCF_-+grEkyR(~yNx~jtS;$T&M!~YUI^z^8{moX_{MXhS;W_J5X}G2AY4FmFXnef8 zMA<7IuP|5y0qOL8fLzqp!Anz|!PBXUZNy|!LXO*Hw#OJ$uEAh?Mn5his;FR#r}Hp;ZW9FcdcB+GFM(A3Q@d_BX+di|=&Iqe(8s zwGH`g@b8FeY^m3fahSK!Wk$eYJAr2B##>K8=B(2&IR*=bQ`x0kS<4P)g=%GqjK zg4ltWvj-vI!o)|asAswpeNtWM?a3ZR&-A|g4j z*Oi1OPKo@^F~Mnqz}`Fbm^5>)Ra{D4r!`I6XzTf%e1_N^Z9e~z_j-D$me|MzYXNV6 zuVv`O>RAb7T}DTUk-mDCW3X~ps~sD{?g}xm}SX{fJ zc>6#$z!OY4d4xlPczVYYC6`mH`7lOvsK_P_9+ses>6?$mz-8fx#59gJFJd{{Z8DB+ z)?R{deP<-McX{z%#R5r$jU|4Cn<8UklKppDN*Ev(zQoE1t{dc8>LGr@q8Rrl@~V10 zi^lg3A(&oJ=E2RgHGUF~8^iBy0)E;W1nW<9TV*Zu641y zFE6RMaOE%Xh8-{04JN%+?vBcQOz9#qmc&|Tb!^&qTy#BcF)`4ONZNIs4I?A7z37An zeNfF7(7bDZ4goouXF3TklMuRJ{;VATqpWHKzCoMSy(=%N*x$jvIq9)7VwFbT69V67 zbams8!NN z8*i8f#}90IB4VXkMSwW{%S|JuWLwL!!xbeM%*@>vM(srrBaPJL_mWD5D45PEWF0U4VUKq?NZSFau(O6h^GZVX<~PuwXrKU z#JqU`xW+`!mrYzTkCGKsM&WHcZ`95uPj1|~CwEgYl%<*~Ladv#u64um90NqYBv4!K z1Ca5_pd-{<@d%HF|6suqSLSuS`4fX?wrB4Ma}=P17Op(&J12DJG_g|Ok|q}SitNt| z7v|sFIt6CskvQ(~>nPi7$Z|NF=Y+e9IixuvYgLU{2M(SgLk!1b#$WR^YJeo`f=H** zEpYurqEe0NP$YhAw^pLos)EBJn>UhUnvho#l4v@-^Ud#;$l*DTv7!TZX;3MtAn(hC zopZ~*36M7If=I3AB|9mb)mcyV-$9(K%8$l36>M8p!WND64#EEoT+S%P=-ZG=a?$~& z0oT$IRiUrSJ)nWpZE+)I$&*Z{03^|L_NN`#8vy|W{<|H71PUEPzi`spj~?|_^@>@7 z)?=awXkm=MuIlAq0VnDR(Ox4K(x)C;Y`6zbE{eA^<5JOX;0yV5|XW~9x^sd ze(`(=-G3#?8nb2+5uoNGCVT>yW(4-;)VK zGbVvU_oVV^QA_bk`s_6IRzbpj?jboWX1=>`=;w94B2Vcp6uEMepmMos1JR9^%yN5C zOk49{aNAZhh&r|q@tZ&7bA~i$=I?@7LhL8Os6CHBw2J7BKVoue>W9u^DRy;K6IxtG z?~yb+lZy}Wx$GaGp@g!Q8~$y^!-6~`&9`T%CM&u-?J|!p7v@I1);Fs1PDwW}A@qlC zSKY_XadRwK<|KxY_%6Mymi?U~N}aG*ome3Js(qY3fvi7MM2~*}GDJ{yfOj~k;j4>O z(-x-pd(`7gOu-6x^?+L8r+1{A?Dm3|-KjYr=)g*Mvb+Q}&TPTj4#3!vQ~!OTelABh zy<;~Q&GHepxruiImLAy{+cG}cn;#pF-kKG{ZA2#qqY8WaKhf z-+{r@NsK4Mm5Qjwdr_7(u71JgR6<|@xw&$G=$`zUAUm{vAJs-=6j9%pfDKyD!2 ztdunF-y(-7kv{RLr*My6s~6b&o!r0A4KA8rL$wlcm#4pxj#Q)rVaib{hP>wn_>*s^ zi^a<1@ z5CS2lT}<_wjijWYr!TCPpfvTAcd5yCT}{|cSycEz>!s=EY6_ZpMfoYyuaR!S=v#P3 z!I!C&1{SPVDaM04J^_LE$l4wd?!f+T%OY%|@G%^~l2i<{WRjUEl0AoOqk&H6s_0m7B_{48%AKa*{NDji1Anv@>VQ ziM=varB%b7@3}gxx$)v2OTVoZTRt+Tx$HJ`)>=MBc2iH77Mg~)jLLT)*B4sSuCtA_7-RhEYFwg zZrTc!3`ht+S6I9{Uj%CpiiQNzwlM+~nJz_Leb>*Q0Mfbx34rbFf!}zUWe_pjQD)r{ z*61SAe$%VbfZzT)S~ll*Qa>m*pnrxEc)p0ajJ=80lE9+pIG*Yc=Dm9HGTRk!!2J%QBZ5o^ZwJ)mwC`?BuF71hoj6Qdn9f@Yf_mi<!ZX6G!KTS|<>~ymWzl?p!n`Pv3FCt-9w%Fbm3zs!?7@-7W(;H#rH$g8 z5hI(ZRff{JHu~4YX-M5N#em8*k{K4xx7vk#RwV3WyL=1Prr$=DGYf%fHNHyg_bNRU zad<3f8LG98I8Htq#)-Fzb2$OQ2~RGi^j_D_)@0iNPdQjOG-zrbZPv9Lk06RA=MMLd zm%&S%Zj@hO2~R9^g+WuGxTOD+rl@iEG;+mii9*<#dOS-#*Er^y$M_Vl<1P~x6Z-`n z6oTi4zQ{uu+0{EaDcF934iT{9^Mv@&x(jF)sB|szOFltNzZ*tH0wUGQ8vF*V^1c+v zqj1?}4({sQ$78IV*depV;B5C;SjUYQyAa2*sp#r)O7A2jWfQJEc$3+?R{3;ePSgi( z+N__*tv|~;dHS$9qYm>k-wbK=m2Ay1B1_UpWFwVgN5&)d&~tV-Z5QOa9j_TZuw*U{ z`WK=pn<_h>&GJ^F%~T~Y$nu|GDz1uT)5`tALzYY`lg_aDSYB{q@xc6*NpOsgn8H~= z9q{8P?8jWC?X4L2dY7HYX9!L7aDdsyg)<6ns_6FFU`NaZDm7JtP(2f)K>%3xOHG$E zGz7(*Y0VS$2`k{=y0g9cOto<;-o6zeU3=}513(4M-Ud?@wx2UTaG)w`zoG7Dbt5FN z;!|1DEk4SMu#Y~}Z{XK&53y9Wwx^757g45NcQ?DOPcSjY|KJvugD>8Ez6D(dX+$6= zwgERFG8muMb>dtHCdL6hO`^(glY`Q;N;p%M-8CmcF_EOODg}4By7_rshyQW!6&12J zz(IKcrEPKuLTYZJPw_pZcu6SIDY``zZw|#e!S{&bEv8tb_#9TeCKT(CW7V+Lc8IAE z4>Mi+!!cFIirEj8NL$y)T67I51TsL1ozcxE_zaBP)`t-JQT#68@{;T=M~>ZMY;s7I zejBn+J~n1HI&2=~obCoskw*iff-$NBsj;qja_1<@2!9*vN#&PNSszlxsyoL*5W@m4 zK_*NZ0AJJt*Q|wpAv~x~8{wAJP)F!}9`Hdde+<|_;PD<#Rw{r_`mI^%HDVM$3ZvY? z&UYt*@Vlq~lXgXC{J5Dh4TJ4jyywxa&m!4W{n?wztK|Jgy8H`PI7EC8EFOd)*fbJ?Bpgh;fu8SojB4K3Y<%D|M82 zCE#UI&&8FRL|)*hgg1ylzr61JNYA+eNr(U3$tJyJ6)b_7(MUQ0tfQi_QI&}1^RlSH z_~s=UQD{XXXw(VvQp#Z!JbY@yuQ;|nwh0y1+bG6$B$JL(t6uYTq&Rn0K9TOSjEaI- z0f@NaQ%<*N`L~|Rg*paA@Cd7NP%HA^wR#}=jC(kUukh5%JEKqGwAxHSAX?J*14^zw ztCKnVfb*Sz@%YJx9Fl#gmyGlTza~rYYK?MJoN%BUlEcj9r+K(vlt;yT=2t-D-`9om zJJ03Y=v&N5GP>1*cZS88{qp@)daxu(&pTjkB!x89PM5`>x_rhoLTuQTdvC1x&>KeZ zomwIxU>|t^(fJDXmHqm(&lRj27juN&VP8-#7SEss)c$<(05^rxG@FW18^Cjz%2=f` z2>gpcs%>Pjgat!4gSMwP=QHkEO;sBr{IKyj)QWbWfm=`>AcyzV|72xp&k_B}*vgeg z6N~@8TK)i=V-$Gx?_rg2G=)F=n}j2K7KZ?(JphVgHAmszf0!HMToLI#B%es_1JENK zNr904RlB#S|Kxh^VdcZy6BLltyOjk-H>iK^ykp+B*Q&m>BpCW`O&}3uii>D<(N?O6 z1?M_z?jjsos$i1ZAlp(!@tM4Z^#UcuM%J{mpgA-Na;F~3{V-S!LlpxtLpWeWV_Fa1 zQ0FD7tCV2zNU~#C`Hnjnw<5;d?kfJ~gHyrS(QdGJxt**2feM%+a<50NsOxQo#$V*% z#fmaQn7$JEYUEfp6OCBVA6J$>KpFAo>2HSay41|_Zk0~Oa|NxbsR43AF>-gbYOAr4 z=YJjDHi_RByX%(PUA|~`^MkeRHy!Nz=t7a}Hgw206o7j*mls43-q1B5(PdDYNmRRO z;=NbR@|k>x_&K%M^?B4_n+EYce8lGSK=9f54*-)rxcu>8|3yyo&Rq*rIu;Va0~Amd zbR=-PPKMkqbd^lSE9Xp8niSZb_sE9!fgO1m@yJo7n4emXzOoC`4p>^D?}4L-!)e-#`A#BHy^RK8-R}mVIk_e^vXeqI-b5bU{ zBZ=!!+@Jcz#)KoT$r3hQM$oM55`L+vsw6#F&h#t8ejN&?1LlQ^(cUlhXZNlCM~r+W zjCwq;pqj|WA?1hXXRS_;IxLPHW$Rd+ItY5N^)oF80jCuJey<)iq+%J!sf-bD=-Q4X zob+peR~YXqyoC-}s&56Hf(G$psyABT*&pleE!{S+aIPKUaFQk6Ou=-XM1!t@yvvq_ zRqW9~VX4?qet*watY}c8gaB~4?|8p5fBO&|s|VSVlG8P-WP_!?oB&(NTWoUL&T&L{ zi4jqz?RJssXn`XC7mg`1UcTS&1DH;CB3wqFhOv0TdQ-^j{?La4WpWwwk#$1s^8-v+ zOvB0QO_wxx(}Ff<-+*IdF+qdVT?4(z7`M%+z_eu$8c1|vvxKOO6NUqD3oaPApNevn z#}0pv%W@V@QCdp_qxtyPt*IPGA4QVB%k4n2nN7%c56~cc5U6IZO?n-X&g@e$qoZ=8 zWEHC}ahth5uvHIQ1HA`3w^*V633ZzQQC@l5PrB2XAJ5K~RTU1_MrzrgWn%PuW>na> zivXHi1elKcLg|rRuD_Yfo6ZnD!Y4jZrKvP)8(FhWnQKkHIGw{#Kn0`asv98h4UbWBc>{tp&V)@bnF{9`-usTBr+?f zpobcvS2cj!23)5_!BG53U^-XYDv3$jfIu*9BF6!j^~i_FU z_(FEq<5T0@+WI^dQ!&J)5Gq2UyG1-uFp%;Zmzu&+A~5vXM;=b`xPXZRm=nsOxwEn( ze?EDJVU;eUhL-D?BzwKSh1IG{73+obUi$ngx~ft#t5bJ$mro5R&&Zk#hHF{1bV3(7>Zc-{%zaL_UgA%S!(NV6L~N9}`?W}$v9Sl@Cv2Rby5O8-*inzR}yB=4@iKVm8~RLU4eKZn$f zEJ%{^O}O!MB>MeG-j%`rl{c$$F;ujeBDG+@8_lZ1D@fi*RcCa7q?5l<3j z1XZ2xL&q_ymU`I+m4dZa)Zvbf2MVmKsUM9S%D?A5xeFoo9>qffZ3_#6h8We`CUJ?e zk&WmfD;Pa-R&$Yvq5&*|4!h-r^JFOhC^5;Qq;`}&u1hus&ThV-YW?a9g{J&7!g`ff ze*^z%mRO2X?IM`)C;J@#Zcmr#m0FQUYpVtnYFACkF|O1h3}&+L`9l^IiRe}e+ZxTL z)5)GY!-=T_i$QRO{GN!ljZFmsAU{*z6D-LvDnP%WkrFyv#}&^jz%`oH1wLtFPraVk}6fo?+-?f;Kd5Re$4- z{`E|FYUKVz!RC)@57F;jLA=^I;Y7&BbiIi38iRC0%)gU3CxGb|QD_BwvsQv$_akx`gi~)zl0@W>gkm zvr1bdE;E=&&fnf;A>6jB{78f5y^_clO34w z07mAIJmiKy=Ve%wSdu)uuwG=4)K%gC6H0c8!~ZOx1!nxJ z#}X**3$8tc;=zOyNjzyaL1+VPkl$3w6a)abh{f^K860gcct`g2@?G#(W z{T3QlENU8ZJlm2u?{M^AitDs;W=2(j1Q?5TgBRGa_qwqV7xtB2iX&Ktg z2YGGqB+Sd*_!V@@sUGcugtygq+cq}PQFjgbu4^s1?N`D0Hu1V+Vm+<>l0ij_DN@@9 zYv~;@_p?I+)TYJrUs-RU2#-&~yqpji$F?5|$B9qBhUk+8Ttp7BZd07<0Zb!S zYCftY#p$m~W0v_uk9m%fMJZs!ne!cWDZr|qUcPu{K0o#T6kON|zLpFicPgk!?kKai|N|A%Fpn79-O3&u&* zF|w_@&Ui;L{~v9^6~t<>mk?v~L@!8MlLD(yR+v?jo6LncE0JMW`i-GGTvZzwS@Ta( zqM7N+M9Xd8cr_Si=ERZ8zC7AUPol}f(rav|tYwAXr}gb~#)1PmSJyX6d#;f2f!^u$ z$io)BJtuePS9ot+C;on2g%sY0yg%>F;>T8fcU1-bI9_U0;L@lPl>xU!036B(o2}Op zv6bS+N7Ndq`B+>~o)YE;hX-5j{aKbha-|5oWE6h)s<3$Twu+_fCvzbq7cWtx>OZZy zS^SJ`zv=xsgDBvMQG${xCf3&W;R-UM+IPY*v(e2=Ov?QsT_OOD2cI?N#lfPn`{WYM z)7iUkYRwKLnKg26am{(|`g11J&^Y5v)%0|~)HR^3(CglhY|U?rr`bJ7mQM0>SbI!t zK_@O3w%>dZBv44K*gO8k%HCz_;gKK$I!s#z>tTt#W%bo)$xKK3z{5B*yUK}>1L=C_ zaisNn_r>cUGM2Zwkg_?Z-wbn;jua2KKHI+ArF`Qqpik(_(EY2YR7yySg==)$u#+oi z2;@iB0>Y|b+W_b9Ub|va;jiB5rW}5x{|6X1N}Xj%0=W{z{eR4+({(SK1BR;8dg%R+ zVaNa8YyZzCB2zb4M?8K+GIfEPRvMVqn`-wa`V34&;!_FGM1Xaa?2M25S+wjK?UL6Pq)Q4sB2 z6tj7Ni28m-j)57aw3YsHYUJzL_=E`33Ch(7@lYd?VCY`c7DkHmtZC`OGs779d(zSe zfFZiz>?3~M?{dN+&z@_qL$s*E9=Pbv1;y^G$&goq8Vy~ z$mhNmYUo1(&g&ZxU)#Wr(J2Mr1fai{K1k(hFWmKP72a2z_tzfdNTUe`!T8A6gMb^6 zP_-5g-tGHFW*A$ec1MWs8kIo-BP#9>YwD>&ft}~1>(y&jE1M2O+*jMwIX=)7YZJfW zMSgDq42(^xLXUHh{po31@&tS|FY)tD3`|)KP%Ak}6sUM2KkrE=8kOa)4$VyO+y&|U z!9#T)9*08pJH4;e=@;R5?ca z4GrzWGzlTW6}_tIwCVZ_x6Ru7Z*_dxp-&cZW>>z0`mRZ5q1I7Cz5&{qLok5FAzuvv zl$FwjVTm(^X0f}J>z|7rKMXJSerT%o{1Q*t{BY+_F27`~$1B(b4ayh92;8=AbQ}g! z&8|tOsJ1n&m-R7;!OKPfYJ4Rq!c2Z~BTpvUivIUfl1+s?31K(DeIdn1pTuexHY(PT zCETGab(*(W_ruC#MV}Eb2J7Iwgr@+j1<{{TOKEx#wq;c*K9R{AxA zny+FDupTIwJxG-0ueaae$KXba->{*n$D2WYkxZUrY&sx{izwUt?+xANQY}cM&dL7x zNI~+S#o$-7(I6UxHHBtK3p!hD>knRn6+@-;pjg1E)yhE%Bk_~>nkxsULlfdknDb!5 za*p1R#mIM9y>%en7RMkF|G0#(#Q=&K) z6K)L(V#*eL81gP&-|-TJ?{mN~;l#B7!~siblD?=4{lK&tZE6WuWKMJgMrzcbC!LwS zfT$akuE(uaJ=03Saqh)V-~bqO%>6x};4fJ<9f@A1yS7X>iiBb~v(&Zs9= zcztB+p~A1AjK8#Sp1kxyzGZucL9FsaLxq4pm?A?|2ck~5$|X4@n2o~bI;guI&|H-4 z9@hE@W*7v}cLW#&x&G;f@L3oW2cUfzH-g_(Xn)=BjlXeiHT_dPnW?>^V(^R+0Hz9v zvSr!+5UT#;MdOmbv`4=xFCEZp&f_DB1{D9zB76XbQ~lVPdsQPGasyhxXjKvl?KmcAcj6A(kx<1D zO{6+;VfqUyPPY?|FaVZXWQ$TfAYLrEqu5inszY*<+%!M|tBM(mN)=RXdf>Qmlq zOh8|&^p^9RX#+OG%N@C77|(@mIkP)0+6gmssvP1QD6y+MkUb`L?;wOBelY%LMsP)` zm?C;NzF!{Ht*Jfmjt3qd5xKSJpK}OuL3X<#0n7M{0R>n@1NwBOWT4*ga_vt6igOL| zSVVJ;gY~P*FTe0R^<50N^j}hSi3o^wLAM)Bq0t>^7$VMP@4VVRH0@V#_ zGw|?aU?D3XhgdesrF`F}#Hw%f?=n?wfrYzKBb4ew=YUu$xW8GISxXs$vBA=l|9vxQ;`Xn0QbykRaLpc?OQt;1YAlfW^yvs~Df-eI(o>+{2@b=2o@ zLl8`$&iC$W?`$tA4$c^nQ@$Etu$&*}es;k| zv#!)_78|Q$S&xbcYFniQ5Jgeo{dEpnV_?{D*VrvFI$w37Ah`^PUZ2OzSlu8oqZ>h# zhaFG5YuS=c#-2c{DYtlA^2VWcR!gSz0H>bX$)BTmtu^;IbVFQWNr(K#X<*8?y*U|z!} z0mRhCttr1=D&?dG?#SuaJ=mF=E{$X7q9y69MXSf3tvFqpH@vZq@|$VdAD>jTh5esu zZfX^gk@#t*p#Ge%v5X*V8uBNl^z6psaP9KJk5Q?7+yfe^3jpRhJb8*rFX~^4cPj_* zN>MfLmL0orZPIPaWDMNGcCwbbl*j{kZc~-W1$hG3SMeIeq@prT5V<}^wTh`D84BO6 zz(tMcES5$a3av=@`!u3$S>CYGH%za`Y;*a%&2 z7e8i{0`GFtL>E~o#7>;%Q`pZN<&8O?9qY#*8oOr9riZ?ww`Ps{L#jT2h+lHhfqM(B z57^`Sj|H0JX4GTcEx1ti1KpcT%e9b`xT1(fXfP&D7b8NmFpy@nUgXRaVFP_e{%3Kd zRsCjbCjg}j5sc%w2*%O43?R~?8pYh7UYuZ^wS{VMI-iyC;F`|T%3z3mRcPHZ)Qf$6tH=aX+D*xmN+ z9G-UoCdu=NZ4z+~4jF#|H9psm=#9U{8GJL&hi&j` zz+rNz(><@4?n5F1{XF3oOQq%GS2M{EV0sE#La#0BnNPl6%hV6BG>x3-k3FG>5gn0g zFqK*+(49HH`I%Z;_eL>qn*&nB<|WOcc-W0lZa=`lZx)NqQMaNH z71majak!UM{`@}NHE+PftS;wpq`s*4i^F%vIDTNXF6fdQoYO9KOj%k>s5$c8hx^OK zC{Jw>b@xxx>pjk-t(S@&`>t|&PVIRZersP4Z9%Lhp;MpyM08G6+zfGVAkUFRzP%Dz zj@Yoca1e*qe)TX+l?~khjas2L9nb#KE37=Avx>vxrA&+YGRXxV!pO~Zjo~KV9E%J4 zawvG#G-=>7*dI#zovbPrZa{_yzWE>h3>y+P>iF&2R_(=x7mkt^6yl4;EJvK*3J`PyzUc_>P z_HtS}D-4mbW_X3<3`JO=JmE(`Ge^t7YBk6v7rbmh1)m@ku7RjD6>a$bXRFLquG~8m zPOb~f{~mXL9VYZ|<8P@zPF;_RFuMzH3v3W2@0&c;o)3)onXKpa#hN2n zlH<_FdO*;k{c>nff%K8o6&s84Ewq09`o9YQ^51_W(tA;+yL?gMukY`aBPgWu4JA(X zK{gBbi;NJr_^d0B+D;6wYy&Lsct$3j7Q8GSm}V@zkA|E$$F7Nl{!)e{e-S!uPiYK~ zF(^O5KhCOqGY%77rG6b2Ep{El~WqOzPDE(3_6#kwbN2Yn|I_IcVZ zA8>1XP}WLlDe_a!`L;fGsWZQ)wh*y_bx$+q^h2KC2ys@Ai=I@tOLu*(zDoQr&!$lg`sbBX#g<>qp{Sq=0+wH@aL1sNe zLsi>_i;D=&*`x&BhL)Dx>H6*M7ZsJPboCA&K1h{W?a^xx%kvnQFb;_S8E*Rje3R5a z2d@4fdXfP*IYEY-FQth*c5*SJtj5O^9e*^nSHL)AMPn5I7!3R(YPc#S&sJiJ0;aUq z8tgNw4N5?+XGiQ|)u@beiHnNxvap()#OJ6k-u##{&vj~%!74%!>NU6+dyKZz4ot8> z6n)lhXL|cNUas!<%uuq-n#*|ZiJGuZHIn!}47$Cpqrt7K8?jqpx+CKxz=3`f^g=be zJAs;*Cm@^d2f6`KSHQf!xj)18G)%(V{ zRc>VMg>|ZnU$LyPa{-gRjW_DqHh!f~pG87zbXOi8%0;{^v!#Qwn{bie(@+*g8h)!c ziW>0Nn`&5RsVS_~{LISt&~%g8FRD8$ZCqq-xtlZgCQ#1%Bf!c2<2y&ZWKrBjT1IghC#xw&sK2|IkrfA#Ss$vN!5-AV9ow;24N zRZwuly7Lp2{3{c3G*}bHJiwUCQH3Psvoc&bl&%$R>iGO~j+S;>S-Il$%&UV#Tn~@% z=H~8Yga3ajW{l3&2sv3=CZ3PbE0%^b#v;fv;oT~-xj(7kzuY#T&k5;t-APkt_*##itZOQ_m zC+}|1RG}UKsazcxlLi2V)jiO~1@aYeb2Kk;3)(*G-TTS8n*=~=d{Y`5YcDGS$Q*E) zzYjp9+iFLEO`;JHaIFpk#xd{xcmd$S4J18<3jiXZOAv4heFxl3ueHsB00~SR04)D= zmj(bH6Tr()6aY99G_}790CTed`4?6IGUUxG3Oq_*Sp&e$Fc9Acp{1H*TYHhmvzNSH zrDAFE(|B~?YvG;2@R0BD_vfrq(U3{Nx3$~GcMSMFL9W|nkPYgZ=%lfq4`Om5)_JYCZU;pcYWZ*|Zwpue zu)Y&|bX#ciP6$$j`Xur4pv;6p0aM2-^F9-UMi5YzafHQ9sTFl?8 zSId6g;&xsSWV zt3gEIR3FX{n!pC*6n zQ-byn=-#CcIW!n2;XqwAMlREb5H~GzidKIW_qA&IOJcuClO6j-kiv0;_47xw4&7;n zeAxa0VSlyFP6oE^p6MYA9w&ounomg1B0BviNPeVa@`ILh$dCC`9sxaO{}o|G z>n1^1kZzfXeHVv((`SHp|0BMMMMVLi?>8mNiQC|69wI6D{!h^Ve_Q;?a=j$UKJ*}k z_m-A=JLPXR$F{offSFf+sT(W?buuMzL>J6XExaj&9tKSzCKIzYsP<`wtYMLc(IL>Z zC$drOS$-v`zlpuB0)W^GnpYS94ytGNJVQ5pP_#SpHd6Olcf$z(HIJV8$vz=mzvFB5 z^X#$lW?wpN%AnY>E{s+Aq4KfOd7o=?EJ^{O)(F2C+vu!@d$R zv-!Ni9p+HKW#Ld4FN&G+yBj7S5{%8C=r_<@>l0QVn{3m_$kx-CcYwby-=#Y)C=~RZ? z>|4S_x!jJ97Ese z>b&GH(i1?rP_v-Qpn{uYAR^-*LE^o;y^SL&gz&*Cd0|OuZ<<`03lbr9_8c>`KRb3?CNFXw10!I~H^-EsinDIPe}1!?jG5nF@`j`7RE8D_ljM6YmG7e))2AX$ z@{g;(LaVFfHoNmAG$3MD@4xkq>j#es>DNiNyHQboT4Gs6Yh9pvbB}}97o5VF2O661 zgPKc8b{Y(_TCER;?$3+%%`>3;h}bpac{`+<*A){TC3>0JO|OXR8{#F+(e3#ID#78q z2VoW-n!E1kJf}LklxC3a@Tx}JmvX}RjPjw%d4EM*j!u5og&M?pI;js>m1zYpwIqV2 z7Nc2;FSokx3bSnklsd(ObU~PfCgDFS3&N9O(ZA)(O0wChhJUZM7P2IVbA&$;+Qxfh zeMdYz?B?+(ohc1vWe^prcI4eK(_twS&H7FT-jmVSb84&iQQ+tij_6AsN?^L`b*HX8 z2~h?Nmbj%p{0EN10Sin%plOCXfx-XlkTPYIHKi4n9i1mZ`KK>$12#R}sfXUY0i$b7 z6P{!k;3>f=4=q%C;wtIt7puE(NFu$Vx-p&3Z@vF?mDcWGFr&kioCy^ZHweSao2jdS zQrE1;|;h;_rVL96Wk0&KR1N>TZ!eto;Kur3gJHnksz z>VpiG^d5O6gC@POE2Z#DtkZh=X)@K2y_8*C5aS%rp2NnSv&Et+pI%ROnN~cs1rJ<)3oWUpXZ_kN;rx zgQ`v8)?8~p^XM~}^MBo>GeD;#DdtlRY}WCmaex)Lutc2DO(eP_fI}}*dRpn058`di zorIX&xQb7sLoaMHKbT%FFNsbx`3khmzSK<-$rcz;tXBg);R!=cai}AnD2nsAg$*aK zG3l=HyqPeuBf5o*f0h;@3#l0GeFaRU6fQJQPQman7Kx*ZaQ5;KGD4a33$vhf>P)08 zoG3nW4PRXlQ&b7%PXPikL)R{$BzOs#+otPI)F0ZN30tBDb#1KD7B68xdfU&n`PWMl z*1_%j;>pf^f01gQOIUXhkYhwtvy)3F?2?c%jO8V~_=A&igxKeF*UeaENT;v~J6yb^ z6dT)H#&@EaZjw5?$cgVcq@K$TMQ0QQQ$uwSw$61yAGL(9Q2$BbAtnmf2JJMjT|vsS z__6*-5i5sPl0^Bt_~$^wUI_6dOtJU7eiLbzYvg0^1xd#{^`J-dl=e$3N4<^fkN)OD zVKae<8^`s?P1$GsBT0v+>zU9i^^({r2@QfUTgaA_LM4 z6%JiuDdm z`cRtTEglszasuZZa2|yUuisyu$9)oi7dzjvXBIjst4?*M>7kXOeCNuY0>j-~m<&U! zjpnR+GSXz5X9;s2FW$Ie%U!)qtQ^aek=p2*+EIEs{n7#d?r9pv{^r)J%zAMgR8v}K z$jewGTdjk2h@>~79rA%e(U)XRSC)*Jve5ZsJ4pA^6nja@kOMGpJvET9ty zD#kGg^#eYVkZLT3!YR}?`}&Z277_dVXnqS4Wpbt2vdxm8T1Q~Ndquw=cI}$Dcvlzz zfpKpAnBi&NwulTkhQNtQI~;_dmw)>-Ca99+WqeP&>x2uO)B6DmgeUf2i=UROKTL^~ zWxY>6iOD&$qYkX<>?REV>^EbR-hiN`;dw_;Aoh9K5GT&mVXBEXO2lyNy@azFy+v&9 z=RB?-I9zxsBS-`=8uikw2xaZ1Z*VOF7>RHid^76;cXK58^>!(%BpDZb3ob|EP0Tu& zXK+{bQzx5Zmj<`KaQRw+qK-5H0C~z|aUDWi5z2Yn& zIZ>i%Y8|-T%SG{6H*#C^Z7L_hd-4quiWqZV0!Ag=L~=Y}=`4yge0$&A!-9yqr(3k* zfeVFuZPk6R=Q6ck?hfK;u|}NYuOBJihJ4OMXCaI_-#x4FhhFRHm&MDft-_j@9*_>muCM9dDlo7)pEPKVa#L(^x?_n~a z)14%}rm+$@EK9)9B$hlI(}OEkUqn9R6BTB^C&t8yz>`CyXOQ^RaH*5R7WP`7XChuA zXPiNSB8aasQ~B#Ovq@3oXZ!#g|3zI&ky!?ZPIm#|o3AL;rJ35HWw-V^vEZYtr-jH* z+YXiX2SN(*eH*NoCp;LQTat}TcKV@lx42Y(q);WF-yoL0M@6L{alh~bj^(eu5oQ*k z3xhCGe7lj5KNt%u3evx-v8eO?fMjkkxG?IKu*X<1B~d>F zZ_4k3yG=sV>F7NKTn{(W9=2yr+1y61tCWEPAg+w74e$5qXHE}i)`8}oQjmnPK{A+tt|-~!s7BS?S-8l9VyaC1o^j&8d;-NB7D&}1+@*BESe|> z$EE0+C=J*;28SaK@4j+jZgC&M2y5>yed$?qz0Ze(`3rjXZ47Z!lRUY^zbxWou^H9` zAasp+Z{{l($_Dz!+6;EO7k-oz+@S3GK?5E%xGcr81?|^w$iGOKF>Ug+2O(mV`GiVi z5Zh*cN`$*kFn^1%BsS8&x|qkOlu|IebyyMzF<&l{0(n8EO@-15 zdLm^b>)XXxN$$T=3hHK+nv~LKLU14@te`%ale%U_dZ%z~(&taB%Y^vR{n&MmZf_PMRG50vcGQ?5 z`^+A~5)0oCR9cNGWT$MHwd_YGbGjl^Lt%Dd;C>|^Kb|n|vEj%qIQav`9nN6PqX2H= zn%Plr3phs95i!>fd}$jUgZx}-ei~e#$gZ;}Fn@tgYD;Gu;(#yT;VP`DNB!gpk$XbA zY8LGZfQZ~IYIVq7m_7LfveU%Ky54L^2ho0B(R+Zf!f?N(cZaDw7$KFWK zF=4J_#^vv7V^T1s^7=RdR9)i0Sc1#YlGu$Y?G^cKKZUKVzEt8KztqK2`BJ975l;t# zMAJq#QC3}P)~0c`+0jxmEIa!vn#u?k3YpjE(>MXUUv^#%sv7%Si)KMh@4}8|c@pdJ z8o|75$zIZFuc*FcaeBM2*t|W|k`9l(p51QvVruu%?XdRHg$=bl6KYf6USUtw&UN+q zxI3JNxvz_wqsmR>;oCDil27g;K0+-1@xTFfiq<3Z7n_yM;je^O*qRsVj`D1iSX0B)y>>k7CyG!zi9ZrXOkA%Pvi?Ox7`C?TC}%R=lEKIG33@ z<-WxcaW~^Eh<^2rLy!D%>b18^_0A0qT@oCJ2Ly$Cl!D%#!hq%scXOw8rnZXqwm*ol zAYVUK@^(e2{916$t=K(e!G@swxRiktcIqM#G`dgx6U+d98gmKHvKEEV#W7m z`T+LyIs2uG%s4~H+$%!-JHZl56YA)i_*qBl4AE)N!*25zuEdVI%~(26t>E(-yE8$7 zIIo%j%6#Y2%WMjL)+Ea~8Cvstzyn92USg&phGL(Z^(bVLH;ry1M;7NU)Me zk~p)&If72Ep_JxI=lr?-3!Zt-JkpWw*yu~|!Cw+sM6%stNK%!Z0q+WsbB+y6Pk)uE z5~%7Ui7v6WY~H=PC;N&M^Uc(BH36SYw}VlUZO_RsAWkb6>c%F4k#FUMkojpjO@aRX`{F)JcJdIq4l63zwLo zJ>HM1J_nb&`C9a@0u7^g-Mg9U`)ZMl1!`qq3mP~!XT@KofbGpCsx?9|*+wYhT{)$@4^u# zw#{b}`qqGBLccjKt)E%}C6nEhLK(lwE|%m!=WL;k`Vz6NR>4);_nzuEa*2E$vaZY@;HtHQ$Fr)5Kj^cpv#9oD6}XGQ0A}>>o7Nf$J}}Eg>gsZ>YGr zJ8gtN+lwxj2b%=icUf&V&FQ86y4K>*^v-4Db)&^>+;i=ceF13Hbcpc#&ace=JjvtZ zSZ*)R#|m6T3eXOtTYkaj?JQOuYHp?=Rf%|-5eqA+$cyKr@KvvUV-OuGb4oF7Mu*<{ zlMcbo_WTd_-4P#yGS4}3Mm3q3l|!9&WA8y?X>xUMVGZ0M{Uzb%D)aQB21u1f@Yf<+ zLx$Ozexh(bKN zeV2)QZ`G)Sh~Qfy;*k!SI7)kh=Zgb}UajAIvV|&q$+9OZMmJ&b`_baOQxYR1*>bo< zXA^h+!;H{TbO@9SFJ@@k+J$MqfHsG#R~)b#ber$7s^PH-mqxi9=i+&m937zVff%M< zGajeA-V*yJou*@;>{E7SDid5;<`;*~zU$-A9;^6Zx$ftfr!_2XS)fF<$yNr6mwvMV zkxQ!xZn+KD2uA|qclBP>(aF+7XE|IlmiUb~oE4<{rbJviLc6c^1AuwZBG{5Z>6!(9 zj*loT7)3Vc3=zvPKKQc+idKaal-DESjw^pT1WvtAh$q!fJ9h;Eu-7B~My}9@Sg7>YscQ5@zwP7R|iJ-7&qr!^F0o?SknrRdNqvn*a5`z(n z>vg)Ox_ljJeDyE7(I!Q>n_jFNO>YdQcRftDx4Id_!eVXH+Bpo*Tf!pJ9-G-cRmb5h zt6mI0Lhj!4-IWf}d?$l>#l?td8&pl=q-21ga; zt&Q}8grH`9hWE}$_SBVixi+~kXaio|W7SJ0$hWiw=6g`{BXd>pvL$m<&p3++|;^xs>Lf!7!g^RZX0u zqElY=5pFN>6Nn{iZo}qhHe82t@%*~X%WO3HDRaM^np2`{-ibs_pyYbQ;+8#R-JofgLh<$|GF#MOloeDe(o28au|7UM0LJeb+LLDhHw;tnM{$H zN{I-m4>3z`tWs~zJ72yVE`unlj41K^JC`HtAH-6E#38b0n{yMMT%SF;QR3J8{_nai zi1n~`$yG70Ef#$av`)W*wva6uKq^P?y1Am5ft;$eI=^knqe6OANW+Lp)`h*OXCKc8 zl_xt9h#>`4?fl2$i22aykoRhnG*_5wSqY1{z){;=D=MhU|J}O7i7S2kd4-dbLS|hD zZhc=66p@q7;`>D(TSd16CHmdp)0&?PxsrLDEEcAb#|PX4OD_qUSk;VC+>flk$crem zExtvIn7*gS_k8$hxco*)xLOM}Pz}1d)t8h~p^^YM#j!lP7Cwb{qfrUY%mDe_JSElK zthjmu_xM-lD0f=<-=6*R0~LjkfUUpQ4oFu0Rs6pxK&vXYZju*%^s)Veuq`)6SeiK5 z7ZP7TPT-lxNhbPKAd{`@~;*jV%329Bc2P3i{zC?aQ^pNnrK zAUlsQ^_@N-EUjfO=g1H~c)IIgm`NpLN&C;Q&&KTtnk7$Atx>X}7ZZ{DrJcxdY+KQ; zAxLLgGc>wczT)RTNH;8pvtB>ODt+!j+86~jW-gD;h#KZcMc{6pkil=UIG z=1U;ZLpuj*_11)>1SzwlHPJ*z&AFsH72_6is84mAjL4_r;I$_I5@G}yJ!2Ksq+6~3 z0Y=Y*N&O%u&SMedZOGrq^bY_&JoB8g3*lJ+Uv7WJJ?BVJM9+^1HQ@?9v(00#^Gu#4 zM)N)u{yC4mF|OsV!`!3(DH-MtdhCa#zu6Yki#gz9&nZN+6^S;d6=UO*zmJo}c^r7| z1M}{;o=8%jGm5=X10{I(I2q@T$Y&WRK#Dzs8nt!4CR&)D<>+@K@ZE%F1yok$_R)%Jf1bVlYwy5Gy0cyosKsFm8D$qC;3tAFmS*ECE*$AI!hQtD(T&B8 znQv$nMIk{Q{8)OYj0on+HJ1mTdfFl8s2JewH~C00pAyj31JsH)wPKwU5_F?65-!*1 zL(3}!448V1?V@0Im34fI`B4(pKTMghO&VSZ6$r!@w*_a%WsB*aOeMf)4>A4}l^rsp zV>*t}cR*7@#DU!V%C3dWU$jSgpLIsYW{Z$_Ha$ru8@Ob=Nqs{`Kh(>YaYTa8?DY~e zs-<>ZS%OLvhHrpt22sNKJ1W{nXAvVJ^k_We_0QY!1^q7cJ4pws_pADm@UCE~;G6a( zm8jKZhTg>LB+3aS5vmr!HQshupC_Fcn5Ktg%>Mix@&_w3=e?v0Dp)%ww|sW?Dh5^ck=Y=##;~Rm3Y51Lk#lIS41~q)pVecsIha9}9^)vV z&3oVD9s{&D!)ZU0kYtC3$8eJ2m3Ku3>txWhHJ`GK;~(PT^7w^1JR{h z?atcUNZscYx=t1s!xgV!OVkHd(-6W(vgj@`Yd%y;E}oisaBJo9a6K#~r=+tcB9~~* z3P|qt5E)!|DpbFa$y-?AoaSD#YKn<-l;e{W>zl!s4pQ=*S>Z843Z~Af+5&eZCI`~q z3`Ny?PXz9i%deu`o32t1Z$PudZg>8;rIe(!Y33Qxl`X8~)|K;12#;V*WQ6y%Go$AMX1m6ji-Rgp`|5>QgvxO(yGNd zv7y>`wo!O`D$A}WW8X;TVr-+NZl6x~&pb&lwpKU2Wh&i&J^~m|eDqtpp9y$cL@K@- z_+86rLgq*vFlHf^x&o%MV)B8IKYBzWMWw=>CoGfjBkdle*ry1QY*3)3;PR9MJ$- zO0|k+dNq&9f9_do9=6WkuRr0M12s0 z;A{zra6H{%=b1q0!ByG1H*wmX;m(s8rVQ_d=dLR^302U{F z1~fwe;wUT>B2q}mrwyP%uCTrif?VRZMToi?z2;@LqHAS3F!fs z0n%2WRZtg*6XF3*OKFgY*xmb_q22*!r#qlokOoi(Is^k3tKf*tgDSx42=OlIoORD= z7U+P0?u{TiU=lFm?pV9>08j^@KDh(XH?U8P_lVb7`@llm9N-I_o)UmhuiLKuOEb$L z)L`kGQ)kg0(Ns_@LU208d@gYvFFo{eo$-?3g~byF;49gAjqA>0uFfHB2d zR-b4xAO<#toC7{baxSbJph+O#|EK>g_!ca7P5gv;{dx}bj^avrkD@|!yzLZR{mA#E zaZ3rIcxc-fjmSEH1OSK-GBD!<;vMLuZ2`Ey3xM>10wAzwun*W^&imCn%rVTQmD6t& z6+2PczJU**^Q?8zLm=cOzVbS-jqF{Ll z#T~^Z00GVUo&ZDu?i24rTL5Sl=mff-xp{d7`*iv6`jO&TbX(NQpBc0Z$^c*9qe5`O zAPDOva4CA{8wd#j8$q&ePp>E-z!I1N+<%3jj|b3nB$WPs;ZIqft9(9=HdbfV{2RJIvFf z2GLM}7$OS>J?vgn>;gBUb$%#!Nt;>Ypl?73 z`mp*y;ok=Dp8@WAth~!QY^xW^61uzuj)1MU-seVrK<$?3CWVrS%kxxr?^q93AKNB@ z$Gh2wu-nS>tQ}AZWZH-GzHd)-s;vnW3b_Sq0hJG!RYtwQXFwQI0ug*1yH$M41OycrdpHGv5Rg3J0+xSj zd#YRoEJTZ+710QM3T6d6of!cD6et?t0-(XOPr$?JSr!0V@~8Fx3PF4{x?8=aSQCW+ z6L&iIyw_P5ptZIMpa%j59wA|S6z8W~S&MB|&qUdPSAkRT^8(;#qsz8w|NEzLa6C|X ze}BdPPz$+y)Vf~Z8@+ocY^j;v-;izogwV zGi0VK&Fst;KdOgtYBtJ7Z|0787q!e%6i=_9A~4ffT$KL%6h*^4Rl7^i>byK2>z-1c z(N}A=HCFhxM8lSDQAge-95e1mIdevR^~eA}#oGeT0yNR88YDPHv9)y#at66{Nsf?` z%jG-Q{$J^-CBcul{x9k}BYy2|e5bs&-n~b${120jkq-V9@UB{zS&|~p%+i)tKu|u+ zpLi4%(IuCt%#KVuN`~_YwY7#a^^=wrj zFoM04MD%V^RJpTs>9rgO^VplJ*}N}BiX@Fufv^0ed}_jx#Ib@Y|I9F;4<3oBWXW1j zeO7M&=jn*Ufc7VO!F%z6kqz=^rax!u&}Z!v{GULl5Aq#qrnwMy`exErvzeT zWkNjUX@KmNT58-i20_WzQuQre3W5vkkdZv&tJDDgU)3L<9ZQB~-cJz=P;Lp1BsW<3 zT1g^-WSaXelG@g;qKTRsZQVzNqy~Dn)gct#d*oTODCVJDdpUd#_W^AAh(stk8Yzzh zMQ5{Vlt1-vGmNH`!jIgl4TKfyG|hspY~fQVN*__J-ek=wZ4zS&en3N->|m0V52$b* zEkP9HI*9cO)sV*0IFP8;yIS7Ks|C&bOV5_9)k(%Q8wI>li;H>5-x_0t>1-tz1V!%# zTOlX#lPZxlA(1s0JEaiYoF_XTxn^JcqS(y~ud8uli`QboYUmxa5o$p!_hr&Z{VG}f zP&LBafORw<0lr#Fh2h`R5LA2l=NyY3drHdqoQ2?U`A1Kg$#!O_Ac$m-m|5vm1e4QV z*G&4^>t$3PHsxO$@5xIPC2wwGN}}I;JGt#)zFYoqh2g2xC)%&Z`Dfzd{6=RQo=)@A zr&OGXfZ7!VaW!8O8P2-P+uB|ac5l@5Ts0hm+eXs2lx}|*G8v>_VdtVMR2`gfHo~Ni z=|az&&NV~`ofeKSbo{Jlpq=4{krF@XmF+lzX_b?$AEX}rkqC_^~GKmm<|*a>tBE1 z3{=Pd>_Mw&1{7;l7x}MZhjuL8TXBz|v<=$@gY>nml00b0v(_ca`0()K7N0H~XP0XA zlXx*J7eGZ}Fi5+~0C$8@srEM4O}2yoo=^QJ;gj>iN3QtIJ}$&8=0~d&;$=IwHZO5w^(52_qdvtR9h&>N^S_B|r3`h% z79v1hFoh%im6r|OVS7P1)<=7L{bO@|0&ZMXC37IIxajLSDYO5eOQ*s2^!ovn=?yO= z&QoJ8vt1pFED;JD)KcxvZfE|2g&wylGN~chqwbvMM@ylZ6sG=(d9=?E@Y6_H^ytb9 z1O;svKiwJRU(?q7ck937b3z2|OLXH+$jP~mBd^WGyp%J>3`DYUe9 zrMrdAXm`5Gr)%c_u*MzM#;L*^iJMZ>#%rawA?AdZNI*zF^%TO%dG{B|e<1De^AT$I zV$Iyn(0}C3;E%Is_YeBD;MrTXk}tvgk!FOw?Eh`1V3(>UCHUGbYl}YRf1Ofk2FVvy z>!0Fh#dgh)+y=A3K{&OdW^Vj5EIiU4k&H9X4~Haq zB=h_pe?>vzU(z}~nUgfgPzdyQgnReL4rcXp7Y}c|#^pXbU96J>r&I{_ZE=-*xS_u>d+@xNxi`t_Av4;jBism+Kljg5$UUgxG%~ zUou5v9#m}e1KH2uI%)XZizb&u=CRz23lBHLp*t*@*ma*V{}`q&~RqVNW}z zbxR#X@elH%KO((j9Lf^=Qs%xw#cB;bs@mu@Cmw64{{ZKqm!w_%CHm)w)h9*8V0!%R zv21CLW+!ZdI;dT`CEg=SnMxK6o{|6uHymt!-bB~2=qT5A|M(Ptiux6v9wK%;Y+daJh9g!Eko2L8E$PZ~)nm&keW#l3Z_pNc

G#j9}4G7ETt`0MEQcw!h2 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⋘FXZ2(E$nWD&~)j)My{S$u-1sDRdn@OW< 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 z

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

x``B!eo&GpQhrS+gZAkbIy^ zSo^NwI}aeS>SK2l;_vO>k-`v6+BK>|qciMK$fSe}Gyz9? z?)alYUCp)cX#NlP^~w}Eu2+>FvTi^EdppTIRm z0>>PXRD}n0ZJR_(`hX8NL#IHY5%PuTi2u@%0%Il(@z-MG!M-WMUSq^)O{8fB^Pp4C_V5?_har(+VN#9cn_ud zWQs_bK*`aeN>Al-N1LGoeznFwlgPu|+o212SwQs+UqL0B;m9}^{{BsYdVRfyu;8q7 zmQCc2C}yg>eS-VMo#XGAdGTRq$mF^gFv3`kuu`}p+-w}i9z^4B2^3HirU2E+xw8Sm z$<0+$1cOgN?F4xrsT~G@UT?Bx=~yZ%4+MnY?ZesWY4i9UgKBan8LuW)+5VQa%- zV4Daxm@#*2yp1pSg$PX)I&NZ>%F4CoHG zhQsTMq;ZKj01?z1mrZs>oGRWr{{u`8GA8N5T zEngR7d{gWnXgYHQ(NS6Apvge^YD%djl?C~RMhd@g;YT1Qm3FC#Qe=HFbfHt9s6E;< z&j#{5s!QJjD4E%gC>V_@UQ6}7!V>i_2FRhxvT)ez)V z^mNhsgop2M+w6{`>2mavT@dY_B3yWR+fR9e_hR9*^>GVtv5}?)1ql2^qA`?3oZb|H zL$i~_GM(Exhsu-57>KQ0EGu%gcZzPnK@yR;HEp) zxPlpht|vn&C+ne-0H1rOjDd&NzLC3Dt+oVDF_Gr^qMU#_+ff4GJY-3zUlkUl-P{{w z^E2YQ$=(Xr@kd_lb+*;U3z7IIEGiqYx`WfI^B!r!PNKL0EiF5z2^f$6n0nw;NQ7@* zq>^27e#9M!ZCbkw0V8@TJf|A~o-n?SLKBnwy#lsl5sf#Nms)+VM*D;FdGAdN`AR2+pU7~1{@dE z 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%0ATu%WoJM;`_mzz1|e7SlX5o%&y$ny#>%+nqD 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�hY!GT&(QwH+?3P+ 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

PsU zNLe0$Q2w-jY2&L;Nv^$sthfL-NQtL*-|_<#IL=au@?N26U;oa-t~qjas?sAt4Y z4-pf+1RIW{G?O%x?uIOBlp|mQRM2s&A?rCY$ zXLnnam_mS>`9bvw?D0XPtwJmXAQB6&V)k3(2v;@b=Jo^qjlit;wClv{qn_hQeWW5- zxA_vVAxH6gQJNVz>G@JKsNA;FN91Q?Cy@6@=XUkDxcR^ulw(Ay-aeJ`U{h&->!PjG zFfhWc_9)Rfc*xM-8p&?yNVkBSqG%&I86cAv@D~M5=F0=+WVQjAm(|{9OifX!+2sxn-XIL5 zyqq02)uJh&1|A9er^5AW)TXQV{`3C<%5@}S6(#>N<)=@sl@APJ2=BsUKTGjj3;m1F zVG{mc%}g4w8TSB^fjS$9E>Ruu=5^bksyWsDm!);!=bcK`Cv{BJeW-wx0kjT3HKaw2 zq3JD&=5wKlECABe#GOmg$^y8qxfpFe);e>=#SR!1*QU+LO)}Bv_s#wQj9a{^rFFQ0 z{7Qu#Mp^r-nER~nVBy}`vNPr!r&e`OGTP^Z&9}306Bv1v~62`d}(s9P;45m#@b^KxUo+(@;|29C=rfLUn8aj3?J2 zT;EKguv$yUO&&DEXMyU2GIKZ40oGCt=1{8Z^dt9~FcVMcKM_{;i!Q!z1Bk%s&xRYx z$0`9k;)^l)?s5g4O1g8>k0i!eHb?3q&1}p(bn=1F1(ZTUDlpzULIESd8(Vg_&=Nm& zS~Tm_aI!_KVj%^)2K$>yVN4uS>=HOL{7znFytgdIuwYPedaj@Rr@)&%oWWqj+ifr_ zlgH<=5HVj}vpKD8L~|icY}uPczk9^7>$#sEF}j)T($^Jk)-NR_C}!o*-+-lf?mc>{ z?;8RdlPJ-8>|SqxHxP=+N*95*2K*{5Lh9{S4ZX`#H3da=q!b-GQ0zGy?~hvnBGsV& zgJ$9MZB|Ty<=~it3*fQAa1qyMhWlzTeVQ+y)7SiyS}iljROqG887uxQzW<#$-}*?> z7@6$goxJ(U-NG&^EmWpF$PBv}&>`ZghXG#oZ(80b4?EO)`!KXTd1eNc5uvn|YC+9!qoV!%yfB!%i{9gh3 z)#DhcPjs&%zW`}SQ5EG=1F>)}oLtQz zkkPR#U?$g@r#H7iwz+xDpV4(Xbi<+(4RJcnb=Xp)vprNUffS2315s)0 zk1R%&wzk+t(=qvi3{6S_&^Xfk&x&NIxAd!j=Z9D}CGMWoN70~bkAJ|%w1YqP?}vz68pX_FdP5tCmSlYvLEX`HQ*t( z>NW#ppG-=1ZSUhlfg+|gk7+~3=l=bw-6+6nuV`N}hcg`8w*aX(ad-f;53KPy-$NUS zlZ_`}6fyJ^_kQv4ssS);lY|lXyvW?LC!ZT+#Dmtpc(W4(I##^Z877#@LO=rRqz%Lg zx?C&qm2LeO-LmuvZhr5m$}?pp>?e$GgV;%V0i-Ir3`56_C1?G1O>tTy3f>RIC{ka>HQKn4QL~j8%tfd8+d6qZ^N3R3N}k^3Sty4 zcd$5K+Txhly{R0h;H2fO0aqoLFzGg8CF5-_kmb5w`yk-a&xe@Q|53HZe?}mAPZ)i@ z#`?a9a*e_?Z+XeDa3|I`>N`KLNSa6)>L10m)$MibR}UbeLoxt4^?2DOy21b=9{K6jrvPTWjh$2C@I)7c zy6liRH}1%lVK&9BTOmI4_9>O4PAcAaf@m`S1ce%BHM^e@%$Jn-J`ZB|zp91oQDD&XAX94QQBO6$p*>1Zb5lK8-s|%)JzG$0P1h<-#=|PZlD;b zgXrSP7^UZeJu7x>Qvbdj?aTv|8`J{MGc=cvX?{!uc@zYT!AbBmtW=R?NybRI z?5Grs*`Rm^)6<9?1WDzqXZ2)q^D5b=RI(E*p^jhu5@va9L?zamYx|>hOP(<+hN6Vy zIMy+LdCJL&eb8ul6m@S{ER6TIkNt!BbX`xpJ4hr1cFQ2g6Gxnj`P~??@{QmC*|ZyS zLh5X@;0rfLtFLzpFInt>qmc5=GR@;XC@S`*Zg9m5`TYI<)q!hCDYSJzD8tREyRULH z93%}bWAb2ITaq%LU_%W;l(iso?U1FWyxoMN;IgSJm~u%HN7i$r(}Z9un2Wh8#J*(5 zS&!U5h%h|$Vl%aM>(=+SBbdf|tj<86iyoYxJvd_f-Uqo6W`GyOYhA~@(_jNd@r4iQ zCp`sM9$!}trAUV zk|bA)xBGNQY&e`$D(c|`iU7t#ob5IF6!9-P4CxQ+w{oWr)siI;^>bFtJ05MT>{X4S zVC~nxggovo?PV__W?pV0f!L$Jw`(V3L+>L4XM>6!ap;*#pNVjeaDm{jZP%0J*@hbP zT?&PB?^xam>vXA9NgAKL1y)5#%nGj%6<*dt6d zlMSRb0)}OG#r8@ulUnf!MGdvRjD;{nAHWZCmET4TelCfb7REzh14qdYtQonGaHD4& z((jPV@G9juyViIzhJ~-iwRaq>s?j*kN*QIo4R-t$^530kpDho%H2lv2AS?R#ih`q) zE#o%UqHCyl*nOu#%zUmh>hgxu$2Mr;_fN8kc~0OV07bqTtt(SMgPTf)awVo94V`+f zqrcOQM483FVaeG9kGR;x-2Dt+XG{T0F4gqxvpI>E`nO@Wqi+AO?oKJLY!gvjy$do@ z(aqy!oE|xgMtQ0$;ic89sFxcaz#6&sLJoKURr1h?0qAl*P_CdUS7cXfAVuz=eiX^U zU~kh%@cW1q!%KRMZ33M)$w){+KWCfExGT$3t7|ckvc-!-+IQDX;hL9t83Ll+RlLz8 zdPis>;|kg!?(Z77Y(eW;Z!@(7vDTn~iAifdY;#iz%g~A~??|CfR1DoSr(Frv7(5*Z zNLbqdpbkNl>M-w`r4Se>xN&XC=!&HQz^F&Fs~j`{M1V08NX%dRx@4At{ojgLBV5Eu zCtuOI5?+JTn%W5eIHV@!Y~J0@C?(2|PE|gf5rvHeIxoLgBFIqmg!fRs*FQ~ZQ+l1s zDhERMq9G*7T$dPe^aQi(Ji#=`m*Khv*NSzIOqhH(re|Ud6}w?57t3?t9(MbiseWYX zS5omoGD98WD(3Pj{=zX%Mo5@ZTOd+Pff1~EkR=4m^pXwj(-&N;Tllolcyh%<*<#Zq z-pw^q56G)^IIwu7!W^uKEp~Ta(tBsCWuRGZlp1laWkPHcKs+*ttnK{)eGiqsq2I$y zl21p4OnU8*Np5_S+MGT=sDrvS0lBp(I$=<33vY^RU#LGQ%fK2>B#b7gkPo4@)aRs2 zavjZtDMku6hk2q@qoU%A(pLx4=rX>0!xx$)%@`us9hVTts|2Y zYmZ6eN2S_$fIfl98SWaX$fSBxS{{mVtIjtdzH5>dT+8A>AygehnC5}c+!k&}4K{P` zNwuPQxCFiWeHb7%86NQu^^)ZziB}an(j3r1P>cksWxyo4;#$TRJhhjJv+DFw7K%e~ zTz(;qo|Tq=XvcrmGbzhoN}>^3iKwG6I>78kXcB=%g?_;NNWi6x22_y?1moQ9f`GO(kcf#;S*FGasB z1zKcYqD&9o3Yj!%=mLPi=FC(ed%nXBV)8I^zE*(dlV?HE;O>pmUXw77w&5r)9r-mZ zHe1NCTAgoZpt90azoKPliB?w~_|&{Ph378)#~Hcounn+7o22DL|-sP@;m$rewOrAJwJjrvueMe zi7_eMTrye%mETSqlj2_@6YX%Tq3E7scCuQt8qIU9+7D8F!of3$Oq;^^7EqScAin;_ zOWL%#04{?O3l^ZA!O|8c135gqkq+o-{s8Il-R~#Eq&#Vy0qHd#JDsyFGSQZMr#%2%m>1i7Mb^QdTZfOI`z%W*Ab~D-P7QTo=AXhE^yOLF%hac{gPSx)6YGx! zK7TMv?e{-7EOC==o>ZM#V6JJ9%W3Xb9zl1^TxppyUn)q|)S6f)`nH&XgiLUVAfh`t zbv95T4O)nuCeo-#9YnO~$+BZUrL5j5a!T0uZek#4aD?o~!V)jg;1Ah?v?HkSNMA+~ z*!Kiy-(}j$UWCoE@7x`~r^$VOFjTYU{^1!-{!&@?TQqnPh$#GgI|0GMeDI`;45z82CC@P{j6fFL;?_Zhv87G zz<{O*OisMlh}2Zz5^!evFUqbAprc8!CB4carITZSng7DaGd;uF(24<5K6r=pvdFY9 zw~sRf-{u_^c7q)rn5P(6ho&7%j@?kAW-9lNiOID6FW(o=;McvHqvpEo=66?{Jyqt{ zrfb5**dyXqD`)rEl~N6mihA24hh+-@r|jL+^U3kYKeVKs@Dj5;ue-;%_+bMP7BDWw ztX}_Q8GvggP1rrpqCOXfA(H>HIKyMoroXVQ&wQnZB%B!822i7}xcEW>*#j8yY$|rFKfmi7mY_~BIv>V(r(9n@h zL^~}A$a2OP&U-o51%5NOJN_6Wg}G1OsdL@tbV?P0KG=E#JJ>eaSTv1J<=68M=VyD5 zAHPVOdFq3~42E9FmI%mGQoI<-U@S3Nld#8=L33H)aC@VcJzJ4V^BBYjE}>(T5m$-C zK-{tW;x}fxJm%k747h)Cb_#ep4wMx@WUC7{jkFj=UL(Cu9&u$9i|h<2;c5mvj99Fn zGh{coeHd^C2XSy*84lAbSoOiXK-OHbO~a;cU}q=o|saXZm%tx^+(J$Fcej1 z7VsJkj#fe_brLs4Dgj&_3>A3)gVRz*&$Hl-_yXZ)6BlIzKt0TXocv%;Vb|)R@t``V z=l#OHQM|I1mw&`jSfG1NRbLAW_TqZ>X?D* z?2nKB9}n4$p6m^oJh~|ZbU= zBbHVhmt|%4V5&tLbg`7(U(7p{Or1Rr6iD2m8GVIxa6$;jIFqn@AFm3!_FdULnlc)>eyymr<-`>0${vpa9qPgp_Xrx z6@#}x_G_Rs$P7e(1*GTNxqqLz`AGfHil*zo-?r3Fy{!MG7k&{YK(w1>vdm*!H1|F@ z?S=q&ie*ZnM_3a&poH&)PMuL>Opz1=ebEJE@>LGKe?-c+F%h@u|L8EmQ&(|ND9i;b;=taSaSE0wqxazPa75~d9ZQ(~-u z&oHsCw`aGfEfnz55P`Jsc|25%ttH1yy`ttYG4ODRY#YZmT@$W~osxjXv{rqgtf#$2 zVJy&RCd8h<^^3U~IFln>a5asH2vu90TP$kbJV z2W5|WtVX{cAJrR(BInIA2% z-~nw*-pea2?)^;Ij%uTxc$0A1RJMq)(2|m+>R#`7At<<@58XT_i%gj>rJW3=wv)d7 ztE%z{%7}}j5LozfLqJ6zzm_H-8TBq&j|$%dV4@8E$z!CXfDB>AhO9+M_aeuvi^TgVyzTeGbYuhS{2Qt`bpQr0hCgSgIY+$$Fmgd5 z9dJcb-P=G^M_W_5<((O&)>AA3{pcgImkLv#4ugh~M(*eZ4`(jY9_-FVD@#vm6fW7gT zmkK*;ar*5*E(`KZ=%`1Pwrq%p2flVJhwr9u0m5Nts@``?Y5uKmancfAKfD4&T8o;> zEi^(vn43p@Ftnm+>`(tT^|?C4OMzUF<;)No^@0SeBE^;#5}N59*3B>fYD$y%CXHQoTaK8xshy{etm;pSCOL9%q=4-8oOnDtC=Fi- z%f-byEM7Dq%fDEcjQCxCYQf|)9L=w@ zf~x;OF?ldk16aN$BHz;f7obl2P@wi;0(`Pj4C(z=wWD? z=8qKV6mJ-`J@ml|Jlu>ear<$y1P}^+h}!!+RRx}W1EoI{oAwZ=5B;YnJl*o>-kjv& zT(Na{RbvsJ52?Nk_Zos2FUOxBR2*A>5)7{IIS>BX~x)vybEWkUleUR$#QW`kxh$ zx;`Ux*I!9<>SR5Jf(eEL9ir!>OX41;iXh0a(BoRwR9o~m8wfo~gHvr9LWu9{b>`d2Dd6|8b|HgdPDhPWv&q_cH9dU52Ixuss)$B1ofyO z^Kmn(n3!#&kc?4-9zt(}(i0=*)x!{+x(0_hD)!cn|5Y+*np@toXpLifSx)XH%~J_Hj5@9cFPEXIE?E`Kh4(x?2L(% zuPfMfY(ILKd6>cDxJjq+-y)_wr9vwQLgioaP|E2~k5g_y{T~XJJU1g{kQEUvl`R&+ zfI|VkUMOeK8!zHTN-I*Tb48Xo(T(Ps3K1!e)DT#>1GWZ5aIZCm32C9Hj6njGFqs;3#O_(vwukd)1@ICdjZD zW#%j#^f_X&?MkN?tp9%lEm;Z3t|J+Fc`p9NY-!W33-omGzaWi)OH*AdXMN;L7cItT z0tcM9r28KDf1s{+GS+psuf<9U6MGBmtc76^r%}*Gt&F{|odWQNp!YwJ z!NEn$>9f+A#&s+?zOzy;->iiTKlkg6zE44&v`7NuVpP*Imj+SV7&$x_5s}sK`u(+` z$fWbR9?d$w>-a4p1j5U;qY%Vkp!8uw(rJJq=DjsOZmRy=KT!^$4^OZDYJln_0n4 zS9t6moV>#r5l9G?cLH#z4vU1Ct-i_t6j3AzQS#I4YP(L(C0j7}tp|Nf7m+7Ao_{F? zII^13DG$_|a4e<%ax-0ex1A?HEN-_d)qI6Z5bX0yT5W`MtGN0Lr!>|Z-oOI92*8yl z?ML5o9ch0>3Eb21uC1i6CWwSmA;Wbmo~^jP%M9@#Z6w@t*S0{wq`xPwT@P|pHNBT%vJC7&F&$(f>dbhyd61?5YV^Q*^ zz$8)&mnSox@TPN25yxVE#}<4!gXlMKUU`@@M46r|_?|EF$4+iCQoip&Y6WL-$jEg| zED2{Xf{=9ozqm>4c!l61184YrwAoD1BMwU+8Cg}kWVwhz2^Bc2)MJ1z@etdDmKZUsuI`kGRd3mVA! z+hjOh0IN^s`+>FwI&bfc{M-u?%FG2H?d?wg>neJ47#A)8fqM7qhvFc#H?V3 zBAAT`S=Y-nr>mGq)SdlozXlm&kp$h`$F{r=mnk7}_mxN@(K>q5_K>ggoaUPf0qwJ=u_>O^h^nyYDaRQgk7 zyBt6%ZXn7rqI9wb+rmb9`9N)@yh{_03J~Pq`8D6h;XMESPJK7N#FBF#Zd4yG*R24F zWCt5S(LTgXc)N=#9b6?#mpUu>w?*Fb;8e>cPZT-3sPm+D-{}FnwRc39i4ZLLZSeKj?FlZ z?m$&zCB&1?ZTFNz$|^JBWll+co0R=<+B0Vv-M|IAL z=G*0^u~Po|Fd3-g3`8$n@Mv>0O-5rr7aV3t`4i?3QRyaY3)P@=UYWAXY+{7j^q4)z z#{hNYOE(&vam>HG5&fRS#LSTKVX$>PzzSXRN_HzeYBxzs<~lLTQgW08Dmh>g?u$je z^4Y1>o=_drAJ|4^?>G5u2hI@~BaT=uQrZYqtp~|PtAk)0sUHLzTD!8^CtR0{ENZ?> z=2j;(!5WZKU^Ti@7fb&8KTD<_LP+;I$F0|y<^L951(x!Ad)WL=jilxdi$P)jwx&7- z_fn1#lNF_St8k5HBj40(?Z6TE9ca1rE|~u}t5AA@L!ldAoRti|^Fb!5Xc)4xC&4@F z$XVx-ZZ?q?uDt2W@v82WfxBLT^te#g3fYf0SXZlp>Pt z;^xEd4m%88!_&MfRFA6hVD5cL_9~cgqq_v=tS)4taMm)trNzwmBU#9Q7kPnDT5S_H z3aInKeGZT%^h0%bGNN{Qk>tM7PIK{V)_54I6v~uwq-36)3+_!x{E(XHgmXd~_tird zmj*co^J6glCywq31G1kWyh%|Nhk zib672K^wtB2!%vDAIZY|2t={l>#*eXzzax%Hrvik_m-++ceHjyh?Njj#}fO(x*H97 zy{qFS6tZ>$bt7ybRIYii80w3u_{_tXHljWYDWX-2s*H7hOYeAIX{7>*Qi(^Eubb8$ zTnP8WKw$d&U}9ZbX5itAk~7JU+yIqsO7fpqYl0V>q$)r6xA5Y0a#hQcX4?gguum|1 z(f4AjOCQ}wKlT&q<85QeAEH)p0;a;*)y=NFY83MoG7)B7@m&F4uyr^)Bsxial@Bqq}sup2`77Np#I9?-|})j)t2tBhPGy zwf;U$!4xLI@-yF%gHPu0Ig%}NRl=r+N+)sWs0bv-H1;xL4nA%R z^9iPm)dRBq$BBK1DyLh8wO4@KiV6a49hwl+5JZO~odFeXqd1$iFTPp-?TP5qJ@?8P z%^v&qa(~mEFa{kHwAzbzhD%@YQ1g0yeil$GGNIZaYxszCCv5~OSKF}q-li3W6DA?^ zba#tT4#M1Q3@}FhEl>%;@{^8lkPU|!v#c;{`3zr_cy^8pcK}V+bG=D@Ru67$zt#=)8OKemf@lwBL;MIZ_t?lP`CH z(WePh-L;T8IPdoXcZWOj@uD4Bq^@g_d0~$NJ=sm4%h%K4v`o*!x6-(eK?8A61^yAc z^e*UpB`9rEAmjFac5+@a0tD}zKncnsf&^-w2gz5sAH>!T%Z0Lfshcp0aFEv>db)E* zO+L{7jdc;VGS)y4%Lo^slpg@BBQ{qpc&$lOLpHrVm@c8qI=C|h;JEndc7=l#V!#NcUReYGYs0W_89{nTR!imQeJm78-X_sny~ zSw6PD=a|r*gEgfLm>@^bx-rq*RNq-go8%)9+QJzdZxI5Y;q=QN^?qxvgUu@J&mmZ4 zP^ufWTxi(poS_9`PJy-{- zpm%^6PsbQx>fC`<#DF@Bwtsg50Iz}jbZtNo=s_%Cgd&y@oC?L;AR0t* zQ;>aEfhtG!9f_V`5t_P^$>NHUHd&S)7OL)}tU!8C2}Aa^4_@TiuE)C*j)UMD`wQVM z0yJ3yWb{$;;Ek#@`Mh1A1JydATqYR2OeIPtWi~GKsY9OgEKHQjY}VaxNib_X6M)bl zDsWsLifk2GxdR&hhtfxogfBCa@sJ(X5Wl9Rkx7Q4vs5pLZgQv0ojcF)r=vK`D^p?#L>Om7>o}{3C~73Uo6^nmDaM-eJYumWHyLV7%%U= zu`J%(7TL_PRv5Jff@CEB@4Ws#QNl)oiRWF4OO zXB=Sx#bLD7KUZ`BJTgK2aIyEx(iJn+<$dVQm9Qp;SftJl_(qdQi?3`A_i!t2guIP*l$@~! zLELqA@B#$gC6pZ`+${((uOTT>4FJY=-;+wJr}hJXPt%fxv>0J*8b?R= zE#`E_Ov^Nb7JPTLG=WG6E~7$Mb=P-4(HM-Vrli>zv1ZYhlO|i(ZwC~}_-OC0l?Zq0 zM0~x$@bdRaHYt60chKt;V6Q)h0G1mK%xX&(7j?6C`v+vHru*I2iU5&6#1{k$F=S4A zBEj|5YS&6;rRoAOocN(=SoDN%357ZBflBW96MN=C5<=9Gy#1*?a>D>KGrfO{Nc~eN zudWU;M_4M+%P{UI`Wvw2_^GCmFBZ*E1zX<9W=LXy#5}iRZ*oYH%QMwj6WQB@f<-e* z(VXY$B}Fyp2(%3aac8g)*wcaEG};i#WI{frDm~8V;aOvl$!sYbR2FDS;mG zE`R2o!S(X;)I>Qnb%GfyAXk!-P&Jv^ETRP(Gyrt|#YCYPILw^F&T?b;i^(w{VL{I^ zTYeE``AHMV*4yDKg);^6S6ccg*2*QCKObBs+_O6y>O1E|>2hylM273Pc1fB50q5qV z`Nub(91Akm(*bzv`dpiW?8|6)?a;T4V{JJspex3S_oq!JWgPkxvixNL``mQ1vH~wiz?Nn;Pj4(`GpGbvdnh#s9xwuE{gj z20Eyad;o=wNCHftyJ&y_U0ve@@xB~bBz&%ysIU@c*U@OPBwjX-_>o-8V2~W`U;m6` zCU;1CKzC+Q!RG*llS=FUQc*cW?ViZ{=@3Z!KfcH$ zeV^ZC5RXWD-8l@3ILW zXZP6zkF)#ifm$&_X7U~)=5$%B(gbp^6};4%g2|GFCJbz zym@%?@#W*o$Cr;U9$q}Wd3f^i<>Sl8k9TePpjb8`t}f*K@L_k8+}68IaCd3B$>9Jf zSi-g&TXiGNO|keG?iqC1;gGRo`IGz+o?nrO0-y@N?>8chdXj=EhHr(_=#%uR)}|nSlo|g zdf|*BM&{K?SO^p=Y>5l>w+n*o4DRTdF+VeeBMG~y_@HmWqVNM#+2RbNwil!^n*8#R ze;i%1D0XxLW=Ea5uhNXI>!`gxvIpRlhupcn31IEQ4Q)zb%CbI@3nD<337W9B^rqU^ zz(2XRrk>Jr1szFn{YG@#g(y~G7YKeJ$w^sI64N6rOrP-ZoWOh|;a!WgEDT9O^#Njj zeC^S+7<=pSLvjAVQ)2q6UiM` z9Iqcu%Rd{N)!CO7s}Lx^&Gqwrtbvs+TK2B1vPIr};IRvVH)0f3WV+Z#n?nZGvq5DpUL?t-nbTyl{>Kt%!14XZM1_9s_nPQEQw zaQnz5v2AzgfL%N>?@7E4tSJ)4|B+aT+G1UEXiAV35 zZhMc5@}Y)-C&t5NjgG_1pd$Dw4oF@&)!^t4E-w?{q&XpY<4o`m%i!%9lO^L!iARBT z70(cU$q{CzMIfM*9|VDLev^B$_QMb32?YT1`5ZeJfX6j1PLX%uSY#=Es9^JWbAbEM z@I{&*bci!_rmK$tU3{uuSD%)v6R0;kj`|{$`e7Pvxo~120^uL|0iSGnWHkZ})tTue zGn4+XVynEbq{zs{a7U2-ZZQQ)M$S8H8BEOluNEoT6oW7kqdgUhSs%sm`sJbn6NG3? zq%q8pH_}zpqFe1(j$^5rJXIHKHK#Ddgco)OFg*~ObL~s7@kI8Vj`n^{2vBotaxpwN z0s`x{H&!KH!!cwbsf4ZSlOdF~DPO@u;0ZtJb0!Uy$|jK0Uv_Q*I)Z(rT>qj9{{zx2 z*xd}GFOuVR1OkF7s)?d*tJ6r%={y{V8nbHM&&1>(H4^xst7qEH^TMm*oot zqMN7p-E23G5_3?5DlcxrmskxPCY7Nau*KDq4<>1OcQ|1^azy%xdvMM}&k z!=^q$zDvQN?S^F{n~0wCgvG(HOad1!*xiCg<4<%#L8-*?ia~W9CPmdM+vzOuei$2M zD5i&1rjrOt5^JuMAx)Qnm|i%RvU+9)9X%c(YUPc??fftVbP13d^8mosZQE<<;*`sG z)H|>ML_j6GNhu~7cXObaID%(!2CIjPp`CP^==ZY-)NK*hWMmxKuGw$*xs#^oCh6sv z5l3wU*rzbtWUTbF657@|i}!}QVH#A|qj`6a^LW#z#Sh34hn(d59k2{uz=<@@_=Uky z?b+fML8MwZSFsEk(3|_j%)7xPGg>_kC2}Pbg5u!#z&;;DKO(x)$(d}$-l>N+0kfL9 zfMij*6z))Onpv&3A+zE=}8sN0X`VVE*sl+fAiG_sjY? z_*&9?KXE7cm$y!JRx)wSIo3VSTyPQd^D(&Vwi@Iu`L7;luhVBwP@6&33G~M=Rnmrd zI-br-<5>yetX+ujf>T$}J0W0gB3R>vN%;ptwCSca<<94Amu8p*X4Ehe21K4_O~S}S z(vff|gxr^YFA}4!F#R#hn}({47S+yuq}&vGt~bkG`aBEF!dr_x;Es5EyGv%Kw5n`B zaz?u-6Gj|Ff2H*W$WrCUy0+C}rL^J-KIk79VwZSA>iaZH+O)XPd zauF%}ik>kX3vwVQlBc?<2f-&EN>?Vk#|~XwY~yN6nW|LW|7f1EeET?tN+9CsizLLg zS(6W|pE*o=)8IOIp$kwHyrvV?I<2r{&9>b#5`h>Ta61(LOQIbTOVm`;=>}Cz^|efA z3miWr=c=-&;8x_3f`mz(D<0E znhF-v@XpBAYwrrz*|~c`av5u{){9G7dyEq=I#SHluF6dXB@Z|l_{)C1g@g*Dav zcjF=}+m?1F!+*1z@ud2bp-zAeL*@a3iS**&A2CWk+jhqIN1+tKCInLim=R18U z-&IsK4x$+NbV#0}h8ngEXIoxE`C>CsMsfik<;Z5%x17I}qV7UU*=^A&poW&(xX<9Q z0KQVzKVVrTRr}uzt>uT;`nk?Ce+nA~qd$0PGu(nCf5TGHgVs_!13SIbqD{&1>*ndu zW_7+?NkOS>KFFOC%<*Ri`UOdj)y_)i?FRZxf}`Wr#Gw(vmj({sO!IL&Z=BT3$EW*H z%zlEInlWeJp~)6l+)Kjm68C~ByY9nEs!F&eu8=#Oq{}U}#~ZHoPT*2(l%oRAgMb{c zWqqNYH%RR7Wfz@|)hYbT!v*A+J;d+U=nw2(#TkGYS5})yA!}Hzp4V9LX55p!*Cn}i zK-QNwC(vJu;!!*JwZQ)8a>J%sfo9RxZ7*-fuBO-Cs zf{);^s3d~cq*&0AX z2aO$2Ab2Ta&Izlfp606j?FhF{&<|M_kF1d>%6m%{WH)=8$Lt?LR3UT2>%NY+0Rtd+7pdukkd|15cD| z*6Zv$V=wc3J$}>e8sC~guE@6KKy)Ycwyom7Yo2^4lc$fHbr15ikxrbHABG)>7JjL z+GC;G6+KF-n}mVvI)t3*^`*0YFJC<9YTkBuKnuZ4ZphZsTnu_-z;%MUT-Kx3U|4gK z;s}%g;oDg|V_My?uP}^3g_F4|L5n7vR4*wvsYeq_7H^*U(aF z^OCkGNw*i%#-px~%zd##cC@fHo$#~+{wNeFGo%n!093IF;B{jkR^nFYfDCwQvgTrK z{fzIB<{%z3gG$ITK!Kx<&Em0XXiR(*CrOh3_=ev&H z;r~^V-%2C+KCk-RZNJpu)7jo~P#&qQCO2YZ5niItY6}?YVt4s_C-UZ=NTaTLkDSxP zpJZkm@#ev9Q{obZ0GInH% zbc;0o^Io358|-R0oj_Nyo@#?Xm1XEgLhH>DtKy8RdrmG5&RVuNZ&(v1(=mjcnyKMi z;Wv4MMDIYt`YW$vmiFA<$vazoFi2iOg<&oF70+6ol!Bd^O>YtV$zT^=k*h)#Xw8}F zg6qiGT!CcA^4LApAnTUK4OyBx)4@(Qfn|bjv6PNp0+Xw@0`6n)qI>C5{6_emnCKR2 zTjA<`?Z3vW*f`3`U49SDXV@1h`t)#n@DS8~wJ9DV{(?#QmryEWtTJ?A| zzW8*b@s~e8@>8O7Cp2$-Z9fpVa#N&56;{GB+8YKC0C}UKwo&UL_D>f(jCaYlw+GVd z4j2Z9M@pIqZjc5g=)&LzfBjh;arRNXY9agj8p)Cv-w?%HdhO2@I>>x!=q{WU}vv} z^M;r*YN~nN2AV@!)5`i4UTVkq)!oV|%9*$0bK&|eu|9Bzi)^B8i=%jhci!Q+H7!;y zsan;>rj1(Ayti+uGJ#|Y>P+t4#M-ad`CKCCDqiPVtAk_d{#Pbcmx9C(QsNT4&VUkR7T8E z2Q12d3=XZ1;i-jxrAug-0CTwx4p!AH-EN3&I_c`_U!l`#tmfk4M3iz|>jcS;#TJmO zVkpvQz%#wVd$~z-{#Q`r#y4-S*L_m`zgg-z8n!VL#aqpda;Df2-MjzO5%di1oWRb26s7J}1HM#+q%%2fyqHW&qVpR7g0(oRU1hvL zl-Drtn5xj=*hI1So6_~je;GW;P?!O=rLE@U3V~uRKbMPgRHEViYI(mYt{(RI^K>xw zx+7ajYhb?*zbcXNBi0g!`7LxARBjxwwk&jumau-knqkdKstP#5S-0XA5X(m}29Oa( z$xUGDjS|QN_BGC@$UGUp_3~i6^W|7ii60{lMM_tHU{Vf`b&BhdeB5`N@g`&d2bYDF zfJ*|bsNzMm@BqYZhDSYN44EHAn3A@?Q<;n#xxy38DGD?xwMx#;BI0!0&wS3=WV09@ z=m!fj^?QWdUx*EhM)47=Bcr(dAw(e}WK}C(qL;k`|5g9jlXv7wG7%){Unb1W_l8YK{@M}yJ_Oa7~WG<4(Pz11y znl-M~t{lBy{k@g;$>cgdu9;Sk*ohV%#=uRo^^0Qa90BcM$t8!E4K);wYaKf=zH|}d z(M6KqL%PbvtW$;r-2%{;;^Sa@!*k`d`~3AanJCdse3n@35VJT@2Gf(s>UtVJ=XAGn zD3HFa)$lpw5PS!6vo+P&40`)wQh zpF=uS!G6!A*Q0jMsv#?|2BKjv{b*`29YNpP*RsjFXt0$wG5o0pfpc1FYXaR|E?i^# zRR8cS!{&BcL{6ph#c&w8ozxw{webycSeU+_cfjgNC)7FmNPIyc1>Bw{REAedAtGz| z#2UgubO)CYqzk$62+Q<>x;^yC7FK$tMsZ|S>fkqiSKC-Z6m7X1Qe7};V(;-jS6U}x z+?t1dONE89W*u0yAEBv|`lQ9xKeo{fk5xHYqN_8W_o&7iHSu5_b2zQF?MYKH( z3-SN@Rhg-GGi?X%qGOuK=AWS@)-a5QW!!!Z1QuuhDWbFT6gefDNU#V0iJxuu{0oQ zHYf!}X-LZ{Tkby|VnIn1I!q%jRNX^qI28rxNSqF6zel@KUSFPOpG)f#cTkpb4I*l{ zHXm)h8vY$Lnh0gAWWO&NhauoPmv3-Obp2xjKpj~;BSw=(osdnbWW=u#+NYHh#?4I) z0(*iYf=O*h=X#hf*!B?8h*aOO2ljjaT*=&d%*kpD`3y-M{#UHcX_}Vjwu+#U%lY>W zpdhh^rOSzZK*GDg5i9cW6?o!*Kp62d4k!M}&^rMWS-1mtMIVuWF(%LFXZfRUDgWLO zt~+=;RzZJO#ZBzTV`@Bk=!e#K0d)cKX{HW@ z^fb!jEbZF&&aTOh2D`U_Avps_^h>8AJw2Gf_%AwudhQmfzR0G~9~0b`2$+5ru9H@_ zW<(YQ@m`TFO~1HrF!AMoEpE$4{oNB{=I3iC{U)wf!uXm|Vz*63sG>TyVDUSz4uHur7}h}TKMIo z%SwW22FMJ9rpe1ko~~E3wV5K|sCZGStSV$pvAng@Mua^`vr$$}2pfhf+Fw9QdQ1hUP6sy0uO ztVWRISQMbbpKG)K1gpnD(K|!~(lRT~k1tqjJVUNBs?rIF^9^`T!_rkRid@4CeYd`G zLYr_y9`TQ15ZNiOyNQ)G*1%;RGlg;@-Si^#J!7S8Ii;vrPYbr0{zb7o&bP%^voZDHG{m(3ITs6+3}eJI24zs9I2@b8Bob_j?#vN14Ws=x-knIJXN4l=pH z#FJevQ5MdYe#z~BY|428pWJsvodXKZD%xQFltwxZJLZ=qf0>1@OnlyBxR0v_hyjAd z(9pFtM;iupA7cglNXrxj4bMS%VlULTKK74UBSGQtM_?6Sst}4~XKbnMfBZ;Hc!I%f zOn9Im3L@!Y+tXV3?t&%|9b>Z1FGfuMXyUH>j=rXG%Nc*}wcSN0jpv7!-zw*-nqkFckOtfMm+Xz?*sNrvMG5xL}A`F9|p4T9!ktX0ot;_3{F@ zUZa)|iu0Xkd7oP`g`COUo5f4U6x(xLtDo_bXNfmC^1X-Q{H6Wi_^5e09t^q{xjYMM zw?LSW>q;SP9FdX8uiQ|;Nk8JLuP8;O2S2i~q4n6w4y+WEx!B=Q_yIY$ zYV`@rMsn$QRnL|Styk^k>Wr*7{6_?i2&X7$;p*W?)HNnI37160*d2;Q$#J@_1}2o@ zF(ivckKxIo)NUePMfOd=Jq$0YYmFAY^R!&OB;Mi5`d|#e0q+0<-T)9k0E=J%xgb?Y zFO&ut02fLCEkFRZ00q+Lf2$0t4z&z~?jY|xmZ6ZH#2x37)G`yegS_%uhkq50!@?xv zKn_)L-ijrBM!!cU%V<*MQU4|KYol0VPN*ZF336YOMu={X8{~XB-0=kM`c5CaIHg}! z2sbuVnWq^d2^?G}_|ypHL#dAskkq72zeVi79Xi^Fv7arH^xQ=FoQxK8{)fu8t{W|nn^I-IbP8EJdLXD%I@;adtD(4(fHv$<`WdbN@G_ip+T zN{b4{E_V1r_4j``B4!EgGj>02QM3Vyit+E>OgL+~DL-ARA`v(90;^Kk<${@!ZLcF7(m7>149l^}Ip z7!vNpZszy>=fH%-VWtG1bNlGR;PjzKuSz6kzkU`ZT_XgvUv^z3}_=e=Sv(kM8}V;- z*X^=}Y~@k2bPSYB@mml#rKImR#Frpym7|)Ey|(bnuc!M#1V>0RXzM_dW!wZpNhp3$ zO4tI<91D`b=!Pu#UOWm(_R#KdsKjfPs&dYQXb4decwPb2f@2J=Qc7R3S(BrYNu712 zRu=|2HSoI?sBNO5EdpBWR0RzVuJyg@&OJO>t?s=kFy{5G{7@Vk>2Y|c#TX?QKDPZf zH6~SiX6Ne`Px*c51ce1}$efOl`i%uzR4S4`!@37_3>0JNJ z39p|iM>*21&Q|&4JBHwp1A;nhJ;1f;Ka_2~wnwEqH)YVqkZ3>Wp12J}#Vl zjFajE{(9cGN;dZLlgSyIob!gw95RJ+*<-vOsUk=W+G~;4O!&Fop@@cnf7Oi@#~{_E z(e0;Kks0Vha|K~ayursZ4E!!Le!j%<5{;o}UC|^5>=$P0#i?o-J(D3O_E6dK1ZpvL zzwMVWAF?b)B;fGf8d{R^8NAfXt;FDHSxkaVOr5(*PN<#Oz?oyy+c_>)s9k`8bnihv zE;g*64t02sT!P~>)cVmc5kRV}rz;}7_Pvw{*@2~vyufhkEhVOK=L^+P{A5li^Xtpu znFfQ>{@}AT|EF}b*&@NjN7#X-a^h6iy$L%F!x-FgA8YtHjNH&JQIj{$^zEPJ77R=@ zeY0O~vfWJqT3}OH!UBT%TyhBK-O+tj=f?e+w*lrn*Iv{Tbce+I2mpRl(-|D$U`a*Gtm&#g@@>*LdM_%|Ef@KLq&?PQnz@$`OBN>4|WA*^g!R)93z$ z9?6ywsb4I*j^2DFG!60jDsG=RXB>M={&Lf*sKWX*RN4$|$FU>21*I~ISAz>ANn4~y zQPJO>L2uqZ*vbTTYtGtdrhR==VnxiEpPy}iR!zvpb02OMi7G2IsrH%X4`*`|{4ltDz8!kE84 zB;KHyY^FtKtaSKXJxSv#KwHodtHrr6gwH6b9nK?uh)E*%^p1%6XEHxI^yAgC06a2g z6vIVoishT+cgeZ*?R(>@nqV>_ly}J=D4G;fadsF_$xGvJt)=S9At4nRB;>v;z$Svu za?}g23X(?^WfC+IGSLL?Epd;!#uS@Sv{x4KzZ^GGF4uh8gUXt{5QUB9(@r4$S7nbh zh9gln{&CXK2qF>-rdE;~1Ze}jONY;DQmvJ?%dJ8*x@(;CmB*AtMu6sPD>humQa+&*c`z!KWb zakv8Ig2gROzZvfhrnu%Kr}T)+^Tv>Y4z=@e0qQ($lPq*|d$w0wla__$X=+FUbGSv_ z6W+88U?~I&$%bNqUu<1hDoZhn%ikkMY^`OfeOiR0T_M+19ZPUz0-c`b!man5t*5u* zz)sFHunmY~h`oZm!FE2OeGFs_Afz_rdGaUPzzfzvF_#Oba#DL3#_&YKVH_$^hfgvQ zB-`7R-Det*6i?x$>IhIZ-QscL~5SKRSIbTQENpqri)X1!)tedX(YR~B{&Ms&^)*=^I8MqN0CRLbf4Jg!W62jH_fJU6(?slh*zNnP8>te5y7Y!?j6;YFndy=6Df4OyZh)N9vDyHz?cBV*O&9&jGi?|`r{_G7vD%|xRGgFptT zdFgkzJ((4i0QQa0^+=<)Zeqd)uuyZIRJI)0MY$KZka6CQ8OX%SEwv4+oi+oTFRRAM zxGcqjF^L)*9{8Sd(Ho*(L8i=_0E%F zgLH~-Q#l%Q=X<+6kSP0jo8!i{{|xseNm)$9IFe-1hT0+NGl&N=2u1VuJ=pzb|Q9SOU zAQ2Rei~WGVD{){W*X|&cxmtZO;?3ZWB~Sg6_jgmxdz;>3rO2wpV#*)-6@jw-#=@*ZDTT~%~0T;~q30jJ0WFfqvOK7HM2c@~t6y?(%CVbLS1QWQvX<7up z;Jd&3(!Traz-+5)IMjdx3e_3egIdkz+mGlPhaH!jG0xwk**p14MIt;=JVucij6X#_)=CLY5lph&l#`1$YL+}E<}pwf?#sLTPKYto*5i6O7+t9A}Cp^2Q4!B zE*e$L*Ct`FjE!V(z(8>bR!TMHcf?)&t%4T&*`bPAZKo|}+Bsy$RpY6flLUA6$f-a;seF}jbpzV?SkES#t zRR;X;uu*ZyWB9))6W$i^JrmjcfU#jo3BOJ*OPBgfmlR zX_pSF7X+K&R6NuX*o5oBfn)(s;?PulTW$09GDMT{~RG~V`n$rBeHAYBDp{w|$5Kjt!Pu3&KgJTvga z!lEI6lwq_=L))k8aPDg0?KrdC0ABjeSA#!|z#zh@PSZ4FXs$FjO2j^E2k>VQ1lxZs z%;j0DNm>-UL`a=er!0H#Xa$IkwMLq0sE9UJ;&T>UKKFn!DM;>Ar~R6h-14U&9^IAE zC{!qXh5%(B>MB5Anm$-jL(`e2duMtfE$L0=(p)mg+OvjKPxQos}Npr z0Qmly@L|+3dnD0mE^Bo@Rl?Os7^GQR=*$ngpI8<0dXSRm*YIM>)Tas7hidir>0*LtofrL zB@`1+Q{~wkRt$DUPs)PX#;8KUt&C4y#Tk#Vt#KBOu9$`siO!ClpI~xug%fvhJ>1!rKy*^xgH6}t;SW8joxDC=Z(?O#wY$^gBnt{Vj)jpM z#}FpE@r1x7e?sGAaHj5kmdVzrg@-oP*>PrZG;Rn1~&6@-HQ zKaps0AZ2|D8DN9FwsRjZU1g-4fLXyZ{lnK&;=Il^S=5GxkQX+P9}B{sVfM#9c3daGh4&)UR(bd#hi z^%I|6CHMn%1%AwczyF26*tVtbt z`5ZL2&jl{HikhB#a?mY&55O?SK!%N2pO>%Gl=9~HP5m^CLE&Y5EPhq0HiHIR?pT&H zr35Wn+u`uLtH4J6&TY-jT(o=bBq%$%?F5tF;`cRH#DoNt^;6g9TeXa~3_Y1+T)#kp zhT)GiJA#a@vid2p$k_wEBVv+;4qkxV8gRn5_9KTKSYr&(2W9JI42dachP8I(2QGVH z5@D+JTha=4nf+xI=ac$PVZ+M}m~NeZvtBgT(1W0GV+qOAjCJE5=DJo{*RE=Dj4^ex z0Y#qXHky~STF7`lw_5(O*}B>&(V#ZiW1%vV&w~=0>nzm&^sHb{&=L8}!3(6w~D+2dfgr4_XE`GEhroq|xsX8NjpOt{+@@`=Xa%oA;`B>Dy1GD}HT* z@AT2d$A9r8ZeEgNCzQ~Hc=bih!#|Us4N2`s`t>REQ5kw7o5p;lUW0Y>Oovaz_KLr# zC@@24Ar4Y$Dn$oGG%Xb_>YbU4%3F)6kwsG_-~hb&bTtK70DX8vDW6fLpY{VGs`#}!0Cyu4O^C0jvH+w8~ z-j>JH^%;De9Kx_?n0B8*>hX*L>$(yQfuNt)@*!LgWR;qcuge`wL)Cip{^#2W9Ki0$ zhbFf%BY7nNduURg zUEne05D@AZwjQ`#IwDGU3;#v?yHiyH^KI`p@Yw`c{2YX%z9c=#zf-OYjZb0@U2mQ? zq}kTu@)%88NQmSlSoui#eI{P%28d) zg+|sH{y5;~ja{58_KA`Crj)1PqSPdFBH_(8La zOu0jM!I;qFT5k8#FlQwXUN*apF`w;94H^-fcv7wrW%vE(UrSx|Ac0_3bJBnxsppuj z>OUAm--7EzBu!JH!t)n37&*sr^zWF(oo=pHYZ5n(aT9R-37-v|!wn1Ae1jYCnbydz zQjXr>mnnm@_y6)V4ujWg-B+_?iN1|I3z4Kh`s1RTs1X-r+uO8nk{$TLa01eUjsFgJ z*kLxMgV83f;dL@`Wtgz$?z(V11PjI|>Mr-LAYRhHKzAWQEK^T$DN0%s>a4vut{bF|a$+dX(@Li2t*1dc(YXU*4v;Q!=3c`LDDaGmgQv!;VFcZW^l)r1-nQB02s^i>8eHyp0Z}jCl63U z$~&XOFVfb?{4Z~3?xHhBDfK1Cv2KNLCyRvtf(;@4R>NnpRO2LIUD`93!^+L&7rgmp z4oWU>$)VTdAd@Ua>CPunt~BEQ<3wBz>x21)b>Hy8jaZJ`99lW|gcUV@{UVJQc}u`- zq!}20HL525zkyqj``+3zu#(zbUBCmn*J0eQ*7z|+J6SL1>43`-VSAgjqc)kd3NJkY^k~2Y z(H58`XVFdh>OjHt$Tv^Ll|xx|Y4G#Ei^o`AJn6=ClXw+0W52D005NGp%>B$FOQx1w zya_rGcc6p$c7X1gq@4N{gllIex11puyRlJ4GKS%=-)E7T-2Ia9@yoa)tf7DrOPu8p z8-aQ3R~TWdy6rC^zU-H__9d#_)tiXNqW>NM415>~z?r41z!Y0qGXeP`m@rR+nmJx{ zp>^1tqU{6@C5(3?Py10b#_!F-3K`3@z#j$%gaso#(IXrT5veUKGw=6gcwmkdQl$lw z=tZ`m@^>EOSkqd$+6HCJwNPbQ@n&m8qGoQ40N5s)@ur{+9M#8KF~K z4YY3_n((1#d1m<4ei;kro*aU7q8C1g^-4vaI48)H++#D0bq9;!u^$n9(s>Vw>s{qc z=HH{kl!5l3cM#cROlrH56`*zFRMQ^>Bem*LoQL!glfP3qY1jZ7J3XET*V75Va8VUpI;!^};$ z2Jec>9*gk9&6qo4A)ZmJTWXJ!UuPu#nk@p9O<670BPr=Hkj++?r zYT1&H#EzETk`^LXqn_AJcqpuLv0I6V)*8>UUKV)w1$o%Zhu#nQA+SK#p#FuL0{+G4 z^pPc$ee{V)Ji8^HPvVmyG%v+EEd-GAaD@ld*DpL30;29>?|$H**3Kcjmr#ddqCP@Z zR13v1$sfT;r;Ht!a$Z3+$w3_PfVS{zhCWc;opyQI8M5GM;`_kov{7J)?(Lh0YT!ad z;?<~cVp{aQuHPSH#8;4Qi{r9Ap;O1d*(a`=;>|Zei%Uv8n@7!Hb+~NOv6E}3W5-K7 zDgtF0W6kE<6mHQ|aCpx_XeM=l{KH+sv~!Ld#z|Y5iyWl|Nk~DUIx~m!V3wL7xzf&&RtGdB>@(KyEtCB26~DScmwcPZ>NS}}`N{ zhnN2oB$%Gdx#kq~hw%D9SsHmuo@I-wZgnixm65m~)`lYR)eaHA+~vz%Wga4Yei+XJ zKFmLu06S!s8_d>;aTn}r(KFDg!d#T;gWF}@1rTnqTc+>LZOL4#XuYLnBWW=94t_3E zy^WIKO2g&78zBT;cH1l^E0}T8o8MtM6N5ptcOw$Wntsrlj_3d{Wp2UkdixKBX%c0} z?^qM*y3=1!zHhS_@zPv2Y-HN%gpvfnuR^B0c8boj$2{pbbb`FqCs&hm{B1Z3%%9F#0 z7G=kW+BQn5rCV6T%L*A-8)3yPEGvL+Ujlj#eb-BT#DH+8*dQa0I$$ocWCds254+d# z+Aqb9eKu_uj&E=Qj($}PofTx#YW@eGx$fpP%Z-`-ge*Rb=vwlK*d_U)#y7Fu&{;bG zcv3fE6%(WM1e5aSdh8}T>?kHAdBTLnnPq0yWHna|tC;V!>;Q+?Ii+j*|9c2i{CTq# z1kH|d*Y*INP#nMoHfHw&+jT9F{1TAAQj{wA4e-{1AUowZgg>cuX}_zWOx(%1BQ|%I zz7_K6IqUkk=GWHX_^6oeTaKCh0}z3U`PF4e*3n0Fnl;$7FIw)#XOo}UP!Hz~4pFp? zBS^Cb3>rejO&cGp_2=@-v_wda-}C}GNDrZo;iuVr&;{54px^*%7yXm97Dj6@NEx6-1P97X6bY*rqNi z(X-u>Uaxb{lpiWvw>fI=P2rPyCmi4na7RpHHMC#~+)GZFaIBPEFp&05Wf%Fe#{)>L%{I7$YB+nL9PMo>% zfnS=RI_C5vT-g3r^Ib?QDBx*+|_*RkN`;~oJM}; zjsGEjL|s!<-E&8-_#LU0QqUZxm8q8SLNjvAG0yh`G^|NG`Fq~?z3 zh`45W*fiqfZ^X^1^DP!>lD=Y%eX1uE7UTXx9-EJynu&0@-0jxY)jVYpD7?yz_j+G^OGC^wrQbjw1CL>%(|s5UYa9VaC+ednU@GEUTc_B zvJtqQ$#G)zUL%+vv_k-F83?FH`(qw9e1Q8TkU?7V>)jJ5cMJw(vQO-Ps_4=zv@aF_ zhNrc#+sH|9{^0}x+_MW$A{)ox5h9DnKN!qi7w(G!cR&YDbatOMsKmk548>^-j4)e+-xm*Jr0 zl7NP3pGHkb^3$;WmQPTyD*DOX2y`HU;;G$oh3zq>O{SwMulXsj=5agcqrY{<5knsJ z1hdnT_#pEOKddAtdB%b~`yqMaA--k{hk7>mf*1=U#QMFIvP82aWcwn15t!_S`hRYJV^DFIBNr?d>U z)YL>*tj5;=fwCKRJ+`V^M)<7F%7-!m!K-`%c*6J61d&b!8{;5SL7lI&zyGnhfW^7( z*M~V~G`ubV&m$^&yI%0km(K4>`zQ<}nanpixAn-e8INz2){l~U$Xi;*IvKXb#gE!B z6)%u)X#I=j3O0F2x8@|g#2xZebHHs0#M(>rJEEB!AMT9hT`;+h)XH#K*f1HLUbs6n zU;7~?JZy)}?GvAtivUt_biUx=lP^Prz~y!31@xK!WK@=A_ctd!V99R_=@`};N4&&f ze8CaS$C@C$ni!sbe{PKLJw<*Tc+G!H@J}N&fxA-~88qq;h?jn@#zqJ1Sq}Q};lLbV z)&4woXzcLo z_hZ8pRK9Q&zxU(d2NQ`Z4`qLx_i}({g<3ykyRZy`cyYY8TKn;OqTAW+t^ogWlv&gA zioEZA^M*ieV`e@oP_*q{vw=dt+Yjo)Hc83`KTs~{CrM|;d|dA6KD%jVM`-WV38fxg zf;94PJ}^q8>|Qq$Ki?6poql%OmS}rPduy2e`=s6Boh0jJo5Hkx|Mi5@gNa*70_7>a z`04RSus0DwstOYX;dNM~c4{!c3tKglV}IT(PnQSkVMDueFm5Y908|PSgN@kl*o$o4 zr&r_6Eo>FN#mfY{P(;5L*ve8-zFm!p6t+D50HDhcOD~O~lOjz#EH`g4e;jh=A-$)H{Z7A!6i#ddP;+rDIP;)*mkC$d#&sWDAmdJaUSz(zXJ%wwf-aa-ExI^pY1wghTsZo?@a3oYrx(&ABn+QOP zhO6IdJ8^0-dq8BnvY5G*6Bv53HGeIRP&a15O>_lI9o_2xKx}4y_8~La53Tk^o9W^pY%W%GGwQbFIaRE!TveG zm*?`Uy9!%UmvphIFs=*SSVf%bP+DoQ3&>R2&Z)gkVf;3`-G!0g;?+neKV(p>fdCH? zqG-GmY7eOt>2NZCTX%I)W8$>-&;m3reV>BOR9<0Nt-%dtq!Yf>Hx;m%UB8}zE*_|KGpdfLkjk3Cf5}QN zL;pMY=$C^#m{`z6=;m#46*VU+i1j8BuAS1(9;P>(P$JIj&qTM3S`qN#t$sW|9`4)o za$fiGRtS2#!FizX8|U8If}`Xk{_2l@Pz7lTU7?UmV)QnA(~Zz?;uKevByG7zd7 zGTk3%kPmbbHsfe=bwJa=SjP$oGo-!NG7cs((iO8|;>-Rc$!e0%c_EB0HOQ1ujn! zx?{x?^t#e$S2T1R>WIDi&?YVPY*j#J9*rwcmc$l)G85)lVF2d!`5GhOJA3VYLe~ET zR1uyReDj7~ehagTaCTVaiD+H*!lYw(Ta(8)+-e=PS9z>8>8Ws_1cTcRw?HVC;k(}g zgXjFJCAL87ZfjgW@#0JsbD1CzE#VXS@I6-i{w4CR&sDIyLCDKK9Mt>pA=_L{ePQhQ zk1V-tqG-N+2LAhb#9xiq**=&(H`9n#pFwGemt5+O(Il_l$UC2gse$m80|)MPaOS@@ zv?1o+p3@zba{~W{*8NQ=n2%N}kukC5g7{z)iLT72WXSy#7oC2Bn}z$HI&xOM^C!${ zF7v_X)*mKbJ9Fe2DDhwJPwFDW)FQ1w94xgaSP>=zz`#p{1`R^G7K?(sHn~g$lw$An z(K~3D+`%OTJcY1Hp@-qX_Z?Gkk*jxP5ZMKlf+l`p04^XQlgACfROOuI_4Q0=Mq#{} z3Gt-2rGU9cD_uY?MX3Li^@qp-Mn>=DVmL8*VAo>%D|hCMjuEB;(ov&WNQlq)-$I2+ z)k^pc<0+eTG}r5BM)r|Ta519qaxwT0V6w{u1QFKU@}k+SXl<4e3kUeT{5*%pIO_`O za&3m%38eb|=#oXr`Q>9Zmad$1i|vyNH-;2Avg;yGC?|FI0DG9bu2| zq{txjITd18B{7O#mrE`EX_iken8utv6H--P^CU)b;BlZ)uT^v{j7?WA`!#?yt8!q5 zyp2`woviZ(XUYKp7VC(XQ{a~s2{~Z>NkU;1lQM)KMh$KiJV&Jm>+kYfY(b$P$UesK zmRLSypwu=bZztcFTI9#T1v(o0nWCKjRR6)@d;I8Sy_>JUfsKH;CVOw{& zQDv*hp0$Rk@CRVc^TY?W001D7IQrN#UvCgwVsN5L`!D~eI4v_+78w9hthxjs1Ie88 zjUzofY|c2KmH$@8fqoN2--o{4Y&z>X2y~>jVAkPM;Z2G%1;aym?}>Mu;TLj|ru*%B zJICF)DuRGsZR+;ebpx?Qm^{uG&A~wVX2TE8L9p1G?UC)zBFq?5WhIsm>kpLhH?J29 zgc7`kIl00Zr{X&Pe?$v7#jaG${-{(^mvZn{-0;zoHwF)27N(%<*~4n=;Uaz5NfzzA zDuT5*wvRRBLbyBDU}+_b&>jy%6`?&j8=mE5`0`go{^+nOf5aAvx+pURA%?au05tlY zsWkuwsPOl8-;*ecQ-O>TJ$^U{j1n-biZH8!QsDXGPj>N!qg{QecaCKxOms8lf06Pt z4#Bl&0mFibSOH&d+5JIs`UdwooSVi;@^+{|II{xd*;z5&I{w{_1UO0?>=0TZh=`=K zm9yPOZO$E%PG+p}g>lWFPXv+;PBhw%LhA+1?*{#I|? zCJ}yVbm~%POSS;BY%Sg;h}Pw0+HfTuTkE$H1e~wq8Jmg*bbyZFvZ&kfG<{N6@ZMX+ zppMqnTG}Y<-h)glJ%+Q4(wS6*vbDIpK@-z$bZBUh$z~N9Q#`ODEmRUHuSA7;MW+~$JRD`uYcJ8~~J;==rvdLq`e-?rV;(=vvn^^A9Y~nYu$QA=O4bEwnU6*!4o;#BZ zl}m1<-SJY;tSh&E*Rb5XBSfTQugIv;y5zH3mGe+?+);3M^)K`Jui6Vszv%}QzxR1m z?BQ!Bm15E#sDq#8tin)+^Ui@JHegiar~1%`=rkufH*_y=38Ks?VjS2FpK1*Lq&qXg z8_B^oJmYW_C%=IIO0G7J;rq!Ep+6s~WIL!?leHe-9H!cge!Pyr%tmv_)E#c8*c@FFgXBGlnmd^?PFamfsW2CnT#>e&uuFj z-$c2joN+anztf0|j6$M)e+6^xq%Mwu0mgAuFta#J0OG>zS%e zyT6f%Xw-|v6pMomVGVW%#>Jr2>Kvz-aSmvENk(Jgd4=~hh1cK~1YpphU+4EdI2R%g zxD;|>kk!LtDBJ*GWZisn+SYTa@6>dzWN`nI5mJ@Ew(Cy97F@uppWiW{e}yPXj#F5} zbUwQf4#--z^uw3Sv>^3<6!AIBIvw`q%ND4XqW5NsL~ts6XC)`?3Dd>|uCRmZzQh-m zGxW6K{eO!-<9fn*9u#P)?!7#gTT*kj?ha3Z1w8q3<_4kRU3BL4&FiR)`d8jvKb(DK zt!hT&>QL$Gssb8`0|jj_WkHb^#vYp(7o0uwumd7*!&@G`WP*ISpyFHAW#a@ab~rQ5 z6u#E8HT`|%XE5$bL{mq&2{9oFpYYv|g!D9#{JcyP^EpBS9_<6xBxQ5tYq}&ocA9`a z{QOd0{qW`as+WjY^pZLmrWt{UQfvN*PXEX)2MTA5@&36O}=q4cPVaA=y`a4aKaCDL> z%Q*L)Z1VUC#^j%%+L4NtX(PA5J(PXQMJHa~jdz6Pm?U4~ z8XrvM;)NY3t&Cgc5Hhk;<739(qr?DLQymTvkcec1ncPo^Jp9 z*R(y)f$0J&c`wz&;B(SM;;6P(Nfb|x8~Fd<-1NW`L2{X~K^91N ziix0bQ*i+jA7OGG;)$n1vI$}=D%8&YE(T2ecL&S7>x6!077O4LQzW2wDQg@|6EO1}$C*pcwsTtpknD=szydjY@92CU z4_+T!fr}=0SXk27yx;5cj%3v&Q~-xngo1zB<9N7Ch&V*F%e8>p*gH;ow|xIwE0(pF zPP(w*r3Ll11;Qa@ynWQ`9f2^^l{Mn@2ZrOof?!D@49NUDuwrrBBOLWKoQwWV*uY6a z=^u?E!-Oa0i2ba_RZv+V5Hp(g4jG|i@mz;kM~p6=l`Dn1u*#i1{loVQJ!nCvefkts zSXFW%g){l=EqjV+Y1NO6YGznnT+Q?ByalS=3977wQ$Nl!jWyfr;0kP2H5uXHi!$qxPRnlM(u0FVeJ(@pcjlvizb16} zMZW??$|`&%TWGV^>}ykjWO{aiI0)U>iv63g^`uFwyWqQYkulk*R0&3b`$Zg5F4S2% zq%(p6jtgwDHM$2JgG2%V`w57N*3fTYctPn=<{SYagSa<-Aa5ticxdwK-AD=}y>OXn z1U!cbZn+~yD;th=DjeW%s}++CF+5WsidH(Uf2C)I5=F8D1~pvMVBtnK>5Y_xE%2e+ zL*Ey9Q`hkqx7J=2gZ*k`qh1ac_d?ksta$2!LZy9P$nUV`*5$>Z?uk>En;>Z_3`8y} z&vly_G7Hz=jluThJTtHF<^B&;8-<*zOUb5b1T>RSsI^>ogl1l~x7D8iorw&B#Vnd&x^<4idv+>{&w6?(xo8N=~JRweqe!3oT z1GfA1B|te%iW=P*>zikgB?U10L7&J9+OoaGhr;`dka9HVy0MckqQA3p_`swJN?=PE zp80BArgUx#Vabo(lnt{bA1|8!&bLon>){dng=Jv~G8dr$F?2<|==dnnf7d~W0EzOy z3j`cc6LO#_i{4r4I`B>}dhjxz8T%C=Pir~>X68KXrW&PGQP1`>&-B9?7H2)|tn3qk zQ6C`Pq$~p)(3?vD+r--P|D?lqILZnvsItXj(J9bDaVAdy0!EOrM$1kH;Ng~2cT?-i()XJC*4H6D`N+6AKiDXX`-^V>IrlY<4*fYy|#W6v4$=)88*3@z&6z0 zplTOj?S_`B2-GOG5*(stLVVaZJ8(RATE;LDCiJwb(6K;+3e~KcA%s!AW(gT8_FEk` zzH6(Ks*^%N<%T@LuDu#k1nHk0k|il;2-tlybV^V5srg)TrlA~veV?}FxznRcJ&NBG zTbx!W8i`(`-30>x)*HCpvw$-(JEfm9?_ORRj27QzN~m!h?Q38QIS-w$^fdrG-}4lc zs%ia8evKNRG9#!af{x6}=CG*qsuCB}gAFMJ!_LGPXQ2n&%xU5kfLLdr;ClfWlS}fC z+Py0%<@P${9Qwc&i<4+=wa(ZT_DJ&C;eP=4n^o>YAXn2x0vD9hVKZ_~7S{#nqN4jx zSxfQRAWeG4*XTGk(q{O)uSA?T$^r>P62Q8+`4aAiCFscZrQK+njediDX?Om?E5slra8=k>{-Z3Fl4jci)%d{p5~|v?r~~Q-fF|V$PTF(x)DIMX zF(Z z(G^=XLhyNI+O^^wFI6n24}?CP>p6=N5y%)Fh~8^;saHn++9_w`Dw-bHk4mPW0^PDKNp^QhXI&b z+b>CD3YUeVdcHhqe4P8wnM`UvKcj*twIT+`=8+n)ZRi$6jTg|-zJ>f*wvQ90ahZN$ z8~pHb@=8aA*@9cB*?Z&sHg~{-vIV|M+|LLJzR|^3NtnzC3*E6G_yt6(ykBN>udFJr zQntW$uEr)(W~Ib4qlgHDMOaS=6N7IdEaynZ(UW2-mSXPWiL}Vidl%xHvRKkgb7 zA7h#y0a`yywW5mPKaTx3Jx_e~*r_K-UZ zB7jJ0{(}UJt7QX`n%x6lz%d*Ep&9`rtS@nD4JON=DB_RgbWMOesjB` zxPVaMp`Bz346mOE;T0{0jd#$y)}7CGm>j&a0W>uNY}SU|U)En5o%8KXX}2?+QAh|I z>*IvueQRF1X|cr>Imu*x^6+eDKwg7~0!iWaAi~{|kZ=n90uE6eAwG?hG zl_t^(+$)g-T>Vor(hcJs3S?09jii$Vnq9!MyL?y214Ql((6%N>KXIB908BS~ zur~g%GrTxwI+BN4+#i-fZD|ehwH?6#A649Qu^SjH^vP|p$686+4`M`q4KzH|L+R4o z6#;cr!L<g8i282KmgR4-I?D{FZ35dy*2deL}F(W|bJxd1ykU$e)riWtf}b1J0A zj@jP!aiL_2GfO8wFvk2{v4PkdPMSom&J$l~(pZ>hh7K4{?c4tHK^*pS#2zUtFSJQ` zddsSatlzah@n%qz>{J|@HbdIY5Iksb_Kqq#GRD8B0lBo#bxvsZJy-`i|xLNqS(6Ja0-iT+h3-T`vM~?$HpBiNtn- zPP~wQuEdT}-wVHSez&ZM?07MAYLaLAt&?OmXh3!Zv78H|MF(3--SuozpbPH9KB{>Z znI9cZ;jj}&VhGI8(28uOVHNwrZ%GJJ!7}j=M!kIVbn%;?y@YW4B%=*LZ<9EJwx34z zFcG|JRR=-%JAudpAB3+(fn;-O{G3=p~ ziDI&wZLUz$$%Ip{CCgZ*qHepjSZq*maE*o^=U68r#5o_=)6`5r{)BG_Hu*zIo>LGp zA`0Y8561Co z=CG6&@e%?5Drw`d8=p|2)R!LLU%})20x@s{&U4@Q5jLRLS*#Fl4!qsBHc{JuH_XGv z4sa}&LYJaOt_^hKp>&~9;}^>n1g;E4cz!UY69iMuDs6@>OY_Sw?Wct76=7w0KOJ?Rc4~72A?P{@l5VC3ZPV{O1*`*U{VdKj zr?1r#paw+4)7ilQ|!*WzXWVZL1iI9_^m}ODcKO=L2G}@Sl!vhov|dt9R66Sl z<#%CQPBf686UX%V?rfR zZ_hw=><9`~9z_~K71IYeCBi$NnwR~2tW#5YNArJcHpVb1NOo4K0L>J^)~{*Iuq?r^ z!~;H{vMSt}wydZ`#EHSKw!(j+iJ>_Ta!~<0gsz%c&J+i!p?rko`v}#$g@t!J_RShB z2`%nTi|{0`Kv=8kZ}W)%jgZyA7fxw@7w$6lR{&WbBNFeP7zQ}NK`1S2SUnquq!o>8 z)QY1BNc$YEVva+{DFjx>D0moGH>GpHkQ+om<-X<>J%8WWhqP5IjtCT?Vb(?G)0P`=wD=oWte0-Xx~u7KUSWec71(wO3pNtz~J)o_3GRl@np-pLi%0SLj*Rh+3tIGwv&^ckA|ZQdnp-&cgz;JbuHeys&O zzKzKWqD8&(f|Og|Pj|%lu6stp_zX5Uh~)U+-RfoJ0G~5#oW*59t2o3kl*WJ_AfD%S zljSy$kU?F0a<8k#G63CPXQp!c&LH)dH#EtDji2zvI^DH4vhPNSru+b&1?bdffy=D2Bh#cgoFE6l{H}*X$N; z1~+!Qn14tiZaSVx@#OdA{>kO+;!W;f@q-y;#7Kz=>>lhjg7hi`wn|6>qG*tqoW_+S z?ssm)s7go)_OgLP-z(8NAzFmH@*&p56u1Zk;NHFGo`3^jo@M0rD^H z;g6A0%zLx3YNmu0UprRKDe3l5ECC|C){^yEBVBDO&591U7WAjA`k_5}Is4cBEM;r( zz0sz+j~Mk0#diS>9h@F^&>frbtic_xlejL>DcY%JYPfGH?o|6$glq_-$SrI8TlvS{^6%NWTU))`IA@ z6t$u7ZkUxT^)#{@fNO0ZxfqC|yl>?nx6%Lwo#4t?NRqmhZTQdBSHuQcxd1z0^dJl-1nugh|N_qn~({#>DV89qVvop{(eNHj7O$f44jdh{3 zpeWh(lz_HTpu7XwIO~$|%-gZ}SB7AUEdsfaY8XiL>Z`9x~T_f-+6-EtE!p|vx|NanIH;k zAN#@a$6fx~`;S`Xv;GH()I5rc0gwYGrv^{}Hn%6)GHDgnm5pZHqCdKSB$S{9ai9^DopGIph)m09{q+ zJe3M$x$3w>=QF}tl+T^IrvG9A@2Ls6GRjRQOq}S-9mqrw(}TU+;%-IwNZR^ns=6wQr!R#gjkiHQ)uEYI*oEotTyRkPi8XJ@1H5H4f4_9MdO z6}tZ(7e%GOf4&-Wgv6jwQEtILdr%^`0d1--`rQfF#$@LftI)JW*(MZ90?TZ{$rAYf zBol@rbW*sKV+jVa^Hub)eOd}#O8^4rfM~kSRGrDeB57meu_d#rbHyop3Joo=iAq=0 zu~zn;A|P&DOVNC2TSkk0FYV9*3FF7P2v!gIhsIqp`o&y^jU@AxYF&$>SH6R}V@hGO z6cWQ6eCuJNV|9s-;Pj=Dl*xP2G^AIUw-N8y_y3zZ$AViL&Ri=`0L+)@m3<(=^ZqJ< z47HB%HFx9_XB;y8XwD*?add_UJuHY`V91!QVc<=u5FyZzJ@)#oRJOKt+ zGL_T^rQY)2NO#sNFy3Sf!U!atc0$()i0-tLBLeIA?EMibH8c%jw!Z0y?911EJck$k zx%2(E-zA_o(fwDbDTZoeIuDHLO|`mFeS?eR{1BkgKECQ^gPL&p3ZydyZyk@dLnLHd z;#IJ`&XYz$fJEy?uzh|Tu!KoPp3{ob$rNy9A6dx6vT>sx4;PXLU@QY(%Oq|&>Twd+ zlFGS75LxcUK4fxxKoqTU(uSVYzUgON(#p62EvsVb_=E|S@nN143c*;1{m`(xeFLWn zrk<+(5+2c{)ax7xcGn(+;KTfER)OG)oQ5GolXtxxI+eOigm*COW>0fZa(Ksgl_`ux z)bF`mvp`@n>eB7ua0ehl^3gzFmFp*iRR5BRurOX#yx`K zM#g6o5m!MVz(9~wn@Lb5#g|kKWf4MEODKo`@h@;W89u~^P1vkkpDiuXZ%XZR=S`o} zamewdUjdS&lAuwjRrNWr&G*e$3`WEGsdJP5NHtlCIz9p@KpAj0YuG}&&SrIwv%1T&7Cte-jfH3si zqXr*joR=>nj5WgFexEj*{v-O-iS&Lm(6T!53X^V17%je08PY&cxC_j4Ea;hmPN>S; zQ4{e$7<%<(o$9twvr=k%3@|8iooWR%qHw7&)}5DXwMMP6)W-F~Q#Rui!0rNbO(jq? z+RP%|?n!56&+!20kwNz?3ckUZx?y}9k7C(xGNt=ZyvjQG=+r!nLzxiVs4b_OK>fk7 zwDZlWh}`o<*8-pbu5&_nH_=IO)AIVSn7@31-E0Q;+8zED3IOYZAZIH|rdBGy_y^2N zVVSb7=3k({^+rHQy#9qfIuXd(Vm|pqnmVnOGs1|0FYg3{JmB=Iaw_{a zZv4)v#{5H~^fFCFRKht5P|tX*R_I@bR19P$wxLvwfBcM1`XCFMV^3>O!1DJU>OvE` zC#NKqqIbHY%9XSbsn7Lp6FUSlp1^u?ep8`Th`v7ZN6w==AF|GJ#Wa>faYVZ-(Ls7r z5dN4+^#+u=W0s12HMy>N0i{{JODUFDI%dyV|9YIq0dRkhFMUZ&91stkS>MVP51e*B z!%140SRVHuWH=wm%eVVuA7>)%Tp=F)_yVBCUhIdoFAxI|540L|TBLXS5hFzfuQuSe zhsPdhJ^MnFmSr2?r67*M87j3e-bD!}0`Q)y4iJ|LKZM|IH z!D?!f95XKpE*iJlsFhm&=FaOO8mMMNr!N|(<4jD+&+{S5De>-f>8L5ex z%-PS;12OPlz()LWJE(bt#$Z_7tj^P< z)fwC-B?y(VVu2x*$@~tlO$I&rYqIumJ^uOT)(gRgfxHS4sn01bMY2)j&!2C=r-V0BA`p`a$}pQ z!V|y&ixX);G&o3_$+U8<7k@Twe(N(C#6g)!9z{ty>OuMNXaDA(QkS}0PtzzKLdoHs zY-zTd-pTwoc+d6#g7&F8O z%Qqk39d9*4*-zjuC7U#)c|zwh{%ZsHOdpPWAh)XS`jz$ILzBBXk6r3Cn}C@{1WwfM zj8CR?N>heTsu2~lO$`n>eT7-j;AReQtD$)&-y)5zfYX`6#%QbLGkjESyt^3-BlfMrt)(YvSJ>5S~Q1OxQLC~ATs z{hi#y*x_0!$KtM_2!ugbV$uUFKah3)k5bRGG(*Mb82MlJLh%T`dGf@jk@h})1HC4g`;fao0xNx98dJSQF;z%!ooj7xC^UCvqNCA-MAGb44)C|tA;bu_3UJ_1ra zDWUHmX*=wZI<4+~U^sJe$X=N|RY$upL zgW&|I7QN&b-XN+4t9Pf?jCOegfT?`)xedyUVxG7A)D3TV_ADqbwi*b~>^~{p|!tao6BH+|RYD+6?6fce&pYzy0cB)^7 z%CHn8Q{?+)2gM5g_OdQG-!OhmhzI%k<(-h+L`a{lEXoX`8e6k9Q$@(WRUPv>3+w+- z`Bgb!JitM{rZ8jXdbnEImM*td>{xf~tX9&Q(<2ebBN;J0-c*Nu-giLORJg_23YKio zxSn%{;)xr{#p&W49zVQ$)`hC%D7TDK`FByTuC+}A)ik8pex}-vGd|N!Z=58oJsIqO^CgQGICD>e^Cz<0MHU@ z@A(_>CXyh0bGwI>{V{vJRP)DmI8y-b2tbx550xVWK=ChBdiN5PrWkYD!_ns2s?m|E z?`+%86tMU9=oV-&NA)%z0AfI$zfYNe|0M*k`mj|dhVx)NMYxqJh>n6(rFEF1S78x6 zVXcxM73HuT8Gj7Ii{OuID}=hwa55@na*j_4(=xvRn}o$-CX*0jdtWjs=MLx_y+5W{ zJWKSdW_AS4-jU)^BJ2Z*iMbQxHzw&4*K$Y0O+0t*(&(Xfv7opqsm`&%`~wmOU$7+L zR7fdN6_3Ize6)t%O__1pIJi5_ltoZ)c$>u$h1lT}5vCCgKpn=>h8CiIiNFh%wf{r` z>r++MJKdX%np699D+*$rqF=~WxTK)6JU;e911nI6ScJfjX3VJqQv6<`-n9&r9N!QI z?82u-cH)>Ka-#M0D>!qaD`|=e!2xb`*&1qoOST6AVqi_7-!=87sssC@C;ZXwM}4o3 z?wnk*nP!twk;=7pdJ!i?Yg6EY}I9$95e9A@SEUMEKg%)f^m8o$8yQ5NDP!v?mH;Bb0G7X*)#u}w z@qCJgm@|cm-|FLVcq({OB!yBvgJ_FYi|gu z4K3@f&~dO}b5WSYalw9!vpHc=Cbd+bjn|XzgTs)B`#md<4`5y+~bG% zWu@nf#@ali+$43?+t=qgU?@3bU-X;&?^^BzC)7ci&FC)M=>=@?&|HWrLrduBSM^wq zhzTwvKl6wP>ZyrWr_;uwrH0U5qCDI^nv8%ky$@~RnACO(loD5UnjZN_?8)GcU#t)T zlpd=;^iuhS7ceRuesVz9ID$xIRpi#Lv-TEur(A293uCkCe&RGOMb6;dlaBE!pT(qN^;9DmoonNO$JFV_;2GRUlE` zG2K+19l>s-wa0YEG;njZ26dQN4jpmlG4@MK(iGN!G;xCz0HBJb_3ZqI;FayE)&Q%f{nBGBgE4C=2{Qe!T*xG5?D(MV zd_vtthd|IjL8YOmXbEUf!aymU>#gqocso9g6F5jwZo@gz^1G5|SlUt_V9OcIo&wHI z;K$HnT=dTtP)F?;Dk>$?CmFmr2c_17AMA=4SxqD?ss_1ldm2o=V9>P+VnZ>=gFz>w z>v88UbE-vYbLwmBWC4)XJDN;wKj;CaCUhFR(my~i)(~mZ`R!*~uTE4u0GtK}S35zP zMQf`r0ij)h29oH7 zdH=ghNWdCe0`ETkCItbpjV}m#A+UcUfZbq~*tc&I(i*%3LL;>(n)h&Ltdqc z6=ZUaf;SkJ*L{=Fz^oTD%5AR?D-0>GiC8*TzgCjgrDXPjtzaeTK06Ei^F-4y*)3SA_xg=%NWyO$JimA8U|ok?D_b z$*VB3Os8;7+pvpe#Z@{JjJusV=K1|M#vGJ8vmmglgXrB0Ab&sU+C3ywHlrHgwFmAH zGg|d(c&+r*W7iUU0!ON3mIyW2)>G{rU)sX;T(R!NzAZ9l$k+KJc6l7yX@!MUa)5YU zeHzgPqhP%Ldjo8QJLAIt41=sS_3}4z_+ZswJ|<6#h*?R!tWQZtp};n{Cit%iCM||3 z>Mr~t!!FxG@8tWx=YkZ+^vBE*?a4SZzM<+K$H0ij)$d_1_Sy6#7%4wFbQMs*&!Vqp zF{SuZQJfD0m4l83Y%Wqf4@JF2+1rGIMKemx7A<{LZ^ zH{J)_@Jh|qao%>3`BFtsGqYx#700`j&@~j-pd!w{=8K$+h|o_fEHmcEg1w4Oc9D?) z0&@X^pO#JPs;B3we!=Ed98H!Biq^A4C{vSk4J@}Sz>&Z_^)$HO{Co1a@82Fhhh1~% z8XLKTROL!_yV@I=lnvEaGjJia=leDWsK8W;ATnmx`{8X=O6wANf?vHF=`w~c2u!8> zuF)KtW0`}2DXkS=&|8#y**0@(n($kSTOu_Pda^K8pVeqk*VJN?TkCOorwd1KK-;*z zSKG}D-PL^hH=of%cZ3)=VbKCK;IB!hBSd6Js0oh?X;22p0k{)UOJXV87j4ZAf~~#= z#%j`J3pqZef(+QEiZuD^s&6xk(Uy<?XCZ5#^%}ZbOHk!Z}AX5P%1663%BjP2NxiPE(ozh1u>#yvu_yFG8fGk zW+EOu#Htm#ELG2vL;ta(pm~RcYuk5gl{~Rw!kkMfKOlR~n-$9`x7eOKS=j&4SuRtU_djJPy#Gv@zsfEqWF0oU(VO5duv25wWNsi)OVV4lUy z1MCyPt}ONe9~F!NRX~E~Brx`v;=Nr;;U96TDBt7;aqx4erkgT^UJHR6c`=?7vWLnw zK5Sy7v#3O32asAQjk2YH&~F6|5Vn*>)OW}+k!Km-d&O+|Z7PG%5QXp_MN^ho(=jS# z!F4m5;>Pjt=45FbicJ0B(d;1CE8toepsjG?Cc{I&YvOVVY$!>4r9ErccOMp12h$p3s|% zyBQ9tPWPjy`k;Q8m{{l5egj5ht-Tb{E~}~F=2YSDsNqhxB>^Q&K&&$7F7mIr25py{ zozF6~m_ga?yKPM5&BmCzC_kXYqx|?y!4X;1A;xrV8?70!xmG+1fr4e7VRe(>Vn4Bq z(B`I~@5x^r-r})te64)xO;nve!J?D!#DvyPuI&diMN=GF*(DVJeKf{NC|gE=ZUyuB zDqW+n?cvXftu);3en-OTUezH~FAmJ0vIWRU5%ixg8{!U)+28Tr!iEcDu|RCr17|Goch-oNxn@VbKx`2efIxxZ79@GsRgWxRV-4R?)96|A zV->{G#-!J&*wh#=kDMPX*cI-lUs%Z$w!$3&ib6{pXQ_*M9y!?}SPcfnY#-j&IsicK z129pYZ?kN^Hq9})@a4KjF4PBy1;bGnEgX6&ww$&iv}vt=OroAvW$0J^&}!$|wO(ok zs?EL~U|I*P1JW|%`Jn125P7W}woyEL1#IONlMBS(C|(4i5|v*AkfQrTQT!%8EumPp z7M22nZnB_(DR?YMjg@J?G+9_klxp4c{cG=pa6jk|4+?*57XYOzv*{QNzBL8?tyB)JOIYhP}+!TO{hOTCS|W$&=|xr-wZ9K z1Rcq*SoMOPC@O_es!S`eM8d<+!RUp zZD~8HvokaufhC*+`q*kU0b==6ey%t3_TYkgZY+?eu#ZMv2jCDFsv+iQHDTjV`L5NL zt4<*h8IJ?Y&ebH&k{KL!4(fc1yGDvI)`Wp_@0g2f(K~s$G;=&joB~d*79^?`j*w((J2xbpW=#YY zQI0}#f5?l@r{F;4L`G7vXukZfZ)jFi%tXw%d76@f%x^Jh^fHDLp&54&@9`r?z>mjQ zkGuuz-i^|JN-D-hJ#i1h`8l_9Q&lw0;bWx8&SbjGQsmPYq>^iez$t()Ec*ar_=CG# z7ml-!7>5WWLu7PgvN!f3^dssOFkBo`=Yw_PbA%0TLE1yx1296{2-H=5mUftj(t_hy zMm+h6hR(gypg;mH_rp|8Z-rqt2*l$1DmT%)PjQ)*3d|cb%TZf(4*Cz0ld8AlyxLEc zXlumoEJ~!D`d|ZD38O>*LTYbbq7?_duTB6s>jo9Ed_n_IkO;Pn#kap$XYDqyZBPLt zC*`Fj{6T`3dLno#3cxM&6h-Q35KsUeQIhzB^U5VYVlv3SgxXf~d7D)n$uZt*K1c&MnpyptV%scef*8 z>3CAv7aQX;$HV3v`M?N3B1i?&b2X>NiGvGVBfD8mi`Llv0R-|>rzmnUNB^=h0M|KY z#A@KylxJBY~KL8*eX>3cQ-+V`|?PLR#U32@2A^yW1m*Um(ud{Cuz&E z_g{Xy1s&g@haz2>n{stOW#NW0M`rq;M}l8u_W|o=K;BCW#^#JTcWCm+dQNBt^QjBl z04Nudt85AH7LtRAn==dglyLhXPt|I-KC&<$+{knba7wGdj%ZF(+&13f4+DHf1t<%T_e}RVz zXZ?a%t(3;&O9p#oM=`-tQEmqdXYJ2N2P z7+Hj;$v`JJ`QUQ=sofUcwyb6UM+;)F@~E{axi4u>FPX&yHnIm%i72c(#j<8r0<;y~ zyDhinFjG?CpPBb0O?jFbu#Xl`Jzq)$y}7cF15{OrYr`YxAEvdyBP+q16%8-#lSnT( zs4C``<+tlZ{)B;cg*D{S1reC@HU%=EJ{qy6Qc|*-=->9nBU=hfd5D#B?d@ZkL!foX zsTyBCG_}k++qa{`w>~gRb=p}Vf-SPk9L^zV$?Ziq`!dG7IJ z9_R57)_9|s2tDG?(E6!`Zb$efLufS?cqC_}`gD#2fonG$B|ufwo#~wB&!s@7Hk z3!17oGkoL!v~}&H6k2O3DTDKGR9T>${8CpgtYF#n02?g;Q|cBnzbQHF72X^7vAXOl zo)rV|c{rF88HsNj^-iMVBbPxHC7VjlkImzns1O#I)!AX!v3T$|3z+9V1bKfb0anXI zzMkmts|CKW6w2P4#G7uv9sLYl$)^PP8J=Cw=1Q~yvy5xUe`|);%i1c_2x!6Pckf%T z)*ceZ*XM<&wPlV3H7t-YaHvx*!r5jK7%GcW%~Y;F@ARL}#3@@ZXDcC5FA(l#FXpxh z4%_hqRXuUI=ixx)$#5tej#rd`V}pm8s^5z-Ysd4;bA7bF zC`&SXnDI!s8>KFK*CUHt#5~`*jPf%=2vaPnyMn41N z+{hsaS6Y8h zWY!SJCt35l>@JA?r(FO5BriKu$VFuQ76rPf8laA%C#YJqXqWBnfL+i407`gqgR|jy z8;jU-IxY&iIHzC+JmQmYYwpe00!A7QdNoNVEAtKvtkoZ1(vnBG&B(N*JIA9o5L<|8 z2-Rg!76sXuH3+_g8(|u{qNJQpdGO;7h!T} zGt)=)>g<8>DPuP$HepUFrb8Si4V5}n3*w#REf*pDo1daK^`k#hnKn6i_R;8Xa|uI2 z>nzC%A@H?3(;%{kqXJ9CPwJKw|9rCIwKzTO96<69w@k5%n_<5ZdB+I8`6au(eT-nZ z{5g`ATU4gQ{lg^P=PAr9EFy@|aGbCvcpBmo2|i#)w>nn|K-=as+ip$c6y0$VM5F(m zUh+ElCr$5~ZXXAsbhlsyY*UL1Iz>3(`(H2ylzx=saXza#s-(Zj-9^&=z2#Mhh+o27 z1R95K92HT?#5Fr-TgKw`f!Uba65=-$D_pYcJ^yr99q$^GVMH&@4Th(YDe2Eha^kWS z+7U$8OLH)@au7JSPw(CA4i2mN1wMf5!d>}P`uqg4!VJCt8BMHM{#bT2OKxmExJ5nkQB36B{cuzUpusGKb>D0udS@wfsc*3ps|X{92{2^^ z%TT?RaO5l2XdP~h4Hy9q1-mDZIyKO8jNrR`+lHTO8*V)$GH)VT`m^>gbUkjIbwxbZ z0u`dP%_L^x(U@{!OQ!KT5MT0WHcD~*_EAihk3TG=jVZJpNLb01iephfm2bfBJ*0kL z<+!p?A2=b6>h5Y1*SZ`~SLe#}zRgf|s4pen{D@!yC+%HQ#uB~K92E3Bh^hk8cn3&J zxCO_@OXLp2tyU{6=*BvTGhz_@j_&pJcp(@ICsvl`X4%-Sd{~m#sC>`om=aW*N?A-w zhKHbdgSVn?%JFYFxVx(O=%|XJ{%o&gcD(0qkY|=VHjXOOIMJ!GjV^R2C<>9nl(Sr7 z#+4PhiI7R{MZcj#qOXW@{MGd;@s~{-akyM->eJ07`6-Jye#Gaa*bb>zD=AX&K?RUO z#YLZ?uq}3T&JPZn;zlf5nO)UR3hwrh|t0O^k~+tQK;OW|2jAo6rS3?)4CrkAtGyEVMIW0nmLz$DImMiX#5+h`ERz9%x3YXz_trF#DPKK zI?AgD*Nq8qz~qo?@6!p0$2oEF@DNF;4`g!?p(4w7;sd_WJV}jZe??pl;wym3+6qgV;X_(WYdR3*C&As2dowB@O?mP@o8}`yG+O!~&;|3$`t?~Onm)P4G{pW< zGkM@OncDzAGHxS;fJ>-K?S`6m`_V5!rB~w`(nKY(P>PVo8;NX zlW*@JgQ~T>$t@&y=TPfDRyn6GGH9{GYbE!SYX}OiUkqSY!=^F#r2GeW41J#23%$JG zU}?&OnHgls&)VaEvnFNJ9{N^*t8;1Z9Txi-fAO_jJhifwL@qvHuwc6W?#khDfeP|@ zhcvrJv?Wt>08m$=GHxs8ah24`kygmG*-)Ywq1_B=vlj)x`|Dj>p5&gZco+W3`(@Y1 z>rmCP)CIz(a=}ln`bn6=_w1Xg3g!#+je;;vrlSi#EsgdHF{6dAG!abBq}tWNlQP~t zem@$3oGMS(&Fr+wJIUH7Jt*?h=an#v>t&PVq!Q0;5fG+UTfDeKQ>t;XX1tj!n?71C zo+2jFH}9RZn&kW9HI_94O4-d$z-jtkZ$fP;YnNuea(NeLB-&_sK_vh;F0q@h8|O6R zB_c=cj3#(7sNA=29zOPOwfXv#o_1{4tGA+i2;0efXMpH)_e{5|O2xnSB6?(%SY6P< zG;iyL#`ffIEbe1=x>8QvMff*NQQQ!HPKKh8OTvlb}4J z^2{m?6bx!1Xrivsl+ySJFc&;7);dFiKq0$Dp;Wu(M#90DDrKyhhJg`yqYOe>3)r`+ z6S@PaG4tAsOUxCdwKWQ(@5nXB;B`&r^+G?!f+G4Gmb^*|&)@8_0rtaf?8osUfM$!F zjEKURl!zgvJw5*sK;Vt<+Z;c%T}Amz^dW2Jr^3epxmFjueU-mav7U3!?n@#=&2DYi z)LS`11{71*`3c}UpBje(X|MA=HRCZ>`?p_08~^A=&gh|%gf4!iB>L2$o3?ZMo^9Ai z{N4=v``+5T;|$+rGcIQ>jAGql8K9SBbHL+5B1b1bw!DavHH`H`*w>Wy>w2Y?!3)r% zO`FlN<#a}sM-pZL2$k+nP8-GK{MP@!c&R-K(IvQ~CbuLl+o3CD;k$ZU++VC`;nwp0 zvVbDC=@^CC5^WT^c~hbl9c&3~^U7CUJv2y4sQGB$02Y91Jog2n0SI2c)Fc~e{8W|~ zIpl8#53ugM5B`}Ex2r&50PvC1NyXsqG@S`i4RQKuv@5%$sR-O*moULzaDBc2jL+n% z)W*yVId<+B3sNnA%U=+q-!PAzB0P)kcIAh20S3KcyGC)EQI?3jwYY&Pe3gDB*K|KP zWwP{{JHgspw%M7UnZ-$u%KZIJ$5nk%m(u6L;{5?eGW zhDWhQw&=w<9GLpO)(L{_WFZ7SMU5N3P7@qD@b%@Vo+^MtFxy7)>B&Z4dP3a|G^sFu zA3{D3?>ER{5yYf96>vPf36mdrAuI`U*K>0muoWF%Mck(&6zFwMKfAa}dP5>@#tujV z6`*zFRMrQ{QOn*j;8ua`DOJvJqA zX%g@eG%|+86C}J58y>!t+NKySV3#y&UmR=c>mSll{Kg9R^9=1TT>8V_V`$jyQEhuWLu&Hf3TgkLX@9#W!{d;f6|R zU97QhFOYS+k4@|3^BYz7!eDM$J~Z7eyv(gUz!0~3kacrl2lCc%d(-$|`oGM{`j`|L zrE!ZSCljs3LCyM>>nL3U;EefAXStVHA0=DKo}G0$~n ztYg+7n7<6DR5vQB_sl_3RAs+7D5o%W<5O#- zzyc`V3#QI?*U#DsCF|B0BS&JeX8B?}#DxumG-*!-YCUrF>gS$5JA;tVuZJvLK952r zTf#B|{UyE?2%zDLlmyB$$D7TzDBYr^bVH$Ng8AA0Weji)2(GtpL0Hg?Ryu+LZ8ej@ z3iY$)oI05827^+0&p5k5wDxG)Aw*2x0!F-b*zR;8hJ#L-L{eKlP?!DY6W1N*!VMx> zFVpe~>lzSkzESwymAgl)wioX}yN2)h4wx%{L%vxv~jq zAZ9}~m19|DLx-!n_0YILQ;XYzd_t*GE|MtBz-Ws3A^2vA5oY6V_7|70TBM5MXkoy) z;QFO&I~Nyhtjq&^Ixw<WuBT!K^La~5SWN~{(IF)p_^H}EAH932v|j1qni^Ee^XvrabS8K|iPzhBoYk!o$ANbS@l@|iFJu7djM zdwg0uiC9IYr*wU%I|m1J%mfg%`);4^&98OFHub-bXi2MHO5Yk=ZO|`D4o$l8nBxy+ zHqjEcIMoUHG|YeU0=duX_HW$8f`NJBF9b1SIGl%Rj2=#D?K5)h%6;(kFO#Ckijg-u zd(oViEzN6Gp)k@;jjDNFC-!x{)N_YWuX%~;BR3^pP&J6?v2ZNB2roElQH$*-GBUy_ zBohT2bZt2-?Aw(xon*SgzN8PGB9fX<1{s@}8Wf)LkAJob)h?Dm!vj3}d12{5<$%6x zNXPu$IDIHU6v0H8g?PgY6)%yfjTHF53$K$^?sA{KRo+hz85;9s(8nT>p z3@mPgm3I%OLrocOkhv+34GQ)C%_Gbgo|=ppbwFH|(PS1?YhABQm0{G*7yq8_kY2j% zlRTRG#>A2UF52%34JJiCS`|LCLXBm6!nHz_$xgb>Bt){+Ox_mOD9E2y3tpBh@j!x6 zfI$KQczkcbkH1Ti;vC{7_Ni)myVs?|JBN!(7kG6ZT?$W=qy?Y$y$u~VfrU;HQEIHy ze4djm1yBHMs}`noXR|o2iZtrJ;&vZkGv2WkF`8iDX!Q7|gAI3xwY|)>uU@qUO((k|?FNDZua?bwzrZa>> z?MKVVvT$Kal$-pKHeCxNN27G{W z8#JG(BRWZqN0Z7lp4sZzXo?h_*wQO3Y2#Nq`4SME$N`DGkCj}ZIw*~6J(wAB(}vPj zt2sg}`OhRmU?I)g?lnY;vF&brRXt?3FGs1)yB#+%pf}8Hmo^cH3|!=7K}44i7mPGK zEv(w~CEpgX>O3R;yVNqm8cBrO!VX0FDZTe8xqdNR~`-@ti0{BKg(*dIy>SU zaI$~Q{!SgPQK|EIp@chSAsYqFpRuP%J;|k*5nS|8{9rXn$Dv%5w=A@eok0y@2Xxi^ zCfJH9&YI67j(Xa?gbtNbJ$e0(rJ%Kq{>n(Csa{h;^6uf}s?m>+kQhxOHV~!%DxHs# zc6GK2w8J|5I;ZXOq_T0i%H<1SaCmXEyePRoyzGE^?_Ow=0m~`Gr^`IEGH9tn^@Q8F z_CF$3YoyT5*CHfn(k#lN5pW}3(iPL=g|}8%9Od(~+y`s!wy>!w1f9%c$8{iTAO(It zW86Hcs(0bFhWm)@vu%t*qzH#BBpw73_liFhX}n4L`CkIU(q>yrHHM!yU|99g=-So4 zA?a=i{EYc_`K!URtWUdc!5cAE6~##$Muy&O0WohyWtt2wD%q|g-9dcXz2nlZmjzTy z5}9MfiLyG1A;fm(YJ*3yOfnW<)(ovb&9GC}i7-s(WA%q86Iu`7W!?5iuoz=jsF>EI z&5K_Oc5~`L{{Jxa_*KKBpDAIRO1s9+mS0{=R=Tat=pFq1yB<9KJ1D zd$`O!Ff5nbZh-oYkgjypV#YKvtUi%C2V& z-)O{ESDgik8@T%X3Ko`XC>Ry6-^!|}e)UY10%VyQHy0_TTk`15^ISw1cxI=p%Sp^0 zE_?n#2F)NQI>SAHkeetHVd>C5CR2jm`YkWL&mfEJ$@i7lkwf%{P`kV7jt=Y6mQNOO ztsP2?RH^j$r5LxK(O%z$B|1x7QY735UwLiW(i_$oBHw;6%?4KB9%C||)ii7oiG;qN zK!np%of7o=am7k=8EgwhdK0D*jg9$k?)B)fYS^&hIS~@Tmb+fU8DA9wY``4U7|A(& zJwO9k00dMB3)rOtaHbpVcH_kvff9Vzq%3)zdbFhEWJWqLia^7kEk^C^mnhpJSb{ky zpBT!D9DO~Es%GgJi(3EmK&TBLJS4`9!6B|AbMUDbxSRs+?Ou~N|NP@^_oe}1iBi>< zffRa(-fbO!HHwztE{>oI$$|_9(Ml`JYuTMYO?V8a#}Qw(4p+%*W!Zt5+mE^zC)K3@ z7-+kV%)m9tkbjEXT_PqW@Ke)Aptxtbd>m-6uD& z*PQ-Fw?6^z4y2dB!(TfIEHiQVY zOga%xe=l__*s6JzZ=4?;Oh=hdRne~wX!sF>BH7Oo1NNV60%qM!?$^<50} ze9@uQ=k<4z8zKq+IqJ9m$b>k zO_z%|f~>1Hw7L>P%sIqQK(+nvte!UeDTpXF%}mRz!r}qG!eaZls+4=V zVb1;+x}<^bYlFzU?@cueMjF*4*$(n4b@f{Rh7!jr5p{G*GE=I6h(A|DZqM6;d(*!t zdRj%XsHo;Rua{$k!U_dnc|vhrq?|1g?mb#xWy_2LI?CSyI_Pz~_LIsG;)UN-d|kF; zPI(dJUPwV8mew1bMih!Pgq#B1(X>UOnD?s2t^^u56t#==R81MxiAq*T)!cZL(uaVf zvakmi0Mhz^wg8ZKW3l)sHM;yx+qc3KLhHOGWH=naL_21!$SHDlE(Hm&( zK*Vqp7Qn?jklrZA(-T)aelRacI2i6o>)PSx^*Kn=YyRNgE@F&y;Z$*ie4LXSs;S5~P%cO#zqRqalZV?dMbO zGHPuC>HLKW4Rzq{eOauVeW&x6i|z2*Yud&#FTYzWxfzyiZ4tegY%Vo`04`0d-chq9 z_lBEX^XOR;>+{7xa_KddcL2d6=Zn{xc|h!6#-8HmT8OW-aLom#1To?SKZG%@SyVmU zAoQi3vrB-;Lc>oJdC;ltQ*DQ)3J4hsS(3xswzjCXsah(r$7wsNZhtFF6~CunD983X zS`$wCwbth5)Q6RFvZl6~cVtSvR$!IRuq4+Gw8Z+vfU{oZBDUq1h4mrZkU3?#4j(Jm z80ey;E15?=fPKj=Ub9=Z8v))`J{=WEl3kh!0`SZzyZ6tEOC!NRDz|SzA+%!*1cl9i zfL9~b%g^NdU~!srILt?ys0tBN}z)}onWB?^47%Ul#ToaVl<9tyC)-EY^EFU&Kycyz6n@;pk$LZt2i#76f$Hi?% z{;F7eh&*D{2agdY5>zIKw9)NbzZl0?UAfQ5wMsf0K^jyCm|6@A*{^8D+8z0*(znUS zkB=F2j{aQpGB(!}hY~CFNd6fRmz}djemYmIvea;dCd&TfoAtx0L(G}|8tJRQpTiCr z52E0LJ2^gpFT*%7G@(7$(@?+!C?WSV^2tN;TWEkfzo3B(ZXOJIb=sDPf6ATge449I z48Isf<$a{Xx~w1LhFQ!#GCK7kQIoLl;#}usd}<2(iNb!z!xIs`+T5IXLGGC034xq(NI*JaTo^7#%^Fs1Q0B}WI*^T51#>=aI7E=VWUU?=A2;fKlvtV z#E^XWgG?S9aFQEq${U)=(_HMnq~D~eF@Z$z`jksH&g%PR3o$f?S!OdCi%AlhHbBZIF`fzQ^djxFeKC8C zGwi{7;J|PF5us%~ql{o_bHcLHv}gbvu(wua)p`?}V{En1c*3m_e<}-r)h1uzJjLB~ z9ZFU3uV`m|QT$F|KXZzCGQ_Q6PkJoy{F1PyfqkR&(7g zb;OcgHPOMZ!y}xrJXv&gN54aou5AXr0O7&V!g8_#g*iK8iC*zx0%tYTdd8?D`EYIL zkfEy&`EY@{KQRmmPn|+)axNFfLerxfb5M2(%dtswNk#sNhx1N6 zDoVo^2P@_f*1l8 za`=EyI285JoXw9eQ*-5Xt&O?s>nM(v!AXNnu~iR~xUiiP%yX;ep@H2qXWO2(COSB% z@383TV^Hkx1LzBtBzy97DpSiEA_W5VR#!{br#AUIW~wA7_MYGwF0ux?lw*XIpzUIJ z`VMrA!)+!Mf$M9*<&=)h2s6Bb66*4mPbU5;^_VF7S9%c!oB&E*rht^=Ln#u)Wj5Pfp{J7wr(R2zu}wtXcWSWMwk7HjRSH1MMU{H%rYlAA>o-N` zh!kXylaFrRjewTLFJ#F}ac)Cr)9SD;SAygoaqy=fpN2uVB4GT5MN-PXpTf~Y25E|Q zUt_xD(Ux-W$2ZO@H47kq64>iq-ssX*j z>zoklk+}M-g>R?sjnv>RYO-dm+^D1Hm>_SR{w?uXuqgw4H5U(#tV-$Ck$BWC z&s+_Ty^l7|2VYqJ2~qf?b+;|n5#uMQyVnqQ za4hYYEA&)gE*MZYRy_`pjgv$SdOnqk7*X1*VTS8wDt_6OGWl1@bAoru|8q$>Ft@sT zf`2zAa@nGUu_L%?6q>8EG_O8E7g$K79}vA)nGkT|CUD+l54qc2$5-yENaQM=5-c%p zh6LH1!o436Htr|>VNpGG-1xlPr`c!YdSLJ+Q0^fCfGBhbr(G9ZedH!s3uS)_fbTZu znLcgf3-VFJUbxkC*Xh-WRf3!0=~~n>Lz=E-y@04O3`Vtf@QzQs&!}yI*)b-CiV0Tx4DAK z(8vYj)2@8{n%`Wj-INUkLYf)};pdV9M7v~Zy9XoB(i7kC+Zu4 z!*Wx`!Zx@e^O2{@fm;r*%v0Votf z>mb6RBjZ{zP!%bOm0-)e+5>%+Qy4Zncg8%;*5-Re1C*oi(h=;in%3~epl z#LY-;H>hxZo6s%-+XW1az9&W>!&)Xxx0LT#iv*BBO;#34(V_}J;;<4lWdL)o)jR3r zag!#kn6qv4{X-Xk#210k4;+pX3*yIc%=19zVCj<)h$~@WVqc++Ctyl6wfXH;p3|DO zx;~aLE`vKbZc#+KTC5SLsYUh;3*PiASxw41bcS&@k^hY)Um}B$SXjeeC|JW$8Pxl# zjnP2sO2$@p?hfC>985fO{Ghc`50$$_ODr#yCXZ?BdEPage2vDsk=PLAL*oyySA+ZD zh>`+W#`r|toFlIX@VhODFWxVS+%>8q%zH><9U7&zLJx-)^UousaK?eaH0}g^6=T@< z9`ec}L?~oK!%{77-0`KTEQK%cV`;;|uhZT}{?XncGWXVgZQk@Etu^9AlHRL2=>8TwuT9x6+q#5!nrIL zZ^zGQm|*hvkz6)wXArJ~8^9XNp71wy;eK{28d-i+2ktj{RSV*4=zamEH`dBwfHzD+ zDy-qL$q|jPVcWIHkWM}s=giRWAAQ=07~@qz&{gg0Z4*}@m+c6PoQeX}dVaX~M1Vrh zVX+IwpRWBYlTnqC;)((fUo>b~<{GK3FdL(WYAzp>y8*GRaVz5z1zbvQ^QdkG3e3u= z06Mp`<|WfI%AU70dSX7v_m(*#L@=>{8N_n&u?yqts%D7#V9KSD&BuA0%Jrj*8n?pM z+sPzmA{;~hPkAaY=MTv4(-<|-@6X!{FY9W{_5$$Bi4-PKa@oqpj$@UQ9OyMxf0^zE zWMd&Ynu9isM`J*H$0?N$r8O)}80SnR8_@|ttmcZwma;!4PbheJb!w%0)gRhL^pE`a zTA#(Zo#6m<0|03d>w-DSi*ZxuW1-xY9Ts6ZJe6tl-}eoH=e~RhydsLa zv&WQaAVGFhKHAMz7LPxiq=m!h`lT#g?2(zsOor|V=NonUkI}tk7nzj>0FPz<2XVgza!A1 z&ISg1#527Wku3Y$P?1n$Z%mRc3-oi)?AZU?Yezt9Hd;9sUhNfcfqQS4|JX*o*D^3& zj@(eI*l^?xwjm^``J0B4-=OZ^wqZXb=4Dr0fLMIvp@kF#p;XKn&z>v+t4zvb!v-k& z&MnCNuxVZNz2i1F2Eujb)Vywey4wW|Y>>z~hjEY7qvS>U#jhUn)A^ai)s&|tM@FDQ z-MeR+oa}bb=gcA9q&6HFJr_jIBrIv!N)a!{@7}&yex#Gf(De#y?%L*wvDz`J*#Q_HmB2t z&NJYpP`e3P9sc;|hHeR*%%Rw<%`n*G_J*&{%ST$5dQdtY6>Tjo4Z#%&N6EEEafOo!YYzvVfmJLmdh8OZC+@C{ z;_+U35PCaVR$#dDiSMfwlM`cnH1^M(a}FErJd7`HwlGrRt)p&|B3FIH4bd2;l*r<^ zeO$2xrHeLMSzWyKxtK#c)ZK5+Q?tN+6&ukE2b_!5f67rjU@OTB0PYW7lW|`zC?aju zey!T<_u43YBk*w#WvhPYK_G=KCZh}+vaLma%1H2j&|Sirz|LdZ4#3aYpjHp^4t{Vt zn*Jad5`(rI@_~l8A3c{|Es~iyA@dTEZCOx9OXi|o6KzOxK6g|_q6moQGS~(YEh$N< zitr*8y(rGQJiTD*mhU>g`(!2-b?v)GyNYOmq_mZ0Z}!tR`c+1Uh?}~DZp@4R6px_3 z*KDRl4RVROwW#INwVIaro=~ZE1TTNYn}sh^(0u!{(wg?Kqak3QGx<)GHEh4W-3^sc z)dA^-?19)^zO)~px@W`Xi(fmOOQx+}ZzSIiQ}9y8m=;xyp3?(}rIIgz0Ye)k&CEdI z>~WZX%1*7=}{#It3t9hGKULc;Rfe7dy(t4Je6(Z&nC|&H?){&6oIs|s#*CL zMC_PDcQI%2+r%VGOMz+p!dFW-xLa&>VLh@nesTQ%B_^wu+sbDU53O*Ho1<`f_68tv zBq~=~-z|}iU~Q8+!8Wc(m#uYC>#to#STxSQ2Ay$fQM=~A(#X%qRcCB2J<$zaza@H8 zP4`Ec?VZ(UIBn~KyxT*t_d$9x3kkiezs}ssMJrdj_nQ0@?H@ zxFxgHnXbjE!DFky6PnM3Fhs6z%edlZ98s7`xdlSQFS(FlC~SBT>%@ojKfA&RZ{b-a zRg+ikl>Vv_()_r%AYW-@}RV& z=<*MJheFnKCpszj2GA~L5olp2Sy9|Cs{u(HFr%Jaj)71V4e3%UOS)temB>ZiTe>X-T|@By}U7DRBh9YCu|Vu$R~T4{Sfywk5%_4Qd1 zBH`mX`VffM#iQlE>X5!b-t93z+Cn{zi6{)r`NC%{{QX*S8E_5wz+3UQKL=};^NvrS zUS%Go)Npb~Z8YUo{CN>3k4j%SttCXOn{)4vz=;!xlJY5MGxcS9)?$ba5}mO+Sf4Z9cOYjFNT0LaFX-qggiqn+a{g#)i^(x%27^A}8y)zC%j|`3FyK(b`Ogt-vLpe8&`( zbMabdIDa2*UX1HNlgL~)tVvb!_~tL#0A%a@78gg3JT<-U($+w)mc$X1c3g%Vu@9Xl zdr^g8%@!! zu5bVXxK`{EukM?c861QnUlJn5R{U=|WoNrLL4}`q z0WyVlCO@re2ur!uwr>xkVDaH)O4W{SmLmgT}WBhfgmv3I9ztmim*XC~^U#|O4 z1j4l@p-pbC!7)Dyf-p!!ErQv!eWxM#^8T1(1EMJBaqB?m`NfsR;JXm@>#?ncNh69dWw5v*#JTZ%$M$=22_=t?8iMsyv*brzQpo9wU*w4}I8X6ADJKi$aotx~uecwZzWH(9om5!u2- zV8<27h!E_!6bECy47mb9U8lBpzmX({gCk-+8BNO0TJIf~wu3|8DgNb3i`fwjKBtJn!o&Yy9a2#tOs>{Pb|SQ{=iW4kc2espjcMMAeOS5&=(rN&o_@+1cGP^~K`( z0S(~s$LOp_1@<@^aatm&DIgg)P_T9sUh0@(X-KjwS3rDeOeO7h2CQi>``M&|GCbp5 z=k*t8!%;D^TN@1Oip7g>I1AX(8%)gF>K3uch@R+IY`Pb{m?#V=snr35(S7fV%%Gx< z*@BA!i}P#cKDGyH<;Ge$*(1Wb&v-|UBP4LUFsWSy3fCo}($B2BaX?WHF+bD8{{{K4W zsN$f~X$C5+C~WshXPzBU1y_Sidom1;XbPBl%&}FL28xee=Bqxy8qZt9oW#pFOl#<) z9V3fQV8d2!z;?gA^R875q#DKP@66R-u^Sr@cqn}l>OijS8ZmVzQlCXxmJ*@U zFM$8_PK>Bqj4uHjAR%?hw@KmjW73M=7ja%$HP%Cq5d>&xpD|wauB)xCIfC~rbCu`K zD6gbn;|Ma(v@RQ@hm4vjmCOL*m99Tz4fJb4T`a|~?a#_*u{(|!YcrOwhD?C>1*a!= z7(q{f)Og1hZ1WRpA--9WZsF(t;ohusavc()ji#V%q{WcwDMkWM2SL(QIA|YI{{vxP zU3|tv*Ar`2x;cZ^Axeg26dtp)9}35t%i&D#=w~!Z)qXC$p}3;J=@yeHH4s5_G6E#* z$@Zf!Sh-X8Q)ymm|YNfj#f2yInBco;aI0>dP7n`S)7V(9Ke!!uTd`U`OY)7Ojz zh`A8g22Z}`FbxLftHEBO%Kf&AqhikOBq0=w&Q4$Vx|nxr7M@w`VXQKDCpT8;95Nl2 z9F)edmQc&wx&RC}-&Xm#(@aeJv7`|21wzXuOW|n}EhVH!o^dmXSTBRq#U(1L9HMdQ zZ?Yl|Qbyf8c(j)?=KKC|&2^P0Fuya6RYs*$vpc^%oNrs%5fAN%mc}gf$jqUHzR_H* z@{-c&I^|9E(e(ryvrWGkG~BA87OfY1iPkd1d<-lz^$m$qm;YEeE)8)eMOshJ+v;qb zOvCs_A5npfggkaq->|0moFkZh67-Bo5Q(UPjvEs{IComyT6?rofXjR)om3J_q93F# z>MJ)rq8HA!F301=xczNfm_05+xqqCx(qHyWZ#{28Fo2DK*vYv2B*8c4v^ThB1(wl7 z&Bx(cv*v7Vg7j|jmG^Ma_TMT7x~_pVGAj+xJG`^-5pKdF-r*s9t>Lo@L?3xS}c`is#4H%1HJwA%_ z?<2(%o22ew6wypr&Rj`01_#!Y0$>e4>Oug(UMnAo>|5#Chj|plykR3XO^R-&!&i$i z5jI?02b~YdeQUqIL_tI1J6MNkucYe)w@;%TNQV2yx1dAT3+L8rw|lQeHHiA@4r^(J z&Jf+d40W=M5GX1!)4U3>-Quo2$E3wGrH792&ZL%cV76Lh1wC2^$CoQYrm!^*?X^Kj#t96$V{+|I0H( z&zQ>gSfl79bp5sw(5vB`viRtc=hI|-+pS7=BRNl7tL7ck#&}a!PBMM;fm8z605HHB z_8)kjG?3YSC3L#8fJ**Q6O|?%i9!BRKlIJ`O58GQTd)cgp#-ANjljZ5HvT|FAtBl| z1wic8iVPTd_V(neoPge&V8ee@dY9X>B?8(i>ju8qJ>F)5CLX;D8(#2m`xjA#jIywL zI1T^m@|ZyHrNThU52(u6fA=;l#_yx#FB^acY6}Qkd`k&>WHXb8T$UB?CZJm)0Nhj4 zbEW0SQ}B(4mwhmqY_K(#2kN;taUVfVb{^fXUKVST*8xn;7LVBYj{f*u@?qBPpLLtZ ztt5e-j|qt8iRa$)*ztjkhpV#W*PftGrvaw z|79D2>vpSC`cxcYw#y`y*avjo7O?RRT=E!vCb3cnC%*E(O3Og{1yh?ENlm_ zFOmu0Ko?%7CS%T4hN-c$QfZdwDWumrHYs?DJ^xcgFiuF_#Vu@Yb?=plWj;9q%H64` zjwM?(sKZPa>U=>R!I0Pvk0r+;hLpJ{R2^L%?RVk_Txnfi1`#zrVg#^$L=C zNs`T|vU~p5$a7UWmP+3cdRKn&O!LtYd1zszXf;hGT}lTV@B~SAd`Tj=xhfuPHx1G{4!*2I7O0?zOkC*_<*ZQ=-$ z;yFolL%?2PeR|2awVYDKmx z1fzGCmq^7r8UH?(lZ8{hcH|lCY64BkK``)FbS~ZX z)6`|o)By?2vEQHf*xLR0I)y(C4|2ryvW>`vZ3WE<(|(2I$=YON0>>dEGsJsC0MuK_ z;OZKU6OP+IV@}QCeRLQ@adwiSeWm)M+ zww6g17PwUMi9>lof}reMI9TnQ_o-`}Pe%@|#}e3_z7#L`X_;r*b2ZoF7>%9+)f|RU zo(e?2q2XnhVb1K5ZT|wI;!_D8cd2~p@GsOv&1oyCmsapuEL5s%k!E%5_d}r$l+yMD zKg3oNUGa)#IqP7+3MX+_&2tTo@3-5qNMRR8M*!2!IN|2?I_Rw`OBd2$mS-Zif+bI$ z1mkG<96McQuZZn6ZN|&4YIp7(ip2%s$JXJyL$CE;!Y>MJFz02-!-~k~W)*_o31`9Gg zj=c$?^kv^uz+R9u3fxq9(bJ+E^kUSdb(!Kmc%gc=YE9dpYGiSy6Fd0+2>cn`zzR|h zsfuzoZ~psDB4Wbyuq2%W;sq3r{1OKSJ>m|u{RnSRW-V|OYfOmAwN_8gr0Z7mSYwwQ zItkg-Md$TOw;eT722{u?A<0Z%>X9mCxEsPz8LTP>x2vd#Nb0y3a>npw(>pWb!^QNQ zQD7@Ngvk5>mGG&Ds23%_uawVt;!V^gby{C8HcHcu9E-E8Z*m4o67#)w zqseyxEZlt;lo0yY=<9`-`DG0+ab`&hFUSTghU+$6He*9F6z@R7v0f%Yy&)N zSgY4EoHD=ulE~MwGYAWo7KkvR_@COw;_@sE>IG35XU=C=43V`{Po#Kaf!r9PaIUI| ziGPm&e?OIS-?K7TF^+yJQw;k^kB;u}6eJpiXT-Oy+!|*@;ix}c?`_XNSbw--Fu7sT zvs}icoVEAi43ITGxh9J1zQ8VE@7#w|H!-jrMvWMfa9hgVDBtwPD_sy=|03rFBEczG zE)!7O{%L-mr9)s4%-1E5+<{GlW^7WB1|iDgtFManRwlu5 zfDM)dTa}gGFXmRHr-u4P!^!_ZiAvDhJ%;gKu~KK!`6bnDYV-P+)PkJT!`26J?XrK& zmcmLlugnc%1C>-IW1Lc`5pF}bKj4T&BI8;t38U-9Wo7#-RgJ`UK}3lfff{)LB!d6& zBer*f71qybhzUSJnL;{__I1e`u%$_b)w9{86i`x6A#?%aVduDJ$Aw&xOO<`_kPE?r z07r%+9xfa#$VOmZbhPqZZr&F!S)yLj;L2mmko)Sgy;8L5pnt{X_nFP^Om5K}U%uKU zU&QtC_D<^r04Iw3#1!YxlWK6AZFk~t^QM8Wm_k`WW*bh;N-}C`-S-GPcDduY-ki&a zz#ozvOTBMT2Tw=n-m^}khSIv`M!N{VWu9UIgWJp7JW*|E`(je;tIJEHGj@J1Ow(@V z`t?hB>D;0r_nMXkInshq?!|g!akKU|oTDr5WXukq zE);$CQ5FyCG%;3&YxeiZt-Z0>jbBjzcE|4A2mDp^>VDCuakQOYxXs4d`g#f!c3fbF zRS-+gjtr})tm!80CsC&&mtkYjah&m-ZuXL9m60^25kU#RwR^caFx21$BeWLrq=0?M zdavCm)NV5Eu_CCm^D2zwYAL`wcHEFRwN!@vX9azVnFLue^%aXU>pxE$$mc>f%FNNf zL$KU;MiQty@0t%2f|iNDwB)#uxl+|Qiuhq=Dj=wnL7VI8MzYDAOP2tdCtXPL4?UQi z(_HhY!x}=^;^y7;3$%Da6hAu zSi{7#=DZ|2&%1B7G4HY5-nJ97oO^6JV$qW~4ZR5`)L?`M*!!+4_#@r-$LrxvLx z(Gp)?YjZ=;`Su2rwk!1-C+U5qA|*AfWv1IoEtIfVs8s7__5ab68EbUBvmP){9uN4) zu7VDJDshni(|1Gbh)&}6v8cixlQ1SvY}4J!Fm!ka9)5~*Jz8T*q=V$tjQQ9YD2$a~ zmi6s3teh{uCZ?@@lgrS8)cY3)uMH)B7`WR%hd=XL4k%uNwA-DEs~kq8B_Pr4 zy1Hn`jD;Q3a171;SP<>lt;B|9&~BUz+c2ob={5>};{`08+zqyoq3$OV!(BMKXUBMV z8YWaQ;US(}XS^0;o3~;HDMkIlfn8t{sIEF2kjn?WFxbtZCK5I!5XshX6?vd&Rgw+j zepmTOZ&kW<JSnNEC4>C`?SK1!Z!_X(TddVV#=aaDa!s}T5hau-PbSwQ3}@6moy@| z)wsgoGNTy@klBK}I=3ZOD(Fby&AJ%?pfCLsgK2GN0NvpVXGY!6>j?HmpAA;hw|*oW z|K&;dau0^OCa2~L7=W8cG*E5KD7n%+v2xOTRvg`ZS8FP{! zi}xuKh)Lw&o-s$ZKCZCbcZU=xAUldYe=$RbU?O{QqGNYr7+lrjL)j2!IskvSE8=kH zdn*IODl0aAR$+#W4e#fSRS1W{Pi2{>SUrxId)SZ%xfPnhQGSaNI(1VvRym1Wuo5z@ zkG6~JlCXdn8tep^Bx9?Uayc4hW_V^v*r}+}KU{mH^-9ZZ-c+{mi2Gw(7J5}nc`N$^ zVUwLxcbI%k3gYnL&B>A5=c6xw4inS)+J|w&w@D`r+mgiF$L2Ol>(BecjImB?7K3nu z!4FS=mR8ba8u(_xay0Y(`iUR_muAHBC!@8*oJ;>{$IA_4J0PQN6d#BR5Lb1~z6m-& zIjS^`$fYS?N;lLA-uf@d%cMi=VvEY*CmsaV6T)xjdPMst)rt4m_?jW;=R3h}jb@ha zbI^>RhJzafy^CkBD=z-Gmr8PdP^ALGz0cF(j$Mft_Ru@`pD=W2z%QYb(>9rFE0?va zFB=X{?ccM^@I>v5fUE}vbeLu(jfow<1|BjLeHOEHmvM*A%|@s&<47=;u?x{Bexm_K zy>IAdlpl!9si{4@qKWjp28qCOuc*s;ib;*HVp4sQ=7K#ygMrPLW(t6TUQyMXK&5n> zQ*=`l*ZmlEO#~ev=lJQmC9io*^(pU&q^jTcwWSCY86hQ?&ns4rX(|w>FNi7zk_5J= z=^!esCjVLPV$fHOE+O7*9UtgdRIEFne;}|VD6eTW?o7o6x^GlPTObxNaFaqPFxSV( zvz8Iw#0;P;q*bolhOnS#uaEim>m6QcM?adIzzICEO_5Dr=zDyGJIrv01l8rfrEg#7 zORCUpoz!Yw3?Qso)UlOjr znkZ_8K51KEtb$QTJ!CbI%V8|De6w(Ck|im+yw(h|s3FYSw8b1IPaS2F7w!puZ;KlkZ$rASQz!eUF;_u<=&U@> z;YDzqBY6X0zmEJ2`xM8Thh7(&pvidY+d94qk2H#G)V)gxnXJ%mObtb266~yCnh>mu zDX50q*TJC1X&@JV;Pry`e=l8;+S^ir0IQAA!X-Krx#AzyayZ5<#~&3++XswG6JL~S z8dW%O-h@%e@^X-3hY(KKv;0;jg< z_SqVyeAc4;nmu`gT^!w7&y?wF0I(Nnfia>D$KF0n7)QgY^QPz)M!yD^HWDTN6jDml zqj)<#tNo3fP~YxuGMHx*eAJK{Nya;a=#FfsFZM#f5z=ym*v#@>=4~W#U%?b28k{3^ zLYWbtx6uhX9E>{wg2vW&1lj+9{Xa}G6=QA+7_zu0Rcnho?d_c5JKbAG%V?D(pV3Vj zY@O-AqbIsiae$130VB)maOd(Iy$%Uw^Asy=FdMQ3W0ZgtvqR|?BW2j-4(R_Jn}b_j zzk5OFoP+%SUiK>fejOchF!${gdQu6qcSLf^#)2@l;Nw$#31~0>QUoV38#<5tmKog> zpTM$8bA`wcUn{HsV^(Rlo&y2L6@5t&oEWDS*Bl$weX!@qg*wyjGb4EA8N*hWUAi6Z zkX$u<$k%M^1Rx13rMH}uua1O90(yX$0_%x@7q_57I6@A4^lQ<8vnlqUp`_KoD)+DD z>%5Mu5HrwJ{e(XXZ2ckPe80A1uI7NFgn?g*g@_Q}LA-blc9P_oUoE8_uO@)t;0D7R zj+c#C)F+0<7AJJX+YEB2R})=<)l*UElK^RgL;%_@L^vxq7qu|9&TU)^NRXNSaQG_w-7kzj-y5r8x-C0OV9)?n?FvxQEQ z@pqU(qSc=mp&9{;ta?wOd6+X}09^6guYG|-HxXXs0919u34A*}c7=RR)`<16 zm#*7NJbjk8zp<;EXi@S%r}3d_J4!}{-*#oiE*iX%P>64^Dc3`rgg3*u z*zOTD^A80Jgb42WZS-%wdJC-lPqCBrVL~>sf1%zi#~lZF!|6gKVl4fU#icrdo87>I z!s-#z@qlYERu1(H-WJkJ1=AtmOpTy<|8*4-RTiRjgLx{|&|v1$S#sa=lnrEKJG7$O zk@5D??piP$?9fN-6yzV+Fk_U8}1r z#FK>C8>&SFVx<=q7{VCSxq%_-?qaI4<-t$OL(<*KYduSVRQ>u`KSeu~k#g|_6bQ&! zE`Ld5;u!q5clFBW^_2%rk=Qo}FPZYt1?$^dYV6l>v72p^Gt*(j#Fy=Y2gA_B!dS(P zwoX_r3rHd#EDTr{48fpf1DUJ_*%&Kpg`OTZ+gpT_;C4ayxo%9Y84lI6RQEwo=c;* z{w(5DXquUzh#;ec$YZV4-R&~>@YNOYUPNW|FY#R@2wNqp+@7YUd#mtEO$PdaU)Myt zYOTS~x*KNV+uB=xW{jT-6X8Rn=-wnB>#bEl_hh}Y81hyvlwS=#bs#|d>pwb0&+O4( zRf>0v(PK_}Pp*8ldp628>dO~5dli!QGQ}u*V+38U|8Mh7y_hwcfgFH`_`>k-ELDaV zOEZ~fim7;ENdg55ja(heoqJdvTv5JC{^ajv$AeVheA^;ICTG6~flYguh>3T*lsY_K zL-YH{bVixtfT%pMCht)t3tKM}cu1(;6e3*CR!_@9kY(1pTlfynD2UZfBCmJ^Ff%rjr;RPrWu7WRn+ zE8*P56V*;t_v%dV;OUDXmT(F#fO~<^z4)Qk5KNYe^XfRd@5~V>Vd>NC;cZ(V^)!PTgOZ-Nz9g zqylpBK{@~}o0b9KT;|%R25g{4U<+k5LVZuN-}hgA?9cnOb?-gyKQ|v;-Y@y6uVn8j%u9zOzhlgNbe5~(iaUxFtHiq?hE{KV*+Wx4i zKXc~K<-iLDEKqRRJtq=IGz*GAC~f-c>5iYS8J4`aj5Uu|G4WsisPwk8FWhz;%m)_r z%#v^mP2}HirlG?-U_Owmg3NwvuwluUh7E@=6>MM@5F0=PEw2UWM`SHcFWF^8%H3{h zw{cW6Bm|TMDC+3Z@;4cDy?rX`XN|CbIx@&+a6w?v$D(`J!Hzncl07M$->;2D zkrK}_y`MNTEBdfi8C7r;r((fX_4W#)Ie0-vSyRCo1nMZ++)MOhJtcfxNHdfHoES#JwHMl)|P1;9Ap zdu+DFV`BMphLeKsG~UJ28#G)5cmZ`W;u1?D_p!!}U}30=$4md#GdALe8)_jzd2 zgQnt6E#_`a>TZXdGG*=Jdnu*iI7D0JJKW&D0fp50|hS9m@oH3x3o$-8Q& zgP}R|Y0AMd|FrSFdGRRBNGY94aSS|ANw>LRr=*qk6k=f~AEv!p z>|nfG*O7mJ|C+X+*c4|?G3}-VvuJy8l8IzcC&6MNl?RYh)GB{Pjq;`EIRQ-bvo6r* zI%Ec{4j|%IVGJ@rsBwzPYWL@o1RdJ%QaB!hU5TrAw-PRF*rv}A=U;(bQl?BF*q9aH zNad)66ogdp28M?YxpQ=pd+;@`sC>>)gxk!cF(q}MPDw0`VY8LOV)jZdL%J;V0K`!F(e?-!qi;ogs-GGP?kD z6e63nKP|K=Jd*eD-eW18jD)rZ<5<4pq^Y}ONp(>PK95}l=euPFNA%s^TD;`+^vmKP z@VQoTXTt4y`T0%yrzBW5<3 z;A=)#a6HzwkweG$;|=_3E_Wiotqxg6K$kMNaB-&e z;xH@#WD$IPN2(F>fo%Zeg&#hiOgGU#5bw#_uCzt$fZXxJ4!1FE(skzc%$8D!_$Uc; zEK2ODzdFpN{w1k=3mAZdRVW(YWa-D&#!Aj5&^PcTeCXr&<- z;@A)glQibeZXUC!tefTG(C`4pWbbhqARR)i;U3za&a-MD2tXac}Jt5j#TJFmYjReu8 z6zAZC5GwVW85uorrlN~-I`t1IgY;{T%7(CDm9->6VhwBn$XMF4V!2%=^!y(?6d41iRkKKpwkg5Wt&&>>q7l z1eaFy`Zq~Et3jVFoR0Y%q@20a*G;xEa8vTgtdu5tl~||=ThEKZ+L05q%A2MR;k9Y@ezOjj*b^;JhSEI0(ivOBP)x zi7Y?^W6+Pn@Jr!>6YUJ6BwrZ#ECCj+6Bux%y%7^-Oxe>cLBO|Yn}l~5F#k^xCGW8T zFy4_IO(-v@ly6j4*`}=?k_&b`v4__Y@Utf*#`EU{P%XARZbO|st^=^F=U-WyUU=JK zi@aOB^3p%ZxAT)32D2r!2*qbL)pI@yE?7j^msn*0G$Xy6RiH;-J$>A1B9yrlG>OsV zge(AHM4+#st`7SS+MZ&Ov6z?p{YJ)>wCXSeGz4hmYzoFB^n0Keu}pvjN8)Xrd`op% zTZ^a4fRaeaQR7$J@q6DX4oPd!z|+8AW%t zqNp)}GtlYB-wB(?(XIhI;F5Hv0}9pmB^B%*n*kKNz$tdtZV(V-JvSdQeY7yV4LaPo zdknQ2@syqQRiu?yp|3zTBTUN`uB!W%3PL)|hfP>%6@f{w^(vTIIS}d4g;3b1=LBq! zY7Z&q{mdp4k4Brap@%_N2eC#9uLh-W&LqemKbhn^dsZXtL!_UB2qn6gnnf@a1!R=9 z?M>$E+e;0`{SZN%vLM1D&lN|I+EZ}C4*5(>X*^FUWPI~hML{!ITW-MffL0>P_}Y~} zUlYyDJryH)KD~JqLz!%8h0G4J>lJ)_WokI{B<2?xwP-W(pChe3g zNQ9~E9}HfPFvqQ}<_;0dB|7w^40Lq!fzC3jDpe^S_~qmG-Wcpw2WNHb z%ue5|7ro7Wea;z-PQ_AUL9{S8x5O@r?W5NVn&|rOZWsTc_2uwJ4(fq!n*LR6BjJ*s z1OYN;JR+w<#t2AA`KlJmFe+X+AZv1GGAVyT%749h|E6+xGI)hop^grxZ;hqpiZDg6?iA-`16ciq^2BqKA!8x`2^tFp^_T!a zAcBZI!M!tRBb^4Ybt=#c$IGcVI+;=qYHIrC4I2RdcTVJeAjN!RT0CD$JMBDZ8 z#?@_U;zV@g0^l5IoZ^)azG{Y7_zVE44Yb~>eUZT2_8FcLQoj6%Sln;wt^+zEESG#y zJ)k;OPVGMfV4zoG9{?(0ls28*BC5pA6^Z|As{p{8^2rQA7&CFd0f zCF1CIIw2_Bb`LIau*rXW#ab_kv5FQWrWEcIIsz_c?twT>tnww4b|=cI!}7u&xvrX@ zh!G1Pl5b1I3%6Eae)3>BnH}=U1YCxKX0;meUqtZ1QSC2qJTM-&f^wOj8n`SARZoz?|aGPKWa4>?=p*qHt8|iIl{oMF6 zrbYzo=}3RbZC;xxNJ}<~{%GA44Z~#rBv5YibCGS-^U-tv zATH+pfx@A#vD^DMfL@gl=4k^WSqss7GUGY{A3ky%eJ2QT9RNN)|JNGMikc$oJygpI zAsXH!X48bLTtsz-Ihuur_3w+}vMS=NDK=S}ipxTKW9hD&yq=MO9f1g<)J&fGhAk8??Y`2W|UDqbedv8>9_e_fIQcTFa*|93}mPQ5_R}-2Ab`~_2mK-1$J>^@? zxG)qELvM1*o0!_N9DlX=3D0HBaskj#K~XQ{Ipu$gLFi;Fm`}>=Wj%CKj|ULKoxkgr z$VT2q5x)qW)dIlM82t6+5dB$SU0B0dss*xEdrVNY+ZSB@LOWebm$VCYXJp|7v8S+^ z_s{B|j%Nim~p6k5PRL&1Lr4%Gm_5&d)Z)FnK;BH2G} z!qW#`QM3gZao$sh8j0T4dglW@Wxnqno!~%;oI@?iCs>A!Ng-iFt63(FfZjT zIHx3N6*r1B1TbocM>`JKuA9l68}uk){pc;ONR8g><_vCGWDM820Z|Ec+fB@m$+mJI z7NP4Y@mOSoFbE~?94lvIPoNfu6}6Lj#2m*pVSVOZyQ2!WL>6dxFNpF0LrGVYIq2kO z?+0Fn5StQN0CxTPbznmCmK`u;BZ11W7;=Q|!4Rv4l(J zfrtvE%~e*mgVkHliZ1Zv5iAm5N9XLdI;VhX7N zVp_aT$^Go#PZ>+%P9%710OT^TP^u7((Ha2(Vg?8x-HnpQ5|4r*D}$4{Z@JS0fXusq zQF>lBrueH=_rw}czrh@Mw0=+%Hs%BgHQvs-Fw8bi4dRDyoPmaxux3I)kc_}5^AZP! zlCh+O=)&Y&jl7Q7VRVG`aD#vuh4KIcxP1a}ENmM#YjM!o9Yo!N7wN4!-N+ma zCMI`oD1X1iM7j}nE5wzO)w+J`>&Dx2$dhfN$C^+*yFwwZE5J>0UW$g|rwqKlhj7<# z1oP4b*SW1yIi;RV2Jc1Q;`;JVBcT~-E@Omph|-_3*QeP9;Dmy19beTACejE77L-MY zw0npVs~vR3@OGodilZix@e$|a{E+jreQ|1}=%00TO-?4wA&r&{luEzZqe(o2Yasrg zoSEaxUNV=-gjKbpfJ$omp|bUMv4swSn4Jt_3gy(I-`OBIikKaV2W88t~~|Y(61Ubl_UP z7bnB|!ZPe1cxkoIK*Iv-YD;I7ncgu7my!w_kHi&yqDcEOvj#Hc!lw!_#9oV_eFrZM zPKR13uW8q#EnxD*S4ZKJsXWV*O%!hfwK`Ed@#os{H7XyOx%rcVM)2+9ofbjJ#k{$Y zV!(_jVt}B|_?aWMOp>$p=pl~H$i>KVE&2_(6$2v8m!VbRfLCX!1wpaC#V{`6!6WCr z%TU!Tvww1H3u%$bzkXe4^8%;>IS1Gn2*V36tlJ3kp+!yX!Sng1@}h=(nI!6Y_+HJ_ z-dT@&2T^9kJ}ubHcnW4@NP9`q$Fj~AjamPEs;GCvvZyeYZ*Ux-EUxaBC9dLu1Q4+_ z(0C^$PVlQOpgGmPYiuKc1iJnGvobW;^d^63YwlKbF!q$9BE6EtvJ7gLEQDqRX-B5u zH{(&K-WR3XS>-5~Iw;w^z}fDX`w{)?h*IA^J9_coGq_|uv2Fc+i=xU}R8JAsa3cdI zYlwS4);z{q-{B|Q^#PZz&NMzuQCFY?esykkixG|m5HpLhHql6_{15PlS%1Je446Pg zrg?7c_Lc9$IY6HhW#JQGVlf`nlx(%b$RFIy!CefCTKG@1ui{JXPA z;EsZcMt7#KAnz`p|KMV^LrwVje8H33e4Wi3PZ+zVj8{$4F;y+RrLB9IHCN!-UH?W6 z(}8sqpM4RL%D&s&Yd%CoXZ^R8 zur;9;EOm9bU0<)5(udC%_7i+l7neDT>EajDR>(x9i2Wkip791gO*uL#kJ^r>$N7fL z`|}e(!`}&1dH45hpmCk!6h%_pJv=3iIVwN(U2_x@ zyLP`QqAVt|_MZ_p&a5H!4NOFdoA&fG{+^Ilg$>h;hG3M%+Y+4BjoG)4&RMf*JdBx2 zPlHyUE@1EvjaIv0Lqc$Dv#HbF%X7~F8AHG2PWC=cRi}nuj3V;B(qY|J5Ank+<{p_H zdXT8e*mrR*bFw})40z4Aw-ET!y>`#p1bQl2!h8ECn)w{G(FD-JOl%VWK}~wBShm^e zy3bu)v08h=b%0I_J=*g*#H^&z(vJ^*1vz+MYW7lJ(sGP?x`QRh;F(C>h2IRoVWU8Z<^N@oNI zV)u#wP9r%G0ZCYW;#8v@O>k=fMSus8MD;OfN@2JFu?+{6D#g;onjR{B-1Xr0WjcqX zsr1}L_8dAG4YF*tNuP-5iqd$sM zu1#aLxF;s4s-tA6Sv+8}iump=W|LxMVBJ%62QATxcuGH$qwjPszPn}!lxx5#IFhv` zkU~sqHDquMJsKZOLbdED^)4T6_A+>MrIDR?>lIt$4}$KWe!L}?I!PzkRV$bZ{W#m@vI z>^ZmJH7*JmcHbH!)vFQ}*%HqX-z$$yH(}{LKCwVU4D{C=F@cINZaC<@1JAXS81k ziyro(l4L)l(o-oi-%>H)F!8SP%9==<1q$z+e>9TgsRDIn*DP5aH{K_T@F%C?7BjCI zzhDf+S>{!*!>jch4%l!eAS z?MrYiEcCBJga$uL_!?qlF@6kfyv(6=E`l;<_n9Avjz7zji@NH7YbyW>lRWGd{qP3J ztUOy^J3I}*2f-0o09>d5Fs=X&S%4SJ8-45|Du^Qb{Gf|ULNtxSPaZ&oh-(KzdG$owdp!tiA9AB_5k>4AruY=)~YbAO!Z`wCpl`$YWzGjig3S z1D#`U{xtI>d?D>}Y1|IzyaIhOn?Jwu$5|byBuqei)Aco~{P`zXeC{l}D$Sbw_edcB z*Ma^iZmjkJ558BpB%)fC#?2NRdR+{$`hX}}hPzn$8j_DNe4yp?8GnqWeCAqgS}Sjwkr8@KzT?H!roU8)w-qttO)M9d>e|&D8ES-3p`( z&bSj0I8N)JuK$TcdW0sEJ+FS?JJX|wK*aqH4MumAqOv^9868~9KkhyNHQqXYjI!2v z7g0Ald_vB&#kdVPjBxxQy3{3!nyh!-w;g@vp2q*$;MXTqY~4N9|FWm2bvSR0v2eo9 zya8`tZ*oSPpUQbHto_i;^WeVdt$zP+Ft7ndb-%@B=6}XfzO7dg2<90r zWcUctqPP=v5w02oT?7M>owm->P<(??Ho&3{x`}VwV=3?~q?2IWUB@p)36%cvY1vwrx~KG!F(6e` z*=Q%Z{~_SGfN=#xghuaD{eTPn&!iDOukx>76PARu92loAbE&`dFspzFf28`Qp87+< zl0co3TQQ7+kO26xZaKo#P0QV!r7E$p|ddF7Opb$PDDRHl1Wu-COw_G^#D$>CqGBVjSEZJztgwtIV$_#C*H zh~Nn&DO}4SqFH{Q8_1yM63sc5#1s}7{FcBF;@iopVfFd!)I+^IjzK3?cpj>%3?$u0 z^-=3hz+oIv{Dl;=+lu?RuI~wRxr6WcxHsD?Js&bfY3p{0m!BEG^vDY$gb39g(WI-`RkQUt&D(mARKcf%$|I-G$0s!VT3y_#v50f3f=;`>2=37%AEu>@BLRMF?=)kg6rN-^FLzrX|c)67_WX^n! zH!Y)0?y3jHsrQSsn%RG}1kn#d4&&2QJP9OR$rs5Lz&WS`Wyh5N`8)dJzY!5S)y^@JbtNpyVikLhaGScz!+2vV&O# zF}fnegh7C)Xn_OH$*V`?2Cp=ZFD}^EDPc&675R>W%zdB)5?hEpB6bQKYz~a>8?sPmPs9dA zqQd~rot+m-X0M{@+so~lZy|)lNqbP*Js1?P2WUOJ_W&)?;6Pa-vfPgcJVX8SvyQn8 zV-YpdIOr>%#S>i89@&JJy;|c~T?!=Kav-c4c_HUid><*X9g;4r!Y$(i!1+lS)*;z_ zRj`+_k>+DpjT_jA0@(PGM~*>7Xxoxd9}O^&3K>FL9&VkOgH1ak|&e#QEEyK04&m6&yVqBAbc6v?}<@(nk564H) zg8jH2VCJjfppg+nn7Ia=+4dJD~wv-q1}UV+9b$j7=NJhvyRXY(BT z2oti^1_X*mHUVj0*n*?XM&y45VSOqWE@LV3vD@Y_sJtf%=`)?!)*dSSDWCB`J7-?} z^#Fc!*&M4B1S7JgcwfP(S*oClJ}4`Nh^;fe{K*xz!Ny!XaYgd%@kd}C&+k)@_FgYY zTev14AexK4*hz~ft2otx&ID@f`BmU5hvIYI69g?*Lxs|#b+x^B0U!D6Pn0_jMx#5) zejxLeA|Rv0(>!|uP*<%29#m$p9y45d&j;>!ybZa2z!2x%CtoSvp2( zQ%PA3p=2J?#K+pY9+?$$2DykzsyXTH7+~F%1aGU}^gIFWo?G>Pmeq8dBzjJ^@S90n zlLw?9N#}x@w*~BjC#TZN2LRA4YiWfxF^gq^b0$kPoN)$Ndb#W>`yV1BQE(mRpL_PI z&9{E#@>YNzdx?w7iYpIjYEOi1wwFk7cN;h+K_59ZpM-442Lg_LI5BL7VJ$vzWbAq2`Vbu+}({i z2w9zi^nm4yG1hJzvoil!K^?OYd3PEVYu`$N0S;f70xO=ZI4$tq{_gJ0*V#zIB1JqC z*fZmmaH(Kf11`NXFk4I1LzyEulsLLdS|~RgjT@PuyeoJUmo18CjXhEw<$-&9lUR%?dMh7A}mNm6}&4 z{_Ws4!tiw$ciCCaAE0={4j5mk*wAvO6h6(`Mx|i|JYM|8?c@X1ZoUYR0bsY#fk$Vh zDz)aYaokAlm5=ngL%|+YYqnj#y2$J?5;cHM{ena=0<}{69 zpQrirO`mN;Y3PdafC;3Ug=Y8x$7UTMF(45#8l2p9Ev(=dGNGYNv8CFVr{RjJ?HM4jjA zV!n?|=$pWkP9ZSepE%83NjR$CbqL#aPApd|4q!LXr`oiCWt(+XhDle!lK4qQ6ey#5 z!idcUaQh0!FX3^BKLs|7Ksk6|omyhXl01{Q{nAhjT#w*xLbG9f+2tEf>{1&)aKjO{ z%4F=pTFhan-0w_IAq+>r1|(aUbTXWRNAY;bhSRXqkJhq^WjpRO-TU^PnDtG<|6vSK zv}m9jS6%hd{&{88qj#!Gk_GANtO*H*9<53?A&B@|$qdQhI9!@mxa{reyd4iVoxC{V zhUo!?6B}vl!ZJ+d?(-7OkACkxtcOFt8mXG;xwyoO zF$hOi&L)}3ziimgQ+u0+<HO-J1vd zKRa3kuDnxtBc6)-_IEnP?ZxqoUom25m&``e^(uHXjWS+BSf9u) zsGF(AGQPKueRUR)l_!fES4@Z8QYW(tuC&I^e$mvQ)TUPmKnO@n+;}oZs&SMqGyx+I zpEBq@4@eC(>@rS8l0CbSd zRJp1PNn0V*fe7;2w|_f(SynA20Sz`Qg04-L-#{w7E2Aujnasu(rg|G{4JnfQq1M(a z$-MD*u7oe+))%)NlMz|5?;HC8eGh_H4uMp3kMca?eMXnvZXj71LDhJp`8Gn@mcN|oN>ixyAEn_oGVzY33S#$BvpiW#3{m>l# zx#q^=RTnRDMc1hMmt5kkk%b>H4F=AK`76f>BK*!rl)WMfpo*A*L;eFg`6++d`L0Y9 z@tt(IUlUx%Iv}o?#!@s$^7wO(6XN&)tsKSy;rn^kxt4UzTWh+a|Bm)YyyWlvOc@b| z2tId$C#o-%GUZ5F)Tj53 zYxC36Nt%u4u%{rX9o2g2-l?a_i(uhZ}1%&n-SWT&BrrRSv@GRzx?v{BWRw|dK|M-;q zx&&w*sJIas$F26~={H5K!5qJocYBZ`2Ih4XZe(#w zp1+T(W;dan#VttH%KeSe#k|JRaZSKET&_TRZqPP>D(jZMGSQuVc|$#+ zH}m&KF-)|pR6PQ$Zlyf09vW`y%EeM1d^T!O(u$%I!#zgSWZm=*2~y6HyfyN(B@s5u zFrg_-AkTyKAbGVv3qS1griEItEZhxKW_I-(DUl_o|0cvE8mWOsgIf6}!#6qvH8D44 zVeDE1>!AVtm)+zEUu7guzSi+dmyd_dyS9Y%THXNt5ehra%$gEDbO_d@YUO^$;c0** z!~QI!WCWOj{-pMS!N82izx;N&sI38h?iQdcutt!&C!DE4UvT1Xx(ufhS~~R2sQb?( zyF1gu-Q>0V^k&;6z#DZj8d;3EK#>Wu0RdDdubBNKYN^;m&?slTimLh&I-)M#uH>9+ zA)IAT;X--Emq{G>00h*%sU>+`?uB|`YfR$&8fL0X1Wfcmiw{8X4&f& zI=6ZvJWC}5>+_ql^Rgi$x2EAX*3dQH=sW-gtLJ(gBsbY*+yLn)if6ZBqONXygm;WIFbY~0@eG1*T3LgzG zUDCC&Kw(h@bT1`ud>LO11dq`_K(v3scj6z2%<(Ng6ab=`@kcnZo6^hn*>6LEn7iXj z$orTJKbOEqNI^{Jp{N4G)dG+;*KATmWDWkahakYN+@`Z{R#fe|JzOk>8aSe%J4@#^ zdb+s9GO`!Bkv%QAG_QV_MJ%YMh$?w=L`nNEdLTz(``o1LzD(2xH5(5c4tK{Df-QFY zBYV66!8m1jykCfSgZedvkE=VoacfBN@E=+H%EjBd@e8Vi4zu4RDlQ)9P_|fu0ksbJV8j*^%lV6as4jgIOOy zB_Hnk_aH;!D_9Dsp(uvH9z$yKimwXO2QCkoF3ed&@e-GqLA=_4z>^8^p9%1v3Gkl@ z@Sh3rp9%1v3Gkl@@Sh3rp9ogG0P1G^C!GhFqX1%JiohU1@D1Quz1YJ_Z}Gn>O?d&dP^U;J8B-do z=j!5o((fmRgIe9yJhI0RS5@m+%L+xu8rHi0c|(NS&b?Yy8$`Z4Q~RX7zpmvfKFyCuetI#m!-5ZtN1$NjIPIAKmY9+dhC!Kz2;2Lrz%C_LfnK zLk^yFtWPYP&q-l+8^)KB%z9k1TyI(D00;-EH$)t`H7GXLT>>b7n@T;WjzZZfk98xIJ!hBs znplL-P?2oR%-Rh{wvBoVWYff3bSol=9p2W3IU;DQ;HSc{aghtQQ-ott%7Z?I`m|Jo zVstd7N(uGm-zTq)a_}MHI{q!FK6J`J{0jL$uSXh23=I_@(COF}f9^^w+8OVT=vSbG z7cm30QNraKD5kIJd)FV{KXMZh2n|3{v;$Q;o`oF!i{B|+8@LNlv;=_RJ!W&@t-D#4 zz3<)atyStVZ@><0Twc{na zxJw6ZYS`MOO{8nz(`~QjyDREcUa{LBsrVN-auz(jgR{*t zBCdYb0$o$=PzcyoW%DYEuop793pxww1e_{T2BF@H(I#{++o zl~g2x?zI5DraQ&mM}xUT=q4$)czz`ZGAst5xcL>uGE8P?RfrilTpLeck`kt!bIU3x zi`;yBkm}@SB5y&mkdEOjC~F7x{;`aBZ*Gzf7giS~bYX(<+W%T%%JU7LV6Z-BVIHj*-HuF&BD6( zhTjl>%2h4Q+FklY^H=@0_63hVi4n(ORkdH!BoWR@-z!g3-lN)G-arn*%Hs*OY5Q}g zR=bT=&b&s5;dI|Ty{YcV@p9&6^TDq55!~~Za=*$3@$zK4)+pc=Rk-y*V8=df`x6cE z3(*>6(=MfFiMN;)#Vki>>?Z>CmoAgiV9)f(d=~uNhnC#=nU%uV8dwVE!y2a!pGBg0 zQrUAZgbs{PEpAa)})+nSTuKyYUf69ZqiW$I-T z7suGlFdF4?JSbd;qDb42SqMb%gu~v2D)Z6#v z-f19xb3;;471cK_2pkUc>AupR!>l8CdxrzlE^1#mXk0*#h#??aUL?p^K;O=F?mY1t z0OEpwv{V$}5@+X9b|rh|tYS#Kdj=zyme6O8*XZ6NxdaNK3w(VjmFr@crJi_aH1f@Vh_GidIhQmDd%jehDTm^YP`&#Ur8v^BVSF5R=3mx-@nbA? zvF2OGl<;k0(pO=kbqO3Udd||Q>envD8=LP-L#3u3w^(NWF0Dg~dXXKs_~*ZJ%xk(6TY}jtm&m_wIv_R2f|s2RpOoGD|wxqblTZYl2a6Vad@JYR4!)ixjJvt@sDhA-m?NF|N=$hQ9(Mjp9qYnas{ z8~*yvjek^?4uU8+!XA=LpxU}vG`mu?ie z`|;QpwPZirg@{j>FvXcK#qfrd+N1nRR@aKIzuG}# zAHKJ&tU>_>aHKVA2-)`$7k&xTXs-qeshedd6y}n|!rZn!Uqz|&Sx)^&9#ymDZzhie z%pvy)3oR@q9uH@MvBq7Qz!^U-I%a?xH?TqLCl(Vr&!}m9zkE_aX=lwTvg8z2&cXW7 za9ybWYonGOPxITO-mk(^k#p;0SN3(y!?MEkreI{zxr8&;kcHNl`K=+{%+dQAdzxLyEY;|mp(YSY8S5p#^#Z1fMVb|z;=xnlk_!NDdpZ-V#- zV5kFK{?43eJrwFxUIZ2X_Ei&GM-kV5pYg72g|kq0{buJbQ6!(K@y$&u|D}F@|VBzlz1BAah~AV z5^xjX6CkXQyi#$lbq-h|a7bajVjYA8nureWAZH>{b9`_dq3`LITt0pMrSaxtftnGXs(#++K=$o2-T`KiL@+U%FH=9+yp=p?I1LZwf*q< zj?8eRb{4rpfD?71ILTtMt%%r3K3jBe^K#=Z3BboKFPcYprDyeP1;a_$n zf!)@#;5Jm3*pYJN=%bGVA%wL)8~enq%&H)N8kliGsFo9d;NNYtCWo+hP*fnWe@OHwfRa;!cA*Mzyl*F6*dnXSXHA}6BWO;E!#En zB-YOhvT*O~ucPA=ahrFA5%k%M`};S7lz}`dAb@pJjYTZl!k)+@B9;2#C2^4XANEXV z!<%Ma3tif9Yv_VzYOy~WzawduX>zj)-|Ujc#}zvtZKlrc4H`hl8Ue`DNrbyy4}52%pidbSLw=I94l{^=yme1I6{u1 zrnC`>y%An_lpJpU)f`zIX>f0IzsKK1!?f){yb!XYU*mq) z01c*Bi@3nlN(oKQW|4|DYx=rNsgR~Yz6KSWDsCz%_MuZBrfqVz5@iBdNsbal_TpkD zPQX#>3rf)vqc$gV_4~AUoEezvLTI|K0~mnU<;eYn&oiZ8@g|^ zdC*bcEZl+YhWWDw#baa*1Hm-AI|^cSsQVp=ns8sY>$ei##=RmM2|7PREpBtM_EyEr zcENSxg?in^%kKLG5x21>jbfvVQqbQ`rIdy!Z{nP;oD+E)wM-q5gVhJ>#28SwQ(Hf@ zg`^8=cYIx8URdSQt+jqXJ%YFtxhp|((w=WIF$Ob6zVlb$0PVIDTru<0lkl+S zC@G(Fgff!i90rddr2t~7yJ#m<0qd;sl%Q~?m+u3RU(==sbg?SVJ~}$Jno3p!eG+cw z)2PKW=8~VpsjWH2>ekaN#%GbOgFk&afvJ*fW|?K?V74)6T6< zp&Lfd25Zu5X#jb61=o+8Goj_dRp^jY=IbTN7xSv90>lQ97JT&mmD}re^+G?!f+F{F zn|xM$If~{1tAqD#vrAzdaG;O^iGWS6O4o(jU(bNjNCrzE8=~&zD2!&(H~Hm0reavo z>b%HJ%qJThSP+k|Su*^*B#HBB6SV~?=mG?&g|_T^vsLl!=;Prxa(RY2hKR5jCu}%P zR$M=hn7Fr&ci6Jt>k5lrtCMB+Q$x>OWs``sWbiAy?l4!~f(H`dJ%EQomNI~kAy96) zAqE|D7XWAe)m@y~^SX~yS-pFg7=nL1Vt5{*7$dE71P6GK2}ziYI|SW=Uov!x&YdznW75PB=wsBnrTG-AFQL{QYz#PF`$s^AGFCAeesS6SvjmkPb%fvl;SX%`}YodJo-a0dG2n=RT* z@oInjL-MHT>9ix{g8nP2AOC1rKtcbdHdd0$pkDRj@IC&q!IRp?P70IDAr z_ach7N-bd%WG0~^+F#>_#dWg}5pYF3A%a_NX{taFHOc6^zzAzNR>w4DAQl@m_D^ZM z9}-G-@~IM_`!753ZA^h};lVfmK4%doOTeTa_^!}?&x?(OC>68&nglIK2#^J2{|E=^ zb>84-{{%P=*N?lYYiRgTL=h6lqY0@U=S<{e3$H0|4XNN)L1@3LWo<_0R0BE7Adv~G zj7!^?Ffy~*9~yh>LMfAJe^v_+4HQ-AX&GPyb=U*q)2wH`e|7$79xW#(OjBq+SaLl- zCgTI4rq2Au_v8%&ac9)fs^%lMykByPDgw(6dN>rMxD@C6#*UkCDibh9k<>Tf_e?SN z#L)2D#!s`Cikc(2fzx`_0g?ina2Z3Wq=?Rs+yKHfi9pvt*p-bAtG)|^6_xZxvfcCK zcKBQ5?nR0k01So3t4qD-@UGrR$yadQyx$3#R42(_u$4$90^FFMoUt+46k2po-T^Mq zHrSR+$ULP9q-`!kT$Cce1#H~9zo|bBNNVh4E=q^v59;aPvja&`yb8)pF6ywb*VB~x zAZgWpC|^gimexk>d^Jv-yau>k)al^!!3et<0>F76sD=Sdiu8^<-oZyg_WL5Kz2(-v zw@O6B765AVDYmr8SrnuW)UDbwnCCT)L3#<;QKwD4(R+!Rym_jS=_TS<2g#25T6om6 z__07)^si#D0*W>h9~+Yo(d#)%pB4b(ph1U2(5X?~=8CmFWKS}pv+B3#hN82%BoYAAHgL2&;5-cP|0YjlaMAN;IeqMld=j(SMd z5X}d-BrMv$HHzS-^}e#`XM0wDe&d_g|AqC2V4+)-y*iSEy5%M@Z=!NMnNAD}zynfF zPM&arxLXjp$Ul!0{bCIJw3-NX|@?Sb!FsV#_Ug+6}peOC>=^glbc zXXfz7Vnp|{(BU01cll*74p+HcQGErf<4DW10TF_zwJg?qPKew>XZH{YAOSi*Yp?r3 zf?|BUa4LDXz*CIgBOf`nOv;(KRrz6Q*)fMO{Tafy;y`9P+Y{kKEd74y;6A-z?O%^Z zixqw+XqrW!UjwVbI)^8r|3a$*y=;(I1!t>GtbnT#*yh%xke1LpRz7%0#&P$K20i=z{;cr){^7|?_VAtsSRy|b-aM1?!$h*dUCUf`C+ zI0UXwZkF z89b(;bgj4&U;pP4VTrqYetIDKnt4T2=>xeAz9i&@n^))-*&|>BL%#r=-X6dFjf9b5 zO9+v+M}9?S8OYzFTSpj-IPynTvT3%VrZ$=#u?*~K!HKK@g^#trhZ_PwGMFq)m1QFm z%yjJu9c#wo{Pv9R3D|4U6Y2Ci&{QAlk z1h&M7cJ^vw|4!b77;_5rYK;3fbuhot{Ug^XB)ebdiRA2xI&hR-HNS9|>Q6^H+BlR| zxFJJsB^B&=>P)!2s0l6s-^q=3XW{@=Jc{3sf< zP}_ZA=9jm1EsmxI>)AG8d++X@)z%$5{@t(DjG7E!nnPb~Mw z$|U1X#TT!J#M|(>Z!1|l^s)q7*zPV<^=eA{CGdt9Oov1*NH%Hp<|*Fgl4W|ukfv=n zB1+^hkonC$VWiU;pax-8n=%kxh=Iab&>eln zMHWK9O=#FeX;TT4coPc_xgg}Yh%aLF>@&a+!&p{d%f-o~Xe5~gMMYoVl-@NahdRKiEjGk zTN%8omSjniDT`#$Fbvg!BV4B!pnqh{w+K-v0~d-jiRK=lbX1mWja7-j^-W!3$rdZI zRr-7wsRjHISs*UqvN&|#cduYx93;^(W) z0%rmcJ&U4x^a_Gg`A}#E%9RlmZ$=|z>Uxl(A;#1sUX^N_-DTaQWcRa0thy!xcTPJFs01_=`Pu0OL@IoyOi|^^on~h-%;Ve#6-HBZRfsf7~1(j$nvTS=+rhBZ&2ROlN;J-Y# zAIKL{Y`7Qy@Y5*Jv;$DnWcvnn|zx3mAWO5|aiGTQ!(Dwn6IW^oY)W_Z) z=sutdQc~TeJc?=Jzih^Z5F}lg-o`6ni_oQv&GtZh*2eWo>K|dfahh^UmfAqEF^I2G zXS9r8b{xVfy9gFdA>ijU%5+Z6(cc(e>DQAnoQG2(xK^qpJX)43CsK)?(juvus0{Cy zhZHX*uvtfl!=6{}Nn%uk{l*slwy|^-r^}hJuqq5TS=ChvMW zb#ge=#1t&5Qc~3WZSJ{Fl1qD~t?~_V28Ute3FR_~cc`72pbRkTZg^j!>q=9g1K5C2 zh)ea~2+*gLjwH^h;j1jvA(HLd>5n0HVikL#3tbLiA710@Aa@vbh!1V3*X3n}nCA+_ zPaK7A0>pSq%us0bzNuNW`~F*Mjd93pEEPb_(CE&q#&l|q;7k88&!BO>MuzC`+mw?I zmk3;i6TeMx(eqOc&NjU@lN~LuEuy71Cj=k5QJ8U2Nmj5;hPe31PtO$p4)KN7Tcsyzt1KA+IGLhhbMEV%rOLhPNj-mMyJG0Pkmw^TT*{!+{S!d>( zHy8)lz@z*_fuR(!4DhD>1Vf-m7Jw49c}Nn+-CP<6U8wP5-p$ZLsFjBh|;CpH@7zRM{E)d32XgN4z^8v)z9I2f(c zA1bMiM!HF~T%c0ji7O9{>CQE41kESii@;8&<3wBasU)B{#+dL{pI?+ww3`(FGH=Tr z5_{4}OF2v3(WDE}Uoz5%QFB3LQb@$EZtaAV|7swZSJP0Yq_bvy&Acpew0fUL(}Wz7 zsy8Pq6drS+OmN|POlb)khj7|SHC}S-qKEOZlLNr|_l$@I2sf`ZDD?6`*M;6*)1sTB z7{0wP^6Y^=EZOCY^nn&_G0%DHil-(D<%VaP z#ji)JL@}%-l8?IA zD=Vg}&sg>(HRrPT5=%O(>gLEyUa~B==>+j$WkQzF0uv$cu-tCM#jun2p#2#rKV0hY zBGAXjDr7R?nDb-YU;I)9-Oqo3FAZ{MzIK-$jpb!{M26nq%BKiQ&Wbz|1aL_g>QZ0r z_2$Q_$@OaS)XoedGiM5^PcvP-yxPL6dE9WXZz z!pkQ7C^hfok=3S~5r_Wka@;d`gW}~TX$Eo{JX+b_8TG~v-vPFCS ztvV9J@|fjJZ6|7-xjPHwVi!8pi_b;d1Oh(z7DB(s=*@I?%$z(Xs+G4Sj3dV&!d9#N zZ&k1Iicc1fi5Y)}Vm3inIR6qlRkySXc3gkhpJ;|qh{R4L82{KGY!Qyp&law6vrU)2 zs^c#&dJZa?XpPe251Vh`(AfozJMR&Y6JDP81RQZ9@&o9K<~wj6DLjKVh7?Ju$MWL- z$@poi7Jm^YUc&xHGL7wJ0Bxk|FQaf0m`+KXG!<}jeBqjaQ9LHSt_sH}D5Sb>kO+_9 z!E{!_->G^GAw@c8+5rOFmNkwi>|hoXik>Xdt%K^&%< z9tP7y9$)5vD|M3iMxdG%WF)#+>l^jDJ~sqGnc~`<=&Q}s(-{Q0f!qnpAq5vs|7hMp zvvdqTditHcEmve=o2vXrEO&vp@b#%4*<yICT!qcj*f{y0bZ%^NX zB=9LJFUX25oVYcHni@#|_J4%FSEy4KU=w$i!jv8jOf%k37z&#R`FQw);z>oJW_^FO z*MwndGapeIE^^`NPmHJK@)i9t*qdBq+rFTJ^nD(e%2M3jn6k*FVSkNj7=gW-fw#+O z)cMRg!=*p{AdPX9U;%wFA5WPu1*D2)M_bes8QZU zG`k_`vjsW;aS@|%9|nqEGwi}AVvqcrAWaRmq1+wmq6!ObO%^8+#Xa~$j>M8u(Xv;F zgKUP3o$W=78fH4(OUKTW@I31+_k5;lbia)q#p%!U1EdeprR&0P1|aH6`^7DN;x7A@ z6GXWFYt?tN@hd3xK*OzOm20HcbTrrB?@2S{q(d^j;`50G=P+JSnx{Nww!n_ASru)D zpciwXZFovCiiwT}Qu^-?=^MSqW2tftTKjAQ)u)np76|Zz3Go<2K@Y(OmZz{>i`CNu z!&|@aCiYdcx$jvTfn}HJQDQx!>Zo!8NLr372uOyij}oIg-wlXIW<E&$Rr8kKeXe*_L*^+kOLXogNK{)YyKBM2S)!|3L5`1b2_>(_B$hp zlHBt_Jz6-X$i|`sVqKV;ZQ{HEDP5I{jm=WLt_?U%Zje8}nQ%Fsi6C>!G}ia-I!YhpRKbO7> z#=iGWZzBwH)|`IcXE(h-9t~Ft!B&-c4T#gX=|YY2IXRdY5@4g5m*BTxw)EQ&Y_$#M zaYOkMiPoc)N9w~(3D=*l`;5d5NxU&tts=Or)o##}HJeNhHCf-NxKa)4T^#Ya{k{NC zaK0jE!pxowVgt!Au5u=Y-t{OZoU0>cn}#Km(FS2i7TV`kP`wditH^c9c#w18fst%d z{BC7iBR5do53eJzVIGBuGV^kn*n`wGDK(|qRkCnSm)L~=S3*kgvOzIHwNFN7qa2x7 z%43*H?$uAT>b;i@Zc4D;@|z~`Vu)q_44RRN2NcyvjcaO=KhF`H|F3^L6(9np9b0{> zeg3AR+_-+PqIV5)U!oX)R*M+SfBBt8(|N5X=xaw&d_{EeT8Kc=-q_1xlZK6UX34O1kB|BE1liSJfn^)|9TqivRUllLk((HwnDfQK~jfh zzh;blJ$j|X%Bm7C{#$|?f8XtpO8Yk|+s zXqSaX$j;JtPYx!BHlU%$7Ee4C4~U;@D;uiwpPQ1<@GLFl^xfW@8ezsB>qx?<<`#05cytd8pR2jPNXe*k%LEP9u< zDq~SPZVJ9+G+H0v=@b?8?@VUI3o0u!BVEj#Dvw%$!Yd*3c#&^yIkDszxfZsnIm0Vd)3PdfTw;laog^+QeD0hJaW2<&xrvm2mlo&JSwA;S3rj5c)4tx%r z%d*5=d-UV{jhDqAvF$vDN0!L#r;coma@<*UL~iwhDxo*!%+L}%PEWcY_?A2-L)7(P zZ??Jybn5Yz{QDxpldOSue{wn1U-+^{nr>^Ij!iP%JTIO6f73$r!wOw{fDsE7L#L(| zg%HLmSnwec&%rFkiYYVBiiql$YBeib@X^H3yy=~w`+TDZ>mx$z9&krhjPSzs&~E!?|IJ?Jli zA;>#A=CQk8U(lplW~`naTJ2hwn7ZH4|16_@mWHCt?gq$7`7U)@wtnAIm)B?<+nEwG zUvX-@+uno7B4Z5ZCMMBEhz`bm(#4mDwOzzfFAf+UP$S#40Lk&Gh;P|l@elno#`%{7 zE`QXJ!Fkr%1xsi9?ueV`J)ovy`3=8~FY#0~znC|xlxtkTcH4x{Sy!C?g=;=vsOq8_ zx=ewBeQkE(n6YI2fuN^1c!nwK5$7lAHg+Zf^X(7|Hgv494)B&wFbk81hRWg_Xz#vF z1SLR6j>}3c?Sj|pC$>m|ebzZfs>_hwL#01_`!sl-$~0TuNy->^St;csJr~Uf_l+u7a}Q>#&ZyJ z4{&w^ss9F-4o^_XR;f93`@>L!7CK;KaYH5a`TF0dSefD}{J948$Kp+ST}RM|dqaf{ zgKN+uY)RDm)eqB;=u2_oY(+3H(m29hD78C$jkkrsTj|lrF(>i~emYM}J)gWG9j~u# zJPlb*aQ-|&44)5Gfeh`eoiR6cC`>}^gnKcGNbWrz)>xn+~dgWNRf#mod$P0rmWxC>8+1< zRz~b<<2Ye;)pb=6j_h?k!s0YGOtd##Ty%Fm{yk(xb0dij0HsY0O2VmW4FXed*jLoc zhYadxsEXF}(8We2I8BVNl&5}g=e0z!Y!FPl3HrmA*A*?T-wzeW^C+996uj8*l4>LN z7U1r|5ya^On0ifjK5fp}ViY+eH&DnGxX&r_sUv%C7?-5(>po|9Ocp1KwAN?Dm7I)v zuw&Lji^hOqO!UTZcT7kcY(LIAS-4_67}R0?H|)6zTey)@ik>r|AZAn$LAd!a1M_=m zIN+TTwKpouI2{=HXcL@gv<>zelz)!gOa{=dA~K$dV}hO5a~T%Tz=cpT zg`2EjAAkx6RdXXjfIbEYYs+ERB`KC}vm<0y9<%hr&qq#f0t+}!Avd(#A~bX$ds&^x z;V8+_Pj7V3z4>`|vu!W?j}$)4tFGlZKsYe=w*mXMJ?UJE$*iN}da}!P7RWwKmFsfu z(h51}Upe5Di6iuNIzI)k(Nxr@L#fQwfO0I?s?iq4Zm4&mTaTy9M%7D(2$2v{PdiDy z=4dEJ@?;lF96fpIJ{FUHMG^tPB!RAp_fZaq2jDI#LB>sz zSZ!Wneu|oLN{KdWevFQxe;7&yl8`E}#WO1p)kN?eef?#$d&x?oS zES}<1c?*;xCRAHfAYtR~RGLodk|64Qgd=q>Y zoWknJl(IzO#mM>)w>S0ufSybU15^97G$&dftYU3<2Fu?j)Qvf+kL1hes{Cg#8b2%0 z2~%W>10a$!Je%$b@LV~OWf$H?mND10Do=PD9#4EoKyH1X>-rQ{D}%fl$uylFwjKvkyzbg*U z8&gRqXk!Q~XWyEGz0+V9ivZv4J9lm`CM81cBGiKqsMXu?FgFb72IAXN~9 zguznGFCPO?_X=FK)o)mld?lJuumTXY%JYSXLUdd=DO3-U=}0fCTrGr)uiT@QE0-d( zp1AsC+kS#Ii#y@9|3z(=IgWoJ#yTirCeLj3%vw@SLn#O}jr zr%bS}lq8bW6>`3fQPy(HIE9Eu{mF_t4u{O`zQYlBv3$tHN`$l<_fM*UHtDwW?eHne zHYwo?iRVSS3eA#l2NeuA+er9jW?>8pMBF8dxW-awZnkti9(Z4e5O!bAgZPa&CSRpF zasdlRe*!V(t+Hs*iNx3c-|SNmWY&u_5fGGCFdg>om?-Ce=@{N%BJvSfMRjk|P^anld2I}HoV?_vmmoG^nWpd! zx)v9}YU6;S`EFF3jLz7Bl~X~SnCq3(H{b{^(`CbGBfx`l&aBmlU%`D6m1>Q=-f{}| z)MBm3rc{%7?@yx^)YY&-mqpq|eD~rg(PMclaure7SlN(gZjDAThuGbldpj?fDxrtm z?1`Je#th0hxBOeZ0JCJHlwy@qFa0A`m2$LgQXY^`sK`FqeEYZ^#d4TLi<{Fqp=y$s zE^2@jT`)oKL-*}|Tpw%ysUf@UllXmo7g2U{2DF$Rl&N8rLl13jnbTXh?;$c*`E9BD zNF)_i!Vxm-DLUn+zp!*S#94gQviV%x^-jNf`tpylujQ(|=0!123Xb!~vY^jmde}cS z9?5I;V0Zt>^$W*T^3DqWD z3BQxLkg;77cL;Q^s!ibY>8|lVU}{-BNHfvRqkt z*T)s1;so>oVWgYtXa zC!BQS=bA)}AG^!gB3{zSl=^|w797ws6+ApaZzCew5u^NA@4Mrap=SIN}(a&W8zC_=n2k|g}bSH);QYuj(PVN#P%S!*qf{i!4Add%PJi; zNeI>CC~TH<#Os=p6>7rIK;h0G-ub!d^p4&XnBFW>=Ndb332ipZOQ7wd zj>RAUov}061CjtSH!JIPHBdD&AyYpBU!cGWs3KbVX(b$=lI#jGalj$n4*f<2EZ~1R zSt^ovxp2^KSHh#_bJtW9dFcV=Z|`hM_tF4a>7CUyKN2?&px`&)nC_WF>@^4Z!7@2V z6TiH;T-z^2;jefH_Bejt2m}9w{kl(ZE9$wvk^O+Neg~n?1!5PAdlsRjjR7c~Z zOj#`#wZ9R>L2$sZ()O&BG5$pJ)9gqk0&8vn=be!Min`xX0$gQ7T{lQIYfC+%^rG44 zeP)w%C~Wz2`@7}rtpKBkHFp(^xWiBMT(;!eoq+@uQw`5lgV`+xe6De_70K@u)ogaE zEU8Vp2ndn8_eWb)BP^bJHo#Fl-A1DM0CO`#4c|L(bdaC{b+N)MKF($XLES45sMB74 z(Iy@pqw(OFD~NIywVOH)8Mdv7ih3HD3JDp~>=g7}5~(@jkUx0`qjPRZSYvTB+12?) zEq?x^Ps!rC5(*bwl7>O_e}WLrk`c~WTk(ICv~Gz8jZt2hn=DTk{meoGG5IsR2y|hf1*aeLFF=HQb8h2?!)`^RFxXd5 zpA>%00!6@SzmZQXZ(G;wPwyq&HFsutv9r?HF#n6E8K~#WTd1_=rJNY=bzkC-<_S&L zTgb7}j>di;MWvMM#2(~AD&T({Zr#9_1VNw^=5OG~mPan|DWw~D#tsBdL;!)FI>66* zeKKKiIXx5e%b#$2=$OOtd_hta)3^siR#kHp@HvIsO@)?h6dKT^9x zuT7miPYL~W7UvGcUre4Mu}$wQu}R-PUnhOD>E6SC{RqtD#r?;Mf6m^-_CTTSGxkU5 zrc}UxGy96jU*8y|%L@T>s9|M2&`Y<+r|0)ok)KN9zz9}Iq}7X?BSeF?A)4#2TO zT*-Y|i)3{aRwxh-P2@kxgv~(+fvJidW)p?X)eS&*Y#l)4wc4!t(g}nnHUvi&0_TOm zgHS5`dZdY<8e;F~UqAdiI1m11*;lE$>eiHh#{RHZh>WVo^+GIN193h5liue5HEz}V z_V$yg3Js$sChQ&oNJ80q2ZBj@^;>D=To4pIjg8qfwOg(`9&(fQt9w>I8vnajo!qIt zpR;quzPgjrDQ!Apbffrg@1L#)0;`sRK$ib}1G}<7;BO#s1_(U#11sxvby0WH{_hJgc)r0O(I9BIQojMEW2Wf5&IQ(i=m=CO>5d`}NHfw~XBx~3 z{tWX$PV!6i!Xbi~q3F?LwIRRFTZ68bi8{OGBt^qX7@D0dh1omWKar`zVF=_{JSt|~ zlf6MU5N*K1cEei!?i&R5C8_o(qbqPnhF_Zt5OTVMIFrk&K;Rby?@B~v9X<9 zIGt-kvik>*pWvfdak*{vSH~&0Lw?F#3dqZDl7qoNq9vkfddiK zz|Vx3H2-r8Y~pp$xF{egW8RY>26I|SUK^&gCLEp|qR%o{+?C5`C*KbQ-J4p*tG2kQ znQL5juhwC4r>yLn0oTl_peuokDa>;Z7+rW$iQd^FYNWrt%!=FS8;E1Gh268iE3x*< z>5tDRnGQ?IZs0&I1;m)x&WVz?zuE2sf%n0NewixZ$JvjKQzLt1H$^iNp66msF#?Pb z7fZn6qlppsloR*V9FR7(2vA%y?^VGv-%6hfp)g^*&hH&`qF|y5QnOI6spyys@7c<& z6gAZ~R`H+<2fw8cXufYn#%(4sc>WZ5{#M*ngQLL?(KzO{1w1SElK;RfD9xnTdCqK= z6(b^p#j}v6Ovm9s$8UKgQq!w%i$qaOPc6irH)n%(_OPd{8{OeEp>$bOXBI*4R_tU9 z^_W7F1a&PSF~v4Gs!Nv>WKZT1@r|@h;u=MwPtAKnmzavT9-(?Y=Ecv_hW5I(6p?@=@r)G zXVkh#f!uIN-@Q;hW{gpM3;2{4tISV2X;9|pvk*V;*g9_=w{6-cPTnNv+M5g!dQTDX zE|iBu4ojRH3Tb!mUpCYTFBJ0BtrkgWguZ@yJ^@LYv0Vn^Okv_wQmA9a!46!AVZVV? ze^NK(s6;s|K}O|>XcOPA^@>b{>uFm%yrq{~N#VR5EAYN4*aLB;t@B1t4v6YBG@IQv zQ@11-at@NjB&Wsq|8P6k-qt%KJ7-8phRr6joYTkNMo0(r<_)Gn|E9ZwDDhhnolsW& z!5)32Hj^skwt%?a?L1y{{%2I9y`SlvX*Zum-l+XiKbmm7FYsiV8x7g?j|OK(Qe>AO z%wk!>A)!C6tsRG-i!crd58vrLu`ZUm1-81n(RZkkitYvo4aZyNLy39X(f(xmG(1acR0O2~#b~g?%PT1G$48ml~a*~Kc-Lv)7+HFE1k9N`f2%?;CUdZSG z*FG`;#Od}~NOKL_(QaKXAt0c@I~r7b_qZ?K%iS>iJc*r-;qpxnjgR&HPsNP(!N@%= z)xpkDS?{vu&@>q2iwW&e?G>H7rjrt+NK=B#mUx(LI>NQg)Woxf~WV*Vt>VK$%AqcK^DFtqqtp0E=s(|L(G|cMLc7+ z@6guXnwdf_4jgkiE4D`;;hrBwmCVp|n;Ts3i-ewi-0epihRp24u)Wq3s%9lO0_yEbiQ7{UE}6 z)!9F8y#dTskv-_xL>2p7Ks)52x|PunyV(kf@Pd*%g~kZM!@n0dRf7u`YeOVSvFeU# zrVCHZ*J~U|g|g?B!f>B+EqU_YLbdRWD}qRCjk%xc?P=Bolo;5p6$JN6;Psu1ID~z_ zVaf1&)G?yB*xy%DVf@e%s#G*}TG~U!m3qsa?y`$-()(imk zktEfq=0i(J$7gvOHP^D*Jkb^5L+SF#dtE)bt&$^d>Gd>kSq@FpP{q}3yT)rWemij# zUD!B5y?-C!zPdwD##!Zwv>6`9fqT&yn(?$BPgaNLa*l{^Q|jwUc{k(ecavspR!>^RGN5A?2k48l?#U$5~6k8o^Yv})z0 zP+lHEw%+rEO$Rv1CsI!NE~5NAzTMJGSjPVz*uX)vfh5|CltBnvE!>?=Pyw{dYi857sDSe^a+aJnf;M96|GHu_q~2~&E!o zSkw))@tNCb2-3=O0Gu(t#T#g7qW>AN90jRl1Cxtd;*?m={*thDLB9rs9I`}=xX-c{ z2OZy@iADanmkCyRhE5OLu3vlLmks}HB6)2egMNGl%T{+7*&~^d*~Z`4E1qvn;7olK z$D^g*ZoO%uPuUpKqvnGlxtHTBOi9Z(#mp_*;NiZkOr(25e_K-Yt($Ey(#eLdUT;IH zrE-Sb;rKo^((DP*gwZ4-Kx}1C*3P6tJb1UA$a0+uCeU4o--CyeHKPh*zZF=baJpF4 z2b6t1WU*a@M`F(S`9{^`hb5U{m$y%@t zGo)}znct>w$WMV*(QFjr>p5MWq$xOfA+j4%rPNNjRb8`au@B}!(EhM`b>T+kn&Iu= z;s1_L@rimP$TrkZ;MKlMj>1}|8sA%U_-pJCvDSv6o6_Nm&6;?gD3?pfx7Zo`6xa@$ z{gQ;1#VnEf+Gwlea0@!;3{Tn;TzeA5svru^N=AM*8lUtIpWLueM4~Q}d1wAy!$^^& z(-O{8w+_h3&&C4Z`b`4b(k=I1oxvD78|{5Sid@R> z&8`Y|sOPD#i`YguNth>sM;!gGXV)t+=z<;*eHz3PmkAxbiP#B%GZv=R#*!aS*xS8& z$7FOMvegwm3UVpw`DUGI{P>-$@FGH1p1tqczgb-H%nKTC%if7)Gzuk7 zxaJeyTB3H-CCk{&d6P;D2K)PuN{2(aF!z|>3zay%LobD%9m^!S z%PK4Ao9wyh0v6WQ!v#rzy^e-zRQAo3EUQCheni8HN-hG!;P#(ORmKr47~&*$y+~wj zw~Ybh%vDjy8uT!e3Srq>V=1bd?t|{o4IRy&x`~t_2VLiw^@$H!2D-eoqak4m9q8Dq z1ZP)Dc%-H-eiCDn6N`oJEC(McMh3blvO-MkZ*_4}*Kd)IGiMp2S4A8#p~#WWT^5cn z40ZV^W* zdNw%1d$ALr1TnGp#!E(IE~FO~6$ty9xtq`mC?{GeYvmM)!XF;2wT|RCKE!f?mTLXG zu+{{XPQk^>FK+@rC^p<&A_D>g+f7axBuYT!!7#R*L#AOectvO z!4RDhfMeKVmpXB7%m}!^2y!x7h&XW5nU6srIb9L!+Mj(!`F6KuqAdOlQ{`%ZkIj{(T+NZ!D&!vxDTDgUTxulk~GPigQ zj5%^Nn^0q$TGGj*`vBx>SCq7eawB|yH&mWV)l2)RPA5lD){2KdJY|3yow!22?`kDVo&J zg_ec&Kd?@~`DFdn820eU*1E@VqYHNi8wcL+3D5#RmZJA#+wZnHT!)CuNx2pI@oou!rEt9& zBe~dNR#^22L8%Oj-`dSlgCt8#_knLCLQfR$CkMA(|GJkbVV!hjiQaNY^DYe@sAE=6 z`bto9;OmCI8e-U(S^lLNX_xc{gCh7aW|2v!;XGwPes!AtH3N3UtbSomg0iRD-KSc} z;Kw;C`D*bDw3H`1o4OG&sDBL)?9^xavo;W1+PW9-QagW> zf1masoj344CEG0hXFoxJUJMiHp1$V=cgt8T?i_VU#2p*f7>!wVYNgC+eHf-Uep2Xe zxpxIyAWO@Y(dJbMX3f$k=g)88#CgO4Pvc$6S{NAcOg|HLtgD*U zG&rGMUyL}%{e>M1y^@6IP+=LegwfbB#UsX$k*!Py%Qymt6ezP!w)yfd9*cQ~JAMsM zg7z`V6H||<*M}NO#pUAE#*lXoaVGQ!E8&GcJXC^*tZK%i!rD$5EtvuUg`#l*usVQQ zhX0E2;kCXEZ!5t8-_1=b7f?nCuRW#CvCeI!D|-zw`j;^J@>tLe|N0Zh1B9RfMBo5q zPyjRlxbl6=CE2-YHecVfO&Kg_9m40Yv?OnL$iInKUcmp3*Fk(p-249%t)epcR}fEs z{vS#4{r4`6L%|7T?#-J2YOnqIAL5ksVyJH=m?23mn2PaO`0_6X4Kz`AkHHluu|5kB zLE;$h9r=47xDqxtHh}c4>>Cwsz>gD66c7kG2PO~=a3$0dqCZ}c7!RjxI|lyxdwI3* zLSkTGU;uC`_^$&QTQj_%k=wv6rx3o4F)mI}^=lOy26|OT$@W7B4CrP|$}XWCY$iX*6rew>uO}?@)87CU zNf%e33jkNeFCmld3km)Z@G6dO^cvNYGHfC)c2w4o2w(lFFJ%jvTu zwoB`c5p$%e#aPem~{Q_s;IzwSk2ss(|LKqs8;kZ?^aqufa{rN-!3={+}rge&S zDQM2&ccM8%gcRKoVonTLJTezquCQ+MJ`nqDMswlz!y;;$Opn-!b8}eR{+mp@023b1 z7O&qcy8=Irc4A0`?2Qk6YMa19?&Cw0YIqy;Mq&_iw{HYGFeJCNWY*n}g1KjNPcQ|b zzh4t*8?Sce=6axV`kb66dO^N=H$zx5Tz$#iKwdFDR}On^d(^Uc(y6i` z#hZ`p$S~)M6i~#(i$A=pJJ;i@uBwg7dJDRO4mQQK!)2)7Od0*uq;)!1l4+gJA=#n~ zBkYm&*US!X+Ako2J5A%mMrmUUpn9NZ58K0cn&E~B2pd91k%xdx50JYCot07uz`Ci* zW%7nl?_0YQf~Z|Ke_{Cr-`2~$2lxeun-Nit3s+_5M1?LHcOL z$ULOyVHZ4#0p+)x)W&0IF$%a+p-4sm><(a-@?SCcGeoLMExo+6#rY_J85jTn3jk07 z0C@mVKOm?+aK9AT~y(RFVb0y8u7)(tyt=zz<RCX7}H=e`b`(EkpS9Du;4fVr7NJvPSG4QiST=c1z ztlNj-@RPJaFQ4(6e53oecnuW@#OEs&>&#~a-pp^%e(8G;0urCg@5vwkmlfG%Hw-gr zt^{8?sC=>wq@ zg~#Tv)G25z18uPup{?5MvyffQ5RYkBcBoxojSX$K4A)c~iu}F#S&0Ov6^Ln8g?%=V zDsa+&$y5XKqECOnZ&2j(seZ217+)1FF$jSbbPM)LHdm6}xtJKhAwTdjkFY*I9pU=f zigwH9UUPrwwAwBfp9+6{rZK%jQq~M+mebGv?%HEOJAT(Uo=*bm9)6M;YeK0gzPQq5 zUL}Q5;XecZlExU7A9C1$FTQ}_C;C>r`8u{n`_`p)+_4;dyj3!9bGbu^KB{>%K;V^L zDB=)+>J+AEgw=EAaMmKVKkl>L0iW0?WvOpFDmd{~JZ1dgDNvFGh`s zzK$Vq;J@Xb{r&w1x@dgD!BJm9^{b$v$?qiZg^WREr%*q7h=>3pKf>RIqAXxx$lp%f z8E^1WFJSxv7!H9cUvT^P2>LSMhWt9XTZ*iU=0C^RSlpMmyYimi_zmemyNKR`$Jg-q zPaFR|9)Vx8B>lkf|1ujW^#2i*Vmm?%4KqxGWh(hzB^||aOkUCN93DgN1heq42-!nc z$LG+|!Fg8WEgBOz+^J02TTMv$tGD?QG0ax|J1*rDS!L40t9Rt0_lfI?sZT>@gV_^^ zKvVC*T|GSKxkWBF3cBSKC=zm0Ve$>if--oTnx8RNL4_(j?tj-Ev<9VM)_rAnXQCS@ zeTnQ+3pYm3^?O>R?diq!hjn}Y5=TRmsekm>iPaBk_Y>Q?&LtX)&RgKWeR`Kg5J*5{ zm<8bpw5T0EvO3j=S=4bOc7vwOyf|}`AL>1|;x6~_fB7MP|3MNuF1I_5|J@boIL%viz)h1t}AMN3EsUg6isn?xu=r)JF@5(#&Hw&h3rR@7Df9TG?6 za>D^tI#Rb--Fm(e?M6U&o}OSqDWA&MrY7D09V9BS=@6fgRwqn;+~HsumgUllWyA^m z>g+WF?oW9Bw2`0cF+u$D3z@Xx%Ai+@+7=fB=ix3qW>-PxDvaaIXIPJYKeXeXeLYJQ)`SY5Ny;d~gU;nd=kbGgH^q&S|d8(SA9ESBce}wJ0Cc_<` zp0iR(^xOc#+PibcuP1@$qNIr%@Gh=;gPHOHIc)Fj{D?z}%fB zNL*micUsargCLh7i~$t)0z=+h9dk%`NLbf8qjS3!ib>;aosEA*80mGq z8)^=cec?Va$(4-EBYF_hSsz@X9tKiE24~5`=PjcT>QLnAmF$-^oX9qGT$322Nd zaixgeQe<~3UzwtFA}MQhCPdHp6%;+BF?PHty{jU5fuIygY9+fP`*P^~*#9hn|09>* zAaSSq{<(YWBFp!&TFi<(I-%k26yiaOj$q-?`H7u496|%et8Q~mq^*Lt(cK1wBX5{q z20mBvmB!nWlEQJ%MW9@dy}(BIHrbn-fJcb=Ug#rIB(2UXmfPgQbkMuEIN_^S|Gl9I zAs*2M`OS&0BN~9t;I8z;eXYv*(LhqpVFoAqWZE))l;8D;>NQgCA{qkrh?=A8JsZ3G z_b`+%%;~=Du^a_hsJmm2A#sr}%z?C9G5zSesHD5G!9=I^Rz2t=l`g~aEK}?HH2t9r zDr?W739RBTC=R49Cdb;TroGm!Bsj&R73!EwJ=YOeQmXzoC0OKe_7Zr{WZXS;?+icp z(ss*2>BmWQU!x)n2MGrb_3f*?@5%&@8`L8q`bLh?R=Vm$ZV->FNJ|_OZmsD}%XRh5 zTF!CHVg-s>mAkNG37OKD)Jf70*X7*3ISfjL_{u+zzz2P=hEDs#lYbB#6s6Aw+eT$C z{4oKu?W*m70ppZP`=nho=|Jr~q|CTlZLJ$PV%NfY>(Y68c4-ncub6V$dm0<)jE5gQ z^Is!)`lkOmXkA%Zn14zatmU4Qpt6CK$#d#Shf}ShO7qB^|337!e&Gm*$4{nROqjOj zrS|xGg9FYj|6UbsPt+ZNRgFeGAu%)L~H5thf_$Qt-_@&YaovO?xQ2a1zx0**0ogsJ8JN!?6<1Y;=rWdZYu`UoxMmTe%%~i@<|p0 z`Fnt{$oet+P!6aJ>AJL9R%jg#yo;~RFdA1se)<~#QNAuV_jO(|c{*Lo1`@Bq;+$*sGg1;m00G3L&& zkR?rF%`x5Kd9`mfW!5%oRkaZqxR~ZE67a_N;&vow`E?LJZL|<8~R`ooAoBRn_Y;!ZqVj zSR;@V#g#|gk?m2xzvag0-!VJ#2f{LObf7Pqf* z0~^9W=V%H>sgzH|%J*#NYXz}R;Ym#oL*!Gb(S}TQ@u)1{*8Z$zz^F52Thyo(>V%O6mtZGs>>K&#SkJIhR6TrZKq49^B0s}xnhlGS@1c!r=;V=tk`N@68%(8_4IkclXz)hqz0> zb6}s}^Hatr;S6U9u)~k&3G7|x#r{R{db_#18>lI$4TSore0Trb{9zxe9|tr8(tljN zBfaZy18Z`Jx)c1YK1V+}KhmzY-~F1q&9Bzt47PW8xUNg@y899OH}%teIiGW%<6Z^N zw(nn4vVMboLcLK0oSE$ty%63`5BY5(-TtV!Lil7{)E_`f_*xZtv>UzK9$5G3YCyds z2>cN83j|Vqn!hf7vVJZvFYIpj`Q?Ag0Igp)KV@g)t_76{ceZ=GfB6Z0M1RHsyD$E% z>hE(tBl+j9`{sZ0`T4(sy<wphp=ysu54Srj+2gU+a25P zBpus!I<{?goOEp4w$rh#j%}PT_rCY8-W$K~zdg=b=DBk&Rx>B^w zZe89HZunFAE;rnsT|Ne6{qni-ss4D9EcwFbar1F=n|~T`@dW-B@=Edg`9inTM}U8- zD;H4yKKsrOV1Jqd0G_=o0B3-bhfnX2Z$9t3H(i(BKmdXFDuD0{;92*5^ZY#l(Bv}$ zfP1;RMtD|z$a*H&1$EBKFU7nX6Xv}EOqq*24CMkzA}H~f7?8a zx%imLknA1*i_bKm<>OlSRO$ucncz+Lh=0)s0BF01c~gDqdXKr*J^2_j{NW0q035*K zD)dxdi+GEMH^XA)IIJ`t3fN$?DfV?*XfR6`Y9Z=^}_ulmO@Sc?vocd1k%Kk`jMX=T7^zP^N^>OnK;ml{( zXAocvxcJ!CqK2$PpC!Nu!1=ugu)4=T+LZxNe&2kDc>&z(0(^Y=`@3R&G~V0ZFQ&st*&>U zrdPQ)#aD_4{wu)whyT0)k}vD7V@`bb06jiA0KbnNzIf&T`FXc%#HRsZ0Kj-}dZ_|b zJ#N196L#&qdwNd4B?6kB?rs^M8{QvYOrN@5KLil~W!+5&53J&?nh>*~W->NZRB)Vi zJtz)47&c;Jz{mgtkL&)Ud2b%d z5c;g-ZmPbVW%+;og6%J7rLWgVPo5wdoEIJ35hS)mikp2j@5E)VtF_;Eq5TFb8bBQE z)IL~&D2z=hB6IjKGFn(}M*5a}YFdD{{B771^wWhKXV*%?4p9PGn>i)iK?*vmQ6b9e zy;4Z@+ErJ^xAy~2_5Z#d7hWQYXREg^P!W8HvB>5h^Ac{+hKhD40z*=#D>Y`JtH!o| zPllKBNkcsIjXzHkITmG5YO;BNL%@#wdeU;_tL^7(A&mA1Sq@j8y z^;EZgd657n`_n`cpG{pK86QH_)-o6cvXsVixj0RCp$(k5`euRTVk)4y^a*j8JG^p{ zXW8!!8(a53A5_J`{vVgcbl6kVeMtTcn-1J}Y&&ieF8movb!zq*se?(Gpu9J0^Sn8N zZsi23LZdP%t8yS9U%tL>6l|+Va4|0rvt&M_0I|ijZE$t&tcbb*p_CZ#E|AU&lWjJP zDH_8DsA{-JD}8Y}v!7cQCY)bLTQpaahLyG|V9C83h+QeyCo6OZ)>Q%yke>X3N&(kJ zT%GT`OQdMKiNRm(^?iqL?FZ}A{2L2w<`6g9jLjXhhVR^j67BGtL_OUPa2ZBuiN&54 zVm!1ZjJjIU4WsHoJKc`7H3T zWyW81R~aU)D<4lYrAzlmtYWXNe(hlX$LqYZVZRUCOiOL8gB!DREu2uY&kJk8ZC1k0 zi8A(B)faI@TtDu%9>L`*Bw6WY6-Nmz7iaq4Y9i*QJ=7vO{6e6Y0tK;2mL1zd-Trx6 zoW4JM{RjtV!!K&YAbdZ6Xa$*a+Qh26)7vFk!tHHBpJ<$~jvP;f{J2nTnbMHy*j+16 z3qiF((a+%bX^0!bKW$#&4pH3ty~l6_Be-&kc11ZfO7Q71xAQua5~nV_KWq>zD>KVZ z>eZ1WmN6&(m+A1{$}|4c7^K_+*|S!+%*cdvfpkA)lY(8{*;e&w0CKrfunP-!Uss>LnRDJ4XD|<5jv*HA*ZY8|zb;!YcMH6y>4TIi}$VDSH z{Ej5vSGxQ-X(aGW4>FJP@=IQ|G;kVzD$2+|=X;9M&*_N!52R3hGe>6~1qwNbL{ImP z^$WxD)p|Vj6{pQZ(SEJ>Z~c@kjwfk18rG>T?8{G|E%CcgfO9x2q)qdT7Oz{se z`!A6F`@n6FtbHk*-<mFu`e?A9Kq82N}+K)9YvG^l$&M z8vf6|iXpNxb{L;uT1&NWI#-81AFuZ$X9VCjm6gsGnO4Ib(4*@jc=IKY<}51k!ywg} zfk_&cuAc=RU4a!wQBrcb$lA~3&elLO{xw6_T(Lz5q>tA~^~cgnoI(?B*oe)!K$rk0 zRF<*G_k*&})Ei9VpoWl%AihSI_&j5QC1LQRXw>X4%mx9@VODePIK0b=Wv1ZnYS_pP zr(0DEqb{h9v?fI7esfSAz>V>`D&IWk`EQo^eeS}wx&JZy#p%MFmt>i04@H73;-v@H zI>K5%3fFLl^d5RoC~1eeby86Gc@>q)Z;t<`K{ez*P4U*`99CZ>%XU831Re^72-{A1 z^PymjJ6*uI+D^?M>tkc5@C7c?n#11ycn7y>&Iek#@;Fx$%A!defuA#dY&S0^u_xM9lct5kSHQz96DB5q`lPhmPH3@ON z61WkoLFoM55}J>zEY%*uegE)lP;M+%Q5^=`YLbI+Lny(L<@)5gzF4rqthpr;#)%Q1eZVbA;*+zX49=60opN4V3b)tShZV8rl7+*$J2#G9!^-qzmWZl1O6-ceRR$Hi>m(` zT^~W}WrR!?`~gK_ACMFdL+HEk5wgaFpXlFiIpTC%T||v zsJme7KZr8;+vffYglRB8x559168{^mb^MTF%9X*6D47j}Ik9^*@S8#9c8pR@D*}SB zJQTmclR#VnHl7@UVcs%;HTdcyNk{^m1;l%o+XJ z&S?3NG1nHDC1fIauj3gzY~PG8KYt7B-+mt3(pl4YAS^T}dH#nx{l4PcLnO~Xi-14# z6Qai*78{`#P zKPbw+ES7ls{@8c!#Z%;dy^H8Rc9yg}UghS}ysu%NmgV`=RPk}#r^NN*P+JZ*a|=Y! z7OkI8_ODL#r$1>|66v(h{V%N12&n>@cgUPyi>6AGkpTXF&?|kgCt$8OF-u$;m652f z$2maSLU_S*M~`V#a7(j8{0K~O+4D%1eQ2wnuitZgG$LRP9rqN*uIUc%8zAbiWBc>4 zA1T*6&XJ4-vse7~j0JA6I1ZJmEBsyRBlG?xd!1G&>)6l(_X_tZlJm-1SrQaX835k@ zae%j<6gu6l5uQL}@uGz(Wvfel-*Ysj0KlTeaPZFuLU{pGig<9 zItfQ+{N6M&Ed( zHP=Y;<8~8(t1E==!vkt_jt4G~yD^Gl@kIQM3;YJ@>~9B?9WR1K$GoaV?`@#|8&mk+ z&iN)>Rb|-J0>rRjR-&$3x*!Z* zQ5#z z6Z}ruo-pA#b?3+BHsD>Hp(;72?QqQ*R6Dc+DfL$r;WcKKMp$AuI0>x*gjFSu1*Ds? zDm8!n$>43SkfcBEZw2>{1zN~<)E>z`H7vTX?Rw5I+IGgQNCB;47!Ko_)7%Ia-{!O61d2e zn=$Ux|54r#AiA5v@i@EhG>eyhtB$2NZZww~r`@H$vaUB~<^K442&lDRt$)Wket919 zd(QR+c#OpMJbVk9OaH zqyW3$C-lV26}9g(DvoUmhS^TCHJVA2H8@7M2I3!k`I}7ArhBuv9`g4BhMxf`DgO<= zf!Doe#E5p=mnCGS3a=_dV+Incunb?xZG{Gnexr+{!-#t?tIk(+yH{W@U^)f!i^T}I zQ3hz+vKLAvDL3S*3BXRrWqp_+^q7OLV|t;*eYFwh z!HVK@OSE8*?Xv=6)u$oZ9HW*<0q@yPKJvbKtUnc)e|nEM)*T%?e9vqEvx1f;O>a|g zs2Be|fd0+{#=!y(Rlf`s0b#>@F0zq&&!LV7SHtXPEQB2Wa~V6}uc)d}>6;_zK zoant&Skpn>Ft%HdkE5M}xlQ=ol3T+WfUIv|#o}P{-wbw@f{XIHnci?G_{)5c6tNZ#R;ausd*eWO1*db^!r5$;jTl< z%&`J4*TdDC%_&qH*c)U55NNXzilsY zCniMy^FP4-my#Q~bd3oW_D_-T_wg{HvAI8y-c9cux#L@0r^ehXmAZVud1@UjJ_QP9 zDeAqzFakG@WRv(&O~a!sU@~L~Mu83*4)CM1(HNYL{AOcQ6}AkNwrzM$%lQf1)pfM) zq=jPe4fH}7QtsGp&A+A=C!{T^d zBmPuX4`!eu`uXKGyP|ms3p4>zkO$phIO5($Df3ZK092NCvv9k3Nhb4;PhroVZ8zF0 zcGUbVlJ594H$y+bx`v}-IMHgNtM$NDD2LTuAA}OF3|K%qV`& z4AqpW{ol~N7F>)aOsmyRFl!sAzoJdxT5L1-4G~k=3B>|BD9?9v^ar&K;i*mcCm|Xz zED>03`O~0YKTs8s7`k38EB@-qZxyko5AYBKff%p{SwBgX3=$NL!CpHFD+T}=zVbe%o7J?8__w8zDMb<{5muAOJ zM~E#)=E0&&2SXHU*&UoEu(>e2Nq10|(tsI|)DeClw+&ID5kok2ApLUU^FR3M@94Qj z7DOt%{p9qwdT?H`jgb#KM#{6|k&GmjbpnjKB`*)Q#r!Dod%COLg#lwmEPK+#=ye{y zr?g3l-yjW*-iFqL_=clTlHg>r+I&8S!l0#tD^jf<{W8_TR!#3KNG9a|+&?l%23U1| zs3-s56{+V^m%t!sCnHSzDUl%A=I+Alny>LXkqyg8{3lXsw;lt!pLPqjISEMod$VYmaC9~O5>`rYSRN`0y zI;R-9mED4woqS*FiDt9#8bx?*em0e=zYDOxYgyc2SBvr}|L{za3-snK1mW1UrT3@a z$~BTYE<97m?|+zsp5wQs#y_ETC|8czit`^01P$V4RT$-`imxBls18U4X!aijxKM5s zt2eW~flY3h)v2g>UnJRkk?yx)f78+I7GHA3{elJZ{*hFF)6s-^>oL#%U35a>H%qB% z*i=A^#f|+BUK1V?a|ROYY(WNUn8ryE3_u% z&*+>UGD#j=GF4r7$*E zcuH0<8jqs!r-U>vuvQ#$3UBxS5=TFNQOm4Ezj8|V3`Pb=8_=9dOj{lV5tI9kWj3)U!1g4 z$!>{W?GBW=*TEF&kFJT(mU^T#b(c5{p9S5bep4WT;Hlya_)@M0@UYqcri%Vswl#1) zDb^Iwxg?T7Ny^n~6~%J1b|$n(M&>@JD3EBWYy7XA7uJWnKO4U)iEo3?hC^wD-8wsG zpDWd6nN&Cm3*7^%W@9$yvzq@;ec`uW!fLRPkFp42GL|DrC3ptRNlX$b_K*fzBhYq( z^IyEwV?EyKH=P3!U2n7LE}z8Jq$-I`^B;Gr%0)10MdgfS$cy4aDM@qxz2Wp<{iVlp z^Fs@6tZ%7b3KN;%Fd-t4C4S2NO$~(3ky!Cf=fVq%FG!*3-1AT_(DZ8+9-TM2(qgwc zkP8M`Yyz{G==PK+j*Zl_2mo!MV~NEX+WFG*nt?Gin#xfbDCR z=>hkGN~K7?D+7m;*m$MTOSuscankd)UsN23g5>|gRPZvjvW+(o8*+wgfEi;WdslX8 zvZ0CiOtj(Dj-Rz`%_GLWw4Q*7odh_FFpP@^H8GzYF^adYGCOFixz2wz9SgA}g+yi? zNGFb%cT@aFzt8LSQ;4qdKO+7X=8~&btmn+bGOo|>}wwMV;?#tqd4TaN#s z=I)yx9)2*rmt?X81}a&cUA4TAuYHd{mz2{bmfx{?5>~GCFH^bJ+vPe$-+HKbcJke} zFM2Gfb;5yeG5!k3mr=^us6YeQBp9e+=Af^5#a;{e42szJ(X@f1H&n(TCwku$BCYp} zi;jbfLoukNVMQp@WAP*PHSzWQr+V*o~ewSF0I z>ewi6$4*g*q}`q)H;KQ1{COQD_XhuI{x1QoQQE$tCG(Gv>#Z*sh61xhD-#%B=t#lE zI32y&ci7`u%-c#!^M7zykzd8OwJ~)`X+?t=adv}0B=JrHZ-m>`+tYEYu<+fH$!SiB zMQ6-G)lQF$U#n946hyael8Xw`AchNb!uV;+aSXyM?PP9Nd`b!lq+EHBUIA&}Jh17h zPB*3Hi*nG?BT6}tO*qLbqvg@O52i_wuO=)4C3_Nz#nonw~WnVwFt^3_kZp9 z(%%0~^b8TMYyFV86$bwz?EfbHA$@7C`d#F%u`d2UK>Z(W)6Bd?WbGHN1~vs+z5LY> zI$}J7Jl8%wXOlu)`~`rZrvGB~f26PfC^l_O%;en6KZptL$X9rgz9@2X=Q##tYTXBun&3y=6oN2h)U-APVv%53$g1(BEH$qA<{eY5b{q)V{Dk9K-G}t7 z8O}O}RhoTg$P1(=Kf;*mh^6XWA1Ed5 zw=j$`=5q(dYCywUuL2lo?=bAz;Y6@dF-N(yZIi3mjsiM~(uK^^68D_T?9aj^<(YVV zQZS=91`=IwD!o44OkrN4ySlLIACYohserTqWB28Jt*qtZwVvd-uIF)PG9;DJlZdqMCE04>Frfd-hJXyhY6dbWRO)m z*WWd_!t9xgDKYeT&JgR%R)c`!q4_#?S#4lN1w(SA{bORl1xSM*g?u0wthia8jla9} zU2Q7Qj`HXDd1~))9w*OAC7?XoVvgw4u7(=3?30)+F1#iVt4-8^_PQ~0z_nu6HNf{j zh;P4qy%gRF!oC~yOg|6yKgP5dBvqudNmfGwhfi}FeCCyw-h?I3DtUzMyc8-Qk@2NS zlw4<_P{5M4Dn`jteCC8F`Dg8ziQjg_Q-#oPMj*0*@TD1Fp z$xy(pq|y{B{My9Zy`*od-4rKeumKtJX^DdiGO6%%CRxgDYAQ1g#=~G{%bjB%Rl*kh zem)l&pD>ih+m1%1T_enTXJxih^F;t*;rG3*S%-6>ZMGk>JQVLp))%Hb zglYa8hQ=35$9aP3-yH1as3#5rc^2^3;^9 zRkb-Yc*zr=I}8HPGDgvt)q(EIW^DT{)Y4SBU{44%O-_Ry$oSGfZY<(B(07-vlXt#m z6s+-xN&BQ7*n{JGk4Gqmr2ZtVD&V2uB$uwo5d3?FBFdtwZ{y}pN{atmHWEu&sf~DV z?Txw_?PPF7R1DswNOe?LKqZbz?P$7Z?VDCS>A~0}Z$VUkP!13Re81ev21l!Qti~hE zEqNcg@s&>tp@aW2_t(6PTDD3L;IM+U(_h__{sG_eoK|H&<(yo0E_HRzVqQ4d`ITr< zip1hLxvR9UH?UDY;Bo877is9wNLCaq6aSRPmu~inQrfwF+#+ax=@9v{c8G4!J&}!v zLC|Cb;xRdl6mm$8J5|6AgMtTvXQ5?XHRzePNfvoS*e^v-A|;v>9kzyTFmcJ>VEgqD zH#V+Lt45t^)?>ipIDv7OLlm;ex(|D0;xrh@<7rQLX1$*S!>NO~hlst?DZaB>AOmW` zCCO`gpe?Ji;}W9~Lw!eE52{@<3LmB)OCD3YDQs?iLTrs?^@6&$Fj^i6g~bPtX8Q&5 z%O^}uSTsKz4HqMJ36`eA$Po=9(xf+=d5@$n^VO__yk`LzqCJzC`%)3??xe_E9_-0H zf)|&@w|Z6k5n_2o1P;ix9tdc+{qVEH4?!fD8`Zf(J3ZPsr9kdGc9-md0+mBdXD94| zU$9VESMb3uVxV|E^@>*8$c&Ja%n-Tf$0cbFB9H{>^3;vL-mp-GIzl5fHD{Gn*(%k~ zLb`4(wnn0ZtiOXJJvtga;2OKX>=~hol0Vq9=b`jIIQNF}MiP&5bHuyKfZ`6US#}3* zurA327nOmKeLi$^ISfU7Dkt{b*|kkBhhR7GSJl+lp6?>R%cbfjbHedGjB_dgo)gK> z&dsbSK+2-tNhwjdBF3SbsYa_X8cQY89_%4l!k>akh*H|5v}R{&_!jqa z*Tlb5LOiSC)k{NcAGt(rjn*K@bI*dz${>a|N)B)6d`=NAsXhVAhsOgwHE@xtyzb2)vTN`65Gc^IMvN(hF-U;B1LawmjO z4pMSl2b8u3?f3c%zK3GZG zGr~$BxHI+$9j_`dLpG{f=vp6oMVU1;Yq2>4Gd9eqv&$z6m5H1*pj6-Y@mH^0J0tzf zPIPM*C@0vCqmYI>Z8Rgj`eudnBX?CcFwDW2!A#bXt~2z91zj=P15TT>A&v#@W$+T3tG z7HGv*jccl>dx1=hV``UO>J%mQNK4H{<4>VBA;9Jt?$AAS2C#^RYQd#`z$}KpIHfCS zB)(SE`Tk~b)A4=`uD)0UQU+51V|IIyxfQ{R+pBaZ6bM?Di~xq*WcaYwfQPn(1}Tx1 zV>bJBmbJ_z&!Rms)#yvmxA6_38}3O$Q4I70g1nZCQJ6)Eqg$9II`V~`Wck_Tvpl~+ zaxZ*9Q#*ZzjB6UQJq)pHyFw;WmA~oC?Xx+jh-Mp&??y1^7Pt%9&>P`F2pe8|u)Nn2 za4mK(;#f37tka9ubUWl7)m+mzD7w|j$POx9ogeIN;3JGHDr?4xgFBOB%fr$40pC$D zbkEuZ!Sfd1-rOqTiasGZsEK{U+0mh4vwJdd!QdT#X`$h1$G7U7nbB)5u>i>y;d=A0 zm-PBUui7z)*Kt9RU!aj57-IsM~g+Wn;JFw+8c z-&KAg92ZM0fM6HNX6_LZ{$$lAl0%-1n^rRR2kio6wQS8v1!#Rs<&rvAk~bSX47dd< zM@SO@B7=>Gwq~hR%j|IAA&P+HZ*lLDOFYU#A^j88Q%_l^BDY){Gg20}|&8B>( z^Imwl{p(v$kM0dG;hu0sT2MQ*Bs_-E($O`4zqg?$H!$-3Vqh(a5jc(3O&6CpB1JXPb{1CBscCzzVbe!SjR8Ec4B;XZ>Gf9Db6n%`+eUl5y;Tavc|2x1Vdz7seXF?EKP40mgYuc6QecRV z4{oYh7n#fNHV?6*vQ)7qcJ51 zp)t^-BB*J1Q?6fOO4=BP`3`y*XXH61ex|;jBY2`k$y6PDypA6P8DzMUf?P_q za3=NZbPCHLR#)!OCN75}5k}$&Ry%H7!)KlGnUqFmmJ>w2OGa^ZlT1?svBL*_E}{jt zt(sqtXAs$8^3ufn@=bf)?fB;-r-6})eO z>X5CY2lVW%hofF_dF?=LN`rXQ*7@wYz#;NzSQE)2Y>vX!Q!t_ZJUOpm1VkFS)F;~4Wk&GU%PiTT+2{5>LrP_t%S&s`bs zzHw3ER=Y*yf#aB|p1uq6@V1&=^A7E8&m$zErE>4IO^0pr_m^Rgt)-Z#(ZcVA?y3lu z)nPGuOSg6H5Xmx1NiG&+{I^=%mtMLOb3IL(PMZQ9s{8dV1SRCK zywb{LzURY%IP`v6N0HLI0IWh4r_{{N0~Xv@6|7-x_3#Q!&bFydyO=x48oe1VA$xV{ zGESP^{>Pm6P0A`UH0Ag}W?5KFWLn^gw@hWIr_`C=q2cZeVdpSgG{l{b!PK8#24&B| zOsD!q&tCw0KiPb-VEmsU~_TtrOB zI;$mUyw&I=oE>tE3V(}ET$&ndLBA>xWF_=u0X0y?32K@xm-*F&+ezp|+}p>Dt48pP z<~C9qJ!=@U-rxiORR2HkJao2eZPkig06HKc2O({O%1`zfBSz)6l$(h!8&=DNYk4kKR z;VTY8lz|FY7|xJSyzg0p)<4!aSBAPc$|sl*c8*(km8?J`iJPT(7rF*LJeXb ziwfOv8^1uchg?*3@%8v}S;hhv5j$h(pu@On~MoLEX{ zEFZBQ3#3-qW1K%iG?O^)%OiyIRE-fP=M;{$qn)KT%($e?Q=G4gp-<}iX3ywwAmCmE z$QR@ReO>w*s{pQVZu`3>TkGa9YzdB5FIWk-TZ=OoJw(!Q230{FSv7g*$GbUiHkTKq zFNMcBPpM0oVxm6jHd%vBxi0%?OUrS+9Ur?GZZ%=vUq&nGR?hhkCGIv7IN~ueeL?q> z9Fi~GC99jE8^OA;&a&)#7|xriE}1{aSfHI7Slw*K$2>cf+dOZk0ux>no!M)|X@08Y z%lulFNNLq9!+lKsm}LA_3t!MMUvGGQK&6s)dloEL3(f0{J>+YPGVZi~94Mq4(GF1Ywb2@guYf9u(9mctl`c`ums;h-&QKwzNx zBJHm<*Gi&ypEWzaIFw7m?3mp>T81`_vc^cK(bBPRdS!Ojet7cTn+im-QQFsVE{w-d zNEg6E_Sxc?#^D)k00R`Z;ZEtbUBXrqbfA?ZZrwS7bo2xiymur#@e|c-eq$~6B_v!) z7$ZNqxD#)vtaT7MRxS5m8&o@YEIY{F%*PtDyt@KHFOvaXXh2n-PEV%66&9C$OF`Gn zN~zRD@=~1R@y7f~z_9KS^PSJF>^(lD_Ju>=n%N1BLV`jxGDZy7Ux;4kPIOVeReSa$ zl^uw!I|~wA?F~*JF2lO}+G~4GjW+jmw&a_`d%0txfh-`At;fMA?lUl_eyw z(0M~RU`xL{Pm0v&y&;yl+UQA>eAHs@EF78(dt`9=KZ*HU#pr9h9|>9DtR_!2OP#f;+!{BbnhCSGI?SH%i+9iHn`vd~J^a($eiIy|FF0SA823 z7=`>R+1@Gj5EfXCSmxDu#>j-bO@fY!yf{1XeO3aIs5Wt;^u~_Pqgu+0a$M7<@Pk6q zqIDEwLLOu(>PX-2n7I}nQyYS<#tF=KAq$NdxwA;lNbG#v$vrCOJQK}$@a~w?W9)-@&|sORFLN1nEQ_(? z-pnBDM?^7eUgp>h$Tsl|o6ziIV5W=E!a)zaMQ)icLDqL?aFn^Tl~6htMee2nYb9NljBSWCo7;kB!VvASPRdl<9!#R2QE|my#+Fg|775=to=LlhzB$aGPw@q}A^ZF>h zky2P51!D!($rZt!B>YoAKm2>@Xj4%-Tix-68(J>l$6Z{z6SoZ*K~kF#3fOGzcoavr zJM#Y2I*f0=r!QiiI9mI`42m$nzQKr}oDZWzHTP9guy}#TGWlDbRE@@Gno>l5g-0Rx z7Sf~Zm|xu8p!PyYjzt8gr0*YF;M@7!mqF#uLFJ0Xq^wB1N2@z{>h7q@&~;QSJ}%hm zHPE|&nDD)%_4`#;+kBJ@>8BG-@oxIVVk&u&d4Zo8)*ydSWC*hPRqVNgHn04-a zBK|>fG8v-E3qSA3*1XhD#>LwQMT=MdEDMKN zuSx<+(XP3=p_Qlu&p&_|3*3uaXkd#O-)rDvoZtoxXAOol{jxWiMKanw9Cp9V%s~98 zlm($|PD@b8+t5`UFSI3id))YO_Y)7LTgKw2MBAPb`W1BSfjHX`7J{1z=^Zfm==^yy zh~8Gb;hxjVx+HfpjQY$Ofy@3F@}RM@+|WX!>vf)32+;ABR4~y5(K3-B!O%BvwKwiU z2+LRgfnwXqS94UwV;VMnxUGbtg=6n_iE^|PY4yy`N(y<#W~3<4G*fQ# zpxHx9SXxg-z49nskKgTTX0CW8!B%YwkwdgP=a&2N@AWZb3c~75PnFY{cE_|fjT*(U z0Zmo`;2RjzTuv*W*!zTt^e$7ykV3Z5)jLtDZfMsJ2MB)7P2lFQ5QcVQuk%1!Rh9|? zTiR@7kBCw9Y)=$fPFp(OgUaJ~+tDdhiW)(grrJcaX$~I*V>OclhAte0Le*)ZXyC$qS5UwTuT&y4Y1PG; zMiexyV$*Z3sW0;_aQnsac-2{ueoJ&10ja5-Vv4}YHyIjT0N0`6){EtS?;-dg5&-ss z#NT@H4N#yAj&zaY>!aWCQ=fR$4k3XH4YoK2Ko+`%{9+*V%*7tw1cpdtJSq5ET!)e$ zxLfNmH`mNt@41REX6C>*L*r!z%z29~;0E2_ogA9^llcPjal3*Om1D!b!Znm}^O*&| zye(ZT;4S#GH8lj4^TE^@oFX6Nm?#=hZq*3%=c-a=4vT#0??miMZo1jP>i1?~I#ATP z9RRCfYolo5Ejz*pzZTDHI%c%6JNRG&w<$JtuWaI7R_$a#vh}Q!gXgayB{I}=?l1o}LM%=MCcMlsYomkuI@&6kvN7zO9UoT!p` zzc=?IZ1j6~fl({YXWw3R2ZLm1)SFq(zV9P~v9K3!;%D*rnQ@g@Ku;qP4eA$>=vS33 zc=I0r&kmf;tmXn7T=TjyAI$yl=;Yje=Lg|~k0K1bzzw2p|f@lDADJO8fJz-6LZb_$~OwoK+1 z+fQ6iqKE6L!|A)q-Q865TjiLb;0-=biFiD*?Yx$kE{nya@Ox1LU`c7VFKJ9Xg?<3E z{o@NzzOHbec^2ULo`$5XianI>zG&$+r^&#bWMb~G9W%;FQPo4np3#ki`uh5{%?6}i zF+dxkD3*r&Hz&a44^lVsHR#+tJIWrb9*DLo(+!ZgQcLdb%~DYk6oA-=suJ^s!*Z2c zX@DCcq1yrm%_~}}G zr5ge*i7etzHEa5XNpVbHTL(-8{7E~n?L4zl3gY5S<#C?~&KMxJV)>r(A7)Bq1IISb zx(rgto?r4cuhF8<%h$m{Ol}xLIv;>DQnikbJEv>vdG`(uVdl8fkGQw20hA#~e(M4| zbjRn=5S?vuH7eht$$fCr&h$I$VR#{8ajZcC3sC9}p!dm=zKc-C=N_jXOV|#4x3qVn zrxT(8*n`Qkd3OuSszGf_qcRvMR6Z0qeO*8NI2g}x`0R3cXiSA360cxhZ8n$GS91eC zex05+eQAXKX7xrJR`!ynHPCx^c(-XHBrmvRy`&46QdIXs=kg`N-sm;Ge`@`$^Xg~M zlkqfZHQ#>m6i38+dqe9SZ`N1V6K4o4>bJG|*~%Bx&_cy)i}eB@m8Cl~zUrr+Ol)AY zh!eWaP7aj-Az3qBxk||)mzF-&hmEobiBUKDglO&rdM%n^SPZO7!fv7JzgaU|`EKkxo`BmLzuc+u zMK6zk88tj@AaU(!Dx7M{n$n_*yHxTGU9fNYZl13D*-u=`!8qo!SpqFpz)S}I^Q5JU ztfNMh6sZIQ=*3CUh4v@QqRdQ)o<>w|vd6g~Qp7LTW{Mh3%iqcGBfju~s#PNh>CcZJ zBQ)Ejl6+01fL64*z3abNTTfzcqQi{x%%TJ`mk5Dv7%#LI8~XgY%Yz)^!4YF~Zi^{4 zf(I3gOinfZp8YITX3j>%{>^&zzQjy4TybL|RTWQ$u6Xz06h{-;`tr<}u2zg7_>uE@Di82Uq(fEmtD&maOJO1LR9mG*Pm z%rh+>a_Dbe*AG^WMR#P`-Kdm3XtByjs4_zGNqqCPS%)(FfhqgZCu$)A&VQ{o%j;ar zXzo)!;C9E0vO@!GmQ&p5BJI~0bkx=nEM|@?Twq4EwiumLr9^kuSPn)oPM^K_Acj9z zh#fD2=!OAj8@s2X7y4f(E9y#9B1j3|RQ5$)0JRF4dTlOXEc0okK)d1FgB-=&4^5!hCj zG<5WiLa!XC6>*J3F1zLw4A1@=9ym_3EqC8HqDBxCf zpi$?h+@-CTYZs!$rS1f_D0967egwTtS}g&lM0?P)COEkQaVXsLsa12iU1|dxTY~7q zeWB646VK!Se|()&a4t-+cHh{xZQHhO+qUgw$IgyzYsa>2+jjo1{&RckTu#+ocGXPv z(`$8tWCJCZ`awSV>=3+Y=Eq%X3#NBt>bVloz-Z`07Y!%{`w<=iW`-0edv`H*6ziyx zAas0u@B!j(MN~D&2*>4KQJ#}#$~M%q^#nq|Yk|UHvD>4zljq+UZndcSALNpiwvBR0 zT%|=yb(UW7^Pp@tF-#8AlbFUux{=o;5k~f)zC8#Nki&xZ69XBnAh^e~37n~?vz*8*y0J+>4D9@rmT~MgXX(M z)txTW;#=|sQJKPVj#c$bI-(&aDIvrcAnBB1{Xej9+SsQaFLv^8cnX_8f&gr>w-vRC zG%VU|lRWD))*~xb>RPvt0l$r6!W_7RyjDwK}6svIlYq0*lCQV?pME)Bvghz#=0Mf|ts#ZRV z5FzNSa2Ct*oDOC4Be)b8)T<8y{zFCV8}c|+j4Gmg+?Za^Lxz<1d}I*JipH_{8enDD zs)woYM^rjP`lv?4ssuTtFo|iq2{n;ZFUG-Nz)% z94S*g8u$hv*)oizNG3f!PN-QAhRK-Z4sLZdNWQ-)mu+j#igYXe1KtwqPyisH|T zL>VanMg5@?$=2g;no=ziv&eZackt5TLdkEm&dPfir2zIswJE5@{iT8I#uDx18r*I3 zszQ(m{q1*O8i}HJ8~r&HZ+5S4Mw5A5mF)-Z0P?nqrK!>ERZ0;t2NuLNeE8))tN5R; zW@RT_gDj`G&{EO=Bw<&JBLau5Gu~ z>x~AfBUoHT$Tvi-E`VE)%!x_2CFd>+6hLx2IqPFRm3@zh3vLIBgZl&p`I*d*vJIXC zrW&R92ld9&1Tid`boh$BL#D`MVn7Rw0K;Vsp_fJ{2w?XpW#o{6S`ouu%kO z$$vvoqgv}uD|kEKRlEl8IS4ax7lg;DViCB5o>^DEOlZ-(^Pq}u&K*|;|3K%2(u}YR2zJb_jM=RJ zAeD}Nxo(%6J~0_E*uvn zo`xJu{Qt1R=Iky%=*yOsMhX9P!-fVZ7OIG6O+PO8uSmvE!Lx($m}xJ?!FC7{B`oL4 zY{_PKfp0n_#iK~%c(R_Ywz*=lY3vv&HjjtAM5hA8UwXD-`I>21#c&u;1FkGWjqG#B z8UBh*%hM$H;f?pCPgBh4eHvBiq~mjWPkk$x3}KKwd3GYJ;W8NDJN0Y_<1=NrIDep8ipC`&5+5BdkttzU8b=a7}3`5kSgf z5-%|Y7qnQk4}Tp$P-??~Ma$x{?}M-FQ&BB=EThb6pn3>Z%Ut>MVSPP>SG+sJeoK8(1tlaq=n+b!>=N~#`|?{o zy?Ubzk4^3I_BZ%8^W4Xp!B3IK#t1r1E-r~uIt+m(E$JB?Lo80PIKKLA$t?Y%>2{5j zO&XICRVk;^(k(?U$oTgQD#~h9V`&V>^o+~+UfPw4VZ08OxJ*Y# zG*RVlh>U4X!ulovQ^TL-;_o2Osz0Hcf2U=CHaX)7Fm?*48$SJy#IBCmg^X+xzh8=l zLXn>@&X6(9KKyx%89?5n3$HI8R=3JUhJraR88=|}EYXKuR0vRKz=ABAS$?M(#@g`) z^A89;ErPH_(3ttazqC%jRfFw=Hw0bW1=O0bTB|q_){R6;)e4H>!JK3_2#hq zh6w}?2xaT|m;RYn2wi=s;>ht5UFL^-M?)c)IW$N?ofvh2N3~~tz8XbFdT0_C#YLdN z){qd!MdSxvvZm}OsHzYw4d!!3Jg(|I_9vI>GLGkQjB(V=Eb|rc*l)ReF6@|!<$|bS z{RwREZYQuEGS^HmB{IGr0JzPIb^%t{1L6}>-KN@;5YlTox!4O22lkL9^G-h=STRH+ zVZgY)ooh9TVL?j2@{sAlPUDM}b6{DZN6Q;5ICnh-tJ!haB6(|EV&Fpg*BY zz9r8})MZ20C|2Rv$ZBGorke%z#)}Ph&v19kk_dSl* zQMrH=YOC0er%nA?<6|9l;ltaxNwTqasV_tslO4yKEJNb-eA1ij%awA0E}2QVwC1CZ za#FNcpgtU3-q6yE-HCMt0oK4+d~^UU(|gA6R4u&k)3A`}O*0%sp!UapbpDSJAZ6}b@@&1H7sLIoq+iQ^PF7ccMd-oUkHh6`Hao7nxR=^sEQiVX8yGJ6tyye23L6YVc>)U*L@g8T^f`I;aB9|B%6zeHm7EFA)?_F_S`xgYM3wX z8dqevJK_4u{JbTqC?jYzKNL@u~7FN$d{PAk6Ghc*^H$9 zg&tmq`g~sL98jPmqr^jdH-ZK%m5tKV7KC*Ge6x!z=g)_9^@mM2wt9?3ZF8LAlD*TD z9wRNg1e!Y^G^`b$N)OSV$K17=d2nsiPy1Qra|$OJxK9D@=5^Oj+J7QTNy``Xo}N$$ z;mWAAouE~~3#n7+JKs{00hT%O*ZY`O9m z(lv9c_Fc;PQ^;ZD^dwj~T(;&9+(x-^!6NFrvD8B!M-SLgwZWrw)tbDa zu0U)y{aYNwRTzoml)sfyuM^&(e!=)gbs|4F!|uN}>i6qWHAEzN@ij7LO-{qWhz;jm$E9{Dvy@h-&<>1G1pdh9|gK%zGVaX>Vbuu7m7YLD!GI1itukQ?pZ&K}m(p8iqIMWN z?EXf_o5%ijk+n=8LxlziUJlBLyy3SdRjU1*RX^uLYnrYB8XH+}%e z1tcC!ME8Ub=(98g>6qQCY(JHN;kO;G%II)Fa=w?PQIRi#a?%OM1lZitNPied6Pj*t zwJo*Vo+(u0uU{T8Kk0509pc}d3w#*4w`(G;)}Y9f6a_(c3Y8lxhl3^756uTCTnPe0MnoQ{p)*a)frWBBYa$J% ziCPw4YnQEm=Cf3(Q-kpGA1A=Zfj>M%c%%KVP4I5OV>s1xBg|dUPzetei&79pD*p}8 z6nm%6$3HP3SnTrhHDOGK4_@hXhB=q4+#HXkK;p z9Q-W>US)F2M>WK0FqRo{F_3DcHvpc;6k3}tjtQ)kU12Mn{DGz-$n)W`t>&#Q{`}GJ ztA0r_V+H25#Xqph0ngk8#fVEA%CR^(FBk^qz-I0x?SYlT&59ZI4~c@oHMN~>8V=m| z5$jRZYIQ)j%^>|Dx7Xk%_&d^wiEkBvR$`e!*J+ zGerghKWt!S#h8;RpKlU1JoHs#<)5T#`vy;#t408Z>$hnXS3GdZwCMgg9-KaX-xsSE z2k+(R2zhI0W9C4?U!*>s* zwWy@B_Bd*W(bjc-A!$o|zsj%x0e=>oHV<=#YVP@&)ptC6^TV0uP}jR_nk4UA_g#|1O1hxLEA*t8 zR=oM9llE9sEF0oe^}2w;F9E>Os8kN^9^j?#$_9Vu=NO-_^0#!OcgF=2|NEbQ9M17L zAhIou`xv{Hp9d@?+G51Cc3#+c8#svNTp2o(I_E4DNAm8(Yu=+I&Ea&9RPII5o*I)gyNfgQbpJ2(2#QcPT`<{`9EHF(rGC zwU93iuv|jfzhY9`crQYvf$1@f@d||`H!%HaQ&0;V+=CnZ$5THWyd-Ec;+F1aZ9%!+4DNx#GV|o8E(wqT_+LDnQb>74j(dV!5#dqN_)OcDAI#1pk#&C} zI=spQvW#ROdGi@v#$uwUUPABEB9m&xT?e5PL0h^h2xBDlnqD~pVp>!3?x1_(7X|+$ za;|&Lv7k8+r?8`WYdQFNt(z6b3abBWhq#7W%aLSo?!@bOB8d7FjpkU-=4%Cpxwh@>5xN(*bQ-L!4WZzd(u-#{q$7Y zd|V<``B0;ix|NMIv{(CH!t}-@*7yb&mLaI|!pVjxfDZ<7osT(A-G)GAHb6!y_zm9& zm!?}ZARUHXUXSsw?yYh5BHyR5u@QhT7$Fvtkad0p1VyQ;SU+(Jb6rZSqyhIUtslI+ z0O_U{F1iG;D0c(d=!-{H@l~Hx@6a#UGidiW>pFm*v<=&NIcc{#+gSm3Imw)V$8vqb zVK2zd13ho%eV-6HK)MD&8QmyNsrK}bBii7miZeQwYL8(O_zRZ6I9n zIGnC5Fo6TrY=R7<3n|GoEyURgO|3;A$%Xy}QQniN>+2}=3P#N0=E;{b+wZRd19HH_ z%j-d62_F{TER5t>$);*sM)VdzCoOn-lY}fPf^U_J2!sM9XD9pD1*fAcBs7OO168X0 zy04;vD{R!GAH^Ny+H|cdHA>~kUp6-m%o~90GMG%Gwv!)GY&@$5lWnXvUCFj{O->g( zDOb({OoKJuF8iWoxI7VZg&ji1Jz_CEf%zh|H1(Kb|^ZQR%Dc0K(Qp~*eq*tM+NcCN0*hNF7BI>J!Z|!&W;Iy849jZOO zEU6z>sW(KG34vRhV!28pki|@=&s{|VH-59pMua^L29UX7 zE((>Ua0Mfb7QH=B>09-4hYrf--B6o>AqSILM$;y0+wLj-?1YY-sOdG>No6##OER;8_BlN;OC z_3N!^HTl3+3ER@{NHqZqlbwsHdDo%92K$-c>0=}ztiZqPh_Rz(HUrIw`eHxO^j7F% zR*xTXdcVj`)o2>K_d3|$w5ZCd^fs{qZwTxcNInb>UJGF(C#+Z3&Pgrf za{cdK38G7!7R_mW;<=DK**=HS?IeiC-;}>}H(7>oeOA?fiUccy4dC1~D$0SRRPOBp z5Fyk#hcqP1j=l7KNtyY>-YI2}&*f)mOP{5jC#p_T$qGb2DmaxZ$mJIBU_)HHB|RO{ z#G4_CfZk5GBCpvD&j=zKEp#67sC&gTm5frc&uGOH;}(C&aPM!_i6rlCJNrzGcMeMt z-zzD_bf3t#(!XK_UkYZMPonevO39H;HQLqU^JAckCpo%<{wsyGYa2Y`SCUV4xD`ob zx+_#@bbD9FMv8CYe;!RKeKDdDti5?Z%7Xv>(%L_2mvQ#H*WrXBoAJ0Yl&>B-E;^p{ zt(EU%QUPpjz`0-k11lV7A(=h3Op3y8b7Jj49@PFWn)>05H+arhtSv!Qfa+I9;WU6^_5@9wGdQOU_A`l*ChILjQRuhJZBH8>YvK z5@xo$LFe>Q3Z??1NP#`$yE>&wH~d~Lz8@Dj>N`(*JB^|}h@ha3yH?I=kz{pf40;gN z-!)&ML`G#pOiaQ$I7)pSb~pT^sK@mj3&oLh`g$5d@z0H17S2pN6->9b%;F>o1GO! z0%v4IYjZ*+MldgStXFF_|M>k^7&IrKL#wcJxm*gfE81ZFRcWZ54c=ZbIZvG$d1z9u z7hzpCmjLc+uQAgl6vJ%Sum}!*h2!b;``a zasd6}jDkQmic0yWsQcH&Rb|Fr=JR}bAE{#6dK3(%CLQg|oP04{suC%J@C7;IZ^dFS zL{M=5F*-pC{X2tf@2Nqo*+uvO*i`k%p1Ocz3wHB{XQKZ%ks(QVJbGbk7n2lh4}U?Z z`2e-ieJs_*ySuE!JZWksn+`&)pWvqpmh*Vxji^Id9waklhYoMahLo|Eiw^Zf0Tyt^ zXO^off(#~MU z&1KpZtL%U53}%12swveFimaS}^sj3@XZU<|P+IxCcM3%gb+B!H1SIF(-ym8PAc|7a ztCkT03$)WS96cHlEhKwYqq7n|Lv#5hW?_uRTnRYJG_0W?jp}q6V!-OPq+QVZ)opz)5Tm?VyUQ|Z$xQM zCKv#fD;(U}S0SBS`nO^bk&Z!r9$3{HFJZw3J0S|G#Txy@80Y$GZA68?4vbkDa#_;T z(4-BVrlxWk}y-p7F5zvFN8d27SSSLI3`scLS{)T z>F6LUE)S2Inkbd4@k~D96js4;dTm6t(~MwRep|xpo&N@bDp? z(x9+lRq$*?_DI>ZZ#k*f5w*!7y1Zi}o6M3Lx&C=hPtQq+nq45|?+NQ>hJ^jC_(Mr{ z+1(Syu?Y@2V(jy}6`7AI4{S!Gzhb~(tDQJ&q{P~up^RD>zd#LVlzxj#AaWM9MQ$_n zBCxkelLcJr$AbE1KJW?lSrw-^;LaE`I*cnZK5aw|ab5<^eZi*)oLJ@yeY?scj&xWc zL6p9jNNJ1j-PNocYD7tSYlI4h7g@rpt>YCh=>*F%Ugg5xxV%7fc zDG%>UZRvMWxf;C7(0D&Y-wC8?63VEC1{|al4x*3cR%yHUn7|Q}m~t>{^cJf}9{jEF zRi|ULt2b)YJBjiS$)_IZ(`N%1nor#r$3k`ii`16dWjtb5sz|=Qk|ymF{arY6u$flh zVf{=Z(trp%he{+i5nP`JZaXA_DqAl=JyDfvYQ(tg3CIoixu!*8+^B{hZk*~2cAqK3 zx}dtNP!WMWx_ya9lLNQR3t!phH#l!h(N1hf4wGm>@W4bsMG)@qc;sIgy|>7}c;RSd z)KO*8xX4nt9ri0*XN9!!VA&zE|Je!6modTy?61kc^Sgzi6@t7Ag7NNi-CRa|=79NTI`k4&hGJ|T~IB%7nLAU2uGw|Rprl-|li6L5X*_z?E-u_mKKvyY-OxW4I-@!sx7wHmwvZz77+h)4qW6l=J2K7*{5 zi3$&Q8NOUJQZLVEV`;gM+{LVccL@AIN~4@t30M+`H-6nq?VzJn2u#|2g0gLqM^yw| zP?UzfbEx$sh_dMA$U!Iu7X#0u^rV!;%E^|dVt3os%K!+0)YO$`Jg&Tm)K|0Y`xmfc zMPtxOxNJQuzTEG{s<1Yp%`T>RwrMSaeRsA3e&80&$*mT0`=o_^Q1Ry7(~r!6pZ9>K z;h^{Tfj5=Ibo!_bZ}J*skTRyQ?r8zetm&hHXg}w2)N)J}h@9N^))4sge2Sm?r+=*& zH2NLhBtJV;OwLN~Vj@fdn75OUg$cDL*A4`1i{C0I4>S+eJs)@m86jQkhRg=DGG-8B z=HPt$XfHL4^nnPc?>*#!h$U;O75X@`1(1*mDeF0pV2d3HW>it*w$?IQL33>hz;|Dg zHExK~AB%uu0b-ef1p@a*yT0FHz&h%6%TKF_HizdukO88>4yN}yF1(T_G7TFjwqz?b zyRw98oliim1)Sn3`?q2N=X^E9OUi*9+{1t%QIFT2R>-V%3dM&(qE`b7I3?N9g#jpY zmsU5UG|d%gr;0C2~FbC0QaNT%Z|- zF(;uVMVoWKhl1+P-UwC3FYg&QAlJ!#7)R8l)j$HX61oE;7m!gc4DFrrV>6hYMV{4C z`tOHXk)H3?VKGCVrVgLfvoM4Psarbp3wW8DE-$SbT=g=ouS7E{SsB=x_an+Y8<^!G z(7c@)$xjDrmuritn62d&HnpsgFa&w!Lz1BtQ(Z5xRNM9kmgu?ke)AIChxu^EX$&k> z5bEb^b(}s*@4qfQtdX;zdLokzPlR*mKOOld&+}Ka(Z9>juIL;3rkltc_mGR^Uvg?XCai??X04 z=GWzr!uT+IeoVMI*BVyS~D7H-r<iySo>> zZo*z;Q~%L|JACFojS9tuRtNsvtnRr*W8YFQ)-G$o7TX2Kx?A#tMeJwk66PwoZCQ6q zPRay0yCj$uE}jM9u^0+XN<`e3i!6n{5m=Q$S)Kvma|1HY#gRQ6`{yTBg|ulUaDCLhk5Ba0nHDq9j`?Zta3ST@uex||1kCzLpS;^X?aUoME%;& z#|(+l$e%``X!OrA%=^pkb))|frYQm~a&MrG_$^ZR!u=xijEyElSC%a2%KwE4bVQQ{ zxcgp#7ayU~nS-ie%4>pRSgzM2pZjl6Ia{RcDoI;VFH*|esiZ`crY%na7s8+n3AVt* z2z#8H@PG<-omu6GOo0S}D(8vo61i|DRt}eiXNes8I%#WvAh!MxEJ??4Eazo6PkTXp zvkem+9!W^G-sm_t#i<2=b$}KJP8~}#w%C*~IUQC+|5S^2SvT}5Y3=4U)|FerfE3U67e8+_r{&)p1}Gwh?8a(U-}B4K1wb zyzB`o5PV)Cm=rD27`9b9xc7tFBUbmGlLg_Vfi#8X2*aBhngQpFq|;4jZbj)E`Ij&+ zVzquz<9f=8zN7*2Ul1rmAW8;=;CN&JeNY(uRdZYd{#sN?k;f(+j_D~|YIf(*25FAU zmlt(iOQ)SYyZ3v)FkKon4}g4B?bR&< z@`PS5dU&a|i&8l8i?V)JuXdnjB;2TIyz&xo=DqZ#Uv}a-?rOF%@x9Rt^LBLjAJL*o z&%yMTP<+!&1u@2g?ao7qIF0S#R!ukUOzNqhx%LoIlIMps3p@Q@b-R%H*p!H1v?b2- zkfC$}MM-8QP=Wl*)h9L@@!F89b}$}&5VqgJobE}#vA@&Jbs#d(OC02`fBKh-O)o48 zaW2M49|m?v#?(oqrkjAph(K3_ST_NeVDJ5JsOXAKd+uXX(Rkkz+oUsfEA+USKle@m zXF*tyP0pl)@qn8QG2O~;XY*HYQiwHZ!*bb);v>r2g{R+{yw>KnD>QXa*-?L?*eC@@ z6}}OkaLWxkn)@cyK36s5y()I5OQH=FSUM_NLuOLNGLZl;@51=kX^ORAxqclJofCv< zcVB6)>Bxf>@Q-|>>2&3iVEPxRmlNw#VXnSkO)62-2%HeW5E{rGAj6#mKwlT2U8Gkw zCtYV1N)ntFxM-;fpd(pi_;gge{;2*Jv@sBb(4{r-1NY()z%-6?M8ZaGAvm+4ou#kb zp@j?FarTYKQeaMC?D58f{ohcmFJSO*-0NRJ+L_9!Ms~Ph%uUW_Fq{YU4nG_(n&d_L zKfsf}CD{X0I)+C-bbp|A5j3%2l@J2-Y`c2SYX}^E<2p1=5voxUu@=f{$w!h2+WAK7 zU~P1My#ga>CLC&FvG_*dZ`Za!+qWUX6pQXFb4${K+c-GG9~mw%iTIr~3R0vQCi_QCa`f5g&+q%|Vw3!#ioTnp65$7R!XVawpn{w-y7rwy%lUq6Ewd8#mh zI*c#siMz5>CPFAE2xTT|NDZx^`4pPRAsdA~3+>lqVR13b_on3ZZ;D}X5uT@1#tq3i z+}?u`Gp%j}lozG{m(RXpahbWFB9~rf=2&DP-9O>aGkZlB!3?b;6xZR|jCm2?fzJ*s zNEA5fAu~lNEyT=c$`A@n4Cmvsx~j<>GKVz0{)a6jOE6s=Y6<5?$%KsUAy04`lyYO^ zl7_<@cWYJNLkF3WH+yyN$CSCp&ale5`G+c>EN1NkGK%h|K887j7B@AvQUvjO68K^hF_#%fTz zoQ|?+Fl_qSb?U*LQOya$3)LVcY^$`WFB4ZkhEyiHewoKz)5(T@ClnoW+V$!hdvhS> zK={@5!7X_3?u-U9UmX_(Mg#CZM9%(jN2zduoEnviB%OIyI_&`ElhKXrJHsyFbB~Gt z3g&lri2hv?$^Up8^Qc_Um0CF#(QP)SWNCm_ee(s;Ks#6R1yaEjECb=W!fQ|s3GPD+ zG+w30rcb!Hk57&Zq>(s-Ou|ic(#$4%(B_G;tc^5fcUS@jemVAv&Tmk~TL2;IdqR;v zj#rt#xa&yfqy2#ru)U-Y!F(u`M9y|eXJGJhWG=~7cvX!gcBM8k<;)N zX2=6W$kmc7V3v8ss^e|yML4J6Jh#LAD3ZUMHdEMk@Uj&*hSo(gAdpaW@JBW*Vuf)n z=~1nSmE%6^i;wA8HE+xL;g_Ser8NAzSnh)$$D7_drVj=WrxG*unzn5=a>86iXX`Yu+;4f205_PXk@l3goo-y)6+ zS_e}79H=T6ORzVPxb|3`y{w$^fBNiQy83TQGy#7KrDFfK@ru)+GYGQWbq*U2YrQ>( zX&sW~$MMEGX&{_TDk5AowT(O}U(y3(%rb|jic`-4W9TOcdk zAkB9EKrRNTW^gLQ&3@Ru+I<;eHNoeH!nNhww}DsaL2Gr4;OTvvC~*QkDmupn3X;ony#BRyA&fncKq~#12)QnW(Ym=USNADmT@S$&3na|7p@C4ImMNr1QeuxR z&+d$_u)6)HBhYejh>9)}qv$fcNW2T@ks@5ltLm_+J^=RbH;LC&iw__@`yEeFiQm_1|k=BjyP`Bfh`bs-WmJ|NQD<;sf_;eSkAKc`(5(8H9G9d zod8G$*#pa?h$gC!MxKCMGX6yLsBZg#a5K?s(2?Kl?A-;<@B?^Y=LS7r6U}lx7?1R% zg#3q3sEM>aJsR^7w%q|#6*PEILxi3q>#?4^FGX*(Hje zRK1^HEmPfWm847mU#9f+I`?r^gzqO${`W~l$^}`6_+Drs1Xptd!Y85}-p=~{i5v&1 z_bx6aOtXKi2}{9Suk_$~59viq&~keN;q{$ZzDElUu&~GYn%I-_d2JoV1}vEmBY6a1 zM@P7#i__6VEYB|5%7J1|U2j&-q&~u4QNYuzxO0?Ig&dPxKjc6Sn}X>gLhj?2OU3^< zBUtyB2r6+4d8Q3A=pd96Ly$Rr4h8szAzUfofZ$ZH2|lUlo1|-%1fMUI2i$j2$RO=x zTHn~^i#kTz@%m@Mm6u{{;khO88l%F81vyOs^YM-l`{L)CAn_w8Fh%A;lw}Mlge*=O zQ}myoFrn-{Jz_@Pd3(i*zWpB;_wxtchFR-VWab(L=*e=Zgblk`j--ag z8P|etW+-&`3bMa;B3!ajLSjzrsvj%=3sY(IFtT$EM2M-5&xI%08-Vs#zCog=X#MpG zyM#Q0@4*gWhA<)-5dZfh$Tmd#-}}>hcDh?LIZT~4?`iTNq}*tAz6>`oxR0=LeN^!# z+Jk})J8E4vPf-NFkg>UmW;QBa7Z;)lkzA~FYvI2J`&^W>oBW`Dk00seh61BHb(Y!R znH(ODizQ;MBRx1;BveW)UP!UPUd#lKM8Y(EU8^4UU~z0c0C^NTP6SQg^sz1MCumu7 zHNp9)^V`Wb`~2vLM0h6vTXC4+zg(X6&$GdJx1jnIAx_aFWD)rsKt7+Z^* z?v3GBc}1NZnP;%hYZrfC z-Dq{ASDR|$`lqGg8OR@8T}I{rg$@z7rM-@$|eKhoG6R87E&?dwqc^QLUpYbhg zyyZdB?vL`2#~z4uL$fF(;;%K{>A{JKW(Of3PrH7oI~0op4q+@{Wosh=|b?D*XsC!4EE8O zZ{*Xr=9%}X^2CS%{yM%cypUVeu_4&8p9h$o3vqxGR)H4@;gMGX;C5`4 zCO$3Gzt@-+AqmKGlOs`PHSls!oxX_q0c(ZRV$URnuy^-9C7)mvxFyO@f9no4H>rNp zLkGeDB=^kOg}$Oj7`}X96@U3*EqJ4Z^Y!7zSvS8ruN5So4-1sLQWtd5j z%%HJ9WEfPkBHlSPFS*ArH7a{b-hzy7!tX?!mss%Hv&4GDgnn&T%l7OqmSqs%+@YIR zWWpK^UBM^e{7kW~-Hs+%8g)Y4+KP6*b#dQ-sKQz+?k#t}BQM_hO3}J>aul?fXql#i z@@N^y#ZX&uzM!#plr-P#e&nSb;P1m$9>gQ2?CGslh|pNKm}#u?{xmL}kOpJcCy93S zQbFrxtZZyYN}#mC3+d(dEfmMGi1wvEI_{8ucvF~cG{i{L$8LCw0-kCIcY6V#Gm<(1 zmC0a_+32r)W}tS|2~_Kl4XB`mz^1Bf{4qYyKn#aQW*OIh&emcb)0g0|AR~5hU;Gf5 zcx3=GY_wB0UIaa%sGWX!k0HW}K63{lLGK+$wrh9v3)M_9We~O-V~7#R(0VMZ9E2#$ zvCmF_=Aj$iv%{~!Z7o=dd!#kBdalv<%U6kr>`wz~vRSz#dt=eT2T+nu`;LCSZT^wd z^JlWFA+1^gLI>)OCx9}jUn(jm2-!wQLfVV}bM+$Fp1 z$yp14;D4MLJFX>ku@zr2Jo%-|M2})bI)b(IMEEvuDLH8CZSt=2xU5!Z@QcTIu_iHH zpkNFap&VXn!4Vx3q8DWM9QjaLhCQ=iSkaC0B29q(O{aL%hD+r3kTO^bSIl~+mz*)KotN^XBm;*yPo+m+(WaI&LCg$YJ9C`vFS=^JMk^q#iQ65;jIu*n49B`h?z zKQ+_+tw(Zi&C7aNgM?5dR7PR#BG7i=phX&LNnUr#kJeJo9vr#}h+!e)skME(-kxu= zgiA~rx-Z=e!F{ERQU~3of-?OD6Z#Ot{zWJM)HOpoD=NUP@!fNu`k+8J!RfPm$orqE zNb_PgQlQ0c(TdljYYa>cs*?L+7o(G9bUN_1Aq}Y$E|OJ~OE2A1Nb#gH1m(p(H2yyC z4L#PIlQ4$ZJp_4&BAlMj@-{IUZ4X5?D6gu!V}iKPJ_M#T>}NnCx`Upm!sWRCQ)8_T z0s~){L+g_KAB)|^6<(f*9BLSb%iX5ASeI7(m$$Ar5WF4d1SDEe>UlZ4XwkS-l4O2% z&cKuDF9leMcmU00d{@me7tHJJA?b1dj>w@n37~A`cGhf7ZWb^OBmPf*2tMsku9+yQ zVoC38Tx_-DOzAo5hKQ08!>r=ZEG}Vfjcj)EW5>c5)~HoNo!A-H5T}s(*Nx36AfQ8G z=>?(^M~A0+;`DJe&H68n?#Ljj%>cc2-YbPmH1m72$yjd5Lqwp97aU6oW~^U!@BoIq z0%145o;6Xxu|ufhf04UFo1fuaBNivj`@>u(rDwV*aoVpkaYhlRl3=<34Qn7EVC%@u zuVWp-c2qc|wLo^rNToqv=^}WhC_jj3l{kQb(9`##`3MpojFtNyejJF9+JwsiUX5K9 z7&2VQ6V4APt4VoV zL=T0%_lG)sn|V@N$pBhP^8`xK3JDVmKn5Hs^;Ob{V&9r_>g0`)it<8CucD|WKelsD z7;58?NWqt>!QJP=7NaJ+IWud0UN~a@U|s;nCRCMn;InV)k2Wd9rVYzLBmZYisg``-n*D?Y1);v^-Gsl&I@vWbj3UtW95R&mrY4`CRlg?YB7oZ*10N6 z{3T4usT&4#WcZSU(`S9>+T6PCTk5afAl}ob(xU^0bfyE6xO}XZ_B8m*v9=e`1QGhL zaRt|n;mvv0cn6H6cDTk%RWOiGPXY%8;IF_GYsT#BqHu^WpbgS+r8fUhTsnwrv-d`L z8g!zed9yR9ovu7jkRaNef1k6J{9xML;=UKcNPMELMe_v%nIDh%pIr`1AWR< zA%Wr)Dl2@B8Z>Ik450)FsRtB=5e;aXh$Fa#1?u1m(!s_Rf`G)&9L@q7!fg;2tR9JW zaK?wz*+xO}(1TM$WjGsj`XigW@ahWeoa_oZjji8Jp>KKgork;S|NOQzj)uR+XU+A4 zrf|8DX$PE!a6YVqsO6x3d~I+VsD)~08)Rs*ljo$*8fi$*1N_8gF26TJ{GcNP%zrA( z`WOjZ+1(}g8JJ%<+PPK>1IJ{HYo2jis~O|)0-MEtKTWi2nc0|5lsYmw76q|V zwN$Zoaqtx|V_!!w=kp13f?r6)cKLjb_UPf^)*h&-5f+BL?}*WR!4&3k;Erg z);ccRQ7N~sJ=@$@Qp-uPVyBDuK0*9)el`*|a3`OGCRB&K#&#Wi%=*NgC}*>2mvXZl ztf7jMT6+?*lQ_tBjuu^$^`%CHhL#}Jl*iC&d|$_tcj9JPbePn1wiuo_uZSrAC-*=o zOTT*TqI;CfX!uV1a@lODa{Eo-WmJH(=w%_;vF%=%?C&y9a=}y;&aRBZdQ?#8Z6d1v z&6|*amIZluD4Q%-)CeQ4d+VR5xkiKqQCu>kBtUlEtL=qCSL z*1H&lKi>v+icipCIy5M{*rJce9>Gd(6U!r+^baO z@wt`eM%&BsIV)WG(l&H29_rG>D!In8YvbSQ*PRn8r%Xsi{6NqcFk!ihd#-qsBDuwE zVYES3xN9;{M1*-%NXgDX(R?#N zle$_Za)+SwmO;wQu>e&}kek`>){c)232wg&T^{+!&5>X16*<`hfQAb$ZZ7#cx zK$cchwFNbrK-_E0qWZwAr83H&SF=V&-b*3`eN@OSEl5nP7K>I2xfVlO_DRSV`zU4) z2IaK&E=#HeB|Xt&eJDkwV|1!bItrGFA>J^?G0!aoI7)i!UAode239We>LL25^5Or#?oIMNa?zU1Mf`ldoI_BIEK>hF_^aW(`qf`0h*e!X?%~@7Ua9%0rWe#*{oZFC zgLb^LYcH$tr4K9&wza*SNI&q9XTufpX<#ij*8&+6*@PwKzuKpu*IENifF}T8fE`AJ zT8B)47Y|AKQEnq~*{&6lu!2{MlP?+O7)MKNJnmh7GkZm+;QBNRq15L}lvxOi0u91r zz}#dPJwz(@)#5H}l|-ii`zJ_~h;A8NYpWvfv>E+U35f}F&K_(6){Eu1 zJsxf2L>d+77($Uub504N`|ad=y*=1cy||EH7n;eO5F9j-wQvtG=G;@gjgeK4yK?S! z&8o9tR5@&80>pWKWkz?e@;9N|W;PW1b~BgfG;F1$|J&vOq+=(LCITXSg@8%G@mQLD zL^%V+=2Y%7n1(E47&~sBx@{I}`OAvJJAHe~6vrSLG2bBTk6yUgn4;YL{Bn8n2;*`y z_&WWqkvU`wxf+&x#v2`b_DT*Tgd$pk-Xl7yP3ri$j7PNswp`a;NXpc2{v04+iW7Hy zcp%d3m?!{D(h`BeQ+s;fr|-~}4u*|+1sf5a6Fc<^4$pWOpU@$x#lWi_$<9Jjx@H!E zs7JW&dR22f*g#}Jr#mmL>v(&Tf>dV}ZI=|oJa^ddIs|!{zpB30C&fowki?}<7_!x1 zA)6m4{cm$7P9qLw-|h(By_@S3OYFeOkUw4T!fqiVVFuSJ09l}$aH8~^Fa6$RW zvaJ3hAz88A8mHOFq@ZiB2{1hx&_lP3HC*Q<%BRM=u&L%{)arSRhAnf3jM8k%ciR0) zEGP~jTUW}@X0{4mh1Js2K) zDq5$CT4z@(L4J?fa*`%|zssoIXUIqUbGIv7OK%l==bI>|GrJ-RI^7P^{9MNvw|m*F8~%&tdpz;*ScA#lssSMB2i$p|6RGXU;MW%)jU(Br2Zfk;c%L)qbvpYi zCd~)nkwKoWN{t&66kEf{&PWe-rDk7yBw@n_RbOy!AQBp=V6Qfy00qWl7UUDj%PwFN zeuSuTjsWL}wT*+NykhhCj_R0(qGMRZ{hgAAIgNn6@rL$#zu@~4qNxc2RKV4Aalm^);qQbQDq@d#m&l|y9B+&j5yIU z?#`XpvAZ?T<%RsHMrf(yB#NRx?wj(uP>ANMe~5=r_#EAXUK$^do)9Pk0uV@-f#pA_ zc^oWU`2zTk$1AAz&{gU?rC+k zcBq2?E=x1oe;Urn_DK%;x7N%l0|1RXP{8B@_%|Pc23Op6IAcY|Pn;VK4xW^s6j3U_ zgn74Fu_h}Lxh}ZALn5U5SY`4#74bBP1K_y(!Bv1-v4Qhgd2XafE5Oa}cwu`SRl(D$ zozkzkQ?w910yB#mVOec!!(v$m*lR5(HhL9H$iAuryS64a0RbmhA(%Gx4p~7(H~C}Nwxa%Dr6n<%hTuaN z!wFdo&J-d{Bn@Z-NWT-d1gR2n2E4Eh@k_|QqfSsw4HU0 z(NPcM5Inl(+Hj~%hgK0arZwM&{v;wA1x+7UQ75E{>4NbVU1%CHzW z9HVZqx6!}YAZR%O2gJV(8Z0G?Mdw5%6sdEJZO&5Ge&qDjj}JY5$Ob!0Oui|nprZYl zyD6hp>Ual{`7g^~V_tz0cC|%DIri+5K=iQ{rrz%9jpoQMUq7<7GnP|g?B*q9Ut?3K z_;_LEXNFAnPM6G{k0jEBA#g)iR;^9n5L|1*k7zrtkcn`Cgljw&actDrNHz~sRbH1X z{4?>K&QnMZRpQoF2v$YvD#%qHJzo)?OsHFA9Iw;wF&9*`gduy>QY9cc#v1U^)wMy8z#16-I%}7aMvtaNM?{*+M26n9?Ty0!k!}0sf zTohf-`&s`MY*9Dm?ZnFuFz_vgy0z=}l@pGpZr-#_+3A={ySL8q;>56TdF262#wkqn zT)jt|4Frq<9PwK%!~c-Zs&Cb*!b+@>Q(-pf5i=T+Pr7V2?8J4QCi${18_yXJ`<}cJ zb!DZ`s-I@^;TFoWUNSO%|F6RbuL6|-atIq30rI}Td&3=5h){6^%0Y9t4^-d|Bj0o0-TqtuByp47y3Qxm-71cC&jGbz%d z3Ka_lAVPsk0{WJ~8^G|?x~p}dR@L5eBWjtG34jYg0iNIkDu4|40B*PdlR!iGCS(O) z02Z(SEGPiHKn8pJ!33&&s_-FcL|2Ks0R(Go!#(}rf>l0Mco4LrEolgxhU_7!=a9mz zZ?E6N>GE@9_G)_k{|aV#HIQsiqw7Stf4f7PYY^CUi>G;C)NwW|c0OwAO4!kdaH?7Ax~H6-0n4&eTRc6noYp zjGk%~Fl)pP4{pI;jc5&CeA|A6N8O@*o;!Ct^xkKc-Sv(Q;JcA)7%--&*jZ34!X`$Ky{CUe5bLFR~;Ux?ic$XchWPS&+^Fg>RyQYUz|Nyb9PwKHe?0b)&+) zn%KHC+?DCBXdz@!e$C37qwoJHMV@E#W<88hLvnGc_56pE7tkv?>7?H%x3F6XiX3?Rq0-mm|wqXo%M_IGDpb_ z60b|E>|JGhT^QGV3g+wi2=mm{Tg1i`N}6G+1}1u#0NJjal~)%x`^`JM{x*6JGNP(mQRhC=A(jsMw7fVfBuAwZq_!T|-7$D4(^b66bM4lW&e+ej6K2{Iwp9j7Y zZ*q+e{#GTKGg<*!#5v@z*Ywj_`Kmgqp#srVLv^kOnKmyP9)N((R7c{T;z9{4;(B#n zvfPb)YUh>gEEK{H;+VHB^>P`A9Eusfg6ZC=>jQ+u7$?e!1|KTwaU2Q%(B;z#ky zLEs^bOHgPc`r2>_p3Ou|$mImeBNUU6qI2(Nfg<2SEMyQxUg_#Q`xB@V*CN68@fuXm z9dFJkvjW<@(mchtUry3cyzKhKg@4204WJz?sADY4ZG!?9RZY+Nq`ZVb{b@~H0CAyM z%p+OBy_%0qI){rS=Q4`mt+Z5e0}MpzY(Wx3PR!3eJ?DzX%GGJJCk?_jY=M07SeAuk zoy(WY8ykxgw!SZ-EhG-TXalv#p>_|bsBWO#^$pyqITI$z_HUh7JONT;Qy+OXYx2>b zdt~B@ibC_&YPT3XP65XEu1As=j$ZH)Gw7-9ByUC|vix@|*|!52mI zkTL0dVTI)@T&t2JODX91Ag?J!ZMr&ja80)3PW zWBa5FyQ5rmwGH?CYds(wpr)EwyG&%<< zVeLxCmr&4zD#6Lt*u1q8Qh^jPhz0p}gOZiQr_+umvxq?m68QJc-$0_^ezyJZp+ow7 z(7(`Y9FX^F@P*$K#wv9O#<|FL7Q2uW$f7F7a1GW06EWEVHZ@^fAcg|Kl{op-zlpOT z&FD-*GMmS~g$&S3TO_iOy=IB|0u&KjRYa_gerX|8uq)zUMA@U+TbrOn)oyd>2F-mK z_Kk7Yzq>XqVzCT{hfEFIWni&i+whNOSEzUAJ%4VYBV>#1y=kIZB=#yv527E~o9Z3+ zc)M7~{pdD@@;Ug?sB74p(Hq>Uu7e6)aHEvzy+T!+d%hk2DEX=qyK;4Qe?ux4QpFWY zD5csY=*BQfRHyy%+-{QoBs|sy#|go-=Wf(kg!7!q>P9ko9gUor-iaP`kzfHNmuFv1 zUO4B87^@rEn;^gYBNr%5Vp8QSH^joTAno#kI)(nnAe}?3a*^dJENG4(Kgm)@JREFU zWXlT^hgYf40QUZI`?IKof=;1*4pweqi_B?IM0e)HalLO@z+Gpct z9z^&EjU7aH0Nh0xH?tV^HY$Ueku|b9ZH78$QWGhY#GPXf0R2 zaBcM-h8YB}m)R0hJqd;Y6$$^}^O0Y0WCiAU9>KuZYz1*`elh{F?mqG-n;dllta~377f=_za6;S=P2JElpio*K^L%@f+1MGU{0~y>~6(SXQ<) zh39@)V$X2hOCrhykw6xa$UYkK`In@edzVn?GrUznh_g^6H*_oY>^{bb6FoWTIq}AJ zzKy#rNW&uo+Md0`(GD7j<}{{RhyWQJwqWNG;0glMmAX|9bhWLdFj@x;c6l7*ASFxZ zC$N%E{xJRx)Uqt1M`dJBhht|ZH=rQr6c|tIHgWsd00)w^d3-d0SWY*LJ_vbD`kDo`Dlqz!jeYwe=*1No zL?+kNhzyn$Bx!{Wf0bk0kr)~QK+N(luGfQD(az~D;dXE{37r>roMn0_jFmXy7aY58 ze80=YR3Mq+E^Dg1IOH$}jFDPqi`)PJ0N)z{Or``hD~Af7&WK`OS9E-dx)1tJv1=o2 z%4RCa>uROD7lKWy;!?p&!+jBhQ3PF$u5FTeMw%qP(Zk|ir3yXH%~sah(_3;i)A4~4n_Y~M26 zsdX7ix0CX=sB^t)U6a~zGPbD|JkQv6IXzgg-dfqh6J2dxNP z_7zFRzE{OzOpN0St(YP|gMqV$Zo1tuUCoFsgv?>S-OrNQl2Jd=kmlzrYKEQwu~eW? z1%g^FY912NI73q=^(IglC~W=mF$oxRlhui)>gOF?^VfpvkLO(sA(>sbKvw!4U`vbx zyQBRnH#m9#s-^A;MgT7zA)WXmh}McC)J)H?d?vN@XE=-sF&=4+e8Bi zHVEW_y+Comb%TzFKkFGCo7ghH9ow{{XQbaI7T2MsXAA80X1G!lNr# zD)+Ia-X&DAf{OSj4li9h# z2nZ%X3DKu2R)Q>wXXBkAT~yxqU-(@eqLKZ7pt~(MP^MiU(s_n>>t`$BSGg-DGZk_( z@6+0Ben$uF$8ATIe}7XA!!7z?0iv6H5mXV3I`J~r$`cKIS!+1R!}NM zcsh4*XqffKG~eVx!(h@4f(DH4c8m*xO93(m9FBY&8bVMdP7i=j5c_6~yTyMG&&A?W z{`Pyli6Iyv*&m2`5)q=JuDnVS=Ol0;qS8eGO$?hFL*NXFzOd^)Wc-z-8A+j3Bc*5= zhn5+Nj8As*I`eB~)NPHb^iC`!{L;o!f2uWhtNgf{kc(pJDoRlWHkhsuL?Y1m4_BG^ z>-uB?uNgv%`XhZ1rAUg_NNMUW`g~SH^eND!8{u;&M2AfdoUauRFvRM0J-x zn%?nArp&(Bx&|K9-30HZgd(znFTh`$X}0%zBM&j6z@*vGW<%8w8UQ>){tfqC=>`d5 zei|ZrOD(#6Cdadzq0%m)4ZUK68#~AIuG~fvkp3Z00IX|_4XSm9Q17KF18S=3nlQ23 z%H!;1wc^c*T6D4|t)39Ik*_v?3p_)ibTGXa+!dz|I!cw+0-KZiM8#9l-bfRGt8H@+ zORiG|3RU|{mTnmdyopGtqg8D*iawU>HT*i?3PnE1UH5Jrra53^I1VeyNp`c)Cq+*w z6i8y72z1hs-O6MF8z=4g4##q`+=irqkfS%4C8;I#jaV@Efc5XGQCk_YEs90bNQy;yqW6NK z=xVGRF{*msem&xG%w_#)WVFRxKP|B;W_Rj@yw(9z(e}Y4{sz}#yh0vdm6i8aJFt)d zg%eLPB(XG4A?J__HKKUeE{BCX1M}QSBLBPuv2|sqPLsHD^kyC0G+Ic!Z?ezHnTzk4 zds1TMdXJ0IW!cuQ6-q(Ku3IOMkYPk#UlAgFh$hE$?ME-Bl|ed!Q|DUK#m}-p<($(o zI30Si`sJO*Uhq2Of}2M+d6^f9SCSS8j7p9F*(SU5EH-8~_fcE-QKSIvBo_0qq- zGc}}nhU}kc&}j=P_g9yr*aT1@k9Nl_a72=?eSi2P$~_2o0{vJ&8ox}n0GRx&50G4S z4PtKiD{``Dv|m&2v-V7nS(vs^HGB#gZkkU6DeZ1PoXhYDV`ZAIB4A8eZC` z)9E0F=9H-V0O!SOu&xsSuAM2h($+OSm}0<^48XO+`oj+3s>z$8x}O-DBP_3>*PV@Lf(cN z3iOkZBKrKvwQOR2mf3I>&b-*T^XJiIluq8xLzX!HwtYM@wFClCGB^SHO#tLksU&t| z1M@OzoT*{&(tAW5RVBp2Y*?K59V4%z1lZwX&YlU%BP>u4 z{k@F3MBOibKcq>=C;JmBwDPn>Rp2g9&Yp#Fd@(!T4nYz%zZEo4_++9G1SJX;a)h`I zh90*tobhA(&{|+;(juE|S%~KJopxGOxZlWA>`n$4vJ5$Z4VaE~d(=Bm0z7xLN55+J6{FP@0q&Oy#b4 zzCG<*X=CBK^Wq-S&mN2&wspBxOaWe^{Xb{YW~i{%^+2pDc55SvZmIeZ08&G4Cw!{4 z!eh>qdJPORrQHpN9Tvouj81kYJrBeujC{?>m#zD=1j}f!vz=}&8DubHrP`DaTUgx0 z66o>Gk~nxg)^CFwSQt$p4c`_ZNc1{pMfE(zg_~#f=Hn>fIACy2GKuGo{&^P>{#^fk z;(VGnmszh5+GG zBxFn3F;}ZGhlD6ccpyNBrTk(+0t2oW>Q7H(QK?~SQ@*#a5k2EIe#EF%A^OIExltd? zdwO;eVc_(b{K|eQd|ZyrtJbyMr`%1@(_N*51xxb=6`X=|E8RGT4A10$Xrlj#9BZm< z<(eQTM6CXCu!!uWYsF9tegl;t=c4vp*#kbpW!MTsVlPnSzd z^Trl_W~AnTgr5?(0WPpCDD8hxx>?F%Nrm|ayo`lWR)rS(UsZW-Y5$Rb#g`5S)-Nus(#7=YECH3JYQOi(UWfreSyYNlBeZD^hX4wlMfTYJNS^maXBV*z=* z7Q&}tW#kZDlWqm41vf$Z^-*hoI_f$Af=X07FBNL9;*VjeI*|Hc2d_FIlN(-Bgn*w( z5iWSAMtfOo2ZC8#{(tZ4k>_1i;NltyG{-CC_**C79YwMGarLU}rg7{NHK#}TUV+Z|A z4p<{zjO`*?+i21ObE_`Oq2_e401x!#ko8Yv!M;Ao2H-0J+2Zn;u|LB&w*-gbkCx3ytw@QdHXn1NF+HTHY#R+XEN+ zf_u0JmcG1YE7)8WNvQmMqVM_DWr9y?nY!0lL8R*Z=gRsH_KGFzRSVKfr&?3F3|yBD6=N5qF{N0#Zd*0!@rQtd^N{y+C zsQ?%d z2H*385Dp$A8TO=*_GHU_0m{}*4DoVj#fdzJjcz@d0x9B-$Pp#jsil!<^i1m-p4;HD}PBqq1}y;+o2!^ArN&}HCCK4Z$Rz;>V<3e~l2%`yr5ih{CoBb>*%%ni>K1(?sM4BX2ntwpu)Y<2g6b8yxW?~v z@U5p?|I_pkxC9P|mRn)64nl9Q?;(gH#q-xTRW^2-VVJinh45d*^2Ee8yVo}(!$

v+m;0xRf5j}2uquXS<%&1t=cZLtC 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 |6cY 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%0D7HDpO|D^-(W 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 XWgM~01?)XF_7nz#D7pDcgsHZ{s|%C&YbZCAby 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 dR7liR6DqX(FjPp~UkNI7c^*_q(y Date: Thu, 24 May 2018 12:53:57 +0300 Subject: [PATCH 152/226] add watchers for min/max date to set correct validity state of input --- js/angular-material-datetimepicker.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 4f6d134..99fdd05 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -200,6 +200,26 @@ if (ngModel.$options.timezone) offset = ngModel.$options.timezone; } if (offset==='utc' || offset==='UTC') offset = 0; + + if (scope.minDate) { + scope.$watch(function () { + return scope.minDate; + }, function (val2, val1) { + if (val2 !== val1) { + ngModel.$setValidity('min', !scope.currentDate.isBefore(scope.minDate)); + } + }); + } + + if (scope.maxDate) { + scope.$watch(function () { + return scope.maxDate; + }, function (val2, val1) { + if (val2 !== val1) { + ngModel.$setValidity('max', !scope.currentDate.isAfter(scope.maxDate)); + } + }); + } ngModel.$formatters.push(function (value) { if (typeof value === 'undefined') return; From ea2d88e6cf801db68ad597352db7c60d8669fa58 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 24 May 2018 14:41:33 -0400 Subject: [PATCH 153/226] #39 fix input with a invalid moment object --- js/angular-material-datetimepicker.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 4f6d134..8c3343e 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -416,8 +416,9 @@ if (angular.isDate(input)) { var x = input.getTime(); ret = moment(x, "x").locale(that.params.lang); - } else if (input._isAMomentObject) { - ret = input; + } else if (moment.isMoment(input)) { + if (input.isValid()) ret = input; + else ret = fallback; } } } else { From 82697875d6b5d60fd45114cac3c29e481b45409e Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 29 May 2018 10:11:33 -0400 Subject: [PATCH 154/226] #38 revert $watchers as they are too global --- beautifier.js | 14 ++++++-------- index.html | 11 +++++------ js/angular-material-datetimepicker.js | 22 +--------------------- 3 files changed, 12 insertions(+), 35 deletions(-) diff --git a/beautifier.js b/beautifier.js index 4a6de14..648e9cf 100644 --- a/beautifier.js +++ b/beautifier.js @@ -49,7 +49,7 @@ function style_html(html_source, options) { indent_size = options.indent_size || 4; indent_character = options.indent_char || ' '; brace_style = options.brace_style || 'collapse'; - max_char = options.max_char == 0 ? Infinity : options.max_char || 70; + max_char = options.max_char === 0 ? Infinity : options.max_char || 70; unformatted = options.unformatted || ['a']; function Parser() { @@ -204,8 +204,7 @@ function style_html(html_source, options) { space = false; } - if (content.length && content[content.length - 1] !== '=' && input_char !== '>' - && space) { //no space after = or before > + if (content.length && content[content.length - 1] !== '=' && input_char !== '>' && space) { //no space after = or before > if (this.line_char_count >= this.max_char) { this.print_newline(false, content); this.line_char_count = 0; @@ -231,8 +230,7 @@ function style_html(html_source, options) { if (tag_complete.charAt(tag_complete.length - 2) === '/' || this.Utils.in_array(tag_check, this.Utils.single_token)) { //if this tag name is a single tag type (either in the list or has a closing /) this.tag_type = 'SINGLE'; - } - else if (tag_check === 'script') { //for later script handling + } else if (tag_check === 'script') { //for later script handling this.record_tag(tag_check); this.tag_type = 'SCRIPT'; } @@ -299,7 +297,7 @@ function style_html(html_source, options) { } input_char = this.input.charAt(this.pos); - this.pos++ + this.pos++; if (this.Utils.in_array(input_char, this.Utils.whitespace)) { if (!space) { @@ -331,7 +329,7 @@ function style_html(html_source, options) { var token; if (this.last_token === 'TK_TAG_SCRIPT' || this.last_token === 'TK_TAG_STYLE') { //check if we need to format javascript - var type = this.last_token.substr(7) + var type = this.last_token.substr(7); token = this.get_contents_to(type); if (typeof token !== 'string') { return token; @@ -366,7 +364,7 @@ function style_html(html_source, options) { return ''; return Array(level + 1).join(this.indent_string); - } + }; this.printer = function (js_source, indent_character, indent_size, max_char, brace_style) { //handles input/output and some other printing functions diff --git a/index.html b/index.html index b94dbe2..d1006bf 100644 --- a/index.html +++ b/index.html @@ -198,20 +198,19 @@

Datetime Pickers

- -
+
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 8fab073..b821f81 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -200,26 +200,6 @@ if (ngModel.$options.timezone) offset = ngModel.$options.timezone; } if (offset==='utc' || offset==='UTC') offset = 0; - - if (scope.minDate) { - scope.$watch(function () { - return scope.minDate; - }, function (val2, val1) { - if (val2 !== val1) { - ngModel.$setValidity('min', !scope.currentDate.isBefore(scope.minDate)); - } - }); - } - - if (scope.maxDate) { - scope.$watch(function () { - return scope.maxDate; - }, function (val2, val1) { - if (val2 !== val1) { - ngModel.$setValidity('max', !scope.currentDate.isAfter(scope.maxDate)); - } - }); - } ngModel.$formatters.push(function (value) { if (typeof value === 'undefined') return; @@ -304,7 +284,7 @@ if (scope.showIcon) { element.addClass('dtp-no-msclear dtp-input'); - var calendarButton = + var calendarButton = '
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}} ';angular.module(t,["ngMaterial"]).service("mdcDatetimePickerDefaultLocale",["mdcDefaultParams",function(e){this.$get=function(){return console.log("mdcDatetimePickerDefaultLocale deprecated!"),e().lang},this.setDefaultLocale=function(t){console.log("mdcDatetimePickerDefaultLocale deprecated!"),e({lang:t})}}]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,closeTo:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,void 0===a._tzm),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:i.targetEvent,openFrom:i.openFrom,closeTo:i.closeTo};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;return this.params.seconds?(n=a.second())>=60&&(n=59):n=0,e(a).minutes(i).seconds(n).millisecond(0)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else a._isAMomentObject&&(n=a);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c1&&5%i!=0){var n=a.minute(),r=i*Math.round(n/i);if(r>=60&&(r=60-i),r!==n)return!1}return this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;this.params.seconds?(n=a.second())>=60&&(n=59):n=0,this.selectDate(e(a).minutes(i).seconds(n).millisecond(0))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=d-((parseInt(i(e,"marginLeft").replace("px",""))||0)+(parseInt(i(e,"marginRight").replace("px",""))||0)+u+m);e.css("width",p+"px");for(var f=parseInt(i(l,"paddingLeft").replace("px",""))||0,g=parseInt(i(l,"paddingTop").replace("px",""))||0,v=parseInt(i(e,"marginLeft").replace("px",""))||0,k=parseInt(i(e,"marginTop").replace("px",""))||0,M=p/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+f/2-(f+v),T=M-y*Math.cos(2*Math.PI*(I/12))-k/2-(g+k),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+f/2-(f+v),V=M-S*Math.cos(2*Math.PI*(O/12))-k/2-(g+k);A.push({left:E,top:V,value:O,display:O,style:{"margin-left":E+"px","margin-top":V+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",p+"px");var P=a[0].querySelector(".dtp-clock-center"),N=P.offsetWidth/2||7.5,Y=P.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M/1;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*v+"px",height:C+"px",marginTop:M-C-f+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*v+"px",height:H+"px",marginTop:M-H-f+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*v+"px",height:$+"px",marginTop:M-$-f+"px"}).addClass(s?"on":""),angular.element(P).css({left:M+f+v-N+"px",marginTop:M-v/2-Y+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var g=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),g()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,closeTo:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,void 0===a._tzm),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:i.targetEvent,openFrom:i.openFrom,closeTo:i.closeTo};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;return this.params.seconds?(n=a.second())>=60&&(n=59):n=0,e(a).minutes(i).seconds(n).millisecond(0)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else e.isMoment(a)&&(n=a.isValid()?a:i);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c1&&5%i!=0){var n=a.minute(),r=i*Math.round(n/i);if(r>=60&&(r=60-i),r!==n)return!1}return this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;this.params.seconds?(n=a.second())>=60&&(n=59):n=0,this.selectDate(e(a).minutes(i).seconds(n).millisecond(0))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=parseInt(i(l,"paddingTop").replace("px",""))||0,f=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginRight").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,k=d-(f+v+u+m);e.css("width",k+"px");for(var M=k/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+u/2-(u+f),T=M-y*Math.cos(2*Math.PI*(I/12))-g/2-(p+g),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+u/2-(u+f),V=M-S*Math.cos(2*Math.PI*(O/12))-g/2-(p+g);A.push({left:E,top:V,value:O,display:O,style:{"margin-left":E+"px","margin-top":V+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",k+"px");var N=a[0].querySelector(".dtp-clock-center"),Y=N.offsetWidth/2||7.5,P=N.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*f+"px",height:C+"px",marginTop:M-C-u+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*f+"px",height:H+"px",marginTop:M-H-u+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*f+"px",height:$+"px",marginTop:M-$-u+"px"}).addClass(s?"on":""),angular.element(N).css({left:M+u+f-Y+"px",marginTop:M-f/2-P+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 1c3c449..83d3b12 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","service","mdcDefaultParams","this","$get","console","log","lang","setDefaultLocale","localeString","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","_tzm","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","_isAMomentObject","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pl","replace","pr","clockWidth","pL","pT","mL","mT","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+',\r\n mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .service('mdcDatetimePickerDefaultLocale', ['mdcDefaultParams', function (mdcDefaultParams) {\r\n this.$get = function () {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n return mdcDefaultParams().lang;\r\n };\r\n\r\n this.setDefaultLocale = function (localeString) {\r\n console.log(\"mdcDatetimePickerDefaultLocale deprecated!\");\r\n mdcDefaultParams({ lang: localeString });\r\n };\r\n }])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) {\r\n default_params[i] = params[i];\r\n }\r\n }\r\n }\r\n\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) {\r\n scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n } else if (scope.date && scope.time) {\r\n scope.format = 'YYYY-MM-DD HH:mm';\r\n } else if (scope.date) {\r\n scope.format = 'YYYY-MM-DD';\r\n } else {\r\n scope.format = 'HH:mm';\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton = \r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (input._isAMomentObject) {\r\n ret = input;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if ((h < 12) && this.isPM())\r\n _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) {\r\n this._dialog.hide(this.currentDate);\r\n } else {\r\n this._dialog.cancel();\r\n }\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1 ) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) {\r\n i = 0;\r\n }\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pl = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pr = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var ml = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mr = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n //set width\r\n var clockWidth = (w - (ml + mr + pl + pr));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = (h === 0) ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5,\r\n centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r / 1;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: (r - _mL - pL) + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css\r\n ({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: (r - _sL - pL) + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: (r + pL + mL - centerWidth) + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) {\r\n scope.currentValue = date.minute();\r\n } else if (secondMode) {\r\n scope.currentValue = date.second();\r\n } else {\r\n scope.currentValue = date.hour() % nbH;\r\n }\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) {\r\n picker.ok(); // double click\r\n }\r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) {\r\n return picker.isMinuteAvailable(point.value);\r\n } else if (secondMode) {\r\n return picker.isSecondAvailable(point.value);\r\n } else {\r\n return picker.isHourAvailable(point.value);\r\n }\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","_tzm","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","mdcDefaultParams","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","this","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/index.html b/index.html index d1006bf..b5b60aa 100644 --- a/index.html +++ b/index.html @@ -16,7 +16,7 @@ - + diff --git a/package.json b/package.json index dc5207f..1ce934e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.15.1", + "version": "1.15.2", "keywords": [ "css", "js", @@ -29,8 +29,8 @@ }, "devDependencies": { "gulp": "^4.0.0", - "gulp-clean-css": "^3.8.0", - "gulp-rename": "^1.2.2", + "gulp-clean-css": "^3.9.4", + "gulp-rename": "^1.2.3", "gulp-sourcemaps": "^2.6.1", "gulp-uglify": "^3.0.0", "pump": "^3.0.0" diff --git a/yarn.lock b/yarn.lock index 0ed2719..793e8e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -937,9 +937,9 @@ graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, gr version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -gulp-clean-css@^3.8.0: - version "3.9.3" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.3.tgz#47bf7ad62f44970f86e4ac4bdeed68ad904e65c5" +gulp-clean-css@^3.9.4: + version "3.9.4" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.4.tgz#c6d3f8bb7a600fbe661962a72348a330954d343b" dependencies: clean-css "4.1.11" plugin-error "1.0.1" @@ -969,9 +969,9 @@ gulp-cli@^2.0.0: v8flags "^3.0.1" yargs "^7.1.0" -gulp-rename@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" +gulp-rename@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.3.tgz#37b75298e9d3e6c0fe9ac4eac13ce3be5434646b" gulp-sourcemaps@^2.6.1: version "2.6.4" @@ -1890,7 +1890,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" dependencies: @@ -1902,6 +1902,18 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.0.3" util-deprecate "~1.0.1" +readable-stream@^2.1.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -2037,10 +2049,14 @@ rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1: dependencies: glob "^7.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -2240,6 +2256,12 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" From 9bebd13b5d9c11a24f57047f0da099a3d3d3be30 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 29 May 2018 10:44:00 -0400 Subject: [PATCH 156/226] mdcDatetimePickerDefaultLocale is no more --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dea30d4..e43f438 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ To change params like the locale you can use this method instead of attributes f mdcDefaultParams({ lang: 'en', cancelText: 'cancel', todayText: 'now', okText: 'ok' }); ``` #### Notes -`mdcDatetimePickerDefaultLocale` will be deprecated. +`mdcDatetimePickerDefaultLocale` is no more. If you use https://github.com/lgalfaso/angular-dynamic-locale it will always override the locale. From e5d697a393a6f27f50c176b4c3eac6e275a6333f Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 30 May 2018 14:24:49 -0400 Subject: [PATCH 157/226] update demo to Angular.js 1.7.0 --- README.md | 12 ++++++------ index.html | 18 +++++++++--------- yarn.lock | 20 ++++++++++---------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index e43f438..0caf45c 100644 --- a/README.md +++ b/README.md @@ -54,12 +54,12 @@ Depends on the following library: - Moment ``` - - - - - - + + + + + + ``` diff --git a/index.html b/index.html index b5b60aa..7f9b696 100644 --- a/index.html +++ b/index.html @@ -8,19 +8,19 @@ - + - - - - - + + + + + - + - - + + diff --git a/yarn.lock b/yarn.lock index 793e8e2..6780cb9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,24 +39,24 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" angular-animate@^1.6.10: - version "1.6.10" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.10.tgz#c520f6d341370e34e0a62060c99bcf47b7d7db8c" + version "1.7.0" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.0.tgz#c04293068ee0986dc00ba154626d74bf51f25576" angular-aria@^1.6.10: - version "1.6.10" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.6.10.tgz#472bfff8682c4cfe634d4bfda0524443e07e3501" + version "1.7.0" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.0.tgz#fb96f5650959a86f30695ea814a071387e6e71b2" angular-material@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.8.tgz#6ddec2db18812506144ccf204cf8ecec330bc85c" + version "1.1.9" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.9.tgz#840574f8701629fc39eadfea7fd8e235cc5d97c6" angular-messages@^1.6.10: - version "1.6.10" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.6.10.tgz#09eedc5b50db99eeed9776414428c587c1259715" + version "1.7.0" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.0.tgz#ae0ec5fec710898dbbe9f0146ca87e0649f6c3d6" angular@^1.6.10: - version "1.6.10" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.10.tgz#eed3080a34d29d0f681ff119b18ce294e3f74826" + version "1.7.0" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.0.tgz#e45d679fc8d81040a4894c7ccc16a4e1ad0a9ca6" ansi-colors@^1.0.1: version "1.1.0" From 86eb8192495f77c48b2c678b7214e2b8f77bcfe9 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 4 Jun 2018 10:53:42 -0400 Subject: [PATCH 158/226] #41 add lite-server --- README.md | 8 + gulpfile.js | 9 + package.json | 4 + yarn.lock | 1008 +++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 1015 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 0caf45c..d24ef4a 100644 --- a/README.md +++ b/README.md @@ -237,3 +237,11 @@ Copy this css code in your project to override default color. background: #009796; } ``` + +### Development +Use any: +``` +npm run dev +yarn run dev +gulp serve +``` diff --git a/gulpfile.js b/gulpfile.js index f659f16..711cd5b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -6,6 +6,7 @@ const uglify = require('gulp-uglify'); const cleanCSS = require('gulp-clean-css'); const sourcemaps = require('gulp-sourcemaps'); const rename = require('gulp-rename'); +const exec = require('child_process').exec; gulp.task('js', cb => { pump([ @@ -28,3 +29,11 @@ gulp.task('css', cb => { }); gulp.task('default', gulp.parallel('js', 'css')); + +gulp.task('serve', function (cb) { + exec('npm run dev', function (err, stdout, stderr) { + console.log(stdout); + console.log(stderr); + cb(err); + }); +}); diff --git a/package.json b/package.json index 1ce934e..3bd7508 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,9 @@ ], "homepage": "https://beenote.github.io/angular-material-datetimepicker/", "main": "js/angular-material-datetimepicker.js", + "scripts": { + "dev": "lite-server" + }, "dependencies": { "angular": "^1.6.10", "angular-animate": "^1.6.10", @@ -33,6 +36,7 @@ "gulp-rename": "^1.2.3", "gulp-sourcemaps": "^2.6.1", "gulp-uglify": "^3.0.0", + "lite-server": "^2.3.0", "pump": "^3.0.0" } } diff --git a/yarn.lock b/yarn.lock index 6780cb9..f901c75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,21 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" +accepts@~1.3.3, accepts@~1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + acorn@5.X, acorn@^5.0.3: version "5.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" @@ -74,10 +85,21 @@ ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -106,6 +128,12 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -159,10 +187,18 @@ array-sort@^1.0.0: get-value "^2.0.6" kind-of "^5.0.2" +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -188,16 +224,28 @@ async-done@^1.2.0, async-done@^1.2.2: process-nextick-args "^1.0.7" stream-exhaust "^1.0.1" +async-each-series@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + async-settle@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" dependencies: async-done "^1.2.2" +async@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -218,6 +266,13 @@ aws4@^1.2.1: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" +axios@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.1.tgz#2d8e3e5d0bdbd7327f91bc814f5c57660f81824d" + dependencies: + follow-redirects "^1.2.5" + is-buffer "^1.1.5" + bach@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" @@ -232,10 +287,22 @@ bach@^1.0.0: async-settle "^1.0.0" now-and-later "^2.0.0" +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -248,16 +315,30 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +batch@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" + bcrypt-pbkdf@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" dependencies: tweetnacl "^0.14.3" +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + dependencies: + callsite "1.0.0" + binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" +blob@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -277,6 +358,14 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + braces@^2.3.0, braces@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" @@ -294,6 +383,53 @@ braces@^2.3.0, braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +browser-sync-ui@v1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-1.0.1.tgz#9740527b26d1d7ace259acc0c79e5b5e37d0fdf2" + dependencies: + async-each-series "0.1.1" + connect-history-api-fallback "^1.1.0" + immutable "^3.7.6" + server-destroy "1.0.1" + socket.io-client "2.0.4" + stream-throttle "^0.1.3" + +browser-sync@^2.18.5: + version "2.24.4" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.24.4.tgz#e6e1544c8a6c088dc76f49f7059bc3df967e0ae0" + dependencies: + browser-sync-ui v1.0.1 + bs-recipes "1.3.4" + chokidar "1.7.0" + connect "3.5.0" + connect-history-api-fallback "^1.5.0" + dev-ip "^1.0.1" + easy-extender "2.3.2" + eazy-logger "3.0.2" + etag "^1.8.1" + fresh "^0.5.2" + fs-extra "3.0.1" + http-proxy "1.15.2" + immutable "3.8.2" + localtunnel "1.9.0" + micromatch "2.3.11" + opn "4.0.2" + portscanner "2.1.1" + qs "6.2.3" + raw-body "^2.3.2" + resp-modifier "6.0.2" + rx "4.1.0" + serve-index "1.8.0" + serve-static "1.13.2" + server-destroy "1.0.1" + socket.io "2.0.4" + ua-parser-js "0.7.17" + yargs "6.4.0" + +bs-recipes@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" + buffer-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" @@ -306,6 +442,10 @@ builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -320,6 +460,10 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" @@ -328,6 +472,31 @@ caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" +chalk@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chokidar@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + chokidar@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" @@ -346,6 +515,10 @@ chokidar@^2.0.0: optionalDependencies: fsevents "^1.1.2" +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -422,14 +595,26 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" +commander@^2.2.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + commander@~2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" -component-emitter@^1.2.1: +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + +component-emitter@1.2.1, component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -443,6 +628,25 @@ concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +connect-history-api-fallback@^1.1.0, connect-history-api-fallback@^1.2.0, connect-history-api-fallback@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + +connect-logger@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/connect-logger/-/connect-logger-0.0.1.tgz#4d999978a1d20bb4608e7cd434d741652255174b" + dependencies: + moment "*" + +connect@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" + dependencies: + debug "~2.2.0" + finalhandler "0.5.0" + parseurl "~1.3.1" + utils-merge "1.0.0" + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -451,6 +655,10 @@ convert-source-map@1.X, convert-source-map@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -501,18 +709,30 @@ debug-fabulous@1.X: memoizee "0.4.X" object-assign "4.X" -debug@3.X: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" +debug@2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: ms "2.0.0" -debug@^2.2.0, debug@^2.3.3: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@~2.6.4, debug@~2.6.6: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" +debug@3.X, debug@^3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -569,6 +789,14 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -581,6 +809,10 @@ detect-newline@2.X: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" +dev-ip@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" + duplexify@^3.5.3: version "3.5.4" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" @@ -597,12 +829,32 @@ each-props@^1.3.0: is-plain-object "^2.0.1" object.defaults "^1.1.0" +easy-extender@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.2.tgz#3d3248febe2b159607316d8f9cf491c16648221d" + dependencies: + lodash "^3.10.1" + +eazy-logger@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" + dependencies: + tfunk "^3.0.1" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" dependencies: jsbn "~0.1.0" +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + end-of-stream@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -615,6 +867,45 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +engine.io-client@~3.1.0: + version "3.1.6" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary2 "~1.0.2" + +engine.io@~3.1.0: + version "3.1.5" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + optionalDependencies: + uws "~9.14.0" + error-ex@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" @@ -652,6 +943,18 @@ es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: es6-iterator "^2.0.1" es6-symbol "^3.1.1" +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +etag@^1.8.1, etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + event-emitter@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" @@ -659,6 +962,16 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -671,6 +984,12 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -694,6 +1013,12 @@ extend@^3.0.0, extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -723,6 +1048,20 @@ fancy-log@^1.3.2: color-support "^1.1.3" time-stamp "^1.0.0" +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -732,6 +1071,16 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +finalhandler@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" + dependencies: + debug "~2.2.0" + escape-html "~1.0.3" + on-finished "~2.3.0" + statuses "~1.3.0" + unpipe "~1.0.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -769,10 +1118,22 @@ flush-write-stream@^1.0.2: inherits "^2.0.1" readable-stream "^2.0.4" +follow-redirects@^1.2.5: + version "1.5.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77" + dependencies: + debug "^3.1.0" + for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + for-own@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" @@ -801,6 +1162,24 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +fresh@0.5.2, fresh@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +fs-extra@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" @@ -812,6 +1191,13 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +fsevents@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + fsevents@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" @@ -867,6 +1253,19 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -1027,6 +1426,22 @@ har-validator@~4.2.1: ajv "^4.9.1" har-schema "^1.0.5" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + has-gulplog@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" @@ -1091,6 +1506,30 @@ hosted-git-info@^2.1.4: version "2.6.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" +http-errors@1.6.3, http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" + dependencies: + inherits "2.0.3" + setprototypeof "1.0.2" + statuses ">= 1.3.1 < 2" + +http-proxy@1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -1099,6 +1538,26 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +iconv-lite@0.4.23, iconv-lite@^0.4.4: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + +immutable@3.8.2, immutable@^3.7.6: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1106,7 +1565,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -1200,6 +1659,16 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -1210,6 +1679,10 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -1220,6 +1693,12 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -1236,6 +1715,18 @@ is-negated-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" +is-number-like@^1.0.3: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" + dependencies: + lodash.isfinite "^3.3.2" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -1258,6 +1749,14 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + is-promise@^2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -1310,6 +1809,10 @@ isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -1346,6 +1849,12 @@ json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" +jsonfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" @@ -1421,6 +1930,20 @@ liftoff@^2.5.0: rechoir "^0.6.2" resolve "^1.1.7" +limiter@^1.0.5: + version "1.1.3" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.3.tgz#32e2eb55b2324076943e5d04c1185ffb387968ef" + +lite-server@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/lite-server/-/lite-server-2.3.0.tgz#5b4cc8f5d5fd4836105480ab2ac48a3a0de2b0c8" + dependencies: + browser-sync "^2.18.5" + connect-history-api-fallback "^1.2.0" + connect-logger "0.0.1" + lodash "^4.11.1" + minimist "1.2.0" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -1431,6 +1954,27 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +localtunnel@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.0.tgz#8ffecdcf8c8a14f62df1056cf9d54acbb0bb9a8f" + dependencies: + axios "0.17.1" + debug "2.6.8" + openurl "1.1.1" + yargs "6.6.0" + +lodash.isfinite@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" + +lodash@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.11.1: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + lodash@^4.13.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -1476,6 +2020,10 @@ matchdep@^2.0.0: resolve "^1.4.0" stack-trace "0.0.10" +math-random@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" + memoizee@0.4.X: version "0.4.11" resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.11.tgz#bde9817663c9e40fdb2a4ea1c367296087ae8c8f" @@ -1489,6 +2037,24 @@ memoizee@0.4.X: next-tick "1" timers-ext "^0.1.2" +micromatch@2.3.11, micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + micromatch@^3.0.4, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -1511,12 +2077,16 @@ mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.12, mime-types@~2.1.7: +mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.18, mime-types@~2.1.7: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" dependencies: mime-db "~1.33.0" +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -1527,10 +2097,23 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.2.0: +minimist@1.2.0, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +minipass@^2.2.1, minipass@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" @@ -1538,16 +2121,24 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" +moment@*: + version "2.22.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" + moment@^2.22.1: version "2.22.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -1556,7 +2147,7 @@ mute-stdout@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.0.tgz#5b32ea07eb43c9ded6130434cf926f46b2a7fd4d" -nan@^2.3.0: +nan@^2.3.0, nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -1577,10 +2168,37 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +needle@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + next-tick@1: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" +node-pre-gyp@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.0" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.1.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + node-pre-gyp@^0.6.39: version "0.6.39" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" @@ -1613,7 +2231,7 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: @@ -1625,6 +2243,17 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" +npm-bundled@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + +npm-packlist@^1.1.6: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -1642,10 +2271,14 @@ oauth-sign@~0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" -object-assign@4.X, object-assign@^4.1.0: +object-assign@4.X, object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -1658,6 +2291,10 @@ object-keys@^1.0.11, object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" +object-path@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -1689,6 +2326,13 @@ object.map@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -1702,12 +2346,29 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" +openurl@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" + +opn@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" @@ -1743,6 +2404,15 @@ parse-filepath@^1.0.1: map-cache "^0.2.0" path-root "^0.1.1" +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -1753,6 +2423,22 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.1, parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -1820,10 +2506,21 @@ plugin-error@1.0.1: arr-union "^3.1.0" extend-shallow "^3.0.2" +portscanner@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" + dependencies: + async "1.5.2" + is-number-like "^1.0.3" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" @@ -1862,10 +2559,35 @@ punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +qs@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" +randomatic@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + rc@^1.1.7: version "1.2.6" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" @@ -1929,6 +2651,12 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -1959,7 +2687,7 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" -repeat-string@^1.6.1: +repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -2010,6 +2738,10 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +requires-port@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" @@ -2039,6 +2771,13 @@ resolve@^1.4.0: dependencies: path-parse "^1.0.5" +resp-modifier@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" + dependencies: + debug "^2.2.0" + minimatch "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -2049,11 +2788,15 @@ rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1: dependencies: glob "^7.0.5" +rx@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + safe-buffer@^5.0.1, safe-buffer@^5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -2063,6 +2806,14 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + semver-greatest-satisfied-range@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" @@ -2073,6 +2824,49 @@ semver-greatest-satisfied-range@^1.1.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serve-index@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" + dependencies: + accepts "~1.3.3" + batch "0.5.3" + debug "~2.2.0" + escape-html "~1.0.3" + http-errors "~1.5.0" + mime-types "~2.1.11" + parseurl "~1.3.1" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +server-destroy@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -2099,6 +2893,14 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" +setprototypeof@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -2136,6 +2938,47 @@ sntp@1.x.x: dependencies: hoek "2.x.x" +socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + +socket.io-client@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~2.6.4" + engine.io-client "~3.1.0" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.1.1" + to-array "0.1.4" + +socket.io-parser@~3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + has-binary2 "~1.0.2" + isarray "2.0.1" + +socket.io@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" + dependencies: + debug "~2.6.6" + engine.io "~3.1.0" + socket.io-adapter "~1.1.0" + socket.io-client "2.0.4" + socket.io-parser "~3.1.1" + source-map-resolve@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" @@ -2234,6 +3077,18 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +statuses@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + stream-exhaust@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" @@ -2242,6 +3097,13 @@ stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" +stream-throttle@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" + dependencies: + commander "^2.2.0" + limiter "^1.0.5" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -2286,6 +3148,10 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + sver-compat@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" @@ -2314,6 +3180,25 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" +tar@^4: + version "4.4.4" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.3.3" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +tfunk@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" + dependencies: + chalk "^1.1.1" + object-path "^0.9.0" + through2-filter@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" @@ -2346,6 +3231,10 @@ to-absolute-glob@^2.0.0: is-absolute "^1.0.0" is-negated-glob "^1.0.0" +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -2394,6 +3283,10 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +ua-parser-js@0.7.17: + version "0.7.17" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" + uglify-js@^3.0.5: version "3.1.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.4.tgz#8e1efa1244b207588e525c9c1835a33458b90aee" @@ -2405,6 +3298,10 @@ uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + unc-path-regex@^0.1.0, unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -2443,6 +3340,14 @@ unique-stream@^2.0.2: json-stable-stringify "^1.0.0" through2-filter "^2.0.0" +universalify@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -2468,10 +3373,18 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +utils-merge@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + uuid@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" +uws@~9.14.0: + version "9.14.0" + resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" + v8flags@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.2.tgz#ad6a78a20a6b23d03a8debc11211e3cc23149477" @@ -2564,6 +3477,10 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2" +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -2575,6 +3492,18 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -2583,12 +3512,59 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + +yargs-parser@^4.1.0, yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" dependencies: camelcase "^3.0.0" +yargs@6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^4.1.0" + +yargs@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + yargs@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" @@ -2606,3 +3582,7 @@ yargs@^7.1.0: which-module "^1.0.0" y18n "^3.2.1" yargs-parser "^5.0.0" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From 27a03ba771488fdc6a21b1394819b3c441a4d342 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 15 Jun 2018 09:49:44 -0400 Subject: [PATCH 159/226] #42 more info on utc time zone options --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index d24ef4a..6d9eec5 100644 --- a/README.md +++ b/README.md @@ -143,6 +143,12 @@ The directive accepts several attributes which are described below: | **template-url** | String | You can set a custom HTML template (default: '') | | **ng-model-options** | timezone option | For example: ng-model-options="{timezone: 'utc'}" | +### UTC Time Zone +You should normally use the browser local time zone and use UTC only on the server side. +But if you have special case, you can set the model to a moment.utc() and it will stay a moment utc object. +You can also use the `format="YYYY-MM-DD HH:mmZ"` for parsing if your server returns an UTC date time. +Also, if you want your user to manually enter an UTC time use the `ng-model-options timezone` as shown in the demo. + ### Set or update params by injecting `mdcDefaultParams` provider To change params like the locale you can use this method instead of attributes for all datetimepicker: ```javascript From 7c58414543727790cd96910428326aea878c4fd5 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 15 Jun 2018 22:45:49 -0400 Subject: [PATCH 160/226] #36 Option to hide Today button --- README.md | 10 ++++- index.html | 2 +- js/angular-material-datetimepicker.js | 56 ++++++++++++++------------- 3 files changed, 38 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 6d9eec5..a1d90c3 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Originally designed for Bootstrap Material, this has been modified to work with ## Updates | Date | Author | Description | | ---------- | ----------- | ------------------------------------------------------ | +| 2018-06-15 | hexadecy | Can hide Today button | | 2018-02-09 | hexadecy | support ng-model-options timezone | | 2018-01-29 | coennijhuis | min-date max-date validation when not using the picker | | 2017-10-18 | paragraff | custom template | @@ -128,6 +129,7 @@ The directive accepts several attributes which are described below: | **minutes** | Boolean | true => Has Timepicker minutes (default: true) | | **seconds** | Boolean | true => Has Timepicker seconds (default: false) | | **cancel-text** | String | Text for the cancel button (default: Cancel) | +| **today-btn** | Boolean | true => Show today button (default: true) | | **today-text** | String | Text for the today button (default: Today) | | **ok-text** | String | Text for the OK button (default: OK) | | **week-start** | Number | First day of the week (default: 0 => Sunday) | @@ -147,7 +149,7 @@ The directive accepts several attributes which are described below: You should normally use the browser local time zone and use UTC only on the server side. But if you have special case, you can set the model to a moment.utc() and it will stay a moment utc object. You can also use the `format="YYYY-MM-DD HH:mmZ"` for parsing if your server returns an UTC date time. -Also, if you want your user to manually enter an UTC time use the `ng-model-options timezone` as shown in the demo. +Also, if you want your user to manually enter an UTC time use the `ng-model-options timezone` as in the demo. ### Set or update params by injecting `mdcDefaultParams` provider To change params like the locale you can use this method instead of attributes for all datetimepicker: @@ -199,6 +201,7 @@ The `mdcDateTimeDialog.show` accepts almost the same options as the directive. weekStart: {int} =0, shortTime: {boolean} =false, cancelText: {string} ='Cancel', + todayBtn: {boolean} =true, todayText: {string} ='Today', showTodaysDate: {string} ='', okText: {string} ='OK', @@ -245,9 +248,12 @@ Copy this css code in your project to override default color. ``` ### Development -Use any: +To run the demo: ``` npm run dev yarn run dev gulp serve ``` + +To build: +`gulp` diff --git a/index.html b/index.html index 7f9b696..6ecd8a3 100644 --- a/index.html +++ b/index.html @@ -53,7 +53,7 @@

Datetime Pickers

diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index b821f81..4ccaf05 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -19,8 +19,8 @@ ' ' + '
' + '
' + - '
{{picker.currentNearestMinute().format("dddd")}}
' + - '
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
' + + '
{{picker.currentNearestMinute().format("dddd")}}
' + + '
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
' + '
' + ' ×' + '
' + @@ -29,7 +29,7 @@ '
' + '
' + ' ' + - '
{{picker.currentDate.format("MMM") | uppercase}}
' + + '
{{picker.currentDate.format("MMM")|uppercase}}
' + ' ' + ' ' + ' {{itemMonth}}' + @@ -52,28 +52,28 @@ '
' + '
'+ '
' + //start time - '
' + + '
' + '
' + - ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}'+ - ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}'+ + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}'+ + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}'+ ' {{picker.currentDate.format("A")}}'+ '
' + '
' + '
' + - ' ' + - '
' + + ' ' + + '
' + '
' + ' ' + - '
' + - ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}' + + '
' + + ' {{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}' + '
' + - '
' + - ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}' + + '
' + + ' {{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}' + '
' + ' ' + '
' + '
' + @@ -85,10 +85,10 @@ '
' + ' ' + ' ' + - ' {{picker.params.todayText}}' + - ' {{picker.params.cancelText}}' + - ' {{picker.params.okText}}' + - ' ' + + ' {{::picker.params.todayText}}' + + ' {{::picker.params.cancelText}}' + + ' {{::picker.params.okText}}' + + ' ' + ''; angular.module(moduleName, ['ngMaterial']) @@ -109,6 +109,7 @@ okText: 'OK', amText: 'AM', pmText: 'PM', + todayBtn: true, todayText: 'Today', disableDates: [], weekDays: false, @@ -161,6 +162,7 @@ amText: '@', pmText: '@', showTodaysDate: '@', + todayBtn: '=', todayText: '@', disableParentScroll: '=', autoOk: '=', @@ -931,7 +933,7 @@ template: '' + '
' + - '
' + + '
' + '
' + '
' }; @@ -980,13 +982,13 @@ template: '
{{month.name}}
' + '' + - ' ' + + ' ' + ' ' + - ' ' + + ' ' + ' ' + - ' ' + - ' ' + - ' ' + + ' ' + + ' ' + + ' ' + '
{{cal.toDay(day)}}{{cal.toDay(day)}}
', link: function (scope, element, attrs, calendar) { scope.cal = calendar; @@ -1021,13 +1023,13 @@ function ($timeout) { var template = - '
 ' + + '
 ' + '' + '' + '
' + From 68ce960c8e6c4cb8cba6b9b54cce93515f559f41 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 3 Jul 2018 22:51:51 -0400 Subject: [PATCH 161/226] version 1.6.0 update deps AngularJS 1.7.2 AngularJS Material 1.1.10 MomentJS 2.22.2 --- README.md | 14 +- bower.json | 6 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- index.html | 20 +- package.json | 2 +- yarn.lock | 285 ++++++++++-------- 7 files changed, 183 insertions(+), 148 deletions(-) diff --git a/README.md b/README.md index a1d90c3..4b08fe1 100644 --- a/README.md +++ b/README.md @@ -55,13 +55,13 @@ Depends on the following library: - Moment ``` - - - - - - - + + + + + + + ``` ## Installing via yarn, npm or bower diff --git a/bower.json b/bower.json index 5e9da15..cb22494 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.15.2", + "version": "1.16.0", "keywords": [ "css", "js", @@ -28,7 +28,7 @@ "test-infra" ], "dependencies": { - "moment": "^2.22.1", - "angular-material": "^1.1.8" + "moment": "^2.22.2", + "angular-material": "^1.1.10" } } diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 8998b49..2722223 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime ? picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM") | uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{picker.params.todayText}} {{picker.params.cancelText}} {{picker.params.okText}}
';angular.module(t,["ngMaterial"]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,closeTo:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,void 0===a._tzm),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:i.targetEvent,openFrom:i.openFrom,closeTo:i.closeTo};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;return this.params.seconds?(n=a.second())>=60&&(n=59):n=0,e(a).minutes(i).seconds(n).millisecond(0)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else e.isMoment(a)&&(n=a.isValid()?a:i);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c1&&5%i!=0){var n=a.minute(),r=i*Math.round(n/i);if(r>=60&&(r=60-i),r!==n)return!1}return this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;this.params.seconds?(n=a.second())>=60&&(n=59):n=0,this.selectDate(e(a).minutes(i).seconds(n).millisecond(0))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=parseInt(i(l,"paddingTop").replace("px",""))||0,f=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginRight").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,k=d-(f+v+u+m);e.css("width",k+"px");for(var M=k/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+u/2-(u+f),T=M-y*Math.cos(2*Math.PI*(I/12))-g/2-(p+g),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+u/2-(u+f),V=M-S*Math.cos(2*Math.PI*(O/12))-g/2-(p+g);A.push({left:E,top:V,value:O,display:O,style:{"margin-left":E+"px","margin-top":V+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",k+"px");var N=a[0].querySelector(".dtp-clock-center"),Y=N.offsetWidth/2||7.5,P=N.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*f+"px",height:C+"px",marginTop:M-C-u+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*f+"px",height:H+"px",marginTop:M-H-u+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*f+"px",height:$+"px",marginTop:M-$-u+"px"}).addClass(s?"on":""),angular.element(N).css({left:M+u+f-Y+"px",marginTop:M-f/2-P+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(t,["ngMaterial"]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,closeTo:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,void 0===a._tzm),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:i.targetEvent,openFrom:i.openFrom,closeTo:i.closeTo};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;return this.params.seconds?(n=a.second())>=60&&(n=59):n=0,e(a).minutes(i).seconds(n).millisecond(0)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else e.isMoment(a)&&(n=a.isValid()?a:i);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c1&&5%i!=0){var n=a.minute(),r=i*Math.round(n/i);if(r>=60&&(r=60-i),r!==n)return!1}return this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;this.params.seconds?(n=a.second())>=60&&(n=59):n=0,this.selectDate(e(a).minutes(i).seconds(n).millisecond(0))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=parseInt(i(l,"paddingTop").replace("px",""))||0,f=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginRight").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,k=d-(f+v+u+m);e.css("width",k+"px");for(var M=k/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+u/2-(u+f),T=M-y*Math.cos(2*Math.PI*(I/12))-g/2-(p+g),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+u/2-(u+f),V=M-S*Math.cos(2*Math.PI*(O/12))-g/2-(p+g);A.push({left:E,top:V,value:O,display:O,style:{"margin-left":E+"px","margin-top":V+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",k+"px");var N=a[0].querySelector(".dtp-clock-center"),Y=N.offsetWidth/2||7.5,P=N.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*f+"px",height:C+"px",marginTop:M-C-u+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*f+"px",height:H+"px",marginTop:M-H-u+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*f+"px",height:$+"px",marginTop:M-$-u+"px"}).addClass(s?"on":""),angular.element(N).css({left:M+u+f-Y+"px",marginTop:M-f/2-P+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 83d3b12..0bc23ca 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","_tzm","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","mdcDefaultParams","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","this","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime ? picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\") | uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{picker.params.todayText}}' +\r\n ' {{picker.params.cancelText}}' +\r\n ' {{picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","openCalendar","e","preventDefault","blur","parent","removeClass","isOn","options","isUndefined","dateOfTheDay","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","undefined","offset","utcOffset","_isUTC","toDate","isSame","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","_tzm","$setValidity","isBefore","isAfter","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","mdcDefaultParams","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","this","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","setTimeDegRay","deg","ray","val","divider","pointAvailable","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","sqrt","pow","atan2","PI","off","$on","exec","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","setCurrentValue","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 6ecd8a3..c239df9 100644 --- a/index.html +++ b/index.html @@ -8,19 +8,19 @@ - + - - - - - + + + + + - - - - + + + + diff --git a/package.json b/package.json index 3bd7508..3e6fb91 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.15.2", + "version": "1.16.0", "keywords": [ "css", "js", diff --git a/yarn.lock b/yarn.lock index f901c75..11473c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,7 +23,7 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" -accepts@~1.3.3, accepts@~1.3.4: +accepts@~1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" dependencies: @@ -50,24 +50,24 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" angular-animate@^1.6.10: - version "1.7.0" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.0.tgz#c04293068ee0986dc00ba154626d74bf51f25576" + version "1.7.2" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.2.tgz#48d1d22caf0057b57b50f882b68d51c297aa7747" angular-aria@^1.6.10: - version "1.7.0" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.0.tgz#fb96f5650959a86f30695ea814a071387e6e71b2" + version "1.7.2" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.2.tgz#68cb3d15aece7a22517b1fe3e00d9d3807ceca88" angular-material@^1.1.8: - version "1.1.9" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.9.tgz#840574f8701629fc39eadfea7fd8e235cc5d97c6" + version "1.1.10" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.10.tgz#fb93ba84f2734146cb9ca8ebf65bdc163d9f8471" angular-messages@^1.6.10: - version "1.7.0" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.0.tgz#ae0ec5fec710898dbbe9f0146ca87e0649f6c3d6" + version "1.7.2" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.2.tgz#77116d83a72a00234d8177de9837bc867321f25e" angular@^1.6.10: - version "1.7.0" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.0.tgz#e45d679fc8d81040a4894c7ccc16a4e1ad0a9ca6" + version "1.7.2" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.2.tgz#687b955dbe5c533f8d73460461707af00360251f" ansi-colors@^1.0.1: version "1.1.0" @@ -85,6 +85,10 @@ ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -122,8 +126,8 @@ archy@^1.0.0: resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -315,9 +319,9 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -batch@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" bcrypt-pbkdf@^1.0.0: version "1.0.1" @@ -394,14 +398,14 @@ browser-sync-ui@v1.0.1: socket.io-client "2.0.4" stream-throttle "^0.1.3" -browser-sync@^2.18.5: - version "2.24.4" - resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.24.4.tgz#e6e1544c8a6c088dc76f49f7059bc3df967e0ae0" +browser-sync@^2.24.4: + version "2.24.5" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.24.5.tgz#2b32c00cd85958be570c20fae557b0dc0ccd3818" dependencies: browser-sync-ui v1.0.1 bs-recipes "1.3.4" chokidar "1.7.0" - connect "3.5.0" + connect "3.6.6" connect-history-api-fallback "^1.5.0" dev-ip "^1.0.1" easy-extender "2.3.2" @@ -419,10 +423,10 @@ browser-sync@^2.18.5: raw-body "^2.3.2" resp-modifier "6.0.2" rx "4.1.0" - serve-index "1.8.0" + serve-index "1.9.1" serve-static "1.13.2" server-destroy "1.0.1" - socket.io "2.0.4" + socket.io "2.1.1" ua-parser-js "0.7.17" yargs "6.4.0" @@ -596,8 +600,8 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: delayed-stream "~1.0.0" commander@^2.2.0: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + version "2.16.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50" commander@~2.11.0: version "2.11.0" @@ -638,14 +642,14 @@ connect-logger@0.0.1: dependencies: moment "*" -connect@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" +connect@3.6.6: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" dependencies: - debug "~2.2.0" - finalhandler "0.5.0" - parseurl "~1.3.1" - utils-merge "1.0.0" + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" @@ -715,7 +719,7 @@ debug@2.6.8: dependencies: ms "2.0.0" -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@~2.6.4, debug@~2.6.6: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@~2.6.4: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -727,12 +731,6 @@ debug@3.X, debug@^3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -741,9 +739,9 @@ decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" default-compare@^1.0.0: version "1.0.0" @@ -851,7 +849,7 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -encodeurl@~1.0.2: +encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -883,6 +881,22 @@ engine.io-client@~3.1.0: xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" @@ -893,9 +907,9 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.4" has-binary2 "~1.0.2" -engine.io@~3.1.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" +engine.io@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" dependencies: accepts "~1.3.4" base64id "1.0.0" @@ -903,12 +917,10 @@ engine.io@~3.1.0: debug "~3.1.0" engine.io-parser "~2.1.0" ws "~3.3.1" - optionalDependencies: - uws "~9.14.0" error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" dependencies: is-arrayish "^0.2.1" @@ -1071,14 +1083,16 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -finalhandler@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" dependencies: - debug "~2.2.0" + debug "2.6.9" + encodeurl "~1.0.1" escape-html "~1.0.3" on-finished "~2.3.0" - statuses "~1.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" unpipe "~1.0.0" find-up@^1.0.0: @@ -1369,8 +1383,8 @@ gulp-cli@^2.0.0: yargs "^7.1.0" gulp-rename@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.3.tgz#37b75298e9d3e6c0fe9ac4eac13ce3be5434646b" + version "1.3.0" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.3.0.tgz#2e789d8f563ab0c924eeb62967576f37ff4cb826" gulp-sourcemaps@^2.6.1: version "2.6.4" @@ -1503,8 +1517,8 @@ homedir-polyfill@^1.0.1: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" + version "2.6.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.1.tgz#6e4cee78b01bb849dcf93527708c69fdbee410df" http-errors@1.6.3, http-errors@~1.6.2: version "1.6.3" @@ -1515,14 +1529,6 @@ http-errors@1.6.3, http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-errors@~1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" - dependencies: - inherits "2.0.3" - setprototypeof "1.0.2" - statuses ">= 1.3.1 < 2" - http-proxy@1.15.2: version "1.15.2" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" @@ -1622,8 +1628,8 @@ is-binary-path@^1.0.0: binary-extensions "^1.0.0" is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" is-builtin-module@^1.0.0: version "1.0.0" @@ -1693,6 +1699,10 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -1935,10 +1945,10 @@ limiter@^1.0.5: resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.3.tgz#32e2eb55b2324076943e5d04c1185ffb387968ef" lite-server@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/lite-server/-/lite-server-2.3.0.tgz#5b4cc8f5d5fd4836105480ab2ac48a3a0de2b0c8" + version "2.4.0" + resolved "https://registry.yarnpkg.com/lite-server/-/lite-server-2.4.0.tgz#e3e122885836b168895d7b6b4eca06047d204c0d" dependencies: - browser-sync "^2.18.5" + browser-sync "^2.24.4" connect-history-api-fallback "^1.2.0" connect-logger "0.0.1" lodash "^4.11.1" @@ -2077,7 +2087,7 @@ mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.18, mime-types@~2.1.7: +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" dependencies: @@ -2127,18 +2137,10 @@ mixin-deep@^1.2.0: dependencies: minimist "0.0.8" -moment@*: +moment@*, moment@^2.22.1: version "2.22.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" -moment@^2.22.1: - version "2.22.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -2185,8 +2187,8 @@ next-tick@1: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" node-pre-gyp@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + version "0.10.2" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.2.tgz#e8945c20ef6795a20aac2b44f036eb13cf5146e3" dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -2194,7 +2196,7 @@ node-pre-gyp@^0.10.0: nopt "^4.0.1" npm-packlist "^1.1.6" npmlog "^4.0.2" - rc "^1.1.7" + rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" tar "^4" @@ -2435,7 +2437,7 @@ parseuri@0.0.5: dependencies: better-assert "~1.0.0" -parseurl@~1.3.1, parseurl@~1.3.2: +parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -2588,11 +2590,11 @@ raw-body@^2.3.2: iconv-lite "0.4.23" unpipe "1.0.0" -rc@^1.1.7: - version "1.2.6" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" +rc@^1.1.7, rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" dependencies: - deep-extend "~0.4.0" + deep-extend "^0.6.0" ini "~1.3.0" minimist "^1.2.0" strip-json-comments "~2.0.1" @@ -2612,7 +2614,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" dependencies: @@ -2624,7 +2626,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.0.3" util-deprecate "~1.0.1" -readable-stream@^2.1.5: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -2842,17 +2844,17 @@ send@0.16.2: range-parser "~1.2.0" statuses "~1.4.0" -serve-index@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" +serve-index@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" dependencies: - accepts "~1.3.3" - batch "0.5.3" - debug "~2.2.0" + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" escape-html "~1.0.3" - http-errors "~1.5.0" - mime-types "~2.1.11" - parseurl "~1.3.1" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" serve-static@1.13.2: version "1.13.2" @@ -2893,10 +2895,6 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -setprototypeof@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -2960,6 +2958,25 @@ socket.io-client@2.0.4: socket.io-parser "~3.1.1" to-array "0.1.4" +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.2.0" + to-array "0.1.4" + socket.io-parser@~3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" @@ -2969,15 +2986,24 @@ socket.io-parser@~3.1.1: has-binary2 "~1.0.2" isarray "2.0.1" -socket.io@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" dependencies: - debug "~2.6.6" - engine.io "~3.1.0" + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + dependencies: + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" socket.io-adapter "~1.1.0" - socket.io-client "2.0.4" - socket.io-parser "~3.1.1" + socket.io-client "2.1.1" + socket.io-parser "~3.2.0" source-map-resolve@^0.3.0: version "0.3.1" @@ -3077,11 +3103,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" -statuses@~1.3.0: +statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" @@ -3112,6 +3138,13 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" @@ -3134,6 +3167,12 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + strip-bom-string@1.X: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" @@ -3341,8 +3380,8 @@ unique-stream@^2.0.2: through2-filter "^2.0.0" universalify@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" @@ -3373,18 +3412,14 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" uuid@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" -uws@~9.14.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" - v8flags@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.2.tgz#ad6a78a20a6b23d03a8debc11211e3cc23149477" @@ -3472,10 +3507,10 @@ which@^1.2.14: isexe "^2.0.0" wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" dependencies: - string-width "^1.0.2" + string-width "^1.0.2 || 2" window-size@^0.2.0: version "0.2.0" From b708a0724c5a268553e986f5878e24ca8738ec51 Mon Sep 17 00:00:00 2001 From: prerak Date: Wed, 25 Jul 2018 17:37:44 +0200 Subject: [PATCH 162/226] customize dropdown list of month and year --- README.md | 9 +++++++++ css/material-datetimepicker.css | 8 ++++++++ dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- js/angular-material-datetimepicker.js | 4 ++-- 6 files changed, 22 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4b08fe1..a47e8db 100644 --- a/README.md +++ b/README.md @@ -245,6 +245,15 @@ Copy this css code in your project to override default color. .dtp > .dtp-content > .dtp-date-view > header.dtp-header { background: #009796; } + +md-menu-content.dtp-month-list { + background-color: #d0f0f0; +} + +md-menu-content.dtp-year-list { + background-color: #d0f0f0; +} + ``` ### Development diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index b77666a..b401b95 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -69,6 +69,10 @@ md-dialog.dtp { cursor: pointer; } +md-menu-content.dtp-month-list { + background-color: #ffffff; +} + .dtp div.dtp-actual-num { font-size: 2em; line-height: 0.9; @@ -90,6 +94,10 @@ md-dialog.dtp { cursor: pointer; } +md-menu-content.dtp-year-list { + background-color: #ffffff; +} + .dtp div.dtp-month-btn { font-size: 1.4em; line-height: 30px; diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 2722223..789d024 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(e){var t="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},i=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},n='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(t,["ngMaterial"]).factory("mdcDefaultParams",function(){var e={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:n,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(t){if(t)for(var a in t)e.hasOwnProperty(a)&&t.hasOwnProperty(a)&&(e[a]=t[a]);return e}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(t,a,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(s,c,o,l){function d(i){if(i.preventDefault(),c.blur(),c.parent().removeClass("md-input-focused"),!u){u=!0;var l={};for(var d in o)s.hasOwnProperty(d)&&!angular.isUndefined(s[d])&&(l[d]=s[d]);l.currentDate=s.currentDate,l.showTodaysDate=m;var h={controller:r,controllerAs:"picker",locals:{options:l},openFrom:c,closeTo:c,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:l.clickOutsideToClose||!1,disableParentScroll:l.disableParentScroll||!1,hasBackDrop:!1,skipHide:!0,multiple:!0};l.templateUrl?h.templateUrl=l.templateUrl:h.template=n,t.show(h).then(function(t){void 0!==p&&t.utcOffset(p,!0),s.currentDate=t&&!t._isUTC?t.toDate():t,u=!1,e(s.currentDate).isSame(l.currentDate)||a(s.ngChange,0),c.parent().removeClass("md-input-focused")},function(){u=!1,c.parent().removeClass("md-input-focused")})}}var u=!1;s.format||(s.date&&s.time&&s.seconds?s.format="YYYY-MM-DD HH:mm:ss":s.date&&s.time?s.format="YYYY-MM-DD HH:mm":s.date?s.format="YYYY-MM-DD":s.format="HH:mm");var m=null;void 0!==s.showTodaysDate&&"false"!==s.showTodaysDate&&(m=e()),angular.isString(s.currentDate)&&""!==s.currentDate&&(s.currentDate=e(s.currentDate,s.format));var p;if(l){var h={"*":"$inherit",debounce:500};1===angular.version.major&&angular.version.minor>5?(l.$options=l.$options.createChild(h),l.$options.getOption("timezone")&&(p=l.$options.getOption("timezone"))):(s.ngModelOptions&&s.ngModelOptions.timezone&&(h.timezone=s.ngModelOptions.timezone),l.$options=h,l.$options.timezone&&(p=l.$options.timezone)),"utc"!==p&&"UTC"!==p||(p=0),l.$formatters.push(function(t){if(void 0!==t){var a=e(t);return a.isValid()?a.format(s.format):""}}),l.$parsers.push(function(t){if(void 0!==t){var a=e(t,s.format);return void 0!==p&&a.utcOffset(p,void 0===a._tzm),s.minDate&&l.$setValidity("min",!a.isBefore(s.minDate)),s.maxDate&&l.$setValidity("max",!a.isAfter(s.maxDate)),l.$setValidity("format",e(t,s.format,!0).isValid()),a.isValid()?a._isUTC?a:a.toDate():""}})}if(s.editInput||(s.showIcon?c.on("click",d):c.on("focus",d)),s.showIcon){c.addClass("dtp-no-msclear dtp-input");var f='';c.after(i(f+'')(s)),s.openCalendarDiag=function(e){d(e)},s.clear=function(){l.$setViewValue(null),s.currentDate=null,l.$render(),a(function(){s.ngChange(),c[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(t,a,i){var s=i(),c=Object.keys(s);return{show:function(i){var o=a.defer();angular.copy(s);for(var l in i)-1!=c.indexOf[l]&&i.hasOwnProperty(l)&&i[l];var d=null;void 0!==i.showTodaysDate&&"false"!==i.showTodaysDate&&(d=e()),i.showTodaysDate=d;var u={controller:r,controllerAs:"picker",locals:{options:i},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:i.clickOutsideToClose||!1,disableParentScroll:i.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:i.targetEvent,openFrom:i.openFrom,closeTo:i.closeTo};return i.templateUrl?u.templateUrl=i.templateUrl:u.template=n,t.show(u).then(function(e){o.resolve(e&&!e._isUTC?e.toDate():e)},function(){o.reject()}),o.promise}}}]);var r=function(e,t,i){this.currentView=a.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(i()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return r.$inject=["$scope","$mdDialog","mdcDefaultParams"],r.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var t=this.params.minuteSteps;(t<1||t>59)&&(t=1);var a=this.currentDate||e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;return this.params.seconds?(n=a.second())>=60&&(n=59):n=0,e(a).minutes(i).seconds(n).millisecond(0)},initDates:function(){var t=this,a=function(a,i){var n=null;if(angular.isDefined(a)&&null!==a&&""!==a)if(angular.isString(a))n=void 0!==t.params.format&&null!==t.params.format?e(a,t.params.format).locale(t.params.lang):e(a).locale(t.params.lang);else if("number"==typeof a)n=e(a).locale(t.params.lang);else if(angular.isDate(a)){var r=a.getTime();n=e(r,"x").locale(t.params.lang)}else e.isMoment(a)&&(n=a.isValid()?a:i);else n=i;return n};this.currentDate=a(this.params.currentDate,e()),this.currentDate=this.currentNearestMinute(),this.minDate=a(this.params.minDate),this.maxDate=a(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(t){return e(t).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},initSeconds:function(){this.currentView=a.SECOND},isAfterMinDate:function(t,a,i){var n=!0;if(void 0!==this.minDate&&null!==this.minDate){var r=e(this.minDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))>=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))>=parseInt(r.format("X")))}return n},isBeforeMaxDate:function(t,a,i){var n=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var r=e(this.maxDate),s=e(t);a||i||(r.hour(0),r.minute(0),s.hour(0),s.minute(0)),r.second(0),s.second(0),r.millisecond(0),s.millisecond(0),i?n=parseInt(s.format("X"))<=parseInt(r.format("X")):(s.minute(0),r.minute(0),n=parseInt(s.format("X"))<=parseInt(r.format("X")))}return n},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(this.disableDates.indexOf(t)>-1)},isWeekDay:function(e){return!this.weekDays||e.isoWeekday()<=5},selectDate:function(t){t&&(this.currentDate=e(t),this.isAfterMinDate(this.currentDate)||(this.currentDate=e(this.minDate)),this.isBeforeMaxDate(this.currentDate)||(this.currentDate=e(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=e(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return"PM"===this.meridien},incrementMonth:function(e){1===e&&this.isNextMonthVisible()&&this.selectDate(this.currentDate.add(e,"month")),-1===e&&this.isPreviousMonthVisible()&&this.selectDate(this.currentDate.add(e,"month"))},incrementYear:function(e){1===e&&this.isNextYearVisible()&&this.selectDate(this.currentDate.add(e,"year")),-1===e&&this.isPreviousYearVisible()&&this.selectDate(this.currentDate.add(e,"year"))},openMenu:function(e,t){e.open(t)},monthsAvailable:function(){for(var t=[],a=e(this.currentDate),i=0;i<12;i++){var n=a.month(i);this.isAfterMinDate(n.endOf("month"))&&this.isBeforeMaxDate(n.startOf("month"))&&t.push(n.format("MMMM"))}return t},selectMonth:function(e){this.selectDate(this.currentDate.month(e))},yearsAvailable:function(){var t,a,i,n,r=[],s=this.currentDate.year();void 0!==this.minDate&&null!==this.minDate&&(t=e(this.minDate).year()),void 0!==this.maxDate&&null!==this.maxDate&&(a=e(this.maxDate).year()),a&&t?(i=a-t,n=t):t?(i=115,n=t):n=a?a-(i=30):s-(i=60)/2;for(var c=0;c1&&5%i!=0){var n=a.minute(),r=i*Math.round(n/i);if(r>=60&&(r=60-i),r!==n)return!1}return this.isAfterMinDate(a,!0,!0)&&this.isBeforeMaxDate(a,!0,!0)},isSecondAvailable:function(e){return!0},start:function(){this.currentView=a.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var t=this.params.minuteSteps,a=e(),i=t*Math.round(a.minute()/t);i>=60&&(i=60-t);var n;this.params.seconds?(n=a.second())>=60&&(n=59):n=0,this.selectDate(e(a).minutes(i).seconds(n).millisecond(0))},ok:function(){switch(this.currentView){case a.DATE:!0===this.params.time?this.initHours():this.hide(!0);break;case a.HOUR:!0===this.params.minutes?this.initMinutes():this.hide(!0);break;case a.MINUTE:!0===this.params.seconds?this.initSeconds():this.hide(!0);break;case a.SECOND:this.hide(!0)}},cancel:function(){if(this.params.time)switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:this.params.date?this.initDate():this.hide();break;case a.MINUTE:this.initHours();break;case a.SECOND:this.initMinutes()}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(13)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(e){var t=e;return e<12&&this.isPM()&&(t+=12),t},hide:function(e){e?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(t).directive("mdcDatetimePickerCalendar",[function(){for(var t=12*((new Date).getFullYear()+30-1920+1),a=[],i=0;i6&&(i=0),e.push(i.toString());if(s.week=e,r.maxDate||r.minDate){var c=r.minDate?n(r.minDate):0,o=r.maxDate?n(r.maxDate)+1:t;s.months=a.slice(c,o)}else s.months=a;s.topIndex=n(r.currentDate)-s.months[0]},1===angular.version.major&&angular.version.minor<5&&this.$onInit(),s.getItemAtIndex=function(t){var a=(t+1)%12||12,i=1920+Math.floor(t/12),n=e(r.currentDate).year(i).month(a);return c(n)},i.$watch(function(){return r.currentDate?r.currentDate.format("YYYY-MM"):""},function(t,a){if(t!=a){var i=e(t,"YYYY-MM"),c=r.minDate?n(r.minDate):0,o=n(i,c);s.topIndex!=o&&(s.topIndex=o)}});var c=function(t){var a={};if(null!==t){a.name=t.format("MMMM YYYY");var i=e(t).locale(r.params.lang).startOf("month").hour(t.hour()).minute(t.minute()),n=i.format("d");a.days=[];for(var c=i.date();c<=i.daysInMonth();c++){if(c===i.date()){var o=s.week.indexOf(n.toString());if(o>0)for(var l=0;l
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(e){var t=function(t,a){var i=angular.element(t[0].querySelector("tbody")),n=a.cal,r=[];a.month.days.forEach(function(e,t){r.push(""),e.forEach(function(e,a){if(r.push(""),e)if(n.isInRange(e)){var i="month['days']["+t+"]["+a+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),i.html(r.join("")),e(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(e,a,i,n){e.cal=n,e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e),e.$watch(function(){return e.idx},function(i,r){i!=r&&(e.month=n.getItemAtIndex(parseInt(e.idx)),t(a,e))})}}}]),angular.module(t).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(t).directive("mdcDatetimePickerClock",["$timeout",function(e){return{restrict:"E",template:'',link:function(t,a,n){var r="minutes"===n.mode,s="seconds"===n.mode,c=t.picker,o=document.querySelector("md-dialog.dtp"),l=function(e,a){var i=0;if(0!==(e=e>=360?0:e)){var n=r||s?60:12;i=Math.round(n/360*e)}if(r){var o=c.params.minuteSteps;(o<1||o>59)&&(o=1);var l=o*Math.round(i/o);if(l>=60&&(l=60-o),!t.pointAvailable({value:i}))return;c.currentDate.minute(l)}else if(s){if(i>=60&&(i=0),!t.pointAvailable({value:i}))return;c.currentDate.second(i)}else{if(12===i&&(i=0),c.params.shortTime||(c.meridien=a>84?"AM":"PM"),c.isPM()&&(i+=12),!t.pointAvailable({value:i}))return;c.currentDate.hour(i)}},d="ontouchstart"in window,u={POINTER_DOWN:d?"touchstart":"mousedown",POINTER_UP:d?"touchend":"mouseup",POINTER_MOVE:d?"touchmove":"mousemove"},m=function(t){t.preventDefault();var a=t.currentTarget.closest("div"),i=a.getClientRects()[0];d&&(t=t.changedTouches[0]);var n=a.offsetWidth/2-(t.pageX-i.left),r=t.pageY-i.top-a.offsetHeight/2,s=Math.sqrt(Math.pow(n,2)+Math.pow(r,2)),c=Math.round(Math.atan2(n,r)*(180/Math.PI));e(function(){l(c+180,s)})};a.on(u.POINTER_DOWN,function(){a.on(u.POINTER_MOVE,m)}),a.on(u.POINTER_UP,function(){a.off(u.POINTER_MOVE)}),t.$on("$destroy",function(){a.off(u.POINTER_MOVE,m)});var p=function(){var e=angular.element(a[0].querySelector(".dtp-picker-clock")),l=angular.element(o.querySelector(".dtp-picker")),d=o.querySelector(".dtp-content").offsetWidth,u=parseInt(i(l,"paddingLeft").replace("px",""))||0,m=parseInt(i(l,"paddingRight").replace("px",""))||0,p=parseInt(i(l,"paddingTop").replace("px",""))||0,f=parseInt(i(e,"marginLeft").replace("px",""))||0,v=parseInt(i(e,"marginRight").replace("px",""))||0,g=parseInt(i(e,"marginTop").replace("px",""))||0,k=d-(f+v+u+m);e.css("width",k+"px");for(var M=k/2,y=M/1.2,x=[],I=0;I<12;++I){var b=M+y*Math.sin(2*Math.PI*(I/12))+u/2-(u+f),T=M-y*Math.cos(2*Math.PI*(I/12))-g/2-(p+g),w={left:b,top:T,value:r||s?5*I:I,style:{"margin-left":b+"px","margin-top":T+"px"}};r||s?w.display=w.value<10?"0"+w.value:w.value:c.params.shortTime?w.display=0===I?12:I:w.display=I,x.push(w)}if(t.points=x,!c.params.shortTime&&!r&&!s){for(var A=[],S=M/1.8,O=12;O<24;++O){var E=M+S*Math.sin(2*Math.PI*(O/12))+u/2-(u+f),V=M-S*Math.cos(2*Math.PI*(O/12))-g/2-(p+g);A.push({left:E,top:V,value:O,display:O,style:{"margin-left":E+"px","margin-top":V+"px"}})}t.points24=A}t.mode=n.mode,D(),e.css("height",k+"px");var N=a[0].querySelector(".dtp-clock-center"),Y=N.offsetWidth/2||7.5,P=N.offsetHeight/2||7.5,C=M/(c.params.shortTime?1.8:2.3),H=M/1.4,$=M;angular.element(a[0].querySelector(".dtp-hour-hand")).css({left:M+1.5*f+"px",height:C+"px",marginTop:M-C-u+"px"}).addClass(r||s?"":"on"),angular.element(a[0].querySelector(".dtp-minute-hand")).css({left:M+1.5*f+"px",height:H+"px",marginTop:M-H-u+"px"}).addClass(r?"on":""),angular.element(a[0].querySelector(".dtp-second-hand")).css({left:M+1.5*f+"px",height:$+"px",marginTop:M-$-u+"px"}).addClass(s?"on":""),angular.element(N).css({left:M+u+f-Y+"px",marginTop:M-f/2-P+"px"}),h()},h=function(){var e=c.currentNearestMinute(),t=e.hour(),i=e.minute(),n=e.second();f(angular.element(a[0].querySelector(".dtp-hour-hand")),30*t),f(angular.element(a[0].querySelector(".dtp-minute-hand")),6*i),f(angular.element(a[0].querySelector(".dtp-second-hand")),6*n)},f=function(e,t){angular.element(e).css({WebkitTransform:"rotate("+t+"deg)","-moz-transform":"rotate("+t+"deg)","-ms-transform":"rotate("+t+"deg)",transform:"rotate("+t+"deg)"})},D=function(){var e=c.currentNearestMinute(),a=c.params.shortTime?12:24;t.currentValue=r?e.minute():s?e.second():e.hour()%a};t.$watch(function(){var e=c.currentNearestMinute();return e?e.format("HH:mm:ss"):""},function(){D(),h()}),t.setTime=function(e){r||s?s?(e===t.currentValue&&c.ok(),c.currentDate.second(e)):(e!==t.currentValue||c.params.seconds||c.ok(),c.currentDate.minute(e),c.params.seconds?c.params.autoOk&&c.ok():c.currentDate.second(0)):(e!==t.currentValue||c.params.autoOk||c.ok(),c.params.shortTime?c.currentDate.hour(c.isPM()?e+12:e):(c.currentDate.hour(e),c.meridien=e>=12?"PM":"AM"),c.params.autoOk&&c.ok())},t.pointAvailable=function(e){return r?c.isMinuteAvailable(e.value):s?c.isSecondAvailable(e.value):c.isHourAvailable(e.value)};var v=t.$watch(function(){return a[0].querySelectorAll("div").length},function(){p(),v()})}}}]),t}var t=window&&window.process&&window.process.type;"function"==typeof define&&define.amd?define(["moment"],e):"undefined"!=typeof module&&module&&module.exports&&"function"==typeof require&&!t?module.exports=e(require("moment")):e(("undefined"!=typeof global?global:window).moment)}(); +!function(){"use strict";function e(p){var e="ngMaterialDatePicker",i={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(d,u,m){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(n,r,s,a){var c=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var o,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),a){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(m(i+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){a.$setViewValue(null),n.currentDate=null,a.$render(),u(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(r,s,e){var c=e(),o=Object.keys(c);return{show:function(e){var t=s.defer();angular.copy(c);for(var a in e)-1!=o.indexOf[a]&&e.hasOwnProperty(a)&&e[a];var i=null;void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(i=p()),e.showTodaysDate=i;var n={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?n.templateUrl=e.templateUrl:n.template=h,r.show(n).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t,a){this.currentView=i.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=i,this.params=angular.copy(a()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$scope","$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","mdcDefaultParams","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","this","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\n 'use strict';\n\n function ngMaterialDatePicker(moment) {\n var moduleName = \"ngMaterialDatePicker\";\n\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\n \n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\n\n var css = function (el, name) {\n el = angular.element(el);\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\n };\n\n var template = \n '' +\n ' ' +\n '
' +\n '
' +\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\n '
' +\n ' ×' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\n ' ' +\n ' ' +\n ' {{itemMonth}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
{{picker.currentDate.format(\"DD\")}}
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\n ' ' +\n ' ' +\n ' {{itemYear}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
'+\n '
' + //start time \n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\n ' {{picker.currentDate.format(\"A\")}}'+\n '
' +\n '
' +\n '
' +\n ' ' +\n '
' +\n '
' +\n ' ' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\n '
' +\n ' ' +\n '
' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n ' {{::picker.params.todayText}}' +\n ' {{::picker.params.cancelText}}' +\n ' {{::picker.params.okText}}' +\n ' ' +\n '
';\n\n angular.module(moduleName, ['ngMaterial'])\n .factory('mdcDefaultParams', function () {\n var default_params = {\n date: true,\n time: true,\n minutes: true,\n seconds: false,\n format: 'YYYY-MM-DD',\n minDate: null,\n maxDate: null,\n currentDate: null,\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\n weekStart: 0,\n shortTime: false,\n cancelText: 'Cancel',\n okText: 'OK',\n amText: 'AM',\n pmText: 'PM',\n todayBtn: true,\n todayText: 'Today',\n disableDates: [],\n weekDays: false,\n disableParentScroll: false,\n autoOk: false,\n editInput: false,\n clickOutsideToClose: false,\n minuteSteps: 5,\n showIcon: false,\n template: template,\n templateUrl: '',\n targetEvent: null,\n openFrom: null,\n closeTo: null\n };\n\n return function (params) {\n if (params) {\n for (var i in params) {\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\n }\n }\n return default_params;\n };\n })\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\n function ($mdDialog, $timeout, $compile) {\n\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n currentDate: '=ngModel',\n ngModelOptions: '=',\n ngChange: '&',\n time: '=',\n date: '=',\n minutes: '=',\n seconds: '=',\n minDate: '=',\n maxDate: '=',\n disableDates: '=',\n weekDays: '=',\n shortTime: '=',\n weekStart: '=',\n format: '@',\n cancelText: '@',\n okText: '@',\n lang: '@',\n amText: '@',\n pmText: '@',\n showTodaysDate: '@',\n todayBtn: '=',\n todayText: '@',\n disableParentScroll: '=',\n autoOk: '=',\n editInput: '=',\n clickOutsideToClose: '=',\n minuteSteps: '=',\n showIcon: '=',\n templateUrl: '@',\n },\n link: function (scope, element, attrs, ngModel) {\n var isOn = false;\n if (!scope.format) {\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\n else if (scope.date) scope.format = 'YYYY-MM-DD';\n else scope.format = 'HH:mm';\n }\n\n var dateOfTheDay = null;\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\n scope.currentDate = moment(scope.currentDate, scope.format);\n }\n\n var offset;\n if (ngModel) {\n var ngModelOptions = {'*': '$inherit', debounce: 500};\n if (angular.version.major === 1 && angular.version.minor > 5) {\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\n } else {\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\n ngModel.$options = ngModelOptions;\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\n }\n if (offset==='utc' || offset==='UTC') offset = 0;\n \n ngModel.$formatters.push(function (value) {\n if (typeof value === 'undefined') return;\n var m = moment(value);\n return m.isValid() ? m.format(scope.format) : '';\n });\n \n ngModel.$parsers.push(function (value) {\n if (typeof value === 'undefined') return;\n \n var m = moment(value, scope.format);\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\n\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\n });\n \n }\n\n function openCalendar(e) {\n e.preventDefault();\n element.blur();\n element.parent().removeClass('md-input-focused');\n if (isOn) {\n return;\n }\n isOn = true;\n var options = {};\n for (var i in attrs) {\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\n options[i] = scope[i];\n }\n }\n options.currentDate = scope.currentDate;\n options.showTodaysDate = dateOfTheDay;\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n openFrom: element,\n closeTo: element,\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n hasBackDrop: false,\n skipHide: true,\n multiple: true,\n };\n\n if (!options.templateUrl) dialogOptions.template = template;\n else dialogOptions.templateUrl = options.templateUrl;\n \n $mdDialog.show(dialogOptions).then(function(v) {\n\n if (offset !== undefined) v.utcOffset(offset, true);\n\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\n isOn = false;\n\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\n $timeout(scope.ngChange, 0);\n }\n\n element.parent().removeClass('md-input-focused');\n }, function () {\n isOn = false;\n element.parent().removeClass('md-input-focused');\n });\n }\n\n if (!scope.editInput) {\n if (scope.showIcon) {\n element.on('click', openCalendar);\n } else {\n element.on('focus', openCalendar);\n }\n }\n \n if (scope.showIcon) {\n element.addClass('dtp-no-msclear dtp-input');\n var calendarButton =\n '' +\n '' +\n '',\n clearButton = '';\n element.after($compile(calendarButton + clearButton)(scope));\n\n scope.openCalendarDiag = function(e) {\n openCalendar(e);\n };\n\n scope.clear = function() {\n ngModel.$setViewValue(null);\n scope.currentDate = null;\n ngModel.$render();\n $timeout(function() {\n scope.ngChange();\n element[0].focus();\n }, 0, false);\n };\n }\n }\n };\n }])\n // Returns a service that opens a dialog when the attribute shown is called\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\n var defaultParams = mdcDefaultParams();\n var accepted_options = Object.keys(defaultParams);\n var service = {\n show: function (options) {\n var deferred = $q.defer();\n var params = angular.copy(defaultParams);\n for (var i in options) {\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\n params = options[i];\n }\n }\n\n var dateOfTheDay = null;\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n options.showTodaysDate = dateOfTheDay;\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n skipHide: true,\n multiple: true,\n targetEvent: options.targetEvent,\n openFrom: options.openFrom,\n closeTo: options.closeTo,\n };\n\n if (!options.templateUrl) dialogOptions.template = template;\n else dialogOptions.templateUrl = options.templateUrl;\n\n $mdDialog.show(dialogOptions).then(function (v) {\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\n }, function () {\n deferred.reject();\n });\n return deferred.promise;\n }\n };\n\n return service;\n }])\n ;\n\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\n this.currentView = VIEW_STATES.DATE;\n this._dialog = $mdDialog;\n\n this._attachedEvents = [];\n this.VIEWS = VIEW_STATES;\n this.params = angular.copy(mdcDefaultParams());\n this.meridien = 'AM';\n this.params = angular.extend(this.params, this.options);\n\n this.init();\n };\n\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\n PluginController.prototype = {\n init: function () {\n this.timeMode = this.params.time && !this.params.date;\n this.dateMode = this.params.date;\n this.initDates();\n this.start();\n },\n currentNearestMinute: function () {\n var nearestMin = this.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n\n var date = this.currentDate || moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n\n var seconds;\n if (this.params.seconds) {\n seconds = date.second();\n if (seconds >= 60) seconds = 60 - 1;\n } else seconds = 0;\n\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\n },\n initDates: function () {\n var that = this;\n var _dateParam = function (input, fallback) {\n var ret = null;\n if (angular.isDefined(input) && input !== null && input !== '') {\n if (angular.isString(input)) {\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\n ret = moment(input, that.params.format).locale(that.params.lang);\n }\n else {\n ret = moment(input).locale(that.params.lang);\n }\n } else if (typeof input === 'number') {\n ret = moment(input).locale(that.params.lang);\n } else {\n if (angular.isDate(input)) {\n var x = input.getTime();\n ret = moment(x, \"x\").locale(that.params.lang);\n } else if (moment.isMoment(input)) {\n if (input.isValid()) ret = input;\n else ret = fallback;\n }\n }\n } else {\n ret = fallback;\n }\n return ret;\n };\n\n this.currentDate = _dateParam(this.params.currentDate, moment());\n this.currentDate = this.currentNearestMinute();\n this.minDate = _dateParam(this.params.minDate);\n this.maxDate = _dateParam(this.params.maxDate);\n this.disableDates = this.params.disableDates.map(function (x) {\n return moment(x).format('MMMM Do YYYY');\n });\n this.selectDate(this.currentDate);\n this.weekDays = this.params.weekDays;\n },\n initDate: function () {\n this.currentView = VIEW_STATES.DATE;\n },\n initHours: function () {\n this.currentView = VIEW_STATES.HOUR;\n },\n initMinutes: function () {\n this.currentView = VIEW_STATES.MINUTE;\n },\n initSeconds: function () {\n this.currentView = VIEW_STATES.SECOND;\n },\n isAfterMinDate: function (date, checkHour, checkMinute) {\n var _return = true;\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n var _minDate = moment(this.minDate);\n var _date = moment(date);\n\n if (!checkHour && !checkMinute) {\n _minDate.hour(0);\n _minDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _minDate.second(0);\n _date.second(0);\n _minDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _minDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\n var _return = true;\n\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n var _maxDate = moment(this.maxDate);\n var _date = moment(date);\n\n if (!checkTime && !checkMinute) {\n _maxDate.hour(0);\n _maxDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _maxDate.second(0);\n _date.second(0);\n _maxDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _maxDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isInDisableDates: function (date) {\n var dut = date.format('MMMM Do YYYY');\n if (this.disableDates.indexOf(dut) > -1) {\n return false;\n }\n return true;\n },\n isWeekDay: function(date) {\n if (this.weekDays) {\n if (date.isoWeekday() <= 5) {\n return true;\n }\n return false;\n }\n return true;\n },\n selectDate: function (date) {\n if (date) {\n this.currentDate = moment(date);\n if (!this.isAfterMinDate(this.currentDate)) {\n this.currentDate = moment(this.minDate);\n }\n\n if (!this.isBeforeMaxDate(this.currentDate)) {\n this.currentDate = moment(this.maxDate);\n }\n this.currentDate.locale(this.params.lang);\n this.calendarStart = moment(this.currentDate);\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\n }\n },\n isPM: function () {\n return this.meridien === 'PM';\n },\n incrementMonth: function (amount) {\n if (amount === 1 && this.isNextMonthVisible()) {\n this.selectDate(this.currentDate.add(amount, 'month'));\n }\n\n if (amount === -1 && this.isPreviousMonthVisible()) {\n this.selectDate(this.currentDate.add(amount, 'month'));\n }\n },\n incrementYear: function (amount) {\n if (amount === 1 && this.isNextYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n\n if (amount === -1 && this.isPreviousYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n },\n openMenu: function ($mdMenu, ev) {\n $mdMenu.open(ev); \n },\n monthsAvailable: function () {\n var monthsArr = [], \n _date = moment(this.currentDate);\n\n for (var m = 0; m < 12; m++) {\n var curMonth = _date.month(m);\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\n monthsArr.push(curMonth.format('MMMM'));\n }\n }\n return monthsArr;\n },\n selectMonth: function (month) {\n this.selectDate(this.currentDate.month(month));\n },\n yearsAvailable: function () {\n var _minDate, _maxDate, len, startYear, yearsArr = [],\n _date = this.currentDate.year();\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n _minDate = moment(this.minDate).year();\n }\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n _maxDate = moment(this.maxDate).year();\n }\n\n if (_maxDate && _minDate) {\n len = _maxDate - _minDate;\n startYear = _minDate;\n } else if (_minDate) { \n len = 115;\n startYear = _minDate;\n } else if (_maxDate) { \n len = 30;\n startYear = _maxDate - len;\n } else {\n len = 60;\n startYear = _date - len/2;\n }\n \n for (var i=0; i < len; i++) {\n yearsArr.push(startYear+i);\n }\n return yearsArr;\n },\n selectYear: function (year) {\n this.selectDate(this.currentDate.year(year));\n },\n isPreviousMonthVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\n },\n isNextMonthVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\n },\n isPreviousYearVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\n },\n isNextYearVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\n },\n isHourAvailable: function (hour) {\n var _date = moment(this.currentDate);\n if (this.params.shortTime) {\n _date.hour(this.convertHours(hour)).minute(0).second(0);\n } else {\n _date.hour(hour).minute(0).second(0);\n }\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\n },\n isMinuteAvailable: function (minute) {\n var _date = moment(this.currentDate);\n _date.minute(minute).second(0);\n\n var nearestMin = this.params.minuteSteps;\n if (nearestMin > 1 && 5 % nearestMin !== 0){\n var _curmin = _date.minute();\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n if (minutes !== _curmin) return false;\n }\n\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\n },\n isSecondAvailable: function (second) {\n return true;\n },\n start: function () {\n this.currentView = VIEW_STATES.DATE;\n if (this.params.date) {\n this.initDate();\n } else {\n if (this.params.time) {\n this.initHours();\n }\n }\n },\n today: function () {\n var nearestMin = this.params.minuteSteps;\n var date = moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n\n var seconds;\n if (this.params.seconds) {\n seconds = date.second();\n if (seconds >= 60) seconds = 60 - 1;\n } else seconds = 0;\n\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\n },\n ok: function () {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n if (this.params.time === true) {\n this.initHours();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.HOUR:\n if (this.params.minutes === true) {\n this.initMinutes();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.MINUTE:\n if (this.params.seconds === true) {\n this.initSeconds();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.SECOND:\n this.hide(true);\n break;\n }\n },\n cancel: function () {\n if (this.params.time) {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n this.hide();\n break;\n case VIEW_STATES.HOUR:\n if (this.params.date) {\n this.initDate();\n }\n else {\n this.hide();\n }\n break;\n case VIEW_STATES.MINUTE:\n this.initHours();\n break;\n case VIEW_STATES.SECOND:\n this.initMinutes();\n break; \n }\n }\n else {\n this.hide();\n }\n },\n selectMonthBefore: function () {\n this.calendarStart.subtract(1, 'months');\n },\n selectMonthAfter: function () {\n this.calendarStart.add(1, 'months');\n },\n selectYearBefore: function () {\n this.calendarStart.subtract(1, 'years');\n },\n selectYearAfter: function () {\n this.calendarStart.add(1, 'years');\n },\n selectAM: function () {\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\n if (this.currentDate.hour() >= 12) {\n this.selectDate(this.currentDate.subtract(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\n }\n }\n },\n selectPM: function () {\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\n if (this.currentDate.hour() < 12) {\n this.selectDate(this.currentDate.add(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\n }\n }\n },\n convertHours: function (h) {\n var _return = h;\n if (h < 12 && this.isPM()) _return += 12;\n\n return _return;\n },\n hide: function (okBtn) {\n if (okBtn) this._dialog.hide(this.currentDate);\n else this._dialog.cancel();\n }\n };\n\n angular.module(moduleName)\n .directive('mdcDatetimePickerCalendar', [\n function () {\n\n var YEAR_MIN = 1920,\n YEAR_MAX = new Date().getFullYear() + 30,\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\n ITEM_HEIGHT = 240,\n MONTHS = [];\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\n MONTHS.push(i);\n }\n\n var currentMonthIndex = function (date, low) {\n low = low ? low : 0;\n var year = date.year();\n var month = date.month();\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\n };\n\n return {\n restrict: 'E',\n scope: {\n picker: '=',\n date: '='\n },\n bindToController: true,\n controllerAs: 'cal',\n controller: ['$scope', function ($scope) {\n var calendar = this, picker;\n\n this.$onInit = function () {\n picker = this.picker;\n\n var days = [];\n for (var i = picker.params.weekStart; days.length < 7; i++) {\n if (i > 6) i = 0;\n days.push(i.toString());\n }\n calendar.week = days;\n\n if (!picker.maxDate && !picker.minDate) {\n calendar.months = MONTHS;\n } else {\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\n calendar.months = MONTHS.slice(low, high);\n }\n\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\n };\n\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\n \n calendar.getItemAtIndex = function (index) {\n var month = ((index + 1) % 12) || 12;\n var year = YEAR_MIN + Math.floor(index / 12);\n var monthObj = moment(picker.currentDate).year(year).month(month);\n return generateMonthCalendar(monthObj);\n };\n\n $scope.$watch(function () {\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\n }, function (val2, val1) {\n if (val2 != val1) {\n var nDate = moment(val2, 'YYYY-MM');\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var index = currentMonthIndex(nDate, low);\n if (calendar.topIndex != index) {\n calendar.topIndex = index;\n }\n }\n });\n\n var generateMonthCalendar = function (date) {\n var month = {};\n if (date !== null) {\n month.name = date.format('MMMM YYYY');\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\n .hour(date.hour())\n .minute(date.minute());\n var iNumDay = startOfMonth.format('d');\n month.days = [];\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\n if (i === startOfMonth.date()) {\n var iWeek = calendar.week.indexOf(iNumDay.toString());\n if (iWeek > 0) {\n for (var x = 0; x < iWeek; x++) {\n month.days.push(0);\n }\n }\n }\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\n }\n\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\n for (var j = 0; j < slices; j++) {\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\n }\n month.days = daysTmp;\n return month;\n }\n\n };\n\n calendar.toDay = function (i) {\n return moment(parseInt(i), \"d\")\n .locale(picker.params.lang)\n .format(\"dd\")\n .substring(0, 1);\n };\n\n calendar.isInRange = function (date) {\n return picker.isAfterMinDate(moment(date), false, false) &&\n picker.isBeforeMaxDate(moment(date), false, false) &&\n picker.isWeekDay(moment(date)) &&\n picker.isInDisableDates(moment(date));\n };\n\n calendar.selectDate = function (date) {\n if (date) {\n if (calendar.isSelectedDay(date)) {\n return picker.ok();\n }\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\n if (picker.params.autoOk) {\n picker.ok();\n }\n }\n };\n\n calendar.isSelectedDay = function (m) {\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\n };\n\n calendar.isDateOfTheDay = function (m) {\n var today = calendar.picker.options.showTodaysDate;\n if (!today) {\n return false;\n }\n\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\n };\n }],\n template: \n '' +\n '
' +\n '
' +\n '
' +\n '
'\n };\n }])\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\n function ($compile) {\n var buildCalendarContent = function (element, scope) {\n var tbody = angular.element(element[0].querySelector('tbody'));\n var calendar = scope.cal, month = scope.month;\n\n var tbodyHtml = [];\n\n month.days.forEach(function (weekDays, i) {\n tbodyHtml.push('');\n weekDays.forEach(function (weekDay, j) {\n tbodyHtml.push('');\n if (weekDay) {\n if (calendar.isInRange(weekDay)) {\n //build a\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\n\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n } else {\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n }\n }\n tbodyHtml.push('');\n });\n tbodyHtml.push('');\n });\n\n tbody.html(tbodyHtml.join(''));\n $compile(tbody)(scope);\n };\n\n return {\n scope: {\n idx: '='\n },\n require: '^mdcDatetimePickerCalendar',\n restrict: 'AE',\n template: \n '
{{month.name}}
' +\n '' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
{{cal.toDay(day)}}
',\n link: function (scope, element, attrs, calendar) {\n scope.cal = calendar;\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n scope.$watch(function () {\n return scope.idx;\n }, function (idx, oldIdx) {\n if (idx != oldIdx) {\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n }\n });\n }\n };\n }\n ])\n ;\n\n angular.module(moduleName)\n .directive('mdcDtpNoclick', function () {\n return {\n link: function (scope, el) {\n el.on('click', function (e) {\n e.preventDefault();\n });\n }\n };\n });\n angular.module(moduleName)\n .directive('mdcDatetimePickerClock', ['$timeout',\n function ($timeout) {\n\n var template = \n '
 ' +\n '
' +\n ' {{point.display}}' +\n ' {{point.display}}' +\n '
' +\n '' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
';\n\n return {\n restrict: 'E',\n template: template,\n link: function (scope, element, attrs) {\n var minuteMode = attrs.mode === 'minutes';\n var secondMode = attrs.mode === 'seconds';\n var picker = scope.picker;\n //banking on the fact that there will only be one at a time\n var componentRoot = document.querySelector('md-dialog.dtp');\n\n var setTimeDegRay = function(deg, ray) {\n var val = 0;\n deg = deg >= 360 ? 0 : deg;\n if (deg !== 0) {\n var divider = minuteMode||secondMode ? 60 : 12;\n val = Math.round(divider / 360 * deg);\n }\n\n if (minuteMode) {\n var nearestMin = picker.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n\n var minutes = (nearestMin * Math.round(val / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.minute(minutes);\n } else if (!secondMode){\n if (val === 12) val = 0;\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\n if (picker.isPM()) val += 12;\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.hour(val);\n } else {\n if (val >= 60) val = 0;\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.second(val);\n }\n \n };\n\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\n EVENTS = {\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\n };\n\n var onMoveEvent = function(e) {\n e.preventDefault();\n\n var closestTarget = e.currentTarget.closest('div'),\n clientRect = closestTarget.getClientRects()[0];\n\n if (isTouchSupported) e = e.changedTouches[0];\n \n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\n \n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\n\n $timeout(function() {\n setTimeDegRay(deg+180, ray);\n });\n };\n\n element.on(EVENTS.POINTER_DOWN, function() {\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\n });\n\n element.on(EVENTS.POINTER_UP, function() {\n element.off(EVENTS.POINTER_MOVE);\n });\n\n scope.$on(\"$destroy\", function() {\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \n });\n\n var exec = function () {\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\n\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\n\n //set width\n var clockWidth = (w - (mL + mR + pL + pR));\n clock.css('width', (clockWidth) + 'px');\n\n var r = (clockWidth / 2);\n var j = r / 1.2; // radius for low number\n \n var points = [];\n\n for (var h = 0; h < 12; ++h) {\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\n var left = (r + x + pL / 2) - (pL + mL);\n var top = (r - y - mT / 2) - (pT + mT);\n\n var hour = {\n left: left,\n top: top,\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\n };\n\n if (minuteMode || secondMode) {\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\n } else {\n if (picker.params.shortTime) {\n hour.display = h === 0 ? 12 : h;\n } else {\n hour.display = h;\n }\n }\n\n points.push(hour);\n }\n scope.points = points;\n\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\n var points24 = [];\n\n var j24 = r / 1.8; // radius for high number\n for (var h24 = 12; h24 < 24; ++h24) {\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\n var left24 = (r + x24 + pL / 2) - (pL + mL);\n var top24 = (r - y24 - mT / 2) - (pT + mT);\n\n points24.push({\n left: left24,\n top: top24,\n value: h24,\n display: h24,\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\n });\n }\n scope.points24 = points24;\n }\n\n scope.mode = attrs.mode;\n setCurrentValue();\n clock.css('height', clockWidth + 'px');\n\n var clockCenter = element[0].querySelector('.dtp-clock-center');\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\n var _mL = r / 1.4;\n var _sL = r;\n\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _hL + 'px',\n marginTop: (r - _hL - pL) + 'px'\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _mL + 'px',\n marginTop: r - _mL - pL + 'px'\n }).addClass(minuteMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _sL + 'px',\n marginTop: r - _sL - pL + 'px'\n }).addClass(secondMode ? 'on' : '');\n\n angular.element(clockCenter).css({\n left: r + pL + mL - centerWidth + 'px',\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\n });\n animateHands();\n };\n\n var animateHands = function () {\n var _date = picker.currentNearestMinute();\n var h = _date.hour();\n var m = _date.minute();\n var s = _date.second();\n\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\n };\n\n var rotateElement = function (el, deg) {\n angular.element(el).css({\n WebkitTransform: 'rotate(' + deg + 'deg)',\n '-moz-transform': 'rotate(' + deg + 'deg)',\n '-ms-transform': 'rotate(' + deg + 'deg)',\n 'transform': 'rotate(' + deg + 'deg)'\n });\n };\n\n\n var setCurrentValue = function () {\n var date = picker.currentNearestMinute();\n var nbH = picker.params.shortTime ? 12 : 24;\n if (minuteMode) scope.currentValue = date.minute();\n else if (secondMode) scope.currentValue = date.second();\n else scope.currentValue = date.hour() % nbH;\n };\n\n scope.$watch(function () {\n var tmp = picker.currentNearestMinute();\n return tmp ? tmp.format('HH:mm:ss') : '';\n }, function () {\n setCurrentValue();\n animateHands();\n });\n\n scope.setTime = function (val) {\n if (!minuteMode && !secondMode) {\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\n\n if (picker.params.shortTime) {\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\n } else {\n picker.currentDate.hour(val);\n if (val >= 12) picker.meridien = 'PM';\n else picker.meridien = 'AM';\n }\n\n if (picker.params.autoOk) picker.ok(); // single click\n } else if (!secondMode) {\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\n \n picker.currentDate.minute(val);\n if (!picker.params.seconds) {\n picker.currentDate.second(0);\n } else if (picker.params.autoOk) picker.ok(); // single click\n } else {\n if (val === scope.currentValue) picker.ok(); // double click\n picker.currentDate.second(val);\n }\n };\n\n scope.pointAvailable = function (point) {\n if (minuteMode) return picker.isMinuteAvailable(point.value);\n else if (secondMode) return picker.isSecondAvailable(point.value);\n else return picker.isHourAvailable(point.value);\n };\n\n var unWatcher = scope.$watch(function () {\n return element[0].querySelectorAll('div').length;\n }, function () {\n exec();\n unWatcher();\n });\n }\n };\n }]);\n return moduleName;\n }\n\n var isElectron = window && window.process && window.process.type;\n if (typeof define === 'function' && define.amd) {\n define(['moment'], ngMaterialDatePicker);\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\n module.exports = ngMaterialDatePicker(require('moment'));\n } else {\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\n }\n})();\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 16692e8..ba5d548 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}md-menu-content.dtp-month-list{background-color:#fff}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}md-menu-content.dtp-year-list{background-color:#fff}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 4ccaf05..01d1cfe 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -30,7 +30,7 @@ '
' + ' ' + '
{{picker.currentDate.format("MMM")|uppercase}}
' + - ' ' + + ' ' + ' ' + ' {{itemMonth}}' + ' ' + @@ -43,7 +43,7 @@ '
' + ' ' + '
{{picker.currentDate.format("YYYY")}}
' + - ' ' + + ' ' + ' ' + ' {{itemYear}}' + ' ' + From b9426608c7cdae4578bd234799a6a9ecb42dee48 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 3 Aug 2018 13:16:46 -0400 Subject: [PATCH 163/226] version 1.16.1 --- bower.json | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- yarn.lock | 35 ++++++++----------- 4 files changed, 17 insertions(+), 24 deletions(-) diff --git a/bower.json b/bower.json index cb22494..6662960 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.16.0", + "version": "1.16.1", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 8502e35..9c6c1af 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","mdcDefaultParams","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","this","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\n 'use strict';\n\n function ngMaterialDatePicker(moment) {\n var moduleName = \"ngMaterialDatePicker\";\n\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\n \n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\n\n var css = function (el, name) {\n el = angular.element(el);\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\n };\n\n var template = \n '' +\n ' ' +\n '
' +\n '
' +\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\n '
' +\n ' ×' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\n ' ' +\n ' ' +\n ' {{itemMonth}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
{{picker.currentDate.format(\"DD\")}}
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\n ' ' +\n ' ' +\n ' {{itemYear}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
'+\n '
' + //start time \n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\n ' {{picker.currentDate.format(\"A\")}}'+\n '
' +\n '
' +\n '
' +\n ' ' +\n '
' +\n '
' +\n ' ' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\n '
' +\n ' ' +\n '
' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n ' {{::picker.params.todayText}}' +\n ' {{::picker.params.cancelText}}' +\n ' {{::picker.params.okText}}' +\n ' ' +\n '
';\n\n angular.module(moduleName, ['ngMaterial'])\n .factory('mdcDefaultParams', function () {\n var default_params = {\n date: true,\n time: true,\n minutes: true,\n seconds: false,\n format: 'YYYY-MM-DD',\n minDate: null,\n maxDate: null,\n currentDate: null,\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\n weekStart: 0,\n shortTime: false,\n cancelText: 'Cancel',\n okText: 'OK',\n amText: 'AM',\n pmText: 'PM',\n todayBtn: true,\n todayText: 'Today',\n disableDates: [],\n weekDays: false,\n disableParentScroll: false,\n autoOk: false,\n editInput: false,\n clickOutsideToClose: false,\n minuteSteps: 5,\n showIcon: false,\n template: template,\n templateUrl: '',\n targetEvent: null,\n openFrom: null,\n closeTo: null\n };\n\n return function (params) {\n if (params) {\n for (var i in params) {\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\n }\n }\n return default_params;\n };\n })\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\n function ($mdDialog, $timeout, $compile) {\n\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n currentDate: '=ngModel',\n ngModelOptions: '=',\n ngChange: '&',\n time: '=',\n date: '=',\n minutes: '=',\n seconds: '=',\n minDate: '=',\n maxDate: '=',\n disableDates: '=',\n weekDays: '=',\n shortTime: '=',\n weekStart: '=',\n format: '@',\n cancelText: '@',\n okText: '@',\n lang: '@',\n amText: '@',\n pmText: '@',\n showTodaysDate: '@',\n todayBtn: '=',\n todayText: '@',\n disableParentScroll: '=',\n autoOk: '=',\n editInput: '=',\n clickOutsideToClose: '=',\n minuteSteps: '=',\n showIcon: '=',\n templateUrl: '@',\n },\n link: function (scope, element, attrs, ngModel) {\n var isOn = false;\n if (!scope.format) {\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\n else if (scope.date) scope.format = 'YYYY-MM-DD';\n else scope.format = 'HH:mm';\n }\n\n var dateOfTheDay = null;\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\n scope.currentDate = moment(scope.currentDate, scope.format);\n }\n\n var offset;\n if (ngModel) {\n var ngModelOptions = {'*': '$inherit', debounce: 500};\n if (angular.version.major === 1 && angular.version.minor > 5) {\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\n } else {\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\n ngModel.$options = ngModelOptions;\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\n }\n if (offset==='utc' || offset==='UTC') offset = 0;\n \n ngModel.$formatters.push(function (value) {\n if (typeof value === 'undefined') return;\n var m = moment(value);\n return m.isValid() ? m.format(scope.format) : '';\n });\n \n ngModel.$parsers.push(function (value) {\n if (typeof value === 'undefined') return;\n \n var m = moment(value, scope.format);\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\n\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\n });\n \n }\n\n function openCalendar(e) {\n e.preventDefault();\n element.blur();\n element.parent().removeClass('md-input-focused');\n if (isOn) {\n return;\n }\n isOn = true;\n var options = {};\n for (var i in attrs) {\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\n options[i] = scope[i];\n }\n }\n options.currentDate = scope.currentDate;\n options.showTodaysDate = dateOfTheDay;\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n openFrom: element,\n closeTo: element,\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n hasBackDrop: false,\n skipHide: true,\n multiple: true,\n };\n\n if (!options.templateUrl) dialogOptions.template = template;\n else dialogOptions.templateUrl = options.templateUrl;\n \n $mdDialog.show(dialogOptions).then(function(v) {\n\n if (offset !== undefined) v.utcOffset(offset, true);\n\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\n isOn = false;\n\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\n $timeout(scope.ngChange, 0);\n }\n\n element.parent().removeClass('md-input-focused');\n }, function () {\n isOn = false;\n element.parent().removeClass('md-input-focused');\n });\n }\n\n if (!scope.editInput) {\n if (scope.showIcon) {\n element.on('click', openCalendar);\n } else {\n element.on('focus', openCalendar);\n }\n }\n \n if (scope.showIcon) {\n element.addClass('dtp-no-msclear dtp-input');\n var calendarButton =\n '' +\n '' +\n '',\n clearButton = '';\n element.after($compile(calendarButton + clearButton)(scope));\n\n scope.openCalendarDiag = function(e) {\n openCalendar(e);\n };\n\n scope.clear = function() {\n ngModel.$setViewValue(null);\n scope.currentDate = null;\n ngModel.$render();\n $timeout(function() {\n scope.ngChange();\n element[0].focus();\n }, 0, false);\n };\n }\n }\n };\n }])\n // Returns a service that opens a dialog when the attribute shown is called\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\n var defaultParams = mdcDefaultParams();\n var accepted_options = Object.keys(defaultParams);\n var service = {\n show: function (options) {\n var deferred = $q.defer();\n var params = angular.copy(defaultParams);\n for (var i in options) {\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\n params = options[i];\n }\n }\n\n var dateOfTheDay = null;\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n options.showTodaysDate = dateOfTheDay;\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n skipHide: true,\n multiple: true,\n targetEvent: options.targetEvent,\n openFrom: options.openFrom,\n closeTo: options.closeTo,\n };\n\n if (!options.templateUrl) dialogOptions.template = template;\n else dialogOptions.templateUrl = options.templateUrl;\n\n $mdDialog.show(dialogOptions).then(function (v) {\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\n }, function () {\n deferred.reject();\n });\n return deferred.promise;\n }\n };\n\n return service;\n }])\n ;\n\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\n this.currentView = VIEW_STATES.DATE;\n this._dialog = $mdDialog;\n\n this._attachedEvents = [];\n this.VIEWS = VIEW_STATES;\n this.params = angular.copy(mdcDefaultParams());\n this.meridien = 'AM';\n this.params = angular.extend(this.params, this.options);\n\n this.init();\n };\n\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\n PluginController.prototype = {\n init: function () {\n this.timeMode = this.params.time && !this.params.date;\n this.dateMode = this.params.date;\n this.initDates();\n this.start();\n },\n currentNearestMinute: function () {\n var nearestMin = this.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n\n var date = this.currentDate || moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n\n var seconds;\n if (this.params.seconds) {\n seconds = date.second();\n if (seconds >= 60) seconds = 60 - 1;\n } else seconds = 0;\n\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\n },\n initDates: function () {\n var that = this;\n var _dateParam = function (input, fallback) {\n var ret = null;\n if (angular.isDefined(input) && input !== null && input !== '') {\n if (angular.isString(input)) {\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\n ret = moment(input, that.params.format).locale(that.params.lang);\n }\n else {\n ret = moment(input).locale(that.params.lang);\n }\n } else if (typeof input === 'number') {\n ret = moment(input).locale(that.params.lang);\n } else {\n if (angular.isDate(input)) {\n var x = input.getTime();\n ret = moment(x, \"x\").locale(that.params.lang);\n } else if (moment.isMoment(input)) {\n if (input.isValid()) ret = input;\n else ret = fallback;\n }\n }\n } else {\n ret = fallback;\n }\n return ret;\n };\n\n this.currentDate = _dateParam(this.params.currentDate, moment());\n this.currentDate = this.currentNearestMinute();\n this.minDate = _dateParam(this.params.minDate);\n this.maxDate = _dateParam(this.params.maxDate);\n this.disableDates = this.params.disableDates.map(function (x) {\n return moment(x).format('MMMM Do YYYY');\n });\n this.selectDate(this.currentDate);\n this.weekDays = this.params.weekDays;\n },\n initDate: function () {\n this.currentView = VIEW_STATES.DATE;\n },\n initHours: function () {\n this.currentView = VIEW_STATES.HOUR;\n },\n initMinutes: function () {\n this.currentView = VIEW_STATES.MINUTE;\n },\n initSeconds: function () {\n this.currentView = VIEW_STATES.SECOND;\n },\n isAfterMinDate: function (date, checkHour, checkMinute) {\n var _return = true;\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n var _minDate = moment(this.minDate);\n var _date = moment(date);\n\n if (!checkHour && !checkMinute) {\n _minDate.hour(0);\n _minDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _minDate.second(0);\n _date.second(0);\n _minDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _minDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\n var _return = true;\n\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n var _maxDate = moment(this.maxDate);\n var _date = moment(date);\n\n if (!checkTime && !checkMinute) {\n _maxDate.hour(0);\n _maxDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _maxDate.second(0);\n _date.second(0);\n _maxDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _maxDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isInDisableDates: function (date) {\n var dut = date.format('MMMM Do YYYY');\n if (this.disableDates.indexOf(dut) > -1) {\n return false;\n }\n return true;\n },\n isWeekDay: function(date) {\n if (this.weekDays) {\n if (date.isoWeekday() <= 5) {\n return true;\n }\n return false;\n }\n return true;\n },\n selectDate: function (date) {\n if (date) {\n this.currentDate = moment(date);\n if (!this.isAfterMinDate(this.currentDate)) {\n this.currentDate = moment(this.minDate);\n }\n\n if (!this.isBeforeMaxDate(this.currentDate)) {\n this.currentDate = moment(this.maxDate);\n }\n this.currentDate.locale(this.params.lang);\n this.calendarStart = moment(this.currentDate);\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\n }\n },\n isPM: function () {\n return this.meridien === 'PM';\n },\n incrementMonth: function (amount) {\n if (amount === 1 && this.isNextMonthVisible()) {\n this.selectDate(this.currentDate.add(amount, 'month'));\n }\n\n if (amount === -1 && this.isPreviousMonthVisible()) {\n this.selectDate(this.currentDate.add(amount, 'month'));\n }\n },\n incrementYear: function (amount) {\n if (amount === 1 && this.isNextYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n\n if (amount === -1 && this.isPreviousYearVisible()) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n },\n openMenu: function ($mdMenu, ev) {\n $mdMenu.open(ev); \n },\n monthsAvailable: function () {\n var monthsArr = [], \n _date = moment(this.currentDate);\n\n for (var m = 0; m < 12; m++) {\n var curMonth = _date.month(m);\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\n monthsArr.push(curMonth.format('MMMM'));\n }\n }\n return monthsArr;\n },\n selectMonth: function (month) {\n this.selectDate(this.currentDate.month(month));\n },\n yearsAvailable: function () {\n var _minDate, _maxDate, len, startYear, yearsArr = [],\n _date = this.currentDate.year();\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n _minDate = moment(this.minDate).year();\n }\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n _maxDate = moment(this.maxDate).year();\n }\n\n if (_maxDate && _minDate) {\n len = _maxDate - _minDate;\n startYear = _minDate;\n } else if (_minDate) { \n len = 115;\n startYear = _minDate;\n } else if (_maxDate) { \n len = 30;\n startYear = _maxDate - len;\n } else {\n len = 60;\n startYear = _date - len/2;\n }\n \n for (var i=0; i < len; i++) {\n yearsArr.push(startYear+i);\n }\n return yearsArr;\n },\n selectYear: function (year) {\n this.selectDate(this.currentDate.year(year));\n },\n isPreviousMonthVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\n },\n isNextMonthVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\n },\n isPreviousYearVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\n },\n isNextYearVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\n },\n isHourAvailable: function (hour) {\n var _date = moment(this.currentDate);\n if (this.params.shortTime) {\n _date.hour(this.convertHours(hour)).minute(0).second(0);\n } else {\n _date.hour(hour).minute(0).second(0);\n }\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\n },\n isMinuteAvailable: function (minute) {\n var _date = moment(this.currentDate);\n _date.minute(minute).second(0);\n\n var nearestMin = this.params.minuteSteps;\n if (nearestMin > 1 && 5 % nearestMin !== 0){\n var _curmin = _date.minute();\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n if (minutes !== _curmin) return false;\n }\n\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\n },\n isSecondAvailable: function (second) {\n return true;\n },\n start: function () {\n this.currentView = VIEW_STATES.DATE;\n if (this.params.date) {\n this.initDate();\n } else {\n if (this.params.time) {\n this.initHours();\n }\n }\n },\n today: function () {\n var nearestMin = this.params.minuteSteps;\n var date = moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n\n var seconds;\n if (this.params.seconds) {\n seconds = date.second();\n if (seconds >= 60) seconds = 60 - 1;\n } else seconds = 0;\n\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\n },\n ok: function () {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n if (this.params.time === true) {\n this.initHours();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.HOUR:\n if (this.params.minutes === true) {\n this.initMinutes();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.MINUTE:\n if (this.params.seconds === true) {\n this.initSeconds();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.SECOND:\n this.hide(true);\n break;\n }\n },\n cancel: function () {\n if (this.params.time) {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n this.hide();\n break;\n case VIEW_STATES.HOUR:\n if (this.params.date) {\n this.initDate();\n }\n else {\n this.hide();\n }\n break;\n case VIEW_STATES.MINUTE:\n this.initHours();\n break;\n case VIEW_STATES.SECOND:\n this.initMinutes();\n break; \n }\n }\n else {\n this.hide();\n }\n },\n selectMonthBefore: function () {\n this.calendarStart.subtract(1, 'months');\n },\n selectMonthAfter: function () {\n this.calendarStart.add(1, 'months');\n },\n selectYearBefore: function () {\n this.calendarStart.subtract(1, 'years');\n },\n selectYearAfter: function () {\n this.calendarStart.add(1, 'years');\n },\n selectAM: function () {\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\n if (this.currentDate.hour() >= 12) {\n this.selectDate(this.currentDate.subtract(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\n }\n }\n },\n selectPM: function () {\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\n if (this.currentDate.hour() < 12) {\n this.selectDate(this.currentDate.add(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\n }\n }\n },\n convertHours: function (h) {\n var _return = h;\n if (h < 12 && this.isPM()) _return += 12;\n\n return _return;\n },\n hide: function (okBtn) {\n if (okBtn) this._dialog.hide(this.currentDate);\n else this._dialog.cancel();\n }\n };\n\n angular.module(moduleName)\n .directive('mdcDatetimePickerCalendar', [\n function () {\n\n var YEAR_MIN = 1920,\n YEAR_MAX = new Date().getFullYear() + 30,\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\n ITEM_HEIGHT = 240,\n MONTHS = [];\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\n MONTHS.push(i);\n }\n\n var currentMonthIndex = function (date, low) {\n low = low ? low : 0;\n var year = date.year();\n var month = date.month();\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\n };\n\n return {\n restrict: 'E',\n scope: {\n picker: '=',\n date: '='\n },\n bindToController: true,\n controllerAs: 'cal',\n controller: ['$scope', function ($scope) {\n var calendar = this, picker;\n\n this.$onInit = function () {\n picker = this.picker;\n\n var days = [];\n for (var i = picker.params.weekStart; days.length < 7; i++) {\n if (i > 6) i = 0;\n days.push(i.toString());\n }\n calendar.week = days;\n\n if (!picker.maxDate && !picker.minDate) {\n calendar.months = MONTHS;\n } else {\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\n calendar.months = MONTHS.slice(low, high);\n }\n\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\n };\n\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\n \n calendar.getItemAtIndex = function (index) {\n var month = ((index + 1) % 12) || 12;\n var year = YEAR_MIN + Math.floor(index / 12);\n var monthObj = moment(picker.currentDate).year(year).month(month);\n return generateMonthCalendar(monthObj);\n };\n\n $scope.$watch(function () {\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\n }, function (val2, val1) {\n if (val2 != val1) {\n var nDate = moment(val2, 'YYYY-MM');\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var index = currentMonthIndex(nDate, low);\n if (calendar.topIndex != index) {\n calendar.topIndex = index;\n }\n }\n });\n\n var generateMonthCalendar = function (date) {\n var month = {};\n if (date !== null) {\n month.name = date.format('MMMM YYYY');\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\n .hour(date.hour())\n .minute(date.minute());\n var iNumDay = startOfMonth.format('d');\n month.days = [];\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\n if (i === startOfMonth.date()) {\n var iWeek = calendar.week.indexOf(iNumDay.toString());\n if (iWeek > 0) {\n for (var x = 0; x < iWeek; x++) {\n month.days.push(0);\n }\n }\n }\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\n }\n\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\n for (var j = 0; j < slices; j++) {\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\n }\n month.days = daysTmp;\n return month;\n }\n\n };\n\n calendar.toDay = function (i) {\n return moment(parseInt(i), \"d\")\n .locale(picker.params.lang)\n .format(\"dd\")\n .substring(0, 1);\n };\n\n calendar.isInRange = function (date) {\n return picker.isAfterMinDate(moment(date), false, false) &&\n picker.isBeforeMaxDate(moment(date), false, false) &&\n picker.isWeekDay(moment(date)) &&\n picker.isInDisableDates(moment(date));\n };\n\n calendar.selectDate = function (date) {\n if (date) {\n if (calendar.isSelectedDay(date)) {\n return picker.ok();\n }\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\n if (picker.params.autoOk) {\n picker.ok();\n }\n }\n };\n\n calendar.isSelectedDay = function (m) {\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\n };\n\n calendar.isDateOfTheDay = function (m) {\n var today = calendar.picker.options.showTodaysDate;\n if (!today) {\n return false;\n }\n\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\n };\n }],\n template: \n '' +\n '
' +\n '
' +\n '
' +\n '
'\n };\n }])\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\n function ($compile) {\n var buildCalendarContent = function (element, scope) {\n var tbody = angular.element(element[0].querySelector('tbody'));\n var calendar = scope.cal, month = scope.month;\n\n var tbodyHtml = [];\n\n month.days.forEach(function (weekDays, i) {\n tbodyHtml.push('');\n weekDays.forEach(function (weekDay, j) {\n tbodyHtml.push('');\n if (weekDay) {\n if (calendar.isInRange(weekDay)) {\n //build a\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\n\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n } else {\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n }\n }\n tbodyHtml.push('');\n });\n tbodyHtml.push('');\n });\n\n tbody.html(tbodyHtml.join(''));\n $compile(tbody)(scope);\n };\n\n return {\n scope: {\n idx: '='\n },\n require: '^mdcDatetimePickerCalendar',\n restrict: 'AE',\n template: \n '
{{month.name}}
' +\n '' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
{{cal.toDay(day)}}
',\n link: function (scope, element, attrs, calendar) {\n scope.cal = calendar;\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n scope.$watch(function () {\n return scope.idx;\n }, function (idx, oldIdx) {\n if (idx != oldIdx) {\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n }\n });\n }\n };\n }\n ])\n ;\n\n angular.module(moduleName)\n .directive('mdcDtpNoclick', function () {\n return {\n link: function (scope, el) {\n el.on('click', function (e) {\n e.preventDefault();\n });\n }\n };\n });\n angular.module(moduleName)\n .directive('mdcDatetimePickerClock', ['$timeout',\n function ($timeout) {\n\n var template = \n '
 ' +\n '
' +\n ' {{point.display}}' +\n ' {{point.display}}' +\n '
' +\n '' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
';\n\n return {\n restrict: 'E',\n template: template,\n link: function (scope, element, attrs) {\n var minuteMode = attrs.mode === 'minutes';\n var secondMode = attrs.mode === 'seconds';\n var picker = scope.picker;\n //banking on the fact that there will only be one at a time\n var componentRoot = document.querySelector('md-dialog.dtp');\n\n var setTimeDegRay = function(deg, ray) {\n var val = 0;\n deg = deg >= 360 ? 0 : deg;\n if (deg !== 0) {\n var divider = minuteMode||secondMode ? 60 : 12;\n val = Math.round(divider / 360 * deg);\n }\n\n if (minuteMode) {\n var nearestMin = picker.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n\n var minutes = (nearestMin * Math.round(val / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.minute(minutes);\n } else if (!secondMode){\n if (val === 12) val = 0;\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\n if (picker.isPM()) val += 12;\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.hour(val);\n } else {\n if (val >= 60) val = 0;\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.second(val);\n }\n \n };\n\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\n EVENTS = {\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\n };\n\n var onMoveEvent = function(e) {\n e.preventDefault();\n\n var closestTarget = e.currentTarget.closest('div'),\n clientRect = closestTarget.getClientRects()[0];\n\n if (isTouchSupported) e = e.changedTouches[0];\n \n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\n \n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\n\n $timeout(function() {\n setTimeDegRay(deg+180, ray);\n });\n };\n\n element.on(EVENTS.POINTER_DOWN, function() {\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\n });\n\n element.on(EVENTS.POINTER_UP, function() {\n element.off(EVENTS.POINTER_MOVE);\n });\n\n scope.$on(\"$destroy\", function() {\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \n });\n\n var exec = function () {\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\n\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\n\n //set width\n var clockWidth = (w - (mL + mR + pL + pR));\n clock.css('width', (clockWidth) + 'px');\n\n var r = (clockWidth / 2);\n var j = r / 1.2; // radius for low number\n \n var points = [];\n\n for (var h = 0; h < 12; ++h) {\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\n var left = (r + x + pL / 2) - (pL + mL);\n var top = (r - y - mT / 2) - (pT + mT);\n\n var hour = {\n left: left,\n top: top,\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\n };\n\n if (minuteMode || secondMode) {\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\n } else {\n if (picker.params.shortTime) {\n hour.display = h === 0 ? 12 : h;\n } else {\n hour.display = h;\n }\n }\n\n points.push(hour);\n }\n scope.points = points;\n\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\n var points24 = [];\n\n var j24 = r / 1.8; // radius for high number\n for (var h24 = 12; h24 < 24; ++h24) {\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\n var left24 = (r + x24 + pL / 2) - (pL + mL);\n var top24 = (r - y24 - mT / 2) - (pT + mT);\n\n points24.push({\n left: left24,\n top: top24,\n value: h24,\n display: h24,\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\n });\n }\n scope.points24 = points24;\n }\n\n scope.mode = attrs.mode;\n setCurrentValue();\n clock.css('height', clockWidth + 'px');\n\n var clockCenter = element[0].querySelector('.dtp-clock-center');\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\n var _mL = r / 1.4;\n var _sL = r;\n\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _hL + 'px',\n marginTop: (r - _hL - pL) + 'px'\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _mL + 'px',\n marginTop: r - _mL - pL + 'px'\n }).addClass(minuteMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _sL + 'px',\n marginTop: r - _sL - pL + 'px'\n }).addClass(secondMode ? 'on' : '');\n\n angular.element(clockCenter).css({\n left: r + pL + mL - centerWidth + 'px',\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\n });\n animateHands();\n };\n\n var animateHands = function () {\n var _date = picker.currentNearestMinute();\n var h = _date.hour();\n var m = _date.minute();\n var s = _date.second();\n\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\n };\n\n var rotateElement = function (el, deg) {\n angular.element(el).css({\n WebkitTransform: 'rotate(' + deg + 'deg)',\n '-moz-transform': 'rotate(' + deg + 'deg)',\n '-ms-transform': 'rotate(' + deg + 'deg)',\n 'transform': 'rotate(' + deg + 'deg)'\n });\n };\n\n\n var setCurrentValue = function () {\n var date = picker.currentNearestMinute();\n var nbH = picker.params.shortTime ? 12 : 24;\n if (minuteMode) scope.currentValue = date.minute();\n else if (secondMode) scope.currentValue = date.second();\n else scope.currentValue = date.hour() % nbH;\n };\n\n scope.$watch(function () {\n var tmp = picker.currentNearestMinute();\n return tmp ? tmp.format('HH:mm:ss') : '';\n }, function () {\n setCurrentValue();\n animateHands();\n });\n\n scope.setTime = function (val) {\n if (!minuteMode && !secondMode) {\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\n\n if (picker.params.shortTime) {\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\n } else {\n picker.currentDate.hour(val);\n if (val >= 12) picker.meridien = 'PM';\n else picker.meridien = 'AM';\n }\n\n if (picker.params.autoOk) picker.ok(); // single click\n } else if (!secondMode) {\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\n \n picker.currentDate.minute(val);\n if (!picker.params.seconds) {\n picker.currentDate.second(0);\n } else if (picker.params.autoOk) picker.ok(); // single click\n } else {\n if (val === scope.currentValue) picker.ok(); // double click\n picker.currentDate.second(val);\n }\n };\n\n scope.pointAvailable = function (point) {\n if (minuteMode) return picker.isMinuteAvailable(point.value);\n else if (secondMode) return picker.isSecondAvailable(point.value);\n else return picker.isHourAvailable(point.value);\n };\n\n var unWatcher = scope.$watch(function () {\n return element[0].querySelectorAll('div').length;\n }, function () {\n exec();\n unWatcher();\n });\n }\n };\n }]);\n return moduleName;\n }\n\n var isElectron = window && window.process && window.process.type;\n if (typeof define === 'function' && define.amd) {\n define(['moment'], ngMaterialDatePicker);\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\n module.exports = ngMaterialDatePicker(require('moment'));\n } else {\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\n }\n})();\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","mdcDefaultParams","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","this","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 3e6fb91..2444e6c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.16.0", + "version": "1.16.1", "keywords": [ "css", "js", diff --git a/yarn.lock b/yarn.lock index 11473c9..4f8d271 100644 --- a/yarn.lock +++ b/yarn.lock @@ -599,14 +599,10 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" -commander@^2.2.0: +commander@^2.2.0, commander@~2.16.0: version "2.16.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50" -commander@~2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -1383,8 +1379,8 @@ gulp-cli@^2.0.0: yargs "^7.1.0" gulp-rename@^1.2.3: - version "1.3.0" - resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.3.0.tgz#2e789d8f563ab0c924eeb62967576f37ff4cb826" + version "1.4.0" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.4.0.tgz#de1c718e7c4095ae861f7296ef4f3248648240bd" gulp-sourcemaps@^2.6.1: version "2.6.4" @@ -1403,13 +1399,14 @@ gulp-sourcemaps@^2.6.1: through2 "2.X" gulp-uglify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.0.tgz#0df0331d72a0d302e3e37e109485dddf33c6d1ca" + version "3.0.1" + resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.1.tgz#8d3eee466521bea6b10fd75dff72adf8b7ea2d97" dependencies: gulplog "^1.0.0" has-gulplog "^0.1.0" lodash "^4.13.1" make-error-cause "^1.1.1" + safe-buffer "^5.1.2" through2 "^2.0.0" uglify-js "^3.0.5" vinyl-sourcemaps-apply "^0.2.0" @@ -1981,14 +1978,10 @@ lodash@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.11.1: +lodash@^4.11.1, lodash@^4.13.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" -lodash@^4.13.1: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - lru-queue@0.1: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" @@ -2002,8 +1995,8 @@ make-error-cause@^1.1.1: make-error "^1.2.0" make-error@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" + version "1.3.4" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535" make-iterator@^1.0.0: version "1.0.0" @@ -3047,8 +3040,8 @@ source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" sparkles@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" spdx-correct@^3.0.0: version "3.0.0" @@ -3327,10 +3320,10 @@ ua-parser-js@0.7.17: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" uglify-js@^3.0.5: - version "3.1.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.4.tgz#8e1efa1244b207588e525c9c1835a33458b90aee" + version "3.4.6" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.6.tgz#bc546d53f3e02b05d97d0ca5a7abfe0fb0384ddb" dependencies: - commander "~2.11.0" + commander "~2.16.0" source-map "~0.6.1" uid-number@^0.0.6: From c5bc54a6a36a63d15f45d57efa4a922a5bd3470b Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 11 Sep 2018 11:41:17 -0400 Subject: [PATCH 164/226] #45 set validity when date is selected in the picker --- js/angular-material-datetimepicker.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 01d1cfe..adfcb2b 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -263,6 +263,7 @@ if (offset !== undefined) v.utcOffset(offset, true); scope.currentDate = v && !v._isUTC ? v.toDate() : v; + ngModel.$setValidity('format', true); isOn = false; if (!moment(scope.currentDate).isSame(options.currentDate)) { From b6219f1384eb749f041b362d5d45eb44a9aaeb0e Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 11 Sep 2018 12:26:03 -0400 Subject: [PATCH 165/226] Version 1.17.0 Angular 1.7.4 --- README.md | 14 +++++- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- gulpfile.js | 1 + index.html | 14 +++--- package.json | 14 +++--- yarn.lock | 50 +++++++++---------- 8 files changed, 55 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index a47e8db..efecf00 100644 --- a/README.md +++ b/README.md @@ -264,5 +264,15 @@ yarn run dev gulp serve ``` -To build: -`gulp` +To build with gulp 4: + +Global +``` +gulp +```` + +Local +``` +./node_modules/.bin/gulp +``` + diff --git a/bower.json b/bower.json index 6662960..397ac5e 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.16.1", + "version": "1.17.0", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 789d024..e8a88cf 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",i={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(d,u,m){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(n,r,s,a){var c=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var o,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),a){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(m(i+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){a.$setViewValue(null),n.currentDate=null,a.$render(),u(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(r,s,e){var c=e(),o=Object.keys(c);return{show:function(e){var t=s.defer();angular.copy(c);for(var a in e)-1!=o.indexOf[a]&&e.hasOwnProperty(a)&&e[a];var i=null;void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(i=p()),e.showTodaysDate=i;var n={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?n.templateUrl=e.templateUrl:n.template=h,r.show(n).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t,a){this.currentView=i.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=i,this.params=angular.copy(a()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$scope","$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(r,s,e){var c=e(),o=Object.keys(c);return{show:function(e){var t=s.defer();angular.copy(c);for(var a in e)-1!=o.indexOf[a]&&e.hasOwnProperty(a)&&e[a];var i=null;void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(i=p()),e.showTodaysDate=i;var n={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?n.templateUrl=e.templateUrl:n.template=h,r.show(n).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t,a){this.currentView=i.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=i,this.params=angular.copy(a()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$scope","$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","mdcDefaultParams","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","this","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 711cd5b..d3d22cd 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -29,6 +29,7 @@ gulp.task('css', cb => { }); gulp.task('default', gulp.parallel('js', 'css')); +gulp.task('build', gulp.parallel('js', 'css')); gulp.task('serve', function (cb) { exec('npm run dev', function (err, stdout, stderr) { diff --git a/index.html b/index.html index c239df9..3ca9a84 100644 --- a/index.html +++ b/index.html @@ -11,16 +11,16 @@ - - - - + + + + - + - - + + diff --git a/package.json b/package.json index 2444e6c..4920e87 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.16.1", + "version": "1.17.0", "keywords": [ "css", "js", @@ -19,12 +19,12 @@ "dev": "lite-server" }, "dependencies": { - "angular": "^1.6.10", - "angular-animate": "^1.6.10", - "angular-aria": "^1.6.10", - "angular-material": "^1.1.8", - "angular-messages": "^1.6.10", - "moment": "^2.22.1" + "angular": "^1.7.4", + "angular-animate": "^1.7.4", + "angular-aria": "^1.7.4", + "angular-material": "^1.1.10", + "angular-messages": "^1.7.4", + "moment": "^2.22.2" }, "repository": { "type": "git", diff --git a/yarn.lock b/yarn.lock index 4f8d271..193d6c0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -49,25 +49,25 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.6.10: - version "1.7.2" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.2.tgz#48d1d22caf0057b57b50f882b68d51c297aa7747" +angular-animate@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.4.tgz#14cee98e6aebab27642391c94c872009f2e3cd62" -angular-aria@^1.6.10: - version "1.7.2" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.2.tgz#68cb3d15aece7a22517b1fe3e00d9d3807ceca88" +angular-aria@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.4.tgz#0774cefa3a3e1bf0bf7aba5253e3bb9ca209f216" -angular-material@^1.1.8: +angular-material@^1.1.10: version "1.1.10" resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.10.tgz#fb93ba84f2734146cb9ca8ebf65bdc163d9f8471" -angular-messages@^1.6.10: - version "1.7.2" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.2.tgz#77116d83a72a00234d8177de9837bc867321f25e" +angular-messages@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.4.tgz#845c3e3dce80ca698ba62bcf70105ab76cfdbb50" -angular@^1.6.10: - version "1.7.2" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.2.tgz#687b955dbe5c533f8d73460461707af00360251f" +angular@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.4.tgz#c1bf4884c2d470c06907737a1bf0835a9f646f31" ansi-colors@^1.0.1: version "1.1.0" @@ -532,11 +532,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-css@4.1.11: - version "4.1.11" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" +clean-css@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" dependencies: - source-map "0.5.x" + source-map "~0.6.0" cliui@^3.2.0: version "3.2.0" @@ -1347,10 +1347,10 @@ graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, gr resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" gulp-clean-css@^3.9.4: - version "3.9.4" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.4.tgz#c6d3f8bb7a600fbe661962a72348a330954d343b" + version "3.10.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.10.0.tgz#bccd4605eff104bfa4980014cc4b3c24c571736d" dependencies: - clean-css "4.1.11" + clean-css "4.2.1" plugin-error "1.0.1" through2 "2.0.3" vinyl-sourcemaps-apply "0.2.1" @@ -2130,7 +2130,7 @@ mixin-deep@^1.2.0: dependencies: minimist "0.0.8" -moment@*, moment@^2.22.1: +moment@*, moment@^2.22.2: version "2.22.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" @@ -3025,16 +3025,16 @@ source-map-url@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" -source-map@0.5.x, source-map@^0.5.1, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - source-map@^0.1.38: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" dependencies: amdefine ">=0.0.4" +source-map@^0.5.1, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" From a62a1c7b119251d97bfa12cec15d6506815af7a3 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 11 Oct 2018 22:12:09 -0400 Subject: [PATCH 166/226] #47 fix for max-date when set to 12 PM --- README.md | 4 ++-- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- gulpfile.js | 20 ++++++++++++----- index.html | 22 +++++++++---------- js/angular-material-datetimepicker.js | 6 ++--- package.json | 9 ++++---- yarn.lock | 16 +++++++------- 8 files changed, 45 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index efecf00..31dd033 100644 --- a/README.md +++ b/README.md @@ -259,8 +259,8 @@ md-menu-content.dtp-year-list { ### Development To run the demo: ``` -npm run dev -yarn run dev +npm start +yarn start gulp serve ``` diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index e8a88cf..578386d 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",i={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(r,s,e){var c=e(),o=Object.keys(c);return{show:function(e){var t=s.defer();angular.copy(c);for(var a in e)-1!=o.indexOf[a]&&e.hasOwnProperty(a)&&e[a];var i=null;void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(i=p()),e.showTodaysDate=i;var n={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?n.templateUrl=e.templateUrl:n.template=h,r.show(n).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t,a){this.currentView=i.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=i,this.params=angular.copy(a()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$scope","$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(r,s,e){var c=e(),o=Object.keys(c);return{show:function(e){var t=s.defer();angular.copy(c);for(var a in e)-1!=o.indexOf[a]&&e.hasOwnProperty(a)&&e[a];var i=null;void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(i=p()),e.showTodaysDate=i;var n={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?n.templateUrl=e.templateUrl:n.template=h,r.show(n).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t,a){this.currentView=i.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=i,this.params=angular.copy(a()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$scope","$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time \r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(13) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n \r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","mdcDefaultParams","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","this","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template = \r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index d3d22cd..f911808 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -6,7 +6,7 @@ const uglify = require('gulp-uglify'); const cleanCSS = require('gulp-clean-css'); const sourcemaps = require('gulp-sourcemaps'); const rename = require('gulp-rename'); -const exec = require('child_process').exec; +const spawn = require('child_process').spawn; gulp.task('js', cb => { pump([ @@ -31,10 +31,18 @@ gulp.task('css', cb => { gulp.task('default', gulp.parallel('js', 'css')); gulp.task('build', gulp.parallel('js', 'css')); -gulp.task('serve', function (cb) { - exec('npm run dev', function (err, stdout, stderr) { - console.log(stdout); - console.log(stderr); - cb(err); +gulp.task('serve', function () { + const child = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['start']); + + child.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + child.stderr.on('data', (data) => { + console.log(`stderr: ${data}`); + }); + + child.on('close', (code) => { + console.log(`child process exited with code ${code}`); }); }); diff --git a/index.html b/index.html index 3ca9a84..698c55d 100644 --- a/index.html +++ b/index.html @@ -11,16 +11,16 @@ - - - - + + + + + - - - + + @@ -62,9 +62,9 @@

Datetime Pickers

- @@ -75,9 +75,9 @@

Datetime Pickers

- diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index adfcb2b..eb909c9 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -51,7 +51,7 @@ ' ' + '
' + '
'+ - '
' + //start time + '
' + //start time '
' + '
' + ' {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}'+ @@ -763,7 +763,7 @@ } }, selectPM: function () { - if (this.isHourAvailable(13) || this.isHourAvailable(24)) { + if (this.isHourAvailable(12) || this.isHourAvailable(24)) { if (this.currentDate.hour() < 12) { this.selectDate(this.currentDate.add(12, 'hours')); } @@ -1136,7 +1136,7 @@ var r = (clockWidth / 2); var j = r / 1.2; // radius for low number - + var points = []; for (var h = 0; h < 12; ++h) { diff --git a/package.json b/package.json index 4920e87..12ebac7 100644 --- a/package.json +++ b/package.json @@ -16,14 +16,15 @@ "homepage": "https://beenote.github.io/angular-material-datetimepicker/", "main": "js/angular-material-datetimepicker.js", "scripts": { + "start": "lite-server", "dev": "lite-server" }, "dependencies": { - "angular": "^1.7.4", - "angular-animate": "^1.7.4", - "angular-aria": "^1.7.4", + "angular": "^1.7.5", + "angular-animate": "^1.7.5", + "angular-aria": "^1.7.5", "angular-material": "^1.1.10", - "angular-messages": "^1.7.4", + "angular-messages": "^1.7.5", "moment": "^2.22.2" }, "repository": { diff --git a/yarn.lock b/yarn.lock index 193d6c0..a9d4ad6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -50,24 +50,24 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" angular-animate@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.4.tgz#14cee98e6aebab27642391c94c872009f2e3cd62" + version "1.7.5" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.5.tgz#1ffc6c2a9cdee227a2ba79cc6cd8f71ec44db5dc" angular-aria@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.4.tgz#0774cefa3a3e1bf0bf7aba5253e3bb9ca209f216" + version "1.7.5" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.5.tgz#e66334d80ad6b4b01f005f590d7c7eef0064312f" angular-material@^1.1.10: version "1.1.10" resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.10.tgz#fb93ba84f2734146cb9ca8ebf65bdc163d9f8471" angular-messages@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.4.tgz#845c3e3dce80ca698ba62bcf70105ab76cfdbb50" + version "1.7.5" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.5.tgz#7c2fd781315a43a19838b117da0142a988454e14" angular@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.4.tgz#c1bf4884c2d470c06907737a1bf0835a9f646f31" + version "1.7.5" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.5.tgz#d1c1c01c6f5dc835638f3f9aa51012857bdac49e" ansi-colors@^1.0.1: version "1.1.0" From 7407b5258574b10eaee8c1031c41dab5f6272b37 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 11 Oct 2018 22:12:34 -0400 Subject: [PATCH 167/226] version 1.17.1 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 397ac5e..1b23e0f 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.17.0", + "version": "1.17.1", "keywords": [ "css", "js", diff --git a/package.json b/package.json index 12ebac7..cf53b1f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.17.0", + "version": "1.17.1", "keywords": [ "css", "js", From 28568915980f5b9656526efb3f8a4471e11db8b6 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 24 Jan 2019 21:40:58 -0500 Subject: [PATCH 168/226] #51 current year not in dropdown if maxDate is now --- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 10 ++++---- yarn.lock | 24 +++++++++---------- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 578386d..6b7a972 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",i={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(r,s,e){var c=e(),o=Object.keys(c);return{show:function(e){var t=s.defer();angular.copy(c);for(var a in e)-1!=o.indexOf[a]&&e.hasOwnProperty(a)&&e[a];var i=null;void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(i=p()),e.showTodaysDate=i;var n={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?n.templateUrl=e.templateUrl:n.template=h,r.show(n).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t,a){this.currentView=i.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=i,this.params=angular.copy(a()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$scope","$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(r,s,e){var c=e(),o=Object.keys(c);return{show:function(e){var t=s.defer();angular.copy(c);for(var a in e)-1!=o.indexOf[a]&&e.hasOwnProperty(a)&&e[a];var i=null;void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(i=p()),e.showTodaysDate=i;var n={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?n.templateUrl=e.templateUrl:n.template=h,r.show(n).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t,a){this.currentView=i.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=i,this.params=angular.copy(a()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$scope","$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) { \r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) { \r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i < len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break; \r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","mdcDefaultParams","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","this","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index eb909c9..d3bb50c 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -14,7 +14,7 @@ return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name); }; - var template = + var template = '' + ' ' + '
' + @@ -602,10 +602,10 @@ if (_maxDate && _minDate) { len = _maxDate - _minDate; startYear = _minDate; - } else if (_minDate) { + } else if (_minDate) { len = 115; startYear = _minDate; - } else if (_maxDate) { + } else if (_maxDate) { len = 30; startYear = _maxDate - len; } else { @@ -613,7 +613,7 @@ startYear = _date - len/2; } - for (var i=0; i < len; i++) { + for (var i=0; i <= len; i++) { yearsArr.push(startYear+i); } return yearsArr; @@ -730,7 +730,7 @@ break; case VIEW_STATES.SECOND: this.initMinutes(); - break; + break; } } else { diff --git a/yarn.lock b/yarn.lock index a9d4ad6..a8a8004 100644 --- a/yarn.lock +++ b/yarn.lock @@ -49,25 +49,25 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.5.tgz#1ffc6c2a9cdee227a2ba79cc6cd8f71ec44db5dc" +angular-animate@^1.7.5: + version "1.7.6" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.6.tgz#3c48ac592a1a0d98a9ac9ab3fe3b4f6b9393fe7f" -angular-aria@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.5.tgz#e66334d80ad6b4b01f005f590d7c7eef0064312f" +angular-aria@^1.7.5: + version "1.7.6" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.6.tgz#8e6371af31f6749fe7c089cde8507ed024f480df" angular-material@^1.1.10: version "1.1.10" resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.10.tgz#fb93ba84f2734146cb9ca8ebf65bdc163d9f8471" -angular-messages@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.5.tgz#7c2fd781315a43a19838b117da0142a988454e14" +angular-messages@^1.7.5: + version "1.7.6" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.6.tgz#cafddd8d0941b88d58b7eb5094732458840f5533" -angular@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.5.tgz#d1c1c01c6f5dc835638f3f9aa51012857bdac49e" +angular@^1.7.5: + version "1.7.6" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.6.tgz#db3bd96e3305c870f6227b9b32a4d761880473da" ansi-colors@^1.0.1: version "1.1.0" From 57c62c69b075f29b5a499f7b14a1e773d7fad52c Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 24 Jan 2019 21:41:41 -0500 Subject: [PATCH 169/226] Version 1.17.2 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 1b23e0f..1ae5e3d 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.17.1", + "version": "1.17.2", "keywords": [ "css", "js", diff --git a/package.json b/package.json index cf53b1f..043061c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.17.1", + "version": "1.17.2", "keywords": [ "css", "js", From 6fbc7484b0cd3246c0014583775d9a0ca36fd4a2 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 25 Jan 2019 22:25:35 -0500 Subject: [PATCH 170/226] #52 Add short days format options --- README.md | 18 ++++++----- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- index.html | 31 +++++++++++-------- js/angular-material-datetimepicker.js | 8 +++-- 5 files changed, 35 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 31dd033..a4c4a6a 100644 --- a/README.md +++ b/README.md @@ -55,13 +55,13 @@ Depends on the following library: - Moment ``` - - - - - - - + + + + + + + ``` ## Installing via yarn, npm or bower @@ -144,6 +144,7 @@ The directive accepts several attributes which are described below: | **show-icon** | Boolean | true => Show calendar or time icon before + clear (default: false) | | **template-url** | String | You can set a custom HTML template (default: '') | | **ng-model-options** | timezone option | For example: ng-model-options="{timezone: 'utc'}" | +| **day-of-week-len** | Number | Day of the week length (default: 1 => S) Possible value 0-3 | ### UTC Time Zone You should normally use the browser local time zone and use UTC only on the server side. @@ -218,7 +219,8 @@ The `mdcDateTimeDialog.show` accepts almost the same options as the directive. templateUrl: {string} ='' targetEvent: {DOMClickEvent}=null, openFrom: {string|Element|object}=null, - closeTo: {string|Element|object}=null + closeTo: {string|Element|object}=null, + dayOfWeekLen: {int} =1 } ``` diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 6b7a972..38fc128 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",i={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@"},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(r,s,e){var c=e(),o=Object.keys(c);return{show:function(e){var t=s.defer();angular.copy(c);for(var a in e)-1!=o.indexOf[a]&&e.hasOwnProperty(a)&&e[a];var i=null;void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(i=p()),e.showTodaysDate=i;var n={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?n.templateUrl=e.templateUrl:n.template=h,r.show(n).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t,a){this.currentView=i.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=i,this.params=angular.copy(a()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$scope","$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(r,s,e){var c=e(),o=Object.keys(c);return{show:function(e){var t=s.defer();angular.copy(c);for(var a in e)-1!=o.indexOf[a]&&e.hasOwnProperty(a)&&e[a];var i=null;void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(i=p()),e.showTodaysDate=i;var n={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?n.templateUrl=e.templateUrl:n.template=h,r.show(n).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t,a){this.currentView=i.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=i,this.params=angular.copy(a()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$scope","$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"dd\")\r\n .substring(0, 1);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","mdcDefaultParams","defaultParams","accepted_options","Object","keys","deferred","defer","copy","indexOf","resolve","reject","promise","$scope","this","currentView","_dialog","_attachedEvents","VIEWS","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n \r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 698c55d..021261c 100644 --- a/index.html +++ b/index.html @@ -6,22 +6,27 @@ + + + + + - - + + - - - - - - + + + + + + - - - - + + + + @@ -52,7 +57,7 @@

Datetime Pickers

- diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index d3bb50c..0f484e5 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -123,7 +123,8 @@ templateUrl: '', targetEvent: null, openFrom: null, - closeTo: null + closeTo: null, + dayOfWeekLen: 1 }; return function (params) { @@ -171,6 +172,7 @@ minuteSteps: '=', showIcon: '=', templateUrl: '@', + dayOfWeekLen: '=' }, link: function (scope, element, attrs, ngModel) { var isOn = false; @@ -895,8 +897,8 @@ calendar.toDay = function (i) { return moment(parseInt(i), "d") .locale(picker.params.lang) - .format("dd") - .substring(0, 1); + .format("ddd") + .substring(0, picker.params.dayOfWeekLen); }; calendar.isInRange = function (date) { From 3fa67edb0910ba39ce79c343a6161db7dd444a57 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 25 Jan 2019 22:26:32 -0500 Subject: [PATCH 171/226] Version 1.18.0 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 1ae5e3d..bfe975a 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.17.2", + "version": "1.18.0", "keywords": [ "css", "js", diff --git a/package.json b/package.json index 043061c..00acf00 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.17.2", + "version": "1.18.0", "keywords": [ "css", "js", From c7b616b22aaca8aa7a27ffb6fe88fbd3055c6e86 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 27 Jan 2019 21:26:28 -0500 Subject: [PATCH 172/226] Code cleanup --- README.md | 7 ++---- index.html | 2 +- js/angular-material-datetimepicker.js | 36 ++++++--------------------- js/demo.js | 6 +++-- 4 files changed, 15 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index a4c4a6a..cce09c8 100644 --- a/README.md +++ b/README.md @@ -155,13 +155,11 @@ Also, if you want your user to manually enter an UTC time use the `ng-model-opti ### Set or update params by injecting `mdcDefaultParams` provider To change params like the locale you can use this method instead of attributes for all datetimepicker: ```javascript - mdcDefaultParams({ lang: 'fr', cancelText: 'annuler', todayText: 'maintenant', okText: 'ok' }); + mdcDefaultParams({lang: 'fr', cancelText: 'annuler', todayText: 'maintenant', okText: 'ok', dayOfWeekLen: 3}); ... - mdcDefaultParams({ lang: 'en', cancelText: 'cancel', todayText: 'now', okText: 'ok' }); + mdcDefaultParams({lang: 'en', cancelText: 'cancel', todayText: 'now', okText: 'ok', dayOfWeekLen: 3}); ``` #### Notes -`mdcDatetimePickerDefaultLocale` is no more. - If you use https://github.com/lgalfaso/angular-dynamic-locale it will always override the locale. ### Date/Time Dialog Service @@ -277,4 +275,3 @@ Local ``` ./node_modules/.bin/gulp ``` - diff --git a/index.html b/index.html index 021261c..6ada470 100644 --- a/index.html +++ b/index.html @@ -51,7 +51,7 @@

Datetime Pickers

- You can double click / double tap to make selections. + INSTRUCTION

diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 0f484e5..3a3f4b0 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -3,10 +3,8 @@ function ngMaterialDatePicker(moment) { var moduleName = "ngMaterialDatePicker"; - var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+'; var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg=='; - var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2}; var css = function (el, name) { @@ -138,7 +136,6 @@ }) .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', function ($mdDialog, $timeout, $compile) { - return { restrict: 'A', require: 'ngModel', @@ -316,24 +313,12 @@ }; }]) // Returns a service that opens a dialog when the attribute shown is called - .factory('mdcDateTimeDialog', ["$mdDialog", "$q", "mdcDefaultParams", function ($mdDialog, $q, mdcDefaultParams) { - var defaultParams = mdcDefaultParams(); - var accepted_options = Object.keys(defaultParams); + .factory('mdcDateTimeDialog', ["$mdDialog", "$q", function ($mdDialog, $q) { var service = { show: function (options) { var deferred = $q.defer(); - var params = angular.copy(defaultParams); - for (var i in options) { - if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) { - params = options[i]; - } - } - var dateOfTheDay = null; - if (options.showTodaysDate !== undefined && options.showTodaysDate !== "false") { - dateOfTheDay = moment(); - } - options.showTodaysDate = dateOfTheDay; + if (options.showTodaysDate !== undefined && options.showTodaysDate !== "false") options.showTodaysDate = moment(); var dialogOptions = { controller: PluginController, @@ -366,7 +351,7 @@ }]) ; - var PluginController = function ($scope, $mdDialog, mdcDefaultParams) { + var PluginController = function ($mdDialog, mdcDefaultParams) { this.currentView = VIEW_STATES.DATE; this._dialog = $mdDialog; @@ -379,7 +364,7 @@ this.init(); }; - PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams']; + PluginController.$inject = ['$mdDialog', 'mdcDefaultParams']; PluginController.prototype = { init: function () { this.timeMode = this.params.time && !this.params.date; @@ -1062,10 +1047,8 @@ if (minuteMode) { var nearestMin = picker.params.minuteSteps; if (nearestMin < 1 || nearestMin > 59) nearestMin = 1; - var minutes = (nearestMin * Math.round(val / nearestMin)); if (minutes >= 60) minutes = 60 - nearestMin; - if (!scope.pointAvailable({value: val})) return; picker.currentDate.minute(minutes); } else if (!secondMode){ @@ -1079,7 +1062,6 @@ if (!scope.pointAvailable({value: val})) return; picker.currentDate.second(val); } - }; var isTouchSupported = ('ontouchstart' in window) ? true : false, @@ -1099,9 +1081,9 @@ var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)), y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2)); - - var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); - var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI))); + + var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)), + deg = Math.round((Math.atan2(x, y) * (180 / Math.PI))); $timeout(function() { setTimeDegRay(deg+180, ray); @@ -1227,9 +1209,7 @@ var animateHands = function () { var _date = picker.currentNearestMinute(); - var h = _date.hour(); - var m = _date.minute(); - var s = _date.second(); + var h = _date.hour(), m = _date.minute(), s = _date.second(); rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h); rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m); diff --git a/js/demo.js b/js/demo.js index cd1d558..f3c9783 100644 --- a/js/demo.js +++ b/js/demo.js @@ -9,10 +9,12 @@ $translateProvider.translations('en', { CANCEL: "Cancel", TODAY: "Today", + INSTRUCTION: "You can double click or double tap to make selections.", }); $translateProvider.translations('fr', { CANCEL: "Annuler", TODAY: "Aujourd'hui", + INSTRUCTION: "Vous pouvez double-cliquer ou appuyer deux fois pour effectuer des sélections.", }); $translateProvider.preferredLanguage('en'); $translateProvider.useSanitizeValueStrategy('sceParameters'); @@ -91,7 +93,7 @@ mdcDateTimeDialog.show({ currentDate: moment().startOf('day'), maxDate: $scope.maxDate, - showTodaysDate: '', + showTodaysDate: true, time: true, clickOutsideToClose: true, targetEvent: event, @@ -127,7 +129,7 @@ .directive('exSourceCode', function () { return { - template: '

{{title}}

{{sourceCode}}
', + template: '

{{title}}

{{sourceCode}}
', scope: {}, link: function (scope, element, attrs) { var tmp = angular.element((element.parent()[0]).querySelector(attrs.target || 'md-input-container')); From 6b93045cf2231880b8ddf6e5cc5d1bae195ec786 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 7 Feb 2019 21:16:32 -0500 Subject: [PATCH 173/226] #54 There was no check on minutes and hours (min, max) for today button --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- index.html | 4 ++-- js/angular-material-datetimepicker.js | 4 ++-- js/demo.js | 1 + 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 38fc128..3eea397 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",i={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q","mdcDefaultParams",function(r,s,e){var c=e(),o=Object.keys(c);return{show:function(e){var t=s.defer();angular.copy(c);for(var a in e)-1!=o.indexOf[a]&&e.hasOwnProperty(a)&&e[a];var i=null;void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(i=p()),e.showTodaysDate=i;var n={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?n.templateUrl=e.templateUrl:n.template=h,r.show(n).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t,a){this.currentView=i.DATE,this._dialog=t,this._attachedEvents=[],this.VIEWS=i,this.params=angular.copy(a()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$scope","$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n var defaultParams = mdcDefaultParams();\r\n var accepted_options = Object.keys(defaultParams);\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n var params = angular.copy(defaultParams);\r\n for (var i in options) {\r\n if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n params = options[i];\r\n }\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n \r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n \r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour();\r\n var m = _date.minute();\r\n var s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 6ada470..4e91ddc 100644 --- a/index.html +++ b/index.html @@ -144,8 +144,8 @@

Datetime Pickers

diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 3a3f4b0..217cc79 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -524,11 +524,11 @@ selectDate: function (date) { if (date) { this.currentDate = moment(date); - if (!this.isAfterMinDate(this.currentDate)) { + if (!this.isAfterMinDate(this.currentDate, true, true)) { this.currentDate = moment(this.minDate); } - if (!this.isBeforeMaxDate(this.currentDate)) { + if (!this.isBeforeMaxDate(this.currentDate, true, true)) { this.currentDate = moment(this.maxDate); } this.currentDate.locale(this.params.lang); diff --git a/js/demo.js b/js/demo.js index f3c9783..322fb73 100644 --- a/js/demo.js +++ b/js/demo.js @@ -82,6 +82,7 @@ $scope.minDate = moment().subtract(6, 'year'); $scope.minDateNow = moment(); + $scope.maxDateNow = moment(); $scope.maxDate = moment().add(6, 'year'); $scope.dates = [new Date('2018-11-14T00:00:00'), new Date('2018-11-15T00:00:00'), new Date('2018-11-30T00:00:00'), new Date('2018-12-12T00:00:00'), new Date('2018-12-13T00:00:00'), From 36ebb573858433633673e71a7fb333addb530503 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 7 Feb 2019 21:17:30 -0500 Subject: [PATCH 174/226] Version 1.18.1 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index bfe975a..b7d01f3 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.0", + "version": "1.18.1", "keywords": [ "css", "js", diff --git a/package.json b/package.json index 00acf00..185733c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.0", + "version": "1.18.1", "keywords": [ "css", "js", From 8fa77bfe48d1206af1a9b21742182633617bc9d4 Mon Sep 17 00:00:00 2001 From: Calle Gustafsson <67468+tw1nk@users.noreply.github.com> Date: Thu, 14 Feb 2019 09:51:19 +0100 Subject: [PATCH 175/226] Does not update ngModel states correctly I noticed that this library does not update the form controllers $dirty state correctly. This change fixes that. --- js/angular-material-datetimepicker.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 217cc79..a8666e5 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -268,7 +268,9 @@ if (!moment(scope.currentDate).isSame(options.currentDate)) { $timeout(scope.ngChange, 0); } - + ngModel.$setViewValue(v.format(scope.format)); + ngModel.$commitViewValue(); + ngModel.$render(); element.parent().removeClass('md-input-focused'); }, function () { isOn = false; From c6643842eb7ce34b0cd9a20f70eb853150f99c50 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 22 Feb 2019 22:42:26 -0500 Subject: [PATCH 176/226] Version 1.18.2 --- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bower.json b/bower.json index b7d01f3..72c304b 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.1", + "version": "1.18.2", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 3eea397..512b607 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","isSame","$setViewValue","$commitViewValue","$render","on","addClass","calendarButton","after","openCalendarDiag","clear","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n ngModel.$setViewValue(v.format(scope.format));\r\n ngModel.$commitViewValue();\r\n ngModel.$render();\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 185733c..50ecf55 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.1", + "version": "1.18.2", "keywords": [ "css", "js", From 7d75c1c7487f53395625b8d5ad221346ae0c81e3 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 28 Feb 2019 21:03:31 -0500 Subject: [PATCH 177/226] Revert PR #55 --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 512b607..3eea397 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n ngModel.$setViewValue(v.format(scope.format));\r\n ngModel.$commitViewValue();\r\n ngModel.$render();\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$setViewValue","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index a8666e5..217cc79 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -268,9 +268,7 @@ if (!moment(scope.currentDate).isSame(options.currentDate)) { $timeout(scope.ngChange, 0); } - ngModel.$setViewValue(v.format(scope.format)); - ngModel.$commitViewValue(); - ngModel.$render(); + element.parent().removeClass('md-input-focused'); }, function () { isOn = false; From 78368d0b2ab448283848df36629d25cf5ddc8bd4 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 28 Feb 2019 21:03:58 -0500 Subject: [PATCH 178/226] Version 1.18.3 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 72c304b..8394eb9 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.2", + "version": "1.18.3", "keywords": [ "css", "js", diff --git a/package.json b/package.json index 50ecf55..3c460c0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.2", + "version": "1.18.3", "keywords": [ "css", "js", From 6ff47f8c8531d90d4294bffc7f7ebdb9f5130f49 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 3 Mar 2019 21:11:52 -0500 Subject: [PATCH 179/226] Update dependencies --- README.md | 14 +++++++------- index.html | 24 ++++++++++++------------ package.json | 22 +++++++++++----------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index cce09c8..81624d7 100644 --- a/README.md +++ b/README.md @@ -55,13 +55,13 @@ Depends on the following library: - Moment ``` - - - - - - - + + + + + + + ``` ## Installing via yarn, npm or bower diff --git a/index.html b/index.html index 4e91ddc..2b5adba 100644 --- a/index.html +++ b/index.html @@ -12,21 +12,21 @@ - - + + - - - - - - + + + + + + - - - - + + + + diff --git a/package.json b/package.json index 3c460c0..3f9123b 100644 --- a/package.json +++ b/package.json @@ -20,12 +20,12 @@ "dev": "lite-server" }, "dependencies": { - "angular": "^1.7.5", - "angular-animate": "^1.7.5", - "angular-aria": "^1.7.5", - "angular-material": "^1.1.10", - "angular-messages": "^1.7.5", - "moment": "^2.22.2" + "angular": "^1.7.7", + "angular-animate": "^1.7.7", + "angular-aria": "^1.7.7", + "angular-material": "^1.1.13", + "angular-messages": "^1.7.7", + "moment": "^2.24.0" }, "repository": { "type": "git", @@ -33,11 +33,11 @@ }, "devDependencies": { "gulp": "^4.0.0", - "gulp-clean-css": "^3.9.4", - "gulp-rename": "^1.2.3", - "gulp-sourcemaps": "^2.6.1", - "gulp-uglify": "^3.0.0", - "lite-server": "^2.3.0", + "gulp-clean-css": "^4.0.0", + "gulp-rename": "^1.4.0", + "gulp-sourcemaps": "^2.6.5", + "gulp-uglify": "^3.0.2", + "lite-server": "^2.4.0", "pump": "^3.0.0" } } From 46e138c68a24133dbe561a4d8f4e2bcd2f0bff4a Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 16 Mar 2019 21:29:17 -0400 Subject: [PATCH 180/226] #56 setDirty for the form --- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- index.html | 39 ++++++++++++++----- js/angular-material-datetimepicker.js | 2 + 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 3eea397..d330f91 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,O,E){var V="minutes"===E.mode,N="seconds"===E.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=V||N?60:12;a=Math.round(i/360*e)}if(V){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),i=(a||(r.minute(0),n.minute(0)),parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 2b5adba..2d6595d 100644 --- a/index.html +++ b/index.html @@ -78,7 +78,7 @@

Datetime Pickers

- + Datetime Pickers

- - - - +
+ + + + + moment: {{timeutc._isAMomentObject}} +
@@ -158,6 +161,24 @@

Datetime Pickers

+
+
+
+ + + +
+
date time required
+
+

Frm dirty: {{frmreq.$dirty}}, Frm invalid: {{frmreq.$invalid}}

+
+
+
+
+
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 217cc79..ad345dc 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -263,6 +263,8 @@ scope.currentDate = v && !v._isUTC ? v.toDate() : v; ngModel.$setValidity('format', true); + ngModel.$setViewValue(scope.currentDate); + ngModel.$setDirty(); isOn = false; if (!moment(scope.currentDate).isSame(options.currentDate)) { From fc4ad6ecaafba45211aff651a76685c1b2e18285 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 23 Mar 2019 20:33:19 -0400 Subject: [PATCH 181/226] version 1.18.4 --- bower.json | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bower.json b/bower.json index 8394eb9..ebcd6db 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.3", + "version": "1.18.4", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 6efc4de..2a9de3f 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n\r\n\r\n\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","hasBackDrop","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 3f9123b..e75bf3c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.3", + "version": "1.18.4", "keywords": [ "css", "js", From a1fe5527040b4b74bd9329c269f4e3c63d27f04c Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 26 Apr 2019 21:09:15 -0400 Subject: [PATCH 182/226] #61 Add hasBackdrop option --- README.md | 4 +++- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- index.html | 2 +- js/angular-material-datetimepicker.js | 9 ++++++--- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 81624d7..a2ff067 100644 --- a/README.md +++ b/README.md @@ -145,6 +145,7 @@ The directive accepts several attributes which are described below: | **template-url** | String | You can set a custom HTML template (default: '') | | **ng-model-options** | timezone option | For example: ng-model-options="{timezone: 'utc'}" | | **day-of-week-len** | Number | Day of the week length (default: 1 => S) Possible value 0-3 | +| **has-backdrop** | Boolean | true => Has Backdrop (default: true) | ### UTC Time Zone You should normally use the browser local time zone and use UTC only on the server side. @@ -218,7 +219,8 @@ The `mdcDateTimeDialog.show` accepts almost the same options as the directive. targetEvent: {DOMClickEvent}=null, openFrom: {string|Element|object}=null, closeTo: {string|Element|object}=null, - dayOfWeekLen: {int} =1 + dayOfWeekLen: {int} =1, + hasBackdrop: {boolean} =true } ``` diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index d330f91..f4a99b4 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var l,d=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(d=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),i=(a||(r.minute(0),n.minute(0)),parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),i=(a||(r.minute(0),n.minute(0)),parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackDrop: false,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 2d6595d..1d4e678 100644 --- a/index.html +++ b/index.html @@ -261,7 +261,7 @@

Datetime Pickers

-
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index ad345dc..19cd07d 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -122,7 +122,8 @@ targetEvent: null, openFrom: null, closeTo: null, - dayOfWeekLen: 1 + dayOfWeekLen: 1, + hasBackdrop: true, }; return function (params) { @@ -169,7 +170,8 @@ minuteSteps: '=', showIcon: '=', templateUrl: '@', - dayOfWeekLen: '=' + dayOfWeekLen: '=', + hasBackdrop: '=' }, link: function (scope, element, attrs, ngModel) { var isOn = false; @@ -249,7 +251,7 @@ bindToController: true, clickOutsideToClose: options.clickOutsideToClose || false, disableParentScroll: options.disableParentScroll || false, - hasBackDrop: false, + hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop, skipHide: true, multiple: true, }; @@ -332,6 +334,7 @@ disableParentScroll: options.disableParentScroll || false, skipHide: true, multiple: true, + hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop, targetEvent: options.targetEvent, openFrom: options.openFrom, closeTo: options.closeTo, From ece4354bc27e81ab00f4012b041cedd79e28859e Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 26 Apr 2019 21:10:47 -0400 Subject: [PATCH 183/226] Version 1.18.5 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index ebcd6db..55053e6 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.4", + "version": "1.18.5", "keywords": [ "css", "js", diff --git a/package.json b/package.json index e75bf3c..47a23f2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.4", + "version": "1.18.5", "keywords": [ "css", "js", From 78a99d4d348ca45f72762c4b49997b10415f070c Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 3 May 2019 21:18:27 -0400 Subject: [PATCH 184/226] Update README for am pm --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a2ff067..6895564 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,8 @@ The directive accepts several attributes which are described below: | **minutes** | Boolean | true => Has Timepicker minutes (default: true) | | **seconds** | Boolean | true => Has Timepicker seconds (default: false) | | **cancel-text** | String | Text for the cancel button (default: Cancel) | +| **am-text** | String | Text for the ante meridiem (default: AM) | +| **pm-text** | String | Text for the post meridiem (default: PM) | | **today-btn** | Boolean | true => Show today button (default: true) | | **today-text** | String | Text for the today button (default: Today) | | **ok-text** | String | Text for the OK button (default: OK) | From a0998270cd9d73232915eee267a8f876e4f9ebdc Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 2 Sep 2019 00:30:42 -0400 Subject: [PATCH 185/226] #65 show am/pm when date only with short-time --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index f4a99b4..a44bd34 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),i=(a||(r.minute(0),n.minute(0)),parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),i=(a||(r.minute(0),n.minute(0)),parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 19cd07d..018ebb6 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -18,7 +18,7 @@ '
' + '
' + '
{{picker.currentNearestMinute().format("dddd")}}
' + - '
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
' + + '
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
' + '
' + ' ×' + '
' + From 93e0c18ee45ca98c360525ac155431d88cbba935 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 2 Sep 2019 00:32:58 -0400 Subject: [PATCH 186/226] version 1.18.6 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 55053e6..513b532 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.5", + "version": "1.18.6", "keywords": [ "css", "js", diff --git a/package.json b/package.json index 47a23f2..6dbad47 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.5", + "version": "1.18.6", "keywords": [ "css", "js", From 368ac0dc8a0fdcc7c547e2fa61807a7531fb5807 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 2 Sep 2019 00:50:40 -0400 Subject: [PATCH 187/226] Update deps to fix vulnerabilities --- README.md | 12 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- index.html | 18 +- package.json | 16 +- yarn.lock | 1772 ++++++++--------- 6 files changed, 846 insertions(+), 976 deletions(-) diff --git a/README.md b/README.md index 6895564..1d49b29 100644 --- a/README.md +++ b/README.md @@ -55,12 +55,12 @@ Depends on the following library: - Moment ``` - - - - - - + + + + + + ``` diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index a44bd34..5d98a1a 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),i=(a||(r.minute(0),n.minute(0)),parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 1d4e678..5a31521 100644 --- a/index.html +++ b/index.html @@ -13,19 +13,19 @@ - + - - - - - - + + + + + + - - + + diff --git a/package.json b/package.json index 6dbad47..dd4a144 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,11 @@ "dev": "lite-server" }, "dependencies": { - "angular": "^1.7.7", - "angular-animate": "^1.7.7", - "angular-aria": "^1.7.7", - "angular-material": "^1.1.13", - "angular-messages": "^1.7.7", + "angular": "^1.7.8", + "angular-animate": "^1.7.8", + "angular-aria": "^1.7.8", + "angular-material": "^1.1.20", + "angular-messages": "^1.7.8", "moment": "^2.24.0" }, "repository": { @@ -32,12 +32,12 @@ "url": "https://github.com/beenote/angular-material-datetimepicker" }, "devDependencies": { - "gulp": "^4.0.0", - "gulp-clean-css": "^4.0.0", + "gulp": "^4.0.2", + "gulp-clean-css": "^4.2.0", "gulp-rename": "^1.4.0", "gulp-sourcemaps": "^2.6.5", "gulp-uglify": "^3.0.2", - "lite-server": "^2.4.0", + "lite-server": "^2.5.4", "pump": "^3.0.0" } } diff --git a/yarn.lock b/yarn.lock index a8a8004..b64275c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,6 +22,7 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== accepts@~1.3.4: version "1.3.5" @@ -38,56 +39,58 @@ after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.7.5: - version "1.7.6" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.6.tgz#3c48ac592a1a0d98a9ac9ab3fe3b4f6b9393fe7f" +angular-animate@^1.7.8: + version "1.7.8" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.8.tgz#c95f237efe7ecfe0e6003adb5e2c7ef0e5a2b9d4" + integrity sha512-bINtzizq7TbJzfVrDpwLfTxVl0Qd7fRNWFb5jKYI1vaFZobQNX/QONXlLow6ySsDbZ6eLECycB7mvWtfh1YYaw== -angular-aria@^1.7.5: - version "1.7.6" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.6.tgz#8e6371af31f6749fe7c089cde8507ed024f480df" +angular-aria@^1.7.8: + version "1.7.8" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.8.tgz#3954250ef516b57cdd3cdf41ff4ee6fcfdc84ceb" + integrity sha512-facq/111sZKL2wUUqRA1GnGt+lZ8KAcX9Aw04cNA+OyEkoaoRC77NY4VSOTQxghlSd0OPAdLeFnmETnuiWrpLg== -angular-material@^1.1.10: - version "1.1.10" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.10.tgz#fb93ba84f2734146cb9ca8ebf65bdc163d9f8471" +angular-material@^1.1.20: + version "1.1.20" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.20.tgz#138def4a4f3982fddfa7788c9775e663f12cba85" + integrity sha512-R2jILX9g7AVvEZbIMqEp8mkjlH/iSrDG150pCSzL7+6PHdi4dYuyXNRtYlpYKe+72Q4fIV4YBYSxepNob3hU9A== -angular-messages@^1.7.5: - version "1.7.6" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.6.tgz#cafddd8d0941b88d58b7eb5094732458840f5533" +angular-messages@^1.7.8: + version "1.7.8" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.8.tgz#746da9c955f855ef6ceac34b2a5eb8b1b12e6a78" + integrity sha512-e7Oq4ugdTcAp4kLP9TNOh6mfSsYO2Uwf7NavLuNWqahDGRHYXilo2gcI/vxmFjPBOwAmreXrhYlpGLlJdzxfQg== -angular@^1.7.5: - version "1.7.6" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.6.tgz#db3bd96e3305c870f6227b9b32a4d761880473da" +angular@^1.7.8: + version "1.7.8" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.8.tgz#b77ede272ce1b261e3be30c1451a0b346905a3c9" + integrity sha512-wtef/y4COxM7ZVhddd7JtAAhyYObq9YXKar9tsW7558BImeVYteJiTxCKeJOL45lJ/+7B4wrAC49j8gTFYEthg== ansi-colors@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== dependencies: ansi-wrap "^0.1.0" ansi-gray@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= dependencies: ansi-wrap "0.1.0" ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-styles@^2.2.1: version "2.2.1" @@ -96,17 +99,12 @@ ansi-styles@^2.2.1: ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" @@ -114,61 +112,66 @@ anymatch@^2.0.0: append-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= dependencies: buffer-equal "^1.0.0" aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-filter@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= dependencies: make-iterator "^1.0.0" arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-map@^2.0.0, arr-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= dependencies: make-iterator "^1.0.0" arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-each@^1.0.0, array-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= array-initial@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= dependencies: array-slice "^1.0.0" is-number "^4.0.0" @@ -176,65 +179,56 @@ array-initial@^1.0.0: array-last@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== dependencies: is-number "^4.0.0" array-slice@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.0.0.tgz#e73034f00dcc1f40876008fd20feae77bd4b7c2f" + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== array-sort@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== dependencies: default-compare "^1.0.0" get-value "^2.0.6" kind-of "^5.0.2" -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= async-done@^1.2.0, async-done@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.2.4.tgz#17b0fcefb9a33cb9de63daa8904c0a65bd535fa0" + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== dependencies: end-of-stream "^1.1.0" once "^1.3.2" - process-nextick-args "^1.0.7" + process-nextick-args "^2.0.0" stream-exhaust "^1.0.1" async-each-series@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== async-limiter@~1.0.0: version "1.0.0" @@ -243,6 +237,7 @@ async-limiter@~1.0.0: async-settle@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= dependencies: async-done "^1.2.2" @@ -250,36 +245,27 @@ async@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -atob@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.0.tgz#ab2b150e51d7b122b9efc8d7340c06b6c41076bc" +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== atob@~1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -axios@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.1.tgz#2d8e3e5d0bdbd7327f91bc814f5c57660f81824d" +axios@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" + integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== dependencies: - follow-redirects "^1.2.5" - is-buffer "^1.1.5" + follow-redirects "1.5.10" + is-buffer "^2.0.2" bach@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= dependencies: arr-filter "^1.1.1" arr-flatten "^1.0.1" @@ -298,6 +284,7 @@ backo2@1.0.2: balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-arraybuffer@0.1.5: version "0.1.5" @@ -310,6 +297,7 @@ base64id@1.0.0: base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" class-utils "^0.3.5" @@ -323,12 +311,6 @@ batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" @@ -336,93 +318,89 @@ better-assert@~1.0.0: callsite "1.0.0" binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== blob@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@^2.3.0, braces@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.1.tgz#7086c913b4e5a08dbe37ac0ee6a2500c4ba691bb" +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" - define-property "^1.0.0" extend-shallow "^2.0.1" fill-range "^4.0.0" isobject "^3.0.1" - kind-of "^6.0.2" repeat-element "^1.1.2" snapdragon "^0.8.1" snapdragon-node "^2.0.1" split-string "^3.0.2" to-regex "^3.0.1" -browser-sync-ui@v1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-1.0.1.tgz#9740527b26d1d7ace259acc0c79e5b5e37d0fdf2" +browser-sync-client@^2.26.6: + version "2.26.6" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.6.tgz#e5201d3ace8aee88af17656b7b0c0620b6f8e4ab" + integrity sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw== + dependencies: + etag "1.8.1" + fresh "0.5.2" + mitt "^1.1.3" + rxjs "^5.5.6" + +browser-sync-ui@^2.26.4: + version "2.26.4" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz#3772f13c6b93f2d7d333f4be0ca1ec02aae97dba" + integrity sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA== dependencies: async-each-series "0.1.1" - connect-history-api-fallback "^1.1.0" - immutable "^3.7.6" + connect-history-api-fallback "^1" + immutable "^3" server-destroy "1.0.1" - socket.io-client "2.0.4" + socket.io-client "^2.0.4" stream-throttle "^0.1.3" -browser-sync@^2.24.4: - version "2.24.5" - resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.24.5.tgz#2b32c00cd85958be570c20fae557b0dc0ccd3818" +browser-sync@^2.26.7: + version "2.26.7" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.7.tgz#120287716eb405651a76cc74fe851c31350557f9" + integrity sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w== dependencies: - browser-sync-ui v1.0.1 + browser-sync-client "^2.26.6" + browser-sync-ui "^2.26.4" bs-recipes "1.3.4" - chokidar "1.7.0" + bs-snippet-injector "^2.0.1" + chokidar "^2.0.4" connect "3.6.6" - connect-history-api-fallback "^1.5.0" + connect-history-api-fallback "^1" dev-ip "^1.0.1" - easy-extender "2.3.2" - eazy-logger "3.0.2" + easy-extender "^2.3.4" + eazy-logger "^3" etag "^1.8.1" fresh "^0.5.2" fs-extra "3.0.1" http-proxy "1.15.2" - immutable "3.8.2" - localtunnel "1.9.0" - micromatch "2.3.11" - opn "4.0.2" + immutable "^3" + localtunnel "1.9.2" + micromatch "^3.1.10" + opn "5.3.0" portscanner "2.1.1" qs "6.2.3" raw-body "^2.3.2" resp-modifier "6.0.2" rx "4.1.0" + send "0.16.2" serve-index "1.9.1" serve-static "1.13.2" server-destroy "1.0.1" @@ -434,17 +412,20 @@ bs-recipes@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" +bs-snippet-injector@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz#61b5393f11f52559ed120693100343b6edb04dd5" + integrity sha1-YbU5PxH1JVntEgaTEANDtu2wTdU= + buffer-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= buffer-from@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" - -builtin-modules@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== bytes@3.0.0: version "3.0.0" @@ -453,6 +434,7 @@ bytes@3.0.0: cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" component-emitter "^1.2.1" @@ -471,10 +453,7 @@ callsite@1.0.0: camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= chalk@^1.1.1: version "1.1.3" @@ -486,38 +465,24 @@ chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" -chokidar@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -chokidar@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" +chokidar@^2.0.0, chokidar@^2.0.4: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" - async-each "^1.0.0" - braces "^2.3.0" + async-each "^1.0.1" + braces "^2.3.2" glob-parent "^3.1.0" - inherits "^2.0.1" + inherits "^2.0.3" is-binary-path "^1.0.0" is-glob "^4.0.0" - normalize-path "^2.1.1" + normalize-path "^3.0.0" path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" optionalDependencies: - fsevents "^1.1.2" + fsevents "^1.2.7" chownr@^1.0.1: version "1.0.1" @@ -526,6 +491,7 @@ chownr@^1.0.1: class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" define-property "^0.2.5" @@ -541,6 +507,7 @@ clean-css@4.2.1: cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -549,34 +516,36 @@ cliui@^3.2.0: clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= clone-stats@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= cloneable-readable@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== dependencies: inherits "^2.0.1" process-nextick-args "^2.0.0" readable-stream "^2.3.5" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= collection-map@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= dependencies: arr-map "^2.0.2" for-own "^1.0.0" @@ -585,6 +554,7 @@ collection-map@^1.0.0: collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -592,12 +562,7 @@ collection-visit@^1.0.0: color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - dependencies: - delayed-stream "~1.0.0" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== commander@^2.2.0, commander@~2.16.0: version "2.16.0" @@ -607,10 +572,15 @@ component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" -component-emitter@1.2.1, component-emitter@^1.2.1: +component-emitter@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" @@ -618,17 +588,24 @@ component-inherit@0.0.3: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" readable-stream "^2.2.2" typedarray "^0.0.6" -connect-history-api-fallback@^1.1.0, connect-history-api-fallback@^1.2.0, connect-history-api-fallback@^1.5.0: +connect-history-api-fallback@^1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connect-history-api-fallback@^1.2.0: version "1.5.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" @@ -650,11 +627,19 @@ connect@3.6.6: console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -convert-source-map@1.X, convert-source-map@^1.5.0: +convert-source-map@1.X: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" +convert-source-map@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" @@ -662,23 +647,20 @@ cookie@0.3.1: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= copy-props@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.1.tgz#665fc32046ca84a898abaa3c5945e7f248ccba00" + version "2.0.4" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" + integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== dependencies: each-props "^1.3.0" is-plain-object "^2.0.1" -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= css@2.X, css@^2.2.1: version "2.2.1" @@ -690,16 +672,12 @@ css@2.X, css@^2.2.1: urix "^0.1.0" d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== dependencies: - assert-plus "^1.0.0" + es5-ext "^0.10.50" + type "^1.0.1" debug-fabulous@1.X: version "1.0.0" @@ -709,79 +687,92 @@ debug-fabulous@1.X: memoizee "0.4.X" object-assign "4.X" -debug@2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@~2.6.4: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@3.X, debug@^3.1.0, debug@~3.1.0: +debug@3.X, debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" +debug@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== default-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== dependencies: kind-of "^5.0.2" default-resolution@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" + object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= depd@~1.1.2: version "1.1.2" @@ -794,10 +785,12 @@ destroy@~1.0.4: detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= detect-newline@2.X: version "2.1.0" @@ -807,9 +800,10 @@ dev-ip@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" -duplexify@^3.5.3: - version "3.5.4" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" +duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" @@ -817,30 +811,27 @@ duplexify@^3.5.3: stream-shift "^1.0.0" each-props@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.1.tgz#fc138f51e3a2774286d4858e02d6e7de462de158" + version "1.3.2" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== dependencies: is-plain-object "^2.0.1" object.defaults "^1.1.0" -easy-extender@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.2.tgz#3d3248febe2b159607316d8f9cf491c16648221d" +easy-extender@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.4.tgz#298789b64f9aaba62169c77a2b3b64b4c9589b8f" + integrity sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q== dependencies: - lodash "^3.10.1" + lodash "^4.17.10" -eazy-logger@3.0.2: +eazy-logger@^3: version "3.0.2" resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" + integrity sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw= dependencies: tfunk "^3.0.1" -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -849,21 +840,16 @@ encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" -end-of-stream@^1.0.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: once "^1.4.0" -end-of-stream@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" - dependencies: - once "^1.4.0" - -engine.io-client@~3.1.0: - version "3.1.6" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -877,9 +863,10 @@ engine.io-client@~3.1.0: xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" -engine.io-client@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" +engine.io-client@~3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.3.2.tgz#04e068798d75beda14375a264bb3d742d7bc33aa" + integrity sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -889,7 +876,7 @@ engine.io-client@~3.2.0: indexof "0.0.1" parseqs "0.0.5" parseuri "0.0.5" - ws "~3.3.1" + ws "~6.1.0" xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" @@ -917,19 +904,30 @@ engine.io@~3.2.0: error-ex@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es5-ext@^0.10.14, es5-ext@^0.10.30, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: +es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: + version "0.10.51" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.51.tgz#ed2d7d9d48a12df86e0299287e93a09ff478842f" + integrity sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "^1.0.0" + +es5-ext@^0.10.30, es5-ext@~0.10.2: version "0.10.38" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.38.tgz#fa7d40d65bbc9bb8a67e1d3f9cc656a00530eed3" dependencies: es6-iterator "~2.0.3" es6-symbol "~3.1.1" -es6-iterator@^2.0.1, es6-iterator@~2.0.3: +es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: d "1" es5-ext "^0.10.35" @@ -938,11 +936,22 @@ es6-iterator@^2.0.1, es6-iterator@~2.0.3: es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= dependencies: d "1" es5-ext "~0.10.14" -es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: +es6-weak-map@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +es6-weak-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" dependencies: @@ -959,7 +968,7 @@ escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -etag@^1.8.1, etag@~1.8.1: +etag@1.8.1, etag@^1.8.1, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -974,15 +983,10 @@ eventemitter3@1.x.x: version "1.2.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -992,44 +996,37 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= dependencies: homedir-polyfill "^1.0.1" extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" @@ -1040,39 +1037,20 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - fancy-log@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== dependencies: ansi-gray "^0.1.1" color-support "^1.1.3" + parse-node-version "^1.0.0" time-stamp "^1.0.0" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -1094,6 +1072,7 @@ finalhandler@1.1.0: find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" @@ -1101,15 +1080,27 @@ find-up@^1.0.0: findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= dependencies: detect-file "^1.0.0" is-glob "^3.1.0" micromatch "^3.0.4" resolve-dir "^1.0.1" +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + fined@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== dependencies: expand-tilde "^2.0.2" is-plain-object "^2.0.3" @@ -1118,57 +1109,41 @@ fined@^1.0.1: parse-filepath "^1.0.1" flagged-respawn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.0.tgz#4e79ae9b2eb38bf86b3bb56bf3e0a56aa5fcabd7" + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== flush-write-stream@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== dependencies: - inherits "^2.0.1" - readable-stream "^2.0.4" + inherits "^2.0.3" + readable-stream "^2.3.6" -follow-redirects@^1.2.5: - version "1.5.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== dependencies: - debug "^3.1.0" + debug "=3.1.0" for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= for-own@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= dependencies: for-in "^1.0.1" -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" @@ -1193,6 +1168,7 @@ fs-minipass@^1.2.5: fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= dependencies: graceful-fs "^4.1.11" through2 "^2.0.3" @@ -1200,45 +1176,25 @@ fs-mkdirp-stream@^1.0.0: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" - -fsevents@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.39" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" +fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" + nan "^2.12.1" + node-pre-gyp "^0.12.0" function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -1250,35 +1206,19 @@ gauge@~2.7.3: wide-align "^1.1.0" get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" @@ -1286,6 +1226,7 @@ glob-parent@^3.1.0: glob-stream@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= dependencies: extend "^3.0.0" glob "^7.1.1" @@ -1298,18 +1239,22 @@ glob-stream@^6.1.0: to-absolute-glob "^2.0.0" unique-stream "^2.0.2" -glob-watcher@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.1.tgz#239aaa621b6bd843b288fdf6b155f50963c7d7ea" +glob-watcher@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" + integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== dependencies: + anymatch "^2.0.0" async-done "^1.2.0" chokidar "^2.0.0" + is-negated-glob "^1.0.0" just-debounce "^1.0.0" object.defaults "^1.1.0" -glob@^7.0.5, glob@^7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" +glob@^7.1.1, glob@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1321,6 +1266,7 @@ glob@^7.0.5, glob@^7.1.1: global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== dependencies: global-prefix "^1.0.1" is-windows "^1.0.1" @@ -1329,6 +1275,7 @@ global-modules@^1.0.0: global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= dependencies: expand-tilde "^2.0.2" homedir-polyfill "^1.0.1" @@ -1337,27 +1284,35 @@ global-prefix@^1.0.1: which "^1.2.14" glogg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" + version "1.0.2" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== dependencies: sparkles "^1.0.0" -graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@4.X: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -gulp-clean-css@^3.9.4: - version "3.10.0" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.10.0.tgz#bccd4605eff104bfa4980014cc4b3c24c571736d" +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.2" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== + +gulp-clean-css@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.2.0.tgz#915ec258dc6d3e6a50043f610066d5c2eac4f54e" + integrity sha512-r4zQsSOAK2UYUL/ipkAVCTRg/2CLZ2A+oPVORopBximRksJ6qy3EX1KGrIWT4ZrHxz3Hlobb1yyJtqiut7DNjA== dependencies: clean-css "4.2.1" plugin-error "1.0.1" - through2 "2.0.3" + through2 "3.0.1" vinyl-sourcemaps-apply "0.2.1" -gulp-cli@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.0.1.tgz#7847e220cb3662f2be8a6d572bf14e17be5a994b" +gulp-cli@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" + integrity sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA== dependencies: ansi-colors "^1.0.1" archy "^1.0.0" @@ -1369,7 +1324,7 @@ gulp-cli@^2.0.0: gulplog "^1.0.0" interpret "^1.1.0" isobject "^3.0.1" - liftoff "^2.5.0" + liftoff "^3.1.0" matchdep "^2.0.0" mute-stdout "^1.0.0" pretty-hrtime "^1.0.0" @@ -1378,13 +1333,15 @@ gulp-cli@^2.0.0: v8flags "^3.0.1" yargs "^7.1.0" -gulp-rename@^1.2.3: +gulp-rename@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.4.0.tgz#de1c718e7c4095ae861f7296ef4f3248648240bd" + integrity sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg== -gulp-sourcemaps@^2.6.1: - version "2.6.4" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.4.tgz#cbb2008450b1bcce6cd23bf98337be751bf6e30a" +gulp-sourcemaps@^2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz#a3f002d87346d2c0f3aec36af7eb873f23de8ae6" + integrity sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg== dependencies: "@gulp-sourcemaps/identity-map" "1.X" "@gulp-sourcemaps/map-sources" "1.X" @@ -1398,45 +1355,39 @@ gulp-sourcemaps@^2.6.1: strip-bom-string "1.X" through2 "2.X" -gulp-uglify@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.1.tgz#8d3eee466521bea6b10fd75dff72adf8b7ea2d97" +gulp-uglify@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.2.tgz#5f5b2e8337f879ca9dec971feb1b82a5a87850b0" + integrity sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg== dependencies: + array-each "^1.0.1" + extend-shallow "^3.0.2" gulplog "^1.0.0" has-gulplog "^0.1.0" - lodash "^4.13.1" + isobject "^3.0.1" make-error-cause "^1.1.1" safe-buffer "^5.1.2" through2 "^2.0.0" uglify-js "^3.0.5" vinyl-sourcemaps-apply "^0.2.0" -gulp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.0.tgz#95766c601dade4a77ed3e7b2b6dc03881b596366" +gulp@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== dependencies: - glob-watcher "^5.0.0" - gulp-cli "^2.0.0" - undertaker "^1.0.0" + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" vinyl-fs "^3.0.0" gulplog@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= dependencies: glogg "^1.0.0" -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -1462,14 +1413,17 @@ has-gulplog@^0.1.0: has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -1478,6 +1432,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -1486,36 +1441,27 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" kind-of "^4.0.0" -hawk@3.1.3, hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - homedir-polyfill@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== dependencies: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.1.tgz#6e4cee78b01bb849dcf93527708c69fdbee410df" + version "2.8.4" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" + integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== http-errors@1.6.3, http-errors@~1.6.2: version "1.6.3" @@ -1533,14 +1479,6 @@ http-proxy@1.15.2: eventemitter3 "1.x.x" requires-port "1.x.x" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - iconv-lite@0.4.23, iconv-lite@^0.4.4: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -1553,9 +1491,10 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -immutable@3.8.2, immutable@^3.7.6: +immutable@^3: version "3.8.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= indexof@0.0.1: version "0.0.1" @@ -1564,40 +1503,39 @@ indexof@0.0.1: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -ini@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -ini@~1.3.0: +ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== interpret@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -is-absolute@^0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" - dependencies: - is-relative "^0.2.1" - is-windows "^0.2.0" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== dependencies: is-relative "^1.0.0" is-windows "^1.0.1" @@ -1605,50 +1543,57 @@ is-absolute@^1.0.0: is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" +is-buffer@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" + integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" @@ -1657,70 +1602,59 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" is-negated-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= is-number-like@^1.0.3: version "1.0.8" @@ -1728,93 +1662,67 @@ is-number-like@^1.0.3: dependencies: lodash.isfinite "^3.3.2" -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-number@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - -is-odd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" - dependencies: - is-number "^4.0.0" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - is-promise@^2.1: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" -is-relative@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" - dependencies: - is-unc-path "^0.1.1" - is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== dependencies: is-unc-path "^1.0.0" -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-unc-path@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" - dependencies: - unc-path-regex "^0.1.0" - is-unc-path@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== dependencies: unc-path-regex "^0.1.2" is-utf8@^0.2.0, is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= is-valid-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" - -is-windows@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isarray@2.0.1: version "2.0.1" @@ -1823,38 +1731,24 @@ isarray@2.0.1: isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: +json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= jsonfile@^3.0.0: version "3.0.1" @@ -1862,46 +1756,39 @@ jsonfile@^3.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - just-debounce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" + integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.1.0, kind-of@^3.2.0: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0, kind-of@^5.0.2: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== last-run@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= dependencies: default-resolution "^2.0.0" es6-weak-map "^2.0.1" @@ -1909,27 +1796,31 @@ last-run@^1.1.0: lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= dependencies: readable-stream "^2.0.5" lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= dependencies: invert-kv "^1.0.0" lead@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= dependencies: flush-write-stream "^1.0.2" -liftoff@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" +liftoff@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== dependencies: extend "^3.0.0" - findup-sync "^2.0.0" + findup-sync "^3.0.0" fined "^1.0.1" flagged-respawn "^1.0.0" is-plain-object "^2.0.4" @@ -1941,19 +1832,21 @@ limiter@^1.0.5: version "1.1.3" resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.3.tgz#32e2eb55b2324076943e5d04c1185ffb387968ef" -lite-server@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/lite-server/-/lite-server-2.4.0.tgz#e3e122885836b168895d7b6b4eca06047d204c0d" +lite-server@^2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/lite-server/-/lite-server-2.5.4.tgz#f1c1b25bb70ce0f83eb1ab0b08ef32c08accf4e2" + integrity sha512-57SverS67UqRFiRm0ktdzEG5yZeyzkywRJ9Q8PHVSGuLm9K97Mr6jF43XTu5v9lVe8g0WHJ4eKlIeGSd1Bq/sw== dependencies: - browser-sync "^2.24.4" + browser-sync "^2.26.7" connect-history-api-fallback "^1.2.0" connect-logger "0.0.1" - lodash "^4.11.1" + lodash "^4.17.15" minimist "1.2.0" load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -1961,12 +1854,13 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -localtunnel@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.0.tgz#8ffecdcf8c8a14f62df1056cf9d54acbb0bb9a8f" +localtunnel@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.2.tgz#0012fcabc29cf964c130a01858768aa2bb65b5af" + integrity sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg== dependencies: - axios "0.17.1" - debug "2.6.8" + axios "0.19.0" + debug "4.1.1" openurl "1.1.1" yargs "6.6.0" @@ -1974,13 +1868,10 @@ lodash.isfinite@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" -lodash@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - -lodash@^4.11.1, lodash@^4.13.1: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" +lodash@^4.17.10, lodash@^4.17.15: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== lru-queue@0.1: version "0.1.0" @@ -1999,34 +1890,34 @@ make-error@^1.2.0: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535" make-iterator@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.0.tgz#57bef5dc85d23923ba23767324d8e8f8f3d9694b" + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== dependencies: - kind-of "^3.1.0" + kind-of "^6.0.2" map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" matchdep@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= dependencies: findup-sync "^2.0.0" micromatch "^3.0.4" resolve "^1.4.0" stack-trace "0.0.10" -math-random@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" - memoizee@0.4.X: version "0.4.11" resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.11.tgz#bde9817663c9e40fdb2a4ea1c367296087ae8c8f" @@ -2040,25 +1931,7 @@ memoizee@0.4.X: next-tick "1" timers-ext "^0.1.2" -micromatch@2.3.11, micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.0.4, micromatch@^3.1.4: +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" dependencies: @@ -2079,8 +1952,9 @@ micromatch@^3.0.4, micromatch@^3.1.4: mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: +mime-types@~2.1.17, mime-types@~2.1.18: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" dependencies: @@ -2090,15 +1964,17 @@ mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@1.2.0, minimist@^1.2.0: version "1.2.0" @@ -2117,45 +1993,64 @@ minizlib@^1.1.0: dependencies: minipass "^2.2.1" +mitt@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.3.tgz#528c506238a05dce11cd914a741ea2cc332da9b8" + integrity sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA== + mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -moment@*, moment@^2.22.2: +moment@*: version "2.22.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" +moment@^2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== mute-stdout@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.0.tgz#5b32ea07eb43c9ded6130434cf926f46b2a7fd4d" + version "1.0.1" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== -nan@^2.3.0, nan@^2.9.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== nanomatch@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" define-property "^2.0.2" extend-shallow "^3.0.2" fragment-cache "^0.2.1" - is-odd "^2.0.0" is-windows "^1.0.2" kind-of "^6.0.2" object.pick "^1.3.0" @@ -2163,11 +2058,12 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -needle@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== dependencies: - debug "^2.1.2" + debug "^3.2.6" iconv-lite "^0.4.4" sax "^1.2.4" @@ -2175,17 +2071,18 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" -next-tick@1: +next-tick@1, next-tick@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" -node-pre-gyp@^0.10.0: - version "0.10.2" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.2.tgz#e8945c20ef6795a20aac2b44f036eb13cf5146e3" +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" - needle "^2.2.0" + needle "^2.2.1" nopt "^4.0.1" npm-packlist "^1.1.6" npmlog "^4.0.2" @@ -2194,47 +2091,39 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-pre-gyp@^0.6.39: - version "0.6.39" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" - dependencies: - detect-libc "^1.0.2" - hawk "3.1.3" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= dependencies: abbrev "1" osenv "^0.1.4" normalize-package-data@^2.3.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" + resolve "^1.10.0" semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + now-and-later@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.0.tgz#bc61cbb456d79cb32207ce47ca05136ff2e7d6ee" + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== dependencies: once "^1.3.2" @@ -2252,6 +2141,7 @@ npm-packlist@^1.1.6: npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" @@ -2261,12 +2151,9 @@ npmlog@^4.0.2: number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@4.X, object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@4.X, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2277,14 +2164,16 @@ object-component@0.0.3: object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" kind-of "^3.0.3" -object-keys@^1.0.11, object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-path@^0.9.0: version "0.9.2" @@ -2293,12 +2182,14 @@ object-path@^0.9.0: object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.assign@^4.0.4: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" function-bind "^1.1.1" @@ -2308,6 +2199,7 @@ object.assign@^4.0.4: object.defaults@^1.0.0, object.defaults@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= dependencies: array-each "^1.0.1" array-slice "^1.0.0" @@ -2317,26 +2209,22 @@ object.defaults@^1.0.0, object.defaults@^1.1.0: object.map@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= dependencies: for-own "^1.0.0" make-iterator "^1.0.0" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" object.reduce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= dependencies: for-own "^1.0.0" make-iterator "^1.0.0" @@ -2347,9 +2235,10 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" @@ -2357,66 +2246,70 @@ openurl@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" -opn@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" +opn@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" + is-wsl "^1.1.0" ordered-read-streams@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= dependencies: readable-stream "^2.0.1" os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= dependencies: lcid "^1.0.0" os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" parse-filepath@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= dependencies: - is-absolute "^0.2.3" + is-absolute "^1.0.0" map-cache "^0.2.0" path-root "^0.1.1" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: error-ex "^1.2.0" +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= parseqs@0.0.5: version "0.0.5" @@ -2437,60 +2330,67 @@ parseurl@~1.3.2: pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= dependencies: pinkie-promise "^2.0.0" path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= path-root@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= dependencies: path-root-regex "^0.1.0" path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= dependencies: graceful-fs "^4.1.2" pify "^2.0.0" pinkie-promise "^2.0.0" -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= plugin-error@1.0.1: version "1.0.1" @@ -2511,26 +2411,22 @@ portscanner@2.1.1: posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - -process-nextick-args@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -2543,33 +2439,18 @@ pump@^3.0.0: once "^1.3.1" pumpify@^1.3.5: - version "1.4.0" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: - duplexify "^3.5.3" + duplexify "^3.6.0" inherits "^2.0.3" pump "^2.0.0" -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - qs@6.2.3: version "6.2.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -randomatic@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" @@ -2583,7 +2464,7 @@ raw-body@^2.3.2: iconv-lite "0.4.23" unpipe "1.0.0" -rc@^1.1.7, rc@^1.2.7: +rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" dependencies: @@ -2595,6 +2476,7 @@ rc@^1.1.7, rc@^1.2.7: read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= dependencies: find-up "^1.0.0" read-pkg "^1.0.0" @@ -2602,26 +2484,25 @@ read-pkg-up@^1.0.1: read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= dependencies: load-json-file "^1.0.0" normalize-package-data "^2.3.2" path-type "^1.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" +"readable-stream@2 || 3": + version "3.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -2631,30 +2512,26 @@ readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" + graceful-fs "^4.1.11" + micromatch "^3.1.10" readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= dependencies: resolve "^1.1.6" -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - dependencies: - is-equal-shallow "^0.1.3" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" @@ -2662,6 +2539,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: remove-bom-buffer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== dependencies: is-buffer "^1.1.5" is-utf8 "^0.2.1" @@ -2669,6 +2547,7 @@ remove-bom-buffer@^3.0.0: remove-bom-stream@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= dependencies: remove-bom-buffer "^3.0.0" safe-buffer "^5.1.0" @@ -2677,61 +2556,41 @@ remove-bom-stream@^1.2.0: remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= replace-ext@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= replace-homedir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= dependencies: homedir-polyfill "^1.0.1" is-absolute "^1.0.0" remove-trailing-separator "^1.1.0" -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= requires-port@1.x.x: version "1.0.0" @@ -2740,6 +2599,7 @@ requires-port@1.x.x: resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= dependencies: expand-tilde "^2.0.0" global-modules "^1.0.0" @@ -2747,6 +2607,7 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: resolve-options@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= dependencies: value-or-function "^3.0.0" @@ -2754,17 +2615,12 @@ resolve-url@^0.2.1, resolve-url@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" -resolve@^1.1.6, resolve@^1.1.7: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: - path-parse "^1.0.5" - -resolve@^1.4.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.6.0.tgz#0fbd21278b27b4004481c395349e7aba60a9ff5c" - dependencies: - path-parse "^1.0.5" + path-parse "^1.0.6" resp-modifier@6.0.2: version "6.0.2" @@ -2776,28 +2632,40 @@ resp-modifier@6.0.2: ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" +rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: - glob "^7.0.5" + glob "^7.1.3" rx@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" -safe-buffer@^5.0.1, safe-buffer@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +rxjs@^5.5.6: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + +safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" @@ -2812,12 +2680,14 @@ sax@^1.2.4: semver-greatest-satisfied-range@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= dependencies: sver-compat "^1.5.0" "semver@2 || 3 || 4 || 5", semver@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== send@0.16.2: version "0.16.2" @@ -2865,23 +2735,12 @@ server-destroy@1.0.1: set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -2895,10 +2754,12 @@ setprototypeof@1.1.0: signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" isobject "^3.0.0" @@ -2907,12 +2768,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" debug "^2.2.0" @@ -2923,65 +2786,61 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" -socket.io-client@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" component-bind "1.0.0" component-emitter "1.2.1" - debug "~2.6.4" - engine.io-client "~3.1.0" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" has-cors "1.1.0" indexof "0.0.1" object-component "0.0.3" parseqs "0.0.5" parseuri "0.0.5" - socket.io-parser "~3.1.1" + socket.io-parser "~3.2.0" to-array "0.1.4" -socket.io-client@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" +socket.io-client@^2.0.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.2.0.tgz#84e73ee3c43d5020ccc1a258faeeb9aec2723af7" + integrity sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" component-bind "1.0.0" component-emitter "1.2.1" debug "~3.1.0" - engine.io-client "~3.2.0" + engine.io-client "~3.3.1" has-binary2 "~1.0.2" has-cors "1.1.0" indexof "0.0.1" object-component "0.0.3" parseqs "0.0.5" parseuri "0.0.5" - socket.io-parser "~3.2.0" + socket.io-parser "~3.3.0" to-array "0.1.4" -socket.io-parser@~3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" dependencies: component-emitter "1.2.1" debug "~3.1.0" - has-binary2 "~1.0.2" isarray "2.0.1" -socket.io-parser@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" +socket.io-parser@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" + integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== dependencies: component-emitter "1.2.1" debug "~3.1.0" @@ -3008,10 +2867,11 @@ source-map-resolve@^0.3.0: urix "~0.1.0" source-map-resolve@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== dependencies: - atob "^2.0.0" + atob "^2.1.1" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" @@ -3020,6 +2880,7 @@ source-map-resolve@^0.5.0: source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map-url@~0.3.0: version "0.3.0" @@ -3042,56 +2903,50 @@ source-map@~0.6.0, source-map@~0.6.1: sparkles@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== spdx-correct@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== spdx-expression-parse@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" -sshpk@^1.7.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - stack-trace@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -3111,10 +2966,12 @@ statuses@~1.4.0: stream-exhaust@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= stream-throttle@^0.1.3: version "0.1.3" @@ -3126,6 +2983,7 @@ stream-throttle@^0.1.3: string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -3134,35 +2992,36 @@ string-width@^1.0.1, string-width@^1.0.2: "string-width@^1.0.2 || 2": version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" @@ -3173,12 +3032,14 @@ strip-bom-string@1.X: strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= dependencies: is-utf8 "^0.2.0" strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= supports-color@^2.0.0: version "2.0.0" @@ -3187,30 +3048,15 @@ supports-color@^2.0.0: sver-compat@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= dependencies: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -tar-pack@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= tar@^4: version "4.4.4" @@ -3231,23 +3077,40 @@ tfunk@^3.0.1: chalk "^1.1.1" object-path "^0.9.0" -through2-filter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== dependencies: through2 "~2.0.0" xtend "~4.0.0" -through2@2.0.3, through2@2.X, through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: +through2@2.X: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" dependencies: readable-stream "^2.1.5" xtend "~4.0.1" +through2@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + dependencies: + readable-stream "2 || 3" + +through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + time-stamp@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= timers-ext@^0.1.2: version "0.1.2" @@ -3259,6 +3122,7 @@ timers-ext@^0.1.2: to-absolute-glob@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= dependencies: is-absolute "^1.0.0" is-negated-glob "^1.0.0" @@ -3270,12 +3134,14 @@ to-array@0.1.4: to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -3283,6 +3149,7 @@ to-regex-range@^2.1.0: to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" extend-shallow "^3.0.2" @@ -3292,28 +3159,19 @@ to-regex@^3.0.1, to-regex@^3.0.2: to-through@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= dependencies: through2 "^2.0.3" -tough-cookie@~2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - dependencies: - punycode "^1.4.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +type@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/type/-/type-1.0.3.tgz#16f5d39f27a2d28d86e48f8981859e9d3296c179" + integrity sha512-51IMtNfVcee8+9GJvj0spSuFcZHe9vSib6Xtgsny1Km9ugyz2mbS08I3rsUIRYgJohFRFU1160sgRodYz378Hg== typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= ua-parser-js@0.7.17: version "0.7.17" @@ -3326,25 +3184,24 @@ uglify-js@^3.0.5: commander "~2.16.0" source-map "~0.6.1" -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" -unc-path-regex@^0.1.0, unc-path-regex@^0.1.2: +unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= undertaker-registry@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= -undertaker@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.0.tgz#339da4646252d082dc378e708067299750e11b49" +undertaker@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" + integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== dependencies: arr-flatten "^1.0.1" arr-map "^2.0.0" @@ -3357,20 +3214,22 @@ undertaker@^1.0.0: undertaker-registry "^1.0.0" union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" get-value "^2.0.6" is-extendable "^0.1.1" - set-value "^0.4.3" + set-value "^2.0.1" unique-stream@^2.0.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== dependencies: - json-stable-stringify "^1.0.0" - through2-filter "^2.0.0" + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" universalify@^0.1.0: version "0.1.2" @@ -3383,25 +3242,26 @@ unpipe@1.0.0, unpipe@~1.0.0: unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.4.tgz#ee2321ba0a786c50973db043a50b7bcba822361d" +upath@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" + integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== urix@^0.1.0, urix@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" use@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" - dependencies: - kind-of "^6.0.2" + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -3409,19 +3269,17 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" -uuid@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" - v8flags@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.2.tgz#ad6a78a20a6b23d03a8debc11211e3cc23149477" + version "3.1.3" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" + integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== dependencies: homedir-polyfill "^1.0.1" validate-npm-package-license@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" @@ -3429,18 +3287,12 @@ validate-npm-package-license@^3.0.1: value-or-function@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= vinyl-fs@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.2.tgz#1b86258844383f57581fcaac081fe09ef6d6d752" + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== dependencies: fs-mkdirp-stream "^1.0.0" glob-stream "^6.1.0" @@ -3463,6 +3315,7 @@ vinyl-fs@^3.0.0: vinyl-sourcemap@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= dependencies: append-buffer "^1.0.2" convert-source-map "^1.5.0" @@ -3479,8 +3332,9 @@ vinyl-sourcemaps-apply@0.2.1, vinyl-sourcemaps-apply@^0.2.0: source-map "^0.5.1" vinyl@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== dependencies: clone "^2.1.1" clone-buffer "^1.0.0" @@ -3492,16 +3346,19 @@ vinyl@^2.0.0: which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= which@^1.2.14: - version "1.3.0" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" @@ -3512,6 +3369,7 @@ window-size@^0.2.0: wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -3519,6 +3377,7 @@ wrap-ansi@^2.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= ws@~3.3.1: version "3.3.3" @@ -3528,17 +3387,26 @@ ws@~3.3.1: safe-buffer "~5.1.0" ultron "~1.1.0" +ws@~6.1.0: + version "6.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" + integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== + dependencies: + async-limiter "~1.0.0" + xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" xtend@~4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= yallist@^3.0.0, yallist@^3.0.2: version "3.0.2" @@ -3553,6 +3421,7 @@ yargs-parser@^4.1.0, yargs-parser@^4.2.0: yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= dependencies: camelcase "^3.0.0" @@ -3596,6 +3465,7 @@ yargs@6.6.0: yargs@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= dependencies: camelcase "^3.0.0" cliui "^3.2.0" From a1c9941766caf1382dad6691112baf06c2694cc3 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 2 Sep 2019 00:52:25 -0400 Subject: [PATCH 188/226] version 1.19.0 --- bower.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bower.json b/bower.json index 513b532..5a54d7f 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.6", + "version": "1.19.0", "keywords": [ "css", "js", @@ -28,7 +28,7 @@ "test-infra" ], "dependencies": { - "moment": "^2.22.2", - "angular-material": "^1.1.10" + "moment": "^2.24.0", + "angular-material": "^1.1.20" } } diff --git a/package.json b/package.json index dd4a144..b781c84 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.18.6", + "version": "1.19.0", "keywords": [ "css", "js", From 307a514b0e0eaeaf5da94d1752c9a68aa309c721 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 8 Sep 2019 21:33:41 -0400 Subject: [PATCH 189/226] # 66 add show-clear option --- README.md | 6 ++++-- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- index.html | 11 +++++++++++ js/angular-material-datetimepicker.js | 4 +++- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1d49b29..1ecea0e 100644 --- a/README.md +++ b/README.md @@ -143,7 +143,8 @@ The directive accepts several attributes which are described below: | **edit-input** | Boolean | true => Input editable and don't show dialog (default: false) | | **click-outside-to-close**| Boolean | true => A click outside close the dialog (default: false) | | **minute-steps** | Number | 1 to 59 minute steps (default: 5) | -| **show-icon** | Boolean | true => Show calendar or time icon before + clear (default: false) | +| **show-icon** | Boolean | true => Show calendar or time icon before (default: false) | +| **show-clear** | Boolean | true => clear (default: true if show-icon) | | **template-url** | String | You can set a custom HTML template (default: '') | | **ng-model-options** | timezone option | For example: ng-model-options="{timezone: 'utc'}" | | **day-of-week-len** | Number | Day of the week length (default: 1 => S) Possible value 0-3 | @@ -216,7 +217,8 @@ The `mdcDateTimeDialog.show` accepts almost the same options as the directive. editInput: {boolean} =false, clickOutsideToClose: {boolean} =false, minuteSteps: {int} =5, - howIcon: {boolean} =false, + showIcon: {boolean} =false, + showClear: {boolean} =true, templateUrl: {string} ='' targetEvent: {DOMClickEvent}=null, openFrom: {string|Element|object}=null, diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 5d98a1a..978fda7 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(p){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},h='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,template:h,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,i){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=p()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=p(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5';r.after(i(a+'')(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=p());var a={controller:f,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=h,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var f=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return f.$inject=["$mdDialog","mdcDefaultParams"],f.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=p(this.maxDate),r=p(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:f,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,p){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=h()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=h(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i=void 0===n.showClear||n.showClear?'':"";r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=h());var a={controller:D,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=f,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var D=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return D.$inject=["$mdDialog","mdcDefaultParams"],D.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=h(this.maxDate),r=h(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","showClear","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","clearButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","add","isPreviousMonthVisible","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = scope.showClear === undefined || scope.showClear ? '' : '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/index.html b/index.html index 5a31521..390e364 100644 --- a/index.html +++ b/index.html @@ -141,6 +141,17 @@

Datetime Pickers

+
+ + + + +
+
+
diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 018ebb6..c5b7196 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -117,6 +117,7 @@ clickOutsideToClose: false, minuteSteps: 5, showIcon: false, + showClear: true, template: template, templateUrl: '', targetEvent: null, @@ -169,6 +170,7 @@ clickOutsideToClose: '=', minuteSteps: '=', showIcon: '=', + showClear: '=', templateUrl: '@', dayOfWeekLen: '=', hasBackdrop: '=' @@ -296,7 +298,7 @@ 'ng-click="openCalendarDiag($event)">' + '' + '', - clearButton = ''; + clearButton = scope.showClear === undefined || scope.showClear ? '' : ''; element.after($compile(calendarButton + clearButton)(scope)); scope.openCalendarDiag = function(e) { From 896382ef9589ac6f2081b3936eb8e297a5dbfb4d Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 8 Sep 2019 21:35:55 -0400 Subject: [PATCH 190/226] version 1.19.1 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 5a54d7f..735454f 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.0", + "version": "1.19.1", "keywords": [ "css", "js", diff --git a/package.json b/package.json index b781c84..347f713 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.0", + "version": "1.19.1", "keywords": [ "css", "js", From 01f45aeaf0119af067bcf983a18eff1e7817c77b Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 17 Sep 2019 23:22:20 -0400 Subject: [PATCH 191/226] #67 fix calendar topIndex month does not fit --- css/material-datetimepicker.css | 8 +++--- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- js/angular-material-datetimepicker.js | 26 +++++-------------- 5 files changed, 14 insertions(+), 26 deletions(-) diff --git a/css/material-datetimepicker.css b/css/material-datetimepicker.css index b401b95..cf03382 100644 --- a/css/material-datetimepicker.css +++ b/css/material-datetimepicker.css @@ -137,7 +137,7 @@ md-menu-content.dtp-year-list { } .dtp div.dtp-picker-month, .dtp div.dtp-actual-time { - font-size: 1.2em; + font-size: 1em; font-weight: 500; text-align: center; } @@ -164,7 +164,7 @@ md-menu-content.dtp-year-list { .dtp table.dtp-picker-days { margin: 0; - min-height: 220px; + min-height: 260px; } .dtp md-virtual-repeat-container.months { @@ -176,7 +176,7 @@ md-menu-content.dtp-year-list { } .dtp table.dtp-picker-days tr > td { - font-size: 11px; + font-size: 12px; text-align: center; padding: 0; } @@ -229,7 +229,7 @@ md-menu-content.dtp-year-list { color: #757575; text-align: center; font-weight: 700; - padding: 4px 3px; + padding: 2px 3px; width: 38px; height: 28px; } diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 978fda7..e18db2b 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(h){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},f='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:f,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,p){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=h()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=h(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i=void 0===n.showClear||n.showClear?'':"";r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=h());var a={controller:D,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=f,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var D=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return D.$inject=["$mdDialog","mdcDefaultParams"],D.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=h(this.maxDate),r=h(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:f,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,p){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=h()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=h(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i=void 0===n.showClear||n.showClear?'':"";r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=h());var a={controller:D,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=f,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var D=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return D.$inject=["$mdDialog","mdcDefaultParams"],D.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=h(this.maxDate),r=h(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = scope.showClear === undefined || scope.showClear ? '' : '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if (amount === 1 && this.isNextMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousMonthVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if (amount === 1 && this.isNextYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n\r\n if (amount === -1 && this.isPreviousYearVisible()) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], \r\n _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n ITEM_HEIGHT = 240,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n var year = date.year();\r\n var month = date.month();\r\n return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","showClear","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","clearButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","isPreviousMonthVisible","add","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = scope.showClear === undefined || scope.showClear ? '' : '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index ba5d548..9a066ed 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}md-menu-content.dtp-month-list{background-color:#fff}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}md-menu-content.dtp-year-list{background-color:#fff}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1.2em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:4px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}md-menu-content.dtp-month-list{background-color:#fff}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}md-menu-content.dtp-year-list{background-color:#fff}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:260px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:12px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:2px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index c5b7196..2bce48d 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -547,20 +547,12 @@ return this.meridien === 'PM'; }, incrementMonth: function (amount) { - if (amount === 1 && this.isNextMonthVisible()) { - this.selectDate(this.currentDate.add(amount, 'month')); - } - - if (amount === -1 && this.isPreviousMonthVisible()) { + if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) { this.selectDate(this.currentDate.add(amount, 'month')); } }, incrementYear: function (amount) { - if (amount === 1 && this.isNextYearVisible()) { - this.selectDate(this.currentDate.add(amount, 'year')); - } - - if (amount === -1 && this.isPreviousYearVisible()) { + if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) { this.selectDate(this.currentDate.add(amount, 'year')); } }, @@ -568,8 +560,7 @@ $mdMenu.open(ev); }, monthsAvailable: function () { - var monthsArr = [], - _date = moment(this.currentDate); + var monthsArr = [], _date = moment(this.currentDate); for (var m = 0; m < 12; m++) { var curMonth = _date.month(m); @@ -788,7 +779,6 @@ var YEAR_MIN = 1920, YEAR_MAX = new Date().getFullYear() + 30, MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12, - ITEM_HEIGHT = 240, MONTHS = []; for (var i = 0; i < MONTHS_IN_ALL; i++) { MONTHS.push(i); @@ -796,9 +786,7 @@ var currentMonthIndex = function (date, low) { low = low ? low : 0; - var year = date.year(); - var month = date.month(); - return (((year - YEAR_MIN) * 12) + month - 1) - low; + return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low; }; return { @@ -826,7 +814,7 @@ calendar.months = MONTHS; } else { var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0; - var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL; + var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL; calendar.months = MONTHS.slice(low, high); } @@ -847,7 +835,7 @@ }, function (val2, val1) { if (val2 != val1) { var nDate = moment(val2, 'YYYY-MM'); - var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0; + var low = picker.minDate ? currentMonthIndex(picker.minDate): 0; var index = currentMonthIndex(nDate, low); if (calendar.topIndex != index) { calendar.topIndex = index; @@ -927,7 +915,7 @@ }], template: '' + - '
' + + '
' + '
' + '
' + '' From 86d445863900e22bb4c47700f46cca11eddc9c7f Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 17 Sep 2019 23:25:01 -0400 Subject: [PATCH 192/226] version 1.19.2 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 735454f..9f749fe 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.1", + "version": "1.19.2", "keywords": [ "css", "js", diff --git a/package.json b/package.json index 347f713..4ec655e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.1", + "version": "1.19.2", "keywords": [ "css", "js", From 30ec0b3178a625b0f593ff9286837d7950bdcca6 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 22 Jan 2020 21:28:36 -0500 Subject: [PATCH 193/226] update to angular js 1.7.9 and angular material js 1.1.21 --- README.md | 12 +- bower.json | 2 +- index.html | 18 +- package-lock.json | 5124 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 10 +- 5 files changed, 5145 insertions(+), 21 deletions(-) create mode 100644 package-lock.json diff --git a/README.md b/README.md index 1ecea0e..939323a 100644 --- a/README.md +++ b/README.md @@ -55,12 +55,12 @@ Depends on the following library: - Moment ``` - - - - - - + + + + + + ``` diff --git a/bower.json b/bower.json index 9f749fe..96dc6ca 100644 --- a/bower.json +++ b/bower.json @@ -29,6 +29,6 @@ ], "dependencies": { "moment": "^2.24.0", - "angular-material": "^1.1.20" + "angular-material": "^1.1.21" } } diff --git a/index.html b/index.html index 390e364..6bc1eb5 100644 --- a/index.html +++ b/index.html @@ -13,19 +13,19 @@ - + - - - - - - + + + + + + - - + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e040b48 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5124 @@ +{ + "name": "ng-material-datetimepicker", + "version": "1.19.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@gulp-sourcemaps/identity-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz", + "integrity": "sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==", + "dev": true, + "requires": { + "acorn": "^5.0.3", + "css": "^2.2.1", + "normalize-path": "^2.1.1", + "source-map": "^0.6.0", + "through2": "^2.0.3" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "dev": true, + "requires": { + "normalize-path": "^2.0.1", + "through2": "^2.0.3" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "angular": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.7.9.tgz", + "integrity": "sha512-5se7ZpcOtu0MBFlzGv5dsM1quQDoDeUTwZrWjGtTNA7O88cD8TEk5IEKCTDa3uECV9XnvKREVUr7du1ACiWGFQ==" + }, + "angular-animate": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.7.9.tgz", + "integrity": "sha512-fV+AISy/HTzurQH2ngsJg+lLIvfu0ahc1h4AYKauaXVw97rZc2k4iUA1bMstiEyClsdayQX568kjQc1NK+oYhw==" + }, + "angular-aria": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/angular-aria/-/angular-aria-1.7.9.tgz", + "integrity": "sha512-luI3Jemd1AbOQW0krdzfEG3fM0IFtLY0bSSqIDEx3POE0XjKIC1MkrO8Csyq9PPgueLphyAPofzUwZ8YeZ88SA==" + }, + "angular-material": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/angular-material/-/angular-material-1.1.21.tgz", + "integrity": "sha512-BiqvEu82dqQ4Sb4OjJHdVp/YJvFEMrtr7K2eS+6qlWPWUiF9K2K6IkX2H3p0wD7QlscjTz8n9W8uKL46PQjlCQ==" + }, + "angular-messages": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/angular-messages/-/angular-messages-1.7.9.tgz", + "integrity": "sha512-OdJihuO6AW+m1/r9OdW5riCwacn3dL1agQvgu6Cww3a7OARXXN0vxOpsZCNk4yg4CuD7Et3tiz4DymhvZkydvw==" + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "axios": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "browser-sync": { + "version": "2.26.7", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.7.tgz", + "integrity": "sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w==", + "dev": true, + "requires": { + "browser-sync-client": "^2.26.6", + "browser-sync-ui": "^2.26.4", + "bs-recipes": "1.3.4", + "bs-snippet-injector": "^2.0.1", + "chokidar": "^2.0.4", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "^3", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "1.15.2", + "immutable": "^3", + "localtunnel": "1.9.2", + "micromatch": "^3.1.10", + "opn": "5.3.0", + "portscanner": "2.1.1", + "qs": "6.2.3", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "0.16.2", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "2.1.1", + "ua-parser-js": "0.7.17", + "yargs": "6.4.0" + }, + "dependencies": { + "yargs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", + "integrity": "sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.1.0" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "browser-sync-client": { + "version": "2.26.6", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.6.tgz", + "integrity": "sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw==", + "dev": true, + "requires": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3", + "rxjs": "^5.5.6" + } + }, + "browser-sync-ui": { + "version": "2.26.4", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz", + "integrity": "sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA==", + "dev": true, + "requires": { + "async-each-series": "0.1.1", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^2.0.4", + "stream-throttle": "^0.1.3" + } + }, + "bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", + "dev": true + }, + "bs-snippet-injector": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", + "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=", + "dev": true + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "connect-logger": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/connect-logger/-/connect-logger-0.0.1.tgz", + "integrity": "sha1-TZmZeKHSC7RgjnzUNNdBZSJVF0s=", + "dev": true, + "requires": { + "moment": "*" + } + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-fabulous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", + "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", + "dev": true, + "requires": { + "debug": "3.X", + "memoizee": "0.4.X", + "object-assign": "4.X" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "eazy-logger": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz", + "integrity": "sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw=", + "dev": true, + "requires": { + "tfunk": "^3.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "engine.io-client": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.0.tgz", + "integrity": "sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", + "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "eventemitter3": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "gulp-cli": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", + "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + } + } + }, + "gulp-clean-css": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-4.2.0.tgz", + "integrity": "sha512-r4zQsSOAK2UYUL/ipkAVCTRg/2CLZ2A+oPVORopBximRksJ6qy3EX1KGrIWT4ZrHxz3Hlobb1yyJtqiut7DNjA==", + "dev": true, + "requires": { + "clean-css": "4.2.1", + "plugin-error": "1.0.1", + "through2": "3.0.1", + "vinyl-sourcemaps-apply": "0.2.1" + }, + "dependencies": { + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "gulp-rename": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", + "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", + "dev": true + }, + "gulp-sourcemaps": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz", + "integrity": "sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg==", + "dev": true, + "requires": { + "@gulp-sourcemaps/identity-map": "1.X", + "@gulp-sourcemaps/map-sources": "1.X", + "acorn": "5.X", + "convert-source-map": "1.X", + "css": "2.X", + "debug-fabulous": "1.X", + "detect-newline": "2.X", + "graceful-fs": "4.X", + "source-map": "~0.6.0", + "strip-bom-string": "1.X", + "through2": "2.X" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "gulp-uglify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", + "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "extend-shallow": "^3.0.2", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "isobject": "^3.0.1", + "make-error-cause": "^1.1.1", + "safe-buffer": "^5.1.2", + "through2": "^2.0.0", + "uglify-js": "^3.0.5", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", + "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", + "dev": true, + "requires": { + "eventemitter3": "1.x.x", + "requires-port": "1.x.x" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "requires": { + "lodash.isfinite": "^3.3.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "lite-server": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/lite-server/-/lite-server-2.5.4.tgz", + "integrity": "sha512-57SverS67UqRFiRm0ktdzEG5yZeyzkywRJ9Q8PHVSGuLm9K97Mr6jF43XTu5v9lVe8g0WHJ4eKlIeGSd1Bq/sw==", + "dev": true, + "requires": { + "browser-sync": "^2.26.7", + "connect-history-api-fallback": "^1.2.0", + "connect-logger": "0.0.1", + "lodash": "^4.17.15", + "minimist": "1.2.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "localtunnel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.9.2.tgz", + "integrity": "sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg==", + "dev": true, + "requires": { + "axios": "0.19.0", + "debug": "4.1.1", + "openurl": "1.1.1", + "yargs": "6.6.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.2.0" + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", + "dev": true + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "requires": { + "es5-ext": "~0.10.2" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "dev": true, + "requires": { + "make-error": "^1.2.0" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "memoizee": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", + "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.45", + "es6-weak-map": "^2.0.2", + "event-emitter": "^0.3.5", + "is-promise": "^2.1", + "lru-queue": "0.1", + "next-tick": "1", + "timers-ext": "^0.1.5" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-path": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", + "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "portscanner": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", + "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", + "dev": true, + "requires": { + "async": "1.5.2", + "is-number-like": "^1.0.3" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "qs": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", + "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", + "dev": true, + "requires": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", + "dev": true + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "socket.io-adapter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "dev": true + }, + "socket.io-client": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "engine.io-client": "~3.4.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", + "dev": true, + "requires": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, + "tfunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz", + "integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "object-path": "^0.9.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", + "dev": true + }, + "uglify-js": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.6.tgz", + "integrity": "sha512-yYqjArOYSxvqeeiYH2VGjZOqq6SVmhxzaPjJC1W2F9e+bqvFL9QXQ2osQuKUFjM2hGjKG2YclQnRKWQSt/nOTQ==", + "dev": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "undertaker": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", + "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "^0.5.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/package.json b/package.json index 4ec655e..a758a32 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,11 @@ "dev": "lite-server" }, "dependencies": { - "angular": "^1.7.8", - "angular-animate": "^1.7.8", - "angular-aria": "^1.7.8", - "angular-material": "^1.1.20", - "angular-messages": "^1.7.8", + "angular": "^1.7.9", + "angular-animate": "^1.7.9", + "angular-aria": "^1.7.9", + "angular-material": "^1.1.21", + "angular-messages": "^1.7.9", "moment": "^2.24.0" }, "repository": { From dd2d12849efffadf65842d3bab247cbdbbee7e6f Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 22 Jan 2020 21:29:27 -0500 Subject: [PATCH 194/226] version 1.19.3 --- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bower.json b/bower.json index 96dc6ca..751f2f9 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.2", + "version": "1.19.3", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index e18db2b..2844deb 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(h){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},f='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:f,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,p){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=h()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=h(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i=void 0===n.showClear||n.showClear?'':"";r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=h());var a={controller:D,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=f,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var D=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return D.$inject=["$mdDialog","mdcDefaultParams"],D.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=h(this.maxDate),r=h(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:f,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,p){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=h()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=h(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i=void 0===n.showClear||n.showClear?'':"";r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=h());var a={controller:D,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=f,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var D=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return D.$inject=["$mdDialog","mdcDefaultParams"],D.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=h(this.maxDate),r=h(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),i=(a||(r.minute(0),n.minute(0)),parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){function r(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)}return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){function e(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = scope.showClear === undefined || scope.showClear ? '' : '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","css","el","name","angular","element","window","getComputedStyle","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","showClear","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","clearButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","_dateParam","input","fallback","ret","isDefined","that","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","isPreviousMonthVisible","add","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","isTouchSupported","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","minuteMode","secondMode","pointAvailable","setTimeDegRay","mode","componentRoot","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = scope.showClear === undefined || scope.showClear ? '' : '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index a758a32..137eb0f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.2", + "version": "1.19.3", "keywords": [ "css", "js", From a6e319b33f3bcf4174e0148c82568f1566b9071c Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 22 Jan 2020 21:38:15 -0500 Subject: [PATCH 195/226] update yarn.lock file --- package-lock.json | 5124 --------------------------------------------- yarn.lock | 48 +- 2 files changed, 24 insertions(+), 5148 deletions(-) delete mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index e040b48..0000000 --- a/package-lock.json +++ /dev/null @@ -1,5124 +0,0 @@ -{ - "name": "ng-material-datetimepicker", - "version": "1.19.2", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@gulp-sourcemaps/identity-map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz", - "integrity": "sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==", - "dev": true, - "requires": { - "acorn": "^5.0.3", - "css": "^2.2.1", - "normalize-path": "^2.1.1", - "source-map": "^0.6.0", - "through2": "^2.0.3" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", - "dev": true, - "requires": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" - } - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, - "angular": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/angular/-/angular-1.7.9.tgz", - "integrity": "sha512-5se7ZpcOtu0MBFlzGv5dsM1quQDoDeUTwZrWjGtTNA7O88cD8TEk5IEKCTDa3uECV9XnvKREVUr7du1ACiWGFQ==" - }, - "angular-animate": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/angular-animate/-/angular-animate-1.7.9.tgz", - "integrity": "sha512-fV+AISy/HTzurQH2ngsJg+lLIvfu0ahc1h4AYKauaXVw97rZc2k4iUA1bMstiEyClsdayQX568kjQc1NK+oYhw==" - }, - "angular-aria": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/angular-aria/-/angular-aria-1.7.9.tgz", - "integrity": "sha512-luI3Jemd1AbOQW0krdzfEG3fM0IFtLY0bSSqIDEx3POE0XjKIC1MkrO8Csyq9PPgueLphyAPofzUwZ8YeZ88SA==" - }, - "angular-material": { - "version": "1.1.21", - "resolved": "https://registry.npmjs.org/angular-material/-/angular-material-1.1.21.tgz", - "integrity": "sha512-BiqvEu82dqQ4Sb4OjJHdVp/YJvFEMrtr7K2eS+6qlWPWUiF9K2K6IkX2H3p0wD7QlscjTz8n9W8uKL46PQjlCQ==" - }, - "angular-messages": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/angular-messages/-/angular-messages-1.7.9.tgz", - "integrity": "sha512-OdJihuO6AW+m1/r9OdW5riCwacn3dL1agQvgu6Cww3a7OARXXN0vxOpsZCNk4yg4CuD7Et3tiz4DymhvZkydvw==" - }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dev": true, - "requires": { - "buffer-equal": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "dev": true, - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dev": true, - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "dev": true, - "requires": { - "async-done": "^1.2.2" - } - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "axios": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", - "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", - "dev": true, - "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true - } - } - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dev": true, - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "browser-sync": { - "version": "2.26.7", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.7.tgz", - "integrity": "sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w==", - "dev": true, - "requires": { - "browser-sync-client": "^2.26.6", - "browser-sync-ui": "^2.26.4", - "bs-recipes": "1.3.4", - "bs-snippet-injector": "^2.0.1", - "chokidar": "^2.0.4", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "^3", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "1.15.2", - "immutable": "^3", - "localtunnel": "1.9.2", - "micromatch": "^3.1.10", - "opn": "5.3.0", - "portscanner": "2.1.1", - "qs": "6.2.3", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "2.1.1", - "ua-parser-js": "0.7.17", - "yargs": "6.4.0" - }, - "dependencies": { - "yargs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", - "integrity": "sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.1.0" - } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - } - } - } - }, - "browser-sync-client": { - "version": "2.26.6", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.6.tgz", - "integrity": "sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw==", - "dev": true, - "requires": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3", - "rxjs": "^5.5.6" - } - }, - "browser-sync-ui": { - "version": "2.26.4", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz", - "integrity": "sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA==", - "dev": true, - "requires": { - "async-each-series": "0.1.1", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^2.0.4", - "stream-throttle": "^0.1.3" - } - }, - "bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", - "dev": true - }, - "bs-snippet-injector": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", - "integrity": "sha1-YbU5PxH1JVntEgaTEANDtu2wTdU=", - "dev": true - }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dev": true, - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "connect-logger": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/connect-logger/-/connect-logger-0.0.1.tgz", - "integrity": "sha1-TZmZeKHSC7RgjnzUNNdBZSJVF0s=", - "dev": true, - "requires": { - "moment": "*" - } - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", - "dev": true, - "requires": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debug-fabulous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", - "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", - "dev": true, - "requires": { - "debug": "3.X", - "memoizee": "0.4.X", - "object-assign": "4.X" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dev": true, - "requires": { - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "eazy-logger": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz", - "integrity": "sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw=", - "dev": true, - "requires": { - "tfunk": "^3.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "engine.io": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", - "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~3.3.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - } - } - }, - "engine.io-client": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.0.tgz", - "integrity": "sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~4.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "engine.io-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", - "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dev": true, - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", - "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "3.1.1", - "bundled": true, - "dev": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - } - }, - "glob-watcher": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", - "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "object.defaults": "^1.1.0" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dev": true, - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "dependencies": { - "gulp-cli": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", - "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.1.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.0.1", - "yargs": "^7.1.0" - } - } - } - }, - "gulp-clean-css": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-4.2.0.tgz", - "integrity": "sha512-r4zQsSOAK2UYUL/ipkAVCTRg/2CLZ2A+oPVORopBximRksJ6qy3EX1KGrIWT4ZrHxz3Hlobb1yyJtqiut7DNjA==", - "dev": true, - "requires": { - "clean-css": "4.2.1", - "plugin-error": "1.0.1", - "through2": "3.0.1", - "vinyl-sourcemaps-apply": "0.2.1" - }, - "dependencies": { - "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", - "dev": true, - "requires": { - "readable-stream": "2 || 3" - } - } - } - }, - "gulp-rename": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", - "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", - "dev": true - }, - "gulp-sourcemaps": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz", - "integrity": "sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg==", - "dev": true, - "requires": { - "@gulp-sourcemaps/identity-map": "1.X", - "@gulp-sourcemaps/map-sources": "1.X", - "acorn": "5.X", - "convert-source-map": "1.X", - "css": "2.X", - "debug-fabulous": "1.X", - "detect-newline": "2.X", - "graceful-fs": "4.X", - "source-map": "~0.6.0", - "strip-bom-string": "1.X", - "through2": "2.X" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "gulp-uglify": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", - "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "extend-shallow": "^3.0.2", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "isobject": "^3.0.1", - "make-error-cause": "^1.1.1", - "safe-buffer": "^5.1.2", - "through2": "^2.0.0", - "uglify-js": "^3.0.5", - "vinyl-sourcemaps-apply": "^0.2.0" - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dev": true, - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", - "dev": true - }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - } - } - }, - "http-proxy": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", - "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", - "dev": true, - "requires": { - "eventemitter3": "1.x.x", - "requires-port": "1.x.x" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "requires": { - "lodash.isfinite": "^3.3.2" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "dev": true, - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dev": true, - "requires": { - "flush-write-stream": "^1.0.2" - } - }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true - }, - "lite-server": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/lite-server/-/lite-server-2.5.4.tgz", - "integrity": "sha512-57SverS67UqRFiRm0ktdzEG5yZeyzkywRJ9Q8PHVSGuLm9K97Mr6jF43XTu5v9lVe8g0WHJ4eKlIeGSd1Bq/sw==", - "dev": true, - "requires": { - "browser-sync": "^2.26.7", - "connect-history-api-fallback": "^1.2.0", - "connect-logger": "0.0.1", - "lodash": "^4.17.15", - "minimist": "1.2.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "localtunnel": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.9.2.tgz", - "integrity": "sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg==", - "dev": true, - "requires": { - "axios": "0.19.0", - "debug": "4.1.1", - "openurl": "1.1.1", - "yargs": "6.6.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" - } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - } - } - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", - "dev": true - }, - "lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", - "dev": true, - "requires": { - "es5-ext": "~0.10.2" - } - }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", - "dev": true - }, - "make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", - "dev": true, - "requires": { - "make-error": "^1.2.0" - } - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "memoizee": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", - "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.45", - "es6-weak-map": "^2.0.2", - "event-emitter": "^0.3.5", - "is-promise": "^2.1", - "lru-queue": "0.1", - "next-tick": "1", - "timers-ext": "^0.1.5" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", - "dev": true, - "requires": { - "mime-db": "1.43.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "dev": true - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dev": true, - "requires": { - "once": "^1.3.2" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-path": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", - "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", - "dev": true - }, - "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - } - }, - "portscanner": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", - "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", - "dev": true, - "requires": { - "async": "1.5.2", - "is-number-like": "^1.0.3" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "qs": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", - "dev": true - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.3", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - } - }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dev": true, - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", - "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "dev": true, - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", - "dev": true, - "requires": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", - "dev": true - }, - "rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dev": true, - "requires": { - "symbol-observable": "1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "dev": true, - "requires": { - "sver-compat": "^1.5.0" - } - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - } - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - } - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "socket.io": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", - "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", - "dev": true, - "requires": { - "debug": "~3.1.0", - "engine.io": "~3.2.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.1.1", - "socket.io-parser": "~3.2.0" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "engine.io-client": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", - "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~3.3.1", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - } - }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - }, - "socket.io-client": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", - "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", - "dev": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.2.0", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.2.0", - "to-array": "0.1.4" - } - }, - "socket.io-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", - "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" - } - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - } - } - }, - "socket.io-adapter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", - "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", - "dev": true - }, - "socket.io-client": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", - "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", - "dev": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~4.1.0", - "engine.io-client": "~3.4.0", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "socket.io-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", - "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - } - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", - "dev": true, - "requires": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dev": true, - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true - }, - "tfunk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz", - "integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=", - "dev": true, - "requires": { - "chalk": "^1.1.1", - "object-path": "^0.9.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dev": true, - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dev": true, - "requires": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - } - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "dev": true, - "requires": { - "through2": "^2.0.3" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.17", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", - "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", - "dev": true - }, - "uglify-js": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.6.tgz", - "integrity": "sha512-yYqjArOYSxvqeeiYH2VGjZOqq6SVmhxzaPjJC1W2F9e+bqvFL9QXQ2osQuKUFjM2hGjKG2YclQnRKWQSt/nOTQ==", - "dev": true, - "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "undertaker": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", - "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - } - }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "dev": true - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "dev": true, - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - } - }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", - "dev": true, - "requires": { - "source-map": "^0.5.1" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - } - } -} diff --git a/yarn.lock b/yarn.lock index b64275c..e874e59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -43,30 +43,30 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.7.8: - version "1.7.8" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.8.tgz#c95f237efe7ecfe0e6003adb5e2c7ef0e5a2b9d4" - integrity sha512-bINtzizq7TbJzfVrDpwLfTxVl0Qd7fRNWFb5jKYI1vaFZobQNX/QONXlLow6ySsDbZ6eLECycB7mvWtfh1YYaw== - -angular-aria@^1.7.8: - version "1.7.8" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.8.tgz#3954250ef516b57cdd3cdf41ff4ee6fcfdc84ceb" - integrity sha512-facq/111sZKL2wUUqRA1GnGt+lZ8KAcX9Aw04cNA+OyEkoaoRC77NY4VSOTQxghlSd0OPAdLeFnmETnuiWrpLg== - -angular-material@^1.1.20: - version "1.1.20" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.20.tgz#138def4a4f3982fddfa7788c9775e663f12cba85" - integrity sha512-R2jILX9g7AVvEZbIMqEp8mkjlH/iSrDG150pCSzL7+6PHdi4dYuyXNRtYlpYKe+72Q4fIV4YBYSxepNob3hU9A== - -angular-messages@^1.7.8: - version "1.7.8" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.8.tgz#746da9c955f855ef6ceac34b2a5eb8b1b12e6a78" - integrity sha512-e7Oq4ugdTcAp4kLP9TNOh6mfSsYO2Uwf7NavLuNWqahDGRHYXilo2gcI/vxmFjPBOwAmreXrhYlpGLlJdzxfQg== - -angular@^1.7.8: - version "1.7.8" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.8.tgz#b77ede272ce1b261e3be30c1451a0b346905a3c9" - integrity sha512-wtef/y4COxM7ZVhddd7JtAAhyYObq9YXKar9tsW7558BImeVYteJiTxCKeJOL45lJ/+7B4wrAC49j8gTFYEthg== +angular-animate@^1.7.9: + version "1.7.9" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.9.tgz#a397f82434c1e7ed5b7a298fa70fc3de989a6785" + integrity sha512-fV+AISy/HTzurQH2ngsJg+lLIvfu0ahc1h4AYKauaXVw97rZc2k4iUA1bMstiEyClsdayQX568kjQc1NK+oYhw== + +angular-aria@^1.7.9: + version "1.7.9" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.9.tgz#90c61895ffbd876e95915222b32a7bd0070af7e3" + integrity sha512-luI3Jemd1AbOQW0krdzfEG3fM0IFtLY0bSSqIDEx3POE0XjKIC1MkrO8Csyq9PPgueLphyAPofzUwZ8YeZ88SA== + +angular-material@^1.1.21: + version "1.1.21" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.21.tgz#a3dac5e7d1bdc4b20aaf26315ef00f4a561068cc" + integrity sha512-BiqvEu82dqQ4Sb4OjJHdVp/YJvFEMrtr7K2eS+6qlWPWUiF9K2K6IkX2H3p0wD7QlscjTz8n9W8uKL46PQjlCQ== + +angular-messages@^1.7.9: + version "1.7.9" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.9.tgz#6403b7f56df4b17b62d88762ac5e6b1702347fd2" + integrity sha512-OdJihuO6AW+m1/r9OdW5riCwacn3dL1agQvgu6Cww3a7OARXXN0vxOpsZCNk4yg4CuD7Et3tiz4DymhvZkydvw== + +angular@^1.7.9: + version "1.7.9" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.9.tgz#e52616e8701c17724c3c238cfe4f9446fd570bc4" + integrity sha512-5se7ZpcOtu0MBFlzGv5dsM1quQDoDeUTwZrWjGtTNA7O88cD8TEk5IEKCTDa3uECV9XnvKREVUr7du1ACiWGFQ== ansi-colors@^1.0.1: version "1.1.0" From 709fd985eb4d6d5eadbb2c6e8cf72e516cf1ab44 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 20 Mar 2020 22:38:05 -0400 Subject: [PATCH 196/226] upgrade deps --- yarn.lock | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/yarn.lock b/yarn.lock index e874e59..3b09519 100644 --- a/yarn.lock +++ b/yarn.lock @@ -498,9 +498,10 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-css@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" +clean-css@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== dependencies: source-map "~0.6.0" @@ -1300,11 +1301,11 @@ graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== gulp-clean-css@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.2.0.tgz#915ec258dc6d3e6a50043f610066d5c2eac4f54e" - integrity sha512-r4zQsSOAK2UYUL/ipkAVCTRg/2CLZ2A+oPVORopBximRksJ6qy3EX1KGrIWT4ZrHxz3Hlobb1yyJtqiut7DNjA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz#5b1e73f2fca46703eb636014cdd4553cea65146d" + integrity sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg== dependencies: - clean-css "4.2.1" + clean-css "4.2.3" plugin-error "1.0.1" through2 "3.0.1" vinyl-sourcemaps-apply "0.2.1" @@ -2395,6 +2396,7 @@ pinkie@^2.0.0: plugin-error@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== dependencies: ansi-colors "^1.0.1" arr-diff "^4.0.0" @@ -2491,9 +2493,9 @@ read-pkg@^1.0.0: path-type "^1.0.0" "readable-stream@2 || 3": - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -2899,6 +2901,7 @@ source-map@^0.5.1, source-map@^0.5.6: source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== sparkles@^1.0.0: version "1.0.1" From fdbd70a0991590131ed67a789e615311937d9afa Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 5 Apr 2020 23:33:36 -0400 Subject: [PATCH 197/226] #73 convey ng-disabled to buttons --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 11 +++++++++-- package.json | 4 ++-- yarn.lock | 10 +++++----- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 2844deb..d4ec8e6 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(h){function $(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)}var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},f='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:f,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,p){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=h()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=h(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i=void 0===n.showClear||n.showClear?'':"";r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=h());var a={controller:D,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=f,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var D=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return D.$inject=["$mdDialog","mdcDefaultParams"],D.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X")))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=h(this.maxDate),r=h(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),i=(a||(r.minute(0),n.minute(0)),parseInt(r.format("X"))<=parseInt(n.format("X")))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){function r(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)}return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){function e(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:f,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,p){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=h()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=h(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i="";(void 0===n.showClear||n.showClear)&&(i="'),r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=h());var a={controller:D,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=f,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var D=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return D.$inject=["$mdDialog","mdcDefaultParams"],D.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=h(this.maxDate),r=h(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '',\r\n clearButton = scope.showClear === undefined || scope.showClear ? '' : '';\r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","showClear","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","ngDisabled","clearButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","isPreviousMonthVisible","add","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '', clearButton = '';\r\n\r\n if (scope.showClear === undefined || scope.showClear) {\r\n clearButton = '';\r\n }\r\n \r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 2bce48d..a9dd440 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -295,10 +295,17 @@ var calendarButton = '', - clearButton = scope.showClear === undefined || scope.showClear ? '' : ''; + '', clearButton = ''; + + if (scope.showClear === undefined || scope.showClear) { + clearButton = ''; + } + element.after($compile(calendarButton + clearButton)(scope)); scope.openCalendarDiag = function(e) { diff --git a/package.json b/package.json index 137eb0f..efe9399 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,8 @@ }, "devDependencies": { "gulp": "^4.0.2", - "gulp-clean-css": "^4.2.0", - "gulp-rename": "^1.4.0", + "gulp-clean-css": "^4.3.0", + "gulp-rename": "^2.0.0", "gulp-sourcemaps": "^2.6.5", "gulp-uglify": "^3.0.2", "lite-server": "^2.5.4", diff --git a/yarn.lock b/yarn.lock index 3b09519..9e6e681 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1300,7 +1300,7 @@ graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== -gulp-clean-css@^4.2.0: +gulp-clean-css@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz#5b1e73f2fca46703eb636014cdd4553cea65146d" integrity sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg== @@ -1334,10 +1334,10 @@ gulp-cli@^2.2.0: v8flags "^3.0.1" yargs "^7.1.0" -gulp-rename@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.4.0.tgz#de1c718e7c4095ae861f7296ef4f3248648240bd" - integrity sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg== +gulp-rename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-2.0.0.tgz#9bbc3962b0c0f52fc67cd5eaff6c223ec5b9cf6c" + integrity sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ== gulp-sourcemaps@^2.6.5: version "2.6.5" From e9c042dde6e61a89f16d470ea830c75ab32b16d4 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sun, 5 Apr 2020 23:34:36 -0400 Subject: [PATCH 198/226] version 1.19.4 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index 751f2f9..1b12770 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.3", + "version": "1.19.4", "keywords": [ "css", "js", diff --git a/package.json b/package.json index efe9399..a6dc64b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.3", + "version": "1.19.4", "keywords": [ "css", "js", From b64dc0c13ea38d76c88e7a51a7cf68b9330abb31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2020 03:40:38 +0000 Subject: [PATCH 199/226] Bump acorn from 5.3.0 to 5.7.4 Bumps [acorn](https://github.com/acornjs/acorn) from 5.3.0 to 5.7.4. - [Release notes](https://github.com/acornjs/acorn/releases) - [Commits](https://github.com/acornjs/acorn/compare/5.3.0...5.7.4) Signed-off-by: dependabot[bot] --- yarn.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9e6e681..9516be1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -32,8 +32,9 @@ accepts@~1.3.4: negotiator "0.6.1" acorn@5.X, acorn@^5.0.3: - version "5.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== after@0.8.2: version "0.8.2" From dbbd369952112aa6573a4e0213bfc4f6f1fd5ac9 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 7 Apr 2020 23:01:38 -0400 Subject: [PATCH 200/226] #73 use $parse for ng-disabled --- js/angular-material-datetimepicker.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index a9dd440..7191e5d 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -136,8 +136,8 @@ return default_params; }; }) - .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', - function ($mdDialog, $timeout, $compile) { + .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse', + function ($mdDialog, $timeout, $compile, $parse) { return { restrict: 'A', require: 'ngModel', @@ -295,14 +295,14 @@ var calendarButton = '', clearButton = ''; if (scope.showClear === undefined || scope.showClear) { clearButton = ''; } From 5de817fa88fc8c0d82fa34841aa23e018727b2f7 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 7 Apr 2020 23:07:03 -0400 Subject: [PATCH 201/226] version 1.19.5 --- bower.json | 2 +- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bower.json b/bower.json index 1b12770..971be49 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.4", + "version": "1.19.5", "keywords": [ "css", "js", diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index d4ec8e6..9cc6ef0 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(h){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},f='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:f,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile",function(u,m,p){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=h()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=h(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i="";(void 0===n.showClear||n.showClear)&&(i="'),r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=h());var a={controller:D,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=f,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var D=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return D.$inject=["$mdDialog","mdcDefaultParams"],D.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=h(this.maxDate),r=h(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:D,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$parse",function(u,m,p,h){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=f()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=f(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i="";(void 0===n.showClear||n.showClear)&&(i="'),r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=f());var a={controller:g,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=D,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var g=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return g.$inject=["$mdDialog","mdcDefaultParams"],g.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=f(this.maxDate),r=f(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n function ($mdDialog, $timeout, $compile) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '', clearButton = '';\r\n\r\n if (scope.showClear === undefined || scope.showClear) {\r\n clearButton = '';\r\n }\r\n \r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","showClear","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$parse","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","ngDisabled","clearButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","isPreviousMonthVisible","add","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","$onInit","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse',\r\n function ($mdDialog, $timeout, $compile, $parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '', clearButton = '';\r\n\r\n if (scope.showClear === undefined || scope.showClear) {\r\n clearButton = '';\r\n }\r\n \r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file diff --git a/package.json b/package.json index a6dc64b..a01f206 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.4", + "version": "1.19.5", "keywords": [ "css", "js", From 258c3d5ebdd6f4793918cf19fbf89e428ebcf69a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Jul 2020 03:52:53 +0000 Subject: [PATCH 202/226] Bump lodash from 4.17.15 to 4.17.19 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9516be1..1426188 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1871,9 +1871,9 @@ lodash.isfinite@^3.3.2: resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" lodash@^4.17.10, lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== lru-queue@0.1: version "0.1.0" From 1dabaefaec17abcc6532ff6a067b802faef4f70b Mon Sep 17 00:00:00 2001 From: Oliver Salzburg Date: Tue, 25 Aug 2020 14:25:49 +0200 Subject: [PATCH 203/226] fix: BREAKING: Reliance on prebound constructor Later AngularJS versions introduced a change that made it impossible to access bindings before construction has finalized. Relevant code has to be moved to the $onInit lifecycle hook. Fixes #80 --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- js/angular-material-datetimepicker.js | 6 ++---- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 9cc6ef0..56622d2 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(f){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},D='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:D,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$parse",function(u,m,p,h){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=f()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=f(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i="";(void 0===n.showClear||n.showClear)&&(i="'),r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=f());var a={controller:g,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=D,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var g=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM",this.params=angular.extend(this.params,this.options),this.init()};return g.$inject=["$mdDialog","mdcDefaultParams"],g.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=f(this.maxDate),r=f(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59{{::picker.params.amText}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} ';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:D,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$parse",function(u,m,p,h){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=f()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=f(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i="";(void 0===n.showClear||n.showClear)&&(i="'),r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=f());var a={controller:g,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=D,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var g=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM"};return g.$inject=["$mdDialog","mdcDefaultParams"],g.prototype={$onInit:function(){this.params=angular.extend(this.params,this.options),this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=f(this.maxDate),r=f(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse',\r\n function ($mdDialog, $timeout, $compile, $parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '', clearButton = '';\r\n\r\n if (scope.showClear === undefined || scope.showClear) {\r\n clearButton = '';\r\n }\r\n \r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n this.params = angular.extend(this.params, this.options);\r\n\r\n this.init();\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n init: function () {\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","showClear","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$parse","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","ngDisabled","clearButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","$inject","prototype","$onInit","extend","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","isPreviousMonthVisible","add","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\n 'use strict';\n\n function ngMaterialDatePicker(moment) {\n var moduleName = \"ngMaterialDatePicker\";\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\n\n var css = function (el, name) {\n el = angular.element(el);\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\n };\n\n var template =\n '' +\n ' ' +\n '
' +\n '
' +\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\n '
' +\n ' ×' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\n ' ' +\n ' ' +\n ' {{itemMonth}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
{{picker.currentDate.format(\"DD\")}}
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\n ' ' +\n ' ' +\n ' {{itemYear}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
'+\n '
' + //start time\n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\n ' {{picker.currentDate.format(\"A\")}}'+\n '
' +\n '
' +\n '
' +\n ' ' +\n '
' +\n '
' +\n ' ' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\n '
' +\n ' ' +\n '
' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n ' {{::picker.params.todayText}}' +\n ' {{::picker.params.cancelText}}' +\n ' {{::picker.params.okText}}' +\n ' ' +\n '
';\n\n angular.module(moduleName, ['ngMaterial'])\n .factory('mdcDefaultParams', function () {\n var default_params = {\n date: true,\n time: true,\n minutes: true,\n seconds: false,\n format: 'YYYY-MM-DD',\n minDate: null,\n maxDate: null,\n currentDate: null,\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\n weekStart: 0,\n shortTime: false,\n cancelText: 'Cancel',\n okText: 'OK',\n amText: 'AM',\n pmText: 'PM',\n todayBtn: true,\n todayText: 'Today',\n disableDates: [],\n weekDays: false,\n disableParentScroll: false,\n autoOk: false,\n editInput: false,\n clickOutsideToClose: false,\n minuteSteps: 5,\n showIcon: false,\n showClear: true,\n template: template,\n templateUrl: '',\n targetEvent: null,\n openFrom: null,\n closeTo: null,\n dayOfWeekLen: 1,\n hasBackdrop: true,\n };\n\n return function (params) {\n if (params) {\n for (var i in params) {\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\n }\n }\n return default_params;\n };\n })\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse',\n function ($mdDialog, $timeout, $compile, $parse) {\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n currentDate: '=ngModel',\n ngModelOptions: '=',\n ngChange: '&',\n time: '=',\n date: '=',\n minutes: '=',\n seconds: '=',\n minDate: '=',\n maxDate: '=',\n disableDates: '=',\n weekDays: '=',\n shortTime: '=',\n weekStart: '=',\n format: '@',\n cancelText: '@',\n okText: '@',\n lang: '@',\n amText: '@',\n pmText: '@',\n showTodaysDate: '@',\n todayBtn: '=',\n todayText: '@',\n disableParentScroll: '=',\n autoOk: '=',\n editInput: '=',\n clickOutsideToClose: '=',\n minuteSteps: '=',\n showIcon: '=',\n showClear: '=',\n templateUrl: '@',\n dayOfWeekLen: '=',\n hasBackdrop: '='\n },\n link: function (scope, element, attrs, ngModel) {\n var isOn = false;\n if (!scope.format) {\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\n else if (scope.date) scope.format = 'YYYY-MM-DD';\n else scope.format = 'HH:mm';\n }\n\n var dateOfTheDay = null;\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\n scope.currentDate = moment(scope.currentDate, scope.format);\n }\n\n var offset;\n if (ngModel) {\n var ngModelOptions = {'*': '$inherit', debounce: 500};\n if (angular.version.major === 1 && angular.version.minor > 5) {\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\n } else {\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\n ngModel.$options = ngModelOptions;\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\n }\n if (offset==='utc' || offset==='UTC') offset = 0;\n \n ngModel.$formatters.push(function (value) {\n if (typeof value === 'undefined') return;\n var m = moment(value);\n return m.isValid() ? m.format(scope.format) : '';\n });\n \n ngModel.$parsers.push(function (value) {\n if (typeof value === 'undefined') return;\n \n var m = moment(value, scope.format);\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\n\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\n });\n \n }\n\n function openCalendar(e) {\n e.preventDefault();\n element.blur();\n element.parent().removeClass('md-input-focused');\n if (isOn) {\n return;\n }\n isOn = true;\n var options = {};\n for (var i in attrs) {\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\n options[i] = scope[i];\n }\n }\n options.currentDate = scope.currentDate;\n options.showTodaysDate = dateOfTheDay;\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n openFrom: element,\n closeTo: element,\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\n skipHide: true,\n multiple: true,\n };\n\n if (!options.templateUrl) dialogOptions.template = template;\n else dialogOptions.templateUrl = options.templateUrl;\n \n $mdDialog.show(dialogOptions).then(function(v) {\n\n if (offset !== undefined) v.utcOffset(offset, true);\n\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\n ngModel.$setValidity('format', true);\n ngModel.$setViewValue(scope.currentDate);\n ngModel.$setDirty();\n isOn = false;\n\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\n $timeout(scope.ngChange, 0);\n }\n\n element.parent().removeClass('md-input-focused');\n }, function () {\n isOn = false;\n element.parent().removeClass('md-input-focused');\n });\n }\n\n if (!scope.editInput) {\n if (scope.showIcon) {\n element.on('click', openCalendar);\n } else {\n element.on('focus', openCalendar);\n }\n }\n \n if (scope.showIcon) {\n element.addClass('dtp-no-msclear dtp-input');\n var calendarButton =\n '' +\n '' +\n '', clearButton = '';\n\n if (scope.showClear === undefined || scope.showClear) {\n clearButton = '';\n }\n \n element.after($compile(calendarButton + clearButton)(scope));\n\n scope.openCalendarDiag = function(e) {\n openCalendar(e);\n };\n\n scope.clear = function() {\n ngModel.$setViewValue(null);\n scope.currentDate = null;\n ngModel.$render();\n $timeout(function() {\n scope.ngChange();\n element[0].focus();\n }, 0, false);\n };\n }\n }\n };\n }])\n // Returns a service that opens a dialog when the attribute shown is called\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\n var service = {\n show: function (options) {\n var deferred = $q.defer();\n\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n skipHide: true,\n multiple: true,\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\n targetEvent: options.targetEvent,\n openFrom: options.openFrom,\n closeTo: options.closeTo,\n };\n\n if (!options.templateUrl) dialogOptions.template = template;\n else dialogOptions.templateUrl = options.templateUrl;\n\n $mdDialog.show(dialogOptions).then(function (v) {\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\n }, function () {\n deferred.reject();\n });\n return deferred.promise;\n }\n };\n\n return service;\n }])\n ;\n\n var PluginController = function ($mdDialog, mdcDefaultParams) {\n this.currentView = VIEW_STATES.DATE;\n this._dialog = $mdDialog;\n\n this._attachedEvents = [];\n this.VIEWS = VIEW_STATES;\n this.params = angular.copy(mdcDefaultParams());\n this.meridien = 'AM';\n };\n\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\n PluginController.prototype = {\n $onInit: function () {\n this.params = angular.extend(this.params, this.options);\n this.timeMode = this.params.time && !this.params.date;\n this.dateMode = this.params.date;\n this.initDates();\n this.start();\n },\n currentNearestMinute: function () {\n var nearestMin = this.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n\n var date = this.currentDate || moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n\n var seconds;\n if (this.params.seconds) {\n seconds = date.second();\n if (seconds >= 60) seconds = 60 - 1;\n } else seconds = 0;\n\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\n },\n initDates: function () {\n var that = this;\n var _dateParam = function (input, fallback) {\n var ret = null;\n if (angular.isDefined(input) && input !== null && input !== '') {\n if (angular.isString(input)) {\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\n ret = moment(input, that.params.format).locale(that.params.lang);\n }\n else {\n ret = moment(input).locale(that.params.lang);\n }\n } else if (typeof input === 'number') {\n ret = moment(input).locale(that.params.lang);\n } else {\n if (angular.isDate(input)) {\n var x = input.getTime();\n ret = moment(x, \"x\").locale(that.params.lang);\n } else if (moment.isMoment(input)) {\n if (input.isValid()) ret = input;\n else ret = fallback;\n }\n }\n } else {\n ret = fallback;\n }\n return ret;\n };\n\n this.currentDate = _dateParam(this.params.currentDate, moment());\n this.currentDate = this.currentNearestMinute();\n this.minDate = _dateParam(this.params.minDate);\n this.maxDate = _dateParam(this.params.maxDate);\n this.disableDates = this.params.disableDates.map(function (x) {\n return moment(x).format('MMMM Do YYYY');\n });\n this.selectDate(this.currentDate);\n this.weekDays = this.params.weekDays;\n },\n initDate: function () {\n this.currentView = VIEW_STATES.DATE;\n },\n initHours: function () {\n this.currentView = VIEW_STATES.HOUR;\n },\n initMinutes: function () {\n this.currentView = VIEW_STATES.MINUTE;\n },\n initSeconds: function () {\n this.currentView = VIEW_STATES.SECOND;\n },\n isAfterMinDate: function (date, checkHour, checkMinute) {\n var _return = true;\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n var _minDate = moment(this.minDate);\n var _date = moment(date);\n\n if (!checkHour && !checkMinute) {\n _minDate.hour(0);\n _minDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _minDate.second(0);\n _date.second(0);\n _minDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _minDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\n var _return = true;\n\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n var _maxDate = moment(this.maxDate);\n var _date = moment(date);\n\n if (!checkTime && !checkMinute) {\n _maxDate.hour(0);\n _maxDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _maxDate.second(0);\n _date.second(0);\n _maxDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _maxDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isInDisableDates: function (date) {\n var dut = date.format('MMMM Do YYYY');\n if (this.disableDates.indexOf(dut) > -1) {\n return false;\n }\n return true;\n },\n isWeekDay: function(date) {\n if (this.weekDays) {\n if (date.isoWeekday() <= 5) {\n return true;\n }\n return false;\n }\n return true;\n },\n selectDate: function (date) {\n if (date) {\n this.currentDate = moment(date);\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\n this.currentDate = moment(this.minDate);\n }\n\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\n this.currentDate = moment(this.maxDate);\n }\n this.currentDate.locale(this.params.lang);\n this.calendarStart = moment(this.currentDate);\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\n }\n },\n isPM: function () {\n return this.meridien === 'PM';\n },\n incrementMonth: function (amount) {\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\n this.selectDate(this.currentDate.add(amount, 'month'));\n }\n },\n incrementYear: function (amount) {\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n },\n openMenu: function ($mdMenu, ev) {\n $mdMenu.open(ev); \n },\n monthsAvailable: function () {\n var monthsArr = [], _date = moment(this.currentDate);\n\n for (var m = 0; m < 12; m++) {\n var curMonth = _date.month(m);\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\n monthsArr.push(curMonth.format('MMMM'));\n }\n }\n return monthsArr;\n },\n selectMonth: function (month) {\n this.selectDate(this.currentDate.month(month));\n },\n yearsAvailable: function () {\n var _minDate, _maxDate, len, startYear, yearsArr = [],\n _date = this.currentDate.year();\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n _minDate = moment(this.minDate).year();\n }\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n _maxDate = moment(this.maxDate).year();\n }\n\n if (_maxDate && _minDate) {\n len = _maxDate - _minDate;\n startYear = _minDate;\n } else if (_minDate) {\n len = 115;\n startYear = _minDate;\n } else if (_maxDate) {\n len = 30;\n startYear = _maxDate - len;\n } else {\n len = 60;\n startYear = _date - len/2;\n }\n \n for (var i=0; i <= len; i++) {\n yearsArr.push(startYear+i);\n }\n return yearsArr;\n },\n selectYear: function (year) {\n this.selectDate(this.currentDate.year(year));\n },\n isPreviousMonthVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\n },\n isNextMonthVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\n },\n isPreviousYearVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\n },\n isNextYearVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\n },\n isHourAvailable: function (hour) {\n var _date = moment(this.currentDate);\n if (this.params.shortTime) {\n _date.hour(this.convertHours(hour)).minute(0).second(0);\n } else {\n _date.hour(hour).minute(0).second(0);\n }\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\n },\n isMinuteAvailable: function (minute) {\n var _date = moment(this.currentDate);\n _date.minute(minute).second(0);\n\n var nearestMin = this.params.minuteSteps;\n if (nearestMin > 1 && 5 % nearestMin !== 0){\n var _curmin = _date.minute();\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n if (minutes !== _curmin) return false;\n }\n\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\n },\n isSecondAvailable: function (second) {\n return true;\n },\n start: function () {\n this.currentView = VIEW_STATES.DATE;\n if (this.params.date) {\n this.initDate();\n } else {\n if (this.params.time) {\n this.initHours();\n }\n }\n },\n today: function () {\n var nearestMin = this.params.minuteSteps;\n var date = moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n\n var seconds;\n if (this.params.seconds) {\n seconds = date.second();\n if (seconds >= 60) seconds = 60 - 1;\n } else seconds = 0;\n\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\n },\n ok: function () {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n if (this.params.time === true) {\n this.initHours();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.HOUR:\n if (this.params.minutes === true) {\n this.initMinutes();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.MINUTE:\n if (this.params.seconds === true) {\n this.initSeconds();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.SECOND:\n this.hide(true);\n break;\n }\n },\n cancel: function () {\n if (this.params.time) {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n this.hide();\n break;\n case VIEW_STATES.HOUR:\n if (this.params.date) {\n this.initDate();\n }\n else {\n this.hide();\n }\n break;\n case VIEW_STATES.MINUTE:\n this.initHours();\n break;\n case VIEW_STATES.SECOND:\n this.initMinutes();\n break;\n }\n }\n else {\n this.hide();\n }\n },\n selectMonthBefore: function () {\n this.calendarStart.subtract(1, 'months');\n },\n selectMonthAfter: function () {\n this.calendarStart.add(1, 'months');\n },\n selectYearBefore: function () {\n this.calendarStart.subtract(1, 'years');\n },\n selectYearAfter: function () {\n this.calendarStart.add(1, 'years');\n },\n selectAM: function () {\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\n if (this.currentDate.hour() >= 12) {\n this.selectDate(this.currentDate.subtract(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\n }\n }\n },\n selectPM: function () {\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\n if (this.currentDate.hour() < 12) {\n this.selectDate(this.currentDate.add(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\n }\n }\n },\n convertHours: function (h) {\n var _return = h;\n if (h < 12 && this.isPM()) _return += 12;\n\n return _return;\n },\n hide: function (okBtn) {\n if (okBtn) this._dialog.hide(this.currentDate);\n else this._dialog.cancel();\n }\n };\n\n angular.module(moduleName)\n .directive('mdcDatetimePickerCalendar', [\n function () {\n\n var YEAR_MIN = 1920,\n YEAR_MAX = new Date().getFullYear() + 30,\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\n MONTHS = [];\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\n MONTHS.push(i);\n }\n\n var currentMonthIndex = function (date, low) {\n low = low ? low : 0;\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\n };\n\n return {\n restrict: 'E',\n scope: {\n picker: '=',\n date: '='\n },\n bindToController: true,\n controllerAs: 'cal',\n controller: ['$scope', function ($scope) {\n var calendar = this, picker;\n\n this.$onInit = function () {\n picker = this.picker;\n\n var days = [];\n for (var i = picker.params.weekStart; days.length < 7; i++) {\n if (i > 6) i = 0;\n days.push(i.toString());\n }\n calendar.week = days;\n\n if (!picker.maxDate && !picker.minDate) {\n calendar.months = MONTHS;\n } else {\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\n calendar.months = MONTHS.slice(low, high);\n }\n\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\n };\n\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\n \n calendar.getItemAtIndex = function (index) {\n var month = ((index + 1) % 12) || 12;\n var year = YEAR_MIN + Math.floor(index / 12);\n var monthObj = moment(picker.currentDate).year(year).month(month);\n return generateMonthCalendar(monthObj);\n };\n\n $scope.$watch(function () {\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\n }, function (val2, val1) {\n if (val2 != val1) {\n var nDate = moment(val2, 'YYYY-MM');\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\n var index = currentMonthIndex(nDate, low);\n if (calendar.topIndex != index) {\n calendar.topIndex = index;\n }\n }\n });\n\n var generateMonthCalendar = function (date) {\n var month = {};\n if (date !== null) {\n month.name = date.format('MMMM YYYY');\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\n .hour(date.hour())\n .minute(date.minute());\n var iNumDay = startOfMonth.format('d');\n month.days = [];\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\n if (i === startOfMonth.date()) {\n var iWeek = calendar.week.indexOf(iNumDay.toString());\n if (iWeek > 0) {\n for (var x = 0; x < iWeek; x++) {\n month.days.push(0);\n }\n }\n }\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\n }\n\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\n for (var j = 0; j < slices; j++) {\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\n }\n month.days = daysTmp;\n return month;\n }\n\n };\n\n calendar.toDay = function (i) {\n return moment(parseInt(i), \"d\")\n .locale(picker.params.lang)\n .format(\"ddd\")\n .substring(0, picker.params.dayOfWeekLen);\n };\n\n calendar.isInRange = function (date) {\n return picker.isAfterMinDate(moment(date), false, false) &&\n picker.isBeforeMaxDate(moment(date), false, false) &&\n picker.isWeekDay(moment(date)) &&\n picker.isInDisableDates(moment(date));\n };\n\n calendar.selectDate = function (date) {\n if (date) {\n if (calendar.isSelectedDay(date)) {\n return picker.ok();\n }\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\n if (picker.params.autoOk) {\n picker.ok();\n }\n }\n };\n\n calendar.isSelectedDay = function (m) {\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\n };\n\n calendar.isDateOfTheDay = function (m) {\n var today = calendar.picker.options.showTodaysDate;\n if (!today) {\n return false;\n }\n\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\n };\n }],\n template: \n '' +\n '
' +\n '
' +\n '
' +\n '
'\n };\n }])\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\n function ($compile) {\n var buildCalendarContent = function (element, scope) {\n var tbody = angular.element(element[0].querySelector('tbody'));\n var calendar = scope.cal, month = scope.month;\n\n var tbodyHtml = [];\n\n month.days.forEach(function (weekDays, i) {\n tbodyHtml.push('');\n weekDays.forEach(function (weekDay, j) {\n tbodyHtml.push('');\n if (weekDay) {\n if (calendar.isInRange(weekDay)) {\n //build a\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\n\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n } else {\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n }\n }\n tbodyHtml.push('');\n });\n tbodyHtml.push('');\n });\n\n tbody.html(tbodyHtml.join(''));\n $compile(tbody)(scope);\n };\n\n return {\n scope: {\n idx: '='\n },\n require: '^mdcDatetimePickerCalendar',\n restrict: 'AE',\n template: \n '
{{month.name}}
' +\n '' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
{{cal.toDay(day)}}
',\n link: function (scope, element, attrs, calendar) {\n scope.cal = calendar;\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n scope.$watch(function () {\n return scope.idx;\n }, function (idx, oldIdx) {\n if (idx != oldIdx) {\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n }\n });\n }\n };\n }\n ])\n ;\n\n angular.module(moduleName)\n .directive('mdcDtpNoclick', function () {\n return {\n link: function (scope, el) {\n el.on('click', function (e) {\n e.preventDefault();\n });\n }\n };\n });\n angular.module(moduleName)\n .directive('mdcDatetimePickerClock', ['$timeout',\n function ($timeout) {\n\n var template = \n '
 ' +\n '
' +\n ' {{point.display}}' +\n ' {{point.display}}' +\n '
' +\n '' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
';\n\n return {\n restrict: 'E',\n template: template,\n link: function (scope, element, attrs) {\n var minuteMode = attrs.mode === 'minutes';\n var secondMode = attrs.mode === 'seconds';\n var picker = scope.picker;\n //banking on the fact that there will only be one at a time\n var componentRoot = document.querySelector('md-dialog.dtp');\n\n var setTimeDegRay = function(deg, ray) {\n var val = 0;\n deg = deg >= 360 ? 0 : deg;\n if (deg !== 0) {\n var divider = minuteMode||secondMode ? 60 : 12;\n val = Math.round(divider / 360 * deg);\n }\n\n if (minuteMode) {\n var nearestMin = picker.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n var minutes = (nearestMin * Math.round(val / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.minute(minutes);\n } else if (!secondMode){\n if (val === 12) val = 0;\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\n if (picker.isPM()) val += 12;\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.hour(val);\n } else {\n if (val >= 60) val = 0;\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.second(val);\n }\n };\n\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\n EVENTS = {\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\n };\n\n var onMoveEvent = function(e) {\n e.preventDefault();\n\n var closestTarget = e.currentTarget.closest('div'),\n clientRect = closestTarget.getClientRects()[0];\n\n if (isTouchSupported) e = e.changedTouches[0];\n \n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\n\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\n\n $timeout(function() {\n setTimeDegRay(deg+180, ray);\n });\n };\n\n element.on(EVENTS.POINTER_DOWN, function() {\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\n });\n\n element.on(EVENTS.POINTER_UP, function() {\n element.off(EVENTS.POINTER_MOVE);\n });\n\n scope.$on(\"$destroy\", function() {\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \n });\n\n var exec = function () {\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\n\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\n\n //set width\n var clockWidth = (w - (mL + mR + pL + pR));\n clock.css('width', (clockWidth) + 'px');\n\n var r = (clockWidth / 2);\n var j = r / 1.2; // radius for low number\n\n var points = [];\n\n for (var h = 0; h < 12; ++h) {\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\n var left = (r + x + pL / 2) - (pL + mL);\n var top = (r - y - mT / 2) - (pT + mT);\n\n var hour = {\n left: left,\n top: top,\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\n };\n\n if (minuteMode || secondMode) {\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\n } else {\n if (picker.params.shortTime) {\n hour.display = h === 0 ? 12 : h;\n } else {\n hour.display = h;\n }\n }\n\n points.push(hour);\n }\n scope.points = points;\n\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\n var points24 = [];\n\n var j24 = r / 1.8; // radius for high number\n for (var h24 = 12; h24 < 24; ++h24) {\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\n var left24 = (r + x24 + pL / 2) - (pL + mL);\n var top24 = (r - y24 - mT / 2) - (pT + mT);\n\n points24.push({\n left: left24,\n top: top24,\n value: h24,\n display: h24,\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\n });\n }\n scope.points24 = points24;\n }\n\n scope.mode = attrs.mode;\n setCurrentValue();\n clock.css('height', clockWidth + 'px');\n\n var clockCenter = element[0].querySelector('.dtp-clock-center');\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\n var _mL = r / 1.4;\n var _sL = r;\n\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _hL + 'px',\n marginTop: (r - _hL - pL) + 'px'\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _mL + 'px',\n marginTop: r - _mL - pL + 'px'\n }).addClass(minuteMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _sL + 'px',\n marginTop: r - _sL - pL + 'px'\n }).addClass(secondMode ? 'on' : '');\n\n angular.element(clockCenter).css({\n left: r + pL + mL - centerWidth + 'px',\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\n });\n animateHands();\n };\n\n var animateHands = function () {\n var _date = picker.currentNearestMinute();\n var h = _date.hour(), m = _date.minute(), s = _date.second();\n\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\n };\n\n var rotateElement = function (el, deg) {\n angular.element(el).css({\n WebkitTransform: 'rotate(' + deg + 'deg)',\n '-moz-transform': 'rotate(' + deg + 'deg)',\n '-ms-transform': 'rotate(' + deg + 'deg)',\n 'transform': 'rotate(' + deg + 'deg)'\n });\n };\n\n\n var setCurrentValue = function () {\n var date = picker.currentNearestMinute();\n var nbH = picker.params.shortTime ? 12 : 24;\n if (minuteMode) scope.currentValue = date.minute();\n else if (secondMode) scope.currentValue = date.second();\n else scope.currentValue = date.hour() % nbH;\n };\n\n scope.$watch(function () {\n var tmp = picker.currentNearestMinute();\n return tmp ? tmp.format('HH:mm:ss') : '';\n }, function () {\n setCurrentValue();\n animateHands();\n });\n\n scope.setTime = function (val) {\n if (!minuteMode && !secondMode) {\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\n\n if (picker.params.shortTime) {\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\n } else {\n picker.currentDate.hour(val);\n if (val >= 12) picker.meridien = 'PM';\n else picker.meridien = 'AM';\n }\n\n if (picker.params.autoOk) picker.ok(); // single click\n } else if (!secondMode) {\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\n \n picker.currentDate.minute(val);\n if (!picker.params.seconds) {\n picker.currentDate.second(0);\n } else if (picker.params.autoOk) picker.ok(); // single click\n } else {\n if (val === scope.currentValue) picker.ok(); // double click\n picker.currentDate.second(val);\n }\n };\n\n scope.pointAvailable = function (point) {\n if (minuteMode) return picker.isMinuteAvailable(point.value);\n else if (secondMode) return picker.isSecondAvailable(point.value);\n else return picker.isHourAvailable(point.value);\n };\n\n var unWatcher = scope.$watch(function () {\n return element[0].querySelectorAll('div').length;\n }, function () {\n exec();\n unWatcher();\n });\n }\n };\n }]);\n return moduleName;\n }\n\n var isElectron = window && window.process && window.process.type;\n if (typeof define === 'function' && define.amd) {\n define(['moment'], ngMaterialDatePicker);\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\n module.exports = ngMaterialDatePicker(require('moment'));\n } else {\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\n }\n})();\n"]} \ No newline at end of file diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index 7191e5d..f96e3a8 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -373,14 +373,12 @@ this.VIEWS = VIEW_STATES; this.params = angular.copy(mdcDefaultParams()); this.meridien = 'AM'; - this.params = angular.extend(this.params, this.options); - - this.init(); }; PluginController.$inject = ['$mdDialog', 'mdcDefaultParams']; PluginController.prototype = { - init: function () { + $onInit: function () { + this.params = angular.extend(this.params, this.options); this.timeMode = this.params.time && !this.params.date; this.dateMode = this.params.date; this.initDates(); From e2d3446288ed9ae64ca402078eaa8d7bbd4b81d8 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 7 Sep 2020 14:07:33 -0400 Subject: [PATCH 204/226] Version 1.19.6 update deps to Angular 1.8.0 --- README.md | 14 ++++++------- bower.json | 6 +++--- index.html | 24 +++++++++++----------- package.json | 14 ++++++------- yarn.lock | 56 ++++++++++++++++++++++++++-------------------------- 5 files changed, 57 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 939323a..f6be211 100644 --- a/README.md +++ b/README.md @@ -55,13 +55,13 @@ Depends on the following library: - Moment ``` - - - - - - - + + + + + + + ``` ## Installing via yarn, npm or bower diff --git a/bower.json b/bower.json index 971be49..2c78bc0 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.5", + "version": "1.19.6", "keywords": [ "css", "js", @@ -28,7 +28,7 @@ "test-infra" ], "dependencies": { - "moment": "^2.24.0", - "angular-material": "^1.1.21" + "moment": "^2.27.0", + "angular-material": "^1.1.26" } } diff --git a/index.html b/index.html index 6bc1eb5..2c16b0e 100644 --- a/index.html +++ b/index.html @@ -12,21 +12,21 @@ - - + + - - - - - - - + + + + + + + - - - + + + diff --git a/package.json b/package.json index a01f206..e3fd6a8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.5", + "version": "1.19.6", "keywords": [ "css", "js", @@ -20,12 +20,12 @@ "dev": "lite-server" }, "dependencies": { - "angular": "^1.7.9", - "angular-animate": "^1.7.9", - "angular-aria": "^1.7.9", - "angular-material": "^1.1.21", - "angular-messages": "^1.7.9", - "moment": "^2.24.0" + "angular": "^1.8.0", + "angular-animate": "^1.8.0", + "angular-aria": "^1.8.0", + "angular-material": "^1.1.26", + "angular-messages": "^1.8.0", + "moment": "^2.27.0" }, "repository": { "type": "git", diff --git a/yarn.lock b/yarn.lock index 9516be1..38ef620 100644 --- a/yarn.lock +++ b/yarn.lock @@ -44,30 +44,30 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.7.9: - version "1.7.9" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.7.9.tgz#a397f82434c1e7ed5b7a298fa70fc3de989a6785" - integrity sha512-fV+AISy/HTzurQH2ngsJg+lLIvfu0ahc1h4AYKauaXVw97rZc2k4iUA1bMstiEyClsdayQX568kjQc1NK+oYhw== - -angular-aria@^1.7.9: - version "1.7.9" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.7.9.tgz#90c61895ffbd876e95915222b32a7bd0070af7e3" - integrity sha512-luI3Jemd1AbOQW0krdzfEG3fM0IFtLY0bSSqIDEx3POE0XjKIC1MkrO8Csyq9PPgueLphyAPofzUwZ8YeZ88SA== - -angular-material@^1.1.21: - version "1.1.21" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.1.21.tgz#a3dac5e7d1bdc4b20aaf26315ef00f4a561068cc" - integrity sha512-BiqvEu82dqQ4Sb4OjJHdVp/YJvFEMrtr7K2eS+6qlWPWUiF9K2K6IkX2H3p0wD7QlscjTz8n9W8uKL46PQjlCQ== - -angular-messages@^1.7.9: - version "1.7.9" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.7.9.tgz#6403b7f56df4b17b62d88762ac5e6b1702347fd2" - integrity sha512-OdJihuO6AW+m1/r9OdW5riCwacn3dL1agQvgu6Cww3a7OARXXN0vxOpsZCNk4yg4CuD7Et3tiz4DymhvZkydvw== - -angular@^1.7.9: - version "1.7.9" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.9.tgz#e52616e8701c17724c3c238cfe4f9446fd570bc4" - integrity sha512-5se7ZpcOtu0MBFlzGv5dsM1quQDoDeUTwZrWjGtTNA7O88cD8TEk5IEKCTDa3uECV9XnvKREVUr7du1ACiWGFQ== +angular-animate@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.8.0.tgz#fc6333a5a052129dc5fa0b02cd676304d2b99e9d" + integrity sha512-ROFK3UIn1MSVpqAlay15ZxjPmVbvwaO3Zn/2vhmQdYeqxSbUVuOckcvtDLBpHPGPtOAreu35qfV7NQ7u2EgDcA== + +angular-aria@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.8.0.tgz#97aec9b1e8bafd07d5fab30f98d8ec832e18e25d" + integrity sha512-eCQI6EwgY6bYHdzIUfDABHnZjoZ3bNYpCsnceQF4bLfbq1QtZ7raRPNca45sj6C9Pfjde6PNcEDvuLozFPYnrQ== + +angular-material@^1.1.26: + version "1.2.0" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.2.0.tgz#b8f8ab87ca357138c5553a680fe8892c116d3f6a" + integrity sha512-s7GnQZkTFYfTBIraHz7SqyZtgr04aK4AenTdfdx1xkTGh9TewWttKdmphBwEpviv4dZpcvESZEn3REpUdFYhEQ== + +angular-messages@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.8.0.tgz#dcdb8ea7d85a939526921e8cf05950601dc2b8fb" + integrity sha512-LSlyTv80y1vg8Cfdz+RJ0BrraWkq0qsOZHyrHFT8NyYWC5yp6HQabvZvTpKv9YA+6o05wwAU90qXHSrnUlSflA== + +angular@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.0.tgz#b1ec179887869215cab6dfd0df2e42caa65b1b51" + integrity sha512-VdaMx+Qk0Skla7B5gw77a8hzlcOakwF8mjlW13DpIWIDlfqwAbSSLfd8N/qZnzEmQF4jC4iofInd3gE7vL8ZZg== ansi-colors@^1.0.1: version "1.1.0" @@ -2018,10 +2018,10 @@ moment@*: version "2.22.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" -moment@^2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== +moment@^2.27.0: + version "2.27.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" + integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== ms@2.0.0: version "2.0.0" From a5eb67bda691156adbf8a61556456a4e82edffb0 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Mon, 7 Sep 2020 14:16:09 -0400 Subject: [PATCH 205/226] distribution --- dist/angular-material-datetimepicker.min.js.map | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index 4309ddc..d6a86a8 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","showClear","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$parse","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","ngDisabled","clearButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","$inject","prototype","$onInit","extend","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","isPreviousMonthVisible","add","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\n 'use strict';\n\n function ngMaterialDatePicker(moment) {\n var moduleName = \"ngMaterialDatePicker\";\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\n\n var css = function (el, name) {\n el = angular.element(el);\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\n };\n\n var template =\n '' +\n ' ' +\n '
' +\n '
' +\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\n '
' +\n ' ×' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\n ' ' +\n ' ' +\n ' {{itemMonth}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
{{picker.currentDate.format(\"DD\")}}
' +\n '
' +\n '
' +\n ' ' +\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\n ' ' +\n ' ' +\n ' {{itemYear}}' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
'+\n '
' + //start time\n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\n ' {{picker.currentDate.format(\"A\")}}'+\n '
' +\n '
' +\n '
' +\n ' ' +\n '
' +\n '
' +\n ' ' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\n '
' +\n '
' +\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\n '
' +\n ' ' +\n '
' +\n '
' +\n ' ' +\n ' ' +\n ' ' +\n '
' +\n '
' +\n '
' +\n '
' +\n ' ' +\n ' {{::picker.params.todayText}}' +\n ' {{::picker.params.cancelText}}' +\n ' {{::picker.params.okText}}' +\n ' ' +\n '
';\n\n angular.module(moduleName, ['ngMaterial'])\n .factory('mdcDefaultParams', function () {\n var default_params = {\n date: true,\n time: true,\n minutes: true,\n seconds: false,\n format: 'YYYY-MM-DD',\n minDate: null,\n maxDate: null,\n currentDate: null,\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\n weekStart: 0,\n shortTime: false,\n cancelText: 'Cancel',\n okText: 'OK',\n amText: 'AM',\n pmText: 'PM',\n todayBtn: true,\n todayText: 'Today',\n disableDates: [],\n weekDays: false,\n disableParentScroll: false,\n autoOk: false,\n editInput: false,\n clickOutsideToClose: false,\n minuteSteps: 5,\n showIcon: false,\n showClear: true,\n template: template,\n templateUrl: '',\n targetEvent: null,\n openFrom: null,\n closeTo: null,\n dayOfWeekLen: 1,\n hasBackdrop: true,\n };\n\n return function (params) {\n if (params) {\n for (var i in params) {\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\n }\n }\n return default_params;\n };\n })\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse',\n function ($mdDialog, $timeout, $compile, $parse) {\n return {\n restrict: 'A',\n require: 'ngModel',\n scope: {\n currentDate: '=ngModel',\n ngModelOptions: '=',\n ngChange: '&',\n time: '=',\n date: '=',\n minutes: '=',\n seconds: '=',\n minDate: '=',\n maxDate: '=',\n disableDates: '=',\n weekDays: '=',\n shortTime: '=',\n weekStart: '=',\n format: '@',\n cancelText: '@',\n okText: '@',\n lang: '@',\n amText: '@',\n pmText: '@',\n showTodaysDate: '@',\n todayBtn: '=',\n todayText: '@',\n disableParentScroll: '=',\n autoOk: '=',\n editInput: '=',\n clickOutsideToClose: '=',\n minuteSteps: '=',\n showIcon: '=',\n showClear: '=',\n templateUrl: '@',\n dayOfWeekLen: '=',\n hasBackdrop: '='\n },\n link: function (scope, element, attrs, ngModel) {\n var isOn = false;\n if (!scope.format) {\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\n else if (scope.date) scope.format = 'YYYY-MM-DD';\n else scope.format = 'HH:mm';\n }\n\n var dateOfTheDay = null;\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\n dateOfTheDay = moment();\n }\n\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\n scope.currentDate = moment(scope.currentDate, scope.format);\n }\n\n var offset;\n if (ngModel) {\n var ngModelOptions = {'*': '$inherit', debounce: 500};\n if (angular.version.major === 1 && angular.version.minor > 5) {\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\n } else {\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\n ngModel.$options = ngModelOptions;\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\n }\n if (offset==='utc' || offset==='UTC') offset = 0;\n \n ngModel.$formatters.push(function (value) {\n if (typeof value === 'undefined') return;\n var m = moment(value);\n return m.isValid() ? m.format(scope.format) : '';\n });\n \n ngModel.$parsers.push(function (value) {\n if (typeof value === 'undefined') return;\n \n var m = moment(value, scope.format);\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\n\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\n });\n \n }\n\n function openCalendar(e) {\n e.preventDefault();\n element.blur();\n element.parent().removeClass('md-input-focused');\n if (isOn) {\n return;\n }\n isOn = true;\n var options = {};\n for (var i in attrs) {\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\n options[i] = scope[i];\n }\n }\n options.currentDate = scope.currentDate;\n options.showTodaysDate = dateOfTheDay;\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n openFrom: element,\n closeTo: element,\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\n skipHide: true,\n multiple: true,\n };\n\n if (!options.templateUrl) dialogOptions.template = template;\n else dialogOptions.templateUrl = options.templateUrl;\n \n $mdDialog.show(dialogOptions).then(function(v) {\n\n if (offset !== undefined) v.utcOffset(offset, true);\n\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\n ngModel.$setValidity('format', true);\n ngModel.$setViewValue(scope.currentDate);\n ngModel.$setDirty();\n isOn = false;\n\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\n $timeout(scope.ngChange, 0);\n }\n\n element.parent().removeClass('md-input-focused');\n }, function () {\n isOn = false;\n element.parent().removeClass('md-input-focused');\n });\n }\n\n if (!scope.editInput) {\n if (scope.showIcon) {\n element.on('click', openCalendar);\n } else {\n element.on('focus', openCalendar);\n }\n }\n \n if (scope.showIcon) {\n element.addClass('dtp-no-msclear dtp-input');\n var calendarButton =\n '' +\n '' +\n '', clearButton = '';\n\n if (scope.showClear === undefined || scope.showClear) {\n clearButton = '';\n }\n \n element.after($compile(calendarButton + clearButton)(scope));\n\n scope.openCalendarDiag = function(e) {\n openCalendar(e);\n };\n\n scope.clear = function() {\n ngModel.$setViewValue(null);\n scope.currentDate = null;\n ngModel.$render();\n $timeout(function() {\n scope.ngChange();\n element[0].focus();\n }, 0, false);\n };\n }\n }\n };\n }])\n // Returns a service that opens a dialog when the attribute shown is called\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\n var service = {\n show: function (options) {\n var deferred = $q.defer();\n\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\n\n var dialogOptions = {\n controller: PluginController,\n controllerAs: 'picker',\n locals: {options: options},\n parent: angular.element(document.body),\n bindToController: true,\n clickOutsideToClose: options.clickOutsideToClose || false,\n disableParentScroll: options.disableParentScroll || false,\n skipHide: true,\n multiple: true,\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\n targetEvent: options.targetEvent,\n openFrom: options.openFrom,\n closeTo: options.closeTo,\n };\n\n if (!options.templateUrl) dialogOptions.template = template;\n else dialogOptions.templateUrl = options.templateUrl;\n\n $mdDialog.show(dialogOptions).then(function (v) {\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\n }, function () {\n deferred.reject();\n });\n return deferred.promise;\n }\n };\n\n return service;\n }])\n ;\n\n var PluginController = function ($mdDialog, mdcDefaultParams) {\n this.currentView = VIEW_STATES.DATE;\n this._dialog = $mdDialog;\n\n this._attachedEvents = [];\n this.VIEWS = VIEW_STATES;\n this.params = angular.copy(mdcDefaultParams());\n this.meridien = 'AM';\n };\n\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\n PluginController.prototype = {\n $onInit: function () {\n this.params = angular.extend(this.params, this.options);\n this.timeMode = this.params.time && !this.params.date;\n this.dateMode = this.params.date;\n this.initDates();\n this.start();\n },\n currentNearestMinute: function () {\n var nearestMin = this.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n\n var date = this.currentDate || moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n\n var seconds;\n if (this.params.seconds) {\n seconds = date.second();\n if (seconds >= 60) seconds = 60 - 1;\n } else seconds = 0;\n\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\n },\n initDates: function () {\n var that = this;\n var _dateParam = function (input, fallback) {\n var ret = null;\n if (angular.isDefined(input) && input !== null && input !== '') {\n if (angular.isString(input)) {\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\n ret = moment(input, that.params.format).locale(that.params.lang);\n }\n else {\n ret = moment(input).locale(that.params.lang);\n }\n } else if (typeof input === 'number') {\n ret = moment(input).locale(that.params.lang);\n } else {\n if (angular.isDate(input)) {\n var x = input.getTime();\n ret = moment(x, \"x\").locale(that.params.lang);\n } else if (moment.isMoment(input)) {\n if (input.isValid()) ret = input;\n else ret = fallback;\n }\n }\n } else {\n ret = fallback;\n }\n return ret;\n };\n\n this.currentDate = _dateParam(this.params.currentDate, moment());\n this.currentDate = this.currentNearestMinute();\n this.minDate = _dateParam(this.params.minDate);\n this.maxDate = _dateParam(this.params.maxDate);\n this.disableDates = this.params.disableDates.map(function (x) {\n return moment(x).format('MMMM Do YYYY');\n });\n this.selectDate(this.currentDate);\n this.weekDays = this.params.weekDays;\n },\n initDate: function () {\n this.currentView = VIEW_STATES.DATE;\n },\n initHours: function () {\n this.currentView = VIEW_STATES.HOUR;\n },\n initMinutes: function () {\n this.currentView = VIEW_STATES.MINUTE;\n },\n initSeconds: function () {\n this.currentView = VIEW_STATES.SECOND;\n },\n isAfterMinDate: function (date, checkHour, checkMinute) {\n var _return = true;\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n var _minDate = moment(this.minDate);\n var _date = moment(date);\n\n if (!checkHour && !checkMinute) {\n _minDate.hour(0);\n _minDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _minDate.second(0);\n _date.second(0);\n _minDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _minDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\n var _return = true;\n\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n var _maxDate = moment(this.maxDate);\n var _date = moment(date);\n\n if (!checkTime && !checkMinute) {\n _maxDate.hour(0);\n _maxDate.minute(0);\n\n _date.hour(0);\n _date.minute(0);\n }\n\n _maxDate.second(0);\n _date.second(0);\n _maxDate.millisecond(0);\n _date.millisecond(0);\n\n if (!checkMinute) {\n _date.minute(0);\n _maxDate.minute(0);\n\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n else {\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\n }\n }\n\n return _return;\n },\n isInDisableDates: function (date) {\n var dut = date.format('MMMM Do YYYY');\n if (this.disableDates.indexOf(dut) > -1) {\n return false;\n }\n return true;\n },\n isWeekDay: function(date) {\n if (this.weekDays) {\n if (date.isoWeekday() <= 5) {\n return true;\n }\n return false;\n }\n return true;\n },\n selectDate: function (date) {\n if (date) {\n this.currentDate = moment(date);\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\n this.currentDate = moment(this.minDate);\n }\n\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\n this.currentDate = moment(this.maxDate);\n }\n this.currentDate.locale(this.params.lang);\n this.calendarStart = moment(this.currentDate);\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\n }\n },\n isPM: function () {\n return this.meridien === 'PM';\n },\n incrementMonth: function (amount) {\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\n this.selectDate(this.currentDate.add(amount, 'month'));\n }\n },\n incrementYear: function (amount) {\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\n this.selectDate(this.currentDate.add(amount, 'year'));\n }\n },\n openMenu: function ($mdMenu, ev) {\n $mdMenu.open(ev); \n },\n monthsAvailable: function () {\n var monthsArr = [], _date = moment(this.currentDate);\n\n for (var m = 0; m < 12; m++) {\n var curMonth = _date.month(m);\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\n monthsArr.push(curMonth.format('MMMM'));\n }\n }\n return monthsArr;\n },\n selectMonth: function (month) {\n this.selectDate(this.currentDate.month(month));\n },\n yearsAvailable: function () {\n var _minDate, _maxDate, len, startYear, yearsArr = [],\n _date = this.currentDate.year();\n\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\n _minDate = moment(this.minDate).year();\n }\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\n _maxDate = moment(this.maxDate).year();\n }\n\n if (_maxDate && _minDate) {\n len = _maxDate - _minDate;\n startYear = _minDate;\n } else if (_minDate) {\n len = 115;\n startYear = _minDate;\n } else if (_maxDate) {\n len = 30;\n startYear = _maxDate - len;\n } else {\n len = 60;\n startYear = _date - len/2;\n }\n \n for (var i=0; i <= len; i++) {\n yearsArr.push(startYear+i);\n }\n return yearsArr;\n },\n selectYear: function (year) {\n this.selectDate(this.currentDate.year(year));\n },\n isPreviousMonthVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\n },\n isNextMonthVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\n },\n isPreviousYearVisible: function () {\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\n },\n isNextYearVisible: function () {\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\n },\n isHourAvailable: function (hour) {\n var _date = moment(this.currentDate);\n if (this.params.shortTime) {\n _date.hour(this.convertHours(hour)).minute(0).second(0);\n } else {\n _date.hour(hour).minute(0).second(0);\n }\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\n },\n isMinuteAvailable: function (minute) {\n var _date = moment(this.currentDate);\n _date.minute(minute).second(0);\n\n var nearestMin = this.params.minuteSteps;\n if (nearestMin > 1 && 5 % nearestMin !== 0){\n var _curmin = _date.minute();\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n if (minutes !== _curmin) return false;\n }\n\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\n },\n isSecondAvailable: function (second) {\n return true;\n },\n start: function () {\n this.currentView = VIEW_STATES.DATE;\n if (this.params.date) {\n this.initDate();\n } else {\n if (this.params.time) {\n this.initHours();\n }\n }\n },\n today: function () {\n var nearestMin = this.params.minuteSteps;\n var date = moment();\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n\n var seconds;\n if (this.params.seconds) {\n seconds = date.second();\n if (seconds >= 60) seconds = 60 - 1;\n } else seconds = 0;\n\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\n },\n ok: function () {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n if (this.params.time === true) {\n this.initHours();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.HOUR:\n if (this.params.minutes === true) {\n this.initMinutes();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.MINUTE:\n if (this.params.seconds === true) {\n this.initSeconds();\n } else {\n this.hide(true);\n }\n break;\n case VIEW_STATES.SECOND:\n this.hide(true);\n break;\n }\n },\n cancel: function () {\n if (this.params.time) {\n switch (this.currentView) {\n case VIEW_STATES.DATE:\n this.hide();\n break;\n case VIEW_STATES.HOUR:\n if (this.params.date) {\n this.initDate();\n }\n else {\n this.hide();\n }\n break;\n case VIEW_STATES.MINUTE:\n this.initHours();\n break;\n case VIEW_STATES.SECOND:\n this.initMinutes();\n break;\n }\n }\n else {\n this.hide();\n }\n },\n selectMonthBefore: function () {\n this.calendarStart.subtract(1, 'months');\n },\n selectMonthAfter: function () {\n this.calendarStart.add(1, 'months');\n },\n selectYearBefore: function () {\n this.calendarStart.subtract(1, 'years');\n },\n selectYearAfter: function () {\n this.calendarStart.add(1, 'years');\n },\n selectAM: function () {\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\n if (this.currentDate.hour() >= 12) {\n this.selectDate(this.currentDate.subtract(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\n }\n }\n },\n selectPM: function () {\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\n if (this.currentDate.hour() < 12) {\n this.selectDate(this.currentDate.add(12, 'hours'));\n }\n if (!this.isHourAvailable(this.currentDate.hour())) {\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\n }\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\n }\n }\n },\n convertHours: function (h) {\n var _return = h;\n if (h < 12 && this.isPM()) _return += 12;\n\n return _return;\n },\n hide: function (okBtn) {\n if (okBtn) this._dialog.hide(this.currentDate);\n else this._dialog.cancel();\n }\n };\n\n angular.module(moduleName)\n .directive('mdcDatetimePickerCalendar', [\n function () {\n\n var YEAR_MIN = 1920,\n YEAR_MAX = new Date().getFullYear() + 30,\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\n MONTHS = [];\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\n MONTHS.push(i);\n }\n\n var currentMonthIndex = function (date, low) {\n low = low ? low : 0;\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\n };\n\n return {\n restrict: 'E',\n scope: {\n picker: '=',\n date: '='\n },\n bindToController: true,\n controllerAs: 'cal',\n controller: ['$scope', function ($scope) {\n var calendar = this, picker;\n\n this.$onInit = function () {\n picker = this.picker;\n\n var days = [];\n for (var i = picker.params.weekStart; days.length < 7; i++) {\n if (i > 6) i = 0;\n days.push(i.toString());\n }\n calendar.week = days;\n\n if (!picker.maxDate && !picker.minDate) {\n calendar.months = MONTHS;\n } else {\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\n calendar.months = MONTHS.slice(low, high);\n }\n\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\n };\n\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\n \n calendar.getItemAtIndex = function (index) {\n var month = ((index + 1) % 12) || 12;\n var year = YEAR_MIN + Math.floor(index / 12);\n var monthObj = moment(picker.currentDate).year(year).month(month);\n return generateMonthCalendar(monthObj);\n };\n\n $scope.$watch(function () {\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\n }, function (val2, val1) {\n if (val2 != val1) {\n var nDate = moment(val2, 'YYYY-MM');\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\n var index = currentMonthIndex(nDate, low);\n if (calendar.topIndex != index) {\n calendar.topIndex = index;\n }\n }\n });\n\n var generateMonthCalendar = function (date) {\n var month = {};\n if (date !== null) {\n month.name = date.format('MMMM YYYY');\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\n .hour(date.hour())\n .minute(date.minute());\n var iNumDay = startOfMonth.format('d');\n month.days = [];\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\n if (i === startOfMonth.date()) {\n var iWeek = calendar.week.indexOf(iNumDay.toString());\n if (iWeek > 0) {\n for (var x = 0; x < iWeek; x++) {\n month.days.push(0);\n }\n }\n }\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\n }\n\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\n for (var j = 0; j < slices; j++) {\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\n }\n month.days = daysTmp;\n return month;\n }\n\n };\n\n calendar.toDay = function (i) {\n return moment(parseInt(i), \"d\")\n .locale(picker.params.lang)\n .format(\"ddd\")\n .substring(0, picker.params.dayOfWeekLen);\n };\n\n calendar.isInRange = function (date) {\n return picker.isAfterMinDate(moment(date), false, false) &&\n picker.isBeforeMaxDate(moment(date), false, false) &&\n picker.isWeekDay(moment(date)) &&\n picker.isInDisableDates(moment(date));\n };\n\n calendar.selectDate = function (date) {\n if (date) {\n if (calendar.isSelectedDay(date)) {\n return picker.ok();\n }\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\n if (picker.params.autoOk) {\n picker.ok();\n }\n }\n };\n\n calendar.isSelectedDay = function (m) {\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\n };\n\n calendar.isDateOfTheDay = function (m) {\n var today = calendar.picker.options.showTodaysDate;\n if (!today) {\n return false;\n }\n\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\n };\n }],\n template: \n '' +\n '
' +\n '
' +\n '
' +\n '
'\n };\n }])\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\n function ($compile) {\n var buildCalendarContent = function (element, scope) {\n var tbody = angular.element(element[0].querySelector('tbody'));\n var calendar = scope.cal, month = scope.month;\n\n var tbodyHtml = [];\n\n month.days.forEach(function (weekDays, i) {\n tbodyHtml.push('');\n weekDays.forEach(function (weekDay, j) {\n tbodyHtml.push('');\n if (weekDay) {\n if (calendar.isInRange(weekDay)) {\n //build a\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\n\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n } else {\n tbodyHtml.push('');\n tbodyHtml.push(weekDay.format('D'));\n tbodyHtml.push('');\n }\n }\n tbodyHtml.push('');\n });\n tbodyHtml.push('');\n });\n\n tbody.html(tbodyHtml.join(''));\n $compile(tbody)(scope);\n };\n\n return {\n scope: {\n idx: '='\n },\n require: '^mdcDatetimePickerCalendar',\n restrict: 'AE',\n template: \n '
{{month.name}}
' +\n '' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n ' ' +\n '
{{cal.toDay(day)}}
',\n link: function (scope, element, attrs, calendar) {\n scope.cal = calendar;\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n scope.$watch(function () {\n return scope.idx;\n }, function (idx, oldIdx) {\n if (idx != oldIdx) {\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\n buildCalendarContent(element, scope);\n }\n });\n }\n };\n }\n ])\n ;\n\n angular.module(moduleName)\n .directive('mdcDtpNoclick', function () {\n return {\n link: function (scope, el) {\n el.on('click', function (e) {\n e.preventDefault();\n });\n }\n };\n });\n angular.module(moduleName)\n .directive('mdcDatetimePickerClock', ['$timeout',\n function ($timeout) {\n\n var template = \n '
 ' +\n '
' +\n ' {{point.display}}' +\n ' {{point.display}}' +\n '
' +\n '' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
';\n\n return {\n restrict: 'E',\n template: template,\n link: function (scope, element, attrs) {\n var minuteMode = attrs.mode === 'minutes';\n var secondMode = attrs.mode === 'seconds';\n var picker = scope.picker;\n //banking on the fact that there will only be one at a time\n var componentRoot = document.querySelector('md-dialog.dtp');\n\n var setTimeDegRay = function(deg, ray) {\n var val = 0;\n deg = deg >= 360 ? 0 : deg;\n if (deg !== 0) {\n var divider = minuteMode||secondMode ? 60 : 12;\n val = Math.round(divider / 360 * deg);\n }\n\n if (minuteMode) {\n var nearestMin = picker.params.minuteSteps;\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\n var minutes = (nearestMin * Math.round(val / nearestMin));\n if (minutes >= 60) minutes = 60 - nearestMin;\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.minute(minutes);\n } else if (!secondMode){\n if (val === 12) val = 0;\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\n if (picker.isPM()) val += 12;\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.hour(val);\n } else {\n if (val >= 60) val = 0;\n if (!scope.pointAvailable({value: val})) return;\n picker.currentDate.second(val);\n }\n };\n\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\n EVENTS = {\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\n };\n\n var onMoveEvent = function(e) {\n e.preventDefault();\n\n var closestTarget = e.currentTarget.closest('div'),\n clientRect = closestTarget.getClientRects()[0];\n\n if (isTouchSupported) e = e.changedTouches[0];\n \n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\n\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\n\n $timeout(function() {\n setTimeDegRay(deg+180, ray);\n });\n };\n\n element.on(EVENTS.POINTER_DOWN, function() {\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\n });\n\n element.on(EVENTS.POINTER_UP, function() {\n element.off(EVENTS.POINTER_MOVE);\n });\n\n scope.$on(\"$destroy\", function() {\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \n });\n\n var exec = function () {\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\n\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\n\n //set width\n var clockWidth = (w - (mL + mR + pL + pR));\n clock.css('width', (clockWidth) + 'px');\n\n var r = (clockWidth / 2);\n var j = r / 1.2; // radius for low number\n\n var points = [];\n\n for (var h = 0; h < 12; ++h) {\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\n var left = (r + x + pL / 2) - (pL + mL);\n var top = (r - y - mT / 2) - (pT + mT);\n\n var hour = {\n left: left,\n top: top,\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\n };\n\n if (minuteMode || secondMode) {\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\n } else {\n if (picker.params.shortTime) {\n hour.display = h === 0 ? 12 : h;\n } else {\n hour.display = h;\n }\n }\n\n points.push(hour);\n }\n scope.points = points;\n\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\n var points24 = [];\n\n var j24 = r / 1.8; // radius for high number\n for (var h24 = 12; h24 < 24; ++h24) {\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\n var left24 = (r + x24 + pL / 2) - (pL + mL);\n var top24 = (r - y24 - mT / 2) - (pT + mT);\n\n points24.push({\n left: left24,\n top: top24,\n value: h24,\n display: h24,\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\n });\n }\n scope.points24 = points24;\n }\n\n scope.mode = attrs.mode;\n setCurrentValue();\n clock.css('height', clockWidth + 'px');\n\n var clockCenter = element[0].querySelector('.dtp-clock-center');\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\n var _mL = r / 1.4;\n var _sL = r;\n\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _hL + 'px',\n marginTop: (r - _hL - pL) + 'px'\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _mL + 'px',\n marginTop: r - _mL - pL + 'px'\n }).addClass(minuteMode ? 'on' : '');\n\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\n left: r + (mL * 1.5) + 'px',\n height: _sL + 'px',\n marginTop: r - _sL - pL + 'px'\n }).addClass(secondMode ? 'on' : '');\n\n angular.element(clockCenter).css({\n left: r + pL + mL - centerWidth + 'px',\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\n });\n animateHands();\n };\n\n var animateHands = function () {\n var _date = picker.currentNearestMinute();\n var h = _date.hour(), m = _date.minute(), s = _date.second();\n\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\n };\n\n var rotateElement = function (el, deg) {\n angular.element(el).css({\n WebkitTransform: 'rotate(' + deg + 'deg)',\n '-moz-transform': 'rotate(' + deg + 'deg)',\n '-ms-transform': 'rotate(' + deg + 'deg)',\n 'transform': 'rotate(' + deg + 'deg)'\n });\n };\n\n\n var setCurrentValue = function () {\n var date = picker.currentNearestMinute();\n var nbH = picker.params.shortTime ? 12 : 24;\n if (minuteMode) scope.currentValue = date.minute();\n else if (secondMode) scope.currentValue = date.second();\n else scope.currentValue = date.hour() % nbH;\n };\n\n scope.$watch(function () {\n var tmp = picker.currentNearestMinute();\n return tmp ? tmp.format('HH:mm:ss') : '';\n }, function () {\n setCurrentValue();\n animateHands();\n });\n\n scope.setTime = function (val) {\n if (!minuteMode && !secondMode) {\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\n\n if (picker.params.shortTime) {\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\n } else {\n picker.currentDate.hour(val);\n if (val >= 12) picker.meridien = 'PM';\n else picker.meridien = 'AM';\n }\n\n if (picker.params.autoOk) picker.ok(); // single click\n } else if (!secondMode) {\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\n \n picker.currentDate.minute(val);\n if (!picker.params.seconds) {\n picker.currentDate.second(0);\n } else if (picker.params.autoOk) picker.ok(); // single click\n } else {\n if (val === scope.currentValue) picker.ok(); // double click\n picker.currentDate.second(val);\n }\n };\n\n scope.pointAvailable = function (point) {\n if (minuteMode) return picker.isMinuteAvailable(point.value);\n else if (secondMode) return picker.isSecondAvailable(point.value);\n else return picker.isHourAvailable(point.value);\n };\n\n var unWatcher = scope.$watch(function () {\n return element[0].querySelectorAll('div').length;\n }, function () {\n exec();\n unWatcher();\n });\n }\n };\n }]);\n return moduleName;\n }\n\n var isElectron = window && window.process && window.process.type;\n if (typeof define === 'function' && define.amd) {\n define(['moment'], ngMaterialDatePicker);\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\n module.exports = ngMaterialDatePicker(require('moment'));\n } else {\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\n }\n})();\n"]} \ No newline at end of file +{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","showClear","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$parse","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","ngDisabled","clearButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","$inject","prototype","$onInit","extend","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","isPreviousMonthVisible","add","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"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","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse',\r\n function ($mdDialog, $timeout, $compile, $parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '', clearButton = '';\r\n\r\n if (scope.showClear === undefined || scope.showClear) {\r\n clearButton = '';\r\n }\r\n \r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n $onInit: function () {\r\n this.params = angular.extend(this.params, this.options);\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file From 981c5437585c42c9e391debfcf2305f04edc1261 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Tue, 29 Dec 2020 19:41:05 -0500 Subject: [PATCH 206/226] update deps --- README.md | 14 +- bower.json | 4 +- index.html | 20 +- package.json | 14 +- yarn.lock | 1282 ++++++++++++++++++++++++++++++-------------------- 5 files changed, 803 insertions(+), 531 deletions(-) diff --git a/README.md b/README.md index f6be211..d274608 100644 --- a/README.md +++ b/README.md @@ -55,13 +55,13 @@ Depends on the following library: - Moment ``` - - - - - - - + + + + + + + ``` ## Installing via yarn, npm or bower diff --git a/bower.json b/bower.json index 2c78bc0..d183972 100644 --- a/bower.json +++ b/bower.json @@ -28,7 +28,7 @@ "test-infra" ], "dependencies": { - "moment": "^2.27.0", - "angular-material": "^1.1.26" + "moment": "^2.29.1", + "angular-material": "^1.2.2" } } diff --git a/index.html b/index.html index 2c16b0e..6267dd1 100644 --- a/index.html +++ b/index.html @@ -13,19 +13,19 @@ - + - - - - - - + + + + + + - - - + + + diff --git a/package.json b/package.json index e3fd6a8..7c6378c 100644 --- a/package.json +++ b/package.json @@ -20,12 +20,12 @@ "dev": "lite-server" }, "dependencies": { - "angular": "^1.8.0", - "angular-animate": "^1.8.0", - "angular-aria": "^1.8.0", - "angular-material": "^1.1.26", - "angular-messages": "^1.8.0", - "moment": "^2.27.0" + "angular": "^1.8.2", + "angular-animate": "^1.8.2", + "angular-aria": "^1.8.2", + "angular-material": "^1.2.2", + "angular-messages": "^1.8.2", + "moment": "^2.29.1" }, "repository": { "type": "git", @@ -37,7 +37,7 @@ "gulp-rename": "^2.0.0", "gulp-sourcemaps": "^2.6.5", "gulp-uglify": "^3.0.2", - "lite-server": "^2.5.4", + "lite-server": "^2.6.1", "pump": "^3.0.0" } } diff --git a/yarn.lock b/yarn.lock index 0ef9e0f..7f2140d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,17 +19,13 @@ normalize-path "^2.0.1" through2 "^2.0.3" -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - accepts@~1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" + mime-types "~2.1.24" + negotiator "0.6.2" acorn@5.X, acorn@^5.0.3: version "5.7.4" @@ -39,35 +35,36 @@ acorn@5.X, acorn@^5.0.3: after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -angular-animate@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.8.0.tgz#fc6333a5a052129dc5fa0b02cd676304d2b99e9d" - integrity sha512-ROFK3UIn1MSVpqAlay15ZxjPmVbvwaO3Zn/2vhmQdYeqxSbUVuOckcvtDLBpHPGPtOAreu35qfV7NQ7u2EgDcA== +angular-animate@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.8.2.tgz#a3045e523ffb8d7fcbebd3cb68d1fdd474665ced" + integrity sha512-Jbr9+grNMs9Kj57xuBU3Ju3NOPAjS1+g2UAwwDv7su1lt0/PLDy+9zEwDiu8C8xJceoTbmBNKiWGPJGBdCQLlA== -angular-aria@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.8.0.tgz#97aec9b1e8bafd07d5fab30f98d8ec832e18e25d" - integrity sha512-eCQI6EwgY6bYHdzIUfDABHnZjoZ3bNYpCsnceQF4bLfbq1QtZ7raRPNca45sj6C9Pfjde6PNcEDvuLozFPYnrQ== +angular-aria@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.8.2.tgz#3e5d546e549d8bddcf0b8031c677d3129d82a76d" + integrity sha512-xWT1Lm+Xug2GM6nGNMioBP4hXt3sj2eGaExa4cVCZUYSVWezgyuD1RiLgzJzwTkBGYplHQUzQaz3yDY8jVI6yQ== -angular-material@^1.1.26: - version "1.2.0" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.2.0.tgz#b8f8ab87ca357138c5553a680fe8892c116d3f6a" - integrity sha512-s7GnQZkTFYfTBIraHz7SqyZtgr04aK4AenTdfdx1xkTGh9TewWttKdmphBwEpviv4dZpcvESZEn3REpUdFYhEQ== +angular-material@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.2.2.tgz#42a0e1ab196980476f08c20efcbd4541678e2600" + integrity sha512-GtrBzYDg5zHYX/OUqxo72zb9bsY0RDuIA+4ZsZjuv1r+L4q9UAtkeIZzMXVGua6CCNgfB58cKep3TmxtAZhNwg== -angular-messages@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.8.0.tgz#dcdb8ea7d85a939526921e8cf05950601dc2b8fb" - integrity sha512-LSlyTv80y1vg8Cfdz+RJ0BrraWkq0qsOZHyrHFT8NyYWC5yp6HQabvZvTpKv9YA+6o05wwAU90qXHSrnUlSflA== +angular-messages@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.8.2.tgz#47f0cf913030bc2231423ab9388acc14dd931837" + integrity sha512-M1qNh/30cLJi4yJJ+3YB8saPonRcavz5Dquqz0T/aUySKJhIkUoeCkmF+BcLH4SJ5PBp04yy4CZUUeNRVi7jZA== -angular@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.0.tgz#b1ec179887869215cab6dfd0df2e42caa65b1b51" - integrity sha512-VdaMx+Qk0Skla7B5gw77a8hzlcOakwF8mjlW13DpIWIDlfqwAbSSLfd8N/qZnzEmQF4jC4iofInd3gE7vL8ZZg== +angular@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.2.tgz#5983bbb5a9fa63e213cb7749199e0d352de3a2f1" + integrity sha512-IauMOej2xEe7/7Ennahkbb5qd/HFADiNuLSESz9Q27inmi32zB0lnAsFeLEWcox3Gd1F6YhNd1CP7/9IukJ0Gw== ansi-colors@^1.0.1: version "1.1.0" @@ -88,14 +85,34 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" @@ -110,6 +127,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + append-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" @@ -117,24 +142,11 @@ append-buffer@^1.0.2: dependencies: buffer-equal "^1.0.0" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -206,6 +218,7 @@ array-unique@^0.3.2: arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== assign-symbols@^1.0.0: version "1.0.0" @@ -225,6 +238,7 @@ async-done@^1.2.0, async-done@^1.2.2: async-each-series@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" + integrity sha1-dhfBkXQB/Yykooqtzj266Yr+tDI= async-each@^1.0.1: version "1.0.3" @@ -232,8 +246,9 @@ async-each@^1.0.1: integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async-settle@^1.0.0: version "1.0.0" @@ -245,8 +260,9 @@ async-settle@^1.0.0: async@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -atob@^2.1.1: +atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== @@ -281,19 +297,27 @@ bach@^1.0.0: backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base64-arraybuffer@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" + integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= + base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= base64id@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= base@^0.11.1: version "0.11.2" @@ -311,10 +335,12 @@ base@^0.11.1: batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= dependencies: callsite "1.0.0" @@ -323,9 +349,22 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== brace-expansion@^1.1.7: version "1.1.11" @@ -351,20 +390,27 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -browser-sync-client@^2.26.6: - version "2.26.6" - resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.6.tgz#e5201d3ace8aee88af17656b7b0c0620b6f8e4ab" - integrity sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw== +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-sync-client@^2.26.13: + version "2.26.13" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.13.tgz#ee5fa3ec36fe2a03f9887553cac6846751c8232d" + integrity sha512-p2VbZoYrpuDhkreq+/Sv1MkToHklh7T1OaIntDwpG6Iy2q/XkBcgwPcWjX+WwRNiZjN8MEehxIjEUh12LweLmQ== dependencies: etag "1.8.1" fresh "0.5.2" mitt "^1.1.3" rxjs "^5.5.6" -browser-sync-ui@^2.26.4: - version "2.26.4" - resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz#3772f13c6b93f2d7d333f4be0ca1ec02aae97dba" - integrity sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA== +browser-sync-ui@^2.26.13: + version "2.26.13" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.13.tgz#7a0622df2c1cc4fb0dd8edd511f90737f84239b4" + integrity sha512-6NJ/pCnhCnBMzaty1opWo7ipDmFAIk8U71JMQGKJxblCUaGfdsbF2shf6XNZSkXYia1yS0vwKu9LIOzpXqQZCA== dependencies: async-each-series "0.1.1" connect-history-api-fallback "^1" @@ -373,28 +419,28 @@ browser-sync-ui@^2.26.4: socket.io-client "^2.0.4" stream-throttle "^0.1.3" -browser-sync@^2.26.7: - version "2.26.7" - resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.7.tgz#120287716eb405651a76cc74fe851c31350557f9" - integrity sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w== +browser-sync@^2.26.13: + version "2.26.13" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.13.tgz#a74541c104aec7eda318a5d8abdb3317ae9eda3d" + integrity sha512-JPYLTngIzI+Dzx+StSSlMtF+Q9yjdh58HW6bMFqkFXuzQkJL8FCvp4lozlS6BbECZcsM2Gmlgp0uhEjvl18X4w== dependencies: - browser-sync-client "^2.26.6" - browser-sync-ui "^2.26.4" + browser-sync-client "^2.26.13" + browser-sync-ui "^2.26.13" bs-recipes "1.3.4" bs-snippet-injector "^2.0.1" - chokidar "^2.0.4" + chokidar "^3.4.1" connect "3.6.6" connect-history-api-fallback "^1" dev-ip "^1.0.1" easy-extender "^2.3.4" - eazy-logger "^3" + eazy-logger "3.1.0" etag "^1.8.1" fresh "^0.5.2" fs-extra "3.0.1" - http-proxy "1.15.2" + http-proxy "^1.18.1" immutable "^3" - localtunnel "1.9.2" - micromatch "^3.1.10" + localtunnel "^2.0.0" + micromatch "^4.0.2" opn "5.3.0" portscanner "2.1.1" qs "6.2.3" @@ -406,12 +452,13 @@ browser-sync@^2.26.7: serve-static "1.13.2" server-destroy "1.0.1" socket.io "2.1.1" - ua-parser-js "0.7.17" - yargs "6.4.0" + ua-parser-js "^0.7.18" + yargs "^15.4.1" bs-recipes@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" + integrity sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU= bs-snippet-injector@^2.0.1: version "2.0.1" @@ -428,9 +475,10 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== cache-base@^1.0.1: version "1.0.1" @@ -450,15 +498,22 @@ cache-base@^1.0.1: callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -chalk@^1.1.1: +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -466,7 +521,7 @@ chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" -chokidar@^2.0.0, chokidar@^2.0.4: +chokidar@^2.0.0: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -485,9 +540,20 @@ chokidar@^2.0.0, chokidar@^2.0.4: optionalDependencies: fsevents "^1.2.7" -chownr@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" +chokidar@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.1.2" class-utils@^0.3.5: version "0.3.6" @@ -515,6 +581,24 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" @@ -561,24 +645,55 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -commander@^2.2.0, commander@~2.16.0: +commander@^2.2.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@~2.16.0: version "2.16.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50" component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= component-emitter@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= -component-emitter@^1.2.1: +component-emitter@^1.2.1, component-emitter@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -586,6 +701,7 @@ component-emitter@^1.2.1: component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= concat-map@0.0.1: version "0.0.1" @@ -602,35 +718,28 @@ concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -connect-history-api-fallback@^1: +connect-history-api-fallback@^1, connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -connect-history-api-fallback@^1.2.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" - -connect-logger@0.0.1: +connect-logger@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/connect-logger/-/connect-logger-0.0.1.tgz#4d999978a1d20bb4608e7cd434d741652255174b" + integrity sha1-TZmZeKHSC7RgjnzUNNdBZSJVF0s= dependencies: moment "*" connect@3.6.6: version "3.6.6" resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= dependencies: debug "2.6.9" finalhandler "1.1.0" parseurl "~1.3.2" utils-merge "1.0.1" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - convert-source-map@1.X: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -645,6 +754,7 @@ convert-source-map@^1.5.0: cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= copy-descriptor@^0.1.0: version "0.1.1" @@ -692,6 +802,7 @@ debug-fabulous@1.X: debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" @@ -708,14 +819,7 @@ debug@4.1.1: dependencies: ms "^2.1.1" -debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.1.1: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -725,11 +829,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - default-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" @@ -771,29 +870,21 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@2.X: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -801,6 +892,12 @@ detect-newline@2.X: dev-ip@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" + integrity sha1-p2o+0YVb56ASu4rBbLgPPADcKPA= + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== duplexify@^3.6.0: version "3.7.1" @@ -827,20 +924,32 @@ easy-extender@^2.3.4: dependencies: lodash "^4.17.10" -eazy-logger@^3: - version "3.0.2" - resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" - integrity sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw= +eazy-logger@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.1.0.tgz#b169eb56df714608fa114f164c8a2956bec9f0f3" + integrity sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ== dependencies: - tfunk "^3.0.1" + tfunk "^4.0.0" ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" @@ -852,6 +961,7 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: engine.io-client@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -865,36 +975,49 @@ engine.io-client@~3.2.0: xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" -engine.io-client@~3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.3.2.tgz#04e068798d75beda14375a264bb3d742d7bc33aa" - integrity sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ== +engine.io-client@~3.4.0: + version "3.4.4" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.4.tgz#77d8003f502b0782dd792b073a4d2cf7ca5ab967" + integrity sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ== dependencies: - component-emitter "1.2.1" + component-emitter "~1.3.0" component-inherit "0.0.3" debug "~3.1.0" - engine.io-parser "~2.1.1" + engine.io-parser "~2.2.0" has-cors "1.1.0" indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" + parseqs "0.0.6" + parseuri "0.0.6" ws "~6.1.0" xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" + version "2.1.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" + integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== dependencies: after "0.8.2" arraybuffer.slice "~0.0.7" base64-arraybuffer "0.1.5" - blob "0.0.4" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io-parser@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7" + integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.4" + blob "0.0.5" has-binary2 "~1.0.2" engine.io@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== dependencies: accepts "~1.3.4" base64id "1.0.0" @@ -965,14 +1088,17 @@ es6-weak-map@^2.0.2: escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= escape-string-regexp@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= etag@1.8.1, etag@^1.8.1, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= event-emitter@^0.3.5: version "0.3.5" @@ -981,9 +1107,10 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== expand-brackets@^2.1.4: version "2.1.4" @@ -1049,6 +1176,11 @@ fancy-log@^1.3.2: parse-node-version "^1.0.0" time-stamp "^1.0.0" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -1059,9 +1191,17 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= dependencies: debug "2.6.9" encodeurl "~1.0.1" @@ -1079,6 +1219,21 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -1130,6 +1285,11 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" +follow-redirects@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" + integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== + for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -1152,21 +1312,17 @@ fragment-cache@^0.2.1: fresh@0.5.2, fresh@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= fs-extra@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= dependencies: graceful-fs "^4.1.2" jsonfile "^3.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - dependencies: - minipass "^2.2.1" - fs-mkdirp-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" @@ -1181,37 +1337,33 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: + bindings "^1.5.0" nan "^2.12.1" - node-pre-gyp "^0.12.0" + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -1225,6 +1377,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + glob-stream@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" @@ -1253,7 +1412,7 @@ glob-watcher@^5.0.3: just-debounce "^1.0.0" object.defaults "^1.1.0" -glob@^7.1.1, glob@^7.1.3: +glob@^7.1.1: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -1296,11 +1455,16 @@ graceful-fs@4.X: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.0.0: version "4.2.2" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + gulp-clean-css@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz#5b1e73f2fca46703eb636014cdd4553cea65146d" @@ -1393,18 +1557,21 @@ gulplog@^1.0.0: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= dependencies: ansi-regex "^2.0.0" has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== dependencies: isarray "2.0.1" has-cors@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= has-gulplog@^0.1.0: version "0.1.0" @@ -1417,11 +1584,6 @@ has-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -1453,6 +1615,13 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -1461,38 +1630,47 @@ homedir-polyfill@^1.0.1: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.8.4" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" - integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -http-errors@1.6.3, http-errors@~1.6.2: +http-errors@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" inherits "2.0.3" setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-proxy@1.15.2: - version "1.15.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" -iconv-lite@0.4.23, iconv-lite@^0.4.4: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - dependencies: - minimatch "^3.0.4" - immutable@^3: version "3.8.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" @@ -1501,6 +1679,7 @@ immutable@^3: indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= inflight@^1.0.4: version "1.0.6" @@ -1510,7 +1689,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1518,8 +1697,9 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@~1.3.0: +ini@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -1568,15 +1748,29 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" - integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" is-data-descriptor@^0.1.4: version "0.1.4" @@ -1639,6 +1833,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -1646,7 +1845,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -1661,6 +1860,7 @@ is-negated-glob@^1.0.0: is-number-like@^1.0.3: version "1.0.8" resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" + integrity sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA== dependencies: lodash.isfinite "^3.3.2" @@ -1676,6 +1876,11 @@ is-number@^4.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -1729,6 +1934,7 @@ isarray@1.0.0, isarray@~1.0.0: isarray@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= isexe@^2.0.0: version "2.0.0" @@ -1755,6 +1961,7 @@ json-stable-stringify-without-jsonify@^1.0.1: jsonfile@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= optionalDependencies: graceful-fs "^4.1.6" @@ -1783,9 +1990,9 @@ kind-of@^5.0.0, kind-of@^5.0.2: integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== last-run@^1.1.0: version "1.1.1" @@ -1831,19 +2038,20 @@ liftoff@^3.1.0: resolve "^1.1.7" limiter@^1.0.5: - version "1.1.3" - resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.3.tgz#32e2eb55b2324076943e5d04c1185ffb387968ef" + version "1.1.5" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" + integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== -lite-server@^2.5.4: - version "2.5.4" - resolved "https://registry.yarnpkg.com/lite-server/-/lite-server-2.5.4.tgz#f1c1b25bb70ce0f83eb1ab0b08ef32c08accf4e2" - integrity sha512-57SverS67UqRFiRm0ktdzEG5yZeyzkywRJ9Q8PHVSGuLm9K97Mr6jF43XTu5v9lVe8g0WHJ4eKlIeGSd1Bq/sw== +lite-server@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/lite-server/-/lite-server-2.6.1.tgz#27281022c77c99673d0a820b998bc7e125cdbaa0" + integrity sha512-d3oyB/C8AU4EwYQHlLxcu6vTQDnCaLb81v1KKNYABmFS5oeJ11A+YxlqtpbTclID1AFddJfcB5klf0q98vYIMw== dependencies: - browser-sync "^2.26.7" - connect-history-api-fallback "^1.2.0" - connect-logger "0.0.1" - lodash "^4.17.15" - minimist "1.2.0" + browser-sync "^2.26.13" + connect-history-api-fallback "^1.6.0" + connect-logger "^0.0.1" + lodash "^4.17.20" + minimist "^1.2.5" load-json-file@^1.0.0: version "1.1.0" @@ -1856,24 +2064,40 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -localtunnel@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.2.tgz#0012fcabc29cf964c130a01858768aa2bb65b5af" - integrity sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg== +localtunnel@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-2.0.0.tgz#2ea71174fa80e34cce91b2a7ce416e6a57d9ff7c" + integrity sha512-g6E0aLgYYDvQDxIjIXkgJo2+pHj3sGg4Wz/XP3h2KtZnRsWPbOQY+hw1H8Z91jep998fkcVE9l+kghO+97vllg== dependencies: axios "0.19.0" debug "4.1.1" openurl "1.1.1" - yargs "6.6.0" + yargs "13.3.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" lodash.isfinite@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" + integrity sha1-+4m2WpqAKBgz8LdHizpRBPiY67M= -lodash@^4.17.10, lodash@^4.17.15: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== +lodash@^4.17.10, lodash@^4.17.20: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== lru-queue@0.1: version "0.1.0" @@ -1951,20 +2175,30 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -mime-types@~2.1.17, mime-types@~2.1.18: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" +mime-types@~2.1.17, mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: - mime-db "~1.33.0" + mime-db "1.44.0" mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" @@ -1973,32 +2207,15 @@ minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@1.2.0, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -minipass@^2.2.1, minipass@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" - dependencies: - minipass "^2.2.1" +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== mitt@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.3.tgz#528c506238a05dce11cd914a741ea2cc332da9b8" - integrity sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== mixin-deep@^1.2.0: version "1.3.2" @@ -2008,20 +2225,10 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -moment@*: - version "2.22.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" - -moment@^2.27.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== +moment@*, moment@^2.29.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== ms@2.0.0: version "2.0.0" @@ -2029,9 +2236,9 @@ ms@2.0.0: integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== mute-stdout@^1.0.0: version "1.0.1" @@ -2039,9 +2246,9 @@ mute-stdout@^1.0.0: integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== nanomatch@^1.2.9: version "1.2.13" @@ -2060,47 +2267,15 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -needle@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== next-tick@1, next-tick@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -2114,10 +2289,11 @@ normalize-package-data@^2.3.2: normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -2129,39 +2305,19 @@ now-and-later@^2.0.0: dependencies: once "^1.3.2" -npm-bundled@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" - -npm-packlist@^1.1.6: - version "1.1.10" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -object-assign@4.X, object-assign@^4.1.0: +object-assign@4.X: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" object-component@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= object-copy@^0.1.0: version "0.1.0" @@ -2177,10 +2333,6 @@ object-keys@^1.0.11, object-keys@^1.0.12: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-path@^0.9.0: - version "0.9.2" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -2234,6 +2386,7 @@ object.reduce@^1.0.0: on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" @@ -2247,6 +2400,7 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: openurl@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" + integrity sha1-OHW0sO96UsFW8NtB1GCduw+Us4c= opn@5.3.0: version "5.3.0" @@ -2262,11 +2416,6 @@ ordered-read-streams@^1.0.0: dependencies: readable-stream "^2.0.1" -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" @@ -2274,18 +2423,31 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== parse-filepath@^1.0.1: version "1.0.2" @@ -2316,18 +2478,31 @@ parse-passwd@^1.0.0: parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= dependencies: better-assert "~1.0.0" +parseqs@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" + integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== + parseuri@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= dependencies: better-assert "~1.0.0" +parseuri@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" + integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== + parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascalcase@^0.1.1: version "0.1.1" @@ -2346,6 +2521,16 @@ path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2377,6 +2562,11 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -2407,6 +2597,7 @@ plugin-error@1.0.1: portscanner@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" + integrity sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y= dependencies: async "1.5.2" is-number-like "^1.0.3" @@ -2453,29 +2644,23 @@ pumpify@^1.3.5: qs@6.2.3: version "6.2.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + integrity sha1-HPyyXBCpsrSDBT/zn138kjOQjP4= range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@^2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -2502,7 +2687,7 @@ read-pkg@^1.0.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -2515,6 +2700,19 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^2.0.2: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -2524,6 +2722,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -2595,9 +2800,15 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= -requires-port@1.x.x: +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" @@ -2617,17 +2828,27 @@ resolve-options@^1.1.0: resolve-url@^0.2.1, resolve-url@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.4.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" +resolve@^1.10.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + resp-modifier@6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" + integrity sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08= dependencies: debug "^2.2.0" minimatch "^3.0.2" @@ -2637,16 +2858,10 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rx@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= rxjs@^5.5.6: version "5.5.12" @@ -2660,7 +2875,12 @@ safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== -safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -2675,10 +2895,7 @@ safe-regex@^1.1.0: "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== semver-greatest-satisfied-range@^1.1.0: version "1.1.0" @@ -2687,7 +2904,7 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0: +"semver@2 || 3 || 4 || 5": version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -2695,6 +2912,7 @@ semver-greatest-satisfied-range@^1.1.0: send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== dependencies: debug "2.6.9" depd "~1.1.2" @@ -2713,6 +2931,7 @@ send@0.16.2: serve-index@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= dependencies: accepts "~1.3.4" batch "0.6.1" @@ -2725,6 +2944,7 @@ serve-index@1.9.1: serve-static@1.13.2: version "1.13.2" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" @@ -2734,8 +2954,9 @@ serve-static@1.13.2: server-destroy@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" + integrity sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0= -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -2753,11 +2974,12 @@ set-value@^2.0.0, set-value@^2.0.1: setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== snapdragon-node@^2.0.1: version "2.1.1" @@ -2790,12 +3012,14 @@ snapdragon@^0.8.1: use "^3.1.0" socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + version "1.1.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== socket.io-client@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" @@ -2813,45 +3037,44 @@ socket.io-client@2.1.1: to-array "0.1.4" socket.io-client@^2.0.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.2.0.tgz#84e73ee3c43d5020ccc1a258faeeb9aec2723af7" - integrity sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.1.tgz#91a4038ef4d03c19967bb3c646fec6e0eaa78cff" + integrity sha512-YXmXn3pA8abPOY//JtYxou95Ihvzmg8U6kQyolArkIyLd0pgVhrfor/iMsox8cn07WCOOvvuJ6XKegzIucPutQ== dependencies: backo2 "1.0.2" - base64-arraybuffer "0.1.5" component-bind "1.0.0" - component-emitter "1.2.1" + component-emitter "~1.3.0" debug "~3.1.0" - engine.io-client "~3.3.1" + engine.io-client "~3.4.0" has-binary2 "~1.0.2" - has-cors "1.1.0" indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" + parseqs "0.0.6" + parseuri "0.0.6" socket.io-parser "~3.3.0" to-array "0.1.4" socket.io-parser@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== dependencies: component-emitter "1.2.1" debug "~3.1.0" isarray "2.0.1" socket.io-parser@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" - integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== + version "3.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.1.tgz#f07d9c8cb3fb92633aa93e76d98fd3a334623199" + integrity sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ== dependencies: - component-emitter "1.2.1" + component-emitter "~1.3.0" debug "~3.1.0" isarray "2.0.1" socket.io@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== dependencies: debug "~3.1.0" engine.io "~3.2.0" @@ -2870,11 +3093,11 @@ source-map-resolve@^0.3.0: urix "~0.1.0" source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: - atob "^2.1.1" + atob "^2.1.2" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" @@ -2898,6 +3121,7 @@ source-map@^0.1.38: source-map@^0.5.1, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" @@ -2910,30 +3134,30 @@ sparkles@^1.0.0: integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -2955,17 +3179,20 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2": +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== stream-exhaust@^1.0.1: version "1.0.2" @@ -2980,6 +3207,7 @@ stream-shift@^1.0.0: stream-throttle@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" + integrity sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM= dependencies: commander "^2.2.0" limiter "^1.0.5" @@ -2993,13 +3221,23 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== dependencies: + emoji-regex "^7.0.1" is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" string_decoder@^1.1.1: version "1.3.0" @@ -3022,12 +3260,19 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: - ansi-regex "^3.0.0" + ansi-regex "^5.0.0" strip-bom-string@1.X: version "1.0.0" @@ -3040,14 +3285,10 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= sver-compat@^1.5.0: version "1.5.0" @@ -3062,24 +3303,13 @@ symbol-observable@1.0.1: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= -tar@^4: - version "4.4.4" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" - dependencies: - chownr "^1.0.1" - fs-minipass "^1.2.5" - minipass "^2.3.3" - minizlib "^1.1.0" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - -tfunk@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" +tfunk@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-4.0.0.tgz#de9399feaf2060901d590b7faad80fcd5443077e" + integrity sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ== dependencies: - chalk "^1.1.1" - object-path "^0.9.0" + chalk "^1.1.3" + dlv "^1.1.3" through2-filter@^3.0.0: version "3.0.0" @@ -3134,6 +3364,7 @@ to-absolute-glob@^2.0.0: to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= to-object-path@^0.3.0: version "0.3.0" @@ -3150,6 +3381,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -3167,6 +3405,11 @@ to-through@^2.0.0: dependencies: through2 "^2.0.3" +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + type@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/type/-/type-1.0.3.tgz#16f5d39f27a2d28d86e48f8981859e9d3296c179" @@ -3177,9 +3420,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -ua-parser-js@0.7.17: - version "0.7.17" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" +ua-parser-js@^0.7.18: + version "0.7.23" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b" + integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA== uglify-js@^3.0.5: version "3.4.6" @@ -3191,6 +3435,7 @@ uglify-js@^3.0.5: ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== unc-path-regex@^0.1.2: version "0.1.2" @@ -3238,10 +3483,12 @@ unique-stream@^2.0.2: universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= unset-value@^1.0.0: version "1.0.0" @@ -3252,13 +3499,14 @@ unset-value@^1.0.0: isobject "^3.0.0" upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== urix@^0.1.0, urix@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= use@^3.1.0: version "3.1.1" @@ -3268,10 +3516,12 @@ use@^3.1.0: util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= v8flags@^3.0.1: version "3.1.3" @@ -3352,6 +3602,11 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + which@^1.2.14: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -3359,17 +3614,6 @@ which@^1.2.14: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -3378,6 +3622,24 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -3386,6 +3648,7 @@ wrappy@1: ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== dependencies: async-limiter "~1.0.0" safe-buffer "~5.1.0" @@ -3401,6 +3664,7 @@ ws@~6.1.0: xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" @@ -3412,15 +3676,26 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" +y18n@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== -yargs-parser@^4.1.0, yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" +yargs-parser@^13.1.1: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: - camelcase "^3.0.0" + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^5.0.0: version "5.0.0" @@ -3429,42 +3704,38 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs@6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" +yargs@13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^4.1.0" - -yargs@6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.1" + +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" yargs@^7.1.0: version "7.1.0" @@ -3488,3 +3759,4 @@ yargs@^7.1.0: yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= From a8e4f9f3812cb48a3c830493d1b35d7cdc141160 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Dec 2020 00:42:11 +0000 Subject: [PATCH 207/226] Bump ini from 1.3.5 to 1.3.8 Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8. - [Release notes](https://github.com/isaacs/ini/releases) - [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7f2140d..d519504 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1700,9 +1700,9 @@ inherits@2.0.3: integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== interpret@^1.1.0: version "1.2.0" From 318ec582f6ef34fa574e65e9243baaa11a3047cf Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 30 Dec 2020 21:30:00 -0500 Subject: [PATCH 208/226] replace gulp by esbuild --- build.js | 16 + dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 8 +- dist/material-datetimepicker.min.css | 2 +- gulpfile.js | 48 - package.json | 10 +- yarn.lock | 2388 +---------------- 7 files changed, 54 insertions(+), 2420 deletions(-) create mode 100644 build.js delete mode 100644 gulpfile.js diff --git a/build.js b/build.js new file mode 100644 index 0000000..1f572c9 --- /dev/null +++ b/build.js @@ -0,0 +1,16 @@ +var esbuild = require('esbuild'); + +esbuild.build({ + entryPoints: ['./js/angular-material-datetimepicker.js'], + minify: true, + outdir: 'dist', + sourcemap: true, + outExtension: { '.js': '.min.js' }, +}).catch(function(err) {process.exit(1);}); + +esbuild.build({ + entryPoints: ['./css/material-datetimepicker.css'], + minify: true, + outdir: 'dist', + outExtension: { '.css': '.min.css' }, +}).catch(function(err) {process.exit(1);}); diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 56622d2..ef5fea2 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -!function(){"use strict";function e(f){var e="ngMaterialDatePicker",a={DATE:0,HOUR:1,MINUTE:2},$=function(e,t){return e=angular.element(e),"getComputedStyle"in window?window.getComputedStyle(e[0])[t]:e.css(t)},D='
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
';angular.module(e,["ngMaterial"]).factory("mdcDefaultParams",function(){var a={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:D,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(e){if(e)for(var t in e)a.hasOwnProperty(t)&&e.hasOwnProperty(t)&&(a[t]=e[t]);return a}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$parse",function(u,m,p,h){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(n,r,s,c){var o=!1;n.format||(n.date&&n.time&&n.seconds?n.format="YYYY-MM-DD HH:mm:ss":n.date&&n.time?n.format="YYYY-MM-DD HH:mm":n.date?n.format="YYYY-MM-DD":n.format="HH:mm");var d,l=null;if(void 0!==n.showTodaysDate&&"false"!==n.showTodaysDate&&(l=f()),angular.isString(n.currentDate)&&""!==n.currentDate&&(n.currentDate=f(n.currentDate,n.format)),c){var e={"*":"$inherit",debounce:500};1===angular.version.major&&5',i="";(void 0===n.showClear||n.showClear)&&(i="'),r.after(p(a+i)(n)),n.openCalendarDiag=function(e){t(e)},n.clear=function(){c.$setViewValue(null),n.currentDate=null,c.$render(),m(function(){n.ngChange(),r[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){return{show:function(e){var t=n.defer();void 0!==e.showTodaysDate&&"false"!==e.showTodaysDate&&(e.showTodaysDate=f());var a={controller:g,controllerAs:"picker",locals:{options:e},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:e.clickOutsideToClose||!1,disableParentScroll:e.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:void 0===e.hasBackdrop||e.hasBackdrop,targetEvent:e.targetEvent,openFrom:e.openFrom,closeTo:e.closeTo};return e.templateUrl?a.templateUrl=e.templateUrl:a.template=D,i.show(a).then(function(e){t.resolve(e&&!e._isUTC?e.toDate():e)},function(){t.reject()}),t.promise}}}]);var g=function(e,t){this.currentView=a.DATE,this._dialog=e,this._attachedEvents=[],this.VIEWS=a,this.params=angular.copy(t()),this.meridien="AM"};return g.$inject=["$mdDialog","mdcDefaultParams"],g.prototype={$onInit:function(){this.params=angular.extend(this.params,this.options),this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var e=this.params.minuteSteps;(e<1||59=parseInt(n.format("X"))}return i},isBeforeMaxDate:function(e,t,a){var i=!0;if(void 0!==this.maxDate&&null!==this.maxDate){var n=f(this.maxDate),r=f(e);t||a||(n.hour(0),n.minute(0),r.hour(0),r.minute(0)),n.second(0),r.second(0),n.millisecond(0),r.millisecond(0),a||(r.minute(0),n.minute(0)),i=parseInt(r.format("X"))<=parseInt(n.format("X"))}return i},isInDisableDates:function(e){var t=e.format("MMMM Do YYYY");return!(-1
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(s){var r=function(e,t){var a=angular.element(e[0].querySelector("tbody")),n=t.cal,i=t.month,r=[];i.days.forEach(function(e,i){r.push(""),e.forEach(function(e,t){if(r.push(""),e)if(n.isInRange(e)){var a="month['days']["+i+"]["+t+"]";r.push(''),r.push(e.format("D")),r.push("")}else r.push(''),r.push(e.format("D")),r.push("");r.push("")}),r.push("")}),a.html(r.join("")),s(a)(t)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,i,e,n){a.cal=n,a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a),a.$watch(function(){return a.idx},function(e,t){e!=t&&(a.month=n.getItemAtIndex(parseInt(a.idx)),r(i,a))})}}}]),angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(e,t){t.on("click",function(e){e.preventDefault()})}}}),angular.module(e).directive("mdcDatetimePickerClock",["$timeout",function(o){return{restrict:"E",template:'',link:function(S,V,O){var E="minutes"===O.mode,N="seconds"===O.mode,Y=S.picker,P=document.querySelector("md-dialog.dtp"),c="ontouchstart"in window,e={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},t=function(e){e.preventDefault();var t=e.currentTarget.closest("div"),a=t.getClientRects()[0];c&&(e=e.changedTouches[0]);var i=t.offsetWidth/2-(e.pageX-a.left),n=e.pageY-a.top-t.offsetHeight/2,r=Math.sqrt(Math.pow(i,2)+Math.pow(n,2)),s=Math.round(Math.atan2(i,n)*(180/Math.PI));o(function(){!function(e,t){var a=0;if(0!==(e=360<=e?0:e)){var i=E||N?60:12;a=Math.round(i/360*e)}if(E){var n=Y.params.minuteSteps;(n<1||59
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}} `;angular.module(N,["ngMaterial"]).factory("mdcDefaultParams",function(){var i={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:H,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(n){if(n)for(var a in n)i.hasOwnProperty(a)&&n.hasOwnProperty(a)&&(i[a]=n[a]);return i}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$parse",function(i,n,a,r){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(t,s,f,e){var d=!1;t.format||(t.date&&t.time&&t.seconds?t.format="YYYY-MM-DD HH:mm:ss":t.date&&t.time?t.format="YYYY-MM-DD HH:mm":t.date?t.format="YYYY-MM-DD":t.format="HH:mm");var S=null;t.showTodaysDate!==void 0&&t.showTodaysDate!=="false"&&(S=o()),angular.isString(t.currentDate)&&t.currentDate!==""&&(t.currentDate=o(t.currentDate,t.format));var c;if(e){var u={"*":"$inherit",debounce:500};angular.version.major===1&&angular.version.minor>5?(e.$options=e.$options.createChild(u),e.$options.getOption("timezone")&&(c=e.$options.getOption("timezone"))):(t.ngModelOptions&&t.ngModelOptions.timezone&&(u.timezone=t.ngModelOptions.timezone),e.$options=u,e.$options.timezone&&(c=e.$options.timezone)),(c==="utc"||c==="UTC")&&(c=0),e.$formatters.push(function(D){if(typeof D=="undefined")return;var p=o(D);return p.isValid()?p.format(t.format):""}),e.$parsers.push(function(D){if(typeof D=="undefined")return;var p=o(D,t.format);return c!==void 0&&p.utcOffset(c,p._tzm===void 0),t.minDate&&e.$setValidity("min",!p.isBefore(t.minDate)),t.maxDate&&e.$setValidity("max",!p.isAfter(t.maxDate)),e.$setValidity("format",o(D,t.format,!0).isValid()),p.isValid()?p._isUTC?p:p.toDate():""})}function v(D){if(D.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),d)return;d=!0;var p={};for(var T in f)t.hasOwnProperty(T)&&!angular.isUndefined(t[T])&&(p[T]=t[T]);p.currentDate=t.currentDate,p.showTodaysDate=S;var l={controller:C,controllerAs:"picker",locals:{options:p},openFrom:s,closeTo:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:p.clickOutsideToClose||!1,disableParentScroll:p.disableParentScroll||!1,hasBackdrop:p.hasBackdrop===void 0?!0:p.hasBackdrop,skipHide:!0,multiple:!0};p.templateUrl?l.templateUrl=p.templateUrl:l.template=H,i.show(l).then(function(m){c!==void 0&&m.utcOffset(c,!0),t.currentDate=m&&!m._isUTC?m.toDate():m,e.$setValidity("format",!0),e.$setViewValue(t.currentDate),e.$setDirty(),d=!1,o(t.currentDate).isSame(p.currentDate)||n(t.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}if(t.editInput||(t.showIcon?s.on("click",v):s.on("focus",v)),t.showIcon){s.addClass("dtp-no-msclear dtp-input");var b='',y="";(t.showClear===void 0||t.showClear)&&(y="'),s.after(a(b+y)(t)),t.openCalendarDiag=function(D){v(D)},t.clear=function(){e.$setViewValue(null),t.currentDate=null,e.$render(),n(function(){t.ngChange(),s[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){var a={show:function(r){var t=n.defer();r.showTodaysDate!==void 0&&r.showTodaysDate!=="false"&&(r.showTodaysDate=o());var s={controller:C,controllerAs:"picker",locals:{options:r},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:r.clickOutsideToClose||!1,disableParentScroll:r.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:r.hasBackdrop===void 0?!0:r.hasBackdrop,targetEvent:r.targetEvent,openFrom:r.openFrom,closeTo:r.closeTo};return r.templateUrl?s.templateUrl=r.templateUrl:s.template=H,i.show(s).then(function(f){t.resolve(f&&!f._isUTC?f.toDate():f)},function(){t.reject()}),t.promise}};return a}]);var C=function(i,n){this.currentView=M.DATE,this._dialog=i,this._attachedEvents=[],this.VIEWS=M,this.params=angular.copy(n()),this.meridien="AM"};return C.$inject=["$mdDialog","mdcDefaultParams"],C.prototype={$onInit:function(){this.params=angular.extend(this.params,this.options),this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var i=this.params.minuteSteps;(i<1||i>59)&&(i=1);var n=this.currentDate||o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;return this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,o(n).minutes(a).seconds(r).millisecond(0)},initDates:function(){var i=this,n=function(a,r){var t=null;if(angular.isDefined(a)&&a!==null&&a!=="")if(angular.isString(a))typeof i.params.format!="undefined"&&i.params.format!==null?t=o(a,i.params.format).locale(i.params.lang):t=o(a).locale(i.params.lang);else if(typeof a=="number")t=o(a).locale(i.params.lang);else if(angular.isDate(a)){var s=a.getTime();t=o(s,"x").locale(i.params.lang)}else o.isMoment(a)&&(a.isValid()?t=a:t=r);else t=r;return t};this.currentDate=n(this.params.currentDate,o()),this.currentDate=this.currentNearestMinute(),this.minDate=n(this.params.minDate),this.maxDate=n(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(a){return o(a).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=M.DATE},initHours:function(){this.currentView=M.HOUR},initMinutes:function(){this.currentView=M.MINUTE},initSeconds:function(){this.currentView=M.SECOND},isAfterMinDate:function(i,n,a){var r=!0;if(typeof this.minDate!="undefined"&&this.minDate!==null){var t=o(this.minDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))>=parseInt(t.format("X"))}return r},isBeforeMaxDate:function(i,n,a){var r=!0;if(typeof this.maxDate!="undefined"&&this.maxDate!==null){var t=o(this.maxDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))<=parseInt(t.format("X"))}return r},isInDisableDates:function(i){var n=i.format("MMMM Do YYYY");return!(this.disableDates.indexOf(n)>-1)},isWeekDay:function(i){return this.weekDays?i.isoWeekday()<=5:!0},selectDate:function(i){i&&(this.currentDate=o(i),this.isAfterMinDate(this.currentDate,!0,!0)||(this.currentDate=o(this.minDate)),this.isBeforeMaxDate(this.currentDate,!0,!0)||(this.currentDate=o(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=o(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return this.meridien==="PM"},incrementMonth:function(i){(i===1&&this.isNextMonthVisible()||i===-1&&this.isPreviousMonthVisible())&&this.selectDate(this.currentDate.add(i,"month"))},incrementYear:function(i){(i===1&&this.isNextYearVisible()||i===-1&&this.isPreviousYearVisible())&&this.selectDate(this.currentDate.add(i,"year"))},openMenu:function(i,n){i.open(n)},monthsAvailable:function(){for(var i=[],n=o(this.currentDate),a=0;a<12;a++){var r=n.month(a);this.isAfterMinDate(r.endOf("month"))&&this.isBeforeMaxDate(r.startOf("month"))&&i.push(r.format("MMMM"))}return i},selectMonth:function(i){this.selectDate(this.currentDate.month(i))},yearsAvailable:function(){var i,n,a,r,t=[],s=this.currentDate.year();typeof this.minDate!="undefined"&&this.minDate!==null&&(i=o(this.minDate).year()),typeof this.maxDate!="undefined"&&this.maxDate!==null&&(n=o(this.maxDate).year()),n&&i?(a=n-i,r=i):i?(a=115,r=i):n?(a=30,r=n-a):(a=60,r=s-a/2);for(var f=0;f<=a;f++)t.push(r+f);return t},selectYear:function(i){this.selectDate(this.currentDate.year(i))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(i){var n=o(this.currentDate);return this.params.shortTime?n.hour(this.convertHours(i)).minute(0).second(0):n.hour(i).minute(0).second(0),this.isAfterMinDate(n,!0,!1)&&this.isBeforeMaxDate(n,!0,!1)},isMinuteAvailable:function(i){var n=o(this.currentDate);n.minute(i).second(0);var a=this.params.minuteSteps;if(a>1&&5%a!==0){var r=n.minute(),t=a*Math.round(r/a);if(t>=60&&(t=60-a),t!==r)return!1}return this.isAfterMinDate(n,!0,!0)&&this.isBeforeMaxDate(n,!0,!0)},isSecondAvailable:function(i){return!0},start:function(){this.currentView=M.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var i=this.params.minuteSteps,n=o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,this.selectDate(o(n).minutes(a).seconds(r).millisecond(0))},ok:function(){switch(this.currentView){case M.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case M.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case M.MINUTE:this.params.seconds===!0?this.initSeconds():this.hide(!0);break;case M.SECOND:this.hide(!0);break}},cancel:function(){if(this.params.time)switch(this.currentView){case M.DATE:this.hide();break;case M.HOUR:this.params.date?this.initDate():this.hide();break;case M.MINUTE:this.initHours();break;case M.SECOND:this.initMinutes();break}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(12)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(i){var n=i;return i<12&&this.isPM()&&(n+=12),n},hide:function(i){i?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(N).directive("mdcDatetimePickerCalendar",[function(){for(var i=1920,n=new Date().getFullYear()+30,a=(n-i+1)*12,r=[],t=0;t6&&(u=0),c.push(u.toString());if(e.week=c,!d.maxDate&&!d.minDate)e.months=r;else{var v=d.minDate?s(d.minDate):0,b=d.maxDate?s(d.maxDate)+1:a;e.months=r.slice(v,b)}e.topIndex=s(d.currentDate)-e.months[0]},angular.version.major===1&&angular.version.minor<5&&this.$onInit(),e.getItemAtIndex=function(c){var u=(c+1)%12||12,v=i+Math.floor(c/12),b=o(d.currentDate).year(v).month(u);return S(b)},f.$watch(function(){return d.currentDate?d.currentDate.format("YYYY-MM"):""},function(c,u){if(c!=u){var v=o(c,"YYYY-MM"),b=d.minDate?s(d.minDate):0,y=s(v,b);e.topIndex!=y&&(e.topIndex=y)}});var S=function(c){var u={};if(c!==null){u.name=c.format("MMMM YYYY");var v=o(c).locale(d.params.lang).startOf("month").hour(c.hour()).minute(c.minute()),b=v.format("d");u.days=[];for(var y=v.date();y<=v.daysInMonth();y++){if(y===v.date()){var D=e.week.indexOf(b.toString());if(D>0)for(var p=0;p
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(i){var n=function(a,r){var t=angular.element(a[0].querySelector("tbody")),s=r.cal,f=r.month,e=[];f.days.forEach(function(d,S){e.push(""),d.forEach(function(c,u){if(e.push(""),c)if(s.isInRange(c)){var v="month['days']["+S+"]["+u+"]";e.push(''),e.push(c.format("D")),e.push("")}else e.push(''),e.push(c.format("D")),e.push("");e.push("")}),e.push("")}),t.html(e.join("")),i(t)(r)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,r,t,s){a.cal=s,a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a),a.$watch(function(){return a.idx},function(f,e){f!=e&&(a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a))})}}}]),angular.module(N).directive("mdcDtpNoclick",function(){return{link:function(i,n){n.on("click",function(a){a.preventDefault()})}}}),angular.module(N).directive("mdcDatetimePickerClock",["$timeout",function(i){var n='';return{restrict:"E",template:n,link:function(a,r,t){var s=t.mode==="minutes",f=t.mode==="seconds",e=a.picker,d=document.querySelector("md-dialog.dtp"),S=function(l,m){var h=0;if(l=l>=360?0:l,l!==0){var g=s||f?60:12;h=Math.round(g/360*l)}if(s){var I=e.params.minuteSteps;(I<1||I>59)&&(I=1);var w=I*Math.round(h/I);if(w>=60&&(w=60-I),!a.pointAvailable({value:h}))return;e.currentDate.minute(w)}else if(f){if(h>=60&&(h=0),!a.pointAvailable({value:h}))return;e.currentDate.second(h)}else{if(h===12&&(h=0),e.params.shortTime||(e.meridien=m>84?"AM":"PM"),e.isPM()&&(h+=12),!a.pointAvailable({value:h}))return;e.currentDate.hour(h)}},c="ontouchstart"in window,u={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},v=function(l){l.preventDefault();var m=l.currentTarget.closest("div"),h=m.getClientRects()[0];c&&(l=l.changedTouches[0]);var g=m.offsetWidth/2-(l.pageX-h.left),I=l.pageY-h.top-m.offsetHeight/2,w=Math.sqrt(Math.pow(g,2)+Math.pow(I,2)),x=Math.round(Math.atan2(g,I)*(180/Math.PI));i(function(){S(x+180,w)})};r.on(u.POINTER_DOWN,function(){r.on(u.POINTER_MOVE,v)}),r.on(u.POINTER_UP,function(){r.off(u.POINTER_MOVE)}),a.$on("$destroy",function(){r.off(u.POINTER_MOVE,v)});var b=function(){var l=angular.element(r[0].querySelector(".dtp-picker-clock")),m=angular.element(d.querySelector(".dtp-picker")),h=d.querySelector(".dtp-content").offsetWidth,g=parseInt(V(m,"paddingLeft").replace("px",""))||0,I=parseInt(V(m,"paddingRight").replace("px",""))||0,w=parseInt(V(m,"paddingTop").replace("px",""))||0,x=parseInt(V(l,"marginLeft").replace("px",""))||0,K=parseInt(V(l,"marginRight").replace("px",""))||0,Y=parseInt(V(l,"marginTop").replace("px",""))||0,$=h-(x+K+g+I);l.css("width",$+"px");for(var k=$/2,U=k/1.2,W=[],A=0;A<12;++A){var ee=U*Math.sin(Math.PI*2*(A/12)),te=U*Math.cos(Math.PI*2*(A/12)),B=k+ee+g/2-(g+x),j=k-te-Y/2-(w+Y),E={left:B,top:j,value:s||f?A*5:A,style:{"margin-left":B+"px","margin-top":j+"px"}};s||f?E.display=E.value<10?"0"+E.value:E.value:e.params.shortTime?E.display=A===0?12:A:E.display=A,W.push(E)}if(a.points=W,!e.params.shortTime&&!s&&!f){for(var R=[],z=k/1.8,O=12;O<24;++O){var ae=z*Math.sin(Math.PI*2*(O/12)),ie=z*Math.cos(Math.PI*2*(O/12)),q=k+ae+g/2-(g+x),Z=k-ie-Y/2-(w+Y);R.push({left:q,top:Z,value:O,display:O,style:{"margin-left":q+"px","margin-top":Z+"px"}})}a.points24=R}a.mode=t.mode,p(),l.css("height",$+"px");var L=r[0].querySelector(".dtp-clock-center"),re=L.offsetWidth/2||7.5,ne=L.offsetHeight/2||7.5,_=k/(e.params.shortTime?1.8:2.3),X=k/1.4,F=k;angular.element(r[0].querySelector(".dtp-hour-hand")).css({left:k+x*1.5+"px",height:_+"px",marginTop:k-_-g+"px"}).addClass(!s&&!f?"on":""),angular.element(r[0].querySelector(".dtp-minute-hand")).css({left:k+x*1.5+"px",height:X+"px",marginTop:k-X-g+"px"}).addClass(s?"on":""),angular.element(r[0].querySelector(".dtp-second-hand")).css({left:k+x*1.5+"px",height:F+"px",marginTop:k-F-g+"px"}).addClass(f?"on":""),angular.element(L).css({left:k+g+x-re+"px",marginTop:k-x/2-ne+"px"}),y()},y=function(){var l=e.currentNearestMinute(),m=l.hour(),h=l.minute(),g=l.second();D(angular.element(r[0].querySelector(".dtp-hour-hand")),30*m),D(angular.element(r[0].querySelector(".dtp-minute-hand")),6*h),D(angular.element(r[0].querySelector(".dtp-second-hand")),6*g)},D=function(l,m){angular.element(l).css({WebkitTransform:"rotate("+m+"deg)","-moz-transform":"rotate("+m+"deg)","-ms-transform":"rotate("+m+"deg)",transform:"rotate("+m+"deg)"})},p=function(){var l=e.currentNearestMinute(),m=e.params.shortTime?12:24;s?a.currentValue=l.minute():f?a.currentValue=l.second():a.currentValue=l.hour()%m};a.$watch(function(){var l=e.currentNearestMinute();return l?l.format("HH:mm:ss"):""},function(){p(),y()}),a.setTime=function(l){!s&&!f?(l===a.currentValue&&!e.params.autoOk&&e.ok(),e.params.shortTime?e.currentDate.hour(e.isPM()?l+12:l):(e.currentDate.hour(l),l>=12?e.meridien="PM":e.meridien="AM"),e.params.autoOk&&e.ok()):f?(l===a.currentValue&&e.ok(),e.currentDate.second(l)):(l===a.currentValue&&!e.params.seconds&&e.ok(),e.currentDate.minute(l),e.params.seconds?e.params.autoOk&&e.ok():e.currentDate.second(0))},a.pointAvailable=function(l){return s?e.isMinuteAvailable(l.value):f?e.isSecondAvailable(l.value):e.isHourAvailable(l.value)};var T=a.$watch(function(){return r[0].querySelectorAll("div").length},function(){b(),T()})}}}]),N}var J=window&&window.process&&window.process.type;typeof define=="function"&&define.amd?define(["moment"],P):typeof module!="undefined"&&module&&module.exports&&typeof require=="function"&&!J?module.exports=P(require("moment")):P((typeof global!="undefined"?global:window).moment)})(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index d6a86a8..ab29bdd 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1 +1,7 @@ -{"version":3,"sources":["angular-material-datetimepicker.js"],"names":["ngMaterialDatePicker","moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","angular","element","window","getComputedStyle","template","module","factory","default_params","date","time","minutes","seconds","format","minDate","maxDate","currentDate","lang","navigator","userLanguage","language","weekStart","shortTime","cancelText","okText","amText","pmText","todayBtn","todayText","disableDates","weekDays","disableParentScroll","autoOk","editInput","clickOutsideToClose","minuteSteps","showIcon","showClear","templateUrl","targetEvent","openFrom","closeTo","dayOfWeekLen","hasBackdrop","params","i","hasOwnProperty","directive","$mdDialog","$timeout","$compile","$parse","restrict","require","scope","ngModelOptions","ngChange","showTodaysDate","link","attrs","ngModel","isOn","offset","dateOfTheDay","undefined","isString","*","debounce","version","major","minor","$options","createChild","getOption","timezone","$formatters","push","value","m","isValid","$parsers","utcOffset","_tzm","$setValidity","isBefore","isAfter","_isUTC","toDate","openCalendar","e","preventDefault","blur","parent","removeClass","options","isUndefined","dialogOptions","controller","PluginController","controllerAs","locals","document","body","bindToController","skipHide","multiple","show","then","v","$setViewValue","$setDirty","isSame","on","addClass","calendarButton","ngDisabled","clearButton","after","openCalendarDiag","clear","$render","focus","$q","deferred","defer","resolve","reject","promise","mdcDefaultParams","this","currentView","_dialog","_attachedEvents","VIEWS","copy","meridien","$inject","prototype","$onInit","extend","timeMode","dateMode","initDates","start","currentNearestMinute","nearestMin","Math","round","minute","second","millisecond","that","_dateParam","input","fallback","ret","isDefined","locale","isDate","x","getTime","isMoment","map","selectDate","initDate","initHours","initMinutes","initSeconds","SECOND","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","parseInt","isBeforeMaxDate","checkTime","_maxDate","isInDisableDates","dut","indexOf","isWeekDay","isoWeekday","calendarStart","isPM","incrementMonth","amount","isNextMonthVisible","isPreviousMonthVisible","add","incrementYear","isNextYearVisible","isPreviousYearVisible","openMenu","$mdMenu","ev","open","monthsAvailable","monthsArr","curMonth","month","endOf","startOf","selectMonth","yearsAvailable","len","startYear","yearsArr","year","selectYear","isHourAvailable","convertHours","isMinuteAvailable","_curmin","isSecondAvailable","today","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","MONTHS_IN_ALL","Date","getFullYear","MONTHS","currentMonthIndex","low","picker","$scope","calendar","days","length","toString","week","high","months","slice","topIndex","getItemAtIndex","index","floor","monthObj","generateMonthCalendar","$watch","val2","val1","nDate","startOfMonth","iNumDay","daysInMonth","iWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","isDateOfTheDay","buildCalendarContent","tbody","querySelector","cal","tbodyHtml","forEach","weekDay","scopeRef","html","join","idx","oldIdx","minuteMode","mode","secondMode","componentRoot","isTouchSupported","EVENTS","POINTER_DOWN","POINTER_UP","POINTER_MOVE","onMoveEvent","closestTarget","currentTarget","closest","clientRect","getClientRects","changedTouches","offsetWidth","pageX","left","y","pageY","top","offsetHeight","ray","sqrt","pow","deg","atan2","PI","val","divider","pointAvailable","setTimeDegRay","off","$on","animateHands","s","rotateElement","WebkitTransform","-moz-transform","-ms-transform","transform","setCurrentValue","nbH","currentValue","tmp","setTime","point","unWatcher","querySelectorAll","clock","pickerEl","w","pL","replace","pR","pT","mL","mR","mT","clockWidth","r","points","sin","cos","style","margin-left","margin-top","display","points24","j24","h24","left24","top24","clockCenter","centerWidth","centerHeight","_hL","_mL","_sL","height","marginTop","exec","isElectron","process","type","define","amd","exports","global"],"mappings":"CAAA,WACE,aAEA,SAASA,EAAqBC,GAC9B,IAAIC,EAAa,uBAGbC,EAAc,CAACC,KAAM,EAAGC,KAAM,EAAGC,OAAQ,GAEzCC,EAAM,SAAUC,EAAIC,GAEtB,OADAD,EAAKE,QAAQC,QAAQH,GACb,qBAAsBI,OAAUA,OAAOC,iBAAiBL,EAAG,IAAIC,GAAQD,EAAGD,IAAIE,IAGpFK,EACF,szNA4EFJ,QAAQK,OAAOb,EAAY,CAAC,eACzBc,QAAQ,mBAAoB,WAC3B,IAAIC,EAAiB,CACnBC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,SAAS,EACTC,OAAQ,aACRC,QAAS,KACTC,QAAS,KACTC,YAAa,KACbC,KAAMd,OAAOe,UAAUC,cAAgBhB,OAAOe,UAAUE,UAAY,KACpEC,UAAW,EACXC,WAAW,EACXC,WAAY,SACZC,OAAQ,KACRC,OAAQ,KACRC,OAAQ,KACRC,UAAU,EACVC,UAAW,QACXC,aAAc,GACdC,UAAU,EACVC,qBAAqB,EACrBC,QAAQ,EACRC,WAAW,EACXC,qBAAqB,EACrBC,YAAa,EACbC,UAAU,EACVC,WAAW,EACXhC,SAAUA,EACViC,YAAa,GACbC,YAAa,KACbC,SAAU,KACVC,QAAS,KACTC,aAAc,EACdC,aAAa,GAGf,OAAO,SAAUC,GACf,GAAIA,EACF,IAAK,IAAIC,KAAKD,EACRpC,EAAesC,eAAeD,IAAMD,EAAOE,eAAeD,KAAIrC,EAAeqC,GAAKD,EAAOC,IAGjG,OAAOrC,KAGVuC,UAAU,oBAAqB,CAAC,YAAa,WAAY,WAAY,SACpE,SAAUC,EAAWC,EAAUC,EAAUC,GACvC,MAAO,CACLC,SAAU,IACVC,QAAS,UACTC,MAAO,CACLtC,YAAa,WACbuC,eAAgB,IAChBC,SAAU,IACV9C,KAAM,IACND,KAAM,IACNE,QAAS,IACTC,QAAS,IACTE,QAAS,IACTC,QAAS,IACTc,aAAc,IACdC,SAAU,IACVR,UAAW,IACXD,UAAW,IACXR,OAAQ,IACRU,WAAY,IACZC,OAAQ,IACRP,KAAM,IACNQ,OAAQ,IACRC,OAAQ,IACR+B,eAAgB,IAChB9B,SAAU,IACVC,UAAW,IACXG,oBAAqB,IACrBC,OAAQ,IACRC,UAAW,IACXC,oBAAqB,IACrBC,YAAa,IACbC,SAAU,IACVC,UAAW,IACXC,YAAa,IACbI,aAAc,IACdC,YAAa,KAEfe,KAAM,SAAUJ,EAAOpD,EAASyD,EAAOC,GACrC,IAAIC,GAAO,EACNP,EAAMzC,SACLyC,EAAM7C,MAAQ6C,EAAM5C,MAAQ4C,EAAM1C,QAAS0C,EAAMzC,OAAS,sBACrDyC,EAAM7C,MAAQ6C,EAAM5C,KAAM4C,EAAMzC,OAAS,mBACzCyC,EAAM7C,KAAM6C,EAAMzC,OAAS,aAC/ByC,EAAMzC,OAAS,SAGtB,IASIiD,EATAC,EAAe,KAUnB,QAT6BC,IAAzBV,EAAMG,gBAAyD,UAAzBH,EAAMG,iBAC9CM,EAAevE,KAGbS,QAAQgE,SAASX,EAAMtC,cAAsC,KAAtBsC,EAAMtC,cAC/CsC,EAAMtC,YAAcxB,EAAO8D,EAAMtC,YAAasC,EAAMzC,SAIlD+C,EAAS,CACX,IAAIL,EAAiB,CAACW,IAAK,WAAYC,SAAU,KACnB,IAA1BlE,QAAQmE,QAAQC,OAAuC,EAAxBpE,QAAQmE,QAAQE,OACjDV,EAAQW,SAAWX,EAAQW,SAASC,YAAYjB,GAC5CK,EAAQW,SAASE,UAAU,cAAaX,EAASF,EAAQW,SAASE,UAAU,eAE5EnB,EAAMC,gBAAkBD,EAAMC,eAAemB,WAAUnB,EAAemB,SAAWpB,EAAMC,eAAemB,UAC1Gd,EAAQW,SAAWhB,EACfK,EAAQW,SAASG,WAAUZ,EAASF,EAAQW,SAASG,WAE9C,QAATZ,GAA2B,QAATA,IAAgBA,EAAS,GAE/CF,EAAQe,YAAYC,KAAK,SAAUC,GACjC,QAAqB,IAAVA,EAAX,CACA,IAAIC,EAAItF,EAAOqF,GACf,OAAOC,EAAEC,UAAYD,EAAEjE,OAAOyC,EAAMzC,QAAU,MAGhD+C,EAAQoB,SAASJ,KAAK,SAAUC,GAC9B,QAAqB,IAAVA,EAAX,CAEA,IAAIC,EAAItF,EAAOqF,EAAOvB,EAAMzC,QAM5B,YALemD,IAAXF,GAAsBgB,EAAEG,UAAUnB,OAAmBE,IAAXc,EAAEI,MAC5C5B,EAAMxC,SAAS8C,EAAQuB,aAAa,OAAQL,EAAEM,SAAS9B,EAAMxC,UAC7DwC,EAAMvC,SAAS6C,EAAQuB,aAAa,OAAQL,EAAEO,QAAQ/B,EAAMvC,UAChE6C,EAAQuB,aAAa,SAAU3F,EAAOqF,EAAOvB,EAAMzC,QAAQ,GAAMkE,WAE1DD,EAAEC,UAAaD,EAAEQ,OAASR,EAAIA,EAAES,SAAY,MAKvD,SAASC,EAAaC,GAIpB,GAHAA,EAAEC,iBACFxF,EAAQyF,OACRzF,EAAQ0F,SAASC,YAAY,qBACzBhC,EAAJ,CAGAA,GAAO,EACP,IAAIiC,EAAU,GACd,IAAK,IAAIjD,KAAKc,EACRL,EAAMR,eAAeD,KAAO5C,QAAQ8F,YAAYzC,EAAMT,MACxDiD,EAAQjD,GAAKS,EAAMT,IAGvBiD,EAAQ9E,YAAcsC,EAAMtC,YAC5B8E,EAAQrC,eAAiBM,EAEzB,IAAIiC,EAAgB,CAClBC,WAAYC,EACZC,aAAc,SACdC,OAAQ,CAACN,QAASA,GAClBtD,SAAUtC,EACVuC,QAASvC,EACT0F,OAAQ3F,QAAQC,QAAQmG,SAASC,MACjCC,kBAAkB,EAClBrE,oBAAqB4D,EAAQ5D,sBAAuB,EACpDH,oBAAqB+D,EAAQ/D,sBAAuB,EACpDY,iBAAqCqB,IAAxB8B,EAAQnD,aAAmCmD,EAAQnD,YAChE6D,UAAU,EACVC,UAAU,GAGPX,EAAQxD,YACR0D,EAAc1D,YAAcwD,EAAQxD,YADf0D,EAAc3F,SAAWA,EAGnD2C,EAAU0D,KAAKV,GAAeW,KAAK,SAASC,QAE3B5C,IAAXF,GAAsB8C,EAAE3B,UAAUnB,GAAQ,GAE9CR,EAAMtC,YAAc4F,IAAMA,EAAEtB,OAASsB,EAAErB,SAAWqB,EAClDhD,EAAQuB,aAAa,UAAU,GAC/BvB,EAAQiD,cAAcvD,EAAMtC,aAC5B4C,EAAQkD,YACRjD,GAAO,EAEFrE,EAAO8D,EAAMtC,aAAa+F,OAAOjB,EAAQ9E,cAC5CiC,EAASK,EAAME,SAAU,GAG3BtD,EAAQ0F,SAASC,YAAY,qBAC5B,WACDhC,GAAO,EACP3D,EAAQ0F,SAASC,YAAY,uBAYjC,GARKvC,EAAMrB,YACLqB,EAAMlB,SACRlC,EAAQ8G,GAAG,QAASxB,GAEpBtF,EAAQ8G,GAAG,QAASxB,IAIpBlC,EAAMlB,SAAU,CAClBlC,EAAQ+G,SAAS,4BACjB,IAAIC,EACJ,qGAEG/D,EAAOQ,EAAMwD,WAAbhE,GAA6B,YAAc,IAC5C,sFACoDG,EAAM7C,KArSvD,qVADC,8fAsSyF,2BAC/E2G,EAAc,SAENpD,IAApBV,EAAMjB,WAA2BiB,EAAMjB,aACzC+E,EAAc,eACbjE,EAAOQ,EAAMwD,WAAbhE,GAA6B,YAAc,IAC5C,qHAGFjD,EAAQmH,MAAMnE,EAASgE,EAAiBE,EAA1BlE,CAAuCI,IAErDA,EAAMgE,iBAAmB,SAAS7B,GAChCD,EAAaC,IAGfnC,EAAMiE,MAAQ,WACZ3D,EAAQiD,cAAc,MACtBvD,EAAMtC,YAAc,KACpB4C,EAAQ4D,UACRvE,EAAS,WACPK,EAAME,WACNtD,EAAQ,GAAGuH,SACV,GAAG,UAOjBlH,QAAQ,oBAAqB,CAAC,YAAa,KAAM,SAAUyC,EAAW0E,GAmCrE,MAlCc,CACZhB,KAAM,SAAUZ,GACd,IAAI6B,EAAWD,EAAGE,aAEa5D,IAA3B8B,EAAQrC,gBAA2D,UAA3BqC,EAAQrC,iBAA4BqC,EAAQrC,eAAiBjE,KAEzG,IAAIwG,EAAgB,CAChBC,WAAYC,EACZC,aAAc,SACdC,OAAQ,CAACN,QAASA,GAClBF,OAAQ3F,QAAQC,QAAQmG,SAASC,MACjCC,kBAAkB,EAClBrE,oBAAqB4D,EAAQ5D,sBAAuB,EACpDH,oBAAqB+D,EAAQ/D,sBAAuB,EACpDyE,UAAU,EACVC,UAAU,EACV9D,iBAAqCqB,IAAxB8B,EAAQnD,aAAmCmD,EAAQnD,YAChEJ,YAAauD,EAAQvD,YACrBC,SAAUsD,EAAQtD,SAClBC,QAASqD,EAAQrD,SAWrB,OARKqD,EAAQxD,YACR0D,EAAc1D,YAAcwD,EAAQxD,YADf0D,EAAc3F,SAAWA,EAGnD2C,EAAU0D,KAAKV,GAAeW,KAAK,SAAUC,GAC3Ce,EAASE,QAAQjB,IAAMA,EAAEtB,OAASsB,EAAErB,SAAWqB,IAC9C,WACDe,EAASG,WAEJH,EAASI,aAQxB,IAAI7B,EAAmB,SAAUlD,EAAWgF,GAC1CC,KAAKC,YAAcxI,EAAYC,KAC/BsI,KAAKE,QAAUnF,EAEfiF,KAAKG,gBAAkB,GACvBH,KAAKI,MAAQ3I,EACbuI,KAAKrF,OAAS3C,QAAQqI,KAAKN,KAC3BC,KAAKM,SAAW,MA+4BhB,OA54BFrC,EAAiBsC,QAAU,CAAC,YAAa,oBACzCtC,EAAiBuC,UAAY,CAC3BC,QAAS,WACPT,KAAKrF,OAAS3C,QAAQ0I,OAAOV,KAAKrF,OAAQqF,KAAKnC,SAC/CmC,KAAKW,SAAWX,KAAKrF,OAAOlC,OAASuH,KAAKrF,OAAOnC,KACjDwH,KAAKY,SAAWZ,KAAKrF,OAAOnC,KAC5BwH,KAAKa,YACLb,KAAKc,SAEPC,qBAAsB,WACpB,IAAIC,EAAahB,KAAKrF,OAAOT,aACzB8G,EAAa,GAAkB,GAAbA,KAAiBA,EAAa,GAEpD,IAIIrI,EAJAH,EAAOwH,KAAKjH,aAAexB,IAC3BmB,EAAWsI,EAAaC,KAAKC,MAAM1I,EAAK2I,SAAWH,GASvD,OARe,IAAXtI,IAAeA,EAAU,GAAKsI,GAG9BhB,KAAKrF,OAAOhC,QAEC,KADfA,EAAUH,EAAK4I,YACIzI,EAAU,IACxBA,EAAU,EAEVpB,EAAOiB,GAAME,QAAQA,GAASC,QAAQA,GAAS0I,YAAY,IAEpER,UAAW,WACT,IAAIS,EAAOtB,KACPuB,EAAa,SAAUC,EAAOC,GAChC,IAAIC,EAAM,KACV,GAAI1J,QAAQ2J,UAAUH,IAAoB,OAAVA,GAA4B,KAAVA,EAChD,GAAIxJ,QAAQgE,SAASwF,GAEjBE,OADiC,IAAxBJ,EAAK3G,OAAa,QAA4C,OAAvB2G,EAAK3G,OAAO/B,OACtDrB,EAAOiK,EAAOF,EAAK3G,OAAO/B,QAAQgJ,OAAON,EAAK3G,OAAO3B,MAGrDzB,EAAOiK,GAAOI,OAAON,EAAK3G,OAAO3B,WAEpC,GAAqB,iBAAVwI,EAChBE,EAAMnK,EAAOiK,GAAOI,OAAON,EAAK3G,OAAO3B,WAEvC,GAAIhB,QAAQ6J,OAAOL,GAAQ,CACzB,IAAIM,EAAIN,EAAMO,UACdL,EAAMnK,EAAOuK,EAAG,KAAKF,OAAON,EAAK3G,OAAO3B,WAC/BzB,EAAOyK,SAASR,KACJE,EAAjBF,EAAM1E,UAAiB0E,EAChBC,QAIfC,EAAMD,EAER,OAAOC,GAGT1B,KAAKjH,YAAcwI,EAAWvB,KAAKrF,OAAO5B,YAAaxB,KACvDyI,KAAKjH,YAAciH,KAAKe,uBACxBf,KAAKnH,QAAU0I,EAAWvB,KAAKrF,OAAO9B,SACtCmH,KAAKlH,QAAUyI,EAAWvB,KAAKrF,OAAO7B,SACtCkH,KAAKpG,aAAeoG,KAAKrF,OAAOf,aAAaqI,IAAI,SAAUH,GACzD,OAAOvK,EAAOuK,GAAGlJ,OAAO,kBAE1BoH,KAAKkC,WAAWlC,KAAKjH,aACrBiH,KAAKnG,SAAWmG,KAAKrF,OAAOd,UAE9BsI,SAAU,WACRnC,KAAKC,YAAcxI,EAAYC,MAEjC0K,UAAW,WACTpC,KAAKC,YAAcxI,EAAYE,MAEjC0K,YAAa,WACXrC,KAAKC,YAAcxI,EAAYG,QAEjC0K,YAAa,WACXtC,KAAKC,YAAcxI,EAAY8K,QAEjCC,eAAgB,SAAUhK,EAAMiK,EAAWC,GACzC,IAAIC,GAAU,EAEd,QAA6B,IAAlB3C,KAAY,SAAsC,OAAjBA,KAAKnH,QAAkB,CACjE,IAAI+J,EAAWrL,EAAOyI,KAAKnH,SACvBgK,EAAQtL,EAAOiB,GAEdiK,GAAcC,IACjBE,EAASE,KAAK,GACdF,EAASzB,OAAO,GAEhB0B,EAAMC,KAAK,GACXD,EAAM1B,OAAO,IAGfyB,EAASxB,OAAO,GAChByB,EAAMzB,OAAO,GACbwB,EAASvB,YAAY,GACrBwB,EAAMxB,YAAY,GAEbqB,IACHG,EAAM1B,OAAO,GACbyB,EAASzB,OAAO,IAKhBwB,EAAWI,SAASF,EAAMjK,OAAO,OAASmK,SAASH,EAAShK,OAAO,MAIvE,OAAO+J,GAETK,gBAAiB,SAAUxK,EAAMyK,EAAWP,GAC1C,IAAIC,GAAU,EAEd,QAA6B,IAAlB3C,KAAY,SAAsC,OAAjBA,KAAKlH,QAAkB,CACjE,IAAIoK,EAAW3L,EAAOyI,KAAKlH,SACvB+J,EAAQtL,EAAOiB,GAEdyK,GAAcP,IACjBQ,EAASJ,KAAK,GACdI,EAAS/B,OAAO,GAEhB0B,EAAMC,KAAK,GACXD,EAAM1B,OAAO,IAGf+B,EAAS9B,OAAO,GAChByB,EAAMzB,OAAO,GACb8B,EAAS7B,YAAY,GACrBwB,EAAMxB,YAAY,GAEbqB,IACHG,EAAM1B,OAAO,GACb+B,EAAS/B,OAAO,IAKhBwB,EAAWI,SAASF,EAAMjK,OAAO,OAASmK,SAASG,EAAStK,OAAO,MAIvE,OAAO+J,GAETQ,iBAAkB,SAAU3K,GAC1B,IAAI4K,EAAM5K,EAAKI,OAAO,gBACtB,SAAsC,EAAlCoH,KAAKpG,aAAayJ,QAAQD,KAKhCE,UAAW,SAAS9K,GAClB,OAAIwH,KAAKnG,UACHrB,EAAK+K,cAAgB,GAO7BrB,WAAY,SAAU1J,GAChBA,IACFwH,KAAKjH,YAAcxB,EAAOiB,GACrBwH,KAAKwC,eAAexC,KAAKjH,aAAa,GAAM,KAC/CiH,KAAKjH,YAAcxB,EAAOyI,KAAKnH,UAG5BmH,KAAKgD,gBAAgBhD,KAAKjH,aAAa,GAAM,KAChDiH,KAAKjH,YAAcxB,EAAOyI,KAAKlH,UAEjCkH,KAAKjH,YAAY6I,OAAO5B,KAAKrF,OAAO3B,MACpCgH,KAAKwD,cAAgBjM,EAAOyI,KAAKjH,aACjCiH,KAAKM,SAAsC,IAA3BN,KAAKjH,YAAY+J,OAAe,KAAO,OAG3DW,KAAM,WACJ,MAAyB,OAAlBzD,KAAKM,UAEdoD,eAAgB,SAAUC,IACR,IAAXA,GAAgB3D,KAAK4D,uBAAsC,IAAZD,GAAiB3D,KAAK6D,2BACxE7D,KAAKkC,WAAWlC,KAAKjH,YAAY+K,IAAIH,EAAQ,WAGjDI,cAAe,SAAUJ,IACP,IAAXA,GAAgB3D,KAAKgE,sBAAqC,IAAZL,GAAiB3D,KAAKiE,0BACvEjE,KAAKkC,WAAWlC,KAAKjH,YAAY+K,IAAIH,EAAQ,UAGjDO,SAAU,SAAUC,EAASC,GAC3BD,EAAQE,KAAKD,IAEfE,gBAAiB,WAGf,IAFA,IAAIC,EAAY,GAAI1B,EAAQtL,EAAOyI,KAAKjH,aAE/B8D,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAI2H,EAAW3B,EAAM4B,MAAM5H,GACvBmD,KAAKwC,eAAegC,EAASE,MAAM,WAAa1E,KAAKgD,gBAAgBwB,EAASG,QAAQ,WACxFJ,EAAU5H,KAAK6H,EAAS5L,OAAO,SAGnC,OAAO2L,GAETK,YAAa,SAAUH,GACrBzE,KAAKkC,WAAWlC,KAAKjH,YAAY0L,MAAMA,KAEzCI,eAAgB,WACd,IAAIjC,EAAUM,EAAU4B,EAAKC,EAAWC,EAAW,GACnDnC,EAAQ7C,KAAKjH,YAAYkM,YAEI,IAAlBjF,KAAY,SAAsC,OAAjBA,KAAKnH,UAC/C+J,EAAWrL,EAAOyI,KAAKnH,SAASoM,aAEL,IAAlBjF,KAAY,SAAsC,OAAjBA,KAAKlH,UAC/CoK,EAAW3L,EAAOyI,KAAKlH,SAASmM,QAG9B/B,GAAYN,GACdkC,EAAM5B,EAAWN,EACjBmC,EAAYnC,GACHA,GACTkC,EAAM,IACNC,EAAYnC,GAGZmC,EAFS7B,EAEGA,GADZ4B,EAAM,IAIMjC,GADZiC,EAAM,IACkB,EAG1B,IAAK,IAAIlK,EAAE,EAAGA,GAAKkK,EAAKlK,IACtBoK,EAASrI,KAAKoI,EAAUnK,GAE1B,OAAOoK,GAETE,WAAY,SAAUD,GACpBjF,KAAKkC,WAAWlC,KAAKjH,YAAYkM,KAAKA,KAExCpB,uBAAwB,WACtB,OAAO7D,KAAKwD,eAAiBxD,KAAKwC,eAAejL,EAAOyI,KAAKwD,eAAemB,QAAQ,UAAU,GAAO,IAEvGf,mBAAoB,WAClB,OAAO5D,KAAKwD,eAAiBxD,KAAKgD,gBAAgBzL,EAAOyI,KAAKwD,eAAekB,MAAM,UAAU,GAAO,IAEtGT,sBAAuB,WACrB,OAAOjE,KAAKwD,eAAiBxD,KAAKwC,eAAejL,EAAOyI,KAAKwD,eAAemB,QAAQ,SAAS,GAAO,IAEtGX,kBAAmB,WACjB,OAAOhE,KAAKwD,eAAiBxD,KAAKgD,gBAAgBzL,EAAOyI,KAAKwD,eAAekB,MAAM,SAAS,GAAO,IAErGS,gBAAiB,SAAUrC,GACzB,IAAID,EAAQtL,EAAOyI,KAAKjH,aAMxB,OALIiH,KAAKrF,OAAOtB,UACdwJ,EAAMC,KAAK9C,KAAKoF,aAAatC,IAAO3B,OAAO,GAAGC,OAAO,GAErDyB,EAAMC,KAAKA,GAAM3B,OAAO,GAAGC,OAAO,GAE7BpB,KAAKwC,eAAeK,GAAO,GAAM,IAAU7C,KAAKgD,gBAAgBH,GAAO,GAAM,IAEtFwC,kBAAmB,SAAUlE,GAC3B,IAAI0B,EAAQtL,EAAOyI,KAAKjH,aACxB8J,EAAM1B,OAAOA,GAAQC,OAAO,GAE5B,IAAIJ,EAAahB,KAAKrF,OAAOT,YAC7B,GAAiB,EAAb8G,GAAkB,EAAIA,GAAe,EAAE,CACzC,IAAIsE,EAAUzC,EAAM1B,SAChBzI,EAAWsI,EAAaC,KAAKC,MAAMoE,EAAUtE,GAEjD,GADe,IAAXtI,IAAeA,EAAU,GAAKsI,GAC9BtI,IAAY4M,EAAS,OAAO,EAGlC,OAAOtF,KAAKwC,eAAeK,GAAO,GAAM,IAAS7C,KAAKgD,gBAAgBH,GAAO,GAAM,IAErF0C,kBAAmB,SAAUnE,GAC3B,OAAO,GAETN,MAAO,WACLd,KAAKC,YAAcxI,EAAYC,KAC3BsI,KAAKrF,OAAOnC,KACdwH,KAAKmC,WAEDnC,KAAKrF,OAAOlC,MACduH,KAAKoC,aAIXoD,MAAO,WACL,IAKI7M,EALAqI,EAAahB,KAAKrF,OAAOT,YACzB1B,EAAOjB,IACPmB,EAAWsI,EAAaC,KAAKC,MAAM1I,EAAK2I,SAAWH,GACxC,IAAXtI,IAAeA,EAAU,GAAKsI,GAG9BhB,KAAKrF,OAAOhC,QAEC,KADfA,EAAUH,EAAK4I,YACIzI,EAAU,IACxBA,EAAU,EAEjBqH,KAAKkC,WAAW3K,EAAOiB,GAAME,QAAQA,GAASC,QAAQA,GAAS0I,YAAY,KAE7EoE,GAAI,WACF,OAAQzF,KAAKC,aACX,KAAKxI,EAAYC,MACU,IAArBsI,KAAKrF,OAAOlC,KACduH,KAAKoC,YAELpC,KAAK0F,MAAK,GAEZ,MACF,KAAKjO,EAAYE,MACa,IAAxBqI,KAAKrF,OAAOjC,QACdsH,KAAKqC,cAELrC,KAAK0F,MAAK,GAEZ,MACF,KAAKjO,EAAYG,QACa,IAAxBoI,KAAKrF,OAAOhC,QACdqH,KAAKsC,cAELtC,KAAK0F,MAAK,GAEZ,MACF,KAAKjO,EAAY8K,OACfvC,KAAK0F,MAAK,KAIhBC,OAAQ,WACN,GAAI3F,KAAKrF,OAAOlC,KACd,OAAQuH,KAAKC,aACX,KAAKxI,EAAYC,KACfsI,KAAK0F,OACL,MACF,KAAKjO,EAAYE,KACXqI,KAAKrF,OAAOnC,KACdwH,KAAKmC,WAGLnC,KAAK0F,OAEP,MACF,KAAKjO,EAAYG,OACfoI,KAAKoC,YACL,MACF,KAAK3K,EAAY8K,OACfvC,KAAKqC,mBAKTrC,KAAK0F,QAGTE,kBAAmB,WACjB5F,KAAKwD,cAAcqC,SAAS,EAAG,WAEjCC,iBAAkB,WAChB9F,KAAKwD,cAAcM,IAAI,EAAG,WAE5BiC,iBAAkB,WAChB/F,KAAKwD,cAAcqC,SAAS,EAAG,UAEjCG,gBAAiB,WACfhG,KAAKwD,cAAcM,IAAI,EAAG,UAE5BmC,SAAU,YACJjG,KAAKmF,gBAAgB,IAAMnF,KAAKmF,gBAAgB,OACnB,IAA3BnF,KAAKjH,YAAY+J,QACnB9C,KAAKkC,WAAWlC,KAAKjH,YAAY8M,SAAS,GAAI,UAE3C7F,KAAKmF,gBAAgBnF,KAAKjH,YAAY+J,SACzC9C,KAAKkC,WAAWlC,KAAKjH,YAAY+J,KAAK9C,KAAKnH,QAAQiK,SAEhD9C,KAAKqF,kBAAkBrF,KAAKjH,YAAYoI,WAC3CnB,KAAKkC,WAAWlC,KAAKjH,YAAYoI,OAAOnB,KAAKnH,QAAQsI,aAI3D+E,SAAU,YACJlG,KAAKmF,gBAAgB,KAAOnF,KAAKmF,gBAAgB,OAC/CnF,KAAKjH,YAAY+J,OAAS,IAC5B9C,KAAKkC,WAAWlC,KAAKjH,YAAY+K,IAAI,GAAI,UAEtC9D,KAAKmF,gBAAgBnF,KAAKjH,YAAY+J,SACzC9C,KAAKkC,WAAWlC,KAAKjH,YAAY+J,KAAK9C,KAAKlH,QAAQgK,SAEhD9C,KAAKqF,kBAAkBrF,KAAKjH,YAAYoI,WAC3CnB,KAAKkC,WAAWlC,KAAKjH,YAAYoI,OAAOnB,KAAKlH,QAAQqI,aAI3DiE,aAAc,SAAUe,GACtB,IAAIxD,EAAUwD,EAGd,OAFIA,EAAI,IAAMnG,KAAKyD,SAAQd,GAAW,IAE/BA,GAET+C,KAAM,SAAUU,GACVA,EAAOpG,KAAKE,QAAQwF,KAAK1F,KAAKjH,aAC7BiH,KAAKE,QAAQyF,WAItB3N,QAAQK,OAAOb,GACZsD,UAAU,4BAA6B,CACtC,WAME,IAJA,IAEEuL,EAA4C,KADjC,IAAIC,MAAOC,cAAgB,GADzB,KAE0B,GACvCC,EAAS,GACF5L,EAAI,EAAGA,EAAIyL,EAAezL,IACjC4L,EAAO7J,KAAK/B,GAGd,IAAI6L,EAAoB,SAAUjO,EAAMkO,GAEtC,OADAA,EAAMA,GAAY,EACkB,IAA1BlO,EAAKyM,OAVF,MAU6BzM,EAAKiM,QAAU,EAAKiC,GAGhE,MAAO,CACLvL,SAAU,IACVE,MAAO,CACLsL,OAAQ,IACRnO,KAAM,KAER8F,kBAAkB,EAClBJ,aAAc,MACdF,WAAY,CAAC,SAAU,SAAU4I,GAC/B,IAAqBD,EAAjBE,EAAW7G,KAEfA,KAAKS,QAAU,WAIb,IADA,IAAIqG,EAAO,GACFlM,GAHT+L,EAAS3G,KAAK2G,QAGMhM,OAAOvB,UAAW0N,EAAKC,OAAS,EAAGnM,IAC7C,EAAJA,IAAOA,EAAI,GACfkM,EAAKnK,KAAK/B,EAAEoM,YAId,GAFAH,EAASI,KAAOH,EAEXH,EAAO7N,SAAY6N,EAAO9N,QAExB,CACL,IAAI6N,EAAMC,EAAO9N,QAAU4N,EAAkBE,EAAO9N,SAAW,EAC3DqO,EAAOP,EAAO7N,QAAW2N,EAAkBE,EAAO7N,SAAU,EAAKuN,EACrEQ,EAASM,OAASX,EAAOY,MAAMV,EAAKQ,QAJpCL,EAASM,OAASX,EAOpBK,EAASQ,SAAWZ,EAAkBE,EAAO5N,aAAe8N,EAASM,OAAO,IAGhD,IAA1BnP,QAAQmE,QAAQC,OAAepE,QAAQmE,QAAQE,MAAQ,GAAG2D,KAAKS,UAEnEoG,EAASS,eAAiB,SAAUC,GAClC,IAAI9C,GAAU8C,EAAQ,GAAK,IAAO,GAC9BtC,EAjDK,KAiDahE,KAAKuG,MAAMD,EAAQ,IACrCE,EAAWlQ,EAAOoP,EAAO5N,aAAakM,KAAKA,GAAMR,MAAMA,GAC3D,OAAOiD,EAAsBD,IAG/Bb,EAAOe,OAAO,WACZ,OAAOhB,EAAO5N,YAAc4N,EAAO5N,YAAYH,OAAO,WAAa,IAClE,SAAUgP,EAAMC,GACjB,GAAID,GAAQC,EAAM,CAChB,IAAIC,EAAQvQ,EAAOqQ,EAAM,WACrBlB,EAAMC,EAAO9N,QAAU4N,EAAkBE,EAAO9N,SAAU,EAC1D0O,EAAQd,EAAkBqB,EAAOpB,GACjCG,EAASQ,UAAYE,IACvBV,EAASQ,SAAWE,MAK1B,IAAIG,EAAwB,SAAUlP,GACpC,IAAIiM,EAAQ,GACZ,GAAa,OAATjM,EAAe,CACjBiM,EAAM1M,KAAOS,EAAKI,OAAO,aACzB,IAAImP,EAAexQ,EAAOiB,GAAMoJ,OAAO+E,EAAOhM,OAAO3B,MAAM2L,QAAQ,SAC9D7B,KAAKtK,EAAKsK,QACV3B,OAAO3I,EAAK2I,UACb6G,EAAUD,EAAanP,OAAO,KAClC6L,EAAMqC,KAAO,GACb,IAAK,IAAIlM,EAAImN,EAAavP,OAAQoC,GAAKmN,EAAaE,cAAerN,IAAK,CACtE,GAAIA,IAAMmN,EAAavP,OAAQ,CAC7B,IAAI0P,EAAQrB,EAASI,KAAK5D,QAAQ2E,EAAQhB,YAC1C,GAAY,EAARkB,EACF,IAAK,IAAIpG,EAAI,EAAGA,EAAIoG,EAAOpG,IACzB2C,EAAMqC,KAAKnK,KAAK,GAItB8H,EAAMqC,KAAKnK,KAAKpF,EAAOwQ,GAAcnG,OAAO+E,EAAOhM,OAAO3B,MAAMR,KAAKoC,IAIvE,IADA,IAAqBuN,EAAU,GAAIC,EAASnH,KAAKoH,KAAK5D,EAAMqC,KAAKC,OAA/C,GACTuB,EAAI,EAAGA,EAAIF,EAAQE,IAC1BH,EAAQxL,KAAK8H,EAAMqC,KAAKM,MAFR,EAEckB,EAFd,GAEgCA,EAAI,KAGtD,OADA7D,EAAMqC,KAAOqB,EACN1D,IAKXoC,EAAS0B,MAAQ,SAAU3N,GACzB,OAAOrD,EAAOwL,SAASnI,GAAI,KACxBgH,OAAO+E,EAAOhM,OAAO3B,MACrBJ,OAAO,OACP4P,UAAU,EAAG7B,EAAOhM,OAAOF,eAGhCoM,EAAS4B,UAAY,SAAUjQ,GAC7B,OAAOmO,EAAOnE,eAAejL,EAAOiB,IAAO,GAAO,IAChDmO,EAAO3D,gBAAgBzL,EAAOiB,IAAO,GAAO,IAC5CmO,EAAOrD,UAAU/L,EAAOiB,KACxBmO,EAAOxD,iBAAiB5L,EAAOiB,KAGnCqO,EAAS3E,WAAa,SAAU1J,GAC9B,GAAIA,EAAM,CACR,GAAIqO,EAAS6B,cAAclQ,GACzB,OAAOmO,EAAOlB,KAEhBkB,EAAOzE,WAAW3K,EAAOiB,GAAMsK,KAAK+D,EAASrO,KAAKsK,QAAQ3B,OAAO0F,EAASrO,KAAK2I,WAC3EwF,EAAOhM,OAAOZ,QAChB4M,EAAOlB,OAKboB,EAAS6B,cAAgB,SAAU7L,GACjC,OAAOA,GAAKgK,EAASrO,KAAKA,SAAWqE,EAAErE,QAAUqO,EAASrO,KAAKiM,UAAY5H,EAAE4H,SAAWoC,EAASrO,KAAKyM,SAAWpI,EAAEoI,QAGrH4B,EAAS8B,eAAiB,SAAU9L,GAClC,IAAI2I,EAAQqB,EAASF,OAAO9I,QAAQrC,eACpC,QAAKgK,IAIE3I,GAAK2I,EAAMhN,SAAWqE,EAAErE,QAAUgN,EAAMf,UAAY5H,EAAE4H,SAAWe,EAAMP,SAAWpI,EAAEoI,WAG/F7M,SACA,wNAOL0C,UAAU,iCAAkC,CAAC,WAC5C,SAAUG,GACR,IAAI2N,EAAuB,SAAU3Q,EAASoD,GAC5C,IAAIwN,EAAQ7Q,QAAQC,QAAQA,EAAQ,GAAG6Q,cAAc,UACjDjC,EAAWxL,EAAM0N,IAAKtE,EAAQpJ,EAAMoJ,MAEpCuE,EAAY,GAEhBvE,EAAMqC,KAAKmC,QAAQ,SAAUpP,EAAUe,GACrCoO,EAAUrM,KAAK,QACf9C,EAASoP,QAAQ,SAAUC,EAASZ,GAElC,GADAU,EAAUrM,KAAK,QACXuM,EACF,GAAIrC,EAAS4B,UAAUS,GAAU,CAE/B,IAAIC,EAAW,iBAAqBvO,EAAI,KAAO0N,EAAI,IAEnDU,EAAUrM,KAAK,eAAiBuM,EAAQtQ,OAAO,cAAgB,4FAA8FuQ,EAAW,iCAAmCA,EAAW,gCAAkCA,EAAW,OACnQH,EAAUrM,KAAKuM,EAAQtQ,OAAO,MAC9BoQ,EAAUrM,KAAK,aAEfqM,EAAUrM,KAAK,iCACfqM,EAAUrM,KAAKuM,EAAQtQ,OAAO,MAC9BoQ,EAAUrM,KAAK,WAGnBqM,EAAUrM,KAAK,WAEjBqM,EAAUrM,KAAK,WAGjBkM,EAAMO,KAAKJ,EAAUK,KAAK,KAC1BpO,EAAS4N,EAAT5N,CAAgBI,IAGlB,MAAO,CACLA,MAAO,CACLiO,IAAK,KAEPlO,QAAS,6BACTD,SAAU,KACV/C,SACE,sOAUFqD,KAAM,SAAUJ,EAAOpD,EAASyD,EAAOmL,GACrCxL,EAAM0N,IAAMlC,EACZxL,EAAMoJ,MAAQoC,EAASS,eAAevE,SAAS1H,EAAMiO,MACrDV,EAAqB3Q,EAASoD,GAC9BA,EAAMsM,OAAO,WACX,OAAOtM,EAAMiO,KACZ,SAAUA,EAAKC,GACZD,GAAOC,IACTlO,EAAMoJ,MAAQoC,EAASS,eAAevE,SAAS1H,EAAMiO,MACrDV,EAAqB3Q,EAASoD,WAS5CrD,QAAQK,OAAOb,GACZsD,UAAU,gBAAiB,WAC1B,MAAO,CACLW,KAAM,SAAUJ,EAAOvD,GACrBA,EAAGiH,GAAG,QAAS,SAAUvB,GACvBA,EAAEC,uBAKZzF,QAAQK,OAAOb,GACZsD,UAAU,yBAA0B,CAAC,WACpC,SAAUE,GAkBR,MAAO,CACLG,SAAU,IACV/C,SAjBA,ksCAkBAqD,KAAM,SAAUJ,EAAOpD,EAASyD,GAC9B,IAAI8N,EAA4B,YAAf9N,EAAM+N,KACnBC,EAA4B,YAAfhO,EAAM+N,KACnB9C,EAAStL,EAAMsL,OAEfgD,EAAgBvL,SAAS0K,cAAc,iBA8BvCc,EAAoB,iBAAkB1R,OAC1C2R,EAAS,CACPC,aAAeF,EAAmB,aAAe,YACjDG,WAAeH,EAAmB,WAAe,UACjDI,aAAeJ,EAAmB,YAAe,aAG/CK,EAAc,SAASzM,GACzBA,EAAEC,iBAEF,IAAIyM,EAAgB1M,EAAE2M,cAAcC,QAAQ,OAC5CC,EAAaH,EAAcI,iBAAiB,GAExCV,IAAkBpM,EAAIA,EAAE+M,eAAe,IAE3C,IAAIzI,EAAMoI,EAAcM,YAAc,GAAMhN,EAAEiN,MAAQJ,EAAWK,MAC7DC,EAAMnN,EAAEoN,MAAQP,EAAWQ,IAAQX,EAAcY,aAAe,EAEhEC,EAAM9J,KAAK+J,KAAK/J,KAAKgK,IAAInJ,EAAG,GAAKb,KAAKgK,IAAIN,EAAG,IAC7CO,EAAMjK,KAAKC,MAAOD,KAAKkK,MAAMrJ,EAAG6I,IAAM,IAAM1J,KAAKmK,KAErDpQ,EAAS,YAjDS,SAASkQ,EAAKH,GAChC,IAAIM,EAAM,EAEV,GAAY,KADZH,EAAa,KAAPA,EAAa,EAAIA,GACR,CACb,IAAII,EAAU9B,GAAYE,EAAa,GAAK,GAC5C2B,EAAMpK,KAAKC,MAAMoK,EAAU,IAAMJ,GAGnC,GAAI1B,EAAY,CACd,IAAIxI,EAAa2F,EAAOhM,OAAOT,aAC3B8G,EAAa,GAAkB,GAAbA,KAAiBA,EAAa,GACpD,IAAItI,EAAWsI,EAAaC,KAAKC,MAAMmK,EAAMrK,GAE7C,GADe,IAAXtI,IAAeA,EAAU,GAAKsI,IAC7B3F,EAAMkQ,eAAe,CAAC3O,MAAOyO,IAAO,OACzC1E,EAAO5N,YAAYoI,OAAOzI,QACrB,GAAKgR,EAML,CAEL,GADW,IAAP2B,IAAWA,EAAM,IAChBhQ,EAAMkQ,eAAe,CAAC3O,MAAOyO,IAAO,OACzC1E,EAAO5N,YAAYqI,OAAOiK,OATL,CAIrB,GAHY,KAARA,IAAYA,EAAM,GACjB1E,EAAOhM,OAAOtB,YAAWsN,EAAOrG,SAAiB,GAANyK,EAAW,KAAO,MAC9DpE,EAAOlD,SAAQ4H,GAAO,KACrBhQ,EAAMkQ,eAAe,CAAC3O,MAAOyO,IAAO,OACzC1E,EAAO5N,YAAY+J,KAAKuI,IA8BxBG,CAAcN,EAAI,IAAKH,MAI3B9S,EAAQ8G,GAAG8K,EAAOC,aAAc,WAC7B7R,EAAQ8G,GAAG8K,EAAOG,aAAcC,KAGnChS,EAAQ8G,GAAG8K,EAAOE,WAAY,WAC1B9R,EAAQwT,IAAI5B,EAAOG,gBAGvB3O,EAAMqQ,IAAI,WAAY,WAClBzT,EAAQwT,IAAI5B,EAAOG,aAAcC,KAGrC,IAyGI0B,EAAe,WACjB,IAAI9I,EAAQ8D,EAAO5F,uBACfoF,EAAItD,EAAMC,OAAQjG,EAAIgG,EAAM1B,SAAUyK,EAAI/I,EAAMzB,SAEpDyK,EAAc7T,QAAQC,QAAQA,EAAQ,GAAG6Q,cAAc,mBAAoB,GAAK3C,GAChF0F,EAAc7T,QAAQC,QAAQA,EAAQ,GAAG6Q,cAAc,qBAAsB,EAAIjM,GACjFgP,EAAc7T,QAAQC,QAAQA,EAAQ,GAAG6Q,cAAc,qBAAsB,EAAI8C,IAG/EC,EAAgB,SAAU/T,EAAIoT,GAChClT,QAAQC,QAAQH,GAAID,IAAI,CACtBiU,gBAAiB,UAAYZ,EAAM,OACnCa,iBAAkB,UAAYb,EAAM,OACpCc,gBAAiB,UAAYd,EAAM,OACnCe,UAAa,UAAYf,EAAM,UAK/BgB,EAAkB,WACpB,IAAI1T,EAAOmO,EAAO5F,uBACdoL,EAAMxF,EAAOhM,OAAOtB,UAAY,GAAK,GACzBgC,EAAM+Q,aAAlB5C,EAAiChR,EAAK2I,SACjCuI,EAAiClR,EAAK4I,SACrB5I,EAAKsK,OAASqJ,GAG1C9Q,EAAMsM,OAAO,WACX,IAAI0E,EAAM1F,EAAO5F,uBACjB,OAAOsL,EAAMA,EAAIzT,OAAO,YAAc,IACrC,WACDsT,IACAP,MAGFtQ,EAAMiR,QAAU,SAAUjB,GACnB7B,GAAeE,EAYRA,GAQN2B,IAAQhQ,EAAM+Q,cAAczF,EAAOlB,KACvCkB,EAAO5N,YAAYqI,OAAOiK,KARtBA,IAAQhQ,EAAM+Q,cAAiBzF,EAAOhM,OAAOhC,SAASgO,EAAOlB,KAEjEkB,EAAO5N,YAAYoI,OAAOkK,GACrB1E,EAAOhM,OAAOhC,QAERgO,EAAOhM,OAAOZ,QAAQ4M,EAAOlB,KADtCkB,EAAO5N,YAAYqI,OAAO,KAhBxBiK,IAAQhQ,EAAM+Q,cAAiBzF,EAAOhM,OAAOZ,QAAQ4M,EAAOlB,KAE5DkB,EAAOhM,OAAOtB,UAChBsN,EAAO5N,YAAY+J,KAAK6D,EAAOlD,OAAU4H,EAAM,GAAMA,IAErD1E,EAAO5N,YAAY+J,KAAKuI,GACT1E,EAAOrG,SAAX,IAAP+K,EAA6B,KACV,MAGrB1E,EAAOhM,OAAOZ,QAAQ4M,EAAOlB,OAcrCpK,EAAMkQ,eAAiB,SAAUgB,GAC/B,OAAI/C,EAAmB7C,EAAOtB,kBAAkBkH,EAAM3P,OAC7C8M,EAAmB/C,EAAOpB,kBAAkBgH,EAAM3P,OAC/C+J,EAAOxB,gBAAgBoH,EAAM3P,QAG3C,IAAI4P,EAAYnR,EAAMsM,OAAO,WAC3B,OAAO1P,EAAQ,GAAGwU,iBAAiB,OAAO1F,QACzC,YA9KQ,WACT,IAAI2F,EAAQ1U,QAAQC,QAAQA,EAAQ,GAAG6Q,cAAc,sBACjD6D,EAAW3U,QAAQC,QAAQ0R,EAAcb,cAAc,gBAEvD8D,EAAIjD,EAAcb,cAAc,gBAAgB0B,YAChDqC,EAAK9J,SAASlL,EAAI8U,EAAU,eAAeG,QAAQ,KAAM,MAAQ,EACjEC,EAAKhK,SAASlL,EAAI8U,EAAU,gBAAgBG,QAAQ,KAAM,MAAQ,EAClEE,EAAKjK,SAASlL,EAAI8U,EAAU,cAAcG,QAAQ,KAAM,MAAQ,EAChEG,EAAKlK,SAASlL,EAAI6U,EAAO,cAAcI,QAAQ,KAAM,MAAQ,EAC7DI,EAAKnK,SAASlL,EAAI6U,EAAO,eAAeI,QAAQ,KAAM,MAAQ,EAC9DK,EAAKpK,SAASlL,EAAI6U,EAAO,aAAaI,QAAQ,KAAM,MAAQ,EAG5DM,EAAcR,GAAKK,EAAKC,EAAKL,EAAKE,GACtCL,EAAM7U,IAAI,QAAS,EAAe,MAOlC,IALA,IAAIwV,EAAKD,EAAa,EAClB9E,EAAI+E,EAAI,IAERC,EAAS,GAEJnH,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAEIuE,EAAQ2C,EAFJ/E,EAAIrH,KAAKsM,IAAc,EAAVtM,KAAKmK,IAAUjF,EAAI,KAEpB0G,EAAK,GAAMA,EAAKI,GAChCpC,EAAOwC,EAFH/E,EAAIrH,KAAKuM,IAAc,EAAVvM,KAAKmK,IAAUjF,EAAI,KAErBgH,EAAK,GAAMH,EAAKG,GAE/BrK,EAAO,CACT4H,KAAMA,EACNG,IAAKA,EACLjO,MAAQ4M,GAAYE,EAAkB,EAAJvD,EAASA,EAC3CsH,MAAO,CAACC,cAAehD,EAAO,KAAMiD,aAAc9C,EAAM,OAGtDrB,GAAcE,EAChB5G,EAAK8K,QAAU9K,EAAKlG,MAAQ,GAAM,IAAMkG,EAAKlG,MAASkG,EAAKlG,MAEvD+J,EAAOhM,OAAOtB,UAChByJ,EAAK8K,QAAgB,IAANzH,EAAU,GAAKA,EAE9BrD,EAAK8K,QAAUzH,EAInBmH,EAAO3Q,KAAKmG,GAId,GAFAzH,EAAMiS,OAASA,GAEV3G,EAAOhM,OAAOtB,YAAcmQ,IAAeE,EAAY,CAI1D,IAHA,IAAImE,EAAW,GAEXC,EAAMT,EAAI,IACLU,EAAM,GAAIA,EAAM,KAAMA,EAAK,CAClC,IAEIC,EAAUX,EAFJS,EAAM7M,KAAKsM,IAAc,EAAVtM,KAAKmK,IAAU2C,EAAM,KAEtBlB,EAAK,GAAMA,EAAKI,GACpCgB,EAASZ,EAFHS,EAAM7M,KAAKuM,IAAc,EAAVvM,KAAKmK,IAAU2C,EAAM,KAEvBZ,EAAK,GAAMH,EAAKG,GAEvCU,EAASlR,KAAK,CACZ+N,KAAMsD,EACNnD,IAAKoD,EACLrR,MAAOmR,EACPH,QAASG,EACTN,MAAO,CAACC,cAAeM,EAAS,KAAML,aAAcM,EAAQ,QAGhE5S,EAAMwS,SAAWA,EAGnBxS,EAAMoO,KAAO/N,EAAM+N,KACnByC,IACAQ,EAAM7U,IAAI,SAAUuV,EAAa,MAEjC,IAAIc,EAAcjW,EAAQ,GAAG6Q,cAAc,qBACvCqF,EAAeD,EAAY1D,YAAc,GAAM,IAC/C4D,EAAgBF,EAAYpD,aAAe,GAAM,IACjDuD,EAAMhB,GAAK1G,EAAOhM,OAAOtB,UAAY,IAAM,KAC3CiV,EAAMjB,EAAI,IACVkB,EAAMlB,EAEVrV,QAAQC,QAAQA,EAAQ,GAAG6Q,cAAc,mBAAmBjR,IAAI,CAC9D6S,KAAM2C,EAAU,IAALJ,EAAY,KACvBuB,OAAQH,EAAM,KACdI,UAAYpB,EAAIgB,EAAMxB,EAAM,OAC3B7N,SAAUwK,GAAeE,EAAoB,GAAP,MAEzC1R,QAAQC,QAAQA,EAAQ,GAAG6Q,cAAc,qBAAqBjR,IAAI,CAChE6S,KAAM2C,EAAU,IAALJ,EAAY,KACvBuB,OAAQF,EAAM,KACdG,UAAWpB,EAAIiB,EAAMzB,EAAK,OACzB7N,SAASwK,EAAa,KAAO,IAEhCxR,QAAQC,QAAQA,EAAQ,GAAG6Q,cAAc,qBAAqBjR,IAAI,CAChE6S,KAAM2C,EAAU,IAALJ,EAAY,KACvBuB,OAAQD,EAAM,KACdE,UAAWpB,EAAIkB,EAAM1B,EAAK,OACzB7N,SAAS0K,EAAa,KAAO,IAEhC1R,QAAQC,QAAQiW,GAAarW,IAAI,CAC/B6S,KAAM2C,EAAIR,EAAKI,EAAKkB,EAAc,KAClCM,UAAYpB,EAAKJ,EAAK,EAAMmB,EAAe,OAE7CzC,IAyEA+C,GACAlC,WAKHhV,EAGT,IAAImX,EAAazW,QAAUA,OAAO0W,SAAW1W,OAAO0W,QAAQC,KACtC,mBAAXC,QAAyBA,OAAOC,IACzCD,OAAO,CAAC,UAAWxX,GACQ,oBAAXe,QAA0BA,QAAUA,OAAO2W,SAA+B,mBAAZ5T,UAA4BuT,EAC1GtW,OAAO2W,QAAU1X,EAAqB8D,QAAQ,WAE9C9D,GAAwC,oBAAX2X,OAAyBA,OAAS/W,QAAQX,QA9wC3E","file":"angular-material-datetimepicker.min.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse',\r\n function ($mdDialog, $timeout, $compile, $parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '', clearButton = '';\r\n\r\n if (scope.showClear === undefined || scope.showClear) {\r\n clearButton = '';\r\n }\r\n \r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n $onInit: function () {\r\n this.params = angular.extend(this.params, this.options);\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"]} \ No newline at end of file +{ + "version": 3, + "sources": ["../js/angular-material-datetimepicker.js"], + "sourcesContent": ["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse',\r\n function ($mdDialog, $timeout, $compile, $parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '', clearButton = '';\r\n\r\n if (scope.showClear === undefined || scope.showClear) {\r\n clearButton = '';\r\n }\r\n \r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n $onInit: function () {\r\n this.params = angular.extend(this.params, this.options);\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"], + "mappings": "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", + "names": [] +} diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 9a066ed..64badef 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp :focus{outline:0!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689f38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8bc34a;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}md-menu-content.dtp-month-list{background-color:#fff}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}md-menu-content.dtp-year-list{background-color:#fff}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-actual-time,.dtp div.dtp-picker-month{font-size:1em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:260px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:12px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp .dtp-picker-time>a,.dtp table.dtp-picker-days tr>td>.dtp-select-day{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8bc34a;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:2px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689f38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8bc34a;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#bdbdbd;-moz-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8bc34a}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp .hidden,.dtp.hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-month-btn-prev,[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-cancel,.dtp-btn-ok,.dtp-btn-today{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} \ No newline at end of file +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp *:focus{outline:none!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}md-menu-content.dtp-month-list{background-color:#fff}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}md-menu-content.dtp-year-list{background-color:#fff}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-picker-month,.dtp div.dtp-actual-time{font-size:1em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:260px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:12px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp table.dtp-picker-days tr>td>.dtp-select-day,.dtp .dtp-picker-time>a{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#dddddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:2px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp.hidden,.dtp .hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev,[dir=rtl] .dtp div.dtp-month-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-today,.dtp-btn-ok,.dtp-btn-cancel{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index f911808..0000000 --- a/gulpfile.js +++ /dev/null @@ -1,48 +0,0 @@ -/*jshint esversion: 6 */ - -const gulp = require('gulp'); -const pump = require('pump'); -const uglify = require('gulp-uglify'); -const cleanCSS = require('gulp-clean-css'); -const sourcemaps = require('gulp-sourcemaps'); -const rename = require('gulp-rename'); -const spawn = require('child_process').spawn; - -gulp.task('js', cb => { - pump([ - gulp.src(['./js/angular-material-datetimepicker.js']), - sourcemaps.init(), - uglify(), - rename({extname: '.min.js'}), - sourcemaps.write(''), - gulp.dest('./dist/') - ], cb); -}); - -gulp.task('css', cb => { - pump([ - gulp.src(['./css/material-datetimepicker.css']), - cleanCSS(), - rename({extname: '.min.css'}), - gulp.dest('./dist/') - ], cb); -}); - -gulp.task('default', gulp.parallel('js', 'css')); -gulp.task('build', gulp.parallel('js', 'css')); - -gulp.task('serve', function () { - const child = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['start']); - - child.stdout.on('data', (data) => { - console.log(`stdout: ${data}`); - }); - - child.stderr.on('data', (data) => { - console.log(`stderr: ${data}`); - }); - - child.on('close', (code) => { - console.log(`child process exited with code ${code}`); - }); -}); diff --git a/package.json b/package.json index 7c6378c..cbdcfe8 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "homepage": "https://beenote.github.io/angular-material-datetimepicker/", "main": "js/angular-material-datetimepicker.js", "scripts": { + "build": "node build", "start": "lite-server", "dev": "lite-server" }, @@ -32,12 +33,7 @@ "url": "https://github.com/beenote/angular-material-datetimepicker" }, "devDependencies": { - "gulp": "^4.0.2", - "gulp-clean-css": "^4.3.0", - "gulp-rename": "^2.0.0", - "gulp-sourcemaps": "^2.6.5", - "gulp-uglify": "^3.0.2", - "lite-server": "^2.6.1", - "pump": "^3.0.0" + "esbuild": "^0.8.27", + "lite-server": "^2.6.1" } } diff --git a/yarn.lock b/yarn.lock index 7f2140d..c402712 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,23 +2,6 @@ # yarn lockfile v1 -"@gulp-sourcemaps/identity-map@1.X": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/identity-map/-/identity-map-1.0.1.tgz#cfa23bc5840f9104ce32a65e74db7e7a974bbee1" - dependencies: - acorn "^5.0.3" - css "^2.2.1" - normalize-path "^2.1.1" - source-map "^0.5.6" - through2 "^2.0.3" - -"@gulp-sourcemaps/map-sources@1.X": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" - dependencies: - normalize-path "^2.0.1" - through2 "^2.0.3" - accepts@~1.3.4: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -27,20 +10,11 @@ accepts@~1.3.4: mime-types "~2.1.24" negotiator "0.6.2" -acorn@5.X, acorn@^5.0.3: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - angular-animate@^1.8.2: version "1.8.2" resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.8.2.tgz#a3045e523ffb8d7fcbebd3cb68d1fdd474665ced" @@ -66,20 +40,6 @@ angular@^1.8.2: resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.2.tgz#5983bbb5a9fa63e213cb7749199e0d352de3a2f1" integrity sha512-IauMOej2xEe7/7Ennahkbb5qd/HFADiNuLSESz9Q27inmi32zB0lnAsFeLEWcox3Gd1F6YhNd1CP7/9IukJ0Gw== -ansi-colors@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" - integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== - dependencies: - ansi-wrap "^0.1.0" - -ansi-gray@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= - dependencies: - ansi-wrap "0.1.0" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -114,19 +74,6 @@ ansi-styles@^4.0.0: dependencies: color-convert "^2.0.1" -ansi-wrap@0.1.0, ansi-wrap@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -135,142 +82,26 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -append-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" - integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= - dependencies: - buffer-equal "^1.0.0" - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-filter@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" - integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= - dependencies: - make-iterator "^1.0.0" - -arr-flatten@^1.0.1, arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-map@^2.0.0, arr-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" - integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= - dependencies: - make-iterator "^1.0.0" - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-each@^1.0.0, array-each@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" - integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= - -array-initial@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" - integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= - dependencies: - array-slice "^1.0.0" - is-number "^4.0.0" - -array-last@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" - integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== - dependencies: - is-number "^4.0.0" - -array-slice@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" - integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== - -array-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - dependencies: - default-compare "^1.0.0" - get-value "^2.0.6" - kind-of "^5.0.2" - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-done@^1.2.0, async-done@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" - integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.2" - process-nextick-args "^2.0.0" - stream-exhaust "^1.0.1" - async-each-series@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" integrity sha1-dhfBkXQB/Yykooqtzj266Yr+tDI= -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async-settle@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" - integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= - dependencies: - async-done "^1.2.2" - async@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -atob@~1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773" - axios@0.19.0: version "0.19.0" resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" @@ -279,21 +110,6 @@ axios@0.19.0: follow-redirects "1.5.10" is-buffer "^2.0.2" -bach@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" - integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= - dependencies: - arr-filter "^1.1.1" - arr-flatten "^1.0.1" - arr-map "^2.0.0" - array-each "^1.0.0" - array-initial "^1.0.0" - array-last "^1.1.1" - async-done "^1.2.2" - async-settle "^1.0.0" - now-and-later "^2.0.0" - backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -319,19 +135,6 @@ base64id@1.0.0: resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -344,23 +147,11 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - binary-extensions@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - blob@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" @@ -374,22 +165,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -465,46 +240,16 @@ bs-snippet-injector@^2.0.1: resolved "https://registry.yarnpkg.com/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz#61b5393f11f52559ed120693100343b6edb04dd5" integrity sha1-YbU5PxH1JVntEgaTEANDtu2wTdU= -buffer-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -521,25 +266,6 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chokidar@^2.0.0: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - chokidar@^3.4.1: version "3.4.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" @@ -555,32 +281,6 @@ chokidar@^3.4.1: optionalDependencies: fsevents "~2.1.2" -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -599,52 +299,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-map@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" - integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= - dependencies: - arr-map "^2.0.2" - for-own "^1.0.0" - make-iterator "^1.0.0" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -669,20 +323,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - commander@^2.2.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@~2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50" - component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -693,7 +338,7 @@ component-emitter@1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= -component-emitter@^1.2.1, component-emitter@~1.3.0: +component-emitter@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -708,16 +353,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.6.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - connect-history-api-fallback@^1, connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" @@ -740,78 +375,18 @@ connect@3.6.6: parseurl "~1.3.2" utils-merge "1.0.1" -convert-source-map@1.X: - version "1.5.1" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" - -convert-source-map@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== - dependencies: - safe-buffer "~5.1.1" - cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-props@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" - integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== - dependencies: - each-props "^1.3.0" - is-plain-object "^2.0.1" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -css@2.X, css@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc" - dependencies: - inherits "^2.0.1" - source-map "^0.1.38" - source-map-resolve "^0.3.0" - urix "^0.1.0" - -d@1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -debug-fabulous@1.X: - version "1.0.0" - resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-1.0.0.tgz#57f6648646097b1b0849dcda0017362c1ec00f8b" - dependencies: - debug "3.X" - memoizee "0.4.X" - object-assign "4.X" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: +debug@2.6.9, debug@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@3.X, debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - debug@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -819,57 +394,17 @@ debug@4.1.1: dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.2.0: +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -default-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" - integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== - dependencies: - kind-of "^5.0.2" - -default-resolution@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" - integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= - -define-properties@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -880,15 +415,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -detect-newline@2.X: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - dev-ip@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" @@ -899,24 +425,6 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -each-props@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" - integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== - dependencies: - is-plain-object "^2.0.1" - object.defaults "^1.1.0" - easy-extender@^2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.4.tgz#298789b64f9aaba62169c77a2b3b64b4c9589b8f" @@ -951,13 +459,6 @@ encodeurl@~1.0.1, encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== - dependencies: - once "^1.4.0" - engine.io-client@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" @@ -1026,64 +527,10 @@ engine.io@~3.2.0: engine.io-parser "~2.1.0" ws "~3.3.1" -error-ex@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: - version "0.10.51" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.51.tgz#ed2d7d9d48a12df86e0299287e93a09ff478842f" - integrity sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" - -es5-ext@^0.10.30, es5-ext@~0.10.2: - version "0.10.38" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.38.tgz#fa7d40d65bbc9bb8a67e1d3f9cc656a00530eed3" - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - -es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - -es6-weak-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" +esbuild@^0.8.27: + version "0.8.27" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.27.tgz#8f7aa7d65229856c6ad11961b01b3e302fcb5e84" + integrity sha512-cY2i08EHYHNg0o748J+X0yBTcCO7DIZSxLWJ/6OymmML0Y2X6qkINfZcoiq5GE6EcLIfwyaZpI60JY6iBJWj5w== escape-html@~1.0.3: version "1.0.3" @@ -1100,97 +547,11 @@ etag@1.8.1, etag@^1.8.1, etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fancy-log@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" - integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== - dependencies: - ansi-gray "^0.1.1" - color-support "^1.1.3" - parse-node-version "^1.0.0" - time-stamp "^1.0.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -1211,14 +572,6 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -1234,50 +587,6 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -fined@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" - integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== - dependencies: - expand-tilde "^2.0.2" - is-plain-object "^2.0.3" - object.defaults "^1.1.0" - object.pick "^1.2.0" - parse-filepath "^1.0.1" - -flagged-respawn@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" - integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== - -flush-write-stream@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - follow-redirects@1.5.10: version "1.5.10" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" @@ -1290,25 +599,6 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - fresh@0.5.2, fresh@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -1323,60 +613,16 @@ fs-extra@3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" -fs-mkdirp-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" - integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= - dependencies: - graceful-fs "^4.1.11" - through2 "^2.0.3" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" @@ -1384,175 +630,10 @@ glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob-stream@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" - integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= - dependencies: - extend "^3.0.0" - glob "^7.1.1" - glob-parent "^3.1.0" - is-negated-glob "^1.0.0" - ordered-read-streams "^1.0.0" - pumpify "^1.3.5" - readable-stream "^2.1.5" - remove-trailing-separator "^1.0.1" - to-absolute-glob "^2.0.0" - unique-stream "^2.0.2" - -glob-watcher@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" - integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== - dependencies: - anymatch "^2.0.0" - async-done "^1.2.0" - chokidar "^2.0.0" - is-negated-glob "^1.0.0" - just-debounce "^1.0.0" - object.defaults "^1.1.0" - -glob@^7.1.1: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -glogg@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" - integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== - dependencies: - sparkles "^1.0.0" - -graceful-fs@4.X: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -graceful-fs@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" - integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -gulp-clean-css@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz#5b1e73f2fca46703eb636014cdd4553cea65146d" - integrity sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg== - dependencies: - clean-css "4.2.3" - plugin-error "1.0.1" - through2 "3.0.1" - vinyl-sourcemaps-apply "0.2.1" - -gulp-cli@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" - integrity sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA== - dependencies: - ansi-colors "^1.0.1" - archy "^1.0.0" - array-sort "^1.0.0" - color-support "^1.1.3" - concat-stream "^1.6.0" - copy-props "^2.0.1" - fancy-log "^1.3.2" - gulplog "^1.0.0" - interpret "^1.1.0" - isobject "^3.0.1" - liftoff "^3.1.0" - matchdep "^2.0.0" - mute-stdout "^1.0.0" - pretty-hrtime "^1.0.0" - replace-homedir "^1.0.0" - semver-greatest-satisfied-range "^1.1.0" - v8flags "^3.0.1" - yargs "^7.1.0" - -gulp-rename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-2.0.0.tgz#9bbc3962b0c0f52fc67cd5eaff6c223ec5b9cf6c" - integrity sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ== - -gulp-sourcemaps@^2.6.5: - version "2.6.5" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz#a3f002d87346d2c0f3aec36af7eb873f23de8ae6" - integrity sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg== - dependencies: - "@gulp-sourcemaps/identity-map" "1.X" - "@gulp-sourcemaps/map-sources" "1.X" - acorn "5.X" - convert-source-map "1.X" - css "2.X" - debug-fabulous "1.X" - detect-newline "2.X" - graceful-fs "4.X" - source-map "~0.6.0" - strip-bom-string "1.X" - through2 "2.X" - -gulp-uglify@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gulp-uglify/-/gulp-uglify-3.0.2.tgz#5f5b2e8337f879ca9dec971feb1b82a5a87850b0" - integrity sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg== - dependencies: - array-each "^1.0.1" - extend-shallow "^3.0.2" - gulplog "^1.0.0" - has-gulplog "^0.1.0" - isobject "^3.0.1" - make-error-cause "^1.1.1" - safe-buffer "^5.1.2" - through2 "^2.0.0" - uglify-js "^3.0.5" - vinyl-sourcemaps-apply "^0.2.0" - -gulp@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" - integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== - dependencies: - glob-watcher "^5.0.3" - gulp-cli "^2.2.0" - undertaker "^1.2.1" - vinyl-fs "^3.0.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= - dependencies: - glogg "^1.0.0" +graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== has-ansi@^2.0.0: version "2.0.0" @@ -1573,67 +654,6 @@ has-cors@1.1.0: resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= -has-gulplog@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" - dependencies: - sparkles "^1.0.0" - -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - http-errors@1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" @@ -1681,72 +701,15 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -interpret@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" +inherits@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== is-binary-path@~2.1.0: version "2.1.0" @@ -1755,79 +718,16 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-buffer@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-core-module@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -1838,25 +738,13 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" -is-negated-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" - integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= - is-number-like@^1.0.3: version "1.0.8" resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" @@ -1864,100 +752,21 @@ is-number-like@^1.0.3: dependencies: lodash.isfinite "^3.3.2" -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-promise@^2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-utf8@^0.2.0, is-utf8@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-valid-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" - integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - isarray@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - jsonfile@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" @@ -1965,78 +774,6 @@ jsonfile@^3.0.0: optionalDependencies: graceful-fs "^4.1.6" -just-debounce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" - integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0, kind-of@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -last-run@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" - integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= - dependencies: - default-resolution "^2.0.0" - es6-weak-map "^2.0.1" - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= - dependencies: - readable-stream "^2.0.5" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -lead@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" - integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= - dependencies: - flush-write-stream "^1.0.2" - -liftoff@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" - integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== - dependencies: - extend "^3.0.0" - findup-sync "^3.0.0" - fined "^1.0.1" - flagged-respawn "^1.0.0" - is-plain-object "^2.0.4" - object.map "^1.0.0" - rechoir "^0.6.2" - resolve "^1.1.7" - limiter@^1.0.5: version "1.1.5" resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" @@ -2053,17 +790,6 @@ lite-server@^2.6.1: lodash "^4.17.20" minimist "^1.2.5" -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - localtunnel@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-2.0.0.tgz#2ea71174fa80e34cce91b2a7ce416e6a57d9ff7c" @@ -2099,82 +825,6 @@ lodash@^4.17.10, lodash@^4.17.20: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -lru-queue@0.1: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - dependencies: - es5-ext "~0.10.2" - -make-error-cause@^1.1.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/make-error-cause/-/make-error-cause-1.2.2.tgz#df0388fcd0b37816dff0a5fb8108939777dcbc9d" - dependencies: - make-error "^1.2.0" - -make-error@^1.2.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535" - -make-iterator@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" - integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== - dependencies: - kind-of "^6.0.2" - -map-cache@^0.2.0, map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -matchdep@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" - integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= - dependencies: - findup-sync "^2.0.0" - micromatch "^3.0.4" - resolve "^1.4.0" - stack-trace "0.0.10" - -memoizee@0.4.X: - version "0.4.11" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.11.tgz#bde9817663c9e40fdb2a4ea1c367296087ae8c8f" - dependencies: - d "1" - es5-ext "^0.10.30" - es6-weak-map "^2.0.2" - event-emitter "^0.3.5" - is-promise "^2.1" - lru-queue "0.1" - next-tick "1" - timers-ext "^0.1.2" - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - micromatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" @@ -2200,7 +850,7 @@ mime@1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -2217,14 +867,6 @@ mitt@^1.1.3: resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - moment@*, moment@^2.29.1: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" @@ -2240,149 +882,21 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mute-stdout@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" - integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== - -nan@^2.12.1: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -next-tick@1, next-tick@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.1, normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -now-and-later@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" - integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== - dependencies: - once "^1.3.2" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@4.X: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - object-component@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-keys@^1.0.11, object-keys@^1.0.12: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.0.4: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.defaults@^1.0.0, object.defaults@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" - integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= - dependencies: - array-each "^1.0.1" - array-slice "^1.0.0" - for-own "^1.0.0" - isobject "^3.0.0" - -object.map@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" - integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - -object.pick@^1.2.0, object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.reduce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" - integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -2390,13 +904,6 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - openurl@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" @@ -2409,20 +916,6 @@ opn@5.3.0: dependencies: is-wsl "^1.1.0" -ordered-read-streams@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" - integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= - dependencies: - readable-stream "^2.0.1" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -2449,32 +942,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -parse-filepath@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-node-version@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -2504,23 +971,6 @@ parseurl@~1.3.2: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -2531,69 +981,11 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= - dependencies: - path-root-regex "^0.1.0" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -plugin-error@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" - integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== - dependencies: - ansi-colors "^1.0.1" - arr-diff "^4.0.0" - arr-union "^3.1.0" - extend-shallow "^3.0.2" - portscanner@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" @@ -2602,45 +994,6 @@ portscanner@2.1.1: async "1.5.2" is-number-like "^1.0.3" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -pretty-hrtime@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.5: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - qs@6.2.3: version "6.2.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" @@ -2661,67 +1014,6 @@ raw-body@^2.3.2: iconv-lite "0.4.24" unpipe "1.0.0" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -"readable-stream@2 || 3": - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^2.0.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - readdirp@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" @@ -2729,77 +1021,11 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -remove-bom-buffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" - integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== - dependencies: - is-buffer "^1.1.5" - is-utf8 "^0.2.1" - -remove-bom-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" - integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= - dependencies: - remove-bom-buffer "^3.0.0" - safe-buffer "^5.1.0" - through2 "^2.0.3" - -remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - -replace-homedir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" - integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= - dependencies: - homedir-polyfill "^1.0.1" - is-absolute "^1.0.0" - remove-trailing-separator "^1.1.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -2810,41 +1036,6 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-options@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" - integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= - dependencies: - value-or-function "^3.0.0" - -resolve-url@^0.2.1, resolve-url@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.4.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.10.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - resp-modifier@6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" @@ -2853,11 +1044,6 @@ resp-modifier@6.0.2: debug "^2.2.0" minimatch "^3.0.2" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - rx@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" @@ -2870,45 +1056,16 @@ rxjs@^5.5.6: dependencies: symbol-observable "1.0.1" -safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== - -safe-buffer@^5.1.2: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver-greatest-satisfied-range@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" - integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= - dependencies: - sver-compat "^1.5.0" - -"semver@2 || 3 || 4 || 5": - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - send@0.16.2: version "0.16.2" resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" @@ -2961,16 +1118,6 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -2981,36 +1128,6 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - socket.io-adapter@~1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" @@ -3083,102 +1200,6 @@ socket.io@2.1.1: socket.io-client "2.1.1" socket.io-parser "~3.2.0" -source-map-resolve@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761" - dependencies: - atob "~1.1.0" - resolve-url "~0.2.1" - source-map-url "~0.3.0" - urix "~0.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map-url@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9" - -source-map@^0.1.38: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.1, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sparkles@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" - integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -stack-trace@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" @@ -3194,16 +1215,6 @@ statuses@~1.4.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== -stream-exhaust@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" - integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== - -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= - stream-throttle@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" @@ -3212,15 +1223,6 @@ stream-throttle@^0.1.3: commander "^2.2.0" limiter "^1.0.5" -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -3239,21 +1241,7 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -3274,30 +1262,11 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" -strip-bom-string@1.X: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -sver-compat@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" - integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= - dependencies: - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" @@ -3311,76 +1280,11 @@ tfunk@^4.0.0: chalk "^1.1.3" dlv "^1.1.3" -through2-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" - integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" - -through2@2.X: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -through2@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== - dependencies: - readable-stream "2 || 3" - -through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= - -timers-ext@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.2.tgz#61cc47a76c1abd3195f14527f978d58ae94c5204" - dependencies: - es5-ext "~0.10.14" - next-tick "1" - -to-absolute-glob@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" - integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -3388,98 +1292,21 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -to-through@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" - integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= - dependencies: - through2 "^2.0.3" - toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -type@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/type/-/type-1.0.3.tgz#16f5d39f27a2d28d86e48f8981859e9d3296c179" - integrity sha512-51IMtNfVcee8+9GJvj0spSuFcZHe9vSib6Xtgsny1Km9ugyz2mbS08I3rsUIRYgJohFRFU1160sgRodYz378Hg== - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - ua-parser-js@^0.7.18: version "0.7.23" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b" integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA== -uglify-js@^3.0.5: - version "3.4.6" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.6.tgz#bc546d53f3e02b05d97d0ca5a7abfe0fb0384ddb" - dependencies: - commander "~2.16.0" - source-map "~0.6.1" - ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - -undertaker-registry@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" - integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= - -undertaker@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" - integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== - dependencies: - arr-flatten "^1.0.1" - arr-map "^2.0.0" - bach "^1.0.0" - collection-map "^1.0.0" - es6-weak-map "^2.0.1" - last-run "^1.1.0" - object.defaults "^1.0.0" - object.reduce "^1.0.0" - undertaker-registry "^1.0.0" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-stream@^2.0.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" - integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== - dependencies: - json-stable-stringify-without-jsonify "^1.0.1" - through2-filter "^3.0.0" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -3490,138 +1317,16 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -urix@^0.1.0, urix@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -v8flags@^3.0.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" - integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== - dependencies: - homedir-polyfill "^1.0.1" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -value-or-function@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" - integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= - -vinyl-fs@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" - integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== - dependencies: - fs-mkdirp-stream "^1.0.0" - glob-stream "^6.1.0" - graceful-fs "^4.0.0" - is-valid-glob "^1.0.0" - lazystream "^1.0.0" - lead "^1.0.0" - object.assign "^4.0.4" - pumpify "^1.3.5" - readable-stream "^2.3.3" - remove-bom-buffer "^3.0.0" - remove-bom-stream "^1.2.0" - resolve-options "^1.1.0" - through2 "^2.0.0" - to-through "^2.0.0" - value-or-function "^3.0.0" - vinyl "^2.0.0" - vinyl-sourcemap "^1.1.0" - -vinyl-sourcemap@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" - integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= - dependencies: - append-buffer "^1.0.2" - convert-source-map "^1.5.0" - graceful-fs "^4.1.6" - normalize-path "^2.1.1" - now-and-later "^2.0.0" - remove-bom-buffer "^3.0.0" - vinyl "^2.0.0" - -vinyl-sourcemaps-apply@0.2.1, vinyl-sourcemaps-apply@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" - dependencies: - source-map "^0.5.1" - -vinyl@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.14: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -3640,11 +1345,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -3666,16 +1366,6 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= -xtend@~4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - y18n@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" @@ -3697,13 +1387,6 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= - dependencies: - camelcase "^3.0.0" - yargs@13.3.0: version "13.3.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" @@ -3737,25 +1420,6 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" From b4dc6e92b34cac13c63f8fdf8f5028c9ec23a7ec Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Wed, 30 Dec 2020 21:38:17 -0500 Subject: [PATCH 209/226] version 1.19.7 --- README.md | 12 +++--------- bower.json | 2 +- package.json | 5 ++--- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index d274608..1768222 100644 --- a/README.md +++ b/README.md @@ -267,17 +267,11 @@ To run the demo: ``` npm start yarn start -gulp serve ``` -To build with gulp 4: - -Global +To build with esbuild: ``` -gulp +npm build +yarn build ```` -Local -``` -./node_modules/.bin/gulp -``` diff --git a/bower.json b/bower.json index d183972..aa73c17 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.6", + "version": "1.19.7", "keywords": [ "css", "js", diff --git a/package.json b/package.json index cbdcfe8..b276d82 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.6", + "version": "1.19.7", "keywords": [ "css", "js", @@ -17,8 +17,7 @@ "main": "js/angular-material-datetimepicker.js", "scripts": { "build": "node build", - "start": "lite-server", - "dev": "lite-server" + "start": "lite-server" }, "dependencies": { "angular": "^1.8.2", From faee1e82fe28f1b2ab5552d04a191e19e3a019ea Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 31 Dec 2020 00:42:02 -0500 Subject: [PATCH 210/226] remove bower --- README.md | 8 ++------ bower.json | 34 ---------------------------------- index.html | 4 ++-- 3 files changed, 4 insertions(+), 42 deletions(-) delete mode 100644 bower.json diff --git a/README.md b/README.md index 1768222..bf92f30 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,8 @@ [![Known Vulnerabilities](https://snyk.io/test/github/beenote/angular-material-datetimepicker/badge.svg)](https://snyk.io/test/github/beenote/angular-material-datetimepicker) [![npm version](https://badge.fury.io/js/ng-material-datetimepicker.svg)](https://badge.fury.io/js/ng-material-datetimepicker) -[![Bower version](https://badge.fury.io/bo/ng-material-datetimepicker.svg)](https://badge.fury.io/bo/ng-material-datetimepicker) [![Open Source Love](https://badges.frapsoft.com/os/mit/mit.svg?v=102)](https://github.com/ellerbrock/open-source-badge/) [![Dependency Status](https://david-dm.org/beenote/angular-material-datetimepicker.svg)](https://david-dm.org/beenote/angular-material-datetimepicker) -[![devDependency Status](https://david-dm.org/bbeenote/angular-material-datetimepicker/dev-status.svg)](https://david-dm.org/beenote/angular-material-datetimepicker#info=devDependencies) +[![devDependency Status](https://david-dm.org/bbeenote/angular-material-datetimepicker/dev-status.svg)](https://david-dm.org/beenote/angular-material-datetimepicker?type=dev) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) # Angular Material DateTimePicker @@ -64,11 +63,10 @@ Depends on the following library: ``` -## Installing via yarn, npm or bower +## Installing with yarn or npm ``` yarn add ng-material-datetimepicker npm i ng-material-datetimepicker -bower install ng-material-datetimepicker ``` ## CDN @@ -265,13 +263,11 @@ md-menu-content.dtp-year-list { ### Development To run the demo: ``` -npm start yarn start ``` To build with esbuild: ``` -npm build yarn build ```` diff --git a/bower.json b/bower.json deleted file mode 100644 index aa73c17..0000000 --- a/bower.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "ng-material-datetimepicker", - "description": "A datetime picker for AngularJS Material", - "version": "1.19.7", - "keywords": [ - "css", - "js", - "mobile-first", - "angular", - "material", - "angular-material", - "responsive", - "front-end", - "web" - ], - "homepage": "https://beenote.github.io/angular-material-datetimepicker", - "main": [ - "js/angular-material-datetimepicker.js", - "css/material-datetimepicker.css" - ], - "ignore": [ - "_config.yml", - "CNAME", - "composer.json", - "CONTRIBUTING.md", - "docs", - "js/tests", - "test-infra" - ], - "dependencies": { - "moment": "^2.29.1", - "angular-material": "^1.2.2" - } -} diff --git a/index.html b/index.html index 6267dd1..aafff54 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@ - + @@ -26,7 +26,7 @@ - + From 796e9b02daf8497d172bc22e848d3c0c8ad99286 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 May 2021 16:14:25 +0000 Subject: [PATCH 211/226] Bump ua-parser-js from 0.7.23 to 0.7.28 Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.23 to 0.7.28. - [Release notes](https://github.com/faisalman/ua-parser-js/releases) - [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.23...0.7.28) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 05eb1ce..b142d43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1299,9 +1299,9 @@ toidentifier@1.0.0: integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== ua-parser-js@^0.7.18: - version "0.7.23" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b" - integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA== + version "0.7.28" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" + integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== ultron@~1.1.0: version "1.1.1" From e0ad82aac4aa1ba5ebee33ef34d2a2424d287eaa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 May 2021 11:21:51 +0000 Subject: [PATCH 212/226] Bump lodash from 4.17.20 to 4.17.21 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 05eb1ce..c887efb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -822,9 +822,9 @@ lodash.isfinite@^3.3.2: integrity sha1-+4m2WpqAKBgz8LdHizpRBPiY67M= lodash@^4.17.10, lodash@^4.17.20: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== micromatch@^4.0.2: version "4.0.2" From 6e89b51b3427af90eba08781424d3fe68670352b Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 13 May 2021 20:52:41 -0400 Subject: [PATCH 213/226] Replace lite-server with web-dev-server --- package.json | 6 +- yarn.lock | 1837 +++++++++++++++++++++----------------------------- 2 files changed, 786 insertions(+), 1057 deletions(-) diff --git a/package.json b/package.json index b276d82..8ba0c6d 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "main": "js/angular-material-datetimepicker.js", "scripts": { "build": "node build", - "start": "lite-server" + "start": "web-dev-server --watch --open" }, "dependencies": { "angular": "^1.8.2", @@ -32,7 +32,7 @@ "url": "https://github.com/beenote/angular-material-datetimepicker" }, "devDependencies": { - "esbuild": "^0.8.27", - "lite-server": "^2.6.1" + "@web/dev-server": "^0.1.17", + "esbuild": "^0.8.27" } } diff --git a/yarn.lock b/yarn.lock index 8059c67..69aa62b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,269 @@ # yarn lockfile v1 -accepts@~1.3.4: +"@babel/code-frame@^7.12.11": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/helper-validator-identifier@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" + integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== + +"@babel/highlight@^7.12.13": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@rollup/plugin-node-resolve@^11.0.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@types/accepts@*": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" + integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== + dependencies: + "@types/node" "*" + +"@types/body-parser@*": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" + integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/command-line-args@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.0.0.tgz#484e704d20dbb8754a8f091eee45cdd22bcff28c" + integrity sha512-4eOPXyn5DmP64MCMF8ePDvdlvlzt2a+F8ZaVjqmh2yFCpGjc1kI3kGnCFYX9SCsGTjQcWIyVZ86IHCEyjy/MNg== + +"@types/connect@*": + version "3.4.34" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" + integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== + dependencies: + "@types/node" "*" + +"@types/content-disposition@*": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.3.tgz#0aa116701955c2faa0717fc69cd1596095e49d96" + integrity sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg== + +"@types/cookies@*": + version "0.7.6" + resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.6.tgz#71212c5391a976d3bae57d4b09fac20fc6bda504" + integrity sha512-FK4U5Qyn7/Sc5ih233OuHO0qAkOpEcD/eG6584yEiLKizTFRny86qHLe/rej3HFQrkBuUjF4whFliAdODbVN/w== + dependencies: + "@types/connect" "*" + "@types/express" "*" + "@types/keygrip" "*" + "@types/node" "*" + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/express-serve-static-core@^4.17.18": + version "4.17.19" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d" + integrity sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.11" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" + integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/http-assert@*": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.1.tgz#d775e93630c2469c2f980fc27e3143240335db3b" + integrity sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ== + +"@types/http-errors@*": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.0.tgz#682477dbbbd07cd032731cb3b0e7eaee3d026b69" + integrity sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA== + +"@types/keygrip@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" + integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== + +"@types/koa-compose@*": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" + integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== + dependencies: + "@types/koa" "*" + +"@types/koa@*", "@types/koa@^2.11.6": + version "2.13.1" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.1.tgz#e29877a6b5ad3744ab1024f6ec75b8cbf6ec45db" + integrity sha512-Qbno7FWom9nNqu0yHZ6A0+RWt4mrYBhw3wpBAQ3+IuzGcLlfeYkzZrnMq5wsxulN2np8M4KKeUpTodsOsSad5Q== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + +"@types/node@*": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.3.tgz#ee09fcaac513576474c327da5818d421b98db88a" + integrity sha512-/WbxFeBU+0F79z9RdEOXH4CsDga+ibi5M8uEYr91u3CkT/pdWcV8MCook+4wDPnZBexRdwWS+PiVZ2xJviAzcQ== + +"@types/parse5@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" + integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== + +"@types/qs@*": + version "6.9.6" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" + integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== + +"@types/range-parser@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/serve-static@*": + version "1.13.9" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" + integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/ws@^7.4.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.4.tgz#93e1e00824c1de2608c30e6de4303ab3b4c0c9bc" + integrity sha512-d/7W23JAXPodQNbOZNXvl2K+bqAQrCMwlh/nuQsPSQk6Fq0opHoPrUw43aHsvSbIiQPr8Of2hkFbnz1XBFVyZQ== + dependencies: + "@types/node" "*" + +"@web/config-loader@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@web/config-loader/-/config-loader-0.1.3.tgz#8325ea54f75ef2ee7166783e64e66936db25bff7" + integrity sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ== + dependencies: + semver "^7.3.4" + +"@web/dev-server-core@^0.3.12", "@web/dev-server-core@^0.3.3": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.3.12.tgz#99b8ed1a3b6a797dd52e08b3e8d5e499e5c017b2" + integrity sha512-PI7neqHvsgsE+GJnJNSjMGeWHSo8MgO99CAzVm6UtFeAjShmMGWp6WQTDJPzvsE4jnYhIg8EPwz2cqDIGnkU6A== + dependencies: + "@types/koa" "^2.11.6" + "@types/ws" "^7.4.0" + "@web/parse5-utils" "^1.2.0" + chokidar "^3.4.3" + clone "^2.1.2" + es-module-lexer "^0.4.0" + get-stream "^6.0.0" + is-stream "^2.0.0" + isbinaryfile "^4.0.6" + koa "^2.13.0" + koa-etag "^4.0.0" + koa-send "^5.0.1" + koa-static "^5.0.0" + lru-cache "^6.0.0" + mime-types "^2.1.27" + parse5 "^6.0.1" + picomatch "^2.2.2" + ws "^7.4.2" + +"@web/dev-server-rollup@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.3.3.tgz#784235a58ce4585bc353a26aba82b3d4466bbb1f" + integrity sha512-3v+PG9xC+Q07NOVTqqYuab/XqDQfWXltVzOI6HstBD0RWP7u7Bk4G0BwSjD3RNdIzyrTW//zCwyCN7UkHNhIBA== + dependencies: + "@web/dev-server-core" "^0.3.3" + chalk "^4.1.0" + parse5 "^6.0.1" + rollup "^2.35.1" + whatwg-url "^8.4.0" + +"@web/dev-server@^0.1.17": + version "0.1.17" + resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.1.17.tgz#3fad6d96f72f902c04ff27fef1c2ba5cc0eaf5e0" + integrity sha512-2gdOjkQp97uaORkOL8X90f4retqZ2lA9YqHDljpf4SFg0JWoY8X7EJA9XQG1jJ2x46oQ5zqJX7AiSWc47B2k6A== + dependencies: + "@babel/code-frame" "^7.12.11" + "@rollup/plugin-node-resolve" "^11.0.1" + "@types/command-line-args" "^5.0.0" + "@web/config-loader" "^0.1.3" + "@web/dev-server-core" "^0.3.12" + "@web/dev-server-rollup" "^0.3.3" + camelcase "^6.2.0" + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.1" + debounce "^1.2.0" + deepmerge "^4.2.2" + ip "^1.1.5" + open "^8.0.2" + portfinder "^1.0.28" + +"@web/parse5-utils@^1.2.0": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.2.2.tgz#33eec93321eb07cf364651c131b980a7afd8c4d7" + integrity sha512-B68DoJ5qF8Cu3o7nDA2RQTCf9bslVz2b0WHTk3qir5YCbWfhnPEGhDOedOjbE8xDiHqgzI1zXQsJ2+655aluLA== + dependencies: + "@types/parse5" "^5.0.3" + parse5 "^6.0.1" + +accepts@^1.3.5: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== @@ -10,11 +272,6 @@ accepts@~1.3.4: mime-types "~2.1.24" negotiator "0.6.2" -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= - angular-animate@^1.8.2: version "1.8.2" resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.8.2.tgz#a3045e523ffb8d7fcbebd3cb68d1fdd474665ced" @@ -40,236 +297,101 @@ angular@^1.8.2: resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.2.tgz#5983bbb5a9fa63e213cb7749199e0d352de3a2f1" integrity sha512-IauMOej2xEe7/7Ennahkbb5qd/HFADiNuLSESz9Q27inmi32zB0lnAsFeLEWcox3Gd1F6YhNd1CP7/9IukJ0Gw== -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0: +ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" +any-promise@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== - -async-each-series@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" - integrity sha1-dhfBkXQB/Yykooqtzj266Yr+tDI= - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -axios@0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" - integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== - dependencies: - follow-redirects "1.5.10" - is-buffer "^2.0.2" - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-arraybuffer@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" - integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= +array-back@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= +array-back@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.1.tgz#9b80312935a52062e1a233a9c7abeb5481b30e90" + integrity sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg== -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== dependencies: - callsite "1.0.0" + lodash "^4.17.14" binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== - -blob@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" - integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -braces@^3.0.1, braces@~3.0.2: +braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browser-sync-client@^2.26.13: - version "2.26.13" - resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.13.tgz#ee5fa3ec36fe2a03f9887553cac6846751c8232d" - integrity sha512-p2VbZoYrpuDhkreq+/Sv1MkToHklh7T1OaIntDwpG6Iy2q/XkBcgwPcWjX+WwRNiZjN8MEehxIjEUh12LweLmQ== - dependencies: - etag "1.8.1" - fresh "0.5.2" - mitt "^1.1.3" - rxjs "^5.5.6" - -browser-sync-ui@^2.26.13: - version "2.26.13" - resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.13.tgz#7a0622df2c1cc4fb0dd8edd511f90737f84239b4" - integrity sha512-6NJ/pCnhCnBMzaty1opWo7ipDmFAIk8U71JMQGKJxblCUaGfdsbF2shf6XNZSkXYia1yS0vwKu9LIOzpXqQZCA== - dependencies: - async-each-series "0.1.1" - connect-history-api-fallback "^1" - immutable "^3" - server-destroy "1.0.1" - socket.io-client "^2.0.4" - stream-throttle "^0.1.3" - -browser-sync@^2.26.13: - version "2.26.13" - resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.13.tgz#a74541c104aec7eda318a5d8abdb3317ae9eda3d" - integrity sha512-JPYLTngIzI+Dzx+StSSlMtF+Q9yjdh58HW6bMFqkFXuzQkJL8FCvp4lozlS6BbECZcsM2Gmlgp0uhEjvl18X4w== - dependencies: - browser-sync-client "^2.26.13" - browser-sync-ui "^2.26.13" - bs-recipes "1.3.4" - bs-snippet-injector "^2.0.1" - chokidar "^3.4.1" - connect "3.6.6" - connect-history-api-fallback "^1" - dev-ip "^1.0.1" - easy-extender "^2.3.4" - eazy-logger "3.1.0" - etag "^1.8.1" - fresh "^0.5.2" - fs-extra "3.0.1" - http-proxy "^1.18.1" - immutable "^3" - localtunnel "^2.0.0" - micromatch "^4.0.2" - opn "5.3.0" - portscanner "2.1.1" - qs "6.2.3" - raw-body "^2.3.2" - resp-modifier "6.0.2" - rx "4.1.0" - send "0.16.2" - serve-index "1.9.1" - serve-static "1.13.2" - server-destroy "1.0.1" - socket.io "2.1.1" - ua-parser-js "^0.7.18" - yargs "^15.4.1" - -bs-recipes@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" - integrity sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU= - -bs-snippet-injector@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz#61b5393f11f52559ed120693100343b6edb04dd5" - integrity sha1-YbU5PxH1JVntEgaTEANDtu2wTdU= +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +cache-content-type@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" + integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== + dependencies: + mime-types "^2.1.18" + ylru "^1.2.0" -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= +camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= +chalk@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -chokidar@^3.4.1: - version "3.4.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" - integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== +chokidar@^3.4.3: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -279,25 +401,17 @@ chokidar@^3.4.1: normalize-path "~3.0.0" readdirp "~3.5.0" optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.1" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= color-convert@^1.9.0: version "1.9.3" @@ -323,236 +437,152 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -commander@^2.2.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +command-line-args@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.1.1.tgz#88e793e5bb3ceb30754a86863f0401ac92fd369a" + integrity sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg== + dependencies: + array-back "^3.0.1" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= +command-line-usage@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.1.tgz#c908e28686108917758a49f45efb4f02f76bc03f" + integrity sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA== + dependencies: + array-back "^4.0.1" + chalk "^2.4.2" + table-layout "^1.0.1" + typical "^5.2.0" -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= +content-disposition@~0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" -component-emitter@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -connect-history-api-fallback@^1, connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -connect-logger@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/connect-logger/-/connect-logger-0.0.1.tgz#4d999978a1d20bb4608e7cd434d741652255174b" - integrity sha1-TZmZeKHSC7RgjnzUNNdBZSJVF0s= - dependencies: - moment "*" - -connect@3.6.6: - version "3.6.6" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" - integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= - dependencies: - debug "2.6.9" - finalhandler "1.1.0" - parseurl "~1.3.2" - utils-merge "1.0.1" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - -debug@2.6.9, debug@^2.2.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +content-type@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +cookies@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" + integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow== dependencies: - ms "2.0.0" + depd "~2.0.0" + keygrip "~1.1.0" -debug@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +debounce@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + +debug@^3.1.0, debug@^3.1.1: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@=3.1.0, debug@~3.1.0: +debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@^2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -destroy@~1.0.4: +destroy@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -dev-ip@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" - integrity sha1-p2o+0YVb56ASu4rBbLgPPADcKPA= - -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -easy-extender@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.4.tgz#298789b64f9aaba62169c77a2b3b64b4c9589b8f" - integrity sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q== - dependencies: - lodash "^4.17.10" - -eazy-logger@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.1.0.tgz#b169eb56df714608fa114f164c8a2956bec9f0f3" - integrity sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ== - dependencies: - tfunk "^4.0.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -encodeurl@~1.0.1, encodeurl@~1.0.2: +encodeurl@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -engine.io-client@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" - integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-client@~3.4.0: - version "3.4.4" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.4.tgz#77d8003f502b0782dd792b073a4d2cf7ca5ab967" - integrity sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ== - dependencies: - component-emitter "~1.3.0" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.2.0" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.6" - parseuri "0.0.6" - ws "~6.1.0" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" - integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" - blob "0.0.5" - has-binary2 "~1.0.2" - -engine.io-parser@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7" - integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== - dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.4" - blob "0.0.5" - has-binary2 "~1.0.2" - -engine.io@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" - integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== - dependencies: - accepts "~1.3.4" - base64id "1.0.0" - cookie "0.3.1" - debug "~3.1.0" - engine.io-parser "~2.1.0" - ws "~3.3.1" +es-module-lexer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" + integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== esbuild@^0.8.27: - version "0.8.27" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.27.tgz#8f7aa7d65229856c6ad11961b01b3e302fcb5e84" - integrity sha512-cY2i08EHYHNg0o748J+X0yBTcCO7DIZSxLWJ/6OymmML0Y2X6qkINfZcoiq5GE6EcLIfwyaZpI60JY6iBJWj5w== + version "0.8.57" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.57.tgz#a42d02bc2b57c70bcd0ef897fe244766bb6dd926" + integrity sha512-j02SFrUwFTRUqiY0Kjplwjm1psuzO1d6AjaXKuOR9hrY0HuPsT6sV42B6myW34h1q4CRy+Y3g4RU/cGJeI/nNA== -escape-html@~1.0.3: +escape-html@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@^1.0.2: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -etag@1.8.1, etag@^1.8.1, etag@~1.8.1: +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +etag@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -560,109 +590,73 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" - integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -find-up@^3.0.0: +find-replace@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" + array-back "^3.0.1" -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" - integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== - -fresh@0.5.2, fresh@^0.5.2: +fresh@~0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-extra@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" - integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-binary2@~1.0.2: +has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: - isarray "2.0.1" + function-bind "^1.1.1" -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= +http-assert@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878" + integrity sha512-rdw7q6GTlibqVVbXr0CKelfV5iY8G2HqEUkhSk297BMbSpSL8crXC+9rjKoMcZZEsksX30le6f/4ul4E28gegw== + dependencies: + deep-equal "~1.0.1" + http-errors "~1.7.2" -http-errors@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== +http-errors@^1.6.3, http-errors@^1.7.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" + integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== dependencies: depd "~1.1.2" inherits "2.0.4" - setprototypeof "1.1.1" + setprototypeof "1.2.0" statuses ">= 1.5.0 < 2" toidentifier "1.0.0" @@ -676,31 +670,16 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== dependencies: - safer-buffer ">= 2.1.2 < 3" - -immutable@^3: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" inherits@2.0.3: version "2.0.3" @@ -712,6 +691,11 @@ inherits@2.0.4: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -719,25 +703,27 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-core-module@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + dependencies: + has "^1.0.3" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.9.tgz#e5f82c2323673e7fcad3d12858c83c4039f6399c" + integrity sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A== is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" @@ -746,129 +732,165 @@ is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-number-like@^1.0.3: - version "1.0.8" - resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" - integrity sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA== - dependencies: - lodash.isfinite "^3.3.2" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" - integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= - optionalDependencies: - graceful-fs "^4.1.6" +isbinaryfile@^4.0.6: + version "4.0.8" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" + integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== -limiter@^1.0.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" - integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== - -lite-server@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/lite-server/-/lite-server-2.6.1.tgz#27281022c77c99673d0a820b998bc7e125cdbaa0" - integrity sha512-d3oyB/C8AU4EwYQHlLxcu6vTQDnCaLb81v1KKNYABmFS5oeJ11A+YxlqtpbTclID1AFddJfcB5klf0q98vYIMw== - dependencies: - browser-sync "^2.26.13" - connect-history-api-fallback "^1.6.0" - connect-logger "^0.0.1" - lodash "^4.17.20" - minimist "^1.2.5" +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -localtunnel@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-2.0.0.tgz#2ea71174fa80e34cce91b2a7ce416e6a57d9ff7c" - integrity sha512-g6E0aLgYYDvQDxIjIXkgJo2+pHj3sGg4Wz/XP3h2KtZnRsWPbOQY+hw1H8Z91jep998fkcVE9l+kghO+97vllg== +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== dependencies: - axios "0.19.0" - debug "4.1.1" - openurl "1.1.1" - yargs "13.3.0" + tsscmp "1.0.6" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== +koa-compose@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7" + integrity sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec= dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" + any-promise "^1.1.0" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== +koa-compose@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" + integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== + +koa-convert@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-1.2.0.tgz#da40875df49de0539098d1700b50820cebcd21d0" + integrity sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA= dependencies: - p-locate "^4.1.0" + co "^4.6.0" + koa-compose "^3.0.0" -lodash.isfinite@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" - integrity sha1-+4m2WpqAKBgz8LdHizpRBPiY67M= +koa-etag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/koa-etag/-/koa-etag-4.0.0.tgz#2c2bb7ae69ca1ac6ced09ba28dcb78523c810414" + integrity sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg== + dependencies: + etag "^1.8.1" -lodash@^4.17.10, lodash@^4.17.20: +koa-send@^5.0.0, koa-send@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/koa-send/-/koa-send-5.0.1.tgz#39dceebfafb395d0d60beaffba3a70b4f543fe79" + integrity sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ== + dependencies: + debug "^4.1.1" + http-errors "^1.7.3" + resolve-path "^1.4.0" + +koa-static@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/koa-static/-/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" + integrity sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ== + dependencies: + debug "^3.1.0" + koa-send "^5.0.0" + +koa@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.1.tgz#6275172875b27bcfe1d454356a5b6b9f5a9b1051" + integrity sha512-Lb2Dloc72auj5vK4X4qqL7B5jyDPQaZucc9sR/71byg7ryoD1NCaCm63CShk9ID9quQvDEi1bGR/iGjCG7As3w== + dependencies: + accepts "^1.3.5" + cache-content-type "^1.0.0" + content-disposition "~0.5.2" + content-type "^1.0.4" + cookies "~0.8.0" + debug "~3.1.0" + delegates "^1.0.0" + depd "^2.0.0" + destroy "^1.0.4" + encodeurl "^1.0.2" + escape-html "^1.0.3" + fresh "~0.5.2" + http-assert "^1.3.0" + http-errors "^1.6.3" + is-generator-function "^1.0.7" + koa-compose "^4.1.0" + koa-convert "^1.2.0" + on-finished "^2.3.0" + only "~0.0.2" + parseurl "^1.3.2" + statuses "^1.5.0" + type-is "^1.6.16" + vary "^1.1.2" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash@^4.17.14, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: - braces "^3.0.1" - picomatch "^2.0.5" + yallist "^4.0.0" -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" +mime-db@1.47.0: + version "1.47.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== - -minimatch@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.24: + version "2.1.30" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== dependencies: - brace-expansion "^1.1.7" + mime-db "1.47.0" minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mitt@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" - integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== +mkdirp@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" -moment@*, moment@^2.29.1: +moment@^2.29.1: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== @@ -878,6 +900,11 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" @@ -893,127 +920,65 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= - -on-finished@~2.3.0: +on-finished@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" -openurl@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" - integrity sha1-OHW0sO96UsFW8NtB1GCduw+Us4c= +only@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" + integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q= -opn@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" - integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== +open@^8.0.2: + version "8.0.8" + resolved "https://registry.yarnpkg.com/open/-/open-8.0.8.tgz#0e286bb2df3c72e00cb2a0203d604abee002dbdc" + integrity sha512-3XmKIU8+H/TVr8wB8C4vj0z748+yBydSvtpzZVS6vQ1dKNHB6AiPbhaoG+89zb80717GPk9y/7OvK0R6FXkNmQ== dependencies: - is-wsl "^1.1.0" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= - dependencies: - better-assert "~1.0.0" - -parseqs@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" - integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" - integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== - -parseurl@~1.3.2: +parseurl@^1.3.2: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-is-absolute@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" + integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== -portscanner@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" - integrity sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y= +portfinder@^1.0.28: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== dependencies: - async "1.5.2" - is-number-like "^1.0.3" - -qs@6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" - integrity sha1-HPyyXBCpsrSDBT/zn138kjOQjP4= + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" -range-parser@~1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@^2.3.2: - version "2.4.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" - integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== - dependencies: - bytes "3.1.0" - http-errors "1.7.3" - iconv-lite "0.4.24" - unpipe "1.0.0" +punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== readdirp@~3.5.0: version "3.5.0" @@ -1022,102 +987,45 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: +reduce-flatten@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== -resp-modifier@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" - integrity sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08= +resolve-path@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" + integrity sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc= dependencies: - debug "^2.2.0" - minimatch "^3.0.2" - -rx@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" - integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= + http-errors "~1.6.2" + path-is-absolute "1.0.1" -rxjs@^5.5.6: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== +resolve@^1.19.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== dependencies: - symbol-observable "1.0.1" + is-core-module "^2.2.0" + path-parse "^1.0.6" -safe-buffer@~5.1.0: +rollup@^2.35.1: + version "2.47.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.47.0.tgz#9d958aeb2c0f6a383cacc0401dff02b6e252664d" + integrity sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg== + optionalDependencies: + fsevents "~2.3.1" + +safe-buffer@5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== +semver@^7.3.4: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" - -serve-index@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" - -server-destroy@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" - integrity sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0= - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + lru-cache "^6.0.0" setprototypeof@1.1.0: version "1.1.0" @@ -1129,162 +1037,39 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -socket.io-adapter@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" - integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== - -socket.io-client@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" - integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.2.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.2.0" - to-array "0.1.4" - -socket.io-client@^2.0.4: - version "2.3.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.1.tgz#91a4038ef4d03c19967bb3c646fec6e0eaa78cff" - integrity sha512-YXmXn3pA8abPOY//JtYxou95Ihvzmg8U6kQyolArkIyLd0pgVhrfor/iMsox8cn07WCOOvvuJ6XKegzIucPutQ== - dependencies: - backo2 "1.0.2" - component-bind "1.0.0" - component-emitter "~1.3.0" - debug "~3.1.0" - engine.io-client "~3.4.0" - has-binary2 "~1.0.2" - indexof "0.0.1" - parseqs "0.0.6" - parseuri "0.0.6" - socket.io-parser "~3.3.0" - to-array "0.1.4" - -socket.io-parser@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" - integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== - dependencies: - component-emitter "1.2.1" - debug "~3.1.0" - isarray "2.0.1" - -socket.io-parser@~3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.1.tgz#f07d9c8cb3fb92633aa93e76d98fd3a334623199" - integrity sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ== - dependencies: - component-emitter "~1.3.0" - debug "~3.1.0" - isarray "2.0.1" - -socket.io@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" - integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== - dependencies: - debug "~3.1.0" - engine.io "~3.2.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.1.1" - socket.io-parser "~3.2.0" +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= - -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== - -stream-throttle@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" - integrity sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM= - dependencies: - commander "^2.2.0" - limiter "^1.0.5" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + has-flag "^3.0.0" -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - ansi-regex "^4.1.0" + has-flag "^4.0.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= - -tfunk@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-4.0.0.tgz#de9399feaf2060901d590b7faad80fcd5443077e" - integrity sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ== +table-layout@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== dependencies: - chalk "^1.1.3" - dlv "^1.1.3" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" to-regex-range@^5.0.1: version "5.0.1" @@ -1298,130 +1083,74 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -ua-parser-js@^0.7.18: - version "0.7.28" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" - integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +type-is@^1.6.16: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +vary@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== +whatwg-url@^8.4.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" + integrity sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + lodash "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" + reduce-flatten "^2.0.0" + typical "^5.2.0" -ws@~6.1.0: - version "6.1.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" - integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== - dependencies: - async-limiter "~1.0.0" +ws@^7.4.2: + version "7.4.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" + integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== -xmlhttprequest-ssl@~1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" - integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -y18n@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== - -yargs-parser@^13.1.1: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.1" - -yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= +ylru@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f" + integrity sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ== From 1c800b88fdc3f26652a0a01695a37ae5ea33d9b1 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 13 May 2021 21:00:11 -0400 Subject: [PATCH 214/226] upgrade esbuild to 0.11.20 --- dist/angular-material-datetimepicker.min.js | 2 +- dist/angular-material-datetimepicker.min.js.map | 2 +- dist/material-datetimepicker.min.css | 2 +- package.json | 2 +- yarn.lock | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index ef5fea2..8733bc0 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -(function(){"use strict";function P(o){var N="ngMaterialDatePicker",G="data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+",Q="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",M={DATE:0,HOUR:1,MINUTE:2},V=function(i,n){return i=angular.element(i),"getComputedStyle"in window?window.getComputedStyle(i[0])[n]:i.css(n)},H=`
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
`;angular.module(N,["ngMaterial"]).factory("mdcDefaultParams",function(){var i={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:H,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(n){if(n)for(var a in n)i.hasOwnProperty(a)&&n.hasOwnProperty(a)&&(i[a]=n[a]);return i}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$parse",function(i,n,a,r){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(t,s,f,e){var d=!1;t.format||(t.date&&t.time&&t.seconds?t.format="YYYY-MM-DD HH:mm:ss":t.date&&t.time?t.format="YYYY-MM-DD HH:mm":t.date?t.format="YYYY-MM-DD":t.format="HH:mm");var S=null;t.showTodaysDate!==void 0&&t.showTodaysDate!=="false"&&(S=o()),angular.isString(t.currentDate)&&t.currentDate!==""&&(t.currentDate=o(t.currentDate,t.format));var c;if(e){var u={"*":"$inherit",debounce:500};angular.version.major===1&&angular.version.minor>5?(e.$options=e.$options.createChild(u),e.$options.getOption("timezone")&&(c=e.$options.getOption("timezone"))):(t.ngModelOptions&&t.ngModelOptions.timezone&&(u.timezone=t.ngModelOptions.timezone),e.$options=u,e.$options.timezone&&(c=e.$options.timezone)),(c==="utc"||c==="UTC")&&(c=0),e.$formatters.push(function(D){if(typeof D=="undefined")return;var p=o(D);return p.isValid()?p.format(t.format):""}),e.$parsers.push(function(D){if(typeof D=="undefined")return;var p=o(D,t.format);return c!==void 0&&p.utcOffset(c,p._tzm===void 0),t.minDate&&e.$setValidity("min",!p.isBefore(t.minDate)),t.maxDate&&e.$setValidity("max",!p.isAfter(t.maxDate)),e.$setValidity("format",o(D,t.format,!0).isValid()),p.isValid()?p._isUTC?p:p.toDate():""})}function v(D){if(D.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),d)return;d=!0;var p={};for(var T in f)t.hasOwnProperty(T)&&!angular.isUndefined(t[T])&&(p[T]=t[T]);p.currentDate=t.currentDate,p.showTodaysDate=S;var l={controller:C,controllerAs:"picker",locals:{options:p},openFrom:s,closeTo:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:p.clickOutsideToClose||!1,disableParentScroll:p.disableParentScroll||!1,hasBackdrop:p.hasBackdrop===void 0?!0:p.hasBackdrop,skipHide:!0,multiple:!0};p.templateUrl?l.templateUrl=p.templateUrl:l.template=H,i.show(l).then(function(m){c!==void 0&&m.utcOffset(c,!0),t.currentDate=m&&!m._isUTC?m.toDate():m,e.$setValidity("format",!0),e.$setViewValue(t.currentDate),e.$setDirty(),d=!1,o(t.currentDate).isSame(p.currentDate)||n(t.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}if(t.editInput||(t.showIcon?s.on("click",v):s.on("focus",v)),t.showIcon){s.addClass("dtp-no-msclear dtp-input");var b='',y="";(t.showClear===void 0||t.showClear)&&(y="'),s.after(a(b+y)(t)),t.openCalendarDiag=function(D){v(D)},t.clear=function(){e.$setViewValue(null),t.currentDate=null,e.$render(),n(function(){t.ngChange(),s[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){var a={show:function(r){var t=n.defer();r.showTodaysDate!==void 0&&r.showTodaysDate!=="false"&&(r.showTodaysDate=o());var s={controller:C,controllerAs:"picker",locals:{options:r},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:r.clickOutsideToClose||!1,disableParentScroll:r.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:r.hasBackdrop===void 0?!0:r.hasBackdrop,targetEvent:r.targetEvent,openFrom:r.openFrom,closeTo:r.closeTo};return r.templateUrl?s.templateUrl=r.templateUrl:s.template=H,i.show(s).then(function(f){t.resolve(f&&!f._isUTC?f.toDate():f)},function(){t.reject()}),t.promise}};return a}]);var C=function(i,n){this.currentView=M.DATE,this._dialog=i,this._attachedEvents=[],this.VIEWS=M,this.params=angular.copy(n()),this.meridien="AM"};return C.$inject=["$mdDialog","mdcDefaultParams"],C.prototype={$onInit:function(){this.params=angular.extend(this.params,this.options),this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var i=this.params.minuteSteps;(i<1||i>59)&&(i=1);var n=this.currentDate||o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;return this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,o(n).minutes(a).seconds(r).millisecond(0)},initDates:function(){var i=this,n=function(a,r){var t=null;if(angular.isDefined(a)&&a!==null&&a!=="")if(angular.isString(a))typeof i.params.format!="undefined"&&i.params.format!==null?t=o(a,i.params.format).locale(i.params.lang):t=o(a).locale(i.params.lang);else if(typeof a=="number")t=o(a).locale(i.params.lang);else if(angular.isDate(a)){var s=a.getTime();t=o(s,"x").locale(i.params.lang)}else o.isMoment(a)&&(a.isValid()?t=a:t=r);else t=r;return t};this.currentDate=n(this.params.currentDate,o()),this.currentDate=this.currentNearestMinute(),this.minDate=n(this.params.minDate),this.maxDate=n(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(a){return o(a).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=M.DATE},initHours:function(){this.currentView=M.HOUR},initMinutes:function(){this.currentView=M.MINUTE},initSeconds:function(){this.currentView=M.SECOND},isAfterMinDate:function(i,n,a){var r=!0;if(typeof this.minDate!="undefined"&&this.minDate!==null){var t=o(this.minDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))>=parseInt(t.format("X"))}return r},isBeforeMaxDate:function(i,n,a){var r=!0;if(typeof this.maxDate!="undefined"&&this.maxDate!==null){var t=o(this.maxDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))<=parseInt(t.format("X"))}return r},isInDisableDates:function(i){var n=i.format("MMMM Do YYYY");return!(this.disableDates.indexOf(n)>-1)},isWeekDay:function(i){return this.weekDays?i.isoWeekday()<=5:!0},selectDate:function(i){i&&(this.currentDate=o(i),this.isAfterMinDate(this.currentDate,!0,!0)||(this.currentDate=o(this.minDate)),this.isBeforeMaxDate(this.currentDate,!0,!0)||(this.currentDate=o(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=o(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return this.meridien==="PM"},incrementMonth:function(i){(i===1&&this.isNextMonthVisible()||i===-1&&this.isPreviousMonthVisible())&&this.selectDate(this.currentDate.add(i,"month"))},incrementYear:function(i){(i===1&&this.isNextYearVisible()||i===-1&&this.isPreviousYearVisible())&&this.selectDate(this.currentDate.add(i,"year"))},openMenu:function(i,n){i.open(n)},monthsAvailable:function(){for(var i=[],n=o(this.currentDate),a=0;a<12;a++){var r=n.month(a);this.isAfterMinDate(r.endOf("month"))&&this.isBeforeMaxDate(r.startOf("month"))&&i.push(r.format("MMMM"))}return i},selectMonth:function(i){this.selectDate(this.currentDate.month(i))},yearsAvailable:function(){var i,n,a,r,t=[],s=this.currentDate.year();typeof this.minDate!="undefined"&&this.minDate!==null&&(i=o(this.minDate).year()),typeof this.maxDate!="undefined"&&this.maxDate!==null&&(n=o(this.maxDate).year()),n&&i?(a=n-i,r=i):i?(a=115,r=i):n?(a=30,r=n-a):(a=60,r=s-a/2);for(var f=0;f<=a;f++)t.push(r+f);return t},selectYear:function(i){this.selectDate(this.currentDate.year(i))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(i){var n=o(this.currentDate);return this.params.shortTime?n.hour(this.convertHours(i)).minute(0).second(0):n.hour(i).minute(0).second(0),this.isAfterMinDate(n,!0,!1)&&this.isBeforeMaxDate(n,!0,!1)},isMinuteAvailable:function(i){var n=o(this.currentDate);n.minute(i).second(0);var a=this.params.minuteSteps;if(a>1&&5%a!==0){var r=n.minute(),t=a*Math.round(r/a);if(t>=60&&(t=60-a),t!==r)return!1}return this.isAfterMinDate(n,!0,!0)&&this.isBeforeMaxDate(n,!0,!0)},isSecondAvailable:function(i){return!0},start:function(){this.currentView=M.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var i=this.params.minuteSteps,n=o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,this.selectDate(o(n).minutes(a).seconds(r).millisecond(0))},ok:function(){switch(this.currentView){case M.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case M.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case M.MINUTE:this.params.seconds===!0?this.initSeconds():this.hide(!0);break;case M.SECOND:this.hide(!0);break}},cancel:function(){if(this.params.time)switch(this.currentView){case M.DATE:this.hide();break;case M.HOUR:this.params.date?this.initDate():this.hide();break;case M.MINUTE:this.initHours();break;case M.SECOND:this.initMinutes();break}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(12)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(i){var n=i;return i<12&&this.isPM()&&(n+=12),n},hide:function(i){i?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(N).directive("mdcDatetimePickerCalendar",[function(){for(var i=1920,n=new Date().getFullYear()+30,a=(n-i+1)*12,r=[],t=0;t6&&(u=0),c.push(u.toString());if(e.week=c,!d.maxDate&&!d.minDate)e.months=r;else{var v=d.minDate?s(d.minDate):0,b=d.maxDate?s(d.maxDate)+1:a;e.months=r.slice(v,b)}e.topIndex=s(d.currentDate)-e.months[0]},angular.version.major===1&&angular.version.minor<5&&this.$onInit(),e.getItemAtIndex=function(c){var u=(c+1)%12||12,v=i+Math.floor(c/12),b=o(d.currentDate).year(v).month(u);return S(b)},f.$watch(function(){return d.currentDate?d.currentDate.format("YYYY-MM"):""},function(c,u){if(c!=u){var v=o(c,"YYYY-MM"),b=d.minDate?s(d.minDate):0,y=s(v,b);e.topIndex!=y&&(e.topIndex=y)}});var S=function(c){var u={};if(c!==null){u.name=c.format("MMMM YYYY");var v=o(c).locale(d.params.lang).startOf("month").hour(c.hour()).minute(c.minute()),b=v.format("d");u.days=[];for(var y=v.date();y<=v.daysInMonth();y++){if(y===v.date()){var D=e.week.indexOf(b.toString());if(D>0)for(var p=0;p
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(i){var n=function(a,r){var t=angular.element(a[0].querySelector("tbody")),s=r.cal,f=r.month,e=[];f.days.forEach(function(d,S){e.push(""),d.forEach(function(c,u){if(e.push(""),c)if(s.isInRange(c)){var v="month['days']["+S+"]["+u+"]";e.push(''),e.push(c.format("D")),e.push("")}else e.push(''),e.push(c.format("D")),e.push("");e.push("")}),e.push("")}),t.html(e.join("")),i(t)(r)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,r,t,s){a.cal=s,a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a),a.$watch(function(){return a.idx},function(f,e){f!=e&&(a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a))})}}}]),angular.module(N).directive("mdcDtpNoclick",function(){return{link:function(i,n){n.on("click",function(a){a.preventDefault()})}}}),angular.module(N).directive("mdcDatetimePickerClock",["$timeout",function(i){var n='';return{restrict:"E",template:n,link:function(a,r,t){var s=t.mode==="minutes",f=t.mode==="seconds",e=a.picker,d=document.querySelector("md-dialog.dtp"),S=function(l,m){var h=0;if(l=l>=360?0:l,l!==0){var g=s||f?60:12;h=Math.round(g/360*l)}if(s){var I=e.params.minuteSteps;(I<1||I>59)&&(I=1);var w=I*Math.round(h/I);if(w>=60&&(w=60-I),!a.pointAvailable({value:h}))return;e.currentDate.minute(w)}else if(f){if(h>=60&&(h=0),!a.pointAvailable({value:h}))return;e.currentDate.second(h)}else{if(h===12&&(h=0),e.params.shortTime||(e.meridien=m>84?"AM":"PM"),e.isPM()&&(h+=12),!a.pointAvailable({value:h}))return;e.currentDate.hour(h)}},c="ontouchstart"in window,u={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},v=function(l){l.preventDefault();var m=l.currentTarget.closest("div"),h=m.getClientRects()[0];c&&(l=l.changedTouches[0]);var g=m.offsetWidth/2-(l.pageX-h.left),I=l.pageY-h.top-m.offsetHeight/2,w=Math.sqrt(Math.pow(g,2)+Math.pow(I,2)),x=Math.round(Math.atan2(g,I)*(180/Math.PI));i(function(){S(x+180,w)})};r.on(u.POINTER_DOWN,function(){r.on(u.POINTER_MOVE,v)}),r.on(u.POINTER_UP,function(){r.off(u.POINTER_MOVE)}),a.$on("$destroy",function(){r.off(u.POINTER_MOVE,v)});var b=function(){var l=angular.element(r[0].querySelector(".dtp-picker-clock")),m=angular.element(d.querySelector(".dtp-picker")),h=d.querySelector(".dtp-content").offsetWidth,g=parseInt(V(m,"paddingLeft").replace("px",""))||0,I=parseInt(V(m,"paddingRight").replace("px",""))||0,w=parseInt(V(m,"paddingTop").replace("px",""))||0,x=parseInt(V(l,"marginLeft").replace("px",""))||0,K=parseInt(V(l,"marginRight").replace("px",""))||0,Y=parseInt(V(l,"marginTop").replace("px",""))||0,$=h-(x+K+g+I);l.css("width",$+"px");for(var k=$/2,U=k/1.2,W=[],A=0;A<12;++A){var ee=U*Math.sin(Math.PI*2*(A/12)),te=U*Math.cos(Math.PI*2*(A/12)),B=k+ee+g/2-(g+x),j=k-te-Y/2-(w+Y),E={left:B,top:j,value:s||f?A*5:A,style:{"margin-left":B+"px","margin-top":j+"px"}};s||f?E.display=E.value<10?"0"+E.value:E.value:e.params.shortTime?E.display=A===0?12:A:E.display=A,W.push(E)}if(a.points=W,!e.params.shortTime&&!s&&!f){for(var R=[],z=k/1.8,O=12;O<24;++O){var ae=z*Math.sin(Math.PI*2*(O/12)),ie=z*Math.cos(Math.PI*2*(O/12)),q=k+ae+g/2-(g+x),Z=k-ie-Y/2-(w+Y);R.push({left:q,top:Z,value:O,display:O,style:{"margin-left":q+"px","margin-top":Z+"px"}})}a.points24=R}a.mode=t.mode,p(),l.css("height",$+"px");var L=r[0].querySelector(".dtp-clock-center"),re=L.offsetWidth/2||7.5,ne=L.offsetHeight/2||7.5,_=k/(e.params.shortTime?1.8:2.3),X=k/1.4,F=k;angular.element(r[0].querySelector(".dtp-hour-hand")).css({left:k+x*1.5+"px",height:_+"px",marginTop:k-_-g+"px"}).addClass(!s&&!f?"on":""),angular.element(r[0].querySelector(".dtp-minute-hand")).css({left:k+x*1.5+"px",height:X+"px",marginTop:k-X-g+"px"}).addClass(s?"on":""),angular.element(r[0].querySelector(".dtp-second-hand")).css({left:k+x*1.5+"px",height:F+"px",marginTop:k-F-g+"px"}).addClass(f?"on":""),angular.element(L).css({left:k+g+x-re+"px",marginTop:k-x/2-ne+"px"}),y()},y=function(){var l=e.currentNearestMinute(),m=l.hour(),h=l.minute(),g=l.second();D(angular.element(r[0].querySelector(".dtp-hour-hand")),30*m),D(angular.element(r[0].querySelector(".dtp-minute-hand")),6*h),D(angular.element(r[0].querySelector(".dtp-second-hand")),6*g)},D=function(l,m){angular.element(l).css({WebkitTransform:"rotate("+m+"deg)","-moz-transform":"rotate("+m+"deg)","-ms-transform":"rotate("+m+"deg)",transform:"rotate("+m+"deg)"})},p=function(){var l=e.currentNearestMinute(),m=e.params.shortTime?12:24;s?a.currentValue=l.minute():f?a.currentValue=l.second():a.currentValue=l.hour()%m};a.$watch(function(){var l=e.currentNearestMinute();return l?l.format("HH:mm:ss"):""},function(){p(),y()}),a.setTime=function(l){!s&&!f?(l===a.currentValue&&!e.params.autoOk&&e.ok(),e.params.shortTime?e.currentDate.hour(e.isPM()?l+12:l):(e.currentDate.hour(l),l>=12?e.meridien="PM":e.meridien="AM"),e.params.autoOk&&e.ok()):f?(l===a.currentValue&&e.ok(),e.currentDate.second(l)):(l===a.currentValue&&!e.params.seconds&&e.ok(),e.currentDate.minute(l),e.params.seconds?e.params.autoOk&&e.ok():e.currentDate.second(0))},a.pointAvailable=function(l){return s?e.isMinuteAvailable(l.value):f?e.isSecondAvailable(l.value):e.isHourAvailable(l.value)};var T=a.$watch(function(){return r[0].querySelectorAll("div").length},function(){b(),T()})}}}]),N}var J=window&&window.process&&window.process.type;typeof define=="function"&&define.amd?define(["moment"],P):typeof module!="undefined"&&module&&module.exports&&typeof require=="function"&&!J?module.exports=P(require("moment")):P((typeof global!="undefined"?global:window).moment)})(); +(function(){"use strict";function P(o){var N="ngMaterialDatePicker",G="data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+",Q="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",M={DATE:0,HOUR:1,MINUTE:2},V=function(i,n){return i=angular.element(i),"getComputedStyle"in window?window.getComputedStyle(i[0])[n]:i.css(n)},H=`
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
`;angular.module(N,["ngMaterial"]).factory("mdcDefaultParams",function(){var i={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:H,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(n){if(n)for(var a in n)i.hasOwnProperty(a)&&n.hasOwnProperty(a)&&(i[a]=n[a]);return i}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$parse",function(i,n,a,r){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(t,s,f,e){var d=!1;t.format||(t.date&&t.time&&t.seconds?t.format="YYYY-MM-DD HH:mm:ss":t.date&&t.time?t.format="YYYY-MM-DD HH:mm":t.date?t.format="YYYY-MM-DD":t.format="HH:mm");var S=null;t.showTodaysDate!==void 0&&t.showTodaysDate!=="false"&&(S=o()),angular.isString(t.currentDate)&&t.currentDate!==""&&(t.currentDate=o(t.currentDate,t.format));var c;if(e){var u={"*":"$inherit",debounce:500};angular.version.major===1&&angular.version.minor>5?(e.$options=e.$options.createChild(u),e.$options.getOption("timezone")&&(c=e.$options.getOption("timezone"))):(t.ngModelOptions&&t.ngModelOptions.timezone&&(u.timezone=t.ngModelOptions.timezone),e.$options=u,e.$options.timezone&&(c=e.$options.timezone)),(c==="utc"||c==="UTC")&&(c=0),e.$formatters.push(function(D){if(typeof D!="undefined"){var p=o(D);return p.isValid()?p.format(t.format):""}}),e.$parsers.push(function(D){if(typeof D!="undefined"){var p=o(D,t.format);return c!==void 0&&p.utcOffset(c,p._tzm===void 0),t.minDate&&e.$setValidity("min",!p.isBefore(t.minDate)),t.maxDate&&e.$setValidity("max",!p.isAfter(t.maxDate)),e.$setValidity("format",o(D,t.format,!0).isValid()),p.isValid()?p._isUTC?p:p.toDate():""}})}function v(D){if(D.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var p={};for(var T in f)t.hasOwnProperty(T)&&!angular.isUndefined(t[T])&&(p[T]=t[T]);p.currentDate=t.currentDate,p.showTodaysDate=S;var l={controller:C,controllerAs:"picker",locals:{options:p},openFrom:s,closeTo:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:p.clickOutsideToClose||!1,disableParentScroll:p.disableParentScroll||!1,hasBackdrop:p.hasBackdrop===void 0?!0:p.hasBackdrop,skipHide:!0,multiple:!0};p.templateUrl?l.templateUrl=p.templateUrl:l.template=H,i.show(l).then(function(m){c!==void 0&&m.utcOffset(c,!0),t.currentDate=m&&!m._isUTC?m.toDate():m,e.$setValidity("format",!0),e.$setViewValue(t.currentDate),e.$setDirty(),d=!1,o(t.currentDate).isSame(p.currentDate)||n(t.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}}if(t.editInput||(t.showIcon?s.on("click",v):s.on("focus",v)),t.showIcon){s.addClass("dtp-no-msclear dtp-input");var b='',y="";(t.showClear===void 0||t.showClear)&&(y="'),s.after(a(b+y)(t)),t.openCalendarDiag=function(D){v(D)},t.clear=function(){e.$setViewValue(null),t.currentDate=null,e.$render(),n(function(){t.ngChange(),s[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){var a={show:function(r){var t=n.defer();r.showTodaysDate!==void 0&&r.showTodaysDate!=="false"&&(r.showTodaysDate=o());var s={controller:C,controllerAs:"picker",locals:{options:r},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:r.clickOutsideToClose||!1,disableParentScroll:r.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:r.hasBackdrop===void 0?!0:r.hasBackdrop,targetEvent:r.targetEvent,openFrom:r.openFrom,closeTo:r.closeTo};return r.templateUrl?s.templateUrl=r.templateUrl:s.template=H,i.show(s).then(function(f){t.resolve(f&&!f._isUTC?f.toDate():f)},function(){t.reject()}),t.promise}};return a}]);var C=function(i,n){this.currentView=M.DATE,this._dialog=i,this._attachedEvents=[],this.VIEWS=M,this.params=angular.copy(n()),this.meridien="AM"};return C.$inject=["$mdDialog","mdcDefaultParams"],C.prototype={$onInit:function(){this.params=angular.extend(this.params,this.options),this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var i=this.params.minuteSteps;(i<1||i>59)&&(i=1);var n=this.currentDate||o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;return this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,o(n).minutes(a).seconds(r).millisecond(0)},initDates:function(){var i=this,n=function(a,r){var t=null;if(angular.isDefined(a)&&a!==null&&a!=="")if(angular.isString(a))typeof i.params.format!="undefined"&&i.params.format!==null?t=o(a,i.params.format).locale(i.params.lang):t=o(a).locale(i.params.lang);else if(typeof a=="number")t=o(a).locale(i.params.lang);else if(angular.isDate(a)){var s=a.getTime();t=o(s,"x").locale(i.params.lang)}else o.isMoment(a)&&(a.isValid()?t=a:t=r);else t=r;return t};this.currentDate=n(this.params.currentDate,o()),this.currentDate=this.currentNearestMinute(),this.minDate=n(this.params.minDate),this.maxDate=n(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(a){return o(a).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=M.DATE},initHours:function(){this.currentView=M.HOUR},initMinutes:function(){this.currentView=M.MINUTE},initSeconds:function(){this.currentView=M.SECOND},isAfterMinDate:function(i,n,a){var r=!0;if(typeof this.minDate!="undefined"&&this.minDate!==null){var t=o(this.minDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))>=parseInt(t.format("X"))}return r},isBeforeMaxDate:function(i,n,a){var r=!0;if(typeof this.maxDate!="undefined"&&this.maxDate!==null){var t=o(this.maxDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))<=parseInt(t.format("X"))}return r},isInDisableDates:function(i){var n=i.format("MMMM Do YYYY");return!(this.disableDates.indexOf(n)>-1)},isWeekDay:function(i){return this.weekDays?i.isoWeekday()<=5:!0},selectDate:function(i){i&&(this.currentDate=o(i),this.isAfterMinDate(this.currentDate,!0,!0)||(this.currentDate=o(this.minDate)),this.isBeforeMaxDate(this.currentDate,!0,!0)||(this.currentDate=o(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=o(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return this.meridien==="PM"},incrementMonth:function(i){(i===1&&this.isNextMonthVisible()||i===-1&&this.isPreviousMonthVisible())&&this.selectDate(this.currentDate.add(i,"month"))},incrementYear:function(i){(i===1&&this.isNextYearVisible()||i===-1&&this.isPreviousYearVisible())&&this.selectDate(this.currentDate.add(i,"year"))},openMenu:function(i,n){i.open(n)},monthsAvailable:function(){for(var i=[],n=o(this.currentDate),a=0;a<12;a++){var r=n.month(a);this.isAfterMinDate(r.endOf("month"))&&this.isBeforeMaxDate(r.startOf("month"))&&i.push(r.format("MMMM"))}return i},selectMonth:function(i){this.selectDate(this.currentDate.month(i))},yearsAvailable:function(){var i,n,a,r,t=[],s=this.currentDate.year();typeof this.minDate!="undefined"&&this.minDate!==null&&(i=o(this.minDate).year()),typeof this.maxDate!="undefined"&&this.maxDate!==null&&(n=o(this.maxDate).year()),n&&i?(a=n-i,r=i):i?(a=115,r=i):n?(a=30,r=n-a):(a=60,r=s-a/2);for(var f=0;f<=a;f++)t.push(r+f);return t},selectYear:function(i){this.selectDate(this.currentDate.year(i))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(i){var n=o(this.currentDate);return this.params.shortTime?n.hour(this.convertHours(i)).minute(0).second(0):n.hour(i).minute(0).second(0),this.isAfterMinDate(n,!0,!1)&&this.isBeforeMaxDate(n,!0,!1)},isMinuteAvailable:function(i){var n=o(this.currentDate);n.minute(i).second(0);var a=this.params.minuteSteps;if(a>1&&5%a!=0){var r=n.minute(),t=a*Math.round(r/a);if(t>=60&&(t=60-a),t!==r)return!1}return this.isAfterMinDate(n,!0,!0)&&this.isBeforeMaxDate(n,!0,!0)},isSecondAvailable:function(i){return!0},start:function(){this.currentView=M.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var i=this.params.minuteSteps,n=o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,this.selectDate(o(n).minutes(a).seconds(r).millisecond(0))},ok:function(){switch(this.currentView){case M.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case M.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case M.MINUTE:this.params.seconds===!0?this.initSeconds():this.hide(!0);break;case M.SECOND:this.hide(!0);break}},cancel:function(){if(this.params.time)switch(this.currentView){case M.DATE:this.hide();break;case M.HOUR:this.params.date?this.initDate():this.hide();break;case M.MINUTE:this.initHours();break;case M.SECOND:this.initMinutes();break}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(12)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(i){var n=i;return i<12&&this.isPM()&&(n+=12),n},hide:function(i){i?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(N).directive("mdcDatetimePickerCalendar",[function(){for(var i=1920,n=new Date().getFullYear()+30,a=(n-i+1)*12,r=[],t=0;t6&&(u=0),c.push(u.toString());if(e.week=c,!d.maxDate&&!d.minDate)e.months=r;else{var v=d.minDate?s(d.minDate):0,b=d.maxDate?s(d.maxDate)+1:a;e.months=r.slice(v,b)}e.topIndex=s(d.currentDate)-e.months[0]},angular.version.major===1&&angular.version.minor<5&&this.$onInit(),e.getItemAtIndex=function(c){var u=(c+1)%12||12,v=i+Math.floor(c/12),b=o(d.currentDate).year(v).month(u);return S(b)},f.$watch(function(){return d.currentDate?d.currentDate.format("YYYY-MM"):""},function(c,u){if(c!=u){var v=o(c,"YYYY-MM"),b=d.minDate?s(d.minDate):0,y=s(v,b);e.topIndex!=y&&(e.topIndex=y)}});var S=function(c){var u={};if(c!==null){u.name=c.format("MMMM YYYY");var v=o(c).locale(d.params.lang).startOf("month").hour(c.hour()).minute(c.minute()),b=v.format("d");u.days=[];for(var y=v.date();y<=v.daysInMonth();y++){if(y===v.date()){var D=e.week.indexOf(b.toString());if(D>0)for(var p=0;p
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(i){var n=function(a,r){var t=angular.element(a[0].querySelector("tbody")),s=r.cal,f=r.month,e=[];f.days.forEach(function(d,S){e.push(""),d.forEach(function(c,u){if(e.push(""),c)if(s.isInRange(c)){var v="month['days']["+S+"]["+u+"]";e.push(''),e.push(c.format("D")),e.push("")}else e.push(''),e.push(c.format("D")),e.push("");e.push("")}),e.push("")}),t.html(e.join("")),i(t)(r)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,r,t,s){a.cal=s,a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a),a.$watch(function(){return a.idx},function(f,e){f!=e&&(a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a))})}}}]),angular.module(N).directive("mdcDtpNoclick",function(){return{link:function(i,n){n.on("click",function(a){a.preventDefault()})}}}),angular.module(N).directive("mdcDatetimePickerClock",["$timeout",function(i){var n='';return{restrict:"E",template:n,link:function(a,r,t){var s=t.mode==="minutes",f=t.mode==="seconds",e=a.picker,d=document.querySelector("md-dialog.dtp"),S=function(l,m){var h=0;if(l=l>=360?0:l,l!==0){var g=s||f?60:12;h=Math.round(g/360*l)}if(s){var I=e.params.minuteSteps;(I<1||I>59)&&(I=1);var w=I*Math.round(h/I);if(w>=60&&(w=60-I),!a.pointAvailable({value:h}))return;e.currentDate.minute(w)}else if(f){if(h>=60&&(h=0),!a.pointAvailable({value:h}))return;e.currentDate.second(h)}else{if(h===12&&(h=0),e.params.shortTime||(e.meridien=m>84?"AM":"PM"),e.isPM()&&(h+=12),!a.pointAvailable({value:h}))return;e.currentDate.hour(h)}},c="ontouchstart"in window,u={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},v=function(l){l.preventDefault();var m=l.currentTarget.closest("div"),h=m.getClientRects()[0];c&&(l=l.changedTouches[0]);var g=m.offsetWidth/2-(l.pageX-h.left),I=l.pageY-h.top-m.offsetHeight/2,w=Math.sqrt(Math.pow(g,2)+Math.pow(I,2)),x=Math.round(Math.atan2(g,I)*(180/Math.PI));i(function(){S(x+180,w)})};r.on(u.POINTER_DOWN,function(){r.on(u.POINTER_MOVE,v)}),r.on(u.POINTER_UP,function(){r.off(u.POINTER_MOVE)}),a.$on("$destroy",function(){r.off(u.POINTER_MOVE,v)});var b=function(){var l=angular.element(r[0].querySelector(".dtp-picker-clock")),m=angular.element(d.querySelector(".dtp-picker")),h=d.querySelector(".dtp-content").offsetWidth,g=parseInt(V(m,"paddingLeft").replace("px",""))||0,I=parseInt(V(m,"paddingRight").replace("px",""))||0,w=parseInt(V(m,"paddingTop").replace("px",""))||0,x=parseInt(V(l,"marginLeft").replace("px",""))||0,K=parseInt(V(l,"marginRight").replace("px",""))||0,Y=parseInt(V(l,"marginTop").replace("px",""))||0,$=h-(x+K+g+I);l.css("width",$+"px");for(var k=$/2,U=k/1.2,W=[],A=0;A<12;++A){var ee=U*Math.sin(Math.PI*2*(A/12)),te=U*Math.cos(Math.PI*2*(A/12)),B=k+ee+g/2-(g+x),j=k-te-Y/2-(w+Y),E={left:B,top:j,value:s||f?A*5:A,style:{"margin-left":B+"px","margin-top":j+"px"}};s||f?E.display=E.value<10?"0"+E.value:E.value:e.params.shortTime?E.display=A===0?12:A:E.display=A,W.push(E)}if(a.points=W,!e.params.shortTime&&!s&&!f){for(var R=[],z=k/1.8,O=12;O<24;++O){var ae=z*Math.sin(Math.PI*2*(O/12)),ie=z*Math.cos(Math.PI*2*(O/12)),q=k+ae+g/2-(g+x),Z=k-ie-Y/2-(w+Y);R.push({left:q,top:Z,value:O,display:O,style:{"margin-left":q+"px","margin-top":Z+"px"}})}a.points24=R}a.mode=t.mode,p(),l.css("height",$+"px");var L=r[0].querySelector(".dtp-clock-center"),re=L.offsetWidth/2||7.5,ne=L.offsetHeight/2||7.5,_=k/(e.params.shortTime?1.8:2.3),X=k/1.4,F=k;angular.element(r[0].querySelector(".dtp-hour-hand")).css({left:k+x*1.5+"px",height:_+"px",marginTop:k-_-g+"px"}).addClass(!s&&!f?"on":""),angular.element(r[0].querySelector(".dtp-minute-hand")).css({left:k+x*1.5+"px",height:X+"px",marginTop:k-X-g+"px"}).addClass(s?"on":""),angular.element(r[0].querySelector(".dtp-second-hand")).css({left:k+x*1.5+"px",height:F+"px",marginTop:k-F-g+"px"}).addClass(f?"on":""),angular.element(L).css({left:k+g+x-re+"px",marginTop:k-x/2-ne+"px"}),y()},y=function(){var l=e.currentNearestMinute(),m=l.hour(),h=l.minute(),g=l.second();D(angular.element(r[0].querySelector(".dtp-hour-hand")),30*m),D(angular.element(r[0].querySelector(".dtp-minute-hand")),6*h),D(angular.element(r[0].querySelector(".dtp-second-hand")),6*g)},D=function(l,m){angular.element(l).css({WebkitTransform:"rotate("+m+"deg)","-moz-transform":"rotate("+m+"deg)","-ms-transform":"rotate("+m+"deg)",transform:"rotate("+m+"deg)"})},p=function(){var l=e.currentNearestMinute(),m=e.params.shortTime?12:24;s?a.currentValue=l.minute():f?a.currentValue=l.second():a.currentValue=l.hour()%m};a.$watch(function(){var l=e.currentNearestMinute();return l?l.format("HH:mm:ss"):""},function(){p(),y()}),a.setTime=function(l){!s&&!f?(l===a.currentValue&&!e.params.autoOk&&e.ok(),e.params.shortTime?e.currentDate.hour(e.isPM()?l+12:l):(e.currentDate.hour(l),l>=12?e.meridien="PM":e.meridien="AM"),e.params.autoOk&&e.ok()):f?(l===a.currentValue&&e.ok(),e.currentDate.second(l)):(l===a.currentValue&&!e.params.seconds&&e.ok(),e.currentDate.minute(l),e.params.seconds?e.params.autoOk&&e.ok():e.currentDate.second(0))},a.pointAvailable=function(l){return s?e.isMinuteAvailable(l.value):f?e.isSecondAvailable(l.value):e.isHourAvailable(l.value)};var T=a.$watch(function(){return r[0].querySelectorAll("div").length},function(){b(),T()})}}}]),N}var J=window&&window.process&&window.process.type;typeof define=="function"&&define.amd?define(["moment"],P):typeof module!="undefined"&&module&&module.exports&&typeof require=="function"&&!J?module.exports=P(require("moment")):P((typeof global!="undefined"?global:window).moment)})(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index ab29bdd..f23c889 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../js/angular-material-datetimepicker.js"], "sourcesContent": ["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse',\r\n function ($mdDialog, $timeout, $compile, $parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '', clearButton = '';\r\n\r\n if (scope.showClear === undefined || scope.showClear) {\r\n clearButton = '';\r\n }\r\n \r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n $onInit: function () {\r\n this.params = angular.extend(this.params, this.options);\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"], - "mappings": "AAAA,AAAC,YACC,aAEA,WAA8B,GAC9B,MAAiB,yBACC,+fACD,uVACC,CAAC,KAAM,EAAG,KAAM,EAAG,OAAQ,KAEnC,cACR,SAAK,QAAQ,QAAQ,GACb,oBAAsB,QAAU,OAAO,iBAAiB,EAAG,IAAI,GAAQ,EAAG,IAAI,MAItF,kzNA4EF,QAAQ,OAAO,EAAY,CAAC,eACzB,QAAQ,mBAAoB,WAC3B,MAAqB,CACnB,KAAM,GACN,KAAM,GACN,QAAS,GACT,QAAS,GACT,OAAQ,aACR,QAAS,KACT,QAAS,KACT,YAAa,KACb,KAAM,OAAO,UAAU,cAAgB,OAAO,UAAU,UAAY,KACpE,UAAW,EACX,UAAW,GACX,WAAY,SACZ,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,SAAU,GACV,UAAW,QACX,aAAc,GACd,SAAU,GACV,oBAAqB,GACrB,OAAQ,GACR,UAAW,GACX,oBAAqB,GACrB,YAAa,EACb,SAAU,GACV,UAAW,GACX,SAAU,EACV,YAAa,GACb,YAAa,KACb,SAAU,KACV,QAAS,KACT,aAAc,EACd,YAAa,IAGf,MAAO,aACL,GAAI,EACF,YAAc,GACZ,AAAI,EAAe,eAAe,IAAM,EAAO,eAAe,IAAI,GAAe,GAAK,EAAO,IAGjG,MAAO,MAGV,UAAU,oBAAqB,CAAC,YAAa,WAAY,WAAY,SACpE,kBACE,MAAO,CACL,SAAU,IACV,QAAS,UACT,MAAO,CACL,YAAa,WACb,eAAgB,IAChB,SAAU,IACV,KAAM,IACN,KAAM,IACN,QAAS,IACT,QAAS,IACT,QAAS,IACT,QAAS,IACT,aAAc,IACd,SAAU,IACV,UAAW,IACX,UAAW,IACX,OAAQ,IACR,WAAY,IACZ,OAAQ,IACR,KAAM,IACN,OAAQ,IACR,OAAQ,IACR,eAAgB,IAChB,SAAU,IACV,UAAW,IACX,oBAAqB,IACrB,OAAQ,IACR,UAAW,IACX,oBAAqB,IACrB,YAAa,IACb,SAAU,IACV,UAAW,IACX,YAAa,IACb,aAAc,IACd,YAAa,KAEf,KAAM,kBACJ,MAAW,GACX,AAAK,EAAM,QACT,CAAI,EAAM,MAAQ,EAAM,MAAQ,EAAM,QAAS,EAAM,OAAS,sBACzD,AAAI,EAAM,MAAQ,EAAM,KAAM,EAAM,OAAS,mBAC7C,AAAI,EAAM,KAAM,EAAM,OAAS,aAC/B,EAAM,OAAS,SAGtB,MAAmB,KACnB,AAAI,EAAM,iBAAmB,QAAa,EAAM,iBAAmB,SACjE,GAAe,KAGjB,AAAI,QAAQ,SAAS,EAAM,cAAgB,EAAM,cAAgB,IAC/D,GAAM,YAAc,EAAO,EAAM,YAAa,EAAM,SAGtD,MACA,GAAI,GACF,MAAqB,CAAC,IAAK,WAAY,SAAU,KACjD,AAAI,QAAQ,QAAQ,QAAU,GAAK,QAAQ,QAAQ,MAAQ,EACzD,GAAQ,SAAW,EAAQ,SAAS,YAAY,GAChD,AAAI,EAAQ,SAAS,UAAU,aAAa,GAAS,EAAQ,SAAS,UAAU,cAEhF,CAAI,EAAM,gBAAkB,EAAM,eAAe,UAAU,GAAe,SAAW,EAAM,eAAe,UAC1G,EAAQ,SAAW,EACnB,AAAI,EAAQ,SAAS,UAAU,GAAS,EAAQ,SAAS,WAE3D,AAAI,KAAS,OAAS,IAAS,QAAO,GAAS,GAE/C,EAAQ,YAAY,KAAK,YACvB,GAAI,MAAO,IAAU,YAAa,OAClC,MAAQ,EAAO,GACf,MAAO,GAAE,UAAY,EAAE,OAAO,EAAM,QAAU,KAGhD,EAAQ,SAAS,KAAK,YACpB,GAAI,MAAO,IAAU,YAAa,OAElC,MAAQ,EAAO,EAAO,EAAM,QAC5B,MAAI,KAAW,QAAW,EAAE,UAAU,EAAQ,EAAE,OAAS,QACzD,AAAI,EAAM,SAAS,EAAQ,aAAa,MAAO,CAAC,EAAE,SAAS,EAAM,UACjE,AAAI,EAAM,SAAS,EAAQ,aAAa,MAAO,CAAC,EAAE,QAAQ,EAAM,UAChE,EAAQ,aAAa,SAAU,EAAO,EAAO,EAAM,OAAQ,IAAM,WAE1D,EAAE,UAAa,EAAE,OAAS,EAAI,EAAE,SAAY,KAKvD,cAIE,GAHA,EAAE,iBACF,EAAQ,OACR,EAAQ,SAAS,YAAY,oBACzB,EACF,OAEF,EAAO,GACP,MAAc,GACd,YAAc,GACZ,AAAI,EAAM,eAAe,IAAM,CAAC,QAAQ,YAAY,EAAM,KACxD,GAAQ,GAAK,EAAM,IAGvB,EAAQ,YAAc,EAAM,YAC5B,EAAQ,eAAiB,EAEzB,MAAoB,CAClB,WAAY,EACZ,aAAc,SACd,OAAQ,CAAC,QAAS,GAClB,SAAU,EACV,QAAS,EACT,OAAQ,QAAQ,QAAQ,SAAS,MACjC,iBAAkB,GAClB,oBAAqB,EAAQ,qBAAuB,GACpD,oBAAqB,EAAQ,qBAAuB,GACpD,YAAa,EAAQ,cAAgB,OAAY,GAAO,EAAQ,YAChE,SAAU,GACV,SAAU,IAGZ,AAAK,EAAQ,YACR,EAAc,YAAc,EAAQ,YADf,EAAc,SAAW,EAGnD,EAAU,KAAK,GAAe,KAAK,YAEjC,AAAI,IAAW,QAAW,EAAE,UAAU,EAAQ,IAE9C,EAAM,YAAc,GAAK,CAAC,EAAE,OAAS,EAAE,SAAW,EAClD,EAAQ,aAAa,SAAU,IAC/B,EAAQ,cAAc,EAAM,aAC5B,EAAQ,YACR,EAAO,GAEP,AAAK,EAAO,EAAM,aAAa,OAAO,EAAQ,cAC5C,EAAS,EAAM,SAAU,GAG3B,EAAQ,SAAS,YAAY,qBAC5B,WACD,EAAO,GACP,EAAQ,SAAS,YAAY,sBAYjC,GARA,AAAK,EAAM,WACT,CAAI,EAAM,SACR,EAAQ,GAAG,QAAS,GAEpB,EAAQ,GAAG,QAAS,IAIpB,EAAM,UACR,EAAQ,SAAS,4BACjB,MACA,oGAEG,GAAO,EAAM,cAAgB,YAAc,IAC5C,qFACoD,GAAM,KAAO,EAAa,GAAe,6BACjE,GAE9B,AAAI,GAAM,YAAc,QAAa,EAAM,YACzC,GAAc,cACb,GAAO,EAAM,cAAgB,YAAc,IAC5C,qHAGF,EAAQ,MAAM,EAAS,EAAiB,GAAa,IAErD,EAAM,iBAAmB,YACvB,EAAa,IAGf,EAAM,MAAQ,WACZ,EAAQ,cAAc,MACtB,EAAM,YAAc,KACpB,EAAQ,UACR,EAAS,WACP,EAAM,WACN,EAAQ,GAAG,SACV,EAAG,WAOjB,QAAQ,oBAAqB,CAAC,YAAa,KAAM,cAChD,MAAc,CACZ,KAAM,YACJ,MAAe,EAAG,QAElB,AAAI,EAAQ,iBAAmB,QAAa,EAAQ,iBAAmB,SAAS,GAAQ,eAAiB,KAEzG,MAAoB,CAChB,WAAY,EACZ,aAAc,SACd,OAAQ,CAAC,QAAS,GAClB,OAAQ,QAAQ,QAAQ,SAAS,MACjC,iBAAkB,GAClB,oBAAqB,EAAQ,qBAAuB,GACpD,oBAAqB,EAAQ,qBAAuB,GACpD,SAAU,GACV,SAAU,GACV,YAAa,EAAQ,cAAgB,OAAY,GAAO,EAAQ,YAChE,YAAa,EAAQ,YACrB,SAAU,EAAQ,SAClB,QAAS,EAAQ,SAGrB,MAAK,GAAQ,YACR,EAAc,YAAc,EAAQ,YADf,EAAc,SAAW,EAGnD,EAAU,KAAK,GAAe,KAAK,YACjC,EAAS,QAAQ,GAAK,CAAC,EAAE,OAAS,EAAE,SAAW,IAC9C,WACD,EAAS,WAEJ,EAAS,UAIpB,MAAO,MAIX,MAAuB,cACrB,KAAK,YAAc,EAAY,KAC/B,KAAK,QAAU,EAEf,KAAK,gBAAkB,GACvB,KAAK,MAAQ,EACb,KAAK,OAAS,QAAQ,KAAK,KAC3B,KAAK,SAAW,MAGlB,SAAiB,QAAU,CAAC,YAAa,oBACzC,EAAiB,UAAY,CAC3B,QAAS,WACP,KAAK,OAAS,QAAQ,OAAO,KAAK,OAAQ,KAAK,SAC/C,KAAK,SAAW,KAAK,OAAO,MAAQ,CAAC,KAAK,OAAO,KACjD,KAAK,SAAW,KAAK,OAAO,KAC5B,KAAK,YACL,KAAK,SAEP,qBAAsB,WACpB,MAAiB,KAAK,OAAO,YAC7B,AAAI,GAAa,GAAK,EAAa,KAAI,GAAa,GAEpD,MAAW,KAAK,aAAe,MAChB,EAAa,KAAK,MAAM,EAAK,SAAW,GACvD,AAAI,GAAW,IAAI,GAAU,GAAK,GAElC,MACA,MAAI,MAAK,OAAO,QACd,GAAU,EAAK,SACf,AAAI,GAAW,IAAI,GAAU,GAAK,IAC7B,EAAU,EAEV,EAAO,GAAM,QAAQ,GAAS,QAAQ,GAAS,YAAY,IAEpE,UAAW,WACT,MAAW,OACM,cACf,MAAU,KACV,GAAI,QAAQ,UAAU,IAAU,IAAU,MAAQ,IAAU,GAC1D,GAAI,QAAQ,SAAS,GACnB,AAAI,MAAO,GAAK,OAAO,QAAY,aAAe,EAAK,OAAO,SAAW,KACvE,EAAM,EAAO,EAAO,EAAK,OAAO,QAAQ,OAAO,EAAK,OAAO,MAG3D,EAAM,EAAO,GAAO,OAAO,EAAK,OAAO,cAEhC,MAAO,IAAU,SAC1B,EAAM,EAAO,GAAO,OAAO,EAAK,OAAO,cAEnC,QAAQ,OAAO,IACjB,MAAQ,EAAM,UACd,EAAM,EAAO,EAAG,KAAK,OAAO,EAAK,OAAO,UACnC,AAAI,GAAO,SAAS,IACzB,CAAI,EAAM,UAAW,EAAM,EACtB,EAAM,OAIf,GAAM,EAER,MAAO,IAGT,KAAK,YAAc,EAAW,KAAK,OAAO,YAAa,KACvD,KAAK,YAAc,KAAK,uBACxB,KAAK,QAAU,EAAW,KAAK,OAAO,SACtC,KAAK,QAAU,EAAW,KAAK,OAAO,SACtC,KAAK,aAAe,KAAK,OAAO,aAAa,IAAI,YAC/C,MAAO,GAAO,GAAG,OAAO,kBAE1B,KAAK,WAAW,KAAK,aACrB,KAAK,SAAW,KAAK,OAAO,UAE9B,SAAU,WACR,KAAK,YAAc,EAAY,MAEjC,UAAW,WACT,KAAK,YAAc,EAAY,MAEjC,YAAa,WACX,KAAK,YAAc,EAAY,QAEjC,YAAa,WACX,KAAK,YAAc,EAAY,QAEjC,eAAgB,gBACd,MAAc,GAEd,GAAI,MAAO,MAAK,SAAa,aAAe,KAAK,UAAY,MAC3D,MAAe,EAAO,KAAK,WACf,EAAO,GAEnB,AAAI,CAAC,GAAa,CAAC,GACjB,GAAS,KAAK,GACd,EAAS,OAAO,GAEhB,EAAM,KAAK,GACX,EAAM,OAAO,IAGf,EAAS,OAAO,GAChB,EAAM,OAAO,GACb,EAAS,YAAY,GACrB,EAAM,YAAY,GAElB,AAAK,GACH,GAAM,OAAO,GACb,EAAS,OAAO,IAEhB,EAAW,SAAS,EAAM,OAAO,OAAS,SAAS,EAAS,OAAO,MAOvE,MAAO,IAET,gBAAiB,gBACf,MAAc,GAEd,GAAI,MAAO,MAAK,SAAa,aAAe,KAAK,UAAY,MAC3D,MAAe,EAAO,KAAK,WACf,EAAO,GAEnB,AAAI,CAAC,GAAa,CAAC,GACjB,GAAS,KAAK,GACd,EAAS,OAAO,GAEhB,EAAM,KAAK,GACX,EAAM,OAAO,IAGf,EAAS,OAAO,GAChB,EAAM,OAAO,GACb,EAAS,YAAY,GACrB,EAAM,YAAY,GAElB,AAAK,GACH,GAAM,OAAO,GACb,EAAS,OAAO,IAEhB,EAAW,SAAS,EAAM,OAAO,OAAS,SAAS,EAAS,OAAO,MAOvE,MAAO,IAET,iBAAkB,YAChB,MAAU,EAAK,OAAO,gBACtB,MAAI,OAAK,aAAa,QAAQ,GAAO,KAKvC,UAAW,YACT,MAAI,MAAK,SACH,EAAK,cAAgB,EAKpB,IAET,WAAY,YACV,AAAI,GACF,MAAK,YAAc,EAAO,GAC1B,AAAK,KAAK,eAAe,KAAK,YAAa,GAAM,KAC/C,MAAK,YAAc,EAAO,KAAK,UAGjC,AAAK,KAAK,gBAAgB,KAAK,YAAa,GAAM,KAChD,MAAK,YAAc,EAAO,KAAK,UAEjC,KAAK,YAAY,OAAO,KAAK,OAAO,MACpC,KAAK,cAAgB,EAAO,KAAK,aACjC,KAAK,SAAW,KAAK,YAAY,QAAU,GAAK,KAAO,OAG3D,KAAM,WACJ,MAAO,MAAK,WAAa,MAE3B,eAAgB,YACd,AAAK,KAAW,GAAK,KAAK,sBAA0B,IAAW,IAAM,KAAK,2BACxE,KAAK,WAAW,KAAK,YAAY,IAAI,EAAQ,WAGjD,cAAe,YACb,AAAK,KAAW,GAAK,KAAK,qBAAyB,IAAW,IAAM,KAAK,0BACvE,KAAK,WAAW,KAAK,YAAY,IAAI,EAAQ,UAGjD,SAAU,cACR,EAAQ,KAAK,IAEf,gBAAiB,WAGf,UAFgB,KAAY,EAAO,KAAK,eAE3B,EAAG,EAAI,GAAI,KACtB,MAAe,EAAM,MAAM,GAC3B,AAAI,KAAK,eAAe,EAAS,MAAM,WAAa,KAAK,gBAAgB,EAAS,QAAQ,WACxF,EAAU,KAAK,EAAS,OAAO,SAGnC,MAAO,IAET,YAAa,YACX,KAAK,WAAW,KAAK,YAAY,MAAM,KAEzC,eAAgB,WACd,cAAmD,KAC3C,KAAK,YAAY,OAEzB,AAAI,MAAO,MAAK,SAAa,aAAe,KAAK,UAAY,MAC3D,GAAW,EAAO,KAAK,SAAS,QAElC,AAAI,MAAO,MAAK,SAAa,aAAe,KAAK,UAAY,MAC3D,GAAW,EAAO,KAAK,SAAS,QAGlC,AAAI,GAAY,EACd,GAAM,EAAW,EACjB,EAAY,GACP,AAAI,EACT,GAAM,IACN,EAAY,GACP,AAAI,EACT,GAAM,GACN,EAAY,EAAW,GAEvB,GAAM,GACN,EAAY,EAAQ,EAAI,GAG1B,UAAW,EAAG,GAAK,EAAK,IACtB,EAAS,KAAK,EAAU,GAE1B,MAAO,IAET,WAAY,YACV,KAAK,WAAW,KAAK,YAAY,KAAK,KAExC,uBAAwB,WACtB,MAAO,MAAK,eAAiB,KAAK,eAAe,EAAO,KAAK,eAAe,QAAQ,SAAU,GAAO,KAEvG,mBAAoB,WAClB,MAAO,MAAK,eAAiB,KAAK,gBAAgB,EAAO,KAAK,eAAe,MAAM,SAAU,GAAO,KAEtG,sBAAuB,WACrB,MAAO,MAAK,eAAiB,KAAK,eAAe,EAAO,KAAK,eAAe,QAAQ,QAAS,GAAO,KAEtG,kBAAmB,WACjB,MAAO,MAAK,eAAiB,KAAK,gBAAgB,EAAO,KAAK,eAAe,MAAM,QAAS,GAAO,KAErG,gBAAiB,YACf,MAAY,EAAO,KAAK,aACxB,MAAI,MAAK,OAAO,UACd,EAAM,KAAK,KAAK,aAAa,IAAO,OAAO,GAAG,OAAO,GAErD,EAAM,KAAK,GAAM,OAAO,GAAG,OAAO,GAE7B,KAAK,eAAe,EAAO,GAAM,KAAU,KAAK,gBAAgB,EAAO,GAAM,KAEtF,kBAAmB,YACjB,MAAY,EAAO,KAAK,aACxB,EAAM,OAAO,GAAQ,OAAO,GAE5B,MAAiB,KAAK,OAAO,YAC7B,GAAI,EAAa,GAAK,EAAI,IAAe,GACvC,MAAc,EAAM,WACL,EAAa,KAAK,MAAM,EAAU,GAEjD,GADA,AAAI,GAAW,IAAI,GAAU,GAAK,GAC9B,IAAY,EAAS,MAAO,GAGlC,MAAO,MAAK,eAAe,EAAO,GAAM,KAAS,KAAK,gBAAgB,EAAO,GAAM,KAErF,kBAAmB,YACjB,MAAO,IAET,MAAO,WACL,KAAK,YAAc,EAAY,KAC/B,AAAI,KAAK,OAAO,KACd,KAAK,WAEL,AAAI,KAAK,OAAO,MACd,KAAK,aAIX,MAAO,WACL,MAAiB,KAAK,OAAO,cAClB,MACI,EAAa,KAAK,MAAM,EAAK,SAAW,GACvD,AAAI,GAAW,IAAI,GAAU,GAAK,GAElC,MACA,AAAI,KAAK,OAAO,QACd,GAAU,EAAK,SACf,AAAI,GAAW,IAAI,GAAU,GAAK,IAC7B,EAAU,EAEjB,KAAK,WAAW,EAAO,GAAM,QAAQ,GAAS,QAAQ,GAAS,YAAY,KAE7E,GAAI,WACF,OAAQ,KAAK,iBACN,GAAY,KACf,AAAI,KAAK,OAAO,OAAS,GACvB,KAAK,YAEL,KAAK,KAAK,IAEZ,UACG,GAAY,KACf,AAAI,KAAK,OAAO,UAAY,GAC1B,KAAK,cAEL,KAAK,KAAK,IAEZ,UACG,GAAY,OACf,AAAI,KAAK,OAAO,UAAY,GAC1B,KAAK,cAEL,KAAK,KAAK,IAEZ,UACG,GAAY,OACf,KAAK,KAAK,IACV,QAGN,OAAQ,WACN,GAAI,KAAK,OAAO,KACd,OAAQ,KAAK,iBACN,GAAY,KACf,KAAK,OACL,UACG,GAAY,KACf,AAAI,KAAK,OAAO,KACd,KAAK,WAGL,KAAK,OAEP,UACG,GAAY,OACf,KAAK,YACL,UACG,GAAY,OACf,KAAK,cACL,UAIJ,MAAK,QAGT,kBAAmB,WACjB,KAAK,cAAc,SAAS,EAAG,WAEjC,iBAAkB,WAChB,KAAK,cAAc,IAAI,EAAG,WAE5B,iBAAkB,WAChB,KAAK,cAAc,SAAS,EAAG,UAEjC,gBAAiB,WACf,KAAK,cAAc,IAAI,EAAG,UAE5B,SAAU,WACR,AAAI,MAAK,gBAAgB,IAAM,KAAK,gBAAgB,MAClD,CAAI,KAAK,YAAY,QAAU,IAC7B,KAAK,WAAW,KAAK,YAAY,SAAS,GAAI,UAEhD,AAAK,KAAK,gBAAgB,KAAK,YAAY,SACzC,KAAK,WAAW,KAAK,YAAY,KAAK,KAAK,QAAQ,SAErD,AAAK,KAAK,kBAAkB,KAAK,YAAY,WAC3C,KAAK,WAAW,KAAK,YAAY,OAAO,KAAK,QAAQ,aAI3D,SAAU,WACR,AAAI,MAAK,gBAAgB,KAAO,KAAK,gBAAgB,MACnD,CAAI,KAAK,YAAY,OAAS,IAC5B,KAAK,WAAW,KAAK,YAAY,IAAI,GAAI,UAE3C,AAAK,KAAK,gBAAgB,KAAK,YAAY,SACzC,KAAK,WAAW,KAAK,YAAY,KAAK,KAAK,QAAQ,SAErD,AAAK,KAAK,kBAAkB,KAAK,YAAY,WAC3C,KAAK,WAAW,KAAK,YAAY,OAAO,KAAK,QAAQ,aAI3D,aAAc,YACZ,MAAc,EACd,MAAI,GAAI,IAAM,KAAK,QAAQ,IAAW,IAE/B,GAET,KAAM,YACJ,AAAI,EAAO,KAAK,QAAQ,KAAK,KAAK,aAC7B,KAAK,QAAQ,WAItB,QAAQ,OAAO,GACZ,UAAU,4BAA6B,CACtC,WAME,UAJe,OACF,GAAI,QAAO,cAAgB,KACrB,GAAW,EAAW,GAAK,KACnC,KACE,EAAG,EAAI,EAAe,IACjC,EAAO,KAAK,GAGd,MAAwB,cACtB,SAAM,GAAY,EACR,GAAK,OAAS,GAAY,GAAM,EAAK,QAAU,EAAK,GAGhE,MAAO,CACL,SAAU,IACV,MAAO,CACL,OAAQ,IACR,KAAM,KAER,iBAAkB,GAClB,aAAc,MACd,WAAY,CAAC,SAAU,YACrB,MAAe,OAEf,KAAK,QAAU,WACb,EAAS,KAAK,OAGd,UADW,KACE,EAAO,OAAO,UAAW,EAAK,OAAS,EAAG,IACrD,AAAI,EAAI,GAAG,GAAI,GACf,EAAK,KAAK,EAAE,YAId,GAFA,EAAS,KAAO,EAEZ,CAAC,EAAO,SAAW,CAAC,EAAO,QAC7B,EAAS,OAAS,OAElB,MAAU,EAAO,QAAU,EAAkB,EAAO,SAAW,IACpD,EAAO,QAAW,EAAkB,EAAO,SAAU,EAAK,EACrE,EAAS,OAAS,EAAO,MAAM,EAAK,GAGtC,EAAS,SAAW,EAAkB,EAAO,aAAe,EAAS,OAAO,IAG9E,AAAI,QAAQ,QAAQ,QAAU,GAAK,QAAQ,QAAQ,MAAQ,GAAG,KAAK,UAEnE,EAAS,eAAiB,YACxB,MAAc,GAAQ,GAAK,IAAO,KACvB,EAAW,KAAK,MAAM,EAAQ,MAC1B,EAAO,EAAO,aAAa,KAAK,GAAM,MAAM,GAC3D,MAAO,GAAsB,IAG/B,EAAO,OAAO,WACZ,MAAO,GAAO,YAAc,EAAO,YAAY,OAAO,WAAa,IAClE,cACD,GAAI,GAAQ,GACV,MAAY,EAAO,EAAM,aACf,EAAO,QAAU,EAAkB,EAAO,SAAU,IAClD,EAAkB,EAAO,GACrC,AAAI,EAAS,UAAY,GACvB,GAAS,SAAW,MAK1B,MAA4B,YAC1B,MAAY,GACZ,GAAI,IAAS,MACX,EAAM,KAAO,EAAK,OAAO,aACzB,MAAmB,EAAO,GAAM,OAAO,EAAO,OAAO,MAAM,QAAQ,SAC9D,KAAK,EAAK,QACV,OAAO,EAAK,YACH,EAAa,OAAO,KAClC,EAAM,KAAO,GACb,UAAa,EAAa,OAAQ,GAAK,EAAa,cAAe,KACjE,GAAI,IAAM,EAAa,QACrB,MAAY,EAAS,KAAK,QAAQ,EAAQ,YAC1C,GAAI,EAAQ,EACV,UAAa,EAAG,EAAI,EAAO,IACzB,EAAM,KAAK,KAAK,GAItB,EAAM,KAAK,KAAK,EAAO,GAAc,OAAO,EAAO,OAAO,MAAM,KAAK,IAIvE,UADkB,IAAa,KAAa,KAAK,KAAK,EAAM,KAAK,OAAS,KAC7D,EAAG,EAAI,EAAQ,IAC1B,EAAQ,KAAK,EAAM,KAAK,MAAM,EAAI,EAAc,GAAI,GAAK,IAE3D,SAAM,KAAO,EACN,IAKX,EAAS,MAAQ,YACf,MAAO,GAAO,SAAS,GAAI,KACxB,OAAO,EAAO,OAAO,MACrB,OAAO,OACP,UAAU,EAAG,EAAO,OAAO,eAGhC,EAAS,UAAY,YACnB,MAAO,GAAO,eAAe,EAAO,GAAO,GAAO,KAChD,EAAO,gBAAgB,EAAO,GAAO,GAAO,KAC5C,EAAO,UAAU,EAAO,KACxB,EAAO,iBAAiB,EAAO,KAGnC,EAAS,WAAa,YACpB,GAAI,GACF,GAAI,EAAS,cAAc,GACzB,MAAO,GAAO,KAEhB,EAAO,WAAW,EAAO,GAAM,KAAK,EAAS,KAAK,QAAQ,OAAO,EAAS,KAAK,WAC/E,AAAI,EAAO,OAAO,QAChB,EAAO,OAKb,EAAS,cAAgB,YACvB,MAAO,IAAK,EAAS,KAAK,SAAW,EAAE,QAAU,EAAS,KAAK,UAAY,EAAE,SAAW,EAAS,KAAK,SAAW,EAAE,QAGrH,EAAS,eAAiB,YACxB,MAAY,EAAS,OAAO,QAAQ,eACpC,MAAK,GAIE,GAAK,EAAM,SAAW,EAAE,QAAU,EAAM,UAAY,EAAE,SAAW,EAAM,SAAW,EAAE,OAHlF,MAMb,SACA,wNAOL,UAAU,iCAAkC,CAAC,WAC5C,YACE,MAA2B,cACzB,MAAY,QAAQ,QAAQ,EAAQ,GAAG,cAAc,YACtC,EAAM,MAAa,EAAM,QAExB,GAEhB,EAAM,KAAK,QAAQ,cACjB,EAAU,KAAK,QACf,EAAS,QAAQ,cAEf,GADA,EAAU,KAAK,QACX,EACF,GAAI,EAAS,UAAU,IAErB,MAAe,iBAAqB,EAAI,KAAO,EAAI,IAEnD,EAAU,KAAK,eAAiB,EAAQ,OAAO,cAAgB,4FAA8F,EAAW,iCAAmC,EAAW,gCAAkC,EAAW,OACnQ,EAAU,KAAK,EAAQ,OAAO,MAC9B,EAAU,KAAK,YAEf,GAAU,KAAK,iCACf,EAAU,KAAK,EAAQ,OAAO,MAC9B,EAAU,KAAK,WAGnB,EAAU,KAAK,WAEjB,EAAU,KAAK,WAGjB,EAAM,KAAK,EAAU,KAAK,KAC1B,EAAS,GAAO,IAGlB,MAAO,CACL,MAAO,CACL,IAAK,KAEP,QAAS,6BACT,SAAU,KACV,SACE,sOAUF,KAAM,kBACJ,EAAM,IAAM,EACZ,EAAM,MAAQ,EAAS,eAAe,SAAS,EAAM,MACrD,EAAqB,EAAS,GAC9B,EAAM,OAAO,WACX,MAAO,GAAM,KACZ,cACD,AAAI,GAAO,GACT,GAAM,MAAQ,EAAS,eAAe,SAAS,EAAM,MACrD,EAAqB,EAAS,WAS5C,QAAQ,OAAO,GACZ,UAAU,gBAAiB,WAC1B,MAAO,CACL,KAAM,cACJ,EAAG,GAAG,QAAS,YACb,EAAE,uBAKZ,QAAQ,OAAO,GACZ,UAAU,yBAA0B,CAAC,WACpC,YAEE,MACE,ksCAeF,MAAO,CACL,SAAU,IACV,SAAU,EACV,KAAM,gBACJ,MAAiB,EAAM,OAAS,YACf,EAAM,OAAS,YACnB,EAAM,SAEC,SAAS,cAAc,mBAEvB,cAClB,MAAU,EAEV,GADA,EAAM,GAAO,IAAM,EAAI,EACnB,IAAQ,GACV,MAAc,GAAY,EAAa,GAAK,GAC5C,EAAM,KAAK,MAAM,EAAU,IAAM,GAGnC,GAAI,GACF,MAAiB,EAAO,OAAO,YAC/B,AAAI,GAAa,GAAK,EAAa,KAAI,GAAa,GACpD,MAAe,EAAa,KAAK,MAAM,EAAM,GAE7C,GADA,AAAI,GAAW,IAAI,GAAU,GAAK,GAC9B,CAAC,EAAM,eAAe,CAAC,MAAO,IAAO,OACzC,EAAO,YAAY,OAAO,WAChB,GAQV,GADA,AAAI,GAAO,IAAI,GAAM,GACjB,CAAC,EAAM,eAAe,CAAC,MAAO,IAAO,OACzC,EAAO,YAAY,OAAO,QAL1B,GAHA,AAAI,IAAQ,IAAI,GAAM,GACtB,AAAK,EAAO,OAAO,WAAW,GAAO,SAAW,EAAM,GAAK,KAAO,MAClE,AAAI,EAAO,QAAQ,IAAO,IACtB,CAAC,EAAM,eAAe,CAAC,MAAO,IAAO,OACzC,EAAO,YAAY,KAAK,OAQJ,gBAAkB,UACjC,CACP,aAAe,EAAmB,aAAe,YACjD,WAAe,EAAmB,WAAe,UACjD,aAAe,EAAmB,YAAe,eAGjC,YAChB,EAAE,iBAEF,MAAoB,EAAE,cAAc,QAAQ,SAC/B,EAAc,iBAAiB,GAE5C,AAAI,GAAkB,GAAI,EAAE,eAAe,IAE3C,MAAU,EAAc,YAAc,EAAM,GAAE,MAAQ,EAAW,QACvD,EAAE,MAAQ,EAAW,IAAQ,EAAc,aAAe,IAE1D,KAAK,KAAK,KAAK,IAAI,EAAG,GAAK,KAAK,IAAI,EAAG,MACvC,KAAK,MAAO,KAAK,MAAM,EAAG,GAAM,KAAM,KAAK,KAErD,EAAS,WACP,EAAc,EAAI,IAAK,MAI3B,EAAQ,GAAG,EAAO,aAAc,WAC7B,EAAQ,GAAG,EAAO,aAAc,KAGnC,EAAQ,GAAG,EAAO,WAAY,WAC1B,EAAQ,IAAI,EAAO,gBAGvB,EAAM,IAAI,WAAY,WAClB,EAAQ,IAAI,EAAO,aAAc,KAGrC,MAAW,WACT,MAAY,QAAQ,QAAQ,EAAQ,GAAG,cAAc,wBACtC,QAAQ,QAAQ,EAAc,cAAc,kBAEnD,EAAc,cAAc,gBAAgB,cAC3C,SAAS,EAAI,EAAU,eAAe,QAAQ,KAAM,MAAQ,IAC5D,SAAS,EAAI,EAAU,gBAAgB,QAAQ,KAAM,MAAQ,IAC7D,SAAS,EAAI,EAAU,cAAc,QAAQ,KAAM,MAAQ,IAC3D,SAAS,EAAI,EAAO,cAAc,QAAQ,KAAM,MAAQ,IACxD,SAAS,EAAI,EAAO,eAAe,QAAQ,KAAM,MAAQ,IACzD,SAAS,EAAI,EAAO,aAAa,QAAQ,KAAM,MAAQ,IAG9C,EAAK,GAAK,EAAK,EAAK,GACtC,EAAM,IAAI,QAAU,EAAc,MAOlC,UALS,EAAa,IACd,EAAI,MAEC,KAEA,EAAG,EAAI,GAAI,EAAE,GACxB,OAAQ,EAAI,KAAK,IAAI,KAAK,GAAK,EAAK,GAAI,QAChC,EAAI,KAAK,IAAI,KAAK,GAAK,EAAK,GAAI,OAC5B,EAAI,GAAI,EAAK,EAAM,GAAK,KACzB,EAAI,GAAI,EAAK,EAAM,GAAK,KAExB,CACT,KAAM,EACN,IAAK,EACL,MAAQ,GAAY,EAAc,EAAI,EAAK,EAC3C,MAAO,CAAC,cAAe,EAAO,KAAM,aAAc,EAAM,OAG1D,AAAI,GAAc,EAChB,EAAK,QAAU,EAAK,MAAQ,GAAM,IAAM,EAAK,MAAS,EAAK,MAE3D,AAAI,EAAO,OAAO,UAChB,EAAK,QAAU,IAAM,EAAI,GAAK,EAE9B,EAAK,QAAU,EAInB,EAAO,KAAK,GAId,GAFA,EAAM,OAAS,EAEX,CAAC,EAAO,OAAO,WAAa,CAAC,GAAc,CAAC,GAI9C,UAHe,KAEL,EAAI,MACC,GAAI,EAAM,GAAI,EAAE,GAC7B,OAAU,EAAM,KAAK,IAAI,KAAK,GAAK,EAAK,GAAM,QACpC,EAAM,KAAK,IAAI,KAAK,GAAK,EAAK,GAAM,OAChC,EAAI,GAAM,EAAK,EAAM,GAAK,KAC3B,EAAI,GAAM,EAAK,EAAM,GAAK,GAEvC,EAAS,KAAK,CACZ,KAAM,EACN,IAAK,EACL,MAAO,EACP,QAAS,EACT,MAAO,CAAC,cAAe,EAAS,KAAM,aAAc,EAAQ,QAGhE,EAAM,SAAW,EAGnB,EAAM,KAAO,EAAM,KACnB,IACA,EAAM,IAAI,SAAU,EAAa,MAEjC,MAAkB,EAAQ,GAAG,cAAc,wBACxB,EAAY,YAAc,GAAM,OAC/B,EAAY,aAAe,GAAM,MAC3C,EAAK,GAAO,OAAO,UAAY,IAAM,OACrC,EAAI,MACJ,EAEV,QAAQ,QAAQ,EAAQ,GAAG,cAAc,mBAAmB,IAAI,CAC9D,KAAM,EAAK,EAAK,IAAO,KACvB,OAAQ,EAAM,KACd,UAAY,EAAI,EAAM,EAAM,OAC3B,SAAS,CAAC,GAAc,CAAC,EAAa,KAAO,IAEhD,QAAQ,QAAQ,EAAQ,GAAG,cAAc,qBAAqB,IAAI,CAChE,KAAM,EAAK,EAAK,IAAO,KACvB,OAAQ,EAAM,KACd,UAAW,EAAI,EAAM,EAAK,OACzB,SAAS,EAAa,KAAO,IAEhC,QAAQ,QAAQ,EAAQ,GAAG,cAAc,qBAAqB,IAAI,CAChE,KAAM,EAAK,EAAK,IAAO,KACvB,OAAQ,EAAM,KACd,UAAW,EAAI,EAAM,EAAK,OACzB,SAAS,EAAa,KAAO,IAEhC,QAAQ,QAAQ,GAAa,IAAI,CAC/B,KAAM,EAAI,EAAK,EAAK,GAAc,KAClC,UAAY,EAAK,EAAK,EAAM,GAAe,OAE7C,OAGiB,WACjB,MAAY,EAAO,yBACX,EAAM,SAAY,EAAM,WAAc,EAAM,SAEpD,EAAc,QAAQ,QAAQ,EAAQ,GAAG,cAAc,mBAAoB,GAAK,GAChF,EAAc,QAAQ,QAAQ,EAAQ,GAAG,cAAc,qBAAsB,EAAI,GACjF,EAAc,QAAQ,QAAQ,EAAQ,GAAG,cAAc,qBAAsB,EAAI,MAG/D,cAClB,QAAQ,QAAQ,GAAI,IAAI,CACtB,gBAAiB,UAAY,EAAM,OACnC,iBAAkB,UAAY,EAAM,OACpC,gBAAiB,UAAY,EAAM,OACnC,UAAa,UAAY,EAAM,YAKb,WACpB,MAAW,EAAO,yBACR,EAAO,OAAO,UAAY,GAAK,GACzC,AAAI,EAAY,EAAM,aAAe,EAAK,SACrC,AAAI,EAAY,EAAM,aAAe,EAAK,SAC1C,EAAM,aAAe,EAAK,OAAS,GAG1C,EAAM,OAAO,WACX,MAAU,EAAO,uBACjB,MAAO,GAAM,EAAI,OAAO,YAAc,IACrC,WACD,IACA,MAGF,EAAM,QAAU,YACd,AAAI,CAAC,GAAc,CAAC,EAClB,CAAI,IAAQ,EAAM,cAAgB,CAAC,EAAO,OAAO,QAAQ,EAAO,KAEhE,AAAI,EAAO,OAAO,UAChB,EAAO,YAAY,KAAK,EAAO,OAAU,EAAM,GAAM,GAErD,GAAO,YAAY,KAAK,GACxB,AAAI,GAAO,GAAI,EAAO,SAAW,KAC5B,EAAO,SAAW,MAGzB,AAAI,EAAO,OAAO,QAAQ,EAAO,MAC5B,AAAK,EAQV,CAAI,IAAQ,EAAM,cAAc,EAAO,KACvC,EAAO,YAAY,OAAO,IAR1B,CAAI,IAAQ,EAAM,cAAgB,CAAC,EAAO,OAAO,SAAS,EAAO,KAEjE,EAAO,YAAY,OAAO,GAC1B,AAAK,EAAO,OAAO,QAEZ,AAAI,EAAO,OAAO,QAAQ,EAAO,KADtC,EAAO,YAAY,OAAO,KAQhC,EAAM,eAAiB,YACrB,MAAI,GAAmB,EAAO,kBAAkB,EAAM,OAC7C,EAAmB,EAAO,kBAAkB,EAAM,OAC/C,EAAO,gBAAgB,EAAM,QAG3C,MAAgB,EAAM,OAAO,WAC3B,MAAO,GAAQ,GAAG,iBAAiB,OAAO,QACzC,WACD,IACA,WAKH,EAGT,MAAiB,QAAU,OAAO,SAAW,OAAO,QAAQ,KAC5D,AAAI,MAAO,SAAW,YAAc,OAAO,IACzC,OAAO,CAAC,UAAW,GACd,AAAI,MAAO,SAAW,aAAe,QAAU,OAAO,SAAY,MAAO,UAAY,YAAe,CAAC,EAC1G,OAAO,QAAU,EAAqB,QAAQ,WAE9C,EAAsB,OAAO,SAAW,YAAc,OAAS,QAAQ", + "mappings": "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", "names": [] } diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 64badef..962a7dc 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp *:focus{outline:none!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}md-menu-content.dtp-month-list{background-color:#fff}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}md-menu-content.dtp-year-list{background-color:#fff}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0 10px;text-align:center;overflow:hidden}.dtp div.dtp-picker-month,.dtp div.dtp-actual-time{font-size:1em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:260px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:12px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp table.dtp-picker-days tr>td>.dtp-select-day,.dtp .dtp-picker-time>a{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#dddddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:2px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px 3px 3px 3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp.hidden,.dtp .hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev,[dir=rtl] .dtp div.dtp-month-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-today,.dtp-btn-ok,.dtp-btn-cancel{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp *:focus{outline:none!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}md-menu-content.dtp-month-list{background-color:#fff}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}md-menu-content.dtp-year-list{background-color:#fff}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0;text-align:center;overflow:hidden}.dtp div.dtp-picker-month,.dtp div.dtp-actual-time{font-size:1em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:260px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:12px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp table.dtp-picker-days tr>td>.dtp-select-day,.dtp .dtp-picker-time>a{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#dddddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:2px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp.hidden,.dtp .hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev,[dir=rtl] .dtp div.dtp-month-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-today,.dtp-btn-ok,.dtp-btn-cancel{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} diff --git a/package.json b/package.json index 8ba0c6d..8d7cfd4 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,6 @@ }, "devDependencies": { "@web/dev-server": "^0.1.17", - "esbuild": "^0.8.27" + "esbuild": "^0.11.20" } } diff --git a/yarn.lock b/yarn.lock index 69aa62b..8d32584 100644 --- a/yarn.lock +++ b/yarn.lock @@ -558,10 +558,10 @@ es-module-lexer@^0.4.0: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== -esbuild@^0.8.27: - version "0.8.57" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.57.tgz#a42d02bc2b57c70bcd0ef897fe244766bb6dd926" - integrity sha512-j02SFrUwFTRUqiY0Kjplwjm1psuzO1d6AjaXKuOR9hrY0HuPsT6sV42B6myW34h1q4CRy+Y3g4RU/cGJeI/nNA== +esbuild@^0.11.20: + version "0.11.20" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.11.20.tgz#7cefa1aee8b372c184e42457885f7ce5d3e62a1e" + integrity sha512-QOZrVpN/Yz74xfat0H6euSgn3RnwLevY1mJTEXneukz1ln9qB+ieaerRMzSeETpz/UJWsBMzRVR/andBht5WKw== escape-html@^1.0.3: version "1.0.3" From 96656c9817a6a44843fa8a963e3365cdb8938780 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Thu, 13 May 2021 21:05:32 -0400 Subject: [PATCH 215/226] Update badges --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bf92f30..085f34b 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ [![Known Vulnerabilities](https://snyk.io/test/github/beenote/angular-material-datetimepicker/badge.svg)](https://snyk.io/test/github/beenote/angular-material-datetimepicker) [![npm version](https://badge.fury.io/js/ng-material-datetimepicker.svg)](https://badge.fury.io/js/ng-material-datetimepicker) [![Open Source Love](https://badges.frapsoft.com/os/mit/mit.svg?v=102)](https://github.com/ellerbrock/open-source-badge/) -[![Dependency Status](https://david-dm.org/beenote/angular-material-datetimepicker.svg)](https://david-dm.org/beenote/angular-material-datetimepicker) -[![devDependency Status](https://david-dm.org/bbeenote/angular-material-datetimepicker/dev-status.svg)](https://david-dm.org/beenote/angular-material-datetimepicker?type=dev) +[![dependencies Status](https://status.david-dm.org/gh/beenote/angular-material-datetimepicker.svg)](https://david-dm.org/beenote/angular-material-datetimepicker) +[![devDependencies Status](https://status.david-dm.org/gh/beenote/angular-material-datetimepicker.svg?type=dev)](https://david-dm.org/beenote/angular-material-datetimepicker?type=dev) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) # Angular Material DateTimePicker From 3494970de79907a934584819fecba7deb85b29ef Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 4 Sep 2021 14:53:17 -0400 Subject: [PATCH 216/226] update deps --- index.html | 6 +- yarn.lock | 369 ++++++++++++++++++++++++++--------------------------- 2 files changed, 186 insertions(+), 189 deletions(-) diff --git a/index.html b/index.html index aafff54..cae2a15 100644 --- a/index.html +++ b/index.html @@ -12,8 +12,8 @@ - - + + @@ -21,7 +21,7 @@ - + diff --git a/yarn.lock b/yarn.lock index 8d32584..8dc5051 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,23 +3,23 @@ "@babel/code-frame@^7.12.11": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== dependencies: - "@babel/highlight" "^7.12.13" + "@babel/highlight" "^7.14.5" -"@babel/helper-validator-identifier@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" - integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== +"@babel/helper-validator-identifier@^7.14.5": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== -"@babel/highlight@^7.12.13": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" - integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== +"@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== dependencies: - "@babel/helper-validator-identifier" "^7.14.0" + "@babel/helper-validator-identifier" "^7.14.5" chalk "^2.0.0" js-tokens "^4.0.0" @@ -52,34 +52,34 @@ "@types/node" "*" "@types/body-parser@*": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" - integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + version "1.19.1" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.1.tgz#0c0174c42a7d017b818303d4b5d969cb0b75929c" + integrity sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg== dependencies: "@types/connect" "*" "@types/node" "*" "@types/command-line-args@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.0.0.tgz#484e704d20dbb8754a8f091eee45cdd22bcff28c" - integrity sha512-4eOPXyn5DmP64MCMF8ePDvdlvlzt2a+F8ZaVjqmh2yFCpGjc1kI3kGnCFYX9SCsGTjQcWIyVZ86IHCEyjy/MNg== + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" + integrity sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA== "@types/connect@*": - version "3.4.34" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" - integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" "@types/content-disposition@*": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.3.tgz#0aa116701955c2faa0717fc69cd1596095e49d96" - integrity sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg== + version "0.5.4" + resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.4.tgz#de48cf01c79c9f1560bcfd8ae43217ab028657f8" + integrity sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ== "@types/cookies@*": - version "0.7.6" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.6.tgz#71212c5391a976d3bae57d4b09fac20fc6bda504" - integrity sha512-FK4U5Qyn7/Sc5ih233OuHO0qAkOpEcD/eG6584yEiLKizTFRny86qHLe/rej3HFQrkBuUjF4whFliAdODbVN/w== + version "0.7.7" + resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" + integrity sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA== dependencies: "@types/connect" "*" "@types/express" "*" @@ -92,18 +92,18 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@^4.17.18": - version "4.17.19" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d" - integrity sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA== + version "4.17.24" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz#ea41f93bf7e0d59cd5a76665068ed6aab6815c07" + integrity sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/express@*": - version "4.17.11" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" - integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.18" @@ -111,14 +111,14 @@ "@types/serve-static" "*" "@types/http-assert@*": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.1.tgz#d775e93630c2469c2f980fc27e3143240335db3b" - integrity sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ== + version "1.5.3" + resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" + integrity sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA== "@types/http-errors@*": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.0.tgz#682477dbbbd07cd032731cb3b0e7eaee3d026b69" - integrity sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA== + version "1.8.1" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.1.tgz#e81ad28a60bee0328c6d2384e029aec626f1ae67" + integrity sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q== "@types/keygrip@*": version "1.0.2" @@ -133,9 +133,9 @@ "@types/koa" "*" "@types/koa@*", "@types/koa@^2.11.6": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.1.tgz#e29877a6b5ad3744ab1024f6ec75b8cbf6ec45db" - integrity sha512-Qbno7FWom9nNqu0yHZ6A0+RWt4mrYBhw3wpBAQ3+IuzGcLlfeYkzZrnMq5wsxulN2np8M4KKeUpTodsOsSad5Q== + version "2.13.4" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.4.tgz#10620b3f24a8027ef5cbae88b393d1b31205726b" + integrity sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw== dependencies: "@types/accepts" "*" "@types/content-disposition" "*" @@ -152,24 +152,24 @@ integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== "@types/node@*": - version "15.0.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.3.tgz#ee09fcaac513576474c327da5818d421b98db88a" - integrity sha512-/WbxFeBU+0F79z9RdEOXH4CsDga+ibi5M8uEYr91u3CkT/pdWcV8MCook+4wDPnZBexRdwWS+PiVZ2xJviAzcQ== + version "16.7.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.10.tgz#7aa732cc47341c12a16b7d562f519c2383b6d4fc" + integrity sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA== -"@types/parse5@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" - integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== +"@types/parse5@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.1.tgz#f8ae4fbcd2b9ba4ff934698e28778961f9cb22ca" + integrity sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA== "@types/qs@*": - version "6.9.6" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" - integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/resolve@1.17.1": version "1.17.1" @@ -179,17 +179,17 @@ "@types/node" "*" "@types/serve-static@*": - version "1.13.9" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" - integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== + version "1.13.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/ws@^7.4.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.4.tgz#93e1e00824c1de2608c30e6de4303ab3b4c0c9bc" - integrity sha512-d/7W23JAXPodQNbOZNXvl2K+bqAQrCMwlh/nuQsPSQk6Fq0opHoPrUw43aHsvSbIiQPr8Of2hkFbnz1XBFVyZQ== + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== dependencies: "@types/node" "*" @@ -200,17 +200,17 @@ dependencies: semver "^7.3.4" -"@web/dev-server-core@^0.3.12", "@web/dev-server-core@^0.3.3": - version "0.3.12" - resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.3.12.tgz#99b8ed1a3b6a797dd52e08b3e8d5e499e5c017b2" - integrity sha512-PI7neqHvsgsE+GJnJNSjMGeWHSo8MgO99CAzVm6UtFeAjShmMGWp6WQTDJPzvsE4jnYhIg8EPwz2cqDIGnkU6A== +"@web/dev-server-core@^0.3.14", "@web/dev-server-core@^0.3.3": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.3.14.tgz#3ccaa2d883f5e8a70d5f995227aa35294cbb76fc" + integrity sha512-QHWGbkLI7qZVkELd6a7R4llRF9zydwbZagAeiJRvOIIiDhG5Uu9DfAWAQL+RSCb2hqBlEnaVAK4keNffKol4rQ== dependencies: "@types/koa" "^2.11.6" "@types/ws" "^7.4.0" "@web/parse5-utils" "^1.2.0" chokidar "^3.4.3" clone "^2.1.2" - es-module-lexer "^0.4.0" + es-module-lexer "^0.7.1" get-stream "^6.0.0" is-stream "^2.0.0" isbinaryfile "^4.0.6" @@ -224,28 +224,28 @@ picomatch "^2.2.2" ws "^7.4.2" -"@web/dev-server-rollup@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.3.3.tgz#784235a58ce4585bc353a26aba82b3d4466bbb1f" - integrity sha512-3v+PG9xC+Q07NOVTqqYuab/XqDQfWXltVzOI6HstBD0RWP7u7Bk4G0BwSjD3RNdIzyrTW//zCwyCN7UkHNhIBA== +"@web/dev-server-rollup@^0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.3.9.tgz#4dec68b24949a216a33d4aba9589a70dbc9a42a8" + integrity sha512-8NOV8GxcDXk9u+hsVYllGiMhcORYMFK+LtLT4HIg3+emW64j0MynttowBoOFpgwv7YOuVQ6lWe1kmJxiI+TRdg== dependencies: "@web/dev-server-core" "^0.3.3" chalk "^4.1.0" parse5 "^6.0.1" - rollup "^2.35.1" - whatwg-url "^8.4.0" + rollup "^2.56.2" + whatwg-url "^9.0.0" "@web/dev-server@^0.1.17": - version "0.1.17" - resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.1.17.tgz#3fad6d96f72f902c04ff27fef1c2ba5cc0eaf5e0" - integrity sha512-2gdOjkQp97uaORkOL8X90f4retqZ2lA9YqHDljpf4SFg0JWoY8X7EJA9XQG1jJ2x46oQ5zqJX7AiSWc47B2k6A== + version "0.1.22" + resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.1.22.tgz#5f5bd054750c0f5ce439e8c21d73228591f2ffa7" + integrity sha512-8PZxz2PGK9Ndr0C2LtWHrTzPKkDYTP/IvEMs9nrIebQWxvVjxI/HpvNfli3ivvCtvvcJFI26FvfWaAWDq14GgQ== dependencies: "@babel/code-frame" "^7.12.11" "@rollup/plugin-node-resolve" "^11.0.1" "@types/command-line-args" "^5.0.0" "@web/config-loader" "^0.1.3" - "@web/dev-server-core" "^0.3.12" - "@web/dev-server-rollup" "^0.3.3" + "@web/dev-server-core" "^0.3.14" + "@web/dev-server-rollup" "^0.3.9" camelcase "^6.2.0" chalk "^4.1.0" command-line-args "^5.1.1" @@ -257,11 +257,11 @@ portfinder "^1.0.28" "@web/parse5-utils@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.2.2.tgz#33eec93321eb07cf364651c131b980a7afd8c4d7" - integrity sha512-B68DoJ5qF8Cu3o7nDA2RQTCf9bslVz2b0WHTk3qir5YCbWfhnPEGhDOedOjbE8xDiHqgzI1zXQsJ2+655aluLA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.3.0.tgz#e2e9e98b31a4ca948309f74891bda8d77399f6bd" + integrity sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg== dependencies: - "@types/parse5" "^5.0.3" + "@types/parse5" "^6.0.1" parse5 "^6.0.1" accepts@^1.3.5: @@ -283,9 +283,9 @@ angular-aria@^1.8.2: integrity sha512-xWT1Lm+Xug2GM6nGNMioBP4hXt3sj2eGaExa4cVCZUYSVWezgyuD1RiLgzJzwTkBGYplHQUzQaz3yDY8jVI6yQ== angular-material@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.2.2.tgz#42a0e1ab196980476f08c20efcbd4541678e2600" - integrity sha512-GtrBzYDg5zHYX/OUqxo72zb9bsY0RDuIA+4ZsZjuv1r+L4q9UAtkeIZzMXVGua6CCNgfB58cKep3TmxtAZhNwg== + version "1.2.3" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.2.3.tgz#e942468bdccbbe99e1f88d680cd4bff3e4803b80" + integrity sha512-Xx5WC8OLbPmMegnl8Mrex5YtF/fEXwwxnESIeKQvyL6ljDeC41jrSxpYSiM3OUeoNY3ySE1G6M63up3IBsFzNQ== angular-messages@^1.8.2: version "1.8.2" @@ -316,7 +316,7 @@ any-promise@^1.1.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= -anymatch@~3.1.1: +anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -324,15 +324,15 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -array-back@^3.0.1: +array-back@^3.0.1, array-back@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== array-back@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.1.tgz#9b80312935a52062e1a233a9c7abeb5481b30e90" - integrity sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg== + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== async@^2.6.2: version "2.6.3" @@ -381,27 +381,27 @@ chalk@^2.0.0, chalk@^2.4.2: supports-color "^5.3.0" chalk@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" chokidar@^3.4.3: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== dependencies: - anymatch "~3.1.1" + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.5.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.3.1" + fsevents "~2.3.2" clone@^2.1.2: version "2.1.2" @@ -438,11 +438,11 @@ color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== command-line-args@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.1.1.tgz#88e793e5bb3ceb30754a86863f0401ac92fd369a" - integrity sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg== + version "5.2.0" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.0.tgz#087b02748272169741f1fd7c785b295df079b9be" + integrity sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A== dependencies: - array-back "^3.0.1" + array-back "^3.1.0" find-replace "^3.0.0" lodash.camelcase "^4.3.0" typical "^4.0.0" @@ -490,9 +490,9 @@ debug@^3.1.0, debug@^3.1.1: ms "^2.1.1" debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" @@ -553,15 +553,15 @@ encodeurl@^1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -es-module-lexer@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.4.1.tgz#dda8c6a14d8f340a24e34331e0fab0cb50438e0e" - integrity sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA== +es-module-lexer@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.7.1.tgz#c2c8e0f46f2df06274cdaf0dd3f3b33e0a0b267d" + integrity sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw== esbuild@^0.11.20: - version "0.11.20" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.11.20.tgz#7cefa1aee8b372c184e42457885f7ce5d3e62a1e" - integrity sha512-QOZrVpN/Yz74xfat0H6euSgn3RnwLevY1mJTEXneukz1ln9qB+ieaerRMzSeETpz/UJWsBMzRVR/andBht5WKw== + version "0.11.23" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.11.23.tgz#c42534f632e165120671d64db67883634333b4b8" + integrity sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q== escape-html@^1.0.3: version "1.0.3" @@ -602,7 +602,7 @@ fresh@~0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fsevents@~2.3.1: +fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -617,7 +617,7 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -glob-parent@~5.1.0: +glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -634,6 +634,18 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -642,14 +654,14 @@ has@^1.0.3: function-bind "^1.1.1" http-assert@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878" - integrity sha512-rdw7q6GTlibqVVbXr0CKelfV5iY8G2HqEUkhSk297BMbSpSL8crXC+9rjKoMcZZEsksX30le6f/4ul4E28gegw== + version "1.5.0" + resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" + integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== dependencies: deep-equal "~1.0.1" - http-errors "~1.7.2" + http-errors "~1.8.0" -http-errors@^1.6.3, http-errors@^1.7.3: +http-errors@^1.6.3, http-errors@^1.7.3, http-errors@~1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== @@ -670,17 +682,6 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -704,9 +705,9 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-core-module@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + version "2.6.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" + integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== dependencies: has "^1.0.3" @@ -721,9 +722,11 @@ is-extglob@^2.1.1: integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-generator-function@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.9.tgz#e5f82c2323673e7fcad3d12858c83c4039f6399c" - integrity sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A== + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" @@ -743,9 +746,9 @@ is-number@^7.0.0: integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-wsl@^2.2.0: version "2.2.0" @@ -849,7 +852,7 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= -lodash@^4.17.14, lodash@^4.7.0: +lodash@^4.17.14: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -866,17 +869,17 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mime-db@1.47.0: - version "1.47.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" - integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== +mime-db@1.49.0: + version "1.49.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" + integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.24: - version "2.1.30" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" - integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== + version "2.1.32" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" + integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== dependencies: - mime-db "1.47.0" + mime-db "1.49.0" minimist@^1.2.5: version "1.2.5" @@ -933,9 +936,9 @@ only@~0.0.2: integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q= open@^8.0.2: - version "8.0.8" - resolved "https://registry.yarnpkg.com/open/-/open-8.0.8.tgz#0e286bb2df3c72e00cb2a0203d604abee002dbdc" - integrity sha512-3XmKIU8+H/TVr8wB8C4vj0z748+yBydSvtpzZVS6vQ1dKNHB6AiPbhaoG+89zb80717GPk9y/7OvK0R6FXkNmQ== + version "8.2.1" + resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" + integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -957,14 +960,14 @@ path-is-absolute@1.0.1: integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== portfinder@^1.0.28: version "1.0.28" @@ -980,10 +983,10 @@ punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" @@ -1008,12 +1011,12 @@ resolve@^1.19.0: is-core-module "^2.2.0" path-parse "^1.0.6" -rollup@^2.35.1: - version "2.47.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.47.0.tgz#9d958aeb2c0f6a383cacc0401dff02b6e252664d" - integrity sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg== +rollup@^2.56.2: + version "2.56.3" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.3.tgz#b63edadd9851b0d618a6d0e6af8201955a77aeff" + integrity sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg== optionalDependencies: - fsevents "~2.3.1" + fsevents "~2.3.2" safe-buffer@5.1.2: version "5.1.2" @@ -1032,11 +1035,6 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -1083,10 +1081,10 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: punycode "^2.1.1" @@ -1123,13 +1121,12 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -whatwg-url@^8.4.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" - integrity sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg== +whatwg-url@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-9.1.0.tgz#1b112cf237d72cd64fa7882b9c3f6234a1c3050d" + integrity sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA== dependencies: - lodash "^4.7.0" - tr46 "^2.0.2" + tr46 "^2.1.0" webidl-conversions "^6.1.0" wordwrapjs@^4.0.0: @@ -1141,9 +1138,9 @@ wordwrapjs@^4.0.0: typical "^5.2.0" ws@^7.4.2: - version "7.4.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" - integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== + version "7.5.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.4.tgz#56bfa20b167427e138a7795de68d134fe92e21f9" + integrity sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg== yallist@^4.0.0: version "4.0.0" From e34f0e7ac78b5ea360fc378756f1f0437c417308 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 4 Sep 2021 14:58:25 -0400 Subject: [PATCH 217/226] updated build --- dist/material-datetimepicker.min.css | 2 +- package.json | 6 +++--- yarn.lock | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/dist/material-datetimepicker.min.css b/dist/material-datetimepicker.min.css index 962a7dc..400e2fc 100644 --- a/dist/material-datetimepicker.min.css +++ b/dist/material-datetimepicker.min.css @@ -1 +1 @@ -md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp *:focus{outline:none!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}md-menu-content.dtp-month-list{background-color:#fff}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}md-menu-content.dtp-year-list{background-color:#fff}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0;text-align:center;overflow:hidden}.dtp div.dtp-picker-month,.dtp div.dtp-actual-time{font-size:1em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:260px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:12px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp table.dtp-picker-days tr>td>.dtp-select-day,.dtp .dtp-picker-time>a{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#dddddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:2px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp.hidden,.dtp .hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev,[dir=rtl] .dtp div.dtp-month-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-today,.dtp-btn-ok,.dtp-btn-cancel{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none;min-width:300px;width:300px}.noselect{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp *:focus{outline:none!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table>tbody>tr>td,.dtp .table>tbody>tr>th,.dtp .table>tfoot>tr>td,.dtp .table>tfoot>tr>th,.dtp .table>thead>tr>td,.dtp .table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp>.dtp-content{max-width:300px;max-height:500px}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#689F38;color:#fff;text-align:center}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em;cursor:pointer}md-menu-content.dtp-month-list{background-color:#fff}.dtp div.dtp-actual-num{font-size:2em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:2em;line-height:.9;color:#dcedc8}.dtp div.dtp-actual-maxtime span.selected{color:#fff}.dtp div.dtp-actual-year{font-size:1.6em;color:#dcedc8;cursor:pointer}md-menu-content.dtp-year-list{background-color:#fff}.dtp div.dtp-month-btn{font-size:1.4em;line-height:30px;cursor:pointer}.dtp div.dtp-month-btn-prev{text-align:right}.dtp div.dtp-month-btn-next{text-align:left}.dtp div.dtp-year-btn{font-size:1.4em;line-height:30px;cursor:pointer;color:#dcedc8}.dtp div.dtp-year-btn-prev{text-align:right}.dtp div.dtp-year-btn-next{text-align:left}.dtp div.dtp-picker{padding:10px 10px 0;text-align:center;overflow:hidden}.dtp div.dtp-picker-month,.dtp div.dtp-actual-time{font-size:1em;font-weight:500;text-align:center}.dtp div.dtp-actual-time.p60 span.selected{color:#689f38}.dtp .dtp-close{position:absolute;top:0;right:5px;font-size:16px}.dtp .dtp-close>a{color:#fff;text-decoration:none}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:260px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:none}.dtp table.dtp-picker-days tr>td{font-size:12px;text-align:center;padding:0}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important}.dtp table.dtp-picker-days tr>td,.dtp table.dtp-picker-days tr>td>.dtp-select-day{width:36px;height:36px}.dtp table.dtp-picker-days tr>td>.dtp-select-day{display:inline-block}.dtp table.dtp-picker-days tr>td>.dtp-select-day,.dtp .dtp-picker-time>a{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.selected.hilite{padding:6px;font-size:16px;font-weight:500;background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr>td>a.hilite:not(.selected){padding:6px;font-size:16px;font-weight:500;color:#8bc34a}.dtp table.dtp-picker-days tr>td>a:hover:not(.selected){background:#dddddd}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:2px 3px;width:38px;height:28px}.dtp .p10>a{color:#689f38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp div.dtp-picker-datetime{padding-bottom:25px}.dtp span.dtp-actual-meridien{font-size:.6em}.dtp div.dtp-actual-meridien{height:20px}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time>a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time>a.dtp-select-hour.disabled,.dtp .dtp-picker-time>a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time>a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0;padding:10px;border-radius:50%!important;background:#eee;direction:ltr;cursor:default}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-second-hand{width:1px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding-bottom:10px;text-align:right}.dtp.hidden,.dtp .hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}[dir=rtl] .dtp div.dtp-year-btn-next,[dir=rtl] .dtp div.dtp-month-btn-next,[dir=rtl] .dtp div.dtp-year-btn-prev,[dir=rtl] .dtp div.dtp-month-btn-prev{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.dtp-btn-today,.dtp-btn-ok,.dtp-btn-cancel{min-width:70px}.dtp-clear{position:absolute;top:0;right:-10px}.dtp-no-msclear::-ms-clear{display:none;width:0;height:0}.dtp-btn-calendar{position:absolute;top:-3px;left:-10px}.dtp-input{margin-left:30px;max-width:calc(100% - 30px)} diff --git a/package.json b/package.json index 8d7cfd4..e67f954 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "angular": "^1.8.2", "angular-animate": "^1.8.2", "angular-aria": "^1.8.2", - "angular-material": "^1.2.2", + "angular-material": "^1.2.3", "angular-messages": "^1.8.2", "moment": "^2.29.1" }, @@ -32,7 +32,7 @@ "url": "https://github.com/beenote/angular-material-datetimepicker" }, "devDependencies": { - "@web/dev-server": "^0.1.17", - "esbuild": "^0.11.20" + "@web/dev-server": "^0.1.22", + "esbuild": "^0.12.25" } } diff --git a/yarn.lock b/yarn.lock index 8dc5051..23efc4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -235,7 +235,7 @@ rollup "^2.56.2" whatwg-url "^9.0.0" -"@web/dev-server@^0.1.17": +"@web/dev-server@^0.1.22": version "0.1.22" resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.1.22.tgz#5f5bd054750c0f5ce439e8c21d73228591f2ffa7" integrity sha512-8PZxz2PGK9Ndr0C2LtWHrTzPKkDYTP/IvEMs9nrIebQWxvVjxI/HpvNfli3ivvCtvvcJFI26FvfWaAWDq14GgQ== @@ -282,7 +282,7 @@ angular-aria@^1.8.2: resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.8.2.tgz#3e5d546e549d8bddcf0b8031c677d3129d82a76d" integrity sha512-xWT1Lm+Xug2GM6nGNMioBP4hXt3sj2eGaExa4cVCZUYSVWezgyuD1RiLgzJzwTkBGYplHQUzQaz3yDY8jVI6yQ== -angular-material@^1.2.2: +angular-material@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.2.3.tgz#e942468bdccbbe99e1f88d680cd4bff3e4803b80" integrity sha512-Xx5WC8OLbPmMegnl8Mrex5YtF/fEXwwxnESIeKQvyL6ljDeC41jrSxpYSiM3OUeoNY3ySE1G6M63up3IBsFzNQ== @@ -558,10 +558,10 @@ es-module-lexer@^0.7.1: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.7.1.tgz#c2c8e0f46f2df06274cdaf0dd3f3b33e0a0b267d" integrity sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw== -esbuild@^0.11.20: - version "0.11.23" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.11.23.tgz#c42534f632e165120671d64db67883634333b4b8" - integrity sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q== +esbuild@^0.12.25: + version "0.12.25" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.25.tgz#c2131cef022cf9fe94aaa5e00110b27fc976221a" + integrity sha512-woie0PosbRSoN8gQytrdCzUbS2ByKgO8nD1xCZkEup3D9q92miCze4PqEI9TZDYAuwn6CruEnQpJxgTRWdooAg== escape-html@^1.0.3: version "1.0.3" From 8b94d220a5ac3b5976d76411dc19f4f6b203f2d9 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 4 Sep 2021 15:05:28 -0400 Subject: [PATCH 218/226] version 1.19.8 --- README.md | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 085f34b..18247f2 100644 --- a/README.md +++ b/README.md @@ -58,8 +58,8 @@ Depends on the following library: - - + + ``` diff --git a/package.json b/package.json index e67f954..3ac3e7c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.7", + "version": "1.19.8", "keywords": [ "css", "js", From 566bc31ad0c261301fecd82f0cecfa11de984ed1 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 15 Oct 2021 21:55:40 -0400 Subject: [PATCH 219/226] update dev deps --- README.md | 3 +- package.json | 4 +- yarn.lock | 315 +++++++++++++++++++++++++++++---------------------- 3 files changed, 183 insertions(+), 139 deletions(-) diff --git a/README.md b/README.md index 18247f2..1bea43c 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ [![Known Vulnerabilities](https://snyk.io/test/github/beenote/angular-material-datetimepicker/badge.svg)](https://snyk.io/test/github/beenote/angular-material-datetimepicker) [![npm version](https://badge.fury.io/js/ng-material-datetimepicker.svg)](https://badge.fury.io/js/ng-material-datetimepicker) [![Open Source Love](https://badges.frapsoft.com/os/mit/mit.svg?v=102)](https://github.com/ellerbrock/open-source-badge/) -[![dependencies Status](https://status.david-dm.org/gh/beenote/angular-material-datetimepicker.svg)](https://david-dm.org/beenote/angular-material-datetimepicker) -[![devDependencies Status](https://status.david-dm.org/gh/beenote/angular-material-datetimepicker.svg?type=dev)](https://david-dm.org/beenote/angular-material-datetimepicker?type=dev) +![Libraries.io dependency status for latest release](https://img.shields.io/librariesio/release/npm/ng-material-datetimepicker) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) # Angular Material DateTimePicker diff --git a/package.json b/package.json index 3ac3e7c..9c5d6c5 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "url": "https://github.com/beenote/angular-material-datetimepicker" }, "devDependencies": { - "@web/dev-server": "^0.1.22", - "esbuild": "^0.12.25" + "@web/dev-server": "^0.1.25", + "esbuild": "^0.13.7" } } diff --git a/yarn.lock b/yarn.lock index 23efc4f..1045915 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,16 +3,16 @@ "@babel/code-frame@^7.12.11": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== + version "7.15.8" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503" + integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg== dependencies: "@babel/highlight" "^7.14.5" "@babel/helper-validator-identifier@^7.14.5": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" - integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== "@babel/highlight@^7.14.5": version "7.14.5" @@ -152,9 +152,9 @@ integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== "@types/node@*": - version "16.7.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.10.tgz#7aa732cc47341c12a16b7d562f519c2383b6d4fc" - integrity sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA== + version "16.11.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.0.tgz#4b95f2327bacd1ef8f08d8ceda193039c5d7f52e" + integrity sha512-8MLkBIYQMuhRBQzGN9875bYsOhPnf/0rgXGo66S2FemHkhbn9qtsz9ywV1iCG+vbjigE4WUNVvw37Dx+L0qsPg== "@types/parse5@^6.0.1": version "6.0.1" @@ -200,17 +200,17 @@ dependencies: semver "^7.3.4" -"@web/dev-server-core@^0.3.14", "@web/dev-server-core@^0.3.3": - version "0.3.14" - resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.3.14.tgz#3ccaa2d883f5e8a70d5f995227aa35294cbb76fc" - integrity sha512-QHWGbkLI7qZVkELd6a7R4llRF9zydwbZagAeiJRvOIIiDhG5Uu9DfAWAQL+RSCb2hqBlEnaVAK4keNffKol4rQ== +"@web/dev-server-core@^0.3.16": + version "0.3.16" + resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.3.16.tgz#7404383d05031f462a29f578dc35948d0af35344" + integrity sha512-nj6liCErIGtpuZYPf6QaxGQ9nlaHd8Cf/NBcRhogskvjOVFkF3FS9xpjRw3WidkmOQnk+D0ZGCeXjtTibgy5CA== dependencies: "@types/koa" "^2.11.6" "@types/ws" "^7.4.0" "@web/parse5-utils" "^1.2.0" chokidar "^3.4.3" clone "^2.1.2" - es-module-lexer "^0.7.1" + es-module-lexer "^0.9.0" get-stream "^6.0.0" is-stream "^2.0.0" isbinaryfile "^4.0.6" @@ -224,35 +224,35 @@ picomatch "^2.2.2" ws "^7.4.2" -"@web/dev-server-rollup@^0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.3.9.tgz#4dec68b24949a216a33d4aba9589a70dbc9a42a8" - integrity sha512-8NOV8GxcDXk9u+hsVYllGiMhcORYMFK+LtLT4HIg3+emW64j0MynttowBoOFpgwv7YOuVQ6lWe1kmJxiI+TRdg== +"@web/dev-server-rollup@^0.3.11": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.3.11.tgz#1bd7fc906d028ede33e95a188cb4e8080074f343" + integrity sha512-heDmLrmV5bNap+fkAJdOKDqVG2ZpXu86CfN3dZqaUgjUMNTLsvgWI2CikD9+QV0tSstfXXwYUuTVeNIEvNjTcA== dependencies: - "@web/dev-server-core" "^0.3.3" - chalk "^4.1.0" + "@web/dev-server-core" "^0.3.16" + nanocolors "^0.2.1" parse5 "^6.0.1" - rollup "^2.56.2" + rollup "^2.58.0" whatwg-url "^9.0.0" -"@web/dev-server@^0.1.22": - version "0.1.22" - resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.1.22.tgz#5f5bd054750c0f5ce439e8c21d73228591f2ffa7" - integrity sha512-8PZxz2PGK9Ndr0C2LtWHrTzPKkDYTP/IvEMs9nrIebQWxvVjxI/HpvNfli3ivvCtvvcJFI26FvfWaAWDq14GgQ== +"@web/dev-server@^0.1.25": + version "0.1.25" + resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.1.25.tgz#e25120041560c9584d6dfd87b77a28d722991ee7" + integrity sha512-9ZMUDDIP3QzciF7aoY5x8plOwx2zCWbX2OfPrryKxQx/tQmHb+Z+Z6nLvGtNZZ2KAfHIxhXJXOduRBHxTgIkzg== dependencies: "@babel/code-frame" "^7.12.11" "@rollup/plugin-node-resolve" "^11.0.1" "@types/command-line-args" "^5.0.0" "@web/config-loader" "^0.1.3" - "@web/dev-server-core" "^0.3.14" - "@web/dev-server-rollup" "^0.3.9" + "@web/dev-server-core" "^0.3.16" + "@web/dev-server-rollup" "^0.3.11" camelcase "^6.2.0" - chalk "^4.1.0" command-line-args "^5.1.1" command-line-usage "^6.1.1" debounce "^1.2.0" deepmerge "^4.2.2" ip "^1.1.5" + nanocolors "^0.2.1" open "^8.0.2" portfinder "^1.0.28" @@ -304,18 +304,6 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -any-promise@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -380,14 +368,6 @@ chalk@^2.0.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chokidar@^3.4.3: version "3.5.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" @@ -420,23 +400,11 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - command-line-args@^5.1.1: version "5.2.0" resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.0.tgz#087b02748272169741f1fd7c785b295df079b9be" @@ -489,20 +457,13 @@ debug@^3.1.0, debug@^3.1.1: dependencies: ms "^2.1.1" -debug@^4.1.1: +debug@^4.1.1, debug@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -553,15 +514,118 @@ encodeurl@^1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -es-module-lexer@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.7.1.tgz#c2c8e0f46f2df06274cdaf0dd3f3b33e0a0b267d" - integrity sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw== - -esbuild@^0.12.25: - version "0.12.25" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.25.tgz#c2131cef022cf9fe94aaa5e00110b27fc976221a" - integrity sha512-woie0PosbRSoN8gQytrdCzUbS2ByKgO8nD1xCZkEup3D9q92miCze4PqEI9TZDYAuwn6CruEnQpJxgTRWdooAg== +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +esbuild-android-arm64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.7.tgz#528886c36968aa6ab6496392d419654dda88f092" + integrity sha512-yqCTKzmm3jiUXgi0yeKhvwZCZTqClUXwwMRAntcM9u/xvXhmpw0V0Z4qDEpnkmF2NCMzmJRH+DAAQ5whuf3CYA== + +esbuild-darwin-64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.7.tgz#32cf420d43ca448e7741a90d0d4c6dc5385969da" + integrity sha512-MvsgMUWzq5FxoeJLSavw3rgQbaC55A8QTI1U2/8MWamtAeDKyzWQnglcsF0/TkjGLaKEqS0ZLo8akJ8q34BCtw== + +esbuild-darwin-arm64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.7.tgz#c80f0b62c8ae4710b17090f507037aeae73e9016" + integrity sha512-tuP+dpIzXj17UC17VkHFDAH5nB7MajJK7sF8Fz4iVo8cml8YXj3MeNtjjLmx9YFvPs4XW3hFw1eqZJ06h2ssIA== + +esbuild-freebsd-64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.7.tgz#0b826a9655446c0d0a01a4a996d450e5cb0e033a" + integrity sha512-p07TrpkCJJyAXXCXFm2IpAvyASUTcuT0OF43riEsgjuRJmtaNBOUENecr2B2k/zd9wkGz6UyxxtnFntaBttkDg== + +esbuild-freebsd-arm64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.7.tgz#f9c980ce7e71e6702f82706a6244959eba2b80dc" + integrity sha512-MCtfBRkE1GwAnjVoWPYoZ+S/+zanzWxAJVER1/8jmWobCXJG0w+YM2IXQ2fN4T9U96RusFWQDMJVoACnqhIAzg== + +esbuild-linux-32@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.7.tgz#3d9d704452ed13da20771537bf30f695b9f80327" + integrity sha512-HM4d16XbqToo93LPrgzkiLgX3Xgr9Mw67tEM8vjhHDx18JnaZqPdIsl5ZfCqRGHlLUq+GdFKl6+dH7WlsiWMCA== + +esbuild-linux-64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.7.tgz#ce5c7b964990fdb2713ce816f0a24ffffd96942c" + integrity sha512-krgiIEyqcS0kfTjptGEQzdYwiEmmqpmiZHlKqZILVuU5BaIVWCBMmVx20HH9waJw1yT0Ao4fZTZ9kg8s/pKAYA== + +esbuild-linux-arm64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.7.tgz#53a53f43669ef705c925bf275491d507cb77b06b" + integrity sha512-aM2BUTdbtzEUOuLqDusGCuWQRqc0JazgbA/6+Q9xhUgNLHGUMAsu4C5G0qPnJCTlWGZX+bcQYma6wFVEp9ibBg== + +esbuild-linux-arm@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.7.tgz#3372ea117517aa3194ed1622305ab76bf2550b1d" + integrity sha512-GOAt1brGG14mmQx2sRD3wHi3rih94OzhmDRVyo7JvlSmWOfEczPf7zL7YfmgjuktvvuLTERtTJzaih7nyCwPOg== + +esbuild-linux-mips64le@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.7.tgz#c431291deecb949a4cdbbab0bc01b6b4a962104a" + integrity sha512-+UJq6cxpc2ldaQFdpEDrBhqhluXsqCNlWiHccIjq25r+3YbFg0c/RJEypoVU7tjhGXUGWyWWQ7SLkzHYpf+Nsg== + +esbuild-linux-ppc64le@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.7.tgz#d47b2322ac1ad61669045d5f95181d4f0d9744d2" + integrity sha512-6zwpliO4ZZtodDYM1JJEmSMpkd07I8bnNOKoHe7TOs9VhylXJooHh5ObSbSvk3FxCBs+jL5bxb24p10/Cg4RGw== + +esbuild-netbsd-64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.7.tgz#9c9fed5dfc2f3656de024496f10928368a29ea10" + integrity sha512-CfTHeTfJWlwjgfpApXYvECytLD6BzTWovLE0+28KT7bjU5fM4ieDYzRvjWjFAOB2X6DWpaoQnJAlhJirQBW0EQ== + +esbuild-openbsd-64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.7.tgz#fc039ce363b0ad5617a82dc9d312fccebd950070" + integrity sha512-qfW+f0MQfl72zVwgbV00I1kAP2zty+N031cNnQINcBmzHOSbEbaBQbUM0kawq+wdfgS/Xmppgf7nD1H8GWAvow== + +esbuild-sunos-64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.7.tgz#ad85a2f2cd38b6e920f2ad07ebc134cdba92e26d" + integrity sha512-fVRM9mV0wAYLt92IqzudxACMLJZRQFx1oJsNeU4fPFmUxIkYE4C7G7z9vqI2eu9bpDo1fA+3+5djo/T/28Mckg== + +esbuild-windows-32@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.7.tgz#146b416c5172a2c252ce29f899c0c8f1a20eac50" + integrity sha512-v3csjeQtlHHWS1q/tE9rTRCSSU/fGvJVh1l7gkS93ysAaIMeC0j9Q0h2PxFpQ6yxuwftuDYfQdnkVGcqjkKM8A== + +esbuild-windows-64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.7.tgz#9eaffae2204263a7b35313ea51a6a6e5a5e0bb48" + integrity sha512-vk+yv/vYpHZP0vxSaxaA4EMaicuxy4E435EXkbsgk5UgpcQgSP0CVlIeaqtgfSM3IwGnpbagOirRVqqZqxyMDQ== + +esbuild-windows-arm64@0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.7.tgz#6937647f05528248b1634027d839ae81ffdde8c2" + integrity sha512-0Fp+IeG5qWLCK+U6d8L9/SnXkI6f3JMtauSQ8HHzw3Fl0pZ+VImUAUWZ3g2fhthNqp+t8dB3n238CJD6XBn15w== + +esbuild@^0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.7.tgz#ee6e04da3c0ca34f35a05dea649caa48686c92fb" + integrity sha512-Ok3w+Pc9SNdNVEEJUUx9OvNZHwFyoKS0N+ceytfUB3wh/HxhRkOEc9dO8KR9AjfpFI82/Wg258GRDs1/8SFgKQ== + optionalDependencies: + esbuild-android-arm64 "0.13.7" + esbuild-darwin-64 "0.13.7" + esbuild-darwin-arm64 "0.13.7" + esbuild-freebsd-64 "0.13.7" + esbuild-freebsd-arm64 "0.13.7" + esbuild-linux-32 "0.13.7" + esbuild-linux-64 "0.13.7" + esbuild-linux-arm "0.13.7" + esbuild-linux-arm64 "0.13.7" + esbuild-linux-mips64le "0.13.7" + esbuild-linux-ppc64le "0.13.7" + esbuild-netbsd-64 "0.13.7" + esbuild-openbsd-64 "0.13.7" + esbuild-sunos-64 "0.13.7" + esbuild-windows-32 "0.13.7" + esbuild-windows-64 "0.13.7" + esbuild-windows-arm64 "0.13.7" escape-html@^1.0.3: version "1.0.3" @@ -629,11 +693,6 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" @@ -705,9 +764,9 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-core-module@^2.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19" - integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== + version "2.8.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== dependencies: has "^1.0.3" @@ -729,9 +788,9 @@ is-generator-function@^1.0.7: has-tostringtag "^1.0.0" is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" @@ -774,25 +833,18 @@ keygrip@~1.1.0: dependencies: tsscmp "1.0.6" -koa-compose@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7" - integrity sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec= - dependencies: - any-promise "^1.1.0" - koa-compose@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== -koa-convert@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-1.2.0.tgz#da40875df49de0539098d1700b50820cebcd21d0" - integrity sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA= +koa-convert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" + integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== dependencies: co "^4.6.0" - koa-compose "^3.0.0" + koa-compose "^4.1.0" koa-etag@^4.0.0: version "4.0.0" @@ -819,16 +871,16 @@ koa-static@^5.0.0: koa-send "^5.0.0" koa@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.1.tgz#6275172875b27bcfe1d454356a5b6b9f5a9b1051" - integrity sha512-Lb2Dloc72auj5vK4X4qqL7B5jyDPQaZucc9sR/71byg7ryoD1NCaCm63CShk9ID9quQvDEi1bGR/iGjCG7As3w== + version "2.13.3" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.3.tgz#a62641ba753ec54bee2c6da1a4f294c5fac35407" + integrity sha512-XhXIoR+ylAwqG3HhXwnMPQAM/4xfywz52OvxZNmxmTWGGHsvmBv4NSIhURha6yMuvEex1WdtplUTHnxnKpQiGw== dependencies: accepts "^1.3.5" cache-content-type "^1.0.0" content-disposition "~0.5.2" content-type "^1.0.4" cookies "~0.8.0" - debug "~3.1.0" + debug "^4.3.2" delegates "^1.0.0" depd "^2.0.0" destroy "^1.0.4" @@ -839,7 +891,7 @@ koa@^2.13.0: http-errors "^1.6.3" is-generator-function "^1.0.7" koa-compose "^4.1.0" - koa-convert "^1.2.0" + koa-convert "^2.0.0" on-finished "^2.3.0" only "~0.0.2" parseurl "^1.3.2" @@ -869,17 +921,17 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mime-db@1.49.0: - version "1.49.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" - integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== +mime-db@1.50.0: + version "1.50.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" + integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.24: - version "2.1.32" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" - integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== + version "2.1.33" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" + integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== dependencies: - mime-db "1.49.0" + mime-db "1.50.0" minimist@^1.2.5: version "1.2.5" @@ -898,11 +950,6 @@ moment@^2.29.1: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -913,6 +960,11 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +nanocolors@^0.2.1: + version "0.2.13" + resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b" + integrity sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA== + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -936,9 +988,9 @@ only@~0.0.2: integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q= open@^8.0.2: - version "8.2.1" - resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" - integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== + version "8.3.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.3.0.tgz#fdef1cdfe405e60dec8ebd18889e7e812f39c59f" + integrity sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -1011,10 +1063,10 @@ resolve@^1.19.0: is-core-module "^2.2.0" path-parse "^1.0.6" -rollup@^2.56.2: - version "2.56.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.3.tgz#b63edadd9851b0d618a6d0e6af8201955a77aeff" - integrity sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg== +rollup@^2.58.0: + version "2.58.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb" + integrity sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw== optionalDependencies: fsevents "~2.3.2" @@ -1052,13 +1104,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - table-layout@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" @@ -1138,9 +1183,9 @@ wordwrapjs@^4.0.0: typical "^5.2.0" ws@^7.4.2: - version "7.5.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.4.tgz#56bfa20b167427e138a7795de68d134fe92e21f9" - integrity sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg== + version "7.5.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" + integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== yallist@^4.0.0: version "4.0.0" From ec8d3e487671292ada240f30926c104be9ab618f Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Fri, 15 Oct 2021 22:07:37 -0400 Subject: [PATCH 220/226] update README --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 1bea43c..665c09e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ [![Known Vulnerabilities](https://snyk.io/test/github/beenote/angular-material-datetimepicker/badge.svg)](https://snyk.io/test/github/beenote/angular-material-datetimepicker) [![npm version](https://badge.fury.io/js/ng-material-datetimepicker.svg)](https://badge.fury.io/js/ng-material-datetimepicker) [![Open Source Love](https://badges.frapsoft.com/os/mit/mit.svg?v=102)](https://github.com/ellerbrock/open-source-badge/) -![Libraries.io dependency status for latest release](https://img.shields.io/librariesio/release/npm/ng-material-datetimepicker) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) # Angular Material DateTimePicker From 49718f09d63e84ef4191b5e9b5705a03941be2f2 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 6 Nov 2021 15:30:07 -0400 Subject: [PATCH 221/226] migrate to yarn 2 --- .gitignore | 7 + .../@yarnpkg/plugin-interactive-tools.cjs | 363 ++ .yarn/releases/yarn-3.1.0.cjs | 768 ++++ .yarnrc.yml | 7 + package.json | 9 +- yarn.lock | 3705 +++++++++++------ 6 files changed, 3657 insertions(+), 1202 deletions(-) create mode 100644 .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs create mode 100644 .yarn/releases/yarn-3.1.0.cjs create mode 100644 .yarnrc.yml diff --git a/.gitignore b/.gitignore index ea9f043..0ce002a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,10 @@ bower_components node_modules *.log +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions diff --git a/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs b/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs new file mode 100644 index 0000000..527659f --- /dev/null +++ b/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs @@ -0,0 +1,363 @@ +/* eslint-disable */ +//prettier-ignore +module.exports = { +name: "@yarnpkg/plugin-interactive-tools", +factory: function (require) { +var plugin=(()=>{var PR=Object.create,J1=Object.defineProperty,MR=Object.defineProperties,FR=Object.getOwnPropertyDescriptor,LR=Object.getOwnPropertyDescriptors,RR=Object.getOwnPropertyNames,hh=Object.getOwnPropertySymbols,NR=Object.getPrototypeOf,Z4=Object.prototype.hasOwnProperty,aD=Object.prototype.propertyIsEnumerable;var dD=(i,u,f)=>u in i?J1(i,u,{enumerable:!0,configurable:!0,writable:!0,value:f}):i[u]=f,dt=(i,u)=>{for(var f in u||(u={}))Z4.call(u,f)&&dD(i,f,u[f]);if(hh)for(var f of hh(u))aD.call(u,f)&&dD(i,f,u[f]);return i},zn=(i,u)=>MR(i,LR(u)),BR=i=>J1(i,"__esModule",{value:!0});var Si=(i,u)=>{var f={};for(var c in i)Z4.call(i,c)&&u.indexOf(c)<0&&(f[c]=i[c]);if(i!=null&&hh)for(var c of hh(i))u.indexOf(c)<0&&aD.call(i,c)&&(f[c]=i[c]);return f};var Me=(i,u)=>()=>(u||i((u={exports:{}}).exports,u),u.exports),jR=(i,u)=>{for(var f in u)J1(i,f,{get:u[f],enumerable:!0})},UR=(i,u,f)=>{if(u&&typeof u=="object"||typeof u=="function")for(let c of RR(u))!Z4.call(i,c)&&c!=="default"&&J1(i,c,{get:()=>u[c],enumerable:!(f=FR(u,c))||f.enumerable});return i},Er=i=>UR(BR(J1(i!=null?PR(NR(i)):{},"default",i&&i.__esModule&&"default"in i?{get:()=>i.default,enumerable:!0}:{value:i,enumerable:!0})),i);var ey=Me((YH,pD)=>{"use strict";var hD=Object.getOwnPropertySymbols,qR=Object.prototype.hasOwnProperty,zR=Object.prototype.propertyIsEnumerable;function WR(i){if(i==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(i)}function HR(){try{if(!Object.assign)return!1;var i=new String("abc");if(i[5]="de",Object.getOwnPropertyNames(i)[0]==="5")return!1;for(var u={},f=0;f<10;f++)u["_"+String.fromCharCode(f)]=f;var c=Object.getOwnPropertyNames(u).map(function(t){return u[t]});if(c.join("")!=="0123456789")return!1;var g={};return"abcdefghijklmnopqrst".split("").forEach(function(t){g[t]=t}),Object.keys(Object.assign({},g)).join("")==="abcdefghijklmnopqrst"}catch(t){return!1}}pD.exports=HR()?Object.assign:function(i,u){for(var f,c=WR(i),g,t=1;t{"use strict";var ty=ey(),as=typeof Symbol=="function"&&Symbol.for,Q1=as?Symbol.for("react.element"):60103,bR=as?Symbol.for("react.portal"):60106,GR=as?Symbol.for("react.fragment"):60107,VR=as?Symbol.for("react.strict_mode"):60108,YR=as?Symbol.for("react.profiler"):60114,$R=as?Symbol.for("react.provider"):60109,KR=as?Symbol.for("react.context"):60110,XR=as?Symbol.for("react.forward_ref"):60112,JR=as?Symbol.for("react.suspense"):60113,QR=as?Symbol.for("react.memo"):60115,ZR=as?Symbol.for("react.lazy"):60116,mD=typeof Symbol=="function"&&Symbol.iterator;function Z1(i){for(var u="https://reactjs.org/docs/error-decoder.html?invariant="+i,f=1;fmh.length&&mh.push(i)}function uy(i,u,f,c){var g=typeof i;(g==="undefined"||g==="boolean")&&(i=null);var t=!1;if(i===null)t=!0;else switch(g){case"string":case"number":t=!0;break;case"object":switch(i.$$typeof){case Q1:case bR:t=!0}}if(t)return f(c,i,u===""?"."+sy(i,0):u),1;if(t=0,u=u===""?".":u+":",Array.isArray(i))for(var C=0;C{"use strict";kD.exports=xD()});var AD=Me((ga,e2)=>{(function(){var i,u="4.17.21",f=200,c="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",g="Expected a function",t="Invalid `variable` option passed into `_.template`",C="__lodash_hash_undefined__",A=500,x="__lodash_placeholder__",D=1,L=2,N=4,j=1,$=2,h=1,re=2,ce=4,Q=8,oe=16,Se=32,me=64,De=128,J=256,Te=512,Oe=30,Le="...",ot=800,ct=16,Ue=1,be=2,At=3,Ot=1/0,Nt=9007199254740991,Je=17976931348623157e292,V=0/0,ne=4294967295,ge=ne-1,Z=ne>>>1,Ae=[["ary",De],["bind",h],["bindKey",re],["curry",Q],["curryRight",oe],["flip",Te],["partial",Se],["partialRight",me],["rearg",J]],at="[object Arguments]",it="[object Array]",Ft="[object AsyncFunction]",jt="[object Boolean]",hn="[object Date]",Un="[object DOMException]",Jt="[object Error]",Yt="[object Function]",cr="[object GeneratorFunction]",w="[object Map]",pt="[object Number]",Mn="[object Null]",Bn="[object Object]",Xn="[object Promise]",vr="[object Proxy]",gr="[object RegExp]",r0="[object Set]",Ci="[object String]",yo="[object Symbol]",Ds="[object Undefined]",Mu="[object WeakMap]",Gf="[object WeakSet]",iu="[object ArrayBuffer]",ou="[object DataView]",ol="[object Float32Array]",ul="[object Float64Array]",Es="[object Int8Array]",Uo="[object Int16Array]",sl="[object Int32Array]",Ss="[object Uint8Array]",Cs="[object Uint8ClampedArray]",Ti="[object Uint16Array]",Fu="[object Uint32Array]",ll=/\b__p \+= '';/g,fl=/\b(__p \+=) '' \+/g,cl=/(__e\(.*?\)|\b__t\)) \+\n'';/g,al=/&(?:amp|lt|gt|quot|#39);/g,Ui=/[&<>"']/g,Mr=RegExp(al.source),Ac=RegExp(Ui.source),of=/<%-([\s\S]+?)%>/g,Ts=/<%([\s\S]+?)%>/g,xs=/<%=([\s\S]+?)%>/g,dl=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,qi=/^\w*$/,qo=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,kr=/[\\^$.*+?()[\]{}|]/g,Fr=RegExp(kr.source),si=/^\s+/,H0=/\s/,b0=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Bt=/\{\n\/\* \[wrapped with (.+)\] \*/,Lu=/,? & /,c0=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ru=/[()=,{}\[\]\/\s]/,ks=/\\(\\)?/g,As=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,uu=/\w*$/,wo=/^[-+]0x[0-9a-f]+$/i,zo=/^0b[01]+$/i,Os=/^\[object .+?Constructor\]$/,Is=/^0o[0-7]+$/i,uf=/^(?:0|[1-9]\d*)$/,_n=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Nu=/($^)/,Wo=/['\n\r\u2028\u2029\\]/g,su="\\ud800-\\udfff",Ps="\\u0300-\\u036f",pl="\\ufe20-\\ufe2f",Vf="\\u20d0-\\u20ff",hl=Ps+pl+Vf,Bu="\\u2700-\\u27bf",ju="a-z\\xdf-\\xf6\\xf8-\\xff",sf="\\xac\\xb1\\xd7\\xf7",ro="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Ms="\\u2000-\\u206f",ml=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Uu="A-Z\\xc0-\\xd6\\xd8-\\xde",G0="\\ufe0e\\ufe0f",Fs=sf+ro+Ms+ml,tt="['\u2019]",zi="["+su+"]",lu="["+Fs+"]",Ho="["+hl+"]",O0="\\d+",vl="["+Bu+"]",gl="["+ju+"]",fu="[^"+su+Fs+O0+Bu+ju+Uu+"]",_l="\\ud83c[\\udffb-\\udfff]",Sn="(?:"+Ho+"|"+_l+")",gt="[^"+su+"]",en="(?:\\ud83c[\\udde6-\\uddff]){2}",I0="[\\ud800-\\udbff][\\udc00-\\udfff]",li="["+Uu+"]",qu="\\u200d",Wi="(?:"+gl+"|"+fu+")",zu="(?:"+li+"|"+fu+")",Wu="(?:"+tt+"(?:d|ll|m|re|s|t|ve))?",Ls="(?:"+tt+"(?:D|LL|M|RE|S|T|VE))?",fi=Sn+"?",e0="["+G0+"]?",io="(?:"+qu+"(?:"+[gt,en,I0].join("|")+")"+e0+fi+")*",D0="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Do="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",i0=e0+fi+io,Rs="(?:"+[vl,en,I0].join("|")+")"+i0,a0="(?:"+[gt+Ho+"?",Ho,en,I0,zi].join("|")+")",Hu=RegExp(tt,"g"),V0=RegExp(Ho,"g"),bu=RegExp(_l+"(?="+_l+")|"+a0+i0,"g"),Ns=RegExp([li+"?"+gl+"+"+Wu+"(?="+[lu,li,"$"].join("|")+")",zu+"+"+Ls+"(?="+[lu,li+Wi,"$"].join("|")+")",li+"?"+Wi+"+"+Wu,li+"+"+Ls,Do,D0,O0,Rs].join("|"),"g"),bo=RegExp("["+qu+su+hl+G0+"]"),P0=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,ln=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],lf=-1,nr={};nr[ol]=nr[ul]=nr[Es]=nr[Uo]=nr[sl]=nr[Ss]=nr[Cs]=nr[Ti]=nr[Fu]=!0,nr[at]=nr[it]=nr[iu]=nr[jt]=nr[ou]=nr[hn]=nr[Jt]=nr[Yt]=nr[w]=nr[pt]=nr[Bn]=nr[gr]=nr[r0]=nr[Ci]=nr[Mu]=!1;var rr={};rr[at]=rr[it]=rr[iu]=rr[ou]=rr[jt]=rr[hn]=rr[ol]=rr[ul]=rr[Es]=rr[Uo]=rr[sl]=rr[w]=rr[pt]=rr[Bn]=rr[gr]=rr[r0]=rr[Ci]=rr[yo]=rr[Ss]=rr[Cs]=rr[Ti]=rr[Fu]=!0,rr[Jt]=rr[Yt]=rr[Mu]=!1;var Go={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},Gu={"&":"&","<":"<",">":">",'"':""","'":"'"},yl={"&":"&","<":"<",">":">",""":'"',"'":"'"},cu={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Bs=parseFloat,Vu=parseInt,M0=typeof global=="object"&&global&&global.Object===Object&&global,au=typeof self=="object"&&self&&self.Object===Object&&self,Lr=M0||au||Function("return this")(),F=typeof ga=="object"&&ga&&!ga.nodeType&&ga,R=F&&typeof e2=="object"&&e2&&!e2.nodeType&&e2,U=R&&R.exports===F,H=U&&M0.process,fe=function(){try{var ae=R&&R.require&&R.require("util").types;return ae||H&&H.binding&&H.binding("util")}catch(Be){}}(),ue=fe&&fe.isArrayBuffer,de=fe&&fe.isDate,W=fe&&fe.isMap,ve=fe&&fe.isRegExp,Fe=fe&&fe.isSet,Ge=fe&&fe.isTypedArray;function K(ae,Be,Ie){switch(Ie.length){case 0:return ae.call(Be);case 1:return ae.call(Be,Ie[0]);case 2:return ae.call(Be,Ie[0],Ie[1]);case 3:return ae.call(Be,Ie[0],Ie[1],Ie[2])}return ae.apply(Be,Ie)}function xe(ae,Be,Ie,ht){for(var mt=-1,wn=ae==null?0:ae.length;++mt-1}function wt(ae,Be,Ie){for(var ht=-1,mt=ae==null?0:ae.length;++ht-1;);return Ie}function js(ae,Be){for(var Ie=ae.length;Ie--&&Qe(Be,ae[Ie],0)>-1;);return Ie}function Dl(ae,Be){for(var Ie=ae.length,ht=0;Ie--;)ae[Ie]===Be&&++ht;return ht}var du=Cn(Go),Yu=Cn(Gu);function Us(ae){return"\\"+cu[ae]}function oo(ae,Be){return ae==null?i:ae[Be]}function Hi(ae){return bo.test(ae)}function qs(ae){return P0.test(ae)}function F0(ae){for(var Be,Ie=[];!(Be=ae.next()).done;)Ie.push(Be.value);return Ie}function Gr(ae){var Be=-1,Ie=Array(ae.size);return ae.forEach(function(ht,mt){Ie[++Be]=[mt,ht]}),Ie}function ir(ae,Be){return function(Ie){return ae(Be(Ie))}}function L0(ae,Be){for(var Ie=-1,ht=ae.length,mt=0,wn=[];++Ie-1}function Ju(a,p){var E=this.__data__,I=hf(E,a);return I<0?(++this.size,E.push([a,p])):E[I][1]=p,this}Z0.prototype.clear=df,Z0.prototype.delete=Ba,Z0.prototype.get=Oc,Z0.prototype.has=mu,Z0.prototype.set=Ju;function ei(a){var p=-1,E=a==null?0:a.length;for(this.clear();++p=p?a:p)),a}function vi(a,p,E,I,B,G){var te,se=p&D,Ee=p&L,$e=p&N;if(E&&(te=B?E(a,I,B,G):E(a)),te!==i)return te;if(!Jr(a))return a;var Ke=On(a);if(Ke){if(te=f1(a),!se)return Xr(a,te)}else{var nt=U0(a),Ct=nt==Yt||nt==cr;if(Eu(a))return Od(a,se);if(nt==Bn||nt==at||Ct&&!B){if(te=Ee||Ct?{}:zd(a),!se)return Ee?Zu(a,Wa(te,a)):j0(a,mf(te,a))}else{if(!rr[nt])return B?a:{};te=Wd(a,nt,se)}}G||(G=new co);var Gt=G.get(a);if(Gt)return Gt;G.set(a,te),kp(a)?a.forEach(function(dn){te.add(vi(dn,p,E,dn,a,G))}):Tp(a)&&a.forEach(function(dn,Yn){te.set(Yn,vi(dn,p,E,Yn,a,G))});var an=$e?Ee?Dn:r1:Ee?Yi:q0,qn=Ke?i:an(a);return je(qn||a,function(dn,Yn){qn&&(Yn=dn,dn=a[Yn]),xl(te,Yn,vi(dn,p,E,Yn,a,G))}),te}function Xf(a){var p=q0(a);return function(E){return Rc(E,a,p)}}function Rc(a,p,E){var I=E.length;if(a==null)return!I;for(a=$t(a);I--;){var B=E[I],G=p[B],te=a[B];if(te===i&&!(B in a)||!G(te))return!1}return!0}function Jf(a,p,E){if(typeof a!="function")throw new Yr(g);return wf(function(){a.apply(i,E)},p)}function ao(a,p,E,I){var B=-1,G=xt,te=!0,se=a.length,Ee=[],$e=p.length;if(!se)return Ee;E&&(p=lt(p,qr(E))),I?(G=wt,te=!1):p.length>=f&&(G=So,te=!1,p=new vu(p));e:for(;++BB?0:B+E),I=I===i||I>B?B:jn(I),I<0&&(I+=B),I=E>I?0:Ip(I);E0&&E(se)?p>1?k0(se,p-1,E,I,B):Rt(B,se):I||(B[B.length]=se)}return B}var v=ec(),m=ec(!0);function S(a,p){return a&&v(a,p,q0)}function O(a,p){return a&&m(a,p,q0)}function M(a,p){return st(p,function(E){return rs(a[E])})}function b(a,p){p=Gs(p,a);for(var E=0,I=p.length;a!=null&&Ep}function ut(a,p){return a!=null&&or.call(a,p)}function In(a,p){return a!=null&&p in $t(a)}function A0(a,p,E){return a>=kn(p,E)&&a=120&&Ke.length>=120)?new vu(te&&Ke):i}Ke=a[0];var nt=-1,Ct=se[0];e:for(;++nt-1;)se!==a&&C0.call(se,Ee,1),C0.call(a,Ee,1);return a}function jc(a,p){for(var E=a?p.length:0,I=E-1;E--;){var B=p[E];if(E==I||B!==G){var G=B;es(B)?C0.call(a,B,1):$a(a,B)}}return a}function Ga(a,p){return a+hu(Ai()*(p-a+1))}function Lm(a,p,E,I){for(var B=-1,G=wr(B0((p-a)/(E||1)),0),te=Ie(G);G--;)te[I?G:++B]=a,a+=E;return te}function Va(a,p){var E="";if(!a||p<1||p>Nt)return E;do p%2&&(E+=a),p=hu(p/2),p&&(a+=a);while(p);return E}function Wn(a,p){return m1(Gd(a,p,$i),a+"")}function wd(a){return Fc(Ef(a))}function Dd(a,p){var E=Ef(a);return Yc(E,mi(p,0,E.length))}function Ol(a,p,E,I){if(!Jr(a))return a;p=Gs(p,a);for(var B=-1,G=p.length,te=G-1,se=a;se!=null&&++BB?0:B+p),E=E>B?B:E,E<0&&(E+=B),B=p>E?0:E-p>>>0,p>>>=0;for(var G=Ie(B);++I>>1,te=a[G];te!==null&&!mo(te)&&(E?te<=p:te=f){var $e=p?null:bm(a);if($e)return Y0($e);te=!1,B=So,Ee=new vu}else Ee=p?[]:se;e:for(;++I=I?a:Oo(a,p,E)}var Ad=pu||function(a){return Lr.clearTimeout(a)};function Od(a,p){if(p)return a.slice();var E=a.length,I=Nr?Nr(E):new a.constructor(E);return a.copy(I),I}function Qa(a){var p=new a.constructor(a.byteLength);return new R0(p).set(new R0(a)),p}function jm(a,p){var E=p?Qa(a.buffer):a.buffer;return new a.constructor(E,a.byteOffset,a.byteLength)}function Um(a){var p=new a.constructor(a.source,uu.exec(a));return p.lastIndex=a.lastIndex,p}function qm(a){return Wr?$t(Wr.call(a)):{}}function Id(a,p){var E=p?Qa(a.buffer):a.buffer;return new a.constructor(E,a.byteOffset,a.length)}function Pd(a,p){if(a!==p){var E=a!==i,I=a===null,B=a===a,G=mo(a),te=p!==i,se=p===null,Ee=p===p,$e=mo(p);if(!se&&!$e&&!G&&a>p||G&&te&&Ee&&!se&&!$e||I&&te&&Ee||!E&&Ee||!B)return 1;if(!I&&!G&&!$e&&a=se)return Ee;var $e=E[I];return Ee*($e=="desc"?-1:1)}}return a.index-p.index}function gf(a,p,E,I){for(var B=-1,G=a.length,te=E.length,se=-1,Ee=p.length,$e=wr(G-te,0),Ke=Ie(Ee+$e),nt=!I;++se1?E[B-1]:i,te=B>2?E[2]:i;for(G=a.length>3&&typeof G=="function"?(B--,G):i,te&&Ii(E[0],E[1],te)&&(G=B<3?i:G,B=1),p=$t(p);++I-1?B[G?p[te]:te]:i}}function Rd(a){return yu(function(p){var E=p.length,I=E,B=Qn.prototype.thru;for(a&&p.reverse();I--;){var G=p[I];if(typeof G!="function")throw new Yr(g);if(B&&!te&&Gc(G)=="wrapper")var te=new Qn([],!0)}for(I=te?I:E;++I1&&er.reverse(),Ke&&Eese))return!1;var $e=G.get(a),Ke=G.get(p);if($e&&Ke)return $e==p&&Ke==a;var nt=-1,Ct=!0,Gt=E&$?new vu:i;for(G.set(a,p),G.set(p,a);++nt1?"& ":"")+p[I],p=p.join(E>2?", ":" "),a.replace(b0,`{ +/* [wrapped with `+p+`] */ +`)}function Xm(a){return On(a)||Ll(a)||!!(di&&a&&a[di])}function es(a,p){var E=typeof a;return p=p==null?Nt:p,!!p&&(E=="number"||E!="symbol"&&uf.test(a))&&a>-1&&a%1==0&&a0){if(++p>=ot)return arguments[0]}else p=0;return a.apply(i,arguments)}}function Yc(a,p){var E=-1,I=a.length,B=I-1;for(p=p===i?I:p;++E1?a[p-1]:i;return E=typeof E=="function"?(a.pop(),E):i,sp(a,E)});function fp(a){var p=z(a);return p.__chain__=!0,p}function cp(a,p){return p(a),a}function Kc(a,p){return p(a)}var Wv=yu(function(a){var p=a.length,E=p?a[0]:0,I=this.__wrapped__,B=function(G){return Hs(G,a)};return p>1||this.__actions__.length||!(I instanceof nn)||!es(E)?this.thru(B):(I=I.slice(E,+E+(p?1:0)),I.__actions__.push({func:Kc,args:[B],thisArg:i}),new Qn(I,this.__chain__).thru(function(G){return p&&!G.length&&G.push(i),G}))});function Hv(){return fp(this)}function bv(){return new Qn(this.value(),this.__chain__)}function Gv(){this.__values__===i&&(this.__values__=Op(this.value()));var a=this.__index__>=this.__values__.length,p=a?i:this.__values__[this.__index__++];return{done:a,value:p}}function Vv(){return this}function Yv(a){for(var p,E=this;E instanceof Or;){var I=Jd(E);I.__index__=0,I.__values__=i,p?B.__wrapped__=I:p=I;var B=I;E=E.__wrapped__}return B.__wrapped__=a,p}function Ml(){var a=this.__wrapped__;if(a instanceof nn){var p=a;return this.__actions__.length&&(p=new nn(this)),p=p.reverse(),p.__actions__.push({func:Kc,args:[g1],thisArg:i}),new Qn(p,this.__chain__)}return this.thru(g1)}function Fl(){return xd(this.__wrapped__,this.__actions__)}var Xc=_f(function(a,p,E){or.call(a,E)?++a[E]:ti(a,E,1)});function $v(a,p,E){var I=On(a)?rt:Nc;return E&&Ii(a,p,E)&&(p=i),I(a,cn(p,3))}function Kv(a,p){var E=On(a)?st:Qf;return E(a,cn(p,3))}var Xv=Ld(Qd),D1=Ld($c);function Jv(a,p){return k0(Jc(a,p),1)}function Qv(a,p){return k0(Jc(a,p),Ot)}function ap(a,p,E){return E=E===i?1:jn(E),k0(Jc(a,p),E)}function dp(a,p){var E=On(a)?je:$o;return E(a,cn(p,3))}function pp(a,p){var E=On(a)?Xe:kl;return E(a,cn(p,3))}var Zv=_f(function(a,p,E){or.call(a,E)?a[E].push(p):ti(a,E,[p])});function eg(a,p,E,I){a=Vi(a)?a:Ef(a),E=E&&!I?jn(E):0;var B=a.length;return E<0&&(E=wr(B+E,0)),ia(a)?E<=B&&a.indexOf(p,E)>-1:!!B&&Qe(a,p,E)>-1}var tg=Wn(function(a,p,E){var I=-1,B=typeof p=="function",G=Vi(a)?Ie(a.length):[];return $o(a,function(te){G[++I]=B?K(p,te,E):po(te,p,E)}),G}),hp=_f(function(a,p,E){ti(a,E,p)});function Jc(a,p){var E=On(a)?lt:vd;return E(a,cn(p,3))}function ng(a,p,E,I){return a==null?[]:(On(p)||(p=p==null?[]:[p]),E=I?i:E,On(E)||(E=E==null?[]:[E]),Oi(a,p,E))}var rg=_f(function(a,p,E){a[E?0:1].push(p)},function(){return[[],[]]});function mp(a,p,E){var I=On(a)?yn:bn,B=arguments.length<3;return I(a,cn(p,4),E,B,$o)}function ig(a,p,E){var I=On(a)?sn:bn,B=arguments.length<3;return I(a,cn(p,4),E,B,kl)}function og(a,p){var E=On(a)?st:Qf;return E(a,Zc(cn(p,3)))}function ug(a){var p=On(a)?Fc:wd;return p(a)}function sg(a,p,E){(E?Ii(a,p,E):p===i)?p=1:p=jn(p);var I=On(a)?Lc:Dd;return I(a,p)}function lg(a){var p=On(a)?Kf:Ao;return p(a)}function E1(a){if(a==null)return 0;if(Vi(a))return ia(a)?Rr(a):a.length;var p=U0(a);return p==w||p==r0?a.size:Zf(a).length}function fg(a,p,E){var I=On(a)?ar:Nm;return E&&Ii(a,p,E)&&(p=i),I(a,cn(p,3))}var cg=Wn(function(a,p){if(a==null)return[];var E=p.length;return E>1&&Ii(a,p[0],p[1])?p=[]:E>2&&Ii(p[0],p[1],p[2])&&(p=[p[0]]),Oi(a,k0(p,1),[])}),rc=Sl||function(){return Lr.Date.now()};function ag(a,p){if(typeof p!="function")throw new Yr(g);return a=jn(a),function(){if(--a<1)return p.apply(this,arguments)}}function vp(a,p,E){return p=E?i:p,p=a&&p==null?a.length:p,Lt(a,De,i,i,i,i,p)}function gp(a,p){var E;if(typeof p!="function")throw new Yr(g);return a=jn(a),function(){return--a>0&&(E=p.apply(this,arguments)),a<=1&&(p=i),E}}var S1=Wn(function(a,p,E){var I=h;if(E.length){var B=L0(E,An(S1));I|=Se}return Lt(a,I,p,E,B)}),_p=Wn(function(a,p,E){var I=h|re;if(E.length){var B=L0(E,An(_p));I|=Se}return Lt(p,I,a,E,B)});function C1(a,p,E){p=E?i:p;var I=Lt(a,Q,i,i,i,i,i,p);return I.placeholder=C1.placeholder,I}function yp(a,p,E){p=E?i:p;var I=Lt(a,oe,i,i,i,i,i,p);return I.placeholder=yp.placeholder,I}function wp(a,p,E){var I,B,G,te,se,Ee,$e=0,Ke=!1,nt=!1,Ct=!0;if(typeof a!="function")throw new Yr(g);p=Fo(p)||0,Jr(E)&&(Ke=!!E.leading,nt="maxWait"in E,G=nt?wr(Fo(E.maxWait)||0,p):G,Ct="trailing"in E?!!E.trailing:Ct);function Gt(f0){var Jo=I,Su=B;return I=B=i,$e=f0,te=a.apply(Su,Jo),te}function an(f0){return $e=f0,se=wf(Yn,p),Ke?Gt(f0):te}function qn(f0){var Jo=f0-Ee,Su=f0-$e,Zp=p-Jo;return nt?kn(Zp,G-Su):Zp}function dn(f0){var Jo=f0-Ee,Su=f0-$e;return Ee===i||Jo>=p||Jo<0||nt&&Su>=G}function Yn(){var f0=rc();if(dn(f0))return er(f0);se=wf(Yn,qn(f0))}function er(f0){return se=i,Ct&&I?Gt(f0):(I=B=i,te)}function vo(){se!==i&&Ad(se),$e=0,I=Ee=B=se=i}function Pi(){return se===i?te:er(rc())}function Mi(){var f0=rc(),Jo=dn(f0);if(I=arguments,B=this,Ee=f0,Jo){if(se===i)return an(Ee);if(nt)return Ad(se),se=wf(Yn,p),Gt(Ee)}return se===i&&(se=wf(Yn,p)),te}return Mi.cancel=vo,Mi.flush=Pi,Mi}var dg=Wn(function(a,p){return Jf(a,1,p)}),Dp=Wn(function(a,p,E){return Jf(a,Fo(p)||0,E)});function pg(a){return Lt(a,Te)}function Qc(a,p){if(typeof a!="function"||p!=null&&typeof p!="function")throw new Yr(g);var E=function(){var I=arguments,B=p?p.apply(this,I):I[0],G=E.cache;if(G.has(B))return G.get(B);var te=a.apply(this,I);return E.cache=G.set(B,te)||G,te};return E.cache=new(Qc.Cache||ei),E}Qc.Cache=ei;function Zc(a){if(typeof a!="function")throw new Yr(g);return function(){var p=arguments;switch(p.length){case 0:return!a.call(this);case 1:return!a.call(this,p[0]);case 2:return!a.call(this,p[0],p[1]);case 3:return!a.call(this,p[0],p[1],p[2])}return!a.apply(this,p)}}function ea(a){return gp(2,a)}var hg=Bm(function(a,p){p=p.length==1&&On(p[0])?lt(p[0],qr(cn())):lt(k0(p,1),qr(cn()));var E=p.length;return Wn(function(I){for(var B=-1,G=kn(I.length,E);++B=p}),Ll=_i(function(){return arguments}())?_i:function(a){return n0(a)&&or.call(a,"callee")&&!N0.call(a,"callee")},On=Ie.isArray,x1=ue?qr(ue):Re;function Vi(a){return a!=null&&na(a.length)&&!rs(a)}function l0(a){return n0(a)&&Vi(a)}function kg(a){return a===!0||a===!1||n0(a)&&Ye(a)==jt}var Eu=pi||W1,Ag=de?qr(de):Ce;function Og(a){return n0(a)&&a.nodeType===1&&!ic(a)}function Cp(a){if(a==null)return!0;if(Vi(a)&&(On(a)||typeof a=="string"||typeof a.splice=="function"||Eu(a)||Df(a)||Ll(a)))return!a.length;var p=U0(a);if(p==w||p==r0)return!a.size;if(nc(a))return!Zf(a).length;for(var E in a)if(or.call(a,E))return!1;return!0}function Ig(a,p){return ze(a,p)}function Pg(a,p,E){E=typeof E=="function"?E:i;var I=E?E(a,p):i;return I===i?ze(a,p,i,E):!!I}function k1(a){if(!n0(a))return!1;var p=Ye(a);return p==Jt||p==Un||typeof a.message=="string"&&typeof a.name=="string"&&!ic(a)}function Mg(a){return typeof a=="number"&&Br(a)}function rs(a){if(!Jr(a))return!1;var p=Ye(a);return p==Yt||p==cr||p==Ft||p==vr}function A1(a){return typeof a=="number"&&a==jn(a)}function na(a){return typeof a=="number"&&a>-1&&a%1==0&&a<=Nt}function Jr(a){var p=typeof a;return a!=null&&(p=="object"||p=="function")}function n0(a){return a!=null&&typeof a=="object"}var Tp=W?qr(W):on;function Fg(a,p){return a===p||sr(a,p,Nn(p))}function Lg(a,p,E){return E=typeof E=="function"?E:i,sr(a,p,Nn(p),E)}function Rg(a){return xp(a)&&a!=+a}function Ng(a){if(Zm(a))throw new mt(c);return mn(a)}function Bg(a){return a===null}function O1(a){return a==null}function xp(a){return typeof a=="number"||n0(a)&&Ye(a)==pt}function ic(a){if(!n0(a)||Ye(a)!=Bn)return!1;var p=uo(a);if(p===null)return!0;var E=or.call(p,"constructor")&&p.constructor;return typeof E=="function"&&E instanceof E&&bi.call(E)==af}var ra=ve?qr(ve):pr;function jg(a){return A1(a)&&a>=-Nt&&a<=Nt}var kp=Fe?qr(Fe):Hr;function ia(a){return typeof a=="string"||!On(a)&&n0(a)&&Ye(a)==Ci}function mo(a){return typeof a=="symbol"||n0(a)&&Ye(a)==yo}var Df=Ge?qr(Ge):Vn;function Ap(a){return a===i}function Ug(a){return n0(a)&&U0(a)==Mu}function qg(a){return n0(a)&&Ye(a)==Gf}var zg=bc(Ha),Wg=bc(function(a,p){return a<=p});function Op(a){if(!a)return[];if(Vi(a))return ia(a)?Jn(a):Xr(a);if(u0&&a[u0])return F0(a[u0]());var p=U0(a),E=p==w?Gr:p==r0?Y0:Ef;return E(a)}function is(a){if(!a)return a===0?a:0;if(a=Fo(a),a===Ot||a===-Ot){var p=a<0?-1:1;return p*Je}return a===a?a:0}function jn(a){var p=is(a),E=p%1;return p===p?E?p-E:p:0}function Ip(a){return a?mi(jn(a),0,ne):0}function Fo(a){if(typeof a=="number")return a;if(mo(a))return V;if(Jr(a)){var p=typeof a.valueOf=="function"?a.valueOf():a;a=Jr(p)?p+"":p}if(typeof a!="string")return a===0?a:+a;a=E0(a);var E=zo.test(a);return E||Is.test(a)?Vu(a.slice(2),E?2:8):wo.test(a)?V:+a}function oa(a){return yi(a,Yi(a))}function Hg(a){return a?mi(jn(a),-Nt,Nt):a===0?a:0}function yr(a){return a==null?"":ho(a)}var Pp=Io(function(a,p){if(nc(p)||Vi(p)){yi(p,q0(p),a);return}for(var E in p)or.call(p,E)&&xl(a,E,p[E])}),Mp=Io(function(a,p){yi(p,Yi(p),a)}),ua=Io(function(a,p,E,I){yi(p,Yi(p),a,I)}),bg=Io(function(a,p,E,I){yi(p,q0(p),a,I)}),Gg=yu(Hs);function Vg(a,p){var E=dr(a);return p==null?E:mf(E,p)}var Fp=Wn(function(a,p){a=$t(a);var E=-1,I=p.length,B=I>2?p[2]:i;for(B&&Ii(p[0],p[1],B)&&(I=1);++E1),G}),yi(a,Dn(a),E),I&&(E=vi(E,D|L|N,Gm));for(var B=p.length;B--;)$a(E,p[B]);return E});function l_(a,p){return Bp(a,Zc(cn(p)))}var f_=yu(function(a,p){return a==null?{}:Fm(a,p)});function Bp(a,p){if(a==null)return{};var E=lt(Dn(a),function(I){return[I]});return p=cn(p),yd(a,E,function(I,B){return p(I,B[0])})}function c_(a,p,E){p=Gs(p,a);var I=-1,B=p.length;for(B||(B=1,a=i);++Ip){var I=a;a=p,p=I}if(E||a%1||p%1){var B=Ai();return kn(a+B*(p-a+Bs("1e-"+((B+"").length-1))),p)}return Ga(a,p)}var __=yf(function(a,p,E){return p=p.toLowerCase(),a+(E?Wp(p):p)});function Wp(a){return L1(yr(a).toLowerCase())}function Hp(a){return a=yr(a),a&&a.replace(_n,du).replace(V0,"")}function y_(a,p,E){a=yr(a),p=ho(p);var I=a.length;E=E===i?I:mi(jn(E),0,I);var B=E;return E-=p.length,E>=0&&a.slice(E,B)==p}function M1(a){return a=yr(a),a&&Ac.test(a)?a.replace(Ui,Yu):a}function w_(a){return a=yr(a),a&&Fr.test(a)?a.replace(kr,"\\$&"):a}var D_=yf(function(a,p,E){return a+(E?"-":"")+p.toLowerCase()}),bp=yf(function(a,p,E){return a+(E?" ":"")+p.toLowerCase()}),E_=Fd("toLowerCase");function S_(a,p,E){a=yr(a),p=jn(p);var I=p?Rr(a):0;if(!p||I>=p)return a;var B=(p-I)/2;return Hc(hu(B),E)+a+Hc(B0(B),E)}function C_(a,p,E){a=yr(a),p=jn(p);var I=p?Rr(a):0;return p&&I>>0,E?(a=yr(a),a&&(typeof p=="string"||p!=null&&!ra(p))&&(p=ho(p),!p&&Hi(a))?Vs(Jn(a),0,E):a.split(p,E)):[]}var I_=yf(function(a,p,E){return a+(E?" ":"")+L1(p)});function P_(a,p,E){return a=yr(a),E=E==null?0:mi(jn(E),0,a.length),p=ho(p),a.slice(E,E+p.length)==p}function M_(a,p,E){var I=z.templateSettings;E&&Ii(a,p,E)&&(p=i),a=yr(a),p=ua({},p,I,n1);var B=ua({},p.imports,I.imports,n1),G=q0(B),te=Eo(B,G),se,Ee,$e=0,Ke=p.interpolate||Nu,nt="__p += '",Ct=X0((p.escape||Nu).source+"|"+Ke.source+"|"+(Ke===xs?As:Nu).source+"|"+(p.evaluate||Nu).source+"|$","g"),Gt="//# sourceURL="+(or.call(p,"sourceURL")?(p.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++lf+"]")+` +`;a.replace(Ct,function(dn,Yn,er,vo,Pi,Mi){return er||(er=vo),nt+=a.slice($e,Mi).replace(Wo,Us),Yn&&(se=!0,nt+=`' + +__e(`+Yn+`) + +'`),Pi&&(Ee=!0,nt+=`'; +`+Pi+`; +__p += '`),er&&(nt+=`' + +((__t = (`+er+`)) == null ? '' : __t) + +'`),$e=Mi+dn.length,dn}),nt+=`'; +`;var an=or.call(p,"variable")&&p.variable;if(!an)nt=`with (obj) { +`+nt+` +} +`;else if(Ru.test(an))throw new mt(t);nt=(Ee?nt.replace(ll,""):nt).replace(fl,"$1").replace(cl,"$1;"),nt="function("+(an||"obj")+`) { +`+(an?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(se?", __e = _.escape":"")+(Ee?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+nt+`return __p +}`;var qn=$p(function(){return wn(G,Gt+"return "+nt).apply(i,te)});if(qn.source=nt,k1(qn))throw qn;return qn}function F_(a){return yr(a).toLowerCase()}function L_(a){return yr(a).toUpperCase()}function R_(a,p,E){if(a=yr(a),a&&(E||p===i))return E0(a);if(!a||!(p=ho(p)))return a;var I=Jn(a),B=Jn(p),G=wl(I,B),te=js(I,B)+1;return Vs(I,G,te).join("")}function F1(a,p,E){if(a=yr(a),a&&(E||p===i))return a.slice(0,ai(a)+1);if(!a||!(p=ho(p)))return a;var I=Jn(a),B=js(I,Jn(p))+1;return Vs(I,0,B).join("")}function N_(a,p,E){if(a=yr(a),a&&(E||p===i))return a.replace(si,"");if(!a||!(p=ho(p)))return a;var I=Jn(a),B=wl(I,Jn(p));return Vs(I,B).join("")}function B_(a,p){var E=Oe,I=Le;if(Jr(p)){var B="separator"in p?p.separator:B;E="length"in p?jn(p.length):E,I="omission"in p?ho(p.omission):I}a=yr(a);var G=a.length;if(Hi(a)){var te=Jn(a);G=te.length}if(E>=G)return a;var se=E-Rr(I);if(se<1)return I;var Ee=te?Vs(te,0,se).join(""):a.slice(0,se);if(B===i)return Ee+I;if(te&&(se+=Ee.length-se),ra(B)){if(a.slice(se).search(B)){var $e,Ke=Ee;for(B.global||(B=X0(B.source,yr(uu.exec(B))+"g")),B.lastIndex=0;$e=B.exec(Ke);)var nt=$e.index;Ee=Ee.slice(0,nt===i?se:nt)}}else if(a.indexOf(ho(B),se)!=se){var Ct=Ee.lastIndexOf(B);Ct>-1&&(Ee=Ee.slice(0,Ct))}return Ee+I}function Vp(a){return a=yr(a),a&&Mr.test(a)?a.replace(al,o0):a}var j_=yf(function(a,p,E){return a+(E?" ":"")+p.toUpperCase()}),L1=Fd("toUpperCase");function Yp(a,p,E){return a=yr(a),p=E?i:p,p===i?qs(a)?cf(a):d0(a):a.match(p)||[]}var $p=Wn(function(a,p){try{return K(a,i,p)}catch(E){return k1(E)?E:new mt(E)}}),U_=yu(function(a,p){return je(p,function(E){E=Xo(E),ti(a,E,S1(a[E],a))}),a});function Kp(a){var p=a==null?0:a.length,E=cn();return a=p?lt(a,function(I){if(typeof I[1]!="function")throw new Yr(g);return[E(I[0]),I[1]]}):[],Wn(function(I){for(var B=-1;++BNt)return[];var E=ne,I=kn(a,ne);p=cn(p),a-=ne;for(var B=ci(I,p);++E0||p<0)?new nn(E):(a<0?E=E.takeRight(-a):a&&(E=E.drop(a)),p!==i&&(p=jn(p),E=p<0?E.dropRight(-p):E.take(p-a)),E)},nn.prototype.takeRightWhile=function(a){return this.reverse().takeWhile(a).reverse()},nn.prototype.toArray=function(){return this.take(ne)},S(nn.prototype,function(a,p){var E=/^(?:filter|find|map|reject)|While$/.test(p),I=/^(?:head|last)$/.test(p),B=z[I?"take"+(p=="last"?"Right":""):p],G=I||/^find/.test(p);!B||(z.prototype[p]=function(){var te=this.__wrapped__,se=I?[1]:arguments,Ee=te instanceof nn,$e=se[0],Ke=Ee||On(te),nt=function(Yn){var er=B.apply(z,Rt([Yn],se));return I&&Ct?er[0]:er};Ke&&E&&typeof $e=="function"&&$e.length!=1&&(Ee=Ke=!1);var Ct=this.__chain__,Gt=!!this.__actions__.length,an=G&&!Ct,qn=Ee&&!Gt;if(!G&&Ke){te=qn?te:new nn(this);var dn=a.apply(te,se);return dn.__actions__.push({func:Kc,args:[nt],thisArg:i}),new Qn(dn,Ct)}return an&&qn?a.apply(this,se):(dn=this.thru(nt),an?I?dn.value()[0]:dn.value():dn)})}),je(["pop","push","shift","sort","splice","unshift"],function(a){var p=$r[a],E=/^(?:push|sort|unshift)$/.test(a)?"tap":"thru",I=/^(?:pop|shift)$/.test(a);z.prototype[a]=function(){var B=arguments;if(I&&!this.__chain__){var G=this.value();return p.apply(On(G)?G:[],B)}return this[E](function(te){return p.apply(On(te)?te:[],B)})}}),S(nn.prototype,function(a,p){var E=z[p];if(E){var I=E.name+"";or.call(bt,I)||(bt[I]=[]),bt[I].push({name:p,func:E})}}),bt[zc(i,re).name]=[{name:"wrapper",func:i}],nn.prototype.clone=s0,nn.prototype.reverse=t0,nn.prototype.value=g0,z.prototype.at=Wv,z.prototype.chain=Hv,z.prototype.commit=bv,z.prototype.next=Gv,z.prototype.plant=Yv,z.prototype.reverse=Ml,z.prototype.toJSON=z.prototype.valueOf=z.prototype.value=Fl,z.prototype.first=z.prototype.head,u0&&(z.prototype[u0]=Vv),z},K0=$0();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Lr._=K0,define(function(){return K0})):R?((R.exports=K0)._=K0,F._=K0):Lr._=K0}).call(ga)});var ay=Me((XH,cy)=>{"use strict";var fr=cy.exports;cy.exports.default=fr;var Pr="[",t2="]",ya="\x07",vh=";",OD=process.env.TERM_PROGRAM==="Apple_Terminal";fr.cursorTo=(i,u)=>{if(typeof i!="number")throw new TypeError("The `x` argument is required");return typeof u!="number"?Pr+(i+1)+"G":Pr+(u+1)+";"+(i+1)+"H"};fr.cursorMove=(i,u)=>{if(typeof i!="number")throw new TypeError("The `x` argument is required");let f="";return i<0?f+=Pr+-i+"D":i>0&&(f+=Pr+i+"C"),u<0?f+=Pr+-u+"A":u>0&&(f+=Pr+u+"B"),f};fr.cursorUp=(i=1)=>Pr+i+"A";fr.cursorDown=(i=1)=>Pr+i+"B";fr.cursorForward=(i=1)=>Pr+i+"C";fr.cursorBackward=(i=1)=>Pr+i+"D";fr.cursorLeft=Pr+"G";fr.cursorSavePosition=OD?"7":Pr+"s";fr.cursorRestorePosition=OD?"8":Pr+"u";fr.cursorGetPosition=Pr+"6n";fr.cursorNextLine=Pr+"E";fr.cursorPrevLine=Pr+"F";fr.cursorHide=Pr+"?25l";fr.cursorShow=Pr+"?25h";fr.eraseLines=i=>{let u="";for(let f=0;f[t2,"8",vh,vh,u,ya,i,t2,"8",vh,vh,ya].join("");fr.image=(i,u={})=>{let f=`${t2}1337;File=inline=1`;return u.width&&(f+=`;width=${u.width}`),u.height&&(f+=`;height=${u.height}`),u.preserveAspectRatio===!1&&(f+=";preserveAspectRatio=0"),f+":"+i.toString("base64")+ya};fr.iTerm={setCwd:(i=process.cwd())=>`${t2}50;CurrentDir=${i}${ya}`,annotation:(i,u={})=>{let f=`${t2}1337;`,c=typeof u.x!="undefined",g=typeof u.y!="undefined";if((c||g)&&!(c&&g&&typeof u.length!="undefined"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return i=i.replace(/\|/g,""),f+=u.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",u.length>0?f+=(c?[i,u.length,u.x,u.y]:[u.length,i]).join("|"):f+=i,f+ya}}});var PD=Me((JH,dy)=>{"use strict";var ID=(i,u)=>{for(let f of Reflect.ownKeys(u))Object.defineProperty(i,f,Object.getOwnPropertyDescriptor(u,f));return i};dy.exports=ID;dy.exports.default=ID});var FD=Me((QH,gh)=>{"use strict";var oN=PD(),_h=new WeakMap,MD=(i,u={})=>{if(typeof i!="function")throw new TypeError("Expected a function");let f,c=!1,g=0,t=i.displayName||i.name||"",C=function(...A){if(_h.set(C,++g),c){if(u.throw===!0)throw new Error(`Function \`${t}\` can only be called once`);return f}return c=!0,f=i.apply(this,A),i=null,f};return oN(C,i),_h.set(C,g),C};gh.exports=MD;gh.exports.default=MD;gh.exports.callCount=i=>{if(!_h.has(i))throw new Error(`The given function \`${i.name}\` is not wrapped by the \`onetime\` package`);return _h.get(i)}});var LD=Me((ZH,yh)=>{yh.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&yh.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&yh.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var vy=Me((eb,n2)=>{var uN=require("assert"),r2=LD(),sN=/^win/i.test(process.platform),wh=require("events");typeof wh!="function"&&(wh=wh.EventEmitter);var Bi;process.__signal_exit_emitter__?Bi=process.__signal_exit_emitter__:(Bi=process.__signal_exit_emitter__=new wh,Bi.count=0,Bi.emitted={});Bi.infinite||(Bi.setMaxListeners(Infinity),Bi.infinite=!0);n2.exports=function(i,u){uN.equal(typeof i,"function","a callback must be provided for exit handler"),i2===!1&&RD();var f="exit";u&&u.alwaysLast&&(f="afterexit");var c=function(){Bi.removeListener(f,i),Bi.listeners("exit").length===0&&Bi.listeners("afterexit").length===0&&py()};return Bi.on(f,i),c};n2.exports.unload=py;function py(){!i2||(i2=!1,r2.forEach(function(i){try{process.removeListener(i,hy[i])}catch(u){}}),process.emit=my,process.reallyExit=ND,Bi.count-=1)}function wa(i,u,f){Bi.emitted[i]||(Bi.emitted[i]=!0,Bi.emit(i,u,f))}var hy={};r2.forEach(function(i){hy[i]=function(){var f=process.listeners(i);f.length===Bi.count&&(py(),wa("exit",null,i),wa("afterexit",null,i),sN&&i==="SIGHUP"&&(i="SIGINT"),process.kill(process.pid,i))}});n2.exports.signals=function(){return r2};n2.exports.load=RD;var i2=!1;function RD(){i2||(i2=!0,Bi.count+=1,r2=r2.filter(function(i){try{return process.on(i,hy[i]),!0}catch(u){return!1}}),process.emit=fN,process.reallyExit=lN)}var ND=process.reallyExit;function lN(i){process.exitCode=i||0,wa("exit",process.exitCode,null),wa("afterexit",process.exitCode,null),ND.call(process,process.exitCode)}var my=process.emit;function fN(i,u){if(i==="exit"){u!==void 0&&(process.exitCode=u);var f=my.apply(this,arguments);return wa("exit",process.exitCode,null),wa("afterexit",process.exitCode,null),f}else return my.apply(this,arguments)}});var jD=Me((tb,BD)=>{"use strict";var cN=FD(),aN=vy();BD.exports=cN(()=>{aN(()=>{process.stderr.write("[?25h")},{alwaysLast:!0})})});var gy=Me(Da=>{"use strict";var dN=jD(),Dh=!1;Da.show=(i=process.stderr)=>{!i.isTTY||(Dh=!1,i.write("[?25h"))};Da.hide=(i=process.stderr)=>{!i.isTTY||(dN(),Dh=!0,i.write("[?25l"))};Da.toggle=(i,u)=>{i!==void 0&&(Dh=i),Dh?Da.show(u):Da.hide(u)}});var WD=Me(o2=>{"use strict";var UD=o2&&o2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(o2,"__esModule",{value:!0});var qD=UD(ay()),zD=UD(gy()),pN=(i,{showCursor:u=!1}={})=>{let f=0,c="",g=!1,t=C=>{!u&&!g&&(zD.default.hide(),g=!0);let A=C+` +`;A!==c&&(c=A,i.write(qD.default.eraseLines(f)+A),f=A.split(` +`).length)};return t.clear=()=>{i.write(qD.default.eraseLines(f)),c="",f=0},t.done=()=>{c="",f=0,u||(zD.default.show(),g=!1)},t};o2.default={create:pN}});var bD=Me((ib,HD)=>{HD.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var YD=Me(ru=>{"use strict";var GD=bD(),nl=process.env;Object.defineProperty(ru,"_vendors",{value:GD.map(function(i){return i.constant})});ru.name=null;ru.isPR=null;GD.forEach(function(i){var u=Array.isArray(i.env)?i.env:[i.env],f=u.every(function(c){return VD(c)});if(ru[i.constant]=f,f)switch(ru.name=i.name,typeof i.pr){case"string":ru.isPR=!!nl[i.pr];break;case"object":"env"in i.pr?ru.isPR=i.pr.env in nl&&nl[i.pr.env]!==i.pr.ne:"any"in i.pr?ru.isPR=i.pr.any.some(function(c){return!!nl[c]}):ru.isPR=VD(i.pr);break;default:ru.isPR=null}});ru.isCI=!!(nl.CI||nl.CONTINUOUS_INTEGRATION||nl.BUILD_NUMBER||nl.RUN_ID||ru.name);function VD(i){return typeof i=="string"?!!nl[i]:Object.keys(i).every(function(u){return nl[u]===i[u]})}});var KD=Me((ub,$D)=>{"use strict";$D.exports=YD().isCI});var JD=Me((sb,XD)=>{"use strict";var hN=i=>{let u=new Set;do for(let f of Reflect.ownKeys(i))u.add([i,f]);while((i=Reflect.getPrototypeOf(i))&&i!==Object.prototype);return u};XD.exports=(i,{include:u,exclude:f}={})=>{let c=g=>{let t=C=>typeof C=="string"?g===C:C.test(g);return u?u.some(t):f?!f.some(t):!0};for(let[g,t]of hN(i.constructor.prototype)){if(t==="constructor"||!c(t))continue;let C=Reflect.getOwnPropertyDescriptor(g,t);C&&typeof C.value=="function"&&(i[t]=i[t].bind(i))}return i}});var iE=Me(Sr=>{"use strict";Object.defineProperty(Sr,"__esModule",{value:!0});var Ea,u2,Eh,Sh,_y;typeof window=="undefined"||typeof MessageChannel!="function"?(Sa=null,yy=null,wy=function(){if(Sa!==null)try{var i=Sr.unstable_now();Sa(!0,i),Sa=null}catch(u){throw setTimeout(wy,0),u}},QD=Date.now(),Sr.unstable_now=function(){return Date.now()-QD},Ea=function(i){Sa!==null?setTimeout(Ea,0,i):(Sa=i,setTimeout(wy,0))},u2=function(i,u){yy=setTimeout(i,u)},Eh=function(){clearTimeout(yy)},Sh=function(){return!1},_y=Sr.unstable_forceFrameRate=function(){}):(Ch=window.performance,Dy=window.Date,ZD=window.setTimeout,eE=window.clearTimeout,typeof console!="undefined"&&(tE=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),typeof tE!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")),typeof Ch=="object"&&typeof Ch.now=="function"?Sr.unstable_now=function(){return Ch.now()}:(nE=Dy.now(),Sr.unstable_now=function(){return Dy.now()-nE}),s2=!1,l2=null,Th=-1,Ey=5,Sy=0,Sh=function(){return Sr.unstable_now()>=Sy},_y=function(){},Sr.unstable_forceFrameRate=function(i){0>i||125kh(C,f))x!==void 0&&0>kh(x,C)?(i[c]=x,i[A]=f,c=A):(i[c]=C,i[t]=f,c=t);else if(x!==void 0&&0>kh(x,f))i[c]=x,i[A]=f,c=A;else break e}}return u}return null}function kh(i,u){var f=i.sortIndex-u.sortIndex;return f!==0?f:i.id-u.id}var ds=[],Nf=[],mN=1,_o=null,to=3,Oh=!1,pc=!1,f2=!1;function Ih(i){for(var u=Iu(Nf);u!==null;){if(u.callback===null)Ah(Nf);else if(u.startTime<=i)Ah(Nf),u.sortIndex=u.expirationTime,Ty(ds,u);else break;u=Iu(Nf)}}function xy(i){if(f2=!1,Ih(i),!pc)if(Iu(ds)!==null)pc=!0,Ea(ky);else{var u=Iu(Nf);u!==null&&u2(xy,u.startTime-i)}}function ky(i,u){pc=!1,f2&&(f2=!1,Eh()),Oh=!0;var f=to;try{for(Ih(u),_o=Iu(ds);_o!==null&&(!(_o.expirationTime>u)||i&&!Sh());){var c=_o.callback;if(c!==null){_o.callback=null,to=_o.priorityLevel;var g=c(_o.expirationTime<=u);u=Sr.unstable_now(),typeof g=="function"?_o.callback=g:_o===Iu(ds)&&Ah(ds),Ih(u)}else Ah(ds);_o=Iu(ds)}if(_o!==null)var t=!0;else{var C=Iu(Nf);C!==null&&u2(xy,C.startTime-u),t=!1}return t}finally{_o=null,to=f,Oh=!1}}function rE(i){switch(i){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var vN=_y;Sr.unstable_ImmediatePriority=1;Sr.unstable_UserBlockingPriority=2;Sr.unstable_NormalPriority=3;Sr.unstable_IdlePriority=5;Sr.unstable_LowPriority=4;Sr.unstable_runWithPriority=function(i,u){switch(i){case 1:case 2:case 3:case 4:case 5:break;default:i=3}var f=to;to=i;try{return u()}finally{to=f}};Sr.unstable_next=function(i){switch(to){case 1:case 2:case 3:var u=3;break;default:u=to}var f=to;to=u;try{return i()}finally{to=f}};Sr.unstable_scheduleCallback=function(i,u,f){var c=Sr.unstable_now();if(typeof f=="object"&&f!==null){var g=f.delay;g=typeof g=="number"&&0c?(i.sortIndex=g,Ty(Nf,i),Iu(ds)===null&&i===Iu(Nf)&&(f2?Eh():f2=!0,u2(xy,g-c))):(i.sortIndex=f,Ty(ds,i),pc||Oh||(pc=!0,Ea(ky))),i};Sr.unstable_cancelCallback=function(i){i.callback=null};Sr.unstable_wrapCallback=function(i){var u=to;return function(){var f=to;to=u;try{return i.apply(this,arguments)}finally{to=f}}};Sr.unstable_getCurrentPriorityLevel=function(){return to};Sr.unstable_shouldYield=function(){var i=Sr.unstable_now();Ih(i);var u=Iu(ds);return u!==_o&&_o!==null&&u!==null&&u.callback!==null&&u.startTime<=i&&u.expirationTime<_o.expirationTime||Sh()};Sr.unstable_requestPaint=vN;Sr.unstable_continueExecution=function(){pc||Oh||(pc=!0,Ea(ky))};Sr.unstable_pauseExecution=function(){};Sr.unstable_getFirstCallbackNode=function(){return Iu(ds)};Sr.unstable_Profiling=null});var Ay=Me((fb,oE)=>{"use strict";oE.exports=iE()});var uE=Me((cb,c2)=>{c2.exports=function i(u){"use strict";var f=ey(),c=lr(),g=Ay();function t(v){for(var m="https://reactjs.org/docs/error-decoder.html?invariant="+v,S=1;Sqo||(v.current=qi[qo],qi[qo]=null,qo--)}function Fr(v,m){qo++,qi[qo]=v.current,v.current=m}var si={},H0={current:si},b0={current:!1},Bt=si;function Lu(v,m){var S=v.type.contextTypes;if(!S)return si;var O=v.stateNode;if(O&&O.__reactInternalMemoizedUnmaskedChildContext===m)return O.__reactInternalMemoizedMaskedChildContext;var M={},b;for(b in S)M[b]=m[b];return O&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=m,v.__reactInternalMemoizedMaskedChildContext=M),M}function c0(v){return v=v.childContextTypes,v!=null}function Ru(v){kr(b0,v),kr(H0,v)}function ks(v){kr(b0,v),kr(H0,v)}function As(v,m,S){if(H0.current!==si)throw Error(t(168));Fr(H0,m,v),Fr(b0,S,v)}function uu(v,m,S){var O=v.stateNode;if(v=m.childContextTypes,typeof O.getChildContext!="function")return S;O=O.getChildContext();for(var M in O)if(!(M in v))throw Error(t(108,Oe(m)||"Unknown",M));return f({},S,{},O)}function wo(v){var m=v.stateNode;return m=m&&m.__reactInternalMemoizedMergedChildContext||si,Bt=H0.current,Fr(H0,m,v),Fr(b0,b0.current,v),!0}function zo(v,m,S){var O=v.stateNode;if(!O)throw Error(t(169));S?(m=uu(v,m,Bt),O.__reactInternalMemoizedMergedChildContext=m,kr(b0,v),kr(H0,v),Fr(H0,m,v)):kr(b0,v),Fr(b0,S,v)}var Os=g.unstable_runWithPriority,Is=g.unstable_scheduleCallback,uf=g.unstable_cancelCallback,_n=g.unstable_shouldYield,Nu=g.unstable_requestPaint,Wo=g.unstable_now,su=g.unstable_getCurrentPriorityLevel,Ps=g.unstable_ImmediatePriority,pl=g.unstable_UserBlockingPriority,Vf=g.unstable_NormalPriority,hl=g.unstable_LowPriority,Bu=g.unstable_IdlePriority,ju={},sf=Nu!==void 0?Nu:function(){},ro=null,Ms=null,ml=!1,Uu=Wo(),G0=1e4>Uu?Wo:function(){return Wo()-Uu};function Fs(){switch(su()){case Ps:return 99;case pl:return 98;case Vf:return 97;case hl:return 96;case Bu:return 95;default:throw Error(t(332))}}function tt(v){switch(v){case 99:return Ps;case 98:return pl;case 97:return Vf;case 96:return hl;case 95:return Bu;default:throw Error(t(332))}}function zi(v,m){return v=tt(v),Os(v,m)}function lu(v,m,S){return v=tt(v),Is(v,m,S)}function Ho(v){return ro===null?(ro=[v],Ms=Is(Ps,vl)):ro.push(v),ju}function O0(){if(Ms!==null){var v=Ms;Ms=null,uf(v)}vl()}function vl(){if(!ml&&ro!==null){ml=!0;var v=0;try{var m=ro;zi(99,function(){for(;v=m&&(ai=!0),v.firstContext=null)}function D0(v,m){if(zu!==v&&m!==!1&&m!==0)if((typeof m!="number"||m===1073741823)&&(zu=v,m=1073741823),m={context:v,observedBits:m,next:null},Wi===null){if(qu===null)throw Error(t(308));Wi=m,qu.dependencies={expirationTime:0,firstContext:m,responders:null}}else Wi=Wi.next=m;return Jt?v._currentValue:v._currentValue2}var Do=!1;function i0(v){return{baseState:v,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Rs(v){return{baseState:v.baseState,firstUpdate:v.firstUpdate,lastUpdate:v.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function a0(v,m){return{expirationTime:v,suspenseConfig:m,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Hu(v,m){v.lastUpdate===null?v.firstUpdate=v.lastUpdate=m:(v.lastUpdate.next=m,v.lastUpdate=m)}function V0(v,m){var S=v.alternate;if(S===null){var O=v.updateQueue,M=null;O===null&&(O=v.updateQueue=i0(v.memoizedState))}else O=v.updateQueue,M=S.updateQueue,O===null?M===null?(O=v.updateQueue=i0(v.memoizedState),M=S.updateQueue=i0(S.memoizedState)):O=v.updateQueue=Rs(M):M===null&&(M=S.updateQueue=Rs(O));M===null||O===M?Hu(O,m):O.lastUpdate===null||M.lastUpdate===null?(Hu(O,m),Hu(M,m)):(Hu(O,m),M.lastUpdate=m)}function bu(v,m){var S=v.updateQueue;S=S===null?v.updateQueue=i0(v.memoizedState):Ns(v,S),S.lastCapturedUpdate===null?S.firstCapturedUpdate=S.lastCapturedUpdate=m:(S.lastCapturedUpdate.next=m,S.lastCapturedUpdate=m)}function Ns(v,m){var S=v.alternate;return S!==null&&m===S.updateQueue&&(m=v.updateQueue=Rs(m)),m}function bo(v,m,S,O,M,b){switch(S.tag){case 1:return v=S.payload,typeof v=="function"?v.call(b,O,M):v;case 3:v.effectTag=v.effectTag&-4097|64;case 0:if(v=S.payload,M=typeof v=="function"?v.call(b,O,M):v,M==null)break;return f({},O,M);case 2:Do=!0}return O}function P0(v,m,S,O,M){Do=!1,m=Ns(v,m);for(var b=m.baseState,ee=null,Ye=0,Ze=m.firstUpdate,ut=b;Ze!==null;){var In=Ze.expirationTime;Inpr?(Hr=mn,mn=null):Hr=mn.sibling;var Vn=jr(Re,mn,ze[pr],Et);if(Vn===null){mn===null&&(mn=Hr);break}v&&mn&&Vn.alternate===null&&m(Re,mn),Ce=b(Vn,Ce,pr),sr===null?on=Vn:sr.sibling=Vn,sr=Vn,mn=Hr}if(pr===ze.length)return S(Re,mn),on;if(mn===null){for(;prpr?(Hr=mn,mn=null):Hr=mn.sibling;var ni=jr(Re,mn,Vn.value,Et);if(ni===null){mn===null&&(mn=Hr);break}v&&mn&&ni.alternate===null&&m(Re,mn),Ce=b(ni,Ce,pr),sr===null?on=ni:sr.sibling=ni,sr=ni,mn=Hr}if(Vn.done)return S(Re,mn),on;if(mn===null){for(;!Vn.done;pr++,Vn=ze.next())Vn=A0(Re,Vn.value,Et),Vn!==null&&(Ce=b(Vn,Ce,pr),sr===null?on=Vn:sr.sibling=Vn,sr=Vn);return on}for(mn=O(Re,mn);!Vn.done;pr++,Vn=ze.next())Vn=gi(mn,Re,pr,Vn.value,Et),Vn!==null&&(v&&Vn.alternate!==null&&mn.delete(Vn.key===null?pr:Vn.key),Ce=b(Vn,Ce,pr),sr===null?on=Vn:sr.sibling=Vn,sr=Vn);return v&&mn.forEach(function(Zf){return m(Re,Zf)}),on}return function(Re,Ce,ze,Et){var on=typeof ze=="object"&&ze!==null&&ze.type===L&&ze.key===null;on&&(ze=ze.props.children);var sr=typeof ze=="object"&&ze!==null;if(sr)switch(ze.$$typeof){case x:e:{for(sr=ze.key,on=Ce;on!==null;){if(on.key===sr)if(on.tag===7?ze.type===L:on.elementType===ze.type){S(Re,on.sibling),Ce=M(on,ze.type===L?ze.props.children:ze.props,Et),Ce.ref=au(Re,on,ze),Ce.return=Re,Re=Ce;break e}else{S(Re,on);break}else m(Re,on);on=on.sibling}ze.type===L?(Ce=mi(ze.props.children,Re.mode,Et,ze.key),Ce.return=Re,Re=Ce):(Et=Hs(ze.type,ze.key,ze.props,null,Re.mode,Et),Et.ref=au(Re,Ce,ze),Et.return=Re,Re=Et)}return ee(Re);case D:e:{for(on=ze.key;Ce!==null;){if(Ce.key===on)if(Ce.tag===4&&Ce.stateNode.containerInfo===ze.containerInfo&&Ce.stateNode.implementation===ze.implementation){S(Re,Ce.sibling),Ce=M(Ce,ze.children||[],Et),Ce.return=Re,Re=Ce;break e}else{S(Re,Ce);break}else m(Re,Ce);Ce=Ce.sibling}Ce=Xf(ze,Re.mode,Et),Ce.return=Re,Re=Ce}return ee(Re)}if(typeof ze=="string"||typeof ze=="number")return ze=""+ze,Ce!==null&&Ce.tag===6?(S(Re,Ce.sibling),Ce=M(Ce,ze,Et),Ce.return=Re,Re=Ce):(S(Re,Ce),Ce=vi(ze,Re.mode,Et),Ce.return=Re,Re=Ce),ee(Re);if(M0(ze))return po(Re,Ce,ze,Et);if(J(ze))return _i(Re,Ce,ze,Et);if(sr&&Lr(Re,ze),typeof ze=="undefined"&&!on)switch(Re.tag){case 1:case 0:throw Re=Re.type,Error(t(152,Re.displayName||Re.name||"Component"))}return S(Re,Ce)}}var R=F(!0),U=F(!1),H={},fe={current:H},ue={current:H},de={current:H};function W(v){if(v===H)throw Error(t(174));return v}function ve(v,m){Fr(de,m,v),Fr(ue,v,v),Fr(fe,H,v),m=Ot(m),kr(fe,v),Fr(fe,m,v)}function Fe(v){kr(fe,v),kr(ue,v),kr(de,v)}function Ge(v){var m=W(de.current),S=W(fe.current);m=Nt(S,v.type,m),S!==m&&(Fr(ue,v,v),Fr(fe,m,v))}function K(v){ue.current===v&&(kr(fe,v),kr(ue,v))}var xe={current:0};function je(v){for(var m=v;m!==null;){if(m.tag===13){var S=m.memoizedState;if(S!==null&&(S=S.dehydrated,S===null||ll(S)||fl(S)))return m}else if(m.tag===19&&m.memoizedProps.revealOrder!==void 0){if((m.effectTag&64)!=0)return m}else if(m.child!==null){m.child.return=m,m=m.child;continue}if(m===v)break;for(;m.sibling===null;){if(m.return===null||m.return===v)return null;m=m.return}m.sibling.return=m.return,m=m.sibling}return null}function Xe(v,m){return{responder:v,props:m}}var rt=C.ReactCurrentDispatcher,st=C.ReactCurrentBatchConfig,xt=0,wt=null,lt=null,Rt=null,yn=null,sn=null,ar=null,rn=0,Hn=null,d0=0,Cr=!1,He=null,Qe=0;function Ne(){throw Error(t(321))}function ft(v,m){if(m===null)return!1;for(var S=0;Srn&&(rn=In,pf(rn))):(Yf(In,Ze.suspenseConfig),b=Ze.eagerReducer===v?Ze.eagerState:v(b,Ze.action)),ee=Ze,Ze=Ze.next}while(Ze!==null&&Ze!==O);ut||(Ye=ee,M=b),Sn(b,m.memoizedState)||(ai=!0),m.memoizedState=b,m.baseUpdate=Ye,m.baseState=M,S.lastRenderedState=b}return[m.memoizedState,S.dispatch]}function ci(v){var m=Cn();return typeof v=="function"&&(v=v()),m.memoizedState=m.baseState=v,v=m.queue={last:null,dispatch:null,lastRenderedReducer:p0,lastRenderedState:v},v=v.dispatch=Us.bind(null,wt,v),[m.memoizedState,v]}function xi(v){return h0(p0,v)}function E0(v,m,S,O){return v={tag:v,create:m,destroy:S,deps:O,next:null},Hn===null?(Hn={lastEffect:null},Hn.lastEffect=v.next=v):(m=Hn.lastEffect,m===null?Hn.lastEffect=v.next=v:(S=m.next,m.next=v,v.next=S,Hn.lastEffect=v)),v}function qr(v,m,S,O){var M=Cn();d0|=v,M.memoizedState=E0(m,S,void 0,O===void 0?null:O)}function Eo(v,m,S,O){var M=bn();O=O===void 0?null:O;var b=void 0;if(lt!==null){var ee=lt.memoizedState;if(b=ee.destroy,O!==null&&ft(O,ee.deps)){E0(0,S,b,O);return}}d0|=v,M.memoizedState=E0(m,S,b,O)}function So(v,m){return qr(516,192,v,m)}function wl(v,m){return Eo(516,192,v,m)}function js(v,m){if(typeof m=="function")return v=v(),m(v),function(){m(null)};if(m!=null)return v=v(),m.current=v,function(){m.current=null}}function Dl(){}function du(v,m){return Cn().memoizedState=[v,m===void 0?null:m],v}function Yu(v,m){var S=bn();m=m===void 0?null:m;var O=S.memoizedState;return O!==null&&m!==null&&ft(m,O[1])?O[0]:(S.memoizedState=[v,m],v)}function Us(v,m,S){if(!(25>Qe))throw Error(t(301));var O=v.alternate;if(v===wt||O!==null&&O===wt)if(Cr=!0,v={expirationTime:xt,suspenseConfig:null,action:S,eagerReducer:null,eagerState:null,next:null},He===null&&(He=new Map),S=He.get(m),S===void 0)He.set(m,v);else{for(m=S;m.next!==null;)m=m.next;m.next=v}else{var M=g0(),b=nr.suspense;M=Kr(M,v,b),b={expirationTime:M,suspenseConfig:b,action:S,eagerReducer:null,eagerState:null,next:null};var ee=m.last;if(ee===null)b.next=b;else{var Ye=ee.next;Ye!==null&&(b.next=Ye),ee.next=b}if(m.last=b,v.expirationTime===0&&(O===null||O.expirationTime===0)&&(O=m.lastRenderedReducer,O!==null))try{var Ze=m.lastRenderedState,ut=O(Ze,S);if(b.eagerReducer=O,b.eagerState=ut,Sn(ut,Ze))return}catch(In){}finally{}_0(v,M)}}var oo={readContext:D0,useCallback:Ne,useContext:Ne,useEffect:Ne,useImperativeHandle:Ne,useLayoutEffect:Ne,useMemo:Ne,useReducer:Ne,useRef:Ne,useState:Ne,useDebugValue:Ne,useResponder:Ne,useDeferredValue:Ne,useTransition:Ne},Hi={readContext:D0,useCallback:du,useContext:D0,useEffect:So,useImperativeHandle:function(v,m,S){return S=S!=null?S.concat([v]):null,qr(4,36,js.bind(null,m,v),S)},useLayoutEffect:function(v,m){return qr(4,36,v,m)},useMemo:function(v,m){var S=Cn();return m=m===void 0?null:m,v=v(),S.memoizedState=[v,m],v},useReducer:function(v,m,S){var O=Cn();return m=S!==void 0?S(m):m,O.memoizedState=O.baseState=m,v=O.queue={last:null,dispatch:null,lastRenderedReducer:v,lastRenderedState:m},v=v.dispatch=Us.bind(null,wt,v),[O.memoizedState,v]},useRef:function(v){var m=Cn();return v={current:v},m.memoizedState=v},useState:ci,useDebugValue:Dl,useResponder:Xe,useDeferredValue:function(v,m){var S=ci(v),O=S[0],M=S[1];return So(function(){g.unstable_next(function(){var b=st.suspense;st.suspense=m===void 0?null:m;try{M(v)}finally{st.suspense=b}})},[v,m]),O},useTransition:function(v){var m=ci(!1),S=m[0],O=m[1];return[du(function(M){O(!0),g.unstable_next(function(){var b=st.suspense;st.suspense=v===void 0?null:v;try{O(!1),M()}finally{st.suspense=b}})},[v,S]),S]}},qs={readContext:D0,useCallback:Yu,useContext:D0,useEffect:wl,useImperativeHandle:function(v,m,S){return S=S!=null?S.concat([v]):null,Eo(4,36,js.bind(null,m,v),S)},useLayoutEffect:function(v,m){return Eo(4,36,v,m)},useMemo:function(v,m){var S=bn();m=m===void 0?null:m;var O=S.memoizedState;return O!==null&&m!==null&&ft(m,O[1])?O[0]:(v=v(),S.memoizedState=[v,m],v)},useReducer:h0,useRef:function(){return bn().memoizedState},useState:xi,useDebugValue:Dl,useResponder:Xe,useDeferredValue:function(v,m){var S=xi(v),O=S[0],M=S[1];return wl(function(){g.unstable_next(function(){var b=st.suspense;st.suspense=m===void 0?null:m;try{M(v)}finally{st.suspense=b}})},[v,m]),O},useTransition:function(v){var m=xi(!1),S=m[0],O=m[1];return[Yu(function(M){O(!0),g.unstable_next(function(){var b=st.suspense;st.suspense=v===void 0?null:v;try{O(!1),M()}finally{st.suspense=b}})},[v,S]),S]}},F0=null,Gr=null,ir=!1;function L0(v,m){var S=xo(5,null,null,0);S.elementType="DELETED",S.type="DELETED",S.stateNode=m,S.return=v,S.effectTag=8,v.lastEffect!==null?(v.lastEffect.nextEffect=S,v.lastEffect=S):v.firstEffect=v.lastEffect=S}function Y0(v,m){switch(v.tag){case 5:return m=Ti(m,v.type,v.pendingProps),m!==null?(v.stateNode=m,!0):!1;case 6:return m=Fu(m,v.pendingProps),m!==null?(v.stateNode=m,!0):!1;case 13:return!1;default:return!1}}function Co(v){if(ir){var m=Gr;if(m){var S=m;if(!Y0(v,m)){if(m=cl(S),!m||!Y0(v,m)){v.effectTag=v.effectTag&-1025|2,ir=!1,F0=v;return}L0(F0,S)}F0=v,Gr=al(m)}else v.effectTag=v.effectTag&-1025|2,ir=!1,F0=v}}function $u(v){for(v=v.return;v!==null&&v.tag!==5&&v.tag!==3&&v.tag!==13;)v=v.return;F0=v}function Vo(v){if(!w||v!==F0)return!1;if(!ir)return $u(v),ir=!0,!1;var m=v.type;if(v.tag!==5||m!=="head"&&m!=="body"&&!at(m,v.memoizedProps))for(m=Gr;m;)L0(v,m),m=cl(m);if($u(v),v.tag===13){if(!w)throw Error(t(316));if(v=v.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(t(317));Gr=Ac(v)}else Gr=F0?cl(v.stateNode):null;return!0}function Rr(){w&&(Gr=F0=null,ir=!1)}var Jn=C.ReactCurrentOwner,ai=!1;function o0(v,m,S,O){m.child=v===null?U(m,null,S,O):R(m,v.child,S,O)}function Vr(v,m,S,O,M){S=S.render;var b=m.ref;return io(m,M),O=St(v,m,S,O,b,M),v!==null&&!ai?(m.updateQueue=v.updateQueue,m.effectTag&=-517,v.expirationTime<=M&&(v.expirationTime=0),X0(v,m,M)):(m.effectTag|=1,o0(v,m,O,M),m.child)}function ff(v,m,S,O,M,b){if(v===null){var ee=S.type;return typeof ee=="function"&&!mf(ee)&&ee.defaultProps===void 0&&S.compare===null&&S.defaultProps===void 0?(m.tag=15,m.type=ee,cf(v,m,ee,O,M,b)):(v=Hs(S.type,null,O,null,m.mode,b),v.ref=m.ref,v.return=m,m.child=v)}return ee=v.child,Mm)&&Qn.set(v,m)))}}function Gi(v,m){v.expirationTimev?m:v)}function x0(v){if(v.lastExpiredTime!==0)v.callbackExpirationTime=1073741823,v.callbackPriority=99,v.callbackNode=Ho(Z0.bind(null,v));else{var m=fo(v),S=v.callbackNode;if(m===0)S!==null&&(v.callbackNode=null,v.callbackExpirationTime=0,v.callbackPriority=90);else{var O=g0();if(m===1073741823?O=99:m===1||m===2?O=95:(O=10*(1073741821-m)-10*(1073741821-O),O=0>=O?99:250>=O?98:5250>=O?97:95),S!==null){var M=v.callbackPriority;if(v.callbackExpirationTime===m&&M>=O)return;S!==ju&&uf(S)}v.callbackExpirationTime=m,v.callbackPriority=O,m=m===1073741823?Ho(Z0.bind(null,v)):lu(O,Xu.bind(null,v),{timeout:10*(1073741821-m)-G0()}),v.callbackNode=m}}}function Xu(v,m){if(t0=0,m)return m=g0(),kl(v,m),x0(v),null;var S=fo(v);if(S!==0){if(m=v.callbackNode,(Kt&(Br|zr))!==Fn)throw Error(t(327));if(Ws(),v===X&&S===ye||mu(v,S),Y!==null){var O=Kt;Kt|=Br;var M=ei(v);do try{Ua();break}catch(Ye){Ju(v,Ye)}while(1);if(Wu(),Kt=O,B0.current=M,he===wr)throw m=We,mu(v,S),ao(v,S),x0(v),m;if(Y===null)switch(M=v.finishedWork=v.current.alternate,v.finishedExpirationTime=S,O=he,X=null,O){case lo:case wr:throw Error(t(345));case kn:kl(v,2=S){v.lastPingedTime=S,mu(v,S);break}}if(b=fo(v),b!==0&&b!==S)break;if(O!==0&&O!==S){v.lastPingedTime=O;break}v.timeoutHandle=jt(gu.bind(null,v),M);break}gu(v);break;case hi:if(ao(v,S),O=v.lastSuspendedTime,S===O&&(v.nextKnownPendingLevel=$f(M)),qt&&(M=v.lastPingedTime,M===0||M>=S)){v.lastPingedTime=S,mu(v,S);break}if(M=fo(v),M!==0&&M!==S)break;if(O!==0&&O!==S){v.lastPingedTime=O;break}if(Dt!==1073741823?O=10*(1073741821-Dt)-G0():et===1073741823?O=0:(O=10*(1073741821-et)-5e3,M=G0(),S=10*(1073741821-S)-M,O=M-O,0>O&&(O=0),O=(120>O?120:480>O?480:1080>O?1080:1920>O?1920:3e3>O?3e3:4320>O?4320:1960*Cl(O/1960))-O,S=O?O=0:(M=ee.busyDelayMs|0,b=G0()-(10*(1073741821-b)-(ee.timeoutMs|0||5e3)),O=b<=M?0:M+O-b),10 component higher in the tree to provide a loading indicator or placeholder to display.`+dl(M))}he!==Ai&&(he=kn),b=zs(b,M),Ze=O;do{switch(Ze.tag){case 3:ee=b,Ze.effectTag|=4096,Ze.expirationTime=m;var Ce=pu(Ze,ee,m);bu(Ze,Ce);break e;case 1:ee=b;var ze=Ze.type,Et=Ze.stateNode;if((Ze.effectTag&64)==0&&(typeof ze.getDerivedStateFromError=="function"||Et!==null&&typeof Et.componentDidCatch=="function"&&(Ar===null||!Ar.has(Et)))){Ze.effectTag|=4096,Ze.expirationTime=m;var on=Sl(Ze,ee,m);bu(Ze,on);break e}}Ze=Ze.return}while(Ze!==null)}Y=vu(Y)}catch(sr){m=sr;continue}break}while(1)}function ei(){var v=B0.current;return B0.current=oo,v===null?oo:v}function Yf(v,m){vZt&&(Zt=v)}function ja(){for(;Y!==null;)Y=Ic(Y)}function Ua(){for(;Y!==null&&!_n();)Y=Ic(Y)}function Ic(v){var m=Lc(v.alternate,v,ye);return v.memoizedProps=v.pendingProps,m===null&&(m=vu(v)),hu.current=null,m}function vu(v){Y=v;do{var m=Y.alternate;if(v=Y.return,(Y.effectTag&2048)==0){e:{var S=m;m=Y;var O=ye,M=m.pendingProps;switch(m.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:c0(m.type)&&Ru(m);break;case 3:Fe(m),ks(m),M=m.stateNode,M.pendingContext&&(M.context=M.pendingContext,M.pendingContext=null),(S===null||S.child===null)&&Vo(m)&&ki(m),$r(m);break;case 5:K(m);var b=W(de.current);if(O=m.type,S!==null&&m.stateNode!=null)m0(S,m,O,M,b),S.ref!==m.ref&&(m.effectTag|=128);else if(M){if(S=W(fe.current),Vo(m)){if(M=m,!w)throw Error(t(175));S=Ui(M.stateNode,M.type,M.memoizedProps,b,S,M),M.updateQueue=S,S=S!==null,S&&ki(m)}else{var ee=ne(O,M,b,S,m);Yr(ee,m,!1,!1),m.stateNode=ee,Z(ee,O,M,b,S)&&ki(m)}m.ref!==null&&(m.effectTag|=128)}else if(m.stateNode===null)throw Error(t(166));break;case 6:if(S&&m.stateNode!=null)Tn(S,m,S.memoizedProps,M);else{if(typeof M!="string"&&m.stateNode===null)throw Error(t(166));if(S=W(de.current),b=W(fe.current),Vo(m)){if(S=m,!w)throw Error(t(176));(S=Mr(S.stateNode,S.memoizedProps,S))&&ki(m)}else m.stateNode=Ft(M,S,b,m)}break;case 11:break;case 13:if(kr(xe,m),M=m.memoizedState,(m.effectTag&64)!=0){m.expirationTime=O;break e}M=M!==null,b=!1,S===null?m.memoizedProps.fallback!==void 0&&Vo(m):(O=S.memoizedState,b=O!==null,M||O===null||(O=S.child.sibling,O!==null&&(ee=m.firstEffect,ee!==null?(m.firstEffect=O,O.nextEffect=ee):(m.firstEffect=m.lastEffect=O,O.nextEffect=null),O.effectTag=8))),M&&!b&&(m.mode&2)!=0&&(S===null&&m.memoizedProps.unstable_avoidThisFallback!==!0||(xe.current&1)!=0?he===lo&&(he=T0):((he===lo||he===T0)&&(he=hi),Zt!==0&&X!==null&&(ao(X,ye),$o(X,Zt)))),cr&&M&&(m.effectTag|=4),Yt&&(M||b)&&(m.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:Fe(m),$r(m);break;case 10:fi(m);break;case 9:break;case 14:break;case 17:c0(m.type)&&Ru(m);break;case 19:if(kr(xe,m),M=m.memoizedState,M===null)break;if(b=(m.effectTag&64)!=0,ee=M.rendering,ee===null){if(b)bi(M,!1);else if(he!==lo||S!==null&&(S.effectTag&64)!=0)for(S=m.child;S!==null;){if(ee=je(S),ee!==null){for(m.effectTag|=64,bi(M,!1),S=ee.updateQueue,S!==null&&(m.updateQueue=S,m.effectTag|=4),M.lastEffect===null&&(m.firstEffect=null),m.lastEffect=M.lastEffect,S=O,M=m.child;M!==null;)b=M,O=S,b.effectTag&=2,b.nextEffect=null,b.firstEffect=null,b.lastEffect=null,ee=b.alternate,ee===null?(b.childExpirationTime=0,b.expirationTime=O,b.child=null,b.memoizedProps=null,b.memoizedState=null,b.updateQueue=null,b.dependencies=null):(b.childExpirationTime=ee.childExpirationTime,b.expirationTime=ee.expirationTime,b.child=ee.child,b.memoizedProps=ee.memoizedProps,b.memoizedState=ee.memoizedState,b.updateQueue=ee.updateQueue,O=ee.dependencies,b.dependencies=O===null?null:{expirationTime:O.expirationTime,firstContext:O.firstContext,responders:O.responders}),M=M.sibling;Fr(xe,xe.current&1|2,m),m=m.child;break e}S=S.sibling}}else{if(!b)if(S=je(ee),S!==null){if(m.effectTag|=64,b=!0,S=S.updateQueue,S!==null&&(m.updateQueue=S,m.effectTag|=4),bi(M,!0),M.tail===null&&M.tailMode==="hidden"&&!ee.alternate){m=m.lastEffect=M.lastEffect,m!==null&&(m.nextEffect=null);break}}else G0()>M.tailExpiration&&1M&&(M=O),ee>M&&(M=ee),b=b.sibling;S.childExpirationTime=M}if(m!==null)return m;v!==null&&(v.effectTag&2048)==0&&(v.firstEffect===null&&(v.firstEffect=Y.firstEffect),Y.lastEffect!==null&&(v.lastEffect!==null&&(v.lastEffect.nextEffect=Y.firstEffect),v.lastEffect=Y.lastEffect),1v?m:v}function gu(v){var m=Fs();return zi(99,co.bind(null,v,m)),null}function co(v,m){do Ws();while(dr!==null);if((Kt&(Br|zr))!==Fn)throw Error(t(327));var S=v.finishedWork,O=v.finishedExpirationTime;if(S===null)return null;if(v.finishedWork=null,v.finishedExpirationTime=0,S===v.current)throw Error(t(177));v.callbackNode=null,v.callbackExpirationTime=0,v.callbackPriority=90,v.nextKnownPendingLevel=0;var M=$f(S);if(v.firstPendingTime=M,O<=v.lastSuspendedTime?v.firstSuspendedTime=v.lastSuspendedTime=v.nextKnownPendingLevel=0:O<=v.firstSuspendedTime&&(v.firstSuspendedTime=O-1),O<=v.lastPingedTime&&(v.lastPingedTime=0),O<=v.lastExpiredTime&&(v.lastExpiredTime=0),v===X&&(Y=X=null,ye=0),1=S?mt(v,m,S):(Fr(xe,xe.current&1,m),m=X0(v,m,S),m!==null?m.sibling:null);Fr(xe,xe.current&1,m);break;case 19:if(O=m.childExpirationTime>=S,(v.effectTag&64)!=0){if(O)return $t(v,m,S);m.effectTag|=64}if(M=m.memoizedState,M!==null&&(M.rendering=null,M.tail=null),Fr(xe,xe.current,m),!O)return null}return X0(v,m,S)}ai=!1}}else ai=!1;switch(m.expirationTime=0,m.tag){case 2:if(O=m.type,v!==null&&(v.alternate=null,m.alternate=null,m.effectTag|=2),v=m.pendingProps,M=Lu(m,H0.current),io(m,S),M=St(null,m,O,v,M,S),m.effectTag|=1,typeof M=="object"&&M!==null&&typeof M.render=="function"&&M.$$typeof===void 0){if(m.tag=1,Qt(),c0(O)){var b=!0;wo(m)}else b=!1;m.memoizedState=M.state!==null&&M.state!==void 0?M.state:null;var ee=O.getDerivedStateFromProps;typeof ee=="function"&&Go(m,O,ee,v),M.updater=Gu,m.stateNode=M,M._reactInternalFiber=m,Vu(m,O,v,S),m=Be(null,m,O,!0,b,S)}else m.tag=0,o0(null,m,M,S),m=m.child;return m;case 16:if(M=m.elementType,v!==null&&(v.alternate=null,m.alternate=null,m.effectTag|=2),v=m.pendingProps,Te(M),M._status!==1)throw M._result;switch(M=M._result,m.type=M,b=m.tag=Wa(M),v=I0(M,v),b){case 0:m=K0(null,m,M,v,S);break;case 1:m=ae(null,m,M,v,S);break;case 11:m=Vr(null,m,M,v,S);break;case 14:m=ff(null,m,M,I0(M.type,v),O,S);break;default:throw Error(t(306,M,""))}return m;case 0:return O=m.type,M=m.pendingProps,M=m.elementType===O?M:I0(O,M),K0(v,m,O,M,S);case 1:return O=m.type,M=m.pendingProps,M=m.elementType===O?M:I0(O,M),ae(v,m,O,M,S);case 3:if(Ie(m),O=m.updateQueue,O===null)throw Error(t(282));if(M=m.memoizedState,M=M!==null?M.element:null,P0(m,O,m.pendingProps,null,S),O=m.memoizedState.element,O===M)Rr(),m=X0(v,m,S);else{if((M=m.stateNode.hydrate)&&(w?(Gr=al(m.stateNode.containerInfo),F0=m,M=ir=!0):M=!1),M)for(S=U(m,null,O,S),m.child=S;S;)S.effectTag=S.effectTag&-3|1024,S=S.sibling;else o0(v,m,O,S),Rr();m=m.child}return m;case 5:return Ge(m),v===null&&Co(m),O=m.type,M=m.pendingProps,b=v!==null?v.memoizedProps:null,ee=M.children,at(O,M)?ee=null:b!==null&&at(O,b)&&(m.effectTag|=16),$0(v,m),m.mode&4&&S!==1&&it(O,M)?(m.expirationTime=m.childExpirationTime=1,m=null):(o0(v,m,ee,S),m=m.child),m;case 6:return v===null&&Co(m),null;case 13:return mt(v,m,S);case 4:return ve(m,m.stateNode.containerInfo),O=m.pendingProps,v===null?m.child=R(m,null,O,S):o0(v,m,O,S),m.child;case 11:return O=m.type,M=m.pendingProps,M=m.elementType===O?M:I0(O,M),Vr(v,m,O,M,S);case 7:return o0(v,m,m.pendingProps,S),m.child;case 8:return o0(v,m,m.pendingProps.children,S),m.child;case 12:return o0(v,m,m.pendingProps.children,S),m.child;case 10:e:{if(O=m.type._context,M=m.pendingProps,ee=m.memoizedProps,b=M.value,Ls(m,b),ee!==null){var Ye=ee.value;if(b=Sn(Ye,b)?0:(typeof O._calculateChangedBits=="function"?O._calculateChangedBits(Ye,b):1073741823)|0,b===0){if(ee.children===M.children&&!b0.current){m=X0(v,m,S);break e}}else for(Ye=m.child,Ye!==null&&(Ye.return=m);Ye!==null;){var Ze=Ye.dependencies;if(Ze!==null){ee=Ye.child;for(var ut=Ze.firstContext;ut!==null;){if(ut.context===O&&(ut.observedBits&b)!=0){Ye.tag===1&&(ut=a0(S,null),ut.tag=2,V0(Ye,ut)),Ye.expirationTime=m&&v<=m}function ao(v,m){var S=v.firstSuspendedTime,O=v.lastSuspendedTime;Sm||S===0)&&(v.lastSuspendedTime=m),m<=v.lastPingedTime&&(v.lastPingedTime=0),m<=v.lastExpiredTime&&(v.lastExpiredTime=0)}function $o(v,m){m>v.firstPendingTime&&(v.firstPendingTime=m);var S=v.firstSuspendedTime;S!==0&&(m>=S?v.firstSuspendedTime=v.lastSuspendedTime=v.nextKnownPendingLevel=0:m>=v.lastSuspendedTime&&(v.lastSuspendedTime=m+1),m>v.nextKnownPendingLevel&&(v.nextKnownPendingLevel=m))}function kl(v,m){var S=v.lastExpiredTime;(S===0||S>m)&&(v.lastExpiredTime=m)}function Nc(v){var m=v._reactInternalFiber;if(m===void 0)throw typeof v.render=="function"?Error(t(188)):Error(t(268,Object.keys(v)));return v=Ue(m),v===null?null:v.stateNode}function Al(v,m){v=v.memoizedState,v!==null&&v.dehydrated!==null&&v.retryTime{"use strict";sE.exports=uE()});var cE=Me((db,fE)=>{"use strict";var gN={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};fE.exports=gN});var hE=Me((pb,aE)=>{"use strict";var _N=Object.assign||function(i){for(var u=1;u"}}]),i}(),dE=function(){Ph(i,null,[{key:"fromJS",value:function(f){var c=f.width,g=f.height;return new i(c,g)}}]);function i(u,f){Iy(this,i),this.width=u,this.height=f}return Ph(i,[{key:"fromJS",value:function(f){f(this.width,this.height)}},{key:"toString",value:function(){return""}}]),i}(),pE=function(){function i(u,f){Iy(this,i),this.unit=u,this.value=f}return Ph(i,[{key:"fromJS",value:function(f){f(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case ps.UNIT_POINT:return String(this.value);case ps.UNIT_PERCENT:return this.value+"%";case ps.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),i}();aE.exports=function(i,u){function f(C,A,x){var D=C[A];C[A]=function(){for(var L=arguments.length,N=Array(L),j=0;j1?N-1:0),$=1;$1&&arguments[1]!==void 0?arguments[1]:NaN,x=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,D=arguments.length>3&&arguments[3]!==void 0?arguments[3]:ps.DIRECTION_LTR;return C.call(this,A,x,D)}),_N({Config:u.Config,Node:u.Node,Layout:i("Layout",yN),Size:i("Size",dE),Value:i("Value",pE),getInstanceCount:function(){return u.getInstanceCount.apply(u,arguments)}},ps)}});var mE=Me((exports,module)=>{(function(i,u){typeof define=="function"&&define.amd?define([],function(){return u}):typeof module=="object"&&module.exports?module.exports=u:(i.nbind=i.nbind||{}).init=u})(exports,function(Module,cb){typeof Module=="function"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(i,u){return function(){i&&i.apply(this,arguments);try{Module.ccall("nbind_init")}catch(f){u(f);return}u(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module!="undefined"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT==="WEB")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT==="WORKER")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT==="NODE")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT==="SHELL")ENVIRONMENT_IS_SHELL=!0;else throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof require=="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(u,f){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),u=nodePath.normalize(u);var c=nodeFS.readFileSync(u);return f?c:c.toString()},Module.readBinary=function(u){var f=Module.read(u,!0);return f.buffer||(f=new Uint8Array(f)),assert(f.buffer),f},Module.load=function(u){globalEval(read(u))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),typeof module!="undefined"&&(module.exports=Module),Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr!="undefined"&&(Module.printErr=printErr),typeof read!="undefined"?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(u){if(typeof readbuffer=="function")return new Uint8Array(readbuffer(u));var f=read(u,"binary");return assert(typeof f=="object"),f},typeof scriptArgs!="undefined"?Module.arguments=scriptArgs:typeof arguments!="undefined"&&(Module.arguments=arguments),typeof quit=="function"&&(Module.quit=function(i,u){quit(i)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(u){var f=new XMLHttpRequest;return f.open("GET",u,!1),f.send(null),f.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(u){var f=new XMLHttpRequest;return f.open("GET",u,!1),f.responseType="arraybuffer",f.send(null),new Uint8Array(f.response)}),Module.readAsync=function(u,f,c){var g=new XMLHttpRequest;g.open("GET",u,!0),g.responseType="arraybuffer",g.onload=function(){g.status==200||g.status==0&&g.response?f(g.response):c()},g.onerror=c,g.send(null)},typeof arguments!="undefined"&&(Module.arguments=arguments),typeof console!="undefined")Module.print||(Module.print=function(u){console.log(u)}),Module.printErr||(Module.printErr=function(u){console.warn(u)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump!="undefined"?function(i){dump(i)}:function(i){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle=="undefined"&&(Module.setWindowTitle=function(i){document.title=i})}else throw"Unknown runtime environment. Where are we?";function globalEval(i){eval.call(null,i)}!Module.load&&Module.read&&(Module.load=function(u){globalEval(Module.read(u))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(i,u){throw u}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(i){return tempRet0=i,i},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(i){STACKTOP=i},getNativeTypeSize:function(i){switch(i){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(i[i.length-1]==="*")return Runtime.QUANTUM_SIZE;if(i[0]==="i"){var u=parseInt(i.substr(1));return assert(u%8==0),u/8}else return 0}}},getNativeFieldSize:function(i){return Math.max(Runtime.getNativeTypeSize(i),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(i,u){return u==="double"||u==="i64"?i&7&&(assert((i&7)==4),i+=4):assert((i&3)==0),i},getAlignSize:function(i,u,f){return!f&&(i=="i64"||i=="double")?8:i?Math.min(u||(i?Runtime.getNativeFieldSize(i):0),Runtime.QUANTUM_SIZE):Math.min(u,8)},dynCall:function(i,u,f){return f&&f.length?Module["dynCall_"+i].apply(null,[u].concat(f)):Module["dynCall_"+i].call(null,u)},functionPointers:[],addFunction:function(i){for(var u=0;u>2],f=(u+i+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=f,f>=TOTAL_MEMORY){var c=enlargeMemory();if(!c)return HEAP32[DYNAMICTOP_PTR>>2]=u,0}return u},alignMemory:function(i,u){var f=i=Math.ceil(i/(u||16))*(u||16);return f},makeBigInt:function(i,u,f){var c=f?+(i>>>0)+ +(u>>>0)*4294967296:+(i>>>0)+ +(u|0)*4294967296;return c},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(i,u){i||abort("Assertion failed: "+u)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(i){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(i){var u=Runtime.stackAlloc(i.length);return writeArrayToMemory(i,u),u},stringToC:function(i){var u=0;if(i!=null&&i!==0){var f=(i.length<<2)+1;u=Runtime.stackAlloc(f),stringToUTF8(i,u,f)}return u}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(u,f,c,g,t){var C=getCFunc(u),A=[],x=0;if(g)for(var D=0;D>0]=u;break;case"i8":HEAP8[i>>0]=u;break;case"i16":HEAP16[i>>1]=u;break;case"i32":HEAP32[i>>2]=u;break;case"i64":tempI64=[u>>>0,(tempDouble=u,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[i>>2]=tempI64[0],HEAP32[i+4>>2]=tempI64[1];break;case"float":HEAPF32[i>>2]=u;break;case"double":HEAPF64[i>>3]=u;break;default:abort("invalid type for setValue: "+f)}}Module.setValue=setValue;function getValue(i,u,f){switch(u=u||"i8",u.charAt(u.length-1)==="*"&&(u="i32"),u){case"i1":return HEAP8[i>>0];case"i8":return HEAP8[i>>0];case"i16":return HEAP16[i>>1];case"i32":return HEAP32[i>>2];case"i64":return HEAP32[i>>2];case"float":return HEAPF32[i>>2];case"double":return HEAPF64[i>>3];default:abort("invalid type for setValue: "+u)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(i,u,f,c){var g,t;typeof i=="number"?(g=!0,t=i):(g=!1,t=i.length);var C=typeof u=="string"?u:null,A;if(f==ALLOC_NONE?A=c:A=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][f===void 0?ALLOC_STATIC:f](Math.max(t,C?1:u.length)),g){var c=A,x;for(assert((A&3)==0),x=A+(t&~3);c>2]=0;for(x=A+t;c>0]=0;return A}if(C==="i8")return i.subarray||i.slice?HEAPU8.set(i,A):HEAPU8.set(new Uint8Array(i),A),A;for(var D=0,L,N,j;D>0],f|=c,!(c==0&&!u||(g++,u&&g==u)););u||(u=g);var t="";if(f<128){for(var C=1024,A;u>0;)A=String.fromCharCode.apply(String,HEAPU8.subarray(i,i+Math.min(u,C))),t=t?t+A:A,i+=C,u-=C;return t}return Module.UTF8ToString(i)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(i){for(var u="";;){var f=HEAP8[i++>>0];if(!f)return u;u+=String.fromCharCode(f)}}Module.AsciiToString=AsciiToString;function stringToAscii(i,u){return writeAsciiToMemory(i,u,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(i,u){for(var f=u;i[f];)++f;if(f-u>16&&i.subarray&&UTF8Decoder)return UTF8Decoder.decode(i.subarray(u,f));for(var c,g,t,C,A,x,D="";;){if(c=i[u++],!c)return D;if(!(c&128)){D+=String.fromCharCode(c);continue}if(g=i[u++]&63,(c&224)==192){D+=String.fromCharCode((c&31)<<6|g);continue}if(t=i[u++]&63,(c&240)==224?c=(c&15)<<12|g<<6|t:(C=i[u++]&63,(c&248)==240?c=(c&7)<<18|g<<12|t<<6|C:(A=i[u++]&63,(c&252)==248?c=(c&3)<<24|g<<18|t<<12|C<<6|A:(x=i[u++]&63,c=(c&1)<<30|g<<24|t<<18|C<<12|A<<6|x))),c<65536)D+=String.fromCharCode(c);else{var L=c-65536;D+=String.fromCharCode(55296|L>>10,56320|L&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(i){return UTF8ArrayToString(HEAPU8,i)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(i,u,f,c){if(!(c>0))return 0;for(var g=f,t=f+c-1,C=0;C=55296&&A<=57343&&(A=65536+((A&1023)<<10)|i.charCodeAt(++C)&1023),A<=127){if(f>=t)break;u[f++]=A}else if(A<=2047){if(f+1>=t)break;u[f++]=192|A>>6,u[f++]=128|A&63}else if(A<=65535){if(f+2>=t)break;u[f++]=224|A>>12,u[f++]=128|A>>6&63,u[f++]=128|A&63}else if(A<=2097151){if(f+3>=t)break;u[f++]=240|A>>18,u[f++]=128|A>>12&63,u[f++]=128|A>>6&63,u[f++]=128|A&63}else if(A<=67108863){if(f+4>=t)break;u[f++]=248|A>>24,u[f++]=128|A>>18&63,u[f++]=128|A>>12&63,u[f++]=128|A>>6&63,u[f++]=128|A&63}else{if(f+5>=t)break;u[f++]=252|A>>30,u[f++]=128|A>>24&63,u[f++]=128|A>>18&63,u[f++]=128|A>>12&63,u[f++]=128|A>>6&63,u[f++]=128|A&63}}return u[f]=0,f-g}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(i,u,f){return stringToUTF8Array(i,HEAPU8,u,f)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(i){for(var u=0,f=0;f=55296&&c<=57343&&(c=65536+((c&1023)<<10)|i.charCodeAt(++f)&1023),c<=127?++u:c<=2047?u+=2:c<=65535?u+=3:c<=2097151?u+=4:c<=67108863?u+=5:u+=6}return u}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0;function demangle(i){var u=Module.___cxa_demangle||Module.__cxa_demangle;if(u){try{var f=i.substr(1),c=lengthBytesUTF8(f)+1,g=_malloc(c);stringToUTF8(f,g,c);var t=_malloc(4),C=u(g,0,0,t);if(getValue(t,"i32")===0&&C)return Pointer_stringify(C)}catch(A){}finally{g&&_free(g),t&&_free(t),C&&_free(C)}return i}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),i}function demangleAll(i){var u=/__Z[\w\d_]+/g;return i.replace(u,function(f){var c=demangle(f);return f===c?f:f+" ["+c+"]"})}function jsStackTrace(){var i=new Error;if(!i.stack){try{throw new Error(0)}catch(u){i=u}if(!i.stack)return"(no stack trace available)"}return i.stack.toString()}function stackTrace(){var i=jsStackTrace();return Module.extraStackTrace&&(i+=` +`+Module.extraStackTrace()),demangleAll(i)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY0;){var u=i.shift();if(typeof u=="function"){u();continue}var f=u.func;typeof f=="number"?u.arg===void 0?Module.dynCall_v(f):Module.dynCall_vi(f,u.arg):f(u.arg===void 0?null:u.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(i){__ATPRERUN__.unshift(i)}Module.addOnPreRun=addOnPreRun;function addOnInit(i){__ATINIT__.unshift(i)}Module.addOnInit=addOnInit;function addOnPreMain(i){__ATMAIN__.unshift(i)}Module.addOnPreMain=addOnPreMain;function addOnExit(i){__ATEXIT__.unshift(i)}Module.addOnExit=addOnExit;function addOnPostRun(i){__ATPOSTRUN__.unshift(i)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(i,u,f){var c=f>0?f:lengthBytesUTF8(i)+1,g=new Array(c),t=stringToUTF8Array(i,g,0,g.length);return u&&(g.length=t),g}Module.intArrayFromString=intArrayFromString;function intArrayToString(i){for(var u=[],f=0;f255&&(c&=255),u.push(String.fromCharCode(c))}return u.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(i,u,f){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var c,g;f&&(g=u+lengthBytesUTF8(i),c=HEAP8[g]),stringToUTF8(i,u,Infinity),f&&(HEAP8[g]=c)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(i,u){HEAP8.set(i,u)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(i,u,f){for(var c=0;c>0]=i.charCodeAt(c);f||(HEAP8[u>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function(u,f){var c=u>>>16,g=u&65535,t=f>>>16,C=f&65535;return g*C+(c*C+g*t<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(i){return froundBuffer[0]=i,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(i){i=i>>>0;for(var u=0;u<32;u++)if(i&1<<31-u)return u;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(i){return i<0?Math.ceil(i):Math.floor(i)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(i){return i}function addRunDependency(i){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(i){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var u=dependenciesFulfilled;dependenciesFulfilled=null,u()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(i,u,f,c,g,t,C,A){return _nbind.callbackSignatureList[i].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(i,u,f,c,g,t,C,A){return ASM_CONSTS[i](u,f,c,g,t,C,A)}function _emscripten_asm_const_iiiii(i,u,f,c,g){return ASM_CONSTS[i](u,f,c,g)}function _emscripten_asm_const_iiidddddd(i,u,f,c,g,t,C,A,x){return ASM_CONSTS[i](u,f,c,g,t,C,A,x)}function _emscripten_asm_const_iiididi(i,u,f,c,g,t,C){return ASM_CONSTS[i](u,f,c,g,t,C)}function _emscripten_asm_const_iiii(i,u,f,c){return ASM_CONSTS[i](u,f,c)}function _emscripten_asm_const_iiiid(i,u,f,c,g){return ASM_CONSTS[i](u,f,c,g)}function _emscripten_asm_const_iiiiii(i,u,f,c,g,t){return ASM_CONSTS[i](u,f,c,g,t)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(i,u){__ATEXIT__.unshift({func:i,arg:u})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(i,u,f,c){var g=arguments.length,t=g<3?u:c===null?c=Object.getOwnPropertyDescriptor(u,f):c,C;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(i,u,f,c);else for(var A=i.length-1;A>=0;A--)(C=i[A])&&(t=(g<3?C(t):g>3?C(u,f,t):C(u,f))||t);return g>3&&t&&Object.defineProperty(u,f,t),t}function _defineHidden(i){return function(u,f){Object.defineProperty(u,f,{configurable:!1,enumerable:!1,value:i,writable:!0})}}var _nbind={};function __nbind_free_external(i){_nbind.externalList[i].dereference(i)}function __nbind_reference_external(i){_nbind.externalList[i].reference()}function _llvm_stackrestore(i){var u=_llvm_stacksave,f=u.LLVM_SAVEDSTACKS[i];u.LLVM_SAVEDSTACKS.splice(i,1),Runtime.stackRestore(f)}function __nbind_register_pool(i,u,f,c){_nbind.Pool.pageSize=i,_nbind.Pool.usedPtr=u/4,_nbind.Pool.rootPtr=f,_nbind.Pool.pagePtr=c/4,HEAP32[u/4]=16909060,HEAP8[u]==1&&(_nbind.bigEndian=!0),HEAP32[u/4]=0,_nbind.makeTypeKindTbl=(t={},t[1024]=_nbind.PrimitiveType,t[64]=_nbind.Int64Type,t[2048]=_nbind.BindClass,t[3072]=_nbind.BindClassPtr,t[4096]=_nbind.SharedClassPtr,t[5120]=_nbind.ArrayType,t[6144]=_nbind.ArrayType,t[7168]=_nbind.CStringType,t[9216]=_nbind.CallbackType,t[10240]=_nbind.BindType,t),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var g=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});g.proto=Module,_nbind.BindClass.list.push(g);var t}function _emscripten_set_main_loop_timing(i,u){if(Browser.mainLoop.timingMode=i,Browser.mainLoop.timingValue=u,!Browser.mainLoop.func)return 1;if(i==0)Browser.mainLoop.scheduler=function(){var C=Math.max(0,Browser.mainLoop.tickStartTime+u-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,C)},Browser.mainLoop.method="timeout";else if(i==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(i==2){if(!window.setImmediate){let t=function(C){C.source===window&&C.data===c&&(C.stopPropagation(),f.shift()())};var g=t,f=[],c="setimmediate";window.addEventListener("message",t,!0),window.setImmediate=function(A){f.push(A),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(A),window.postMessage({target:c})):window.postMessage(c,"*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(i,u,f,c,g){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=i,Browser.mainLoop.arg=c;var t;typeof c!="undefined"?t=function(){Module.dynCall_vi(i,c)}:t=function(){Module.dynCall_v(i)};var C=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var x=Date.now(),D=Browser.mainLoop.queue.shift();if(D.func(D.arg),Browser.mainLoop.remainingBlockers){var L=Browser.mainLoop.remainingBlockers,N=L%1==0?L-1:Math.floor(L);D.counted?Browser.mainLoop.remainingBlockers=N:(N=N+.5,Browser.mainLoop.remainingBlockers=(8*L+N)/9)}if(console.log('main loop blocker "'+D.name+'" took '+(Date.now()-x)+" ms"),Browser.mainLoop.updateStatus(),C1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method==="timeout"&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(t),!(C0?_emscripten_set_main_loop_timing(0,1e3/u):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),f)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var i=Browser.mainLoop.timingMode,u=Browser.mainLoop.timingValue,f=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(f,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(i,u),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var i=Module.statusMessage||"Please wait...",u=Browser.mainLoop.remainingBlockers,f=Browser.mainLoop.expectedBlockers;u?u=6;){var Le=J>>Te-6&63;Te-=6,De+=Se[Le]}return Te==2?(De+=Se[(J&3)<<4],De+=me+me):Te==4&&(De+=Se[(J&15)<<2],De+=me),De}h.src="data:audio/x-"+C.substr(-3)+";base64,"+Q(t),L(h)},h.src=$,Browser.safeSetTimeout(function(){L(h)},1e4)}else return N()},Module.preloadPlugins.push(u);function f(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var c=Module.canvas;c&&(c.requestPointerLock=c.requestPointerLock||c.mozRequestPointerLock||c.webkitRequestPointerLock||c.msRequestPointerLock||function(){},c.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},c.exitPointerLock=c.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",f,!1),document.addEventListener("mozpointerlockchange",f,!1),document.addEventListener("webkitpointerlockchange",f,!1),document.addEventListener("mspointerlockchange",f,!1),Module.elementPointerLock&&c.addEventListener("click",function(g){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),g.preventDefault())},!1))},createContext:function(i,u,f,c){if(u&&Module.ctx&&i==Module.canvas)return Module.ctx;var g,t;if(u){var C={antialias:!1,alpha:!1};if(c)for(var A in c)C[A]=c[A];t=GL.createContext(i,C),t&&(g=GL.getContext(t).GLctx)}else g=i.getContext("2d");return g?(f&&(u||assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=g,u&&GL.makeContextCurrent(t),Module.useWebGL=u,Browser.moduleContextCreatedCallbacks.forEach(function(x){x()}),Browser.init()),g):null},destroyContext:function(i,u,f){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(i,u,f){Browser.lockPointer=i,Browser.resizeCanvas=u,Browser.vrDevice=f,typeof Browser.lockPointer=="undefined"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas=="undefined"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice=="undefined"&&(Browser.vrDevice=null);var c=Module.canvas;function g(){Browser.isFullscreen=!1;var C=c.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===C?(c.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},c.exitFullscreen=c.exitFullscreen.bind(document),Browser.lockPointer&&c.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(C.parentNode.insertBefore(c,C),C.parentNode.removeChild(C),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(c)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",g,!1),document.addEventListener("mozfullscreenchange",g,!1),document.addEventListener("webkitfullscreenchange",g,!1),document.addEventListener("MSFullscreenChange",g,!1));var t=document.createElement("div");c.parentNode.insertBefore(t,c),t.appendChild(c),t.requestFullscreen=t.requestFullscreen||t.mozRequestFullScreen||t.msRequestFullscreen||(t.webkitRequestFullscreen?function(){t.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(t.webkitRequestFullScreen?function(){t.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),f?t.requestFullscreen({vrDisplay:f}):t.requestFullscreen()},requestFullScreen:function(i,u,f){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(c,g,t){return Browser.requestFullscreen(c,g,t)},Browser.requestFullscreen(i,u,f)},nextRAF:0,fakeRequestAnimationFrame:function(i){var u=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=u+1e3/60;else for(;u+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var f=Math.max(Browser.nextRAF-u,0);setTimeout(i,f)},requestAnimationFrame:function(u){typeof window=="undefined"?Browser.fakeRequestAnimationFrame(u):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(u))},safeCallback:function(i){return function(){if(!ABORT)return i.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var i=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],i.forEach(function(u){u()})}},safeRequestAnimationFrame:function(i){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?i():Browser.queuedAsyncCallbacks.push(i))})},safeSetTimeout:function(i,u){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?i():Browser.queuedAsyncCallbacks.push(i))},u)},safeSetInterval:function(i,u){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&i()},u)},getMimetype:function(i){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[i.substr(i.lastIndexOf(".")+1)]},getUserMedia:function(i){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(i)},getMovementX:function(i){return i.movementX||i.mozMovementX||i.webkitMovementX||0},getMovementY:function(i){return i.movementY||i.mozMovementY||i.webkitMovementY||0},getMouseWheelDelta:function(i){var u=0;switch(i.type){case"DOMMouseScroll":u=i.detail;break;case"mousewheel":u=i.wheelDelta;break;case"wheel":u=i.deltaY;break;default:throw"unrecognized mouse wheel event: "+i.type}return u},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(i){if(Browser.pointerLock)i.type!="mousemove"&&"mozMovementX"in i?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(i),Browser.mouseMovementY=Browser.getMovementY(i)),typeof SDL!="undefined"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var u=Module.canvas.getBoundingClientRect(),f=Module.canvas.width,c=Module.canvas.height,g=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset,t=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(i.type==="touchstart"||i.type==="touchend"||i.type==="touchmove"){var C=i.touch;if(C===void 0)return;var A=C.pageX-(g+u.left),x=C.pageY-(t+u.top);A=A*(f/u.width),x=x*(c/u.height);var D={x:A,y:x};if(i.type==="touchstart")Browser.lastTouches[C.identifier]=D,Browser.touches[C.identifier]=D;else if(i.type==="touchend"||i.type==="touchmove"){var L=Browser.touches[C.identifier];L||(L=D),Browser.lastTouches[C.identifier]=L,Browser.touches[C.identifier]=D}return}var N=i.pageX-(g+u.left),j=i.pageY-(t+u.top);N=N*(f/u.width),j=j*(c/u.height),Browser.mouseMovementX=N-Browser.mouseX,Browser.mouseMovementY=j-Browser.mouseY,Browser.mouseX=N,Browser.mouseY=j}},asyncLoad:function(i,u,f,c){var g=c?"":getUniqueRunDependency("al "+i);Module.readAsync(i,function(t){assert(t,'Loading data file "'+i+'" failed (no arrayBuffer).'),u(new Uint8Array(t)),g&&removeRunDependency(g)},function(t){if(f)f();else throw'Loading data file "'+i+'" failed.'}),g&&addRunDependency(g)},resizeListeners:[],updateResizeListeners:function(){var i=Module.canvas;Browser.resizeListeners.forEach(function(u){u(i.width,i.height)})},setCanvasSize:function(i,u,f){var c=Module.canvas;Browser.updateCanvasDimensions(c,i,u),f||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var i=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];i=i|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=i}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var i=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];i=i&~8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=i}Browser.updateResizeListeners()},updateCanvasDimensions:function(i,u,f){u&&f?(i.widthNative=u,i.heightNative=f):(u=i.widthNative,f=i.heightNative);var c=u,g=f;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(c/g>2];return u},getStr:function(){var i=Pointer_stringify(SYSCALLS.get());return i},get64:function(){var i=SYSCALLS.get(),u=SYSCALLS.get();return i>=0?assert(u===0):assert(u===-1),i},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(i,u){SYSCALLS.varargs=u;try{var f=SYSCALLS.getStreamFromFD();return FS.close(f),0}catch(c){return(typeof FS=="undefined"||!(c instanceof FS.ErrnoError))&&abort(c),-c.errno}}function ___syscall54(i,u){SYSCALLS.varargs=u;try{return 0}catch(f){return(typeof FS=="undefined"||!(f instanceof FS.ErrnoError))&&abort(f),-f.errno}}function _typeModule(i){var u=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr"],[640,1,"std::unique_ptr"],[5120,1,"std::vector"],[6144,2,"std::array"],[9216,-1,"std::function"]];function f(x,D,L,N,j,$){if(D==1){var h=N&896;(h==128||h==256||h==384)&&(x="X const")}var re;return $?re=L.replace("X",x).replace("Y",j):re=x.replace("X",L).replace("Y",j),re.replace(/([*&]) (?=[*&])/g,"$1")}function c(x,D,L,N,j){throw new Error(x+" type "+L.replace("X",D+"?")+(N?" with flag "+N:"")+" in "+j)}function g(x,D,L,N,j,$,h,re){$===void 0&&($="X"),re===void 0&&(re=1);var ce=L(x);if(ce)return ce;var Q=N(x),oe=Q.placeholderFlag,Se=u[oe];h&&Se&&($=f(h[2],h[0],$,Se[0],"?",!0));var me;oe==0&&(me="Unbound"),oe>=10&&(me="Corrupt"),re>20&&(me="Deeply nested"),me&&c(me,x,$,oe,j||"?");var De=Q.paramList[0],J=g(De,D,L,N,j,$,Se,re+1),Te,Oe={flags:Se[0],id:x,name:"",paramList:[J]},Le=[],ot="?";switch(Q.placeholderFlag){case 1:Te=J.spec;break;case 2:if((J.flags&15360)==1024&&J.spec.ptrSize==1){Oe.flags=7168;break}case 3:case 6:case 5:Te=J.spec,(J.flags&15360)!=2048;break;case 8:ot=""+Q.paramList[1],Oe.paramList.push(Q.paramList[1]);break;case 9:for(var ct=0,Ue=Q.paramList[1];ct>2]=i),i}function _llvm_stacksave(){var i=_llvm_stacksave;return i.LLVM_SAVEDSTACKS||(i.LLVM_SAVEDSTACKS=[]),i.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),i.LLVM_SAVEDSTACKS.length-1}function ___syscall140(i,u){SYSCALLS.varargs=u;try{var f=SYSCALLS.getStreamFromFD(),c=SYSCALLS.get(),g=SYSCALLS.get(),t=SYSCALLS.get(),C=SYSCALLS.get(),A=g;return FS.llseek(f,A,C),HEAP32[t>>2]=f.position,f.getdents&&A===0&&C===0&&(f.getdents=null),0}catch(x){return(typeof FS=="undefined"||!(x instanceof FS.ErrnoError))&&abort(x),-x.errno}}function ___syscall146(i,u){SYSCALLS.varargs=u;try{var f=SYSCALLS.get(),c=SYSCALLS.get(),g=SYSCALLS.get(),t=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(L,N){var j=___syscall146.buffers[L];assert(j),N===0||N===10?((L===1?Module.print:Module.printErr)(UTF8ArrayToString(j,0)),j.length=0):j.push(N)});for(var C=0;C>2],x=HEAP32[c+(C*8+4)>>2],D=0;Di.pageSize/2||u>i.pageSize-f){var c=_nbind.typeNameTbl.NBind.proto;return c.lalloc(u)}else return HEAPU32[i.usedPtr]=f+u,i.rootPtr+f},i.lreset=function(u,f){var c=HEAPU32[i.pagePtr];if(c){var g=_nbind.typeNameTbl.NBind.proto;g.lreset(u,f)}else HEAPU32[i.usedPtr]=u},i}();_nbind.Pool=Pool;function constructType(i,u){var f=i==10240?_nbind.makeTypeNameTbl[u.name]||_nbind.BindType:_nbind.makeTypeKindTbl[i],c=new f(u);return typeIdTbl[u.id]=c,_nbind.typeNameTbl[u.name]=c,c}_nbind.constructType=constructType;function getType(i){return typeIdTbl[i]}_nbind.getType=getType;function queryType(i){var u=HEAPU8[i],f=_nbind.structureList[u][1];i/=4,f<0&&(++i,f=HEAPU32[i]+1);var c=Array.prototype.slice.call(HEAPU32.subarray(i+1,i+1+f));return u==9&&(c=[c[0],c.slice(1)]),{paramList:c,placeholderFlag:u}}_nbind.queryType=queryType;function getTypes(i,u){return i.map(function(f){return typeof f=="number"?_nbind.getComplexType(f,constructType,getType,queryType,u):_nbind.typeNameTbl[f]})}_nbind.getTypes=getTypes;function readTypeIdList(i,u){return Array.prototype.slice.call(HEAPU32,i/4,i/4+u)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(i){for(var u=i;HEAPU8[u++];);return String.fromCharCode.apply("",HEAPU8.subarray(i,u-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(i){var u={};if(i)for(;;){var f=HEAPU32[i/4];if(!f)break;u[readAsciiString(f)]=!0,i+=4}return u}_nbind.readPolicyList=readPolicyList;function getDynCall(i,u){var f={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},c=i.map(function(t){return f[t.name]||"i"}).join(""),g=Module["dynCall_"+c];if(!g)throw new Error("dynCall_"+c+" not found for "+u+"("+i.map(function(t){return t.name}).join(", ")+")");return g}_nbind.getDynCall=getDynCall;function addMethod(i,u,f,c){var g=i[u];i.hasOwnProperty(u)&&g?((g.arity||g.arity===0)&&(g=_nbind.makeOverloader(g,g.arity),i[u]=g),g.addMethod(f,c)):(f.arity=c,i[u]=f)}_nbind.addMethod=addMethod;function throwError(i){throw new Error(i)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(i){__extends(u,i);function u(){var f=i!==null&&i.apply(this,arguments)||this;return f.heap=HEAPU32,f.ptrSize=4,f}return u.prototype.needsWireRead=function(f){return!!this.wireRead||!!this.makeWireRead},u.prototype.needsWireWrite=function(f){return!!this.wireWrite||!!this.makeWireWrite},u}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(i){__extends(u,i);function u(f){var c=i.call(this,f)||this,g=f.flags&32?{32:HEAPF32,64:HEAPF64}:f.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return c.heap=g[f.ptrSize*8],c.ptrSize=f.ptrSize,c}return u.prototype.needsWireWrite=function(f){return!!f&&!!f.Strict},u.prototype.makeWireWrite=function(f,c){return c&&c.Strict&&function(g){if(typeof g=="number")return g;throw new Error("Type mismatch")}},u}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(i,u){if(i==null){if(u&&u.Nullable)return 0;throw new Error("Type mismatch")}if(u&&u.Strict){if(typeof i!="string")throw new Error("Type mismatch")}else i=i.toString();var f=Module.lengthBytesUTF8(i)+1,c=_nbind.Pool.lalloc(f);return Module.stringToUTF8Array(i,HEAPU8,c,f),c}_nbind.pushCString=pushCString;function popCString(i){return i===0?null:Module.Pointer_stringify(i)}_nbind.popCString=popCString;var CStringType=function(i){__extends(u,i);function u(){var f=i!==null&&i.apply(this,arguments)||this;return f.wireRead=popCString,f.wireWrite=pushCString,f.readResources=[_nbind.resources.pool],f.writeResources=[_nbind.resources.pool],f}return u.prototype.makeWireWrite=function(f,c){return function(g){return pushCString(g,c)}},u}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(i){__extends(u,i);function u(){var f=i!==null&&i.apply(this,arguments)||this;return f.wireRead=function(c){return!!c},f}return u.prototype.needsWireWrite=function(f){return!!f&&!!f.Strict},u.prototype.makeWireRead=function(f){return"!!("+f+")"},u.prototype.makeWireWrite=function(f,c){return c&&c.Strict&&function(g){if(typeof g=="boolean")return g;throw new Error("Type mismatch")}||f},u}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function i(){}return i.prototype.persist=function(){this.__nbindState|=1},i}();_nbind.Wrapper=Wrapper;function makeBound(i,u){var f=function(c){__extends(g,c);function g(t,C,A,x){var D=c.call(this)||this;if(!(D instanceof g))return new(Function.prototype.bind.apply(g,Array.prototype.concat.apply([null],arguments)));var L=C,N=A,j=x;if(t!==_nbind.ptrMarker){var $=D.__nbindConstructor.apply(D,arguments);L=4096|512,j=HEAPU32[$/4],N=HEAPU32[$/4+1]}var h={configurable:!0,enumerable:!1,value:null,writable:!1},re={__nbindFlags:L,__nbindPtr:N};j&&(re.__nbindShared=j,_nbind.mark(D));for(var ce=0,Q=Object.keys(re);ce>=1;var f=_nbind.valueList[i];return _nbind.valueList[i]=firstFreeValue,firstFreeValue=i,f}else{if(u)return _nbind.popShared(i,u);throw new Error("Invalid value slot "+i)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(i){return typeof i=="number"?i:pushValue(i)*4096+valueBase}function pop64(i){return i=3?C=Buffer.from(t):C=new Buffer(t),C.copy(c)}else getBuffer(c).set(t)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var i=0,u=dirtyList;i>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(i,u,f,c,g,t){try{Module.dynCall_viiiii(i,u,f,c,g,t)}catch(C){if(typeof C!="number"&&C!=="longjmp")throw C;Module.setThrew(1,0)}}function invoke_vif(i,u,f){try{Module.dynCall_vif(i,u,f)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_vid(i,u,f){try{Module.dynCall_vid(i,u,f)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_fiff(i,u,f,c){try{return Module.dynCall_fiff(i,u,f,c)}catch(g){if(typeof g!="number"&&g!=="longjmp")throw g;Module.setThrew(1,0)}}function invoke_vi(i,u){try{Module.dynCall_vi(i,u)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_vii(i,u,f){try{Module.dynCall_vii(i,u,f)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_ii(i,u){try{return Module.dynCall_ii(i,u)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_viddi(i,u,f,c,g){try{Module.dynCall_viddi(i,u,f,c,g)}catch(t){if(typeof t!="number"&&t!=="longjmp")throw t;Module.setThrew(1,0)}}function invoke_vidd(i,u,f,c){try{Module.dynCall_vidd(i,u,f,c)}catch(g){if(typeof g!="number"&&g!=="longjmp")throw g;Module.setThrew(1,0)}}function invoke_iiii(i,u,f,c){try{return Module.dynCall_iiii(i,u,f,c)}catch(g){if(typeof g!="number"&&g!=="longjmp")throw g;Module.setThrew(1,0)}}function invoke_diii(i,u,f,c){try{return Module.dynCall_diii(i,u,f,c)}catch(g){if(typeof g!="number"&&g!=="longjmp")throw g;Module.setThrew(1,0)}}function invoke_di(i,u){try{return Module.dynCall_di(i,u)}catch(f){if(typeof f!="number"&&f!=="longjmp")throw f;Module.setThrew(1,0)}}function invoke_iid(i,u,f){try{return Module.dynCall_iid(i,u,f)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_iii(i,u,f){try{return Module.dynCall_iii(i,u,f)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiddi(i,u,f,c,g,t){try{Module.dynCall_viiddi(i,u,f,c,g,t)}catch(C){if(typeof C!="number"&&C!=="longjmp")throw C;Module.setThrew(1,0)}}function invoke_viiiiii(i,u,f,c,g,t,C){try{Module.dynCall_viiiiii(i,u,f,c,g,t,C)}catch(A){if(typeof A!="number"&&A!=="longjmp")throw A;Module.setThrew(1,0)}}function invoke_dii(i,u,f){try{return Module.dynCall_dii(i,u,f)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_i(i){try{return Module.dynCall_i(i)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_iiiiii(i,u,f,c,g,t){try{return Module.dynCall_iiiiii(i,u,f,c,g,t)}catch(C){if(typeof C!="number"&&C!=="longjmp")throw C;Module.setThrew(1,0)}}function invoke_viiid(i,u,f,c,g){try{Module.dynCall_viiid(i,u,f,c,g)}catch(t){if(typeof t!="number"&&t!=="longjmp")throw t;Module.setThrew(1,0)}}function invoke_viififi(i,u,f,c,g,t,C){try{Module.dynCall_viififi(i,u,f,c,g,t,C)}catch(A){if(typeof A!="number"&&A!=="longjmp")throw A;Module.setThrew(1,0)}}function invoke_viii(i,u,f,c){try{Module.dynCall_viii(i,u,f,c)}catch(g){if(typeof g!="number"&&g!=="longjmp")throw g;Module.setThrew(1,0)}}function invoke_v(i){try{Module.dynCall_v(i)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_viid(i,u,f,c){try{Module.dynCall_viid(i,u,f,c)}catch(g){if(typeof g!="number"&&g!=="longjmp")throw g;Module.setThrew(1,0)}}function invoke_idd(i,u,f){try{return Module.dynCall_idd(i,u,f)}catch(c){if(typeof c!="number"&&c!=="longjmp")throw c;Module.setThrew(1,0)}}function invoke_viiii(i,u,f,c,g){try{Module.dynCall_viiii(i,u,f,c,g)}catch(t){if(typeof t!="number"&&t!=="longjmp")throw t;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:Infinity},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(i,u,f){var c=new i.Int8Array(f),g=new i.Int16Array(f),t=new i.Int32Array(f),C=new i.Uint8Array(f),A=new i.Uint16Array(f),x=new i.Uint32Array(f),D=new i.Float32Array(f),L=new i.Float64Array(f),N=u.DYNAMICTOP_PTR|0,j=u.tempDoublePtr|0,$=u.ABORT|0,h=u.STACKTOP|0,re=u.STACK_MAX|0,ce=u.cttz_i8|0,Q=u.___dso_handle|0,oe=0,Se=0,me=0,De=0,J=i.NaN,Te=i.Infinity,Oe=0,Le=0,ot=0,ct=0,Ue=0,be=0,At=i.Math.floor,Ot=i.Math.abs,Nt=i.Math.sqrt,Je=i.Math.pow,V=i.Math.cos,ne=i.Math.sin,ge=i.Math.tan,Z=i.Math.acos,Ae=i.Math.asin,at=i.Math.atan,it=i.Math.atan2,Ft=i.Math.exp,jt=i.Math.log,hn=i.Math.ceil,Un=i.Math.imul,Jt=i.Math.min,Yt=i.Math.max,cr=i.Math.clz32,w=i.Math.fround,pt=u.abort,Mn=u.assert,Bn=u.enlargeMemory,Xn=u.getTotalMemory,vr=u.abortOnCannotGrowMemory,gr=u.invoke_viiiii,r0=u.invoke_vif,Ci=u.invoke_vid,yo=u.invoke_fiff,Ds=u.invoke_vi,Mu=u.invoke_vii,Gf=u.invoke_ii,iu=u.invoke_viddi,ou=u.invoke_vidd,ol=u.invoke_iiii,ul=u.invoke_diii,Es=u.invoke_di,Uo=u.invoke_iid,sl=u.invoke_iii,Ss=u.invoke_viiddi,Cs=u.invoke_viiiiii,Ti=u.invoke_dii,Fu=u.invoke_i,ll=u.invoke_iiiiii,fl=u.invoke_viiid,cl=u.invoke_viififi,al=u.invoke_viii,Ui=u.invoke_v,Mr=u.invoke_viid,Ac=u.invoke_idd,of=u.invoke_viiii,Ts=u._emscripten_asm_const_iiiii,xs=u._emscripten_asm_const_iiidddddd,dl=u._emscripten_asm_const_iiiid,qi=u.__nbind_reference_external,qo=u._emscripten_asm_const_iiiiiiii,kr=u._removeAccessorPrefix,Fr=u._typeModule,si=u.__nbind_register_pool,H0=u.__decorate,b0=u._llvm_stackrestore,Bt=u.___cxa_atexit,Lu=u.__extends,c0=u.__nbind_get_value_object,Ru=u.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,ks=u._emscripten_set_main_loop_timing,As=u.__nbind_register_primitive,uu=u.__nbind_register_type,wo=u._emscripten_memcpy_big,zo=u.__nbind_register_function,Os=u.___setErrNo,Is=u.__nbind_register_class,uf=u.__nbind_finish,_n=u._abort,Nu=u._nbind_value,Wo=u._llvm_stacksave,su=u.___syscall54,Ps=u._defineHidden,pl=u._emscripten_set_main_loop,Vf=u._emscripten_get_now,hl=u.__nbind_register_callback_signature,Bu=u._emscripten_asm_const_iiiiii,ju=u.__nbind_free_external,sf=u._emscripten_asm_const_iiii,ro=u._emscripten_asm_const_iiididi,Ms=u.___syscall6,ml=u._atexit,Uu=u.___syscall140,G0=u.___syscall146,Fs=w(0);let tt=w(0);function zi(e){e=e|0;var n=0;return n=h,h=h+e|0,h=h+15&-16,n|0}function lu(){return h|0}function Ho(e){e=e|0,h=e}function O0(e,n){e=e|0,n=n|0,h=e,re=n}function vl(e,n){e=e|0,n=n|0,oe||(oe=e,Se=n)}function gl(e){e=e|0,be=e}function fu(){return be|0}function _l(){var e=0,n=0;vn(8104,8,400)|0,vn(8504,408,540)|0,e=9044,n=e+44|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));c[9088]=0,c[9089]=1,t[2273]=0,t[2274]=948,t[2275]=948,Bt(17,8104,Q|0)|0}function Sn(e){e=e|0,lf(e+948|0)}function gt(e){return e=w(e),((Ar(e)|0)&2147483647)>>>0>2139095040|0}function en(e,n,r){e=e|0,n=n|0,r=r|0;e:do if(t[e+(n<<3)+4>>2]|0)e=e+(n<<3)|0;else{if((n|2|0)==3?t[e+60>>2]|0:0){e=e+56|0;break}switch(n|0){case 0:case 2:case 4:case 5:{if(t[e+52>>2]|0){e=e+48|0;break e}break}default:}if(t[e+68>>2]|0){e=e+64|0;break}else{e=(n|1|0)==5?948:r;break}}while(0);return e|0}function I0(e){e=e|0;var n=0;return n=uh(1e3)|0,li(e,(n|0)!=0,2456),t[2276]=(t[2276]|0)+1,vn(n|0,8104,1e3)|0,c[e+2>>0]|0&&(t[n+4>>2]=2,t[n+12>>2]=4),t[n+976>>2]=e,n|0}function li(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0;s=h,h=h+16|0,o=s,n||(t[o>>2]=r,zs(e,5,3197,o)),h=s}function qu(){return I0(956)|0}function Wi(e){e=e|0;var n=0;return n=Tt(1e3)|0,zu(n,e),li(t[e+976>>2]|0,1,2456),t[2276]=(t[2276]|0)+1,t[n+944>>2]=0,n|0}function zu(e,n){e=e|0,n=n|0;var r=0;vn(e|0,n|0,948)|0,af(e+948|0,n+948|0),r=e+960|0,e=n+960|0,n=r+40|0;do t[r>>2]=t[e>>2],r=r+4|0,e=e+4|0;while((r|0)<(n|0))}function Wu(e){e=e|0;var n=0,r=0,o=0,s=0;if(n=e+944|0,r=t[n>>2]|0,r|0&&(Ls(r+948|0,e)|0,t[n>>2]=0),r=fi(e)|0,r|0){n=0;do t[(e0(e,n)|0)+944>>2]=0,n=n+1|0;while((n|0)!=(r|0))}r=e+948|0,o=t[r>>2]|0,s=e+952|0,n=t[s>>2]|0,(n|0)!=(o|0)&&(t[s>>2]=n+(~((n+-4-o|0)>>>2)<<2)),io(r),sh(e),t[2276]=(t[2276]|0)+-1}function Ls(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0;o=t[e>>2]|0,_=e+4|0,r=t[_>>2]|0,l=r;e:do if((o|0)==(r|0))s=o,d=4;else for(e=o;;){if((t[e>>2]|0)==(n|0)){s=e,d=4;break e}if(e=e+4|0,(e|0)==(r|0)){e=0;break}}while(0);return(d|0)==4&&((s|0)!=(r|0)?(o=s+4|0,e=l-o|0,n=e>>2,n&&(Y1(s|0,o|0,e|0)|0,r=t[_>>2]|0),e=s+(n<<2)|0,(r|0)==(e|0)||(t[_>>2]=r+(~((r+-4-e|0)>>>2)<<2)),e=1):e=0),e|0}function fi(e){return e=e|0,(t[e+952>>2]|0)-(t[e+948>>2]|0)>>2|0}function e0(e,n){e=e|0,n=n|0;var r=0;return r=t[e+948>>2]|0,(t[e+952>>2]|0)-r>>2>>>0>n>>>0?e=t[r+(n<<2)>>2]|0:e=0,e|0}function io(e){e=e|0;var n=0,r=0,o=0,s=0;o=h,h=h+32|0,n=o,s=t[e>>2]|0,r=(t[e+4>>2]|0)-s|0,((t[e+8>>2]|0)-s|0)>>>0>r>>>0&&(s=r>>2,z(n,s,s,e+8|0),dr(e,n),Or(n)),h=o}function D0(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0;k=fi(e)|0;do if(k|0){if((t[(e0(e,0)|0)+944>>2]|0)==(e|0)){if(!(Ls(e+948|0,n)|0))break;vn(n+400|0,8504,540)|0,t[n+944>>2]=0,ln(e);break}d=t[(t[e+976>>2]|0)+12>>2]|0,_=e+948|0,y=(d|0)==0,r=0,l=0;do o=t[(t[_>>2]|0)+(l<<2)>>2]|0,(o|0)==(n|0)?ln(e):(s=Wi(o)|0,t[(t[_>>2]|0)+(r<<2)>>2]=s,t[s+944>>2]=e,y||Q4[d&15](o,s,e,r),r=r+1|0),l=l+1|0;while((l|0)!=(k|0));if(r>>>0>>0){y=e+948|0,_=e+952|0,d=r,r=t[_>>2]|0;do l=(t[y>>2]|0)+(d<<2)|0,o=l+4|0,s=r-o|0,n=s>>2,n&&(Y1(l|0,o|0,s|0)|0,r=t[_>>2]|0),s=r,o=l+(n<<2)|0,(s|0)!=(o|0)&&(r=s+(~((s+-4-o|0)>>>2)<<2)|0,t[_>>2]=r),d=d+1|0;while((d|0)!=(k|0))}}while(0)}function Do(e){e=e|0;var n=0,r=0,o=0,s=0;i0(e,(fi(e)|0)==0,2491),i0(e,(t[e+944>>2]|0)==0,2545),n=e+948|0,r=t[n>>2]|0,o=e+952|0,s=t[o>>2]|0,(s|0)!=(r|0)&&(t[o>>2]=s+(~((s+-4-r|0)>>>2)<<2)),io(n),n=e+976|0,r=t[n>>2]|0,vn(e|0,8104,1e3)|0,c[r+2>>0]|0&&(t[e+4>>2]=2,t[e+12>>2]=4),t[n>>2]=r}function i0(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0;s=h,h=h+16|0,o=s,n||(t[o>>2]=r,wn(e,5,3197,o)),h=s}function Rs(){return t[2276]|0}function a0(){var e=0;return e=uh(20)|0,Hu((e|0)!=0,2592),t[2277]=(t[2277]|0)+1,t[e>>2]=t[239],t[e+4>>2]=t[240],t[e+8>>2]=t[241],t[e+12>>2]=t[242],t[e+16>>2]=t[243],e|0}function Hu(e,n){e=e|0,n=n|0;var r=0,o=0;o=h,h=h+16|0,r=o,e||(t[r>>2]=n,wn(0,5,3197,r)),h=o}function V0(e){e=e|0,sh(e),t[2277]=(t[2277]|0)+-1}function bu(e,n){e=e|0,n=n|0;var r=0;n?(i0(e,(fi(e)|0)==0,2629),r=1):(r=0,n=0),t[e+964>>2]=n,t[e+988>>2]=r}function Ns(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;o=h,h=h+16|0,l=o+8|0,s=o+4|0,d=o,t[s>>2]=n,i0(e,(t[n+944>>2]|0)==0,2709),i0(e,(t[e+964>>2]|0)==0,2763),bo(e),n=e+948|0,t[d>>2]=(t[n>>2]|0)+(r<<2),t[l>>2]=t[d>>2],P0(n,l,s)|0,t[(t[s>>2]|0)+944>>2]=e,ln(e),h=o}function bo(e){e=e|0;var n=0,r=0,o=0,s=0,l=0,d=0,_=0;if(r=fi(e)|0,r|0?(t[(e0(e,0)|0)+944>>2]|0)!=(e|0):0){o=t[(t[e+976>>2]|0)+12>>2]|0,s=e+948|0,l=(o|0)==0,n=0;do d=t[(t[s>>2]|0)+(n<<2)>>2]|0,_=Wi(d)|0,t[(t[s>>2]|0)+(n<<2)>>2]=_,t[_+944>>2]=e,l||Q4[o&15](d,_,e,n),n=n+1|0;while((n|0)!=(r|0))}}function P0(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0,le=0,ie=0,Pe=0,ke=0;Pe=h,h=h+64|0,P=Pe+52|0,_=Pe+48|0,q=Pe+28|0,we=Pe+24|0,le=Pe+20|0,ie=Pe,o=t[e>>2]|0,l=o,n=o+((t[n>>2]|0)-l>>2<<2)|0,o=e+4|0,s=t[o>>2]|0,d=e+8|0;do if(s>>>0<(t[d>>2]|0)>>>0){if((n|0)==(s|0)){t[n>>2]=t[r>>2],t[o>>2]=(t[o>>2]|0)+4;break}Qn(e,n,s,n+4|0),n>>>0<=r>>>0&&(r=(t[o>>2]|0)>>>0>r>>>0?r+4|0:r),t[n>>2]=t[r>>2]}else{o=(s-l>>2)+1|0,s=Q0(e)|0,s>>>0>>0&&$n(e),T=t[e>>2]|0,k=(t[d>>2]|0)-T|0,l=k>>1,z(ie,k>>2>>>0>>1>>>0?l>>>0>>0?o:l:s,n-T>>2,e+8|0),T=ie+8|0,o=t[T>>2]|0,l=ie+12|0,k=t[l>>2]|0,d=k,y=o;do if((o|0)==(k|0)){if(k=ie+4|0,o=t[k>>2]|0,ke=t[ie>>2]|0,s=ke,o>>>0<=ke>>>0){o=d-s>>1,o=(o|0)==0?1:o,z(q,o,o>>>2,t[ie+16>>2]|0),t[we>>2]=t[k>>2],t[le>>2]=t[T>>2],t[_>>2]=t[we>>2],t[P>>2]=t[le>>2],s0(q,_,P),o=t[ie>>2]|0,t[ie>>2]=t[q>>2],t[q>>2]=o,o=q+4|0,ke=t[k>>2]|0,t[k>>2]=t[o>>2],t[o>>2]=ke,o=q+8|0,ke=t[T>>2]|0,t[T>>2]=t[o>>2],t[o>>2]=ke,o=q+12|0,ke=t[l>>2]|0,t[l>>2]=t[o>>2],t[o>>2]=ke,Or(q),o=t[T>>2]|0;break}l=o,d=((l-s>>2)+1|0)/-2|0,_=o+(d<<2)|0,s=y-l|0,l=s>>2,l&&(Y1(_|0,o|0,s|0)|0,o=t[k>>2]|0),ke=_+(l<<2)|0,t[T>>2]=ke,t[k>>2]=o+(d<<2),o=ke}while(0);t[o>>2]=t[r>>2],t[T>>2]=(t[T>>2]|0)+4,n=nn(e,ie,n)|0,Or(ie)}while(0);return h=Pe,n|0}function ln(e){e=e|0;var n=0;do{if(n=e+984|0,c[n>>0]|0)break;c[n>>0]=1,D[e+504>>2]=w(J),e=t[e+944>>2]|0}while((e|0)!=0)}function lf(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-4-o|0)>>>2)<<2)),Ve(r))}function nr(e){return e=e|0,t[e+944>>2]|0}function rr(e){e=e|0,i0(e,(t[e+964>>2]|0)!=0,2832),ln(e)}function Go(e){return e=e|0,(c[e+984>>0]|0)!=0|0}function Gu(e,n){e=e|0,n=n|0,fL(e,n,400)|0&&(vn(e|0,n|0,400)|0,ln(e))}function yl(e){e=e|0;var n=tt;return n=w(D[e+44>>2]),e=gt(n)|0,w(e?w(0):n)}function cu(e){e=e|0;var n=tt;return n=w(D[e+48>>2]),gt(n)|0&&(n=c[(t[e+976>>2]|0)+2>>0]|0?w(1):w(0)),w(n)}function Bs(e,n){e=e|0,n=n|0,t[e+980>>2]=n}function Vu(e){return e=e|0,t[e+980>>2]|0}function M0(e,n){e=e|0,n=n|0;var r=0;r=e+4|0,(t[r>>2]|0)!=(n|0)&&(t[r>>2]=n,ln(e))}function au(e){return e=e|0,t[e+4>>2]|0}function Lr(e,n){e=e|0,n=n|0;var r=0;r=e+8|0,(t[r>>2]|0)!=(n|0)&&(t[r>>2]=n,ln(e))}function F(e){return e=e|0,t[e+8>>2]|0}function R(e,n){e=e|0,n=n|0;var r=0;r=e+12|0,(t[r>>2]|0)!=(n|0)&&(t[r>>2]=n,ln(e))}function U(e){return e=e|0,t[e+12>>2]|0}function H(e,n){e=e|0,n=n|0;var r=0;r=e+16|0,(t[r>>2]|0)!=(n|0)&&(t[r>>2]=n,ln(e))}function fe(e){return e=e|0,t[e+16>>2]|0}function ue(e,n){e=e|0,n=n|0;var r=0;r=e+20|0,(t[r>>2]|0)!=(n|0)&&(t[r>>2]=n,ln(e))}function de(e){return e=e|0,t[e+20>>2]|0}function W(e,n){e=e|0,n=n|0;var r=0;r=e+24|0,(t[r>>2]|0)!=(n|0)&&(t[r>>2]=n,ln(e))}function ve(e){return e=e|0,t[e+24>>2]|0}function Fe(e,n){e=e|0,n=n|0;var r=0;r=e+28|0,(t[r>>2]|0)!=(n|0)&&(t[r>>2]=n,ln(e))}function Ge(e){return e=e|0,t[e+28>>2]|0}function K(e,n){e=e|0,n=n|0;var r=0;r=e+32|0,(t[r>>2]|0)!=(n|0)&&(t[r>>2]=n,ln(e))}function xe(e){return e=e|0,t[e+32>>2]|0}function je(e,n){e=e|0,n=n|0;var r=0;r=e+36|0,(t[r>>2]|0)!=(n|0)&&(t[r>>2]=n,ln(e))}function Xe(e){return e=e|0,t[e+36>>2]|0}function rt(e,n){e=e|0,n=w(n);var r=0;r=e+40|0,w(D[r>>2])!=n&&(D[r>>2]=n,ln(e))}function st(e,n){e=e|0,n=w(n);var r=0;r=e+44|0,w(D[r>>2])!=n&&(D[r>>2]=n,ln(e))}function xt(e,n){e=e|0,n=w(n);var r=0;r=e+48|0,w(D[r>>2])!=n&&(D[r>>2]=n,ln(e))}function wt(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=(l^1)&1,o=e+52|0,s=e+56|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function lt(e,n){e=e|0,n=w(n);var r=0,o=0;o=e+52|0,r=e+56|0,(w(D[o>>2])==n?(t[r>>2]|0)==2:0)||(D[o>>2]=n,o=gt(n)|0,t[r>>2]=o?3:2,ln(e))}function Rt(e,n){e=e|0,n=n|0;var r=0,o=0;o=n+52|0,r=t[o+4>>2]|0,n=e,t[n>>2]=t[o>>2],t[n+4>>2]=r}function yn(e,n,r){e=e|0,n=n|0,r=w(r);var o=0,s=0,l=0;l=gt(r)|0,o=(l^1)&1,s=e+132+(n<<3)|0,n=e+132+(n<<3)+4|0,(l|w(D[s>>2])==r?(t[n>>2]|0)==(o|0):0)||(D[s>>2]=r,t[n>>2]=o,ln(e))}function sn(e,n,r){e=e|0,n=n|0,r=w(r);var o=0,s=0,l=0;l=gt(r)|0,o=l?0:2,s=e+132+(n<<3)|0,n=e+132+(n<<3)+4|0,(l|w(D[s>>2])==r?(t[n>>2]|0)==(o|0):0)||(D[s>>2]=r,t[n>>2]=o,ln(e))}function ar(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=n+132+(r<<3)|0,n=t[o+4>>2]|0,r=e,t[r>>2]=t[o>>2],t[r+4>>2]=n}function rn(e,n,r){e=e|0,n=n|0,r=w(r);var o=0,s=0,l=0;l=gt(r)|0,o=(l^1)&1,s=e+60+(n<<3)|0,n=e+60+(n<<3)+4|0,(l|w(D[s>>2])==r?(t[n>>2]|0)==(o|0):0)||(D[s>>2]=r,t[n>>2]=o,ln(e))}function Hn(e,n,r){e=e|0,n=n|0,r=w(r);var o=0,s=0,l=0;l=gt(r)|0,o=l?0:2,s=e+60+(n<<3)|0,n=e+60+(n<<3)+4|0,(l|w(D[s>>2])==r?(t[n>>2]|0)==(o|0):0)||(D[s>>2]=r,t[n>>2]=o,ln(e))}function d0(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=n+60+(r<<3)|0,n=t[o+4>>2]|0,r=e,t[r>>2]=t[o>>2],t[r+4>>2]=n}function Cr(e,n){e=e|0,n=n|0;var r=0;r=e+60+(n<<3)+4|0,(t[r>>2]|0)!=3&&(D[e+60+(n<<3)>>2]=w(J),t[r>>2]=3,ln(e))}function He(e,n,r){e=e|0,n=n|0,r=w(r);var o=0,s=0,l=0;l=gt(r)|0,o=(l^1)&1,s=e+204+(n<<3)|0,n=e+204+(n<<3)+4|0,(l|w(D[s>>2])==r?(t[n>>2]|0)==(o|0):0)||(D[s>>2]=r,t[n>>2]=o,ln(e))}function Qe(e,n,r){e=e|0,n=n|0,r=w(r);var o=0,s=0,l=0;l=gt(r)|0,o=l?0:2,s=e+204+(n<<3)|0,n=e+204+(n<<3)+4|0,(l|w(D[s>>2])==r?(t[n>>2]|0)==(o|0):0)||(D[s>>2]=r,t[n>>2]=o,ln(e))}function Ne(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=n+204+(r<<3)|0,n=t[o+4>>2]|0,r=e,t[r>>2]=t[o>>2],t[r+4>>2]=n}function ft(e,n,r){e=e|0,n=n|0,r=w(r);var o=0,s=0,l=0;l=gt(r)|0,o=(l^1)&1,s=e+276+(n<<3)|0,n=e+276+(n<<3)+4|0,(l|w(D[s>>2])==r?(t[n>>2]|0)==(o|0):0)||(D[s>>2]=r,t[n>>2]=o,ln(e))}function St(e,n){return e=e|0,n=n|0,w(D[e+276+(n<<3)>>2])}function Qt(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=(l^1)&1,o=e+348|0,s=e+352|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function Cn(e,n){e=e|0,n=w(n);var r=0,o=0;o=e+348|0,r=e+352|0,(w(D[o>>2])==n?(t[r>>2]|0)==2:0)||(D[o>>2]=n,o=gt(n)|0,t[r>>2]=o?3:2,ln(e))}function bn(e){e=e|0;var n=0;n=e+352|0,(t[n>>2]|0)!=3&&(D[e+348>>2]=w(J),t[n>>2]=3,ln(e))}function p0(e,n){e=e|0,n=n|0;var r=0,o=0;o=n+348|0,r=t[o+4>>2]|0,n=e,t[n>>2]=t[o>>2],t[n+4>>2]=r}function h0(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=(l^1)&1,o=e+356|0,s=e+360|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function ci(e,n){e=e|0,n=w(n);var r=0,o=0;o=e+356|0,r=e+360|0,(w(D[o>>2])==n?(t[r>>2]|0)==2:0)||(D[o>>2]=n,o=gt(n)|0,t[r>>2]=o?3:2,ln(e))}function xi(e){e=e|0;var n=0;n=e+360|0,(t[n>>2]|0)!=3&&(D[e+356>>2]=w(J),t[n>>2]=3,ln(e))}function E0(e,n){e=e|0,n=n|0;var r=0,o=0;o=n+356|0,r=t[o+4>>2]|0,n=e,t[n>>2]=t[o>>2],t[n+4>>2]=r}function qr(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=(l^1)&1,o=e+364|0,s=e+368|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function Eo(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=l?0:2,o=e+364|0,s=e+368|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function So(e,n){e=e|0,n=n|0;var r=0,o=0;o=n+364|0,r=t[o+4>>2]|0,n=e,t[n>>2]=t[o>>2],t[n+4>>2]=r}function wl(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=(l^1)&1,o=e+372|0,s=e+376|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function js(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=l?0:2,o=e+372|0,s=e+376|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function Dl(e,n){e=e|0,n=n|0;var r=0,o=0;o=n+372|0,r=t[o+4>>2]|0,n=e,t[n>>2]=t[o>>2],t[n+4>>2]=r}function du(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=(l^1)&1,o=e+380|0,s=e+384|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function Yu(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=l?0:2,o=e+380|0,s=e+384|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function Us(e,n){e=e|0,n=n|0;var r=0,o=0;o=n+380|0,r=t[o+4>>2]|0,n=e,t[n>>2]=t[o>>2],t[n+4>>2]=r}function oo(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=(l^1)&1,o=e+388|0,s=e+392|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function Hi(e,n){e=e|0,n=w(n);var r=0,o=0,s=0,l=0;l=gt(n)|0,r=l?0:2,o=e+388|0,s=e+392|0,(l|w(D[o>>2])==n?(t[s>>2]|0)==(r|0):0)||(D[o>>2]=n,t[s>>2]=r,ln(e))}function qs(e,n){e=e|0,n=n|0;var r=0,o=0;o=n+388|0,r=t[o+4>>2]|0,n=e,t[n>>2]=t[o>>2],t[n+4>>2]=r}function F0(e,n){e=e|0,n=w(n);var r=0;r=e+396|0,w(D[r>>2])!=n&&(D[r>>2]=n,ln(e))}function Gr(e){return e=e|0,w(D[e+396>>2])}function ir(e){return e=e|0,w(D[e+400>>2])}function L0(e){return e=e|0,w(D[e+404>>2])}function Y0(e){return e=e|0,w(D[e+408>>2])}function Co(e){return e=e|0,w(D[e+412>>2])}function $u(e){return e=e|0,w(D[e+416>>2])}function Vo(e){return e=e|0,w(D[e+420>>2])}function Rr(e,n){switch(e=e|0,n=n|0,i0(e,(n|0)<6,2918),n|0){case 0:{n=(t[e+496>>2]|0)==2?5:4;break}case 2:{n=(t[e+496>>2]|0)==2?4:5;break}default:}return w(D[e+424+(n<<2)>>2])}function Jn(e,n){switch(e=e|0,n=n|0,i0(e,(n|0)<6,2918),n|0){case 0:{n=(t[e+496>>2]|0)==2?5:4;break}case 2:{n=(t[e+496>>2]|0)==2?4:5;break}default:}return w(D[e+448+(n<<2)>>2])}function ai(e,n){switch(e=e|0,n=n|0,i0(e,(n|0)<6,2918),n|0){case 0:{n=(t[e+496>>2]|0)==2?5:4;break}case 2:{n=(t[e+496>>2]|0)==2?4:5;break}default:}return w(D[e+472+(n<<2)>>2])}function o0(e,n){e=e|0,n=n|0;var r=0,o=tt;return r=t[e+4>>2]|0,(r|0)==(t[n+4>>2]|0)?r?(o=w(D[e>>2]),e=w(Ot(w(o-w(D[n>>2]))))>2]=0,t[o+4>>2]=0,t[o+8>>2]=0,Ru(o|0,e|0,n|0,0),wn(e,3,(c[o+11>>0]|0)<0?t[o>>2]|0:o,r),ML(o),h=r}function $0(e,n,r,o){e=w(e),n=w(n),r=r|0,o=o|0;var s=tt;e=w(e*n),s=w(V4(e,w(1)));do if(Vr(s,w(0))|0)e=w(e-s);else{if(e=w(e-s),Vr(s,w(1))|0){e=w(e+w(1));break}if(r){e=w(e+w(1));break}o||(s>w(.5)?s=w(1):(o=Vr(s,w(.5))|0,s=w(o?1:0)),e=w(e+s))}while(0);return w(e/n)}function K0(e,n,r,o,s,l,d,_,y,k,T,P,q){e=e|0,n=w(n),r=r|0,o=w(o),s=s|0,l=w(l),d=d|0,_=w(_),y=w(y),k=w(k),T=w(T),P=w(P),q=q|0;var we=0,le=tt,ie=tt,Pe=tt,ke=tt,qe=tt,pe=tt;return y>2]),le!=w(0)):0)?(Pe=w($0(n,le,0,0)),ke=w($0(o,le,0,0)),ie=w($0(l,le,0,0)),le=w($0(_,le,0,0))):(ie=l,Pe=n,le=_,ke=o),(s|0)==(e|0)?we=Vr(ie,Pe)|0:we=0,(d|0)==(r|0)?q=Vr(le,ke)|0:q=0,((we?0:(qe=w(n-T),!(ae(e,qe,y)|0)))?!(Be(e,qe,s,y)|0):0)?we=Ie(e,qe,s,l,y)|0:we=1,((q?0:(pe=w(o-P),!(ae(r,pe,k)|0)))?!(Be(r,pe,d,k)|0):0)?q=Ie(r,pe,d,_,k)|0:q=1,q=we&q),q|0}function ae(e,n,r){return e=e|0,n=w(n),r=w(r),(e|0)==1?e=Vr(n,r)|0:e=0,e|0}function Be(e,n,r,o){return e=e|0,n=w(n),r=r|0,o=w(o),(e|0)==2&(r|0)==0?n>=o?e=1:e=Vr(n,o)|0:e=0,e|0}function Ie(e,n,r,o,s){return e=e|0,n=w(n),r=r|0,o=w(o),s=w(s),(e|0)==2&(r|0)==2&o>n?s<=n?e=1:e=Vr(n,s)|0:e=0,e|0}function ht(e,n,r,o,s,l,d,_,y,k,T){e=e|0,n=w(n),r=w(r),o=o|0,s=s|0,l=l|0,d=w(d),_=w(_),y=y|0,k=k|0,T=T|0;var P=0,q=0,we=0,le=0,ie=tt,Pe=tt,ke=0,qe=0,pe=0,_e=0,vt=0,Ln=0,Ht=0,It=0,gn=0,Pn=0,zt=0,Dr=tt,Ki=tt,Xi=tt,Ji=0,Ro=0;zt=h,h=h+160|0,It=zt+152|0,Ht=zt+120|0,Ln=zt+104|0,pe=zt+72|0,le=zt+56|0,vt=zt+8|0,qe=zt,_e=(t[2279]|0)+1|0,t[2279]=_e,gn=e+984|0,((c[gn>>0]|0)!=0?(t[e+512>>2]|0)!=(t[2278]|0):0)?ke=4:(t[e+516>>2]|0)==(o|0)?Pn=0:ke=4,(ke|0)==4&&(t[e+520>>2]=0,t[e+924>>2]=-1,t[e+928>>2]=-1,D[e+932>>2]=w(-1),D[e+936>>2]=w(-1),Pn=1);e:do if(t[e+964>>2]|0)if(ie=w(mt(e,2,d)),Pe=w(mt(e,0,d)),P=e+916|0,Xi=w(D[P>>2]),Ki=w(D[e+920>>2]),Dr=w(D[e+932>>2]),K0(s,n,l,r,t[e+924>>2]|0,Xi,t[e+928>>2]|0,Ki,Dr,w(D[e+936>>2]),ie,Pe,T)|0)ke=22;else if(we=t[e+520>>2]|0,!we)ke=21;else for(q=0;;){if(P=e+524+(q*24|0)|0,Dr=w(D[P>>2]),Ki=w(D[e+524+(q*24|0)+4>>2]),Xi=w(D[e+524+(q*24|0)+16>>2]),K0(s,n,l,r,t[e+524+(q*24|0)+8>>2]|0,Dr,t[e+524+(q*24|0)+12>>2]|0,Ki,Xi,w(D[e+524+(q*24|0)+20>>2]),ie,Pe,T)|0){ke=22;break e}if(q=q+1|0,q>>>0>=we>>>0){ke=21;break}}else{if(y){if(P=e+916|0,!(Vr(w(D[P>>2]),n)|0)){ke=21;break}if(!(Vr(w(D[e+920>>2]),r)|0)){ke=21;break}if((t[e+924>>2]|0)!=(s|0)){ke=21;break}P=(t[e+928>>2]|0)==(l|0)?P:0,ke=22;break}if(we=t[e+520>>2]|0,!we)ke=21;else for(q=0;;){if(P=e+524+(q*24|0)|0,((Vr(w(D[P>>2]),n)|0?Vr(w(D[e+524+(q*24|0)+4>>2]),r)|0:0)?(t[e+524+(q*24|0)+8>>2]|0)==(s|0):0)?(t[e+524+(q*24|0)+12>>2]|0)==(l|0):0){ke=22;break e}if(q=q+1|0,q>>>0>=we>>>0){ke=21;break}}}while(0);do if((ke|0)==21)c[11697]|0?(P=0,ke=28):(P=0,ke=31);else if((ke|0)==22){if(q=(c[11697]|0)!=0,!((P|0)!=0&(Pn^1)))if(q){ke=28;break}else{ke=31;break}le=P+16|0,t[e+908>>2]=t[le>>2],we=P+20|0,t[e+912>>2]=t[we>>2],(c[11698]|0)==0|q^1||(t[qe>>2]=Gn(_e)|0,t[qe+4>>2]=_e,wn(e,4,2972,qe),q=t[e+972>>2]|0,q|0&&Nl[q&127](e),s=$t(s,y)|0,l=$t(l,y)|0,Ro=+w(D[le>>2]),Ji=+w(D[we>>2]),t[vt>>2]=s,t[vt+4>>2]=l,L[vt+8>>3]=+n,L[vt+16>>3]=+r,L[vt+24>>3]=Ro,L[vt+32>>3]=Ji,t[vt+40>>2]=k,wn(e,4,2989,vt))}while(0);return(ke|0)==28&&(q=Gn(_e)|0,t[le>>2]=q,t[le+4>>2]=_e,t[le+8>>2]=Pn?3047:11699,wn(e,4,3038,le),q=t[e+972>>2]|0,q|0&&Nl[q&127](e),vt=$t(s,y)|0,ke=$t(l,y)|0,t[pe>>2]=vt,t[pe+4>>2]=ke,L[pe+8>>3]=+n,L[pe+16>>3]=+r,t[pe+24>>2]=k,wn(e,4,3049,pe),ke=31),(ke|0)==31&&(X0(e,n,r,o,s,l,d,_,y,T),c[11697]|0&&(q=t[2279]|0,vt=Gn(q)|0,t[Ln>>2]=vt,t[Ln+4>>2]=q,t[Ln+8>>2]=Pn?3047:11699,wn(e,4,3083,Ln),q=t[e+972>>2]|0,q|0&&Nl[q&127](e),vt=$t(s,y)|0,Ln=$t(l,y)|0,Ji=+w(D[e+908>>2]),Ro=+w(D[e+912>>2]),t[Ht>>2]=vt,t[Ht+4>>2]=Ln,L[Ht+8>>3]=Ji,L[Ht+16>>3]=Ro,t[Ht+24>>2]=k,wn(e,4,3092,Ht)),t[e+516>>2]=o,P||(q=e+520|0,P=t[q>>2]|0,(P|0)==16&&(c[11697]|0&&wn(e,4,3124,It),t[q>>2]=0,P=0),y?P=e+916|0:(t[q>>2]=P+1,P=e+524+(P*24|0)|0),D[P>>2]=n,D[P+4>>2]=r,t[P+8>>2]=s,t[P+12>>2]=l,t[P+16>>2]=t[e+908>>2],t[P+20>>2]=t[e+912>>2],P=0)),y&&(t[e+416>>2]=t[e+908>>2],t[e+420>>2]=t[e+912>>2],c[e+985>>0]=1,c[gn>>0]=0),t[2279]=(t[2279]|0)+-1,t[e+512>>2]=t[2278],h=zt,Pn|(P|0)==0|0}function mt(e,n,r){e=e|0,n=n|0,r=w(r);var o=tt;return o=w(Tr(e,n,r)),w(o+w(R0(e,n,r)))}function wn(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=h,h=h+16|0,s=l,t[s>>2]=o,e?o=t[e+976>>2]|0:o=0,Ku(o,e,n,r,s),h=l}function Gn(e){return e=e|0,(e>>>0>60?3201:3201+(60-e)|0)|0}function $t(e,n){e=e|0,n=n|0;var r=0,o=0,s=0;return s=h,h=h+32|0,r=s+12|0,o=s,t[r>>2]=t[254],t[r+4>>2]=t[255],t[r+8>>2]=t[256],t[o>>2]=t[257],t[o+4>>2]=t[258],t[o+8>>2]=t[259],(e|0)>2?e=11699:e=t[(n?o:r)+(e<<2)>>2]|0,h=s,e|0}function X0(e,n,r,o,s,l,d,_,y,k){e=e|0,n=w(n),r=w(r),o=o|0,s=s|0,l=l|0,d=w(d),_=w(_),y=y|0,k=k|0;var T=0,P=0,q=0,we=0,le=tt,ie=tt,Pe=tt,ke=tt,qe=tt,pe=tt,_e=tt,vt=0,Ln=0,Ht=0,It=tt,gn=tt,Pn=0,zt=tt,Dr=0,Ki=0,Xi=0,Ji=0,Ro=0,kf=0,Af=0,Cu=0,Of=0,Js=0,Qs=0,If=0,Pf=0,Mf=0,Kn=0,Tu=0,Ff=0,us=0,Lf=tt,Rf=tt,Zs=tt,el=tt,ss=tt,Fi=0,nu=0,go=0,xu=0,jl=0,Ul=tt,tl=tt,ql=tt,zl=tt,Li=tt,Di=tt,ku=0,xr=tt,Wl=tt,Qi=tt,ls=tt,Zi=tt,fs=tt,Hl=0,bl=0,cs=tt,Ri=tt,Au=0,Gl=0,Vl=0,Yl=0,En=tt,br=0,Ei=0,eo=0,Ni=0,xn=0,Vt=0,Ou=0,kt=tt,$l=0,Qr=0;Ou=h,h=h+16|0,Fi=Ou+12|0,nu=Ou+8|0,go=Ou+4|0,xu=Ou,i0(e,(s|0)==0|(gt(n)|0)^1,3326),i0(e,(l|0)==0|(gt(r)|0)^1,3406),Ei=so(e,o)|0,t[e+496>>2]=Ei,xn=N0(2,Ei)|0,Vt=N0(0,Ei)|0,D[e+440>>2]=w(Tr(e,xn,d)),D[e+444>>2]=w(R0(e,xn,d)),D[e+428>>2]=w(Tr(e,Vt,d)),D[e+436>>2]=w(R0(e,Vt,d)),D[e+464>>2]=w(C0(e,xn)),D[e+468>>2]=w(di(e,xn)),D[e+452>>2]=w(C0(e,Vt)),D[e+460>>2]=w(di(e,Vt)),D[e+488>>2]=w(u0(e,xn,d)),D[e+492>>2]=w(v0(e,xn,d)),D[e+476>>2]=w(u0(e,Vt,d)),D[e+484>>2]=w(v0(e,Vt,d));do if(t[e+964>>2]|0)To(e,n,r,s,l,d,_);else{if(eo=e+948|0,Ni=(t[e+952>>2]|0)-(t[eo>>2]|0)>>2,!Ni){pu(e,n,r,s,l,d,_);break}if(y?0:Sl(e,n,r,s,l,d,_)|0)break;bo(e),Tu=e+508|0,c[Tu>>0]=0,xn=N0(t[e+4>>2]|0,Ei)|0,Vt=Cl(xn,Ei)|0,br=Nr(xn)|0,Ff=t[e+8>>2]|0,Gl=e+28|0,us=(t[Gl>>2]|0)!=0,Zi=br?d:_,cs=br?_:d,Lf=w(B0(e,xn,d)),Rf=w(hu(e,xn,d)),le=w(B0(e,Vt,d)),fs=w(Fn(e,xn,d)),Ri=w(Fn(e,Vt,d)),Ht=br?s:l,Au=br?l:s,En=br?fs:Ri,qe=br?Ri:fs,ls=w(mt(e,2,d)),ke=w(mt(e,0,d)),ie=w(w(Tn(e+364|0,d))-En),Pe=w(w(Tn(e+380|0,d))-En),pe=w(w(Tn(e+372|0,_))-qe),_e=w(w(Tn(e+388|0,_))-qe),Zs=br?ie:pe,el=br?Pe:_e,ls=w(n-ls),n=w(ls-En),gt(n)|0?En=n:En=w(Ur(w(cc(n,Pe)),ie)),Wl=w(r-ke),n=w(Wl-qe),gt(n)|0?Qi=n:Qi=w(Ur(w(cc(n,_e)),pe)),ie=br?En:Qi,xr=br?Qi:En;e:do if((Ht|0)==1)for(o=0,P=0;;){if(T=e0(e,P)|0,!o)(w(Br(T))>w(0)?w(zr(T))>w(0):0)?o=T:o=0;else if(pi(T)|0){we=0;break e}if(P=P+1|0,P>>>0>=Ni>>>0){we=o;break}}else we=0;while(0);vt=we+500|0,Ln=we+504|0,o=0,T=0,n=w(0),q=0;do{if(P=t[(t[eo>>2]|0)+(q<<2)>>2]|0,(t[P+36>>2]|0)==1)lo(P),c[P+985>>0]=1,c[P+984>>0]=0;else{$r(P),y&&Yo(P,so(P,Ei)|0,ie,xr,En);do if((t[P+24>>2]|0)!=1)if((P|0)==(we|0)){t[vt>>2]=t[2278],D[Ln>>2]=w(0);break}else{wr(e,P,En,s,Qi,En,Qi,l,Ei,k);break}else T|0&&(t[T+960>>2]=P),t[P+960>>2]=0,T=P,o=(o|0)==0?P:o;while(0);Di=w(D[P+504>>2]),n=w(n+w(Di+w(mt(P,xn,En))))}q=q+1|0}while((q|0)!=(Ni|0));for(Xi=n>ie,ku=us&((Ht|0)==2&Xi)?1:Ht,Dr=(Au|0)==1,Ro=Dr&(y^1),kf=(ku|0)==1,Af=(ku|0)==2,Cu=976+(xn<<2)|0,Of=(Au|2|0)==2,Mf=Dr&(us^1),Js=1040+(Vt<<2)|0,Qs=1040+(xn<<2)|0,If=976+(Vt<<2)|0,Pf=(Au|0)!=1,Xi=us&((Ht|0)!=0&Xi),Ki=e+976|0,Dr=Dr^1,n=ie,Pn=0,Ji=0,Di=w(0),ss=w(0);;){e:do if(Pn>>>0>>0)for(Ln=t[eo>>2]|0,q=0,_e=w(0),pe=w(0),Pe=w(0),ie=w(0),P=0,T=0,we=Pn;;){if(vt=t[Ln+(we<<2)>>2]|0,(t[vt+36>>2]|0)!=1?(t[vt+940>>2]=Ji,(t[vt+24>>2]|0)!=1):0){if(ke=w(mt(vt,xn,En)),Kn=t[Cu>>2]|0,r=w(Tn(vt+380+(Kn<<3)|0,Zi)),qe=w(D[vt+504>>2]),r=w(cc(r,qe)),r=w(Ur(w(Tn(vt+364+(Kn<<3)|0,Zi)),r)),us&(q|0)!=0&w(ke+w(pe+r))>n){l=q,ke=_e,Ht=we;break e}ke=w(ke+r),r=w(pe+ke),ke=w(_e+ke),pi(vt)|0&&(Pe=w(Pe+w(Br(vt))),ie=w(ie-w(qe*w(zr(vt))))),T|0&&(t[T+960>>2]=vt),t[vt+960>>2]=0,q=q+1|0,T=vt,P=(P|0)==0?vt:P}else ke=_e,r=pe;if(we=we+1|0,we>>>0>>0)_e=ke,pe=r;else{l=q,Ht=we;break}}else l=0,ke=w(0),Pe=w(0),ie=w(0),P=0,Ht=Pn;while(0);Kn=Pe>w(0)&Pew(0)&ieel&((gt(el)|0)^1))n=el,Kn=51;else if(c[(t[Ki>>2]|0)+3>>0]|0)Kn=51;else{if(It!=w(0)?w(Br(e))!=w(0):0){Kn=53;break}n=ke,Kn=53}while(0);if((Kn|0)==51&&(Kn=0,gt(n)|0?Kn=53:(gn=w(n-ke),zt=n)),(Kn|0)==53&&(Kn=0,ke>2]|0,we=gnw(0),pe=w(gn/It),Pe=w(0),ke=w(0),n=w(0),T=P;do r=w(Tn(T+380+(q<<3)|0,Zi)),ie=w(Tn(T+364+(q<<3)|0,Zi)),ie=w(cc(r,w(Ur(ie,w(D[T+504>>2]))))),we?(r=w(ie*w(zr(T))),(r!=w(-0)?(kt=w(ie-w(qe*r)),Ul=w(kn(T,xn,kt,zt,En)),kt!=Ul):0)&&(Pe=w(Pe-w(Ul-ie)),n=w(n+r))):((vt?(tl=w(Br(T)),tl!=w(0)):0)?(kt=w(ie+w(pe*tl)),ql=w(kn(T,xn,kt,zt,En)),kt!=ql):0)&&(Pe=w(Pe-w(ql-ie)),ke=w(ke-tl)),T=t[T+960>>2]|0;while((T|0)!=0);if(n=w(_e+n),ie=w(gn+Pe),jl)n=w(0);else{qe=w(It+ke),we=t[Cu>>2]|0,vt=iew(0),qe=w(ie/qe),n=w(0);do{kt=w(Tn(P+380+(we<<3)|0,Zi)),Pe=w(Tn(P+364+(we<<3)|0,Zi)),Pe=w(cc(kt,w(Ur(Pe,w(D[P+504>>2]))))),vt?(kt=w(Pe*w(zr(P))),ie=w(-kt),kt!=w(-0)?(kt=w(pe*ie),ie=w(kn(P,xn,w(Pe+(Ln?ie:kt)),zt,En))):ie=Pe):(q?(zl=w(Br(P)),zl!=w(0)):0)?ie=w(kn(P,xn,w(Pe+w(qe*zl)),zt,En)):ie=Pe,n=w(n-w(ie-Pe)),ke=w(mt(P,xn,En)),r=w(mt(P,Vt,En)),ie=w(ie+ke),D[nu>>2]=ie,t[xu>>2]=1,Pe=w(D[P+396>>2]);e:do if(gt(Pe)|0){T=gt(xr)|0;do if(!T){if(Xi|(m0(P,Vt,xr)|0|Dr)||(T0(e,P)|0)!=4||(t[(hi(P,Vt)|0)+4>>2]|0)==3||(t[(Ai(P,Vt)|0)+4>>2]|0)==3)break;D[Fi>>2]=xr,t[go>>2]=1;break e}while(0);if(m0(P,Vt,xr)|0){T=t[P+992+(t[If>>2]<<2)>>2]|0,kt=w(r+w(Tn(T,xr))),D[Fi>>2]=kt,T=Pf&(t[T+4>>2]|0)==2,t[go>>2]=((gt(kt)|0|T)^1)&1;break}else{D[Fi>>2]=xr,t[go>>2]=T?0:2;break}}else kt=w(ie-ke),It=w(kt/Pe),kt=w(Pe*kt),t[go>>2]=1,D[Fi>>2]=w(r+(br?It:kt));while(0);Kt(P,xn,zt,En,xu,nu),Kt(P,Vt,xr,En,go,Fi);do if(m0(P,Vt,xr)|0?0:(T0(e,P)|0)==4){if((t[(hi(P,Vt)|0)+4>>2]|0)==3){T=0;break}T=(t[(Ai(P,Vt)|0)+4>>2]|0)!=3}else T=0;while(0);kt=w(D[nu>>2]),It=w(D[Fi>>2]),$l=t[xu>>2]|0,Qr=t[go>>2]|0,ht(P,br?kt:It,br?It:kt,Ei,br?$l:Qr,br?Qr:$l,En,Qi,y&(T^1),3488,k)|0,c[Tu>>0]=c[Tu>>0]|c[P+508>>0],P=t[P+960>>2]|0}while((P|0)!=0)}}else n=w(0);if(n=w(gn+n),Qr=n>0]=Qr|C[Tu>>0],Af&n>w(0)?(T=t[Cu>>2]|0,((t[e+364+(T<<3)+4>>2]|0)!=0?(Li=w(Tn(e+364+(T<<3)|0,Zi)),Li>=w(0)):0)?ie=w(Ur(w(0),w(Li-w(zt-n)))):ie=w(0)):ie=n,vt=Pn>>>0>>0,vt){we=t[eo>>2]|0,q=Pn,T=0;do P=t[we+(q<<2)>>2]|0,t[P+24>>2]|0||(T=((t[(hi(P,xn)|0)+4>>2]|0)==3&1)+T|0,T=T+((t[(Ai(P,xn)|0)+4>>2]|0)==3&1)|0),q=q+1|0;while((q|0)!=(Ht|0));T?(ke=w(0),r=w(0)):Kn=101}else Kn=101;e:do if((Kn|0)==101)switch(Kn=0,Ff|0){case 1:{T=0,ke=w(ie*w(.5)),r=w(0);break e}case 2:{T=0,ke=ie,r=w(0);break e}case 3:{if(l>>>0<=1){T=0,ke=w(0),r=w(0);break e}r=w((l+-1|0)>>>0),T=0,ke=w(0),r=w(w(Ur(ie,w(0)))/r);break e}case 5:{r=w(ie/w((l+1|0)>>>0)),T=0,ke=r;break e}case 4:{r=w(ie/w(l>>>0)),T=0,ke=w(r*w(.5));break e}default:{T=0,ke=w(0),r=w(0);break e}}while(0);if(n=w(Lf+ke),vt){Pe=w(ie/w(T|0)),q=t[eo>>2]|0,P=Pn,ie=w(0);do{T=t[q+(P<<2)>>2]|0;e:do if((t[T+36>>2]|0)!=1){switch(t[T+24>>2]|0){case 1:{if(X(T,xn)|0){if(!y)break e;kt=w(Y(T,xn,zt)),kt=w(kt+w(C0(e,xn))),kt=w(kt+w(Tr(T,xn,En))),D[T+400+(t[Qs>>2]<<2)>>2]=kt;break e}break}case 0:if(Qr=(t[(hi(T,xn)|0)+4>>2]|0)==3,kt=w(Pe+n),n=Qr?kt:n,y&&(Qr=T+400+(t[Qs>>2]<<2)|0,D[Qr>>2]=w(n+w(D[Qr>>2]))),Qr=(t[(Ai(T,xn)|0)+4>>2]|0)==3,kt=w(Pe+n),n=Qr?kt:n,Ro){kt=w(r+w(mt(T,xn,En))),ie=xr,n=w(n+w(kt+w(D[T+504>>2])));break e}else{n=w(n+w(r+w(ye(T,xn,En)))),ie=w(Ur(ie,w(ye(T,Vt,En))));break e}default:}y&&(kt=w(ke+w(C0(e,xn))),Qr=T+400+(t[Qs>>2]<<2)|0,D[Qr>>2]=w(kt+w(D[Qr>>2])))}while(0);P=P+1|0}while((P|0)!=(Ht|0))}else ie=w(0);if(r=w(Rf+n),Of?ke=w(w(kn(e,Vt,w(Ri+ie),cs,d))-Ri):ke=xr,Pe=w(w(kn(e,Vt,w(Ri+(Mf?xr:ie)),cs,d))-Ri),vt&y){P=Pn;do{q=t[(t[eo>>2]|0)+(P<<2)>>2]|0;do if((t[q+36>>2]|0)!=1){if((t[q+24>>2]|0)==1){if(X(q,Vt)|0){if(kt=w(Y(q,Vt,xr)),kt=w(kt+w(C0(e,Vt))),kt=w(kt+w(Tr(q,Vt,En))),T=t[Js>>2]|0,D[q+400+(T<<2)>>2]=kt,!(gt(kt)|0))break}else T=t[Js>>2]|0;kt=w(C0(e,Vt)),D[q+400+(T<<2)>>2]=w(kt+w(Tr(q,Vt,En)));break}T=T0(e,q)|0;do if((T|0)==4){if((t[(hi(q,Vt)|0)+4>>2]|0)==3){Kn=139;break}if((t[(Ai(q,Vt)|0)+4>>2]|0)==3){Kn=139;break}if(m0(q,Vt,xr)|0){n=le;break}$l=t[q+908+(t[Cu>>2]<<2)>>2]|0,t[Fi>>2]=$l,n=w(D[q+396>>2]),Qr=gt(n)|0,ie=(t[j>>2]=$l,w(D[j>>2])),Qr?n=Pe:(gn=w(mt(q,Vt,En)),kt=w(ie/n),n=w(n*ie),n=w(gn+(br?kt:n))),D[nu>>2]=n,D[Fi>>2]=w(w(mt(q,xn,En))+ie),t[go>>2]=1,t[xu>>2]=1,Kt(q,xn,zt,En,go,Fi),Kt(q,Vt,xr,En,xu,nu),n=w(D[Fi>>2]),gn=w(D[nu>>2]),kt=br?n:gn,n=br?gn:n,Qr=((gt(kt)|0)^1)&1,ht(q,kt,n,Ei,Qr,((gt(n)|0)^1)&1,En,Qi,1,3493,k)|0,n=le}else Kn=139;while(0);e:do if((Kn|0)==139){Kn=0,n=w(ke-w(ye(q,Vt,En)));do if((t[(hi(q,Vt)|0)+4>>2]|0)==3){if((t[(Ai(q,Vt)|0)+4>>2]|0)!=3)break;n=w(le+w(Ur(w(0),w(n*w(.5)))));break e}while(0);if((t[(Ai(q,Vt)|0)+4>>2]|0)==3){n=le;break}if((t[(hi(q,Vt)|0)+4>>2]|0)==3){n=w(le+w(Ur(w(0),n)));break}switch(T|0){case 1:{n=le;break e}case 2:{n=w(le+w(n*w(.5)));break e}default:{n=w(le+n);break e}}}while(0);kt=w(Di+n),Qr=q+400+(t[Js>>2]<<2)|0,D[Qr>>2]=w(kt+w(D[Qr>>2]))}while(0);P=P+1|0}while((P|0)!=(Ht|0))}if(Di=w(Di+Pe),ss=w(Ur(ss,r)),l=Ji+1|0,Ht>>>0>=Ni>>>0)break;n=zt,Pn=Ht,Ji=l}do if(y){if(T=l>>>0>1,T?0:!(he(e)|0))break;if(!(gt(xr)|0)){n=w(xr-Di);e:do switch(t[e+12>>2]|0){case 3:{le=w(le+n),pe=w(0);break}case 2:{le=w(le+w(n*w(.5))),pe=w(0);break}case 4:{xr>Di?pe=w(n/w(l>>>0)):pe=w(0);break}case 7:if(xr>Di){le=w(le+w(n/w(l<<1>>>0))),pe=w(n/w(l>>>0)),pe=T?pe:w(0);break e}else{le=w(le+w(n*w(.5))),pe=w(0);break e}case 6:{pe=w(n/w(Ji>>>0)),pe=xr>Di&T?pe:w(0);break}default:pe=w(0)}while(0);if(l|0)for(vt=1040+(Vt<<2)|0,Ln=976+(Vt<<2)|0,we=0,P=0;;){e:do if(P>>>0>>0)for(ie=w(0),Pe=w(0),n=w(0),q=P;;){T=t[(t[eo>>2]|0)+(q<<2)>>2]|0;do if((t[T+36>>2]|0)!=1?(t[T+24>>2]|0)==0:0){if((t[T+940>>2]|0)!=(we|0))break e;if(We(T,Vt)|0&&(kt=w(D[T+908+(t[Ln>>2]<<2)>>2]),n=w(Ur(n,w(kt+w(mt(T,Vt,En)))))),(T0(e,T)|0)!=5)break;Li=w(et(T)),Li=w(Li+w(Tr(T,0,En))),kt=w(D[T+912>>2]),kt=w(w(kt+w(mt(T,0,En)))-Li),Li=w(Ur(Pe,Li)),kt=w(Ur(ie,kt)),ie=kt,Pe=Li,n=w(Ur(n,w(Li+kt)))}while(0);if(T=q+1|0,T>>>0>>0)q=T;else{q=T;break}}else Pe=w(0),n=w(0),q=P;while(0);if(qe=w(pe+n),r=le,le=w(le+qe),P>>>0>>0){ke=w(r+Pe),T=P;do{P=t[(t[eo>>2]|0)+(T<<2)>>2]|0;e:do if((t[P+36>>2]|0)!=1?(t[P+24>>2]|0)==0:0)switch(T0(e,P)|0){case 1:{kt=w(r+w(Tr(P,Vt,En))),D[P+400+(t[vt>>2]<<2)>>2]=kt;break e}case 3:{kt=w(w(le-w(R0(P,Vt,En)))-w(D[P+908+(t[Ln>>2]<<2)>>2])),D[P+400+(t[vt>>2]<<2)>>2]=kt;break e}case 2:{kt=w(r+w(w(qe-w(D[P+908+(t[Ln>>2]<<2)>>2]))*w(.5))),D[P+400+(t[vt>>2]<<2)>>2]=kt;break e}case 4:{if(kt=w(r+w(Tr(P,Vt,En))),D[P+400+(t[vt>>2]<<2)>>2]=kt,m0(P,Vt,xr)|0||(br?(ie=w(D[P+908>>2]),n=w(ie+w(mt(P,xn,En))),Pe=qe):(Pe=w(D[P+912>>2]),Pe=w(Pe+w(mt(P,Vt,En))),n=qe,ie=w(D[P+908>>2])),Vr(n,ie)|0?Vr(Pe,w(D[P+912>>2]))|0:0))break e;ht(P,n,Pe,Ei,1,1,En,Qi,1,3501,k)|0;break e}case 5:{D[P+404>>2]=w(w(ke-w(et(P)))+w(Y(P,0,xr)));break e}default:break e}while(0);T=T+1|0}while((T|0)!=(q|0))}if(we=we+1|0,(we|0)==(l|0))break;P=q}}}while(0);if(D[e+908>>2]=w(kn(e,2,ls,d,d)),D[e+912>>2]=w(kn(e,0,Wl,_,d)),((ku|0)!=0?(Hl=t[e+32>>2]|0,bl=(ku|0)==2,!(bl&(Hl|0)!=2)):0)?bl&(Hl|0)==2&&(n=w(fs+zt),n=w(Ur(w(cc(n,w(Dt(e,xn,ss,Zi)))),fs)),Kn=198):(n=w(kn(e,xn,ss,Zi,d)),Kn=198),(Kn|0)==198&&(D[e+908+(t[976+(xn<<2)>>2]<<2)>>2]=n),((Au|0)!=0?(Vl=t[e+32>>2]|0,Yl=(Au|0)==2,!(Yl&(Vl|0)!=2)):0)?Yl&(Vl|0)==2&&(n=w(Ri+xr),n=w(Ur(w(cc(n,w(Dt(e,Vt,w(Ri+Di),cs)))),Ri)),Kn=204):(n=w(kn(e,Vt,w(Ri+Di),cs,d)),Kn=204),(Kn|0)==204&&(D[e+908+(t[976+(Vt<<2)>>2]<<2)>>2]=n),y){if((t[Gl>>2]|0)==2){P=976+(Vt<<2)|0,q=1040+(Vt<<2)|0,T=0;do we=e0(e,T)|0,t[we+24>>2]|0||($l=t[P>>2]|0,kt=w(D[e+908+($l<<2)>>2]),Qr=we+400+(t[q>>2]<<2)|0,kt=w(kt-w(D[Qr>>2])),D[Qr>>2]=w(kt-w(D[we+908+($l<<2)>>2]))),T=T+1|0;while((T|0)!=(Ni|0))}if(o|0){T=br?ku:s;do bt(e,o,En,T,Qi,Ei,k),o=t[o+960>>2]|0;while((o|0)!=0)}if(T=(xn|2|0)==3,P=(Vt|2|0)==3,T|P){o=0;do q=t[(t[eo>>2]|0)+(o<<2)>>2]|0,(t[q+36>>2]|0)!=1&&(T&&Zt(e,q,xn),P&&Zt(e,q,Vt)),o=o+1|0;while((o|0)!=(Ni|0))}}}while(0);h=Ou}function ki(e,n){e=e|0,n=w(n);var r=0;li(e,n>=w(0),3147),r=n==w(0),D[e+4>>2]=r?w(0):n}function Yr(e,n,r,o){e=e|0,n=w(n),r=w(r),o=o|0;var s=tt,l=tt,d=0,_=0,y=0;t[2278]=(t[2278]|0)+1,$r(e),m0(e,2,n)|0?(s=w(Tn(t[e+992>>2]|0,n)),y=1,s=w(s+w(mt(e,2,n)))):(s=w(Tn(e+380|0,n)),s>=w(0)?y=2:(y=((gt(n)|0)^1)&1,s=n)),m0(e,0,r)|0?(l=w(Tn(t[e+996>>2]|0,r)),_=1,l=w(l+w(mt(e,0,n)))):(l=w(Tn(e+388|0,r)),l>=w(0)?_=2:(_=((gt(r)|0)^1)&1,l=r)),d=e+976|0,(ht(e,s,l,o,y,_,n,r,1,3189,t[d>>2]|0)|0?(Yo(e,t[e+496>>2]|0,n,r,n),bi(e,w(D[(t[d>>2]|0)+4>>2]),w(0),w(0)),c[11696]|0):0)&&ff(e,7)}function $r(e){e=e|0;var n=0,r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;_=h,h=h+32|0,d=_+24|0,l=_+16|0,o=_+8|0,s=_,r=0;do n=e+380+(r<<3)|0,((t[e+380+(r<<3)+4>>2]|0)!=0?(y=n,k=t[y+4>>2]|0,T=o,t[T>>2]=t[y>>2],t[T+4>>2]=k,T=e+364+(r<<3)|0,k=t[T+4>>2]|0,y=s,t[y>>2]=t[T>>2],t[y+4>>2]=k,t[l>>2]=t[o>>2],t[l+4>>2]=t[o+4>>2],t[d>>2]=t[s>>2],t[d+4>>2]=t[s+4>>2],o0(l,d)|0):0)||(n=e+348+(r<<3)|0),t[e+992+(r<<2)>>2]=n,r=r+1|0;while((r|0)!=2);h=_}function m0(e,n,r){e=e|0,n=n|0,r=w(r);var o=0;switch(e=t[e+992+(t[976+(n<<2)>>2]<<2)>>2]|0,t[e+4>>2]|0){case 0:case 3:{e=0;break}case 1:{w(D[e>>2])>2])>2]|0){case 2:{n=w(w(w(D[e>>2])*n)/w(100));break}case 1:{n=w(D[e>>2]);break}default:n=w(J)}return w(n)}function Yo(e,n,r,o,s){e=e|0,n=n|0,r=w(r),o=w(o),s=w(s);var l=0,d=tt;n=t[e+944>>2]|0?n:1,l=N0(t[e+4>>2]|0,n)|0,n=Cl(l,n)|0,r=w(Wr(e,l,r)),o=w(Wr(e,n,o)),d=w(r+w(Tr(e,l,s))),D[e+400+(t[1040+(l<<2)>>2]<<2)>>2]=d,r=w(r+w(R0(e,l,s))),D[e+400+(t[1e3+(l<<2)>>2]<<2)>>2]=r,r=w(o+w(Tr(e,n,s))),D[e+400+(t[1040+(n<<2)>>2]<<2)>>2]=r,s=w(o+w(R0(e,n,s))),D[e+400+(t[1e3+(n<<2)>>2]<<2)>>2]=s}function bi(e,n,r,o){e=e|0,n=w(n),r=w(r),o=w(o);var s=0,l=0,d=tt,_=tt,y=0,k=0,T=tt,P=0,q=tt,we=tt,le=tt,ie=tt;if(n!=w(0)&&(s=e+400|0,ie=w(D[s>>2]),l=e+404|0,le=w(D[l>>2]),P=e+416|0,we=w(D[P>>2]),k=e+420|0,d=w(D[k>>2]),q=w(ie+r),T=w(le+o),o=w(q+we),_=w(T+d),y=(t[e+988>>2]|0)==1,D[s>>2]=w($0(ie,n,0,y)),D[l>>2]=w($0(le,n,0,y)),r=w(V4(w(we*n),w(1))),Vr(r,w(0))|0?l=0:l=(Vr(r,w(1))|0)^1,r=w(V4(w(d*n),w(1))),Vr(r,w(0))|0?s=0:s=(Vr(r,w(1))|0)^1,ie=w($0(o,n,y&l,y&(l^1))),D[P>>2]=w(ie-w($0(q,n,0,y))),ie=w($0(_,n,y&s,y&(s^1))),D[k>>2]=w(ie-w($0(T,n,0,y))),l=(t[e+952>>2]|0)-(t[e+948>>2]|0)>>2,l|0)){s=0;do bi(e0(e,s)|0,n,q,T),s=s+1|0;while((s|0)!=(l|0))}}function or(e,n,r,o,s){switch(e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,r|0){case 5:case 0:{e=q8(t[489]|0,o,s)|0;break}default:e=AL(o,s)|0}return e|0}function zs(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;s=h,h=h+16|0,l=s,t[l>>2]=o,Ku(e,0,n,r,l),h=s}function Ku(e,n,r,o,s){if(e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,e=e|0?e:956,sD[t[e+8>>2]&1](e,n,r,o,s)|0,(r|0)==5)_n();else return}function J0(e,n,r){e=e|0,n=n|0,r=r|0,c[e+n>>0]=r&1}function af(e,n){e=e|0,n=n|0;var r=0,o=0;t[e>>2]=0,t[e+4>>2]=0,t[e+8>>2]=0,r=n+4|0,o=(t[r>>2]|0)-(t[n>>2]|0)>>2,o|0&&(S0(e,o),El(e,t[n>>2]|0,t[r>>2]|0,o))}function S0(e,n){e=e|0,n=n|0;var r=0;if((Q0(e)|0)>>>0>>0&&$n(e),n>>>0>1073741823)_n();else{r=Tt(n<<2)|0,t[e+4>>2]=r,t[e>>2]=r,t[e+8>>2]=r+(n<<2);return}}function El(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,o=e+4|0,e=r-n|0,(e|0)>0&&(vn(t[o>>2]|0,n|0,e|0)|0,t[o>>2]=(t[o>>2]|0)+(e>>>2<<2))}function Q0(e){return e=e|0,1073741823}function Tr(e,n,r){return e=e|0,n=n|0,r=w(r),(Nr(n)|0?(t[e+96>>2]|0)!=0:0)?e=e+92|0:e=en(e+60|0,t[1040+(n<<2)>>2]|0,992)|0,w(uo(e,r))}function R0(e,n,r){return e=e|0,n=n|0,r=w(r),(Nr(n)|0?(t[e+104>>2]|0)!=0:0)?e=e+100|0:e=en(e+60|0,t[1e3+(n<<2)>>2]|0,992)|0,w(uo(e,r))}function Nr(e){return e=e|0,(e|1|0)==3|0}function uo(e,n){return e=e|0,n=w(n),(t[e+4>>2]|0)==3?n=w(0):n=w(Tn(e,n)),w(n)}function so(e,n){return e=e|0,n=n|0,e=t[e>>2]|0,((e|0)==0?(n|0)>1?n:1:e)|0}function N0(e,n){e=e|0,n=n|0;var r=0;e:do if((n|0)==2){switch(e|0){case 2:{e=3;break e}case 3:break;default:{r=4;break e}}e=2}else r=4;while(0);return e|0}function C0(e,n){e=e|0,n=n|0;var r=tt;return((Nr(n)|0?(t[e+312>>2]|0)!=0:0)?(r=w(D[e+308>>2]),r>=w(0)):0)||(r=w(Ur(w(D[(en(e+276|0,t[1040+(n<<2)>>2]|0,992)|0)>>2]),w(0)))),w(r)}function di(e,n){e=e|0,n=n|0;var r=tt;return((Nr(n)|0?(t[e+320>>2]|0)!=0:0)?(r=w(D[e+316>>2]),r>=w(0)):0)||(r=w(Ur(w(D[(en(e+276|0,t[1e3+(n<<2)>>2]|0,992)|0)>>2]),w(0)))),w(r)}function u0(e,n,r){e=e|0,n=n|0,r=w(r);var o=tt;return((Nr(n)|0?(t[e+240>>2]|0)!=0:0)?(o=w(Tn(e+236|0,r)),o>=w(0)):0)||(o=w(Ur(w(Tn(en(e+204|0,t[1040+(n<<2)>>2]|0,992)|0,r)),w(0)))),w(o)}function v0(e,n,r){e=e|0,n=n|0,r=w(r);var o=tt;return((Nr(n)|0?(t[e+248>>2]|0)!=0:0)?(o=w(Tn(e+244|0,r)),o>=w(0)):0)||(o=w(Ur(w(Tn(en(e+204|0,t[1e3+(n<<2)>>2]|0,992)|0,r)),w(0)))),w(o)}function To(e,n,r,o,s,l,d){e=e|0,n=w(n),r=w(r),o=o|0,s=s|0,l=w(l),d=w(d);var _=tt,y=tt,k=tt,T=tt,P=tt,q=tt,we=0,le=0,ie=0;ie=h,h=h+16|0,we=ie,le=e+964|0,i0(e,(t[le>>2]|0)!=0,3519),_=w(Fn(e,2,n)),y=w(Fn(e,0,n)),k=w(mt(e,2,n)),T=w(mt(e,0,n)),gt(n)|0?P=n:P=w(Ur(w(0),w(w(n-k)-_))),gt(r)|0?q=r:q=w(Ur(w(0),w(w(r-T)-y))),(o|0)==1&(s|0)==1?(D[e+908>>2]=w(kn(e,2,w(n-k),l,l)),n=w(kn(e,0,w(r-T),d,l))):(lD[t[le>>2]&1](we,e,P,o,q,s),P=w(_+w(D[we>>2])),q=w(n-k),D[e+908>>2]=w(kn(e,2,(o|2|0)==2?P:q,l,l)),q=w(y+w(D[we+4>>2])),n=w(r-T),n=w(kn(e,0,(s|2|0)==2?q:n,d,l))),D[e+912>>2]=n,h=ie}function pu(e,n,r,o,s,l,d){e=e|0,n=w(n),r=w(r),o=o|0,s=s|0,l=w(l),d=w(d);var _=tt,y=tt,k=tt,T=tt;k=w(Fn(e,2,l)),_=w(Fn(e,0,l)),T=w(mt(e,2,l)),y=w(mt(e,0,l)),n=w(n-T),D[e+908>>2]=w(kn(e,2,(o|2|0)==2?k:n,l,l)),r=w(r-y),D[e+912>>2]=w(kn(e,0,(s|2|0)==2?_:r,d,l))}function Sl(e,n,r,o,s,l,d){e=e|0,n=w(n),r=w(r),o=o|0,s=s|0,l=w(l),d=w(d);var _=0,y=tt,k=tt;return _=(o|0)==2,((n<=w(0)&_?0:!(r<=w(0)&(s|0)==2))?!((o|0)==1&(s|0)==1):0)?e=0:(y=w(mt(e,0,l)),k=w(mt(e,2,l)),_=n>2]=w(kn(e,2,_?w(0):n,l,l)),n=w(r-y),_=r>2]=w(kn(e,0,_?w(0):n,d,l)),e=1),e|0}function Cl(e,n){return e=e|0,n=n|0,qt(e)|0?e=N0(2,n)|0:e=0,e|0}function B0(e,n,r){return e=e|0,n=n|0,r=w(r),r=w(u0(e,n,r)),w(r+w(C0(e,n)))}function hu(e,n,r){return e=e|0,n=n|0,r=w(r),r=w(v0(e,n,r)),w(r+w(di(e,n)))}function Fn(e,n,r){e=e|0,n=n|0,r=w(r);var o=tt;return o=w(B0(e,n,r)),w(o+w(hu(e,n,r)))}function pi(e){return e=e|0,t[e+24>>2]|0?e=0:w(Br(e))!=w(0)?e=1:e=w(zr(e))!=w(0),e|0}function Br(e){e=e|0;var n=tt;if(t[e+944>>2]|0){if(n=w(D[e+44>>2]),gt(n)|0)return n=w(D[e+40>>2]),e=n>w(0)&((gt(n)|0)^1),w(e?n:w(0))}else n=w(0);return w(n)}function zr(e){e=e|0;var n=tt,r=0,o=tt;do if(t[e+944>>2]|0){if(n=w(D[e+48>>2]),gt(n)|0){if(r=c[(t[e+976>>2]|0)+2>>0]|0,r<<24>>24==0?(o=w(D[e+40>>2]),o>24?w(1):w(0)}}else n=w(0);while(0);return w(n)}function lo(e){e=e|0;var n=0,r=0;if(pa(e+400|0,0,540)|0,c[e+985>>0]=1,bo(e),r=fi(e)|0,r|0){n=e+948|0,e=0;do lo(t[(t[n>>2]|0)+(e<<2)>>2]|0),e=e+1|0;while((e|0)!=(r|0))}}function wr(e,n,r,o,s,l,d,_,y,k){e=e|0,n=n|0,r=w(r),o=o|0,s=w(s),l=w(l),d=w(d),_=_|0,y=y|0,k=k|0;var T=0,P=tt,q=0,we=0,le=tt,ie=tt,Pe=0,ke=tt,qe=0,pe=tt,_e=0,vt=0,Ln=0,Ht=0,It=0,gn=0,Pn=0,zt=0,Dr=0,Ki=0;Dr=h,h=h+16|0,Ln=Dr+12|0,Ht=Dr+8|0,It=Dr+4|0,gn=Dr,zt=N0(t[e+4>>2]|0,y)|0,_e=Nr(zt)|0,P=w(Tn(Ut(n)|0,_e?l:d)),vt=m0(n,2,l)|0,Pn=m0(n,0,d)|0;do if(gt(P)|0?0:!(gt(_e?r:s)|0)){if(T=n+504|0,!(gt(w(D[T>>2]))|0)&&(!(fn(t[n+976>>2]|0,0)|0)||(t[n+500>>2]|0)==(t[2278]|0)))break;D[T>>2]=w(Ur(P,w(Fn(n,zt,l))))}else q=7;while(0);do if((q|0)==7){if(qe=_e^1,!(qe|vt^1)){d=w(Tn(t[n+992>>2]|0,l)),D[n+504>>2]=w(Ur(d,w(Fn(n,2,l))));break}if(!(_e|Pn^1)){d=w(Tn(t[n+996>>2]|0,d)),D[n+504>>2]=w(Ur(d,w(Fn(n,0,l))));break}D[Ln>>2]=w(J),D[Ht>>2]=w(J),t[It>>2]=0,t[gn>>2]=0,ke=w(mt(n,2,l)),pe=w(mt(n,0,l)),vt?(le=w(ke+w(Tn(t[n+992>>2]|0,l))),D[Ln>>2]=le,t[It>>2]=1,we=1):(we=0,le=w(J)),Pn?(P=w(pe+w(Tn(t[n+996>>2]|0,d))),D[Ht>>2]=P,t[gn>>2]=1,T=1):(T=0,P=w(J)),q=t[e+32>>2]|0,_e&(q|0)==2?q=2:(gt(le)|0?!(gt(r)|0):0)&&(D[Ln>>2]=r,t[It>>2]=2,we=2,le=r),(((q|0)==2&qe?0:gt(P)|0)?!(gt(s)|0):0)&&(D[Ht>>2]=s,t[gn>>2]=2,T=2,P=s),ie=w(D[n+396>>2]),Pe=gt(ie)|0;do if(Pe)q=we;else{if((we|0)==1&qe){D[Ht>>2]=w(w(le-ke)/ie),t[gn>>2]=1,T=1,q=1;break}_e&(T|0)==1?(D[Ln>>2]=w(ie*w(P-pe)),t[It>>2]=1,T=1,q=1):q=we}while(0);Ki=gt(r)|0,we=(T0(e,n)|0)!=4,(_e|vt|((o|0)!=1|Ki)|(we|(q|0)==1)?0:(D[Ln>>2]=r,t[It>>2]=1,!Pe))&&(D[Ht>>2]=w(w(r-ke)/ie),t[gn>>2]=1,T=1),(Pn|qe|((_|0)!=1|(gt(s)|0))|(we|(T|0)==1)?0:(D[Ht>>2]=s,t[gn>>2]=1,!Pe))&&(D[Ln>>2]=w(ie*w(s-pe)),t[It>>2]=1),Kt(n,2,l,l,It,Ln),Kt(n,0,d,l,gn,Ht),r=w(D[Ln>>2]),s=w(D[Ht>>2]),ht(n,r,s,y,t[It>>2]|0,t[gn>>2]|0,l,d,0,3565,k)|0,d=w(D[n+908+(t[976+(zt<<2)>>2]<<2)>>2]),D[n+504>>2]=w(Ur(d,w(Fn(n,zt,l))))}while(0);t[n+500>>2]=t[2278],h=Dr}function kn(e,n,r,o,s){return e=e|0,n=n|0,r=w(r),o=w(o),s=w(s),o=w(Dt(e,n,r,o)),w(Ur(o,w(Fn(e,n,s))))}function T0(e,n){return e=e|0,n=n|0,n=n+20|0,n=t[((t[n>>2]|0)==0?e+16|0:n)>>2]|0,((n|0)==5?qt(t[e+4>>2]|0)|0:0)&&(n=1),n|0}function hi(e,n){return e=e|0,n=n|0,(Nr(n)|0?(t[e+96>>2]|0)!=0:0)?n=4:n=t[1040+(n<<2)>>2]|0,e+60+(n<<3)|0}function Ai(e,n){return e=e|0,n=n|0,(Nr(n)|0?(t[e+104>>2]|0)!=0:0)?n=5:n=t[1e3+(n<<2)>>2]|0,e+60+(n<<3)|0}function Kt(e,n,r,o,s,l){switch(e=e|0,n=n|0,r=w(r),o=w(o),s=s|0,l=l|0,r=w(Tn(e+380+(t[976+(n<<2)>>2]<<3)|0,r)),r=w(r+w(mt(e,n,o))),t[s>>2]|0){case 2:case 1:{s=gt(r)|0,o=w(D[l>>2]),D[l>>2]=s|o>2]=2,D[l>>2]=r);break}default:}}function X(e,n){return e=e|0,n=n|0,e=e+132|0,(Nr(n)|0?(t[(en(e,4,948)|0)+4>>2]|0)!=0:0)?e=1:e=(t[(en(e,t[1040+(n<<2)>>2]|0,948)|0)+4>>2]|0)!=0,e|0}function Y(e,n,r){e=e|0,n=n|0,r=w(r);var o=0,s=0;return e=e+132|0,(Nr(n)|0?(o=en(e,4,948)|0,(t[o+4>>2]|0)!=0):0)?s=4:(o=en(e,t[1040+(n<<2)>>2]|0,948)|0,t[o+4>>2]|0?s=4:r=w(0)),(s|0)==4&&(r=w(Tn(o,r))),w(r)}function ye(e,n,r){e=e|0,n=n|0,r=w(r);var o=tt;return o=w(D[e+908+(t[976+(n<<2)>>2]<<2)>>2]),o=w(o+w(Tr(e,n,r))),w(o+w(R0(e,n,r)))}function he(e){e=e|0;var n=0,r=0,o=0;e:do if(qt(t[e+4>>2]|0)|0)n=0;else if((t[e+16>>2]|0)!=5)if(r=fi(e)|0,!r)n=0;else for(n=0;;){if(o=e0(e,n)|0,(t[o+24>>2]|0)==0?(t[o+20>>2]|0)==5:0){n=1;break e}if(n=n+1|0,n>>>0>=r>>>0){n=0;break}}else n=1;while(0);return n|0}function We(e,n){e=e|0,n=n|0;var r=tt;return r=w(D[e+908+(t[976+(n<<2)>>2]<<2)>>2]),r>=w(0)&((gt(r)|0)^1)|0}function et(e){e=e|0;var n=tt,r=0,o=0,s=0,l=0,d=0,_=0,y=tt;if(r=t[e+968>>2]|0,r)y=w(D[e+908>>2]),n=w(D[e+912>>2]),n=w(rD[r&0](e,y,n)),i0(e,(gt(n)|0)^1,3573);else{l=fi(e)|0;do if(l|0){for(r=0,s=0;;){if(o=e0(e,s)|0,t[o+940>>2]|0){d=8;break}if((t[o+24>>2]|0)!=1)if(_=(T0(e,o)|0)==5,_){r=o;break}else r=(r|0)==0?o:r;if(s=s+1|0,s>>>0>=l>>>0){d=8;break}}if((d|0)==8&&!r)break;return n=w(et(r)),w(n+w(D[r+404>>2]))}while(0);n=w(D[e+912>>2])}return w(n)}function Dt(e,n,r,o){e=e|0,n=n|0,r=w(r),o=w(o);var s=tt,l=0;return qt(n)|0?(n=1,l=3):Nr(n)|0?(n=0,l=3):(o=w(J),s=w(J)),(l|0)==3&&(s=w(Tn(e+364+(n<<3)|0,o)),o=w(Tn(e+380+(n<<3)|0,o))),l=o=w(0)&((gt(o)|0)^1)),r=l?o:r,l=s>=w(0)&((gt(s)|0)^1)&r>2]|0,l)|0,le=Cl(Pe,l)|0,ie=Nr(Pe)|0,P=w(mt(n,2,r)),q=w(mt(n,0,r)),m0(n,2,r)|0?_=w(P+w(Tn(t[n+992>>2]|0,r))):(X(n,2)|0?_t(n,2)|0:0)?(_=w(D[e+908>>2]),y=w(C0(e,2)),y=w(_-w(y+w(di(e,2)))),_=w(Y(n,2,r)),_=w(kn(n,2,w(y-w(_+w(_r(n,2,r)))),r,r))):_=w(J),m0(n,0,s)|0?y=w(q+w(Tn(t[n+996>>2]|0,s))):(X(n,0)|0?_t(n,0)|0:0)?(y=w(D[e+912>>2]),qe=w(C0(e,0)),qe=w(y-w(qe+w(di(e,0)))),y=w(Y(n,0,s)),y=w(kn(n,0,w(qe-w(y+w(_r(n,0,s)))),s,r))):y=w(J),k=gt(_)|0,T=gt(y)|0;do if(k^T?(we=w(D[n+396>>2]),!(gt(we)|0)):0)if(k){_=w(P+w(w(y-q)*we));break}else{qe=w(q+w(w(_-P)/we)),y=T?qe:y;break}while(0);T=gt(_)|0,k=gt(y)|0,T|k&&(pe=(T^1)&1,o=r>w(0)&((o|0)!=0&T),_=ie?_:o?r:_,ht(n,_,y,l,ie?pe:o?2:pe,T&(k^1)&1,_,y,0,3623,d)|0,_=w(D[n+908>>2]),_=w(_+w(mt(n,2,r))),y=w(D[n+912>>2]),y=w(y+w(mt(n,0,r)))),ht(n,_,y,l,1,1,_,y,1,3635,d)|0,(_t(n,Pe)|0?!(X(n,Pe)|0):0)?(pe=t[976+(Pe<<2)>>2]|0,qe=w(D[e+908+(pe<<2)>>2]),qe=w(qe-w(D[n+908+(pe<<2)>>2])),qe=w(qe-w(di(e,Pe))),qe=w(qe-w(R0(n,Pe,r))),qe=w(qe-w(_r(n,Pe,ie?r:s))),D[n+400+(t[1040+(Pe<<2)>>2]<<2)>>2]=qe):ke=21;do if((ke|0)==21){if(X(n,Pe)|0?0:(t[e+8>>2]|0)==1){pe=t[976+(Pe<<2)>>2]|0,qe=w(D[e+908+(pe<<2)>>2]),qe=w(w(qe-w(D[n+908+(pe<<2)>>2]))*w(.5)),D[n+400+(t[1040+(Pe<<2)>>2]<<2)>>2]=qe;break}(X(n,Pe)|0?0:(t[e+8>>2]|0)==2)&&(pe=t[976+(Pe<<2)>>2]|0,qe=w(D[e+908+(pe<<2)>>2]),qe=w(qe-w(D[n+908+(pe<<2)>>2])),D[n+400+(t[1040+(Pe<<2)>>2]<<2)>>2]=qe)}while(0);(_t(n,le)|0?!(X(n,le)|0):0)?(pe=t[976+(le<<2)>>2]|0,qe=w(D[e+908+(pe<<2)>>2]),qe=w(qe-w(D[n+908+(pe<<2)>>2])),qe=w(qe-w(di(e,le))),qe=w(qe-w(R0(n,le,r))),qe=w(qe-w(_r(n,le,ie?s:r))),D[n+400+(t[1040+(le<<2)>>2]<<2)>>2]=qe):ke=30;do if((ke|0)==30?!(X(n,le)|0):0){if((T0(e,n)|0)==2){pe=t[976+(le<<2)>>2]|0,qe=w(D[e+908+(pe<<2)>>2]),qe=w(w(qe-w(D[n+908+(pe<<2)>>2]))*w(.5)),D[n+400+(t[1040+(le<<2)>>2]<<2)>>2]=qe;break}pe=(T0(e,n)|0)==3,pe^(t[e+28>>2]|0)==2&&(pe=t[976+(le<<2)>>2]|0,qe=w(D[e+908+(pe<<2)>>2]),qe=w(qe-w(D[n+908+(pe<<2)>>2])),D[n+400+(t[1040+(le<<2)>>2]<<2)>>2]=qe)}while(0)}function Zt(e,n,r){e=e|0,n=n|0,r=r|0;var o=tt,s=0;s=t[976+(r<<2)>>2]|0,o=w(D[n+908+(s<<2)>>2]),o=w(w(D[e+908+(s<<2)>>2])-o),o=w(o-w(D[n+400+(t[1040+(r<<2)>>2]<<2)>>2])),D[n+400+(t[1e3+(r<<2)>>2]<<2)>>2]=o}function qt(e){return e=e|0,(e|1|0)==1|0}function Ut(e){e=e|0;var n=tt;switch(t[e+56>>2]|0){case 0:case 3:{n=w(D[e+40>>2]),n>w(0)&((gt(n)|0)^1)?e=c[(t[e+976>>2]|0)+2>>0]|0?1056:992:e=1056;break}default:e=e+52|0}return e|0}function fn(e,n){return e=e|0,n=n|0,(c[e+n>>0]|0)!=0|0}function _t(e,n){return e=e|0,n=n|0,e=e+132|0,(Nr(n)|0?(t[(en(e,5,948)|0)+4>>2]|0)!=0:0)?e=1:e=(t[(en(e,t[1e3+(n<<2)>>2]|0,948)|0)+4>>2]|0)!=0,e|0}function _r(e,n,r){e=e|0,n=n|0,r=w(r);var o=0,s=0;return e=e+132|0,(Nr(n)|0?(o=en(e,5,948)|0,(t[o+4>>2]|0)!=0):0)?s=4:(o=en(e,t[1e3+(n<<2)>>2]|0,948)|0,t[o+4>>2]|0?s=4:r=w(0)),(s|0)==4&&(r=w(Tn(o,r))),w(r)}function Wr(e,n,r){return e=e|0,n=n|0,r=w(r),X(e,n)|0?r=w(Y(e,n,r)):r=w(-w(_r(e,n,r))),w(r)}function Ar(e){return e=w(e),D[j>>2]=e,t[j>>2]|0|0}function z(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>1073741823)_n();else{s=Tt(n<<2)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<2)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<2)}function dr(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>2)<<2)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function Or(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-4-n|0)>>>2)<<2)),e=t[e>>2]|0,e|0&&Ve(e)}function Qn(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0;if(d=e+4|0,_=t[d>>2]|0,s=_-o|0,l=s>>2,e=n+(l<<2)|0,e>>>0>>0){o=_;do t[o>>2]=t[e>>2],e=e+4|0,o=(t[d>>2]|0)+4|0,t[d>>2]=o;while(e>>>0>>0)}l|0&&Y1(_+(0-l<<2)|0,n|0,s|0)|0}function nn(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0;return _=n+4|0,y=t[_>>2]|0,s=t[e>>2]|0,d=r,l=d-s|0,o=y+(0-(l>>2)<<2)|0,t[_>>2]=o,(l|0)>0&&vn(o|0,s|0,l|0)|0,s=e+4|0,l=n+8|0,o=(t[s>>2]|0)-d|0,(o|0)>0&&(vn(t[l>>2]|0,r|0,o|0)|0,t[l>>2]=(t[l>>2]|0)+(o>>>2<<2)),d=t[e>>2]|0,t[e>>2]=t[_>>2],t[_>>2]=d,d=t[s>>2]|0,t[s>>2]=t[l>>2],t[l>>2]=d,d=e+8|0,r=n+12|0,e=t[d>>2]|0,t[d>>2]=t[r>>2],t[r>>2]=e,t[n>>2]=t[_>>2],y|0}function s0(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;if(d=t[n>>2]|0,l=t[r>>2]|0,(d|0)!=(l|0)){s=e+8|0,r=((l+-4-d|0)>>>2)+1|0,e=d,o=t[s>>2]|0;do t[o>>2]=t[e>>2],o=(t[s>>2]|0)+4|0,t[s>>2]=o,e=e+4|0;while((e|0)!=(l|0));t[n>>2]=d+(r<<2)}}function t0(){_l()}function g0(){var e=0;return e=Tt(4)|0,Kr(e),e|0}function Kr(e){e=e|0,t[e>>2]=a0()|0}function _0(e){e=e|0,e|0&&(Gi(e),Ve(e))}function Gi(e){e=e|0,V0(t[e>>2]|0)}function fo(e,n,r){e=e|0,n=n|0,r=r|0,J0(t[e>>2]|0,n,r)}function x0(e,n){e=e|0,n=w(n),ki(t[e>>2]|0,n)}function Xu(e,n){return e=e|0,n=n|0,fn(t[e>>2]|0,n)|0}function Z0(){var e=0;return e=Tt(8)|0,df(e,0),e|0}function df(e,n){e=e|0,n=n|0,n?n=I0(t[n>>2]|0)|0:n=qu()|0,t[e>>2]=n,t[e+4>>2]=0,Bs(n,e)}function Ba(e){e=e|0;var n=0;return n=Tt(8)|0,df(n,e),n|0}function Oc(e){e=e|0,e|0&&(mu(e),Ve(e))}function mu(e){e=e|0;var n=0;Wu(t[e>>2]|0),n=e+4|0,e=t[n>>2]|0,t[n>>2]=0,e|0&&(Ju(e),Ve(e))}function Ju(e){e=e|0,ei(e)}function ei(e){e=e|0,e=t[e>>2]|0,e|0&&ju(e|0)}function Yf(e){return e=e|0,Vu(e)|0}function pf(e){e=e|0;var n=0,r=0;r=e+4|0,n=t[r>>2]|0,t[r>>2]=0,n|0&&(Ju(n),Ve(n)),Do(t[e>>2]|0)}function ja(e,n){e=e|0,n=n|0,Gu(t[e>>2]|0,t[n>>2]|0)}function Ua(e,n){e=e|0,n=n|0,W(t[e>>2]|0,n)}function Ic(e,n,r){e=e|0,n=n|0,r=+r,yn(t[e>>2]|0,n,w(r))}function vu(e,n,r){e=e|0,n=n|0,r=+r,sn(t[e>>2]|0,n,w(r))}function $f(e,n){e=e|0,n=n|0,R(t[e>>2]|0,n)}function gu(e,n){e=e|0,n=n|0,H(t[e>>2]|0,n)}function co(e,n){e=e|0,n=n|0,ue(t[e>>2]|0,n)}function qa(e,n){e=e|0,n=n|0,M0(t[e>>2]|0,n)}function Ws(e,n){e=e|0,n=n|0,Fe(t[e>>2]|0,n)}function za(e,n){e=e|0,n=n|0,Lr(t[e>>2]|0,n)}function Pc(e,n,r){e=e|0,n=n|0,r=+r,rn(t[e>>2]|0,n,w(r))}function Qu(e,n,r){e=e|0,n=n|0,r=+r,Hn(t[e>>2]|0,n,w(r))}function Mc(e,n){e=e|0,n=n|0,Cr(t[e>>2]|0,n)}function Fc(e,n){e=e|0,n=n|0,K(t[e>>2]|0,n)}function Lc(e,n){e=e|0,n=n|0,je(t[e>>2]|0,n)}function Kf(e,n){e=e|0,n=+n,rt(t[e>>2]|0,w(n))}function Tl(e,n){e=e|0,n=+n,wt(t[e>>2]|0,w(n))}function xl(e,n){e=e|0,n=+n,lt(t[e>>2]|0,w(n))}function hf(e,n){e=e|0,n=+n,st(t[e>>2]|0,w(n))}function xo(e,n){e=e|0,n=+n,xt(t[e>>2]|0,w(n))}function mf(e,n){e=e|0,n=+n,Qt(t[e>>2]|0,w(n))}function Wa(e,n){e=e|0,n=+n,Cn(t[e>>2]|0,w(n))}function ti(e){e=e|0,bn(t[e>>2]|0)}function Hs(e,n){e=e|0,n=+n,h0(t[e>>2]|0,w(n))}function mi(e,n){e=e|0,n=+n,ci(t[e>>2]|0,w(n))}function vi(e){e=e|0,xi(t[e>>2]|0)}function Xf(e,n){e=e|0,n=+n,qr(t[e>>2]|0,w(n))}function Rc(e,n){e=e|0,n=+n,Eo(t[e>>2]|0,w(n))}function Jf(e,n){e=e|0,n=+n,wl(t[e>>2]|0,w(n))}function ao(e,n){e=e|0,n=+n,js(t[e>>2]|0,w(n))}function $o(e,n){e=e|0,n=+n,du(t[e>>2]|0,w(n))}function kl(e,n){e=e|0,n=+n,Yu(t[e>>2]|0,w(n))}function Nc(e,n){e=e|0,n=+n,oo(t[e>>2]|0,w(n))}function Al(e,n){e=e|0,n=+n,Hi(t[e>>2]|0,w(n))}function vf(e,n){e=e|0,n=+n,F0(t[e>>2]|0,w(n))}function Qf(e,n,r){e=e|0,n=n|0,r=+r,ft(t[e>>2]|0,n,w(r))}function k0(e,n,r){e=e|0,n=n|0,r=+r,He(t[e>>2]|0,n,w(r))}function v(e,n,r){e=e|0,n=n|0,r=+r,Qe(t[e>>2]|0,n,w(r))}function m(e){return e=e|0,ve(t[e>>2]|0)|0}function S(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0;o=h,h=h+16|0,s=o,ar(s,t[n>>2]|0,r),O(e,s),h=o}function O(e,n){e=e|0,n=n|0,M(e,t[n+4>>2]|0,+w(D[n>>2]))}function M(e,n,r){e=e|0,n=n|0,r=+r,t[e>>2]=n,L[e+8>>3]=r}function b(e){return e=e|0,U(t[e>>2]|0)|0}function ee(e){return e=e|0,fe(t[e>>2]|0)|0}function Ye(e){return e=e|0,de(t[e>>2]|0)|0}function Ze(e){return e=e|0,au(t[e>>2]|0)|0}function ut(e){return e=e|0,Ge(t[e>>2]|0)|0}function In(e){return e=e|0,F(t[e>>2]|0)|0}function A0(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0;o=h,h=h+16|0,s=o,d0(s,t[n>>2]|0,r),O(e,s),h=o}function jr(e){return e=e|0,xe(t[e>>2]|0)|0}function gi(e){return e=e|0,Xe(t[e>>2]|0)|0}function po(e,n){e=e|0,n=n|0;var r=0,o=0;r=h,h=h+16|0,o=r,Rt(o,t[n>>2]|0),O(e,o),h=r}function _i(e){return e=e|0,+ +w(yl(t[e>>2]|0))}function Re(e){return e=e|0,+ +w(cu(t[e>>2]|0))}function Ce(e,n){e=e|0,n=n|0;var r=0,o=0;r=h,h=h+16|0,o=r,p0(o,t[n>>2]|0),O(e,o),h=r}function ze(e,n){e=e|0,n=n|0;var r=0,o=0;r=h,h=h+16|0,o=r,E0(o,t[n>>2]|0),O(e,o),h=r}function Et(e,n){e=e|0,n=n|0;var r=0,o=0;r=h,h=h+16|0,o=r,So(o,t[n>>2]|0),O(e,o),h=r}function on(e,n){e=e|0,n=n|0;var r=0,o=0;r=h,h=h+16|0,o=r,Dl(o,t[n>>2]|0),O(e,o),h=r}function sr(e,n){e=e|0,n=n|0;var r=0,o=0;r=h,h=h+16|0,o=r,Us(o,t[n>>2]|0),O(e,o),h=r}function mn(e,n){e=e|0,n=n|0;var r=0,o=0;r=h,h=h+16|0,o=r,qs(o,t[n>>2]|0),O(e,o),h=r}function pr(e){return e=e|0,+ +w(Gr(t[e>>2]|0))}function Hr(e,n){return e=e|0,n=n|0,+ +w(St(t[e>>2]|0,n))}function Vn(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0;o=h,h=h+16|0,s=o,Ne(s,t[n>>2]|0,r),O(e,s),h=o}function ni(e,n,r){e=e|0,n=n|0,r=r|0,Ns(t[e>>2]|0,t[n>>2]|0,r)}function Zf(e,n){e=e|0,n=n|0,D0(t[e>>2]|0,t[n>>2]|0)}function Pm(e){return e=e|0,fi(t[e>>2]|0)|0}function Ha(e){return e=e|0,e=nr(t[e>>2]|0)|0,e?e=Yf(e)|0:e=0,e|0}function vd(e,n){return e=e|0,n=n|0,e=e0(t[e>>2]|0,n)|0,e?e=Yf(e)|0:e=0,e|0}function gd(e,n){e=e|0,n=n|0;var r=0,o=0;o=Tt(4)|0,ba(o,n),r=e+4|0,n=t[r>>2]|0,t[r>>2]=o,n|0&&(Ju(n),Ve(n)),bu(t[e>>2]|0,1)}function ba(e,n){e=e|0,n=n|0,Oo(e,n)}function Bc(e,n,r,o,s,l){e=e|0,n=n|0,r=w(r),o=o|0,s=w(s),l=l|0;var d=0,_=0;d=h,h=h+16|0,_=d,Mm(_,Vu(n)|0,+r,o,+s,l),D[e>>2]=w(+L[_>>3]),D[e+4>>2]=w(+L[_+8>>3]),h=d}function Mm(e,n,r,o,s,l){e=e|0,n=n|0,r=+r,o=o|0,s=+s,l=l|0;var d=0,_=0,y=0,k=0,T=0;d=h,h=h+32|0,T=d+8|0,k=d+20|0,y=d,_=d+16|0,L[T>>3]=r,t[k>>2]=o,L[y>>3]=s,t[_>>2]=l,_d(e,t[n+4>>2]|0,T,k,y,_),h=d}function _d(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0;var d=0,_=0;d=h,h=h+16|0,_=d,Zo(_),n=Oi(n)|0,Fm(e,n,+L[r>>3],t[o>>2]|0,+L[s>>3],t[l>>2]|0),eu(_),h=d}function Oi(e){return e=e|0,t[e>>2]|0}function Fm(e,n,r,o,s,l){e=e|0,n=n|0,r=+r,o=o|0,s=+s,l=l|0;var d=0;d=ko(yd()|0)|0,r=+Ko(r),o=jc(o)|0,s=+Ko(s),Ga(e,ro(0,d|0,n|0,+r,o|0,+s,jc(l)|0)|0)}function yd(){var e=0;return c[7608]|0||(Ed(9120),e=7608,t[e>>2]=1,t[e+4>>2]=0),9120}function ko(e){return e=e|0,t[e+8>>2]|0}function Ko(e){return e=+e,+ +Ol(e)}function jc(e){return e=e|0,Dd(e)|0}function Ga(e,n){e=e|0,n=n|0;var r=0,o=0,s=0;s=h,h=h+32|0,r=s,o=n,o&1?(Lm(r,0),c0(o|0,r|0)|0,Va(e,r),Wn(r)):(t[e>>2]=t[n>>2],t[e+4>>2]=t[n+4>>2],t[e+8>>2]=t[n+8>>2],t[e+12>>2]=t[n+12>>2]),h=s}function Lm(e,n){e=e|0,n=n|0,wd(e,n),t[e+8>>2]=0,c[e+24>>0]=0}function Va(e,n){e=e|0,n=n|0,n=n+8|0,t[e>>2]=t[n>>2],t[e+4>>2]=t[n+4>>2],t[e+8>>2]=t[n+8>>2],t[e+12>>2]=t[n+12>>2]}function Wn(e){e=e|0,c[e+24>>0]=0}function wd(e,n){e=e|0,n=n|0,t[e>>2]=n}function Dd(e){return e=e|0,e|0}function Ol(e){return e=+e,+e}function Ed(e){e=e|0,Ao(e,Rm()|0,4)}function Rm(){return 1064}function Ao(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r,t[e+8>>2]=hl(n|0,r+1|0)|0}function Oo(e,n){e=e|0,n=n|0,n=t[n>>2]|0,t[e>>2]=n,qi(n|0)}function Nm(e){e=e|0;var n=0,r=0;r=e+4|0,n=t[r>>2]|0,t[r>>2]=0,n|0&&(Ju(n),Ve(n)),bu(t[e>>2]|0,0)}function Uc(e){e=e|0,rr(t[e>>2]|0)}function Ya(e){return e=e|0,Go(t[e>>2]|0)|0}function Sd(e,n,r,o){e=e|0,n=+n,r=+r,o=o|0,Yr(t[e>>2]|0,w(n),w(r),o)}function Cd(e){return e=e|0,+ +w(ir(t[e>>2]|0))}function ho(e){return e=e|0,+ +w(Y0(t[e>>2]|0))}function bs(e){return e=e|0,+ +w(L0(t[e>>2]|0))}function $a(e){return e=e|0,+ +w(Co(t[e>>2]|0))}function Td(e){return e=e|0,+ +w($u(t[e>>2]|0))}function qc(e){return e=e|0,+ +w(Vo(t[e>>2]|0))}function xd(e,n){e=e|0,n=n|0,L[e>>3]=+w(ir(t[n>>2]|0)),L[e+8>>3]=+w(Y0(t[n>>2]|0)),L[e+16>>3]=+w(L0(t[n>>2]|0)),L[e+24>>3]=+w(Co(t[n>>2]|0)),L[e+32>>3]=+w($u(t[n>>2]|0)),L[e+40>>3]=+w(Vo(t[n>>2]|0))}function Ka(e,n){return e=e|0,n=n|0,+ +w(Rr(t[e>>2]|0,n))}function kd(e,n){return e=e|0,n=n|0,+ +w(Jn(t[e>>2]|0,n))}function Xa(e,n){return e=e|0,n=n|0,+ +w(ai(t[e>>2]|0,n))}function Ja(){return Rs()|0}function Gs(){Bm(),Vs(),Ad(),Od(),Qa(),jm()}function Bm(){hO(11713,4938,1)}function Vs(){FA(10448)}function Ad(){hA(10408)}function Od(){Bk(10324)}function Qa(){Gx(10096)}function jm(){Um(9132)}function Um(e){e=e|0;var n=0,r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0,le=0,ie=0,Pe=0,ke=0,qe=0,pe=0,_e=0,vt=0,Ln=0,Ht=0,It=0,gn=0,Pn=0,zt=0,Dr=0,Ki=0,Xi=0,Ji=0,Ro=0,kf=0,Af=0,Cu=0,Of=0,Js=0,Qs=0,If=0,Pf=0,Mf=0,Kn=0,Tu=0,Ff=0,us=0,Lf=0,Rf=0,Zs=0,el=0,ss=0,Fi=0,nu=0,go=0,xu=0,jl=0,Ul=0,tl=0,ql=0,zl=0,Li=0,Di=0,ku=0,xr=0,Wl=0,Qi=0,ls=0,Zi=0,fs=0,Hl=0,bl=0,cs=0,Ri=0,Au=0,Gl=0,Vl=0,Yl=0,En=0,br=0,Ei=0,eo=0,Ni=0,xn=0,Vt=0,Ou=0;n=h,h=h+672|0,r=n+656|0,Ou=n+648|0,Vt=n+640|0,xn=n+632|0,Ni=n+624|0,eo=n+616|0,Ei=n+608|0,br=n+600|0,En=n+592|0,Yl=n+584|0,Vl=n+576|0,Gl=n+568|0,Au=n+560|0,Ri=n+552|0,cs=n+544|0,bl=n+536|0,Hl=n+528|0,fs=n+520|0,Zi=n+512|0,ls=n+504|0,Qi=n+496|0,Wl=n+488|0,xr=n+480|0,ku=n+472|0,Di=n+464|0,Li=n+456|0,zl=n+448|0,ql=n+440|0,tl=n+432|0,Ul=n+424|0,jl=n+416|0,xu=n+408|0,go=n+400|0,nu=n+392|0,Fi=n+384|0,ss=n+376|0,el=n+368|0,Zs=n+360|0,Rf=n+352|0,Lf=n+344|0,us=n+336|0,Ff=n+328|0,Tu=n+320|0,Kn=n+312|0,Mf=n+304|0,Pf=n+296|0,If=n+288|0,Qs=n+280|0,Js=n+272|0,Of=n+264|0,Cu=n+256|0,Af=n+248|0,kf=n+240|0,Ro=n+232|0,Ji=n+224|0,Xi=n+216|0,Ki=n+208|0,Dr=n+200|0,zt=n+192|0,Pn=n+184|0,gn=n+176|0,It=n+168|0,Ht=n+160|0,Ln=n+152|0,vt=n+144|0,_e=n+136|0,pe=n+128|0,qe=n+120|0,ke=n+112|0,Pe=n+104|0,ie=n+96|0,le=n+88|0,we=n+80|0,q=n+72|0,P=n+64|0,T=n+56|0,k=n+48|0,y=n+40|0,_=n+32|0,d=n+24|0,l=n+16|0,s=n+8|0,o=n,qm(e,3646),Id(e,3651,2)|0,Pd(e,3665,2)|0,zm(e,3682,18)|0,t[Ou>>2]=19,t[Ou+4>>2]=0,t[r>>2]=t[Ou>>2],t[r+4>>2]=t[Ou+4>>2],gf(e,3690,r)|0,t[Vt>>2]=1,t[Vt+4>>2]=0,t[r>>2]=t[Vt>>2],t[r+4>>2]=t[Vt+4>>2],Md(e,3696,r)|0,t[xn>>2]=2,t[xn+4>>2]=0,t[r>>2]=t[xn>>2],t[r+4>>2]=t[xn+4>>2],Xr(e,3706,r)|0,t[Ni>>2]=1,t[Ni+4>>2]=0,t[r>>2]=t[Ni>>2],t[r+4>>2]=t[Ni+4>>2],yi(e,3722,r)|0,t[eo>>2]=2,t[eo+4>>2]=0,t[r>>2]=t[eo>>2],t[r+4>>2]=t[eo+4>>2],yi(e,3734,r)|0,t[Ei>>2]=3,t[Ei+4>>2]=0,t[r>>2]=t[Ei>>2],t[r+4>>2]=t[Ei+4>>2],Xr(e,3753,r)|0,t[br>>2]=4,t[br+4>>2]=0,t[r>>2]=t[br>>2],t[r+4>>2]=t[br+4>>2],Xr(e,3769,r)|0,t[En>>2]=5,t[En+4>>2]=0,t[r>>2]=t[En>>2],t[r+4>>2]=t[En+4>>2],Xr(e,3783,r)|0,t[Yl>>2]=6,t[Yl+4>>2]=0,t[r>>2]=t[Yl>>2],t[r+4>>2]=t[Yl+4>>2],Xr(e,3796,r)|0,t[Vl>>2]=7,t[Vl+4>>2]=0,t[r>>2]=t[Vl>>2],t[r+4>>2]=t[Vl+4>>2],Xr(e,3813,r)|0,t[Gl>>2]=8,t[Gl+4>>2]=0,t[r>>2]=t[Gl>>2],t[r+4>>2]=t[Gl+4>>2],Xr(e,3825,r)|0,t[Au>>2]=3,t[Au+4>>2]=0,t[r>>2]=t[Au>>2],t[r+4>>2]=t[Au+4>>2],yi(e,3843,r)|0,t[Ri>>2]=4,t[Ri+4>>2]=0,t[r>>2]=t[Ri>>2],t[r+4>>2]=t[Ri+4>>2],yi(e,3853,r)|0,t[cs>>2]=9,t[cs+4>>2]=0,t[r>>2]=t[cs>>2],t[r+4>>2]=t[cs+4>>2],Xr(e,3870,r)|0,t[bl>>2]=10,t[bl+4>>2]=0,t[r>>2]=t[bl>>2],t[r+4>>2]=t[bl+4>>2],Xr(e,3884,r)|0,t[Hl>>2]=11,t[Hl+4>>2]=0,t[r>>2]=t[Hl>>2],t[r+4>>2]=t[Hl+4>>2],Xr(e,3896,r)|0,t[fs>>2]=1,t[fs+4>>2]=0,t[r>>2]=t[fs>>2],t[r+4>>2]=t[fs+4>>2],j0(e,3907,r)|0,t[Zi>>2]=2,t[Zi+4>>2]=0,t[r>>2]=t[Zi>>2],t[r+4>>2]=t[Zi+4>>2],j0(e,3915,r)|0,t[ls>>2]=3,t[ls+4>>2]=0,t[r>>2]=t[ls>>2],t[r+4>>2]=t[ls+4>>2],j0(e,3928,r)|0,t[Qi>>2]=4,t[Qi+4>>2]=0,t[r>>2]=t[Qi>>2],t[r+4>>2]=t[Qi+4>>2],j0(e,3948,r)|0,t[Wl>>2]=5,t[Wl+4>>2]=0,t[r>>2]=t[Wl>>2],t[r+4>>2]=t[Wl+4>>2],j0(e,3960,r)|0,t[xr>>2]=6,t[xr+4>>2]=0,t[r>>2]=t[xr>>2],t[r+4>>2]=t[xr+4>>2],j0(e,3974,r)|0,t[ku>>2]=7,t[ku+4>>2]=0,t[r>>2]=t[ku>>2],t[r+4>>2]=t[ku+4>>2],j0(e,3983,r)|0,t[Di>>2]=20,t[Di+4>>2]=0,t[r>>2]=t[Di>>2],t[r+4>>2]=t[Di+4>>2],gf(e,3999,r)|0,t[Li>>2]=8,t[Li+4>>2]=0,t[r>>2]=t[Li>>2],t[r+4>>2]=t[Li+4>>2],j0(e,4012,r)|0,t[zl>>2]=9,t[zl+4>>2]=0,t[r>>2]=t[zl>>2],t[r+4>>2]=t[zl+4>>2],j0(e,4022,r)|0,t[ql>>2]=21,t[ql+4>>2]=0,t[r>>2]=t[ql>>2],t[r+4>>2]=t[ql+4>>2],gf(e,4039,r)|0,t[tl>>2]=10,t[tl+4>>2]=0,t[r>>2]=t[tl>>2],t[r+4>>2]=t[tl+4>>2],j0(e,4053,r)|0,t[Ul>>2]=11,t[Ul+4>>2]=0,t[r>>2]=t[Ul>>2],t[r+4>>2]=t[Ul+4>>2],j0(e,4065,r)|0,t[jl>>2]=12,t[jl+4>>2]=0,t[r>>2]=t[jl>>2],t[r+4>>2]=t[jl+4>>2],j0(e,4084,r)|0,t[xu>>2]=13,t[xu+4>>2]=0,t[r>>2]=t[xu>>2],t[r+4>>2]=t[xu+4>>2],j0(e,4097,r)|0,t[go>>2]=14,t[go+4>>2]=0,t[r>>2]=t[go>>2],t[r+4>>2]=t[go+4>>2],j0(e,4117,r)|0,t[nu>>2]=15,t[nu+4>>2]=0,t[r>>2]=t[nu>>2],t[r+4>>2]=t[nu+4>>2],j0(e,4129,r)|0,t[Fi>>2]=16,t[Fi+4>>2]=0,t[r>>2]=t[Fi>>2],t[r+4>>2]=t[Fi+4>>2],j0(e,4148,r)|0,t[ss>>2]=17,t[ss+4>>2]=0,t[r>>2]=t[ss>>2],t[r+4>>2]=t[ss+4>>2],j0(e,4161,r)|0,t[el>>2]=18,t[el+4>>2]=0,t[r>>2]=t[el>>2],t[r+4>>2]=t[el+4>>2],j0(e,4181,r)|0,t[Zs>>2]=5,t[Zs+4>>2]=0,t[r>>2]=t[Zs>>2],t[r+4>>2]=t[Zs+4>>2],yi(e,4196,r)|0,t[Rf>>2]=6,t[Rf+4>>2]=0,t[r>>2]=t[Rf>>2],t[r+4>>2]=t[Rf+4>>2],yi(e,4206,r)|0,t[Lf>>2]=7,t[Lf+4>>2]=0,t[r>>2]=t[Lf>>2],t[r+4>>2]=t[Lf+4>>2],yi(e,4217,r)|0,t[us>>2]=3,t[us+4>>2]=0,t[r>>2]=t[us>>2],t[r+4>>2]=t[us+4>>2],Zu(e,4235,r)|0,t[Ff>>2]=1,t[Ff+4>>2]=0,t[r>>2]=t[Ff>>2],t[r+4>>2]=t[Ff+4>>2],_f(e,4251,r)|0,t[Tu>>2]=4,t[Tu+4>>2]=0,t[r>>2]=t[Tu>>2],t[r+4>>2]=t[Tu+4>>2],Zu(e,4263,r)|0,t[Kn>>2]=5,t[Kn+4>>2]=0,t[r>>2]=t[Kn>>2],t[r+4>>2]=t[Kn+4>>2],Zu(e,4279,r)|0,t[Mf>>2]=6,t[Mf+4>>2]=0,t[r>>2]=t[Mf>>2],t[r+4>>2]=t[Mf+4>>2],Zu(e,4293,r)|0,t[Pf>>2]=7,t[Pf+4>>2]=0,t[r>>2]=t[Pf>>2],t[r+4>>2]=t[Pf+4>>2],Zu(e,4306,r)|0,t[If>>2]=8,t[If+4>>2]=0,t[r>>2]=t[If>>2],t[r+4>>2]=t[If+4>>2],Zu(e,4323,r)|0,t[Qs>>2]=9,t[Qs+4>>2]=0,t[r>>2]=t[Qs>>2],t[r+4>>2]=t[Qs+4>>2],Zu(e,4335,r)|0,t[Js>>2]=2,t[Js+4>>2]=0,t[r>>2]=t[Js>>2],t[r+4>>2]=t[Js+4>>2],_f(e,4353,r)|0,t[Of>>2]=12,t[Of+4>>2]=0,t[r>>2]=t[Of>>2],t[r+4>>2]=t[Of+4>>2],Io(e,4363,r)|0,t[Cu>>2]=1,t[Cu+4>>2]=0,t[r>>2]=t[Cu>>2],t[r+4>>2]=t[Cu+4>>2],_u(e,4376,r)|0,t[Af>>2]=2,t[Af+4>>2]=0,t[r>>2]=t[Af>>2],t[r+4>>2]=t[Af+4>>2],_u(e,4388,r)|0,t[kf>>2]=13,t[kf+4>>2]=0,t[r>>2]=t[kf>>2],t[r+4>>2]=t[kf+4>>2],Io(e,4402,r)|0,t[Ro>>2]=14,t[Ro+4>>2]=0,t[r>>2]=t[Ro>>2],t[r+4>>2]=t[Ro+4>>2],Io(e,4411,r)|0,t[Ji>>2]=15,t[Ji+4>>2]=0,t[r>>2]=t[Ji>>2],t[r+4>>2]=t[Ji+4>>2],Io(e,4421,r)|0,t[Xi>>2]=16,t[Xi+4>>2]=0,t[r>>2]=t[Xi>>2],t[r+4>>2]=t[Xi+4>>2],Io(e,4433,r)|0,t[Ki>>2]=17,t[Ki+4>>2]=0,t[r>>2]=t[Ki>>2],t[r+4>>2]=t[Ki+4>>2],Io(e,4446,r)|0,t[Dr>>2]=18,t[Dr+4>>2]=0,t[r>>2]=t[Dr>>2],t[r+4>>2]=t[Dr+4>>2],Io(e,4458,r)|0,t[zt>>2]=3,t[zt+4>>2]=0,t[r>>2]=t[zt>>2],t[r+4>>2]=t[zt+4>>2],_u(e,4471,r)|0,t[Pn>>2]=1,t[Pn+4>>2]=0,t[r>>2]=t[Pn>>2],t[r+4>>2]=t[Pn+4>>2],ec(e,4486,r)|0,t[gn>>2]=10,t[gn+4>>2]=0,t[r>>2]=t[gn>>2],t[r+4>>2]=t[gn+4>>2],Zu(e,4496,r)|0,t[It>>2]=11,t[It+4>>2]=0,t[r>>2]=t[It>>2],t[r+4>>2]=t[It+4>>2],Zu(e,4508,r)|0,t[Ht>>2]=3,t[Ht+4>>2]=0,t[r>>2]=t[Ht>>2],t[r+4>>2]=t[Ht+4>>2],_f(e,4519,r)|0,t[Ln>>2]=4,t[Ln+4>>2]=0,t[r>>2]=t[Ln>>2],t[r+4>>2]=t[Ln+4>>2],Wm(e,4530,r)|0,t[vt>>2]=19,t[vt+4>>2]=0,t[r>>2]=t[vt>>2],t[r+4>>2]=t[vt+4>>2],Fd(e,4542,r)|0,t[_e>>2]=12,t[_e+4>>2]=0,t[r>>2]=t[_e>>2],t[r+4>>2]=t[_e+4>>2],yf(e,4554,r)|0,t[pe>>2]=13,t[pe+4>>2]=0,t[r>>2]=t[pe>>2],t[r+4>>2]=t[pe+4>>2],tc(e,4568,r)|0,t[qe>>2]=2,t[qe+4>>2]=0,t[r>>2]=t[qe>>2],t[r+4>>2]=t[qe+4>>2],Hm(e,4578,r)|0,t[ke>>2]=20,t[ke+4>>2]=0,t[r>>2]=t[ke>>2],t[r+4>>2]=t[ke+4>>2],Ld(e,4587,r)|0,t[Pe>>2]=22,t[Pe+4>>2]=0,t[r>>2]=t[Pe>>2],t[r+4>>2]=t[Pe+4>>2],gf(e,4602,r)|0,t[ie>>2]=23,t[ie+4>>2]=0,t[r>>2]=t[ie>>2],t[r+4>>2]=t[ie+4>>2],gf(e,4619,r)|0,t[le>>2]=14,t[le+4>>2]=0,t[r>>2]=t[le>>2],t[r+4>>2]=t[le+4>>2],Rd(e,4629,r)|0,t[we>>2]=1,t[we+4>>2]=0,t[r>>2]=t[we>>2],t[r+4>>2]=t[we+4>>2],zc(e,4637,r)|0,t[q>>2]=4,t[q+4>>2]=0,t[r>>2]=t[q>>2],t[r+4>>2]=t[q+4>>2],_u(e,4653,r)|0,t[P>>2]=5,t[P+4>>2]=0,t[r>>2]=t[P>>2],t[r+4>>2]=t[P+4>>2],_u(e,4669,r)|0,t[T>>2]=6,t[T+4>>2]=0,t[r>>2]=t[T>>2],t[r+4>>2]=t[T+4>>2],_u(e,4686,r)|0,t[k>>2]=7,t[k+4>>2]=0,t[r>>2]=t[k>>2],t[r+4>>2]=t[k+4>>2],_u(e,4701,r)|0,t[y>>2]=8,t[y+4>>2]=0,t[r>>2]=t[y>>2],t[r+4>>2]=t[y+4>>2],_u(e,4719,r)|0,t[_>>2]=9,t[_+4>>2]=0,t[r>>2]=t[_>>2],t[r+4>>2]=t[_+4>>2],_u(e,4736,r)|0,t[d>>2]=21,t[d+4>>2]=0,t[r>>2]=t[d>>2],t[r+4>>2]=t[d+4>>2],Nd(e,4754,r)|0,t[l>>2]=2,t[l+4>>2]=0,t[r>>2]=t[l>>2],t[r+4>>2]=t[l+4>>2],ec(e,4772,r)|0,t[s>>2]=3,t[s+4>>2]=0,t[r>>2]=t[s>>2],t[r+4>>2]=t[s+4>>2],ec(e,4790,r)|0,t[o>>2]=4,t[o+4>>2]=0,t[r>>2]=t[o>>2],t[r+4>>2]=t[o+4>>2],ec(e,4808,r)|0,h=n}function qm(e,n){e=e|0,n=n|0;var r=0;r=Nx()|0,t[e>>2]=r,Bx(r,n),Cf(t[e>>2]|0)}function Id(e,n,r){return e=e|0,n=n|0,r=r|0,Ex(e,Zn(n)|0,r,0),e|0}function Pd(e,n,r){return e=e|0,n=n|0,r=r|0,ux(e,Zn(n)|0,r,0),e|0}function zm(e,n,r){return e=e|0,n=n|0,r=r|0,V9(e,Zn(n)|0,r,0),e|0}function gf(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],I9(e,n,s),h=o,e|0}function Md(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],vo(e,n,s),h=o,e|0}function Xr(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],a(e,n,s),h=o,e|0}function yi(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],n4(e,n,s),h=o,e|0}function j0(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],b_(e,n,s),h=o,e|0}function Zu(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],L_(e,n,s),h=o,e|0}function _f(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Hp(e,n,s),h=o,e|0}function Io(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],e_(e,n,s),h=o,e|0}function _u(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Ip(e,n,s),h=o,e|0}function ec(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Ng(e,n,s),h=o,e|0}function Wm(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],l0(e,n,s),h=o,e|0}function Fd(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],hg(e,n,s),h=o,e|0}function yf(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],sg(e,n,s),h=o,e|0}function tc(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Kv(e,n,s),h=o,e|0}function Hm(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],y1(e,n,s),h=o,e|0}function Ld(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],wv(e,n,s),h=o,e|0}function Rd(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],fv(e,n,s),h=o,e|0}function zc(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Gd(e,n,s),h=o,e|0}function Nd(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Wc(e,n,s),h=o,e|0}function Wc(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Hc(e,r,s,1),h=o}function Zn(e){return e=e|0,e|0}function Hc(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=Za()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=Bd(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,bc(l,o)|0,o),h=s}function Za(){var e=0,n=0;if(c[7616]|0||(yu(9136),Bt(24,9136,Q|0)|0,n=7616,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9136)|0)){e=9136,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));yu(9136)}return 9136}function Bd(e){return e=e|0,0}function bc(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=Za()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],n1(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(jd(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function ur(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0;var d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0;d=h,h=h+32|0,q=d+24|0,P=d+20|0,y=d+16|0,T=d+12|0,k=d+8|0,_=d+4|0,we=d,t[P>>2]=n,t[y>>2]=r,t[T>>2]=o,t[k>>2]=s,t[_>>2]=l,l=e+28|0,t[we>>2]=t[l>>2],t[q>>2]=t[we>>2],e1(e+24|0,q,P,T,k,y,_)|0,t[l>>2]=t[t[l>>2]>>2],h=d}function e1(e,n,r,o,s,l,d){return e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,d=d|0,e=bm(n)|0,n=Tt(24)|0,t1(n+4|0,t[r>>2]|0,t[o>>2]|0,t[s>>2]|0,t[l>>2]|0,t[d>>2]|0),t[n>>2]=t[e>>2],t[e>>2]=n,n|0}function bm(e){return e=e|0,t[e>>2]|0}function t1(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,t[e>>2]=n,t[e+4>>2]=r,t[e+8>>2]=o,t[e+12>>2]=s,t[e+16>>2]=l}function Lt(e,n){return e=e|0,n=n|0,n|e|0}function n1(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function jd(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=Gm(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,Ud(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],n1(l,o,r),t[y>>2]=(t[y>>2]|0)+12,Vm(e,_),Ym(_),h=k;return}}function Gm(e){return e=e|0,357913941}function Ud(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function Vm(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function Ym(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function yu(e){e=e|0,Gc(e)}function r1(e){e=e|0,i1(e+24|0)}function Dn(e){return e=e|0,t[e>>2]|0}function i1(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function Gc(e){e=e|0;var n=0;n=An()|0,Nn(e,2,3,n,cn()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function An(){return 9228}function cn(){return 1140}function Vc(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0;return r=h,h=h+16|0,o=r+8|0,s=r,l=Il(e)|0,e=t[l+4>>2]|0,t[s>>2]=t[l>>2],t[s+4>>2]=e,t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],n=$m(n,o)|0,h=r,n|0}function Nn(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,t[e>>2]=n,t[e+4>>2]=r,t[e+8>>2]=o,t[e+12>>2]=s,t[e+16>>2]=l}function Il(e){return e=e|0,(t[(Za()|0)+24>>2]|0)+(e*12|0)|0}function $m(e,n){e=e|0,n=n|0;var r=0,o=0,s=0;return s=h,h=h+48|0,o=s,r=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(r=t[(t[e>>2]|0)+r>>2]|0),Bl[r&31](o,e),o=o1(o)|0,h=s,o|0}function o1(e){e=e|0;var n=0,r=0,o=0,s=0;return s=h,h=h+32|0,n=s+12|0,r=s,o=U0(u1()|0)|0,o?(s1(n,o),l1(r,n),qd(e,r),e=f1(n)|0):e=zd(e)|0,h=s,e|0}function u1(){var e=0;return c[7632]|0||(nc(9184),Bt(25,9184,Q|0)|0,e=7632,t[e>>2]=1,t[e+4>>2]=0),9184}function U0(e){return e=e|0,t[e+36>>2]|0}function s1(e,n){e=e|0,n=n|0,t[e>>2]=n,t[e+4>>2]=e,t[e+8>>2]=0}function l1(e,n){e=e|0,n=n|0,t[e>>2]=t[n>>2],t[e+4>>2]=t[n+4>>2],t[e+8>>2]=0}function qd(e,n){e=e|0,n=n|0,Ii(n,e,e+8|0,e+16|0,e+24|0,e+32|0,e+40|0)|0}function f1(e){return e=e|0,t[(t[e+4>>2]|0)+8>>2]|0}function zd(e){e=e|0;var n=0,r=0,o=0,s=0,l=0,d=0,_=0,y=0;y=h,h=h+16|0,r=y+4|0,o=y,s=Qo(8)|0,l=s,d=Tt(48)|0,_=d,n=_+48|0;do t[_>>2]=t[e>>2],_=_+4|0,e=e+4|0;while((_|0)<(n|0));return n=l+4|0,t[n>>2]=d,_=Tt(8)|0,d=t[n>>2]|0,t[o>>2]=0,t[r>>2]=t[o>>2],Wd(_,d,r),t[s>>2]=_,h=y,l|0}function Wd(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,r=Tt(16)|0,t[r+4>>2]=0,t[r+8>>2]=0,t[r>>2]=1092,t[r+12>>2]=n,t[e+4>>2]=r}function Km(e){e=e|0,da(e),Ve(e)}function Xm(e){e=e|0,e=t[e+12>>2]|0,e|0&&Ve(e)}function es(e){e=e|0,Ve(e)}function Ii(e,n,r,o,s,l,d){return e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,d=d|0,l=c1(t[e>>2]|0,n,r,o,s,l,d)|0,d=e+4|0,t[(t[d>>2]|0)+8>>2]=l,t[(t[d>>2]|0)+8>>2]|0}function c1(e,n,r,o,s,l,d){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,d=d|0;var _=0,y=0;return _=h,h=h+16|0,y=_,Zo(y),e=Oi(e)|0,d=Jm(e,+L[n>>3],+L[r>>3],+L[o>>3],+L[s>>3],+L[l>>3],+L[d>>3])|0,eu(y),h=_,d|0}function Jm(e,n,r,o,s,l,d){e=e|0,n=+n,r=+r,o=+o,s=+s,l=+l,d=+d;var _=0;return _=ko(a1()|0)|0,n=+Ko(n),r=+Ko(r),o=+Ko(o),s=+Ko(s),l=+Ko(l),xs(0,_|0,e|0,+n,+r,+o,+s,+l,+ +Ko(d))|0}function a1(){var e=0;return c[7624]|0||(Qm(9172),e=7624,t[e>>2]=1,t[e+4>>2]=0),9172}function Qm(e){e=e|0,Ao(e,Zm()|0,6)}function Zm(){return 1112}function nc(e){e=e|0,Ys(e)}function Hd(e){e=e|0,d1(e+24|0),bd(e+16|0)}function d1(e){e=e|0,tv(e)}function bd(e){e=e|0,ev(e)}function ev(e){e=e|0;var n=0,r=0;if(n=t[e>>2]|0,n|0)do r=n,n=t[n>>2]|0,Ve(r);while((n|0)!=0);t[e>>2]=0}function tv(e){e=e|0;var n=0,r=0;if(n=t[e>>2]|0,n|0)do r=n,n=t[n>>2]|0,Ve(r);while((n|0)!=0);t[e>>2]=0}function Ys(e){e=e|0;var n=0;t[e+16>>2]=0,t[e+20>>2]=0,n=e+24|0,t[n>>2]=0,t[e+28>>2]=n,t[e+36>>2]=0,c[e+40>>0]=0,c[e+41>>0]=0}function Gd(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Vd(e,r,s,0),h=o}function Vd(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=p1()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=h1(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,Yd(l,o)|0,o),h=s}function p1(){var e=0,n=0;if(c[7640]|0||(Xo(9232),Bt(26,9232,Q|0)|0,n=7640,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9232)|0)){e=9232,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Xo(9232)}return 9232}function h1(e){return e=e|0,0}function Yd(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=p1()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],wf(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(m1(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function wf(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function m1(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=$d(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,Kd(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],wf(l,o,r),t[y>>2]=(t[y>>2]|0)+12,Yc(e,_),Xd(_),h=k;return}}function $d(e){return e=e|0,357913941}function Kd(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function Yc(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function Xd(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Xo(e){e=e|0,Jd(e)}function Pl(e){e=e|0,nv(e+24|0)}function nv(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function Jd(e){e=e|0;var n=0;n=An()|0,Nn(e,2,1,n,rv()|0,3),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function rv(){return 1144}function iv(e,n,r,o,s){e=e|0,n=n|0,r=+r,o=+o,s=s|0;var l=0,d=0,_=0,y=0;l=h,h=h+16|0,d=l+8|0,_=l,y=ov(e)|0,e=t[y+4>>2]|0,t[_>>2]=t[y>>2],t[_+4>>2]=e,t[d>>2]=t[_>>2],t[d+4>>2]=t[_+4>>2],uv(n,d,r,o,s),h=l}function ov(e){return e=e|0,(t[(p1()|0)+24>>2]|0)+(e*12|0)|0}function uv(e,n,r,o,s){e=e|0,n=n|0,r=+r,o=+o,s=s|0;var l=0,d=0,_=0,y=0,k=0;k=h,h=h+16|0,d=k+2|0,_=k+1|0,y=k,l=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(l=t[(t[e>>2]|0)+l>>2]|0),wu(d,r),r=+Du(d,r),wu(_,o),o=+Du(_,o),ts(y,s),y=ns(y,s)|0,iD[l&1](e,r,o,y),h=k}function wu(e,n){e=e|0,n=+n}function Du(e,n){return e=e|0,n=+n,+ +lv(n)}function ts(e,n){e=e|0,n=n|0}function ns(e,n){return e=e|0,n=n|0,sv(n)|0}function sv(e){return e=e|0,e|0}function lv(e){return e=+e,+e}function fv(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Qd(e,r,s,1),h=o}function Qd(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=$c()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=Zd(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,cv(l,o)|0,o),h=s}function $c(){var e=0,n=0;if(c[7648]|0||(np(9268),Bt(27,9268,Q|0)|0,n=7648,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9268)|0)){e=9268,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));np(9268)}return 9268}function Zd(e){return e=e|0,0}function cv(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=$c()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],ep(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(av(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function ep(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function av(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=tp(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,dv(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],ep(l,o,r),t[y>>2]=(t[y>>2]|0)+12,pv(e,_),hv(_),h=k;return}}function tp(e){return e=e|0,357913941}function dv(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function pv(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function hv(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function np(e){e=e|0,Po(e)}function mv(e){e=e|0,vv(e+24|0)}function vv(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function Po(e){e=e|0;var n=0;n=An()|0,Nn(e,2,4,n,gv()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function gv(){return 1160}function _v(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0;return r=h,h=h+16|0,o=r+8|0,s=r,l=yv(e)|0,e=t[l+4>>2]|0,t[s>>2]=t[l>>2],t[s+4>>2]=e,t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],n=rp(n,o)|0,h=r,n|0}function yv(e){return e=e|0,(t[($c()|0)+24>>2]|0)+(e*12|0)|0}function rp(e,n){e=e|0,n=n|0;var r=0;return r=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(r=t[(t[e>>2]|0)+r>>2]|0),ip(dc[r&31](e)|0)|0}function ip(e){return e=e|0,e&1|0}function wv(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Dv(e,r,s,0),h=o}function Dv(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=v1()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=g1(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,Ev(l,o)|0,o),h=s}function v1(){var e=0,n=0;if(c[7656]|0||(up(9304),Bt(28,9304,Q|0)|0,n=7656,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9304)|0)){e=9304,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));up(9304)}return 9304}function g1(e){return e=e|0,0}function Ev(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=v1()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],op(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(Sv(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function op(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function Sv(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=Cv(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,Tv(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],op(l,o,r),t[y>>2]=(t[y>>2]|0)+12,xv(e,_),kv(_),h=k;return}}function Cv(e){return e=e|0,357913941}function Tv(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function xv(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function kv(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function up(e){e=e|0,Iv(e)}function Av(e){e=e|0,Ov(e+24|0)}function Ov(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function Iv(e){e=e|0;var n=0;n=An()|0,Nn(e,2,5,n,Pv()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function Pv(){return 1164}function Mv(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;o=h,h=h+16|0,s=o+8|0,l=o,d=Fv(e)|0,e=t[d+4>>2]|0,t[l>>2]=t[d>>2],t[l+4>>2]=e,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Lv(n,s,r),h=o}function Fv(e){return e=e|0,(t[(v1()|0)+24>>2]|0)+(e*12|0)|0}function Lv(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;l=h,h=h+16|0,s=l,o=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(o=t[(t[e>>2]|0)+o>>2]|0),$s(s,r),r=Ks(s,r)|0,Bl[o&31](e,r),Xs(s),h=l}function $s(e,n){e=e|0,n=n|0,Rv(e,n)}function Ks(e,n){return e=e|0,n=n|0,e|0}function Xs(e){e=e|0,Ju(e)}function Rv(e,n){e=e|0,n=n|0,_1(e,n)}function _1(e,n){e=e|0,n=n|0,t[e>>2]=n}function y1(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],sp(e,r,s,0),h=o}function sp(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=w1()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=Nv(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,Bv(l,o)|0,o),h=s}function w1(){var e=0,n=0;if(c[7664]|0||(cp(9340),Bt(29,9340,Q|0)|0,n=7664,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9340)|0)){e=9340,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));cp(9340)}return 9340}function Nv(e){return e=e|0,0}function Bv(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=w1()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],lp(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(jv(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function lp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function jv(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=Uv(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,qv(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],lp(l,o,r),t[y>>2]=(t[y>>2]|0)+12,zv(e,_),fp(_),h=k;return}}function Uv(e){return e=e|0,357913941}function qv(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function zv(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function fp(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function cp(e){e=e|0,Hv(e)}function Kc(e){e=e|0,Wv(e+24|0)}function Wv(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function Hv(e){e=e|0;var n=0;n=An()|0,Nn(e,2,4,n,bv()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function bv(){return 1180}function Gv(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=Vv(e)|0,e=t[d+4>>2]|0,t[l>>2]=t[d>>2],t[l+4>>2]=e,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],r=Yv(n,s,r)|0,h=o,r|0}function Vv(e){return e=e|0,(t[(w1()|0)+24>>2]|0)+(e*12|0)|0}function Yv(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;return l=h,h=h+16|0,s=l,o=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(o=t[(t[e>>2]|0)+o>>2]|0),Ml(s,r),s=Fl(s,r)|0,s=Xc(J4[o&15](e,s)|0)|0,h=l,s|0}function Ml(e,n){e=e|0,n=n|0}function Fl(e,n){return e=e|0,n=n|0,$v(n)|0}function Xc(e){return e=e|0,e|0}function $v(e){return e=e|0,e|0}function Kv(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Xv(e,r,s,0),h=o}function Xv(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=D1()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=Jv(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,Qv(l,o)|0,o),h=s}function D1(){var e=0,n=0;if(c[7672]|0||(hp(9376),Bt(30,9376,Q|0)|0,n=7672,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9376)|0)){e=9376,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));hp(9376)}return 9376}function Jv(e){return e=e|0,0}function Qv(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=D1()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],ap(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(dp(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function ap(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function dp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=pp(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,Zv(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],ap(l,o,r),t[y>>2]=(t[y>>2]|0)+12,eg(e,_),tg(_),h=k;return}}function pp(e){return e=e|0,357913941}function Zv(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function eg(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function tg(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function hp(e){e=e|0,rg(e)}function Jc(e){e=e|0,ng(e+24|0)}function ng(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function rg(e){e=e|0;var n=0;n=An()|0,Nn(e,2,5,n,mp()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function mp(){return 1196}function ig(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0;return r=h,h=h+16|0,o=r+8|0,s=r,l=og(e)|0,e=t[l+4>>2]|0,t[s>>2]=t[l>>2],t[s+4>>2]=e,t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],n=ug(n,o)|0,h=r,n|0}function og(e){return e=e|0,(t[(D1()|0)+24>>2]|0)+(e*12|0)|0}function ug(e,n){e=e|0,n=n|0;var r=0;return r=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(r=t[(t[e>>2]|0)+r>>2]|0),Xc(dc[r&31](e)|0)|0}function sg(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],lg(e,r,s,1),h=o}function lg(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=E1()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=fg(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,cg(l,o)|0,o),h=s}function E1(){var e=0,n=0;if(c[7680]|0||(C1(9412),Bt(31,9412,Q|0)|0,n=7680,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9412)|0)){e=9412,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));C1(9412)}return 9412}function fg(e){return e=e|0,0}function cg(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=E1()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],rc(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(ag(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function rc(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function ag(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=vp(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,gp(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],rc(l,o,r),t[y>>2]=(t[y>>2]|0)+12,S1(e,_),_p(_),h=k;return}}function vp(e){return e=e|0,357913941}function gp(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function S1(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function _p(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function C1(e){e=e|0,dg(e)}function yp(e){e=e|0,wp(e+24|0)}function wp(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function dg(e){e=e|0;var n=0;n=An()|0,Nn(e,2,6,n,Dp()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function Dp(){return 1200}function pg(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0;return r=h,h=h+16|0,o=r+8|0,s=r,l=Qc(e)|0,e=t[l+4>>2]|0,t[s>>2]=t[l>>2],t[s+4>>2]=e,t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],n=Zc(n,o)|0,h=r,n|0}function Qc(e){return e=e|0,(t[(E1()|0)+24>>2]|0)+(e*12|0)|0}function Zc(e,n){e=e|0,n=n|0;var r=0;return r=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(r=t[(t[e>>2]|0)+r>>2]|0),ea(dc[r&31](e)|0)|0}function ea(e){return e=e|0,e|0}function hg(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],T1(e,r,s,0),h=o}function T1(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=ta()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=mg(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,vg(l,o)|0,o),h=s}function ta(){var e=0,n=0;if(c[7688]|0||(Sp(9448),Bt(32,9448,Q|0)|0,n=7688,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9448)|0)){e=9448,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Sp(9448)}return 9448}function mg(e){return e=e|0,0}function vg(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=ta()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],Ep(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(gg(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function Ep(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function gg(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=_g(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,yg(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],Ep(l,o,r),t[y>>2]=(t[y>>2]|0)+12,wg(e,_),Dg(_),h=k;return}}function _g(e){return e=e|0,357913941}function yg(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function wg(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function Dg(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Sp(e){e=e|0,Cg(e)}function Eg(e){e=e|0,Sg(e+24|0)}function Sg(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function Cg(e){e=e|0;var n=0;n=An()|0,Nn(e,2,6,n,Mo()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function Mo(){return 1204}function Tg(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;o=h,h=h+16|0,s=o+8|0,l=o,d=xg(e)|0,e=t[d+4>>2]|0,t[l>>2]=t[d>>2],t[l+4>>2]=e,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Ll(n,s,r),h=o}function xg(e){return e=e|0,(t[(ta()|0)+24>>2]|0)+(e*12|0)|0}function Ll(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;l=h,h=h+16|0,s=l,o=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(o=t[(t[e>>2]|0)+o>>2]|0),On(s,r),s=x1(s,r)|0,Bl[o&31](e,s),h=l}function On(e,n){e=e|0,n=n|0}function x1(e,n){return e=e|0,n=n|0,Vi(n)|0}function Vi(e){return e=e|0,e|0}function l0(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],kg(e,r,s,0),h=o}function kg(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=Eu()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=Ag(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,Og(l,o)|0,o),h=s}function Eu(){var e=0,n=0;if(c[7696]|0||(A1(9484),Bt(33,9484,Q|0)|0,n=7696,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9484)|0)){e=9484,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));A1(9484)}return 9484}function Ag(e){return e=e|0,0}function Og(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=Eu()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],Cp(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(Ig(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function Cp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function Ig(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=Pg(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,k1(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],Cp(l,o,r),t[y>>2]=(t[y>>2]|0)+12,Mg(e,_),rs(_),h=k;return}}function Pg(e){return e=e|0,357913941}function k1(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function Mg(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function rs(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function A1(e){e=e|0,n0(e)}function na(e){e=e|0,Jr(e+24|0)}function Jr(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function n0(e){e=e|0;var n=0;n=An()|0,Nn(e,2,1,n,Tp()|0,2),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function Tp(){return 1212}function Fg(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0;s=h,h=h+16|0,l=s+8|0,d=s,_=Lg(e)|0,e=t[_+4>>2]|0,t[d>>2]=t[_>>2],t[d+4>>2]=e,t[l>>2]=t[d>>2],t[l+4>>2]=t[d+4>>2],Rg(n,l,r,o),h=s}function Lg(e){return e=e|0,(t[(Eu()|0)+24>>2]|0)+(e*12|0)|0}function Rg(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0;_=h,h=h+16|0,l=_+1|0,d=_,s=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(s=t[(t[e>>2]|0)+s>>2]|0),On(l,r),l=x1(l,r)|0,Ml(d,o),d=Fl(d,o)|0,X1[s&15](e,l,d),h=_}function Ng(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Bg(e,r,s,1),h=o}function Bg(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=O1()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=xp(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,ic(l,o)|0,o),h=s}function O1(){var e=0,n=0;if(c[7704]|0||(Ap(9520),Bt(34,9520,Q|0)|0,n=7704,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9520)|0)){e=9520,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Ap(9520)}return 9520}function xp(e){return e=e|0,0}function ic(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=O1()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],ra(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(jg(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function ra(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function jg(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=kp(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,ia(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],ra(l,o,r),t[y>>2]=(t[y>>2]|0)+12,mo(e,_),Df(_),h=k;return}}function kp(e){return e=e|0,357913941}function ia(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function mo(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function Df(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Ap(e){e=e|0,zg(e)}function Ug(e){e=e|0,qg(e+24|0)}function qg(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function zg(e){e=e|0;var n=0;n=An()|0,Nn(e,2,1,n,Wg()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function Wg(){return 1224}function Op(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;return s=h,h=h+16|0,l=s+8|0,d=s,_=is(e)|0,e=t[_+4>>2]|0,t[d>>2]=t[_>>2],t[d+4>>2]=e,t[l>>2]=t[d>>2],t[l+4>>2]=t[d+4>>2],o=+jn(n,l,r),h=s,+o}function is(e){return e=e|0,(t[(O1()|0)+24>>2]|0)+(e*12|0)|0}function jn(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return l=h,h=h+16|0,s=l,o=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(o=t[(t[e>>2]|0)+o>>2]|0),ts(s,r),s=ns(s,r)|0,d=+Ol(+uD[o&7](e,s)),h=l,+d}function Ip(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Fo(e,r,s,1),h=o}function Fo(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=oa()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=Hg(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,yr(l,o)|0,o),h=s}function oa(){var e=0,n=0;if(c[7712]|0||(Fp(9556),Bt(35,9556,Q|0)|0,n=7712,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9556)|0)){e=9556,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Fp(9556)}return 9556}function Hg(e){return e=e|0,0}function yr(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=oa()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],Pp(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(Mp(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function Pp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function Mp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=ua(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,bg(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],Pp(l,o,r),t[y>>2]=(t[y>>2]|0)+12,Gg(e,_),Vg(_),h=k;return}}function ua(e){return e=e|0,357913941}function bg(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function Gg(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function Vg(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Fp(e){e=e|0,Kg(e)}function Yg(e){e=e|0,$g(e+24|0)}function $g(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function Kg(e){e=e|0;var n=0;n=An()|0,Nn(e,2,5,n,Xg()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function Xg(){return 1232}function Jg(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=Qg(e)|0,e=t[d+4>>2]|0,t[l>>2]=t[d>>2],t[l+4>>2]=e,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],r=+Zg(n,s),h=o,+r}function Qg(e){return e=e|0,(t[(oa()|0)+24>>2]|0)+(e*12|0)|0}function Zg(e,n){e=e|0,n=n|0;var r=0;return r=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(r=t[(t[e>>2]|0)+r>>2]|0),+ +Ol(+oD[r&15](e))}function e_(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],t_(e,r,s,1),h=o}function t_(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=oc()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=n_(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,I1(l,o)|0,o),h=s}function oc(){var e=0,n=0;if(c[7720]|0||(Rp(9592),Bt(36,9592,Q|0)|0,n=7720,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9592)|0)){e=9592,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Rp(9592)}return 9592}function n_(e){return e=e|0,0}function I1(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=oc()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],Lp(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(r_(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function Lp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function r_(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=i_(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,q0(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],Lp(l,o,r),t[y>>2]=(t[y>>2]|0)+12,Yi(e,_),o_(_),h=k;return}}function i_(e){return e=e|0,357913941}function q0(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function Yi(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function o_(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Rp(e){e=e|0,s_(e)}function u_(e){e=e|0,Np(e+24|0)}function Np(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function s_(e){e=e|0;var n=0;n=An()|0,Nn(e,2,7,n,l_()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function l_(){return 1276}function f_(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0;return r=h,h=h+16|0,o=r+8|0,s=r,l=Bp(e)|0,e=t[l+4>>2]|0,t[s>>2]=t[l>>2],t[s+4>>2]=e,t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],n=c_(n,o)|0,h=r,n|0}function Bp(e){return e=e|0,(t[(oc()|0)+24>>2]|0)+(e*12|0)|0}function c_(e,n){e=e|0,n=n|0;var r=0,o=0,s=0;return s=h,h=h+16|0,o=s,r=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(r=t[(t[e>>2]|0)+r>>2]|0),Bl[r&31](o,e),o=jp(o)|0,h=s,o|0}function jp(e){e=e|0;var n=0,r=0,o=0,s=0;return s=h,h=h+32|0,n=s+12|0,r=s,o=U0(Up()|0)|0,o?(s1(n,o),l1(r,n),qp(e,r),e=f1(n)|0):e=zp(e)|0,h=s,e|0}function Up(){var e=0;return c[7736]|0||(Wp(9640),Bt(25,9640,Q|0)|0,e=7736,t[e>>2]=1,t[e+4>>2]=0),9640}function qp(e,n){e=e|0,n=n|0,Ef(n,e,e+8|0)|0}function zp(e){e=e|0;var n=0,r=0,o=0,s=0,l=0,d=0,_=0;return r=h,h=h+16|0,s=r+4|0,d=r,o=Qo(8)|0,n=o,_=Tt(16)|0,t[_>>2]=t[e>>2],t[_+4>>2]=t[e+4>>2],t[_+8>>2]=t[e+8>>2],t[_+12>>2]=t[e+12>>2],l=n+4|0,t[l>>2]=_,e=Tt(8)|0,l=t[l>>2]|0,t[d>>2]=0,t[s>>2]=t[d>>2],P1(e,l,s),t[o>>2]=e,h=r,n|0}function P1(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,r=Tt(16)|0,t[r+4>>2]=0,t[r+8>>2]=0,t[r>>2]=1244,t[r+12>>2]=n,t[e+4>>2]=r}function a_(e){e=e|0,da(e),Ve(e)}function d_(e){e=e|0,e=t[e+12>>2]|0,e|0&&Ve(e)}function p_(e){e=e|0,Ve(e)}function Ef(e,n,r){return e=e|0,n=n|0,r=r|0,n=h_(t[e>>2]|0,n,r)|0,r=e+4|0,t[(t[r>>2]|0)+8>>2]=n,t[(t[r>>2]|0)+8>>2]|0}function h_(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0;return o=h,h=h+16|0,s=o,Zo(s),e=Oi(e)|0,r=m_(e,t[n>>2]|0,+L[r>>3])|0,eu(s),h=o,r|0}function m_(e,n,r){e=e|0,n=n|0,r=+r;var o=0;return o=ko(v_()|0)|0,n=jc(n)|0,dl(0,o|0,e|0,n|0,+ +Ko(r))|0}function v_(){var e=0;return c[7728]|0||(g_(9628),e=7728,t[e>>2]=1,t[e+4>>2]=0),9628}function g_(e){e=e|0,Ao(e,__()|0,2)}function __(){return 1264}function Wp(e){e=e|0,Ys(e)}function Hp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],y_(e,r,s,1),h=o}function y_(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=M1()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=w_(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,D_(l,o)|0,o),h=s}function M1(){var e=0,n=0;if(c[7744]|0||(Gp(9684),Bt(37,9684,Q|0)|0,n=7744,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9684)|0)){e=9684,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Gp(9684)}return 9684}function w_(e){return e=e|0,0}function D_(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=M1()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],bp(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(E_(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function bp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function E_(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=S_(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,C_(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],bp(l,o,r),t[y>>2]=(t[y>>2]|0)+12,T_(e,_),x_(_),h=k;return}}function S_(e){return e=e|0,357913941}function C_(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function T_(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function x_(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Gp(e){e=e|0,O_(e)}function k_(e){e=e|0,A_(e+24|0)}function A_(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function O_(e){e=e|0;var n=0;n=An()|0,Nn(e,2,5,n,I_()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function I_(){return 1280}function P_(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=M_(e)|0,e=t[d+4>>2]|0,t[l>>2]=t[d>>2],t[l+4>>2]=e,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],r=F_(n,s,r)|0,h=o,r|0}function M_(e){return e=e|0,(t[(M1()|0)+24>>2]|0)+(e*12|0)|0}function F_(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return d=h,h=h+32|0,s=d,l=d+16|0,o=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(o=t[(t[e>>2]|0)+o>>2]|0),ts(l,r),l=ns(l,r)|0,X1[o&15](s,e,l),l=jp(s)|0,h=d,l|0}function L_(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],R_(e,r,s,1),h=o}function R_(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=F1()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=N_(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,B_(l,o)|0,o),h=s}function F1(){var e=0,n=0;if(c[7752]|0||(Kp(9720),Bt(38,9720,Q|0)|0,n=7752,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9720)|0)){e=9720,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Kp(9720)}return 9720}function N_(e){return e=e|0,0}function B_(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=F1()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],Vp(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(j_(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function Vp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function j_(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=L1(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,Yp(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],Vp(l,o,r),t[y>>2]=(t[y>>2]|0)+12,$p(e,_),U_(_),h=k;return}}function L1(e){return e=e|0,357913941}function Yp(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function $p(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function U_(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Kp(e){e=e|0,z_(e)}function q_(e){e=e|0,R1(e+24|0)}function R1(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function z_(e){e=e|0;var n=0;n=An()|0,Nn(e,2,8,n,W_()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function W_(){return 1288}function H_(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0;return r=h,h=h+16|0,o=r+8|0,s=r,l=$i(e)|0,e=t[l+4>>2]|0,t[s>>2]=t[l>>2],t[s+4>>2]=e,t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],n=N1(n,o)|0,h=r,n|0}function $i(e){return e=e|0,(t[(F1()|0)+24>>2]|0)+(e*12|0)|0}function N1(e,n){e=e|0,n=n|0;var r=0;return r=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(r=t[(t[e>>2]|0)+r>>2]|0),Dd(dc[r&31](e)|0)|0}function b_(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],G_(e,r,s,0),h=o}function G_(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=B1()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=V_(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,j1(l,o)|0,o),h=s}function B1(){var e=0,n=0;if(c[7760]|0||(q1(9756),Bt(39,9756,Q|0)|0,n=7760,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9756)|0)){e=9756,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));q1(9756)}return 9756}function V_(e){return e=e|0,0}function j1(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=B1()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],Xp(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(U1(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function Xp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function U1(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=Y_(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,$_(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],Xp(l,o,r),t[y>>2]=(t[y>>2]|0)+12,K_(e,_),X_(_),h=k;return}}function Y_(e){return e=e|0,357913941}function $_(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function K_(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function X_(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function q1(e){e=e|0,Z_(e)}function J_(e){e=e|0,Q_(e+24|0)}function Q_(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function Z_(e){e=e|0;var n=0;n=An()|0,Nn(e,2,8,n,z1()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function z1(){return 1292}function W1(e,n,r){e=e|0,n=n|0,r=+r;var o=0,s=0,l=0,d=0;o=h,h=h+16|0,s=o+8|0,l=o,d=e4(e)|0,e=t[d+4>>2]|0,t[l>>2]=t[d>>2],t[l+4>>2]=e,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],t4(n,s,r),h=o}function e4(e){return e=e|0,(t[(B1()|0)+24>>2]|0)+(e*12|0)|0}function t4(e,n,r){e=e|0,n=n|0,r=+r;var o=0,s=0,l=0;l=h,h=h+16|0,s=l,o=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(o=t[(t[e>>2]|0)+o>>2]|0),wu(s,r),r=+Du(s,r),nD[o&31](e,r),h=l}function n4(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],r4(e,r,s,0),h=o}function r4(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=H1()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=i4(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,o4(l,o)|0,o),h=s}function H1(){var e=0,n=0;if(c[7768]|0||(Qp(9792),Bt(40,9792,Q|0)|0,n=7768,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9792)|0)){e=9792,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Qp(9792)}return 9792}function i4(e){return e=e|0,0}function o4(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=H1()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],Jp(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(u4(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function Jp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function u4(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=s4(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,l4(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],Jp(l,o,r),t[y>>2]=(t[y>>2]|0)+12,f4(e,_),c4(_),h=k;return}}function s4(e){return e=e|0,357913941}function l4(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function f4(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function c4(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Qp(e){e=e|0,p4(e)}function a4(e){e=e|0,d4(e+24|0)}function d4(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function p4(e){e=e|0;var n=0;n=An()|0,Nn(e,2,1,n,h4()|0,2),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function h4(){return 1300}function m4(e,n,r,o){e=e|0,n=n|0,r=r|0,o=+o;var s=0,l=0,d=0,_=0;s=h,h=h+16|0,l=s+8|0,d=s,_=v4(e)|0,e=t[_+4>>2]|0,t[d>>2]=t[_>>2],t[d+4>>2]=e,t[l>>2]=t[d>>2],t[l+4>>2]=t[d+4>>2],g4(n,l,r,o),h=s}function v4(e){return e=e|0,(t[(H1()|0)+24>>2]|0)+(e*12|0)|0}function g4(e,n,r,o){e=e|0,n=n|0,r=r|0,o=+o;var s=0,l=0,d=0,_=0;_=h,h=h+16|0,l=_+1|0,d=_,s=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(s=t[(t[e>>2]|0)+s>>2]|0),ts(l,r),l=ns(l,r)|0,wu(d,o),o=+Du(d,o),cD[s&15](e,l,o),h=_}function a(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],p(e,r,s,0),h=o}function p(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=E()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=I(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,B(l,o)|0,o),h=s}function E(){var e=0,n=0;if(c[7776]|0||(nt(9828),Bt(41,9828,Q|0)|0,n=7776,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9828)|0)){e=9828,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));nt(9828)}return 9828}function I(e){return e=e|0,0}function B(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=E()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],G(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(te(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function G(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function te(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=se(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,Ee(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],G(l,o,r),t[y>>2]=(t[y>>2]|0)+12,$e(e,_),Ke(_),h=k;return}}function se(e){return e=e|0,357913941}function Ee(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function $e(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function Ke(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function nt(e){e=e|0,an(e)}function Ct(e){e=e|0,Gt(e+24|0)}function Gt(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function an(e){e=e|0;var n=0;n=An()|0,Nn(e,2,7,n,qn()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function qn(){return 1312}function dn(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;o=h,h=h+16|0,s=o+8|0,l=o,d=Yn(e)|0,e=t[d+4>>2]|0,t[l>>2]=t[d>>2],t[l+4>>2]=e,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],er(n,s,r),h=o}function Yn(e){return e=e|0,(t[(E()|0)+24>>2]|0)+(e*12|0)|0}function er(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;l=h,h=h+16|0,s=l,o=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(o=t[(t[e>>2]|0)+o>>2]|0),ts(s,r),s=ns(s,r)|0,Bl[o&31](e,s),h=l}function vo(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Pi(e,r,s,0),h=o}function Pi(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=Mi()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=f0(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,Jo(l,o)|0,o),h=s}function Mi(){var e=0,n=0;if(c[7784]|0||(kw(9864),Bt(42,9864,Q|0)|0,n=7784,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9864)|0)){e=9864,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));kw(9864)}return 9864}function f0(e){return e=e|0,0}function Jo(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=Mi()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],Su(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(Zp(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function Su(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function Zp(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=v9(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,g9(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],Su(l,o,r),t[y>>2]=(t[y>>2]|0)+12,_9(e,_),y9(_),h=k;return}}function v9(e){return e=e|0,357913941}function g9(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function _9(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function y9(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function kw(e){e=e|0,E9(e)}function w9(e){e=e|0,D9(e+24|0)}function D9(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function E9(e){e=e|0;var n=0;n=An()|0,Nn(e,2,8,n,S9()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function S9(){return 1320}function C9(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;o=h,h=h+16|0,s=o+8|0,l=o,d=T9(e)|0,e=t[d+4>>2]|0,t[l>>2]=t[d>>2],t[l+4>>2]=e,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],x9(n,s,r),h=o}function T9(e){return e=e|0,(t[(Mi()|0)+24>>2]|0)+(e*12|0)|0}function x9(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;l=h,h=h+16|0,s=l,o=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(o=t[(t[e>>2]|0)+o>>2]|0),k9(s,r),s=A9(s,r)|0,Bl[o&31](e,s),h=l}function k9(e,n){e=e|0,n=n|0}function A9(e,n){return e=e|0,n=n|0,O9(n)|0}function O9(e){return e=e|0,e|0}function I9(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],P9(e,r,s,0),h=o}function P9(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=_4()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=M9(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,F9(l,o)|0,o),h=s}function _4(){var e=0,n=0;if(c[7792]|0||(Ow(9900),Bt(43,9900,Q|0)|0,n=7792,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9900)|0)){e=9900,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Ow(9900)}return 9900}function M9(e){return e=e|0,0}function F9(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=_4()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],Aw(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(L9(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function Aw(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function L9(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=R9(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,N9(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],Aw(l,o,r),t[y>>2]=(t[y>>2]|0)+12,B9(e,_),j9(_),h=k;return}}function R9(e){return e=e|0,357913941}function N9(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function B9(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function j9(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Ow(e){e=e|0,z9(e)}function U9(e){e=e|0,q9(e+24|0)}function q9(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function z9(e){e=e|0;var n=0;n=An()|0,Nn(e,2,22,n,W9()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function W9(){return 1344}function H9(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0;r=h,h=h+16|0,o=r+8|0,s=r,l=b9(e)|0,e=t[l+4>>2]|0,t[s>>2]=t[l>>2],t[s+4>>2]=e,t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],G9(n,o),h=r}function b9(e){return e=e|0,(t[(_4()|0)+24>>2]|0)+(e*12|0)|0}function G9(e,n){e=e|0,n=n|0;var r=0;r=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(r=t[(t[e>>2]|0)+r>>2]|0),Nl[r&127](e)}function V9(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=t[e>>2]|0,s=y4()|0,e=Y9(r)|0,ur(l,n,s,e,$9(r,o)|0,o)}function y4(){var e=0,n=0;if(c[7800]|0||(Pw(9936),Bt(44,9936,Q|0)|0,n=7800,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9936)|0)){e=9936,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Pw(9936)}return 9936}function Y9(e){return e=e|0,e|0}function $9(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=y4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(Iw(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(K9(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function Iw(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function K9(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=X9(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,J9(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,Iw(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,Q9(e,s),Z9(s),h=_;return}}function X9(e){return e=e|0,536870911}function J9(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function Q9(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function Z9(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function Pw(e){e=e|0,nx(e)}function ex(e){e=e|0,tx(e+24|0)}function tx(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function nx(e){e=e|0;var n=0;n=An()|0,Nn(e,1,23,n,Mo()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function rx(e,n){e=e|0,n=n|0,ox(t[(ix(e)|0)>>2]|0,n)}function ix(e){return e=e|0,(t[(y4()|0)+24>>2]|0)+(e<<3)|0}function ox(e,n){e=e|0,n=n|0;var r=0,o=0;r=h,h=h+16|0,o=r,On(o,n),n=x1(o,n)|0,Nl[e&127](n),h=r}function ux(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=t[e>>2]|0,s=w4()|0,e=sx(r)|0,ur(l,n,s,e,lx(r,o)|0,o)}function w4(){var e=0,n=0;if(c[7808]|0||(Fw(9972),Bt(45,9972,Q|0)|0,n=7808,t[n>>2]=1,t[n+4>>2]=0),!(Dn(9972)|0)){e=9972,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Fw(9972)}return 9972}function sx(e){return e=e|0,e|0}function lx(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=w4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(Mw(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(fx(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function Mw(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function fx(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=cx(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,ax(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,Mw(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,dx(e,s),px(s),h=_;return}}function cx(e){return e=e|0,536870911}function ax(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function dx(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function px(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function Fw(e){e=e|0,vx(e)}function hx(e){e=e|0,mx(e+24|0)}function mx(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function vx(e){e=e|0;var n=0;n=An()|0,Nn(e,1,9,n,gx()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function gx(){return 1348}function _x(e,n){return e=e|0,n=n|0,wx(t[(yx(e)|0)>>2]|0,n)|0}function yx(e){return e=e|0,(t[(w4()|0)+24>>2]|0)+(e<<3)|0}function wx(e,n){e=e|0,n=n|0;var r=0,o=0;return r=h,h=h+16|0,o=r,Lw(o,n),n=Rw(o,n)|0,n=Xc(dc[e&31](n)|0)|0,h=r,n|0}function Lw(e,n){e=e|0,n=n|0}function Rw(e,n){return e=e|0,n=n|0,Dx(n)|0}function Dx(e){return e=e|0,e|0}function Ex(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=t[e>>2]|0,s=D4()|0,e=Sx(r)|0,ur(l,n,s,e,Cx(r,o)|0,o)}function D4(){var e=0,n=0;if(c[7816]|0||(Bw(10008),Bt(46,10008,Q|0)|0,n=7816,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10008)|0)){e=10008,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Bw(10008)}return 10008}function Sx(e){return e=e|0,e|0}function Cx(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=D4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(Nw(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(Tx(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function Nw(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function Tx(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=xx(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,kx(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,Nw(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,Ax(e,s),Ox(s),h=_;return}}function xx(e){return e=e|0,536870911}function kx(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function Ax(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function Ox(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function Bw(e){e=e|0,Mx(e)}function Ix(e){e=e|0,Px(e+24|0)}function Px(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function Mx(e){e=e|0;var n=0;n=An()|0,Nn(e,1,15,n,mp()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function Fx(e){return e=e|0,Rx(t[(Lx(e)|0)>>2]|0)|0}function Lx(e){return e=e|0,(t[(D4()|0)+24>>2]|0)+(e<<3)|0}function Rx(e){return e=e|0,Xc(ph[e&7]()|0)|0}function Nx(){var e=0;return c[7832]|0||(bx(10052),Bt(25,10052,Q|0)|0,e=7832,t[e>>2]=1,t[e+4>>2]=0),10052}function Bx(e,n){e=e|0,n=n|0,t[e>>2]=jx()|0,t[e+4>>2]=Ux()|0,t[e+12>>2]=n,t[e+8>>2]=qx()|0,t[e+32>>2]=2}function jx(){return 11709}function Ux(){return 1188}function qx(){return eh()|0}function zx(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,(Sf(o,896)|0)==512?r|0&&(Wx(r),Ve(r)):n|0&&(mu(n),Ve(n))}function Sf(e,n){return e=e|0,n=n|0,n&e|0}function Wx(e){e=e|0,e=t[e+4>>2]|0,e|0&&Tf(e)}function eh(){var e=0;return c[7824]|0||(t[2511]=Hx()|0,t[2512]=0,e=7824,t[e>>2]=1,t[e+4>>2]=0),10044}function Hx(){return 0}function bx(e){e=e|0,Ys(e)}function Gx(e){e=e|0;var n=0,r=0,o=0,s=0,l=0;n=h,h=h+32|0,r=n+24|0,l=n+16|0,s=n+8|0,o=n,Vx(e,4827),Yx(e,4834,3)|0,$x(e,3682,47)|0,t[l>>2]=9,t[l+4>>2]=0,t[r>>2]=t[l>>2],t[r+4>>2]=t[l+4>>2],Kx(e,4841,r)|0,t[s>>2]=1,t[s+4>>2]=0,t[r>>2]=t[s>>2],t[r+4>>2]=t[s+4>>2],Xx(e,4871,r)|0,t[o>>2]=10,t[o+4>>2]=0,t[r>>2]=t[o>>2],t[r+4>>2]=t[o+4>>2],Jx(e,4891,r)|0,h=n}function Vx(e,n){e=e|0,n=n|0;var r=0;r=Ok()|0,t[e>>2]=r,Ik(r,n),Cf(t[e>>2]|0)}function Yx(e,n,r){return e=e|0,n=n|0,r=r|0,pk(e,Zn(n)|0,r,0),e|0}function $x(e,n,r){return e=e|0,n=n|0,r=r|0,Q7(e,Zn(n)|0,r,0),e|0}function Kx(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],F7(e,n,s),h=o,e|0}function Xx(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],h7(e,n,s),h=o,e|0}function Jx(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=t[r+4>>2]|0,t[l>>2]=t[r>>2],t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Qx(e,n,s),h=o,e|0}function Qx(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],Zx(e,r,s,1),h=o}function Zx(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=E4()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=e7(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,t7(l,o)|0,o),h=s}function E4(){var e=0,n=0;if(c[7840]|0||(Uw(10100),Bt(48,10100,Q|0)|0,n=7840,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10100)|0)){e=10100,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Uw(10100)}return 10100}function e7(e){return e=e|0,0}function t7(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=E4()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],jw(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(n7(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function jw(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function n7(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=r7(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,i7(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],jw(l,o,r),t[y>>2]=(t[y>>2]|0)+12,o7(e,_),u7(_),h=k;return}}function r7(e){return e=e|0,357913941}function i7(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function o7(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function u7(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Uw(e){e=e|0,f7(e)}function s7(e){e=e|0,l7(e+24|0)}function l7(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function f7(e){e=e|0;var n=0;n=An()|0,Nn(e,2,6,n,c7()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function c7(){return 1364}function a7(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;return o=h,h=h+16|0,s=o+8|0,l=o,d=d7(e)|0,e=t[d+4>>2]|0,t[l>>2]=t[d>>2],t[l+4>>2]=e,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],r=p7(n,s,r)|0,h=o,r|0}function d7(e){return e=e|0,(t[(E4()|0)+24>>2]|0)+(e*12|0)|0}function p7(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;return l=h,h=h+16|0,s=l,o=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(o=t[(t[e>>2]|0)+o>>2]|0),ts(s,r),s=ns(s,r)|0,s=ip(J4[o&15](e,s)|0)|0,h=l,s|0}function h7(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],m7(e,r,s,0),h=o}function m7(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=S4()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=v7(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,g7(l,o)|0,o),h=s}function S4(){var e=0,n=0;if(c[7848]|0||(zw(10136),Bt(49,10136,Q|0)|0,n=7848,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10136)|0)){e=10136,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));zw(10136)}return 10136}function v7(e){return e=e|0,0}function g7(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=S4()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],qw(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(_7(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function qw(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function _7(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=y7(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,w7(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],qw(l,o,r),t[y>>2]=(t[y>>2]|0)+12,D7(e,_),E7(_),h=k;return}}function y7(e){return e=e|0,357913941}function w7(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function D7(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function E7(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function zw(e){e=e|0,T7(e)}function S7(e){e=e|0,C7(e+24|0)}function C7(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function T7(e){e=e|0;var n=0;n=An()|0,Nn(e,2,9,n,x7()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function x7(){return 1372}function k7(e,n,r){e=e|0,n=n|0,r=+r;var o=0,s=0,l=0,d=0;o=h,h=h+16|0,s=o+8|0,l=o,d=A7(e)|0,e=t[d+4>>2]|0,t[l>>2]=t[d>>2],t[l+4>>2]=e,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],O7(n,s,r),h=o}function A7(e){return e=e|0,(t[(S4()|0)+24>>2]|0)+(e*12|0)|0}function O7(e,n,r){e=e|0,n=n|0,r=+r;var o=0,s=0,l=0,d=tt;l=h,h=h+16|0,s=l,o=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(o=t[(t[e>>2]|0)+o>>2]|0),I7(s,r),d=w(P7(s,r)),tD[o&1](e,d),h=l}function I7(e,n){e=e|0,n=+n}function P7(e,n){return e=e|0,n=+n,w(M7(n))}function M7(e){return e=+e,w(e)}function F7(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,s=o+8|0,l=o,_=t[r>>2]|0,d=t[r+4>>2]|0,r=Zn(n)|0,t[l>>2]=_,t[l+4>>2]=d,t[s>>2]=t[l>>2],t[s+4>>2]=t[l+4>>2],L7(e,r,s,0),h=o}function L7(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0,y=0,k=0,T=0;s=h,h=h+32|0,l=s+16|0,T=s+8|0,_=s,k=t[r>>2]|0,y=t[r+4>>2]|0,d=t[e>>2]|0,e=C4()|0,t[T>>2]=k,t[T+4>>2]=y,t[l>>2]=t[T>>2],t[l+4>>2]=t[T+4>>2],r=R7(l)|0,t[_>>2]=k,t[_+4>>2]=y,t[l>>2]=t[_>>2],t[l+4>>2]=t[_+4>>2],ur(d,n,e,r,N7(l,o)|0,o),h=s}function C4(){var e=0,n=0;if(c[7856]|0||(Hw(10172),Bt(50,10172,Q|0)|0,n=7856,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10172)|0)){e=10172,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Hw(10172)}return 10172}function R7(e){return e=e|0,0}function N7(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0;return T=h,h=h+32|0,s=T+24|0,d=T+16|0,_=T,y=T+8|0,l=t[e>>2]|0,o=t[e+4>>2]|0,t[_>>2]=l,t[_+4>>2]=o,P=C4()|0,k=P+24|0,e=Lt(n,4)|0,t[y>>2]=e,n=P+28|0,r=t[n>>2]|0,r>>>0<(t[P+32>>2]|0)>>>0?(t[d>>2]=l,t[d+4>>2]=o,t[s>>2]=t[d>>2],t[s+4>>2]=t[d+4>>2],Ww(r,s,e),e=(t[n>>2]|0)+12|0,t[n>>2]=e):(B7(k,_,y),e=t[n>>2]|0),h=T,((e-(t[k>>2]|0)|0)/12|0)+-1|0}function Ww(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=t[n+4>>2]|0,t[e>>2]=t[n>>2],t[e+4>>2]=o,t[e+8>>2]=r}function B7(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;if(k=h,h=h+48|0,o=k+32|0,d=k+24|0,_=k,y=e+4|0,s=(((t[y>>2]|0)-(t[e>>2]|0)|0)/12|0)+1|0,l=j7(e)|0,l>>>0>>0)$n(e);else{T=t[e>>2]|0,q=((t[e+8>>2]|0)-T|0)/12|0,P=q<<1,U7(_,q>>>0>>1>>>0?P>>>0>>0?s:P:l,((t[y>>2]|0)-T|0)/12|0,e+8|0),y=_+8|0,l=t[y>>2]|0,s=t[n+4>>2]|0,r=t[r>>2]|0,t[d>>2]=t[n>>2],t[d+4>>2]=s,t[o>>2]=t[d>>2],t[o+4>>2]=t[d+4>>2],Ww(l,o,r),t[y>>2]=(t[y>>2]|0)+12,q7(e,_),z7(_),h=k;return}}function j7(e){return e=e|0,357913941}function U7(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>357913941)_n();else{s=Tt(n*12|0)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r*12|0)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n*12|0)}function q7(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(((s|0)/-12|0)*12|0)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function z7(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~(((o+-12-n|0)>>>0)/12|0)*12|0)),e=t[e>>2]|0,e|0&&Ve(e)}function Hw(e){e=e|0,b7(e)}function W7(e){e=e|0,H7(e+24|0)}function H7(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~(((n+-12-o|0)>>>0)/12|0)*12|0)),Ve(r))}function b7(e){e=e|0;var n=0;n=An()|0,Nn(e,2,3,n,G7()|0,2),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function G7(){return 1380}function V7(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0;s=h,h=h+16|0,l=s+8|0,d=s,_=Y7(e)|0,e=t[_+4>>2]|0,t[d>>2]=t[_>>2],t[d+4>>2]=e,t[l>>2]=t[d>>2],t[l+4>>2]=t[d+4>>2],$7(n,l,r,o),h=s}function Y7(e){return e=e|0,(t[(C4()|0)+24>>2]|0)+(e*12|0)|0}function $7(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0;_=h,h=h+16|0,l=_+1|0,d=_,s=t[n>>2]|0,n=t[n+4>>2]|0,e=e+(n>>1)|0,n&1&&(s=t[(t[e>>2]|0)+s>>2]|0),ts(l,r),l=ns(l,r)|0,K7(d,o),d=X7(d,o)|0,X1[s&15](e,l,d),h=_}function K7(e,n){e=e|0,n=n|0}function X7(e,n){return e=e|0,n=n|0,J7(n)|0}function J7(e){return e=e|0,(e|0)!=0|0}function Q7(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=t[e>>2]|0,s=T4()|0,e=Z7(r)|0,ur(l,n,s,e,ek(r,o)|0,o)}function T4(){var e=0,n=0;if(c[7864]|0||(Gw(10208),Bt(51,10208,Q|0)|0,n=7864,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10208)|0)){e=10208,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Gw(10208)}return 10208}function Z7(e){return e=e|0,e|0}function ek(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=T4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(bw(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(tk(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function bw(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function tk(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=nk(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,rk(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,bw(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,ik(e,s),ok(s),h=_;return}}function nk(e){return e=e|0,536870911}function rk(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function ik(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function ok(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function Gw(e){e=e|0,lk(e)}function uk(e){e=e|0,sk(e+24|0)}function sk(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function lk(e){e=e|0;var n=0;n=An()|0,Nn(e,1,24,n,fk()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function fk(){return 1392}function ck(e,n){e=e|0,n=n|0,dk(t[(ak(e)|0)>>2]|0,n)}function ak(e){return e=e|0,(t[(T4()|0)+24>>2]|0)+(e<<3)|0}function dk(e,n){e=e|0,n=n|0;var r=0,o=0;r=h,h=h+16|0,o=r,Lw(o,n),n=Rw(o,n)|0,Nl[e&127](n),h=r}function pk(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=t[e>>2]|0,s=x4()|0,e=hk(r)|0,ur(l,n,s,e,mk(r,o)|0,o)}function x4(){var e=0,n=0;if(c[7872]|0||(Yw(10244),Bt(52,10244,Q|0)|0,n=7872,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10244)|0)){e=10244,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));Yw(10244)}return 10244}function hk(e){return e=e|0,e|0}function mk(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=x4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(Vw(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(vk(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function Vw(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function vk(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=gk(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,_k(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,Vw(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,yk(e,s),wk(s),h=_;return}}function gk(e){return e=e|0,536870911}function _k(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function yk(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function wk(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function Yw(e){e=e|0,Sk(e)}function Dk(e){e=e|0,Ek(e+24|0)}function Ek(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function Sk(e){e=e|0;var n=0;n=An()|0,Nn(e,1,16,n,Ck()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function Ck(){return 1400}function Tk(e){return e=e|0,kk(t[(xk(e)|0)>>2]|0)|0}function xk(e){return e=e|0,(t[(x4()|0)+24>>2]|0)+(e<<3)|0}function kk(e){return e=e|0,Ak(ph[e&7]()|0)|0}function Ak(e){return e=e|0,e|0}function Ok(){var e=0;return c[7880]|0||(Nk(10280),Bt(25,10280,Q|0)|0,e=7880,t[e>>2]=1,t[e+4>>2]=0),10280}function Ik(e,n){e=e|0,n=n|0,t[e>>2]=Pk()|0,t[e+4>>2]=Mk()|0,t[e+12>>2]=n,t[e+8>>2]=Fk()|0,t[e+32>>2]=4}function Pk(){return 11711}function Mk(){return 1356}function Fk(){return eh()|0}function Lk(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,(Sf(o,896)|0)==512?r|0&&(Rk(r),Ve(r)):n|0&&(Gi(n),Ve(n))}function Rk(e){e=e|0,e=t[e+4>>2]|0,e|0&&Tf(e)}function Nk(e){e=e|0,Ys(e)}function Bk(e){e=e|0,jk(e,4920),Uk(e)|0,qk(e)|0}function jk(e,n){e=e|0,n=n|0;var r=0;r=Up()|0,t[e>>2]=r,sA(r,n),Cf(t[e>>2]|0)}function Uk(e){e=e|0;var n=0;return n=t[e>>2]|0,uc(n,Jk()|0),e|0}function qk(e){e=e|0;var n=0;return n=t[e>>2]|0,uc(n,zk()|0),e|0}function zk(){var e=0;return c[7888]|0||($w(10328),Bt(53,10328,Q|0)|0,e=7888,t[e>>2]=1,t[e+4>>2]=0),Dn(10328)|0||$w(10328),10328}function uc(e,n){e=e|0,n=n|0,ur(e,0,n,0,0,0)}function $w(e){e=e|0,bk(e),sc(e,10)}function Wk(e){e=e|0,Hk(e+24|0)}function Hk(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function bk(e){e=e|0;var n=0;n=An()|0,Nn(e,5,1,n,$k()|0,2),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function Gk(e,n,r){e=e|0,n=n|0,r=+r,Vk(e,n,r)}function sc(e,n){e=e|0,n=n|0,t[e+20>>2]=n}function Vk(e,n,r){e=e|0,n=n|0,r=+r;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+16|0,l=o+8|0,_=o+13|0,s=o,d=o+12|0,ts(_,n),t[l>>2]=ns(_,n)|0,wu(d,r),L[s>>3]=+Du(d,r),Yk(e,l,s),h=o}function Yk(e,n,r){e=e|0,n=n|0,r=r|0,M(e+8|0,t[n>>2]|0,+L[r>>3]),c[e+24>>0]=1}function $k(){return 1404}function Kk(e,n){return e=e|0,n=+n,Xk(e,n)|0}function Xk(e,n){e=e|0,n=+n;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return o=h,h=h+16|0,l=o+4|0,d=o+8|0,_=o,s=Qo(8)|0,r=s,y=Tt(16)|0,ts(l,e),e=ns(l,e)|0,wu(d,n),M(y,e,+Du(d,n)),d=r+4|0,t[d>>2]=y,e=Tt(8)|0,d=t[d>>2]|0,t[_>>2]=0,t[l>>2]=t[_>>2],P1(e,d,l),t[s>>2]=e,h=o,r|0}function Jk(){var e=0;return c[7896]|0||(Kw(10364),Bt(54,10364,Q|0)|0,e=7896,t[e>>2]=1,t[e+4>>2]=0),Dn(10364)|0||Kw(10364),10364}function Kw(e){e=e|0,eA(e),sc(e,55)}function Qk(e){e=e|0,Zk(e+24|0)}function Zk(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function eA(e){e=e|0;var n=0;n=An()|0,Nn(e,5,4,n,iA()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function tA(e){e=e|0,nA(e)}function nA(e){e=e|0,rA(e)}function rA(e){e=e|0,Xw(e+8|0),c[e+24>>0]=1}function Xw(e){e=e|0,t[e>>2]=0,L[e+8>>3]=0}function iA(){return 1424}function oA(){return uA()|0}function uA(){var e=0,n=0,r=0,o=0,s=0,l=0,d=0;return n=h,h=h+16|0,s=n+4|0,d=n,r=Qo(8)|0,e=r,o=Tt(16)|0,Xw(o),l=e+4|0,t[l>>2]=o,o=Tt(8)|0,l=t[l>>2]|0,t[d>>2]=0,t[s>>2]=t[d>>2],P1(o,l,s),t[r>>2]=o,h=n,e|0}function sA(e,n){e=e|0,n=n|0,t[e>>2]=lA()|0,t[e+4>>2]=fA()|0,t[e+12>>2]=n,t[e+8>>2]=cA()|0,t[e+32>>2]=5}function lA(){return 11710}function fA(){return 1416}function cA(){return th()|0}function aA(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,(Sf(o,896)|0)==512?r|0&&(dA(r),Ve(r)):n|0&&Ve(n)}function dA(e){e=e|0,e=t[e+4>>2]|0,e|0&&Tf(e)}function th(){var e=0;return c[7904]|0||(t[2600]=pA()|0,t[2601]=0,e=7904,t[e>>2]=1,t[e+4>>2]=0),10400}function pA(){return t[357]|0}function hA(e){e=e|0,mA(e,4926),vA(e)|0}function mA(e,n){e=e|0,n=n|0;var r=0;r=u1()|0,t[e>>2]=r,kA(r,n),Cf(t[e>>2]|0)}function vA(e){e=e|0;var n=0;return n=t[e>>2]|0,uc(n,gA()|0),e|0}function gA(){var e=0;return c[7912]|0||(Jw(10412),Bt(56,10412,Q|0)|0,e=7912,t[e>>2]=1,t[e+4>>2]=0),Dn(10412)|0||Jw(10412),10412}function Jw(e){e=e|0,wA(e),sc(e,57)}function _A(e){e=e|0,yA(e+24|0)}function yA(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function wA(e){e=e|0;var n=0;n=An()|0,Nn(e,5,5,n,CA()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function DA(e){e=e|0,EA(e)}function EA(e){e=e|0,SA(e)}function SA(e){e=e|0;var n=0,r=0;n=e+8|0,r=n+48|0;do t[n>>2]=0,n=n+4|0;while((n|0)<(r|0));c[e+56>>0]=1}function CA(){return 1432}function TA(){return xA()|0}function xA(){var e=0,n=0,r=0,o=0,s=0,l=0,d=0,_=0;d=h,h=h+16|0,e=d+4|0,n=d,r=Qo(8)|0,o=r,s=Tt(48)|0,l=s,_=l+48|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(_|0));return l=o+4|0,t[l>>2]=s,_=Tt(8)|0,l=t[l>>2]|0,t[n>>2]=0,t[e>>2]=t[n>>2],Wd(_,l,e),t[r>>2]=_,h=d,o|0}function kA(e,n){e=e|0,n=n|0,t[e>>2]=AA()|0,t[e+4>>2]=OA()|0,t[e+12>>2]=n,t[e+8>>2]=IA()|0,t[e+32>>2]=6}function AA(){return 11704}function OA(){return 1436}function IA(){return th()|0}function PA(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,(Sf(o,896)|0)==512?r|0&&(MA(r),Ve(r)):n|0&&Ve(n)}function MA(e){e=e|0,e=t[e+4>>2]|0,e|0&&Tf(e)}function FA(e){e=e|0,LA(e,4933),RA(e)|0,NA(e)|0}function LA(e,n){e=e|0,n=n|0;var r=0;r=uO()|0,t[e>>2]=r,sO(r,n),Cf(t[e>>2]|0)}function RA(e){e=e|0;var n=0;return n=t[e>>2]|0,uc(n,XA()|0),e|0}function NA(e){e=e|0;var n=0;return n=t[e>>2]|0,uc(n,BA()|0),e|0}function BA(){var e=0;return c[7920]|0||(Qw(10452),Bt(58,10452,Q|0)|0,e=7920,t[e>>2]=1,t[e+4>>2]=0),Dn(10452)|0||Qw(10452),10452}function Qw(e){e=e|0,qA(e),sc(e,1)}function jA(e){e=e|0,UA(e+24|0)}function UA(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function qA(e){e=e|0;var n=0;n=An()|0,Nn(e,5,1,n,bA()|0,2),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function zA(e,n,r){e=e|0,n=+n,r=+r,WA(e,n,r)}function WA(e,n,r){e=e|0,n=+n,r=+r;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+32|0,l=o+8|0,_=o+17|0,s=o,d=o+16|0,wu(_,n),L[l>>3]=+Du(_,n),wu(d,r),L[s>>3]=+Du(d,r),HA(e,l,s),h=o}function HA(e,n,r){e=e|0,n=n|0,r=r|0,Zw(e+8|0,+L[n>>3],+L[r>>3]),c[e+24>>0]=1}function Zw(e,n,r){e=e|0,n=+n,r=+r,L[e>>3]=n,L[e+8>>3]=r}function bA(){return 1472}function GA(e,n){return e=+e,n=+n,VA(e,n)|0}function VA(e,n){e=+e,n=+n;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return o=h,h=h+16|0,d=o+4|0,_=o+8|0,y=o,s=Qo(8)|0,r=s,l=Tt(16)|0,wu(d,e),e=+Du(d,e),wu(_,n),Zw(l,e,+Du(_,n)),_=r+4|0,t[_>>2]=l,l=Tt(8)|0,_=t[_>>2]|0,t[y>>2]=0,t[d>>2]=t[y>>2],e8(l,_,d),t[s>>2]=l,h=o,r|0}function e8(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,r=Tt(16)|0,t[r+4>>2]=0,t[r+8>>2]=0,t[r>>2]=1452,t[r+12>>2]=n,t[e+4>>2]=r}function YA(e){e=e|0,da(e),Ve(e)}function $A(e){e=e|0,e=t[e+12>>2]|0,e|0&&Ve(e)}function KA(e){e=e|0,Ve(e)}function XA(){var e=0;return c[7928]|0||(t8(10488),Bt(59,10488,Q|0)|0,e=7928,t[e>>2]=1,t[e+4>>2]=0),Dn(10488)|0||t8(10488),10488}function t8(e){e=e|0,ZA(e),sc(e,60)}function JA(e){e=e|0,QA(e+24|0)}function QA(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function ZA(e){e=e|0;var n=0;n=An()|0,Nn(e,5,6,n,rO()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function eO(e){e=e|0,tO(e)}function tO(e){e=e|0,nO(e)}function nO(e){e=e|0,n8(e+8|0),c[e+24>>0]=1}function n8(e){e=e|0,t[e>>2]=0,t[e+4>>2]=0,t[e+8>>2]=0,t[e+12>>2]=0}function rO(){return 1492}function iO(){return oO()|0}function oO(){var e=0,n=0,r=0,o=0,s=0,l=0,d=0;return n=h,h=h+16|0,s=n+4|0,d=n,r=Qo(8)|0,e=r,o=Tt(16)|0,n8(o),l=e+4|0,t[l>>2]=o,o=Tt(8)|0,l=t[l>>2]|0,t[d>>2]=0,t[s>>2]=t[d>>2],e8(o,l,s),t[r>>2]=o,h=n,e|0}function uO(){var e=0;return c[7936]|0||(pO(10524),Bt(25,10524,Q|0)|0,e=7936,t[e>>2]=1,t[e+4>>2]=0),10524}function sO(e,n){e=e|0,n=n|0,t[e>>2]=lO()|0,t[e+4>>2]=fO()|0,t[e+12>>2]=n,t[e+8>>2]=cO()|0,t[e+32>>2]=7}function lO(){return 11700}function fO(){return 1484}function cO(){return th()|0}function aO(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,(Sf(o,896)|0)==512?r|0&&(dO(r),Ve(r)):n|0&&Ve(n)}function dO(e){e=e|0,e=t[e+4>>2]|0,e|0&&Tf(e)}function pO(e){e=e|0,Ys(e)}function hO(e,n,r){e=e|0,n=n|0,r=r|0,e=Zn(n)|0,n=mO(r)|0,r=vO(r,0)|0,VO(e,n,r,k4()|0,0)}function mO(e){return e=e|0,e|0}function vO(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=k4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(i8(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(SO(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function k4(){var e=0,n=0;if(c[7944]|0||(r8(10568),Bt(61,10568,Q|0)|0,n=7944,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10568)|0)){e=10568,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));r8(10568)}return 10568}function r8(e){e=e|0,yO(e)}function gO(e){e=e|0,_O(e+24|0)}function _O(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function yO(e){e=e|0;var n=0;n=An()|0,Nn(e,1,17,n,Dp()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function wO(e){return e=e|0,EO(t[(DO(e)|0)>>2]|0)|0}function DO(e){return e=e|0,(t[(k4()|0)+24>>2]|0)+(e<<3)|0}function EO(e){return e=e|0,ea(ph[e&7]()|0)|0}function i8(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function SO(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=CO(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,TO(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,i8(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,xO(e,s),kO(s),h=_;return}}function CO(e){return e=e|0,536870911}function TO(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function xO(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function kO(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function AO(){OO()}function OO(){IO(10604)}function IO(e){e=e|0,PO(e,4955)}function PO(e,n){e=e|0,n=n|0;var r=0;r=MO()|0,t[e>>2]=r,FO(r,n),Cf(t[e>>2]|0)}function MO(){var e=0;return c[7952]|0||(WO(10612),Bt(25,10612,Q|0)|0,e=7952,t[e>>2]=1,t[e+4>>2]=0),10612}function FO(e,n){e=e|0,n=n|0,t[e>>2]=BO()|0,t[e+4>>2]=jO()|0,t[e+12>>2]=n,t[e+8>>2]=UO()|0,t[e+32>>2]=8}function Cf(e){e=e|0;var n=0,r=0;n=h,h=h+16|0,r=n,sa()|0,t[r>>2]=e,LO(10608,r),h=n}function sa(){return c[11714]|0||(t[2652]=0,Bt(62,10608,Q|0)|0,c[11714]=1),10608}function LO(e,n){e=e|0,n=n|0;var r=0;r=Tt(8)|0,t[r+4>>2]=t[n>>2],t[r>>2]=t[e>>2],t[e>>2]=r}function RO(e){e=e|0,NO(e)}function NO(e){e=e|0;var n=0,r=0;if(n=t[e>>2]|0,n|0)do r=n,n=t[n>>2]|0,Ve(r);while((n|0)!=0);t[e>>2]=0}function BO(){return 11715}function jO(){return 1496}function UO(){return eh()|0}function qO(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,(Sf(o,896)|0)==512?r|0&&(zO(r),Ve(r)):n|0&&Ve(n)}function zO(e){e=e|0,e=t[e+4>>2]|0,e|0&&Tf(e)}function WO(e){e=e|0,Ys(e)}function HO(e,n){e=e|0,n=n|0;var r=0,o=0;sa()|0,r=t[2652]|0;e:do if(r|0){for(;o=t[r+4>>2]|0,!(o|0?(U8(A4(o)|0,e)|0)==0:0);)if(r=t[r>>2]|0,!r)break e;bO(o,n)}while(0)}function A4(e){return e=e|0,t[e+12>>2]|0}function bO(e,n){e=e|0,n=n|0;var r=0;e=e+36|0,r=t[e>>2]|0,r|0&&(Ju(r),Ve(r)),r=Tt(4)|0,ba(r,n),t[e>>2]=r}function O4(){return c[11716]|0||(t[2664]=0,Bt(63,10656,Q|0)|0,c[11716]=1),10656}function o8(){var e=0;return c[11717]|0?e=t[2665]|0:(GO(),t[2665]=1504,c[11717]=1,e=1504),e|0}function GO(){c[11740]|0||(c[11718]=Lt(Lt(8,0)|0,0)|0,c[11719]=Lt(Lt(0,0)|0,0)|0,c[11720]=Lt(Lt(0,16)|0,0)|0,c[11721]=Lt(Lt(8,0)|0,0)|0,c[11722]=Lt(Lt(0,0)|0,0)|0,c[11723]=Lt(Lt(8,0)|0,0)|0,c[11724]=Lt(Lt(0,0)|0,0)|0,c[11725]=Lt(Lt(8,0)|0,0)|0,c[11726]=Lt(Lt(0,0)|0,0)|0,c[11727]=Lt(Lt(8,0)|0,0)|0,c[11728]=Lt(Lt(0,0)|0,0)|0,c[11729]=Lt(Lt(0,0)|0,32)|0,c[11730]=Lt(Lt(0,0)|0,32)|0,c[11740]=1)}function u8(){return 1572}function VO(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0;var l=0,d=0,_=0,y=0,k=0,T=0;l=h,h=h+32|0,T=l+16|0,k=l+12|0,y=l+8|0,_=l+4|0,d=l,t[T>>2]=e,t[k>>2]=n,t[y>>2]=r,t[_>>2]=o,t[d>>2]=s,O4()|0,YO(10656,T,k,y,_,d),h=l}function YO(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0;var d=0;d=Tt(24)|0,t1(d+4|0,t[n>>2]|0,t[r>>2]|0,t[o>>2]|0,t[s>>2]|0,t[l>>2]|0),t[d>>2]=t[e>>2],t[e>>2]=d}function s8(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0,le=0,ie=0,Pe=0,ke=0,qe=0;if(qe=h,h=h+32|0,le=qe+20|0,ie=qe+8|0,Pe=qe+4|0,ke=qe,n=t[n>>2]|0,n|0){we=le+4|0,y=le+8|0,k=ie+4|0,T=ie+8|0,P=ie+8|0,q=le+8|0;do{if(d=n+4|0,_=I4(d)|0,_|0){if(s=b1(_)|0,t[le>>2]=0,t[we>>2]=0,t[y>>2]=0,o=(G1(_)|0)+1|0,$O(le,o),o|0)for(;o=o+-1|0,os(ie,t[s>>2]|0),l=t[we>>2]|0,l>>>0<(t[q>>2]|0)>>>0?(t[l>>2]=t[ie>>2],t[we>>2]=(t[we>>2]|0)+4):P4(le,ie),o;)s=s+4|0;o=V1(_)|0,t[ie>>2]=0,t[k>>2]=0,t[T>>2]=0;e:do if(t[o>>2]|0)for(s=0,l=0;;){if((s|0)==(l|0)?KO(ie,o):(t[s>>2]=t[o>>2],t[k>>2]=(t[k>>2]|0)+4),o=o+4|0,!(t[o>>2]|0))break e;s=t[k>>2]|0,l=t[P>>2]|0}while(0);t[Pe>>2]=nh(d)|0,t[ke>>2]=Dn(_)|0,XO(r,e,Pe,ke,le,ie),M4(ie),Rl(le)}n=t[n>>2]|0}while((n|0)!=0)}h=qe}function I4(e){return e=e|0,t[e+12>>2]|0}function b1(e){return e=e|0,t[e+12>>2]|0}function G1(e){return e=e|0,t[e+16>>2]|0}function $O(e,n){e=e|0,n=n|0;var r=0,o=0,s=0;s=h,h=h+32|0,r=s,o=t[e>>2]|0,(t[e+8>>2]|0)-o>>2>>>0>>0&&(m8(r,n,(t[e+4>>2]|0)-o>>2,e+8|0),v8(e,r),g8(r)),h=s}function P4(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0;if(d=h,h=h+32|0,r=d,o=e+4|0,s=((t[o>>2]|0)-(t[e>>2]|0)>>2)+1|0,l=h8(e)|0,l>>>0>>0)$n(e);else{_=t[e>>2]|0,k=(t[e+8>>2]|0)-_|0,y=k>>1,m8(r,k>>2>>>0>>1>>>0?y>>>0>>0?s:y:l,(t[o>>2]|0)-_>>2,e+8|0),l=r+8|0,t[t[l>>2]>>2]=t[n>>2],t[l>>2]=(t[l>>2]|0)+4,v8(e,r),g8(r),h=d;return}}function V1(e){return e=e|0,t[e+8>>2]|0}function KO(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0;if(d=h,h=h+32|0,r=d,o=e+4|0,s=((t[o>>2]|0)-(t[e>>2]|0)>>2)+1|0,l=p8(e)|0,l>>>0>>0)$n(e);else{_=t[e>>2]|0,k=(t[e+8>>2]|0)-_|0,y=k>>1,mI(r,k>>2>>>0>>1>>>0?y>>>0>>0?s:y:l,(t[o>>2]|0)-_>>2,e+8|0),l=r+8|0,t[t[l>>2]>>2]=t[n>>2],t[l>>2]=(t[l>>2]|0)+4,vI(e,r),gI(r),h=d;return}}function nh(e){return e=e|0,t[e>>2]|0}function XO(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,JO(e,n,r,o,s,l)}function M4(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-4-o|0)>>>2)<<2)),Ve(r))}function Rl(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-4-o|0)>>>2)<<2)),Ve(r))}function JO(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0;var d=0,_=0,y=0,k=0,T=0,P=0;d=h,h=h+48|0,T=d+40|0,_=d+32|0,P=d+24|0,y=d+12|0,k=d,Zo(_),e=Oi(e)|0,t[P>>2]=t[n>>2],r=t[r>>2]|0,o=t[o>>2]|0,F4(y,s),QO(k,l),t[T>>2]=t[P>>2],ZO(e,T,r,o,y,k),M4(k),Rl(y),eu(_),h=d}function F4(e,n){e=e|0,n=n|0;var r=0,o=0;t[e>>2]=0,t[e+4>>2]=0,t[e+8>>2]=0,r=n+4|0,o=(t[r>>2]|0)-(t[n>>2]|0)>>2,o|0&&(pI(e,o),hI(e,t[n>>2]|0,t[r>>2]|0,o))}function QO(e,n){e=e|0,n=n|0;var r=0,o=0;t[e>>2]=0,t[e+4>>2]=0,t[e+8>>2]=0,r=n+4|0,o=(t[r>>2]|0)-(t[n>>2]|0)>>2,o|0&&(aI(e,o),dI(e,t[n>>2]|0,t[r>>2]|0,o))}function ZO(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0;var d=0,_=0,y=0,k=0,T=0,P=0;d=h,h=h+32|0,T=d+28|0,P=d+24|0,_=d+12|0,y=d,k=ko(eI()|0)|0,t[P>>2]=t[n>>2],t[T>>2]=t[P>>2],n=lc(T)|0,r=l8(r)|0,o=L4(o)|0,t[_>>2]=t[s>>2],T=s+4|0,t[_+4>>2]=t[T>>2],P=s+8|0,t[_+8>>2]=t[P>>2],t[P>>2]=0,t[T>>2]=0,t[s>>2]=0,s=R4(_)|0,t[y>>2]=t[l>>2],T=l+4|0,t[y+4>>2]=t[T>>2],P=l+8|0,t[y+8>>2]=t[P>>2],t[P>>2]=0,t[T>>2]=0,t[l>>2]=0,qo(0,k|0,e|0,n|0,r|0,o|0,s|0,tI(y)|0)|0,M4(y),Rl(_),h=d}function eI(){var e=0;return c[7968]|0||(fI(10708),e=7968,t[e>>2]=1,t[e+4>>2]=0),10708}function lc(e){return e=e|0,c8(e)|0}function l8(e){return e=e|0,f8(e)|0}function L4(e){return e=e|0,ea(e)|0}function R4(e){return e=e|0,rI(e)|0}function tI(e){return e=e|0,nI(e)|0}function nI(e){e=e|0;var n=0,r=0,o=0;if(o=(t[e+4>>2]|0)-(t[e>>2]|0)|0,r=o>>2,o=Qo(o+4|0)|0,t[o>>2]=r,r|0){n=0;do t[o+4+(n<<2)>>2]=f8(t[(t[e>>2]|0)+(n<<2)>>2]|0)|0,n=n+1|0;while((n|0)!=(r|0))}return o|0}function f8(e){return e=e|0,e|0}function rI(e){e=e|0;var n=0,r=0,o=0;if(o=(t[e+4>>2]|0)-(t[e>>2]|0)|0,r=o>>2,o=Qo(o+4|0)|0,t[o>>2]=r,r|0){n=0;do t[o+4+(n<<2)>>2]=c8((t[e>>2]|0)+(n<<2)|0)|0,n=n+1|0;while((n|0)!=(r|0))}return o|0}function c8(e){e=e|0;var n=0,r=0,o=0,s=0;return s=h,h=h+32|0,n=s+12|0,r=s,o=U0(a8()|0)|0,o?(s1(n,o),l1(r,n),UF(e,r),e=f1(n)|0):e=iI(e)|0,h=s,e|0}function a8(){var e=0;return c[7960]|0||(lI(10664),Bt(25,10664,Q|0)|0,e=7960,t[e>>2]=1,t[e+4>>2]=0),10664}function iI(e){e=e|0;var n=0,r=0,o=0,s=0,l=0,d=0,_=0;return r=h,h=h+16|0,s=r+4|0,d=r,o=Qo(8)|0,n=o,_=Tt(4)|0,t[_>>2]=t[e>>2],l=n+4|0,t[l>>2]=_,e=Tt(8)|0,l=t[l>>2]|0,t[d>>2]=0,t[s>>2]=t[d>>2],d8(e,l,s),t[o>>2]=e,h=r,n|0}function d8(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,r=Tt(16)|0,t[r+4>>2]=0,t[r+8>>2]=0,t[r>>2]=1656,t[r+12>>2]=n,t[e+4>>2]=r}function oI(e){e=e|0,da(e),Ve(e)}function uI(e){e=e|0,e=t[e+12>>2]|0,e|0&&Ve(e)}function sI(e){e=e|0,Ve(e)}function lI(e){e=e|0,Ys(e)}function fI(e){e=e|0,Ao(e,cI()|0,5)}function cI(){return 1676}function aI(e,n){e=e|0,n=n|0;var r=0;if((p8(e)|0)>>>0>>0&&$n(e),n>>>0>1073741823)_n();else{r=Tt(n<<2)|0,t[e+4>>2]=r,t[e>>2]=r,t[e+8>>2]=r+(n<<2);return}}function dI(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,o=e+4|0,e=r-n|0,(e|0)>0&&(vn(t[o>>2]|0,n|0,e|0)|0,t[o>>2]=(t[o>>2]|0)+(e>>>2<<2))}function p8(e){return e=e|0,1073741823}function pI(e,n){e=e|0,n=n|0;var r=0;if((h8(e)|0)>>>0>>0&&$n(e),n>>>0>1073741823)_n();else{r=Tt(n<<2)|0,t[e+4>>2]=r,t[e>>2]=r,t[e+8>>2]=r+(n<<2);return}}function hI(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,o=e+4|0,e=r-n|0,(e|0)>0&&(vn(t[o>>2]|0,n|0,e|0)|0,t[o>>2]=(t[o>>2]|0)+(e>>>2<<2))}function h8(e){return e=e|0,1073741823}function mI(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>1073741823)_n();else{s=Tt(n<<2)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<2)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<2)}function vI(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>2)<<2)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function gI(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-4-n|0)>>>2)<<2)),e=t[e>>2]|0,e|0&&Ve(e)}function m8(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>1073741823)_n();else{s=Tt(n<<2)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<2)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<2)}function v8(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>2)<<2)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function g8(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-4-n|0)>>>2)<<2)),e=t[e>>2]|0,e|0&&Ve(e)}function _I(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0;var l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0,le=0,ie=0;if(ie=h,h=h+32|0,T=ie+20|0,P=ie+12|0,k=ie+16|0,q=ie+4|0,we=ie,le=ie+8|0,_=o8()|0,l=t[_>>2]|0,d=t[l>>2]|0,d|0)for(y=t[_+8>>2]|0,_=t[_+4>>2]|0;os(T,d),yI(e,T,_,y),l=l+4|0,d=t[l>>2]|0,d;)y=y+1|0,_=_+1|0;if(l=u8()|0,d=t[l>>2]|0,d|0)do os(T,d),t[P>>2]=t[l+4>>2],wI(n,T,P),l=l+8|0,d=t[l>>2]|0;while((d|0)!=0);if(l=t[(sa()|0)>>2]|0,l|0)do n=t[l+4>>2]|0,os(T,t[(la(n)|0)>>2]|0),t[P>>2]=A4(n)|0,DI(r,T,P),l=t[l>>2]|0;while((l|0)!=0);if(os(k,0),l=O4()|0,t[T>>2]=t[k>>2],s8(T,l,s),l=t[(sa()|0)>>2]|0,l|0){e=T+4|0,n=T+8|0,r=T+8|0;do{if(y=t[l+4>>2]|0,os(P,t[(la(y)|0)>>2]|0),EI(q,_8(y)|0),d=t[q>>2]|0,d|0){t[T>>2]=0,t[e>>2]=0,t[n>>2]=0;do os(we,t[(la(t[d+4>>2]|0)|0)>>2]|0),_=t[e>>2]|0,_>>>0<(t[r>>2]|0)>>>0?(t[_>>2]=t[we>>2],t[e>>2]=(t[e>>2]|0)+4):P4(T,we),d=t[d>>2]|0;while((d|0)!=0);SI(o,P,T),Rl(T)}t[le>>2]=t[P>>2],k=y8(y)|0,t[T>>2]=t[le>>2],s8(T,k,s),bd(q),l=t[l>>2]|0}while((l|0)!=0)}h=ie}function yI(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,RI(e,n,r,o)}function wI(e,n,r){e=e|0,n=n|0,r=r|0,LI(e,n,r)}function la(e){return e=e|0,e|0}function DI(e,n,r){e=e|0,n=n|0,r=r|0,II(e,n,r)}function _8(e){return e=e|0,e+16|0}function EI(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;if(l=h,h=h+16|0,s=l+8|0,r=l,t[e>>2]=0,o=t[n>>2]|0,t[s>>2]=o,t[r>>2]=e,r=OI(r)|0,o|0){if(o=Tt(12)|0,d=(w8(s)|0)+4|0,e=t[d+4>>2]|0,n=o+4|0,t[n>>2]=t[d>>2],t[n+4>>2]=e,n=t[t[s>>2]>>2]|0,t[s>>2]=n,!n)e=o;else for(n=o;e=Tt(12)|0,y=(w8(s)|0)+4|0,_=t[y+4>>2]|0,d=e+4|0,t[d>>2]=t[y>>2],t[d+4>>2]=_,t[n>>2]=e,d=t[t[s>>2]>>2]|0,t[s>>2]=d,d;)n=e;t[e>>2]=t[r>>2],t[r>>2]=o}h=l}function SI(e,n,r){e=e|0,n=n|0,r=r|0,CI(e,n,r)}function y8(e){return e=e|0,e+24|0}function CI(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+32|0,d=o+24|0,s=o+16|0,_=o+12|0,l=o,Zo(s),e=Oi(e)|0,t[_>>2]=t[n>>2],F4(l,r),t[d>>2]=t[_>>2],TI(e,d,l),Rl(l),eu(s),h=o}function TI(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=h,h=h+32|0,d=o+16|0,_=o+12|0,s=o,l=ko(xI()|0)|0,t[_>>2]=t[n>>2],t[d>>2]=t[_>>2],n=lc(d)|0,t[s>>2]=t[r>>2],d=r+4|0,t[s+4>>2]=t[d>>2],_=r+8|0,t[s+8>>2]=t[_>>2],t[_>>2]=0,t[d>>2]=0,t[r>>2]=0,Ts(0,l|0,e|0,n|0,R4(s)|0)|0,Rl(s),h=o}function xI(){var e=0;return c[7976]|0||(kI(10720),e=7976,t[e>>2]=1,t[e+4>>2]=0),10720}function kI(e){e=e|0,Ao(e,AI()|0,2)}function AI(){return 1732}function OI(e){return e=e|0,t[e>>2]|0}function w8(e){return e=e|0,t[e>>2]|0}function II(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;o=h,h=h+32|0,l=o+16|0,s=o+8|0,d=o,Zo(s),e=Oi(e)|0,t[d>>2]=t[n>>2],r=t[r>>2]|0,t[l>>2]=t[d>>2],D8(e,l,r),eu(s),h=o}function D8(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;o=h,h=h+16|0,l=o+4|0,d=o,s=ko(PI()|0)|0,t[d>>2]=t[n>>2],t[l>>2]=t[d>>2],n=lc(l)|0,Ts(0,s|0,e|0,n|0,l8(r)|0)|0,h=o}function PI(){var e=0;return c[7984]|0||(MI(10732),e=7984,t[e>>2]=1,t[e+4>>2]=0),10732}function MI(e){e=e|0,Ao(e,FI()|0,2)}function FI(){return 1744}function LI(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;o=h,h=h+32|0,l=o+16|0,s=o+8|0,d=o,Zo(s),e=Oi(e)|0,t[d>>2]=t[n>>2],r=t[r>>2]|0,t[l>>2]=t[d>>2],D8(e,l,r),eu(s),h=o}function RI(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0;s=h,h=h+32|0,d=s+16|0,l=s+8|0,_=s,Zo(l),e=Oi(e)|0,t[_>>2]=t[n>>2],r=c[r>>0]|0,o=c[o>>0]|0,t[d>>2]=t[_>>2],NI(e,d,r,o),eu(l),h=s}function NI(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0;s=h,h=h+16|0,d=s+4|0,_=s,l=ko(BI()|0)|0,t[_>>2]=t[n>>2],t[d>>2]=t[_>>2],n=lc(d)|0,r=fa(r)|0,Bu(0,l|0,e|0,n|0,r|0,fa(o)|0)|0,h=s}function BI(){var e=0;return c[7992]|0||(UI(10744),e=7992,t[e>>2]=1,t[e+4>>2]=0),10744}function fa(e){return e=e|0,jI(e)|0}function jI(e){return e=e|0,e&255|0}function UI(e){e=e|0,Ao(e,qI()|0,3)}function qI(){return 1756}function zI(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;switch(q=h,h=h+32|0,_=q+8|0,y=q+4|0,k=q+20|0,T=q,_1(e,0),o=jF(n)|0,t[_>>2]=0,P=_+4|0,t[P>>2]=0,t[_+8>>2]=0,o<<24>>24){case 0:{c[k>>0]=0,WI(y,r,k),rh(e,y)|0,ei(y);break}case 8:{P=z4(n)|0,c[k>>0]=8,os(T,t[P+4>>2]|0),HI(y,r,k,T,P+8|0),rh(e,y)|0,ei(y);break}case 9:{if(l=z4(n)|0,n=t[l+4>>2]|0,n|0)for(d=_+8|0,s=l+12|0;n=n+-1|0,os(y,t[s>>2]|0),o=t[P>>2]|0,o>>>0<(t[d>>2]|0)>>>0?(t[o>>2]=t[y>>2],t[P>>2]=(t[P>>2]|0)+4):P4(_,y),n;)s=s+4|0;c[k>>0]=9,os(T,t[l+8>>2]|0),bI(y,r,k,T,_),rh(e,y)|0,ei(y);break}default:P=z4(n)|0,c[k>>0]=o,os(T,t[P+4>>2]|0),GI(y,r,k,T),rh(e,y)|0,ei(y)}Rl(_),h=q}function WI(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0;o=h,h=h+16|0,s=o,Zo(s),n=Oi(n)|0,iP(e,n,c[r>>0]|0),eu(s),h=o}function rh(e,n){e=e|0,n=n|0;var r=0;return r=t[e>>2]|0,r|0&&ju(r|0),t[e>>2]=t[n>>2],t[n>>2]=0,e|0}function HI(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0;var l=0,d=0,_=0,y=0;l=h,h=h+32|0,_=l+16|0,d=l+8|0,y=l,Zo(d),n=Oi(n)|0,r=c[r>>0]|0,t[y>>2]=t[o>>2],s=t[s>>2]|0,t[_>>2]=t[y>>2],eP(e,n,r,_,s),eu(d),h=l}function bI(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0;var l=0,d=0,_=0,y=0,k=0;l=h,h=h+32|0,y=l+24|0,d=l+16|0,k=l+12|0,_=l,Zo(d),n=Oi(n)|0,r=c[r>>0]|0,t[k>>2]=t[o>>2],F4(_,s),t[y>>2]=t[k>>2],XI(e,n,r,y,_),Rl(_),eu(d),h=l}function GI(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0;s=h,h=h+32|0,d=s+16|0,l=s+8|0,_=s,Zo(l),n=Oi(n)|0,r=c[r>>0]|0,t[_>>2]=t[o>>2],t[d>>2]=t[_>>2],VI(e,n,r,d),eu(l),h=s}function VI(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0,d=0,_=0;s=h,h=h+16|0,l=s+4|0,_=s,d=ko(YI()|0)|0,r=fa(r)|0,t[_>>2]=t[o>>2],t[l>>2]=t[_>>2],ih(e,Ts(0,d|0,n|0,r|0,lc(l)|0)|0),h=s}function YI(){var e=0;return c[8e3]|0||($I(10756),e=8e3,t[e>>2]=1,t[e+4>>2]=0),10756}function ih(e,n){e=e|0,n=n|0,_1(e,n)}function $I(e){e=e|0,Ao(e,KI()|0,2)}function KI(){return 1772}function XI(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0;var l=0,d=0,_=0,y=0,k=0;l=h,h=h+32|0,y=l+16|0,k=l+12|0,d=l,_=ko(JI()|0)|0,r=fa(r)|0,t[k>>2]=t[o>>2],t[y>>2]=t[k>>2],o=lc(y)|0,t[d>>2]=t[s>>2],y=s+4|0,t[d+4>>2]=t[y>>2],k=s+8|0,t[d+8>>2]=t[k>>2],t[k>>2]=0,t[y>>2]=0,t[s>>2]=0,ih(e,Bu(0,_|0,n|0,r|0,o|0,R4(d)|0)|0),Rl(d),h=l}function JI(){var e=0;return c[8008]|0||(QI(10768),e=8008,t[e>>2]=1,t[e+4>>2]=0),10768}function QI(e){e=e|0,Ao(e,ZI()|0,3)}function ZI(){return 1784}function eP(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0;var l=0,d=0,_=0,y=0;l=h,h=h+16|0,_=l+4|0,y=l,d=ko(tP()|0)|0,r=fa(r)|0,t[y>>2]=t[o>>2],t[_>>2]=t[y>>2],o=lc(_)|0,ih(e,Bu(0,d|0,n|0,r|0,o|0,L4(s)|0)|0),h=l}function tP(){var e=0;return c[8016]|0||(nP(10780),e=8016,t[e>>2]=1,t[e+4>>2]=0),10780}function nP(e){e=e|0,Ao(e,rP()|0,3)}function rP(){return 1800}function iP(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;o=ko(oP()|0)|0,ih(e,sf(0,o|0,n|0,fa(r)|0)|0)}function oP(){var e=0;return c[8024]|0||(uP(10792),e=8024,t[e>>2]=1,t[e+4>>2]=0),10792}function uP(e){e=e|0,Ao(e,sP()|0,1)}function sP(){return 1816}function lP(){fP(),cP(),aP()}function fP(){t[2702]=K8(65536)|0}function cP(){PP(10856)}function aP(){dP(10816)}function dP(e){e=e|0,pP(e,5044),hP(e)|0}function pP(e,n){e=e|0,n=n|0;var r=0;r=a8()|0,t[e>>2]=r,TP(r,n),Cf(t[e>>2]|0)}function hP(e){e=e|0;var n=0;return n=t[e>>2]|0,uc(n,mP()|0),e|0}function mP(){var e=0;return c[8032]|0||(E8(10820),Bt(64,10820,Q|0)|0,e=8032,t[e>>2]=1,t[e+4>>2]=0),Dn(10820)|0||E8(10820),10820}function E8(e){e=e|0,_P(e),sc(e,25)}function vP(e){e=e|0,gP(e+24|0)}function gP(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function _P(e){e=e|0;var n=0;n=An()|0,Nn(e,5,18,n,EP()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function yP(e,n){e=e|0,n=n|0,wP(e,n)}function wP(e,n){e=e|0,n=n|0;var r=0,o=0,s=0;r=h,h=h+16|0,o=r,s=r+4|0,Ml(s,n),t[o>>2]=Fl(s,n)|0,DP(e,o),h=r}function DP(e,n){e=e|0,n=n|0,S8(e+4|0,t[n>>2]|0),c[e+8>>0]=1}function S8(e,n){e=e|0,n=n|0,t[e>>2]=n}function EP(){return 1824}function SP(e){return e=e|0,CP(e)|0}function CP(e){e=e|0;var n=0,r=0,o=0,s=0,l=0,d=0,_=0;return r=h,h=h+16|0,s=r+4|0,d=r,o=Qo(8)|0,n=o,_=Tt(4)|0,Ml(s,e),S8(_,Fl(s,e)|0),l=n+4|0,t[l>>2]=_,e=Tt(8)|0,l=t[l>>2]|0,t[d>>2]=0,t[s>>2]=t[d>>2],d8(e,l,s),t[o>>2]=e,h=r,n|0}function Qo(e){e=e|0;var n=0,r=0;return e=e+7&-8,(e>>>0<=32768?(n=t[2701]|0,e>>>0<=(65536-n|0)>>>0):0)?(r=(t[2702]|0)+n|0,t[2701]=n+e,e=r):(e=K8(e+8|0)|0,t[e>>2]=t[2703],t[2703]=e,e=e+8|0),e|0}function TP(e,n){e=e|0,n=n|0,t[e>>2]=xP()|0,t[e+4>>2]=kP()|0,t[e+12>>2]=n,t[e+8>>2]=AP()|0,t[e+32>>2]=9}function xP(){return 11744}function kP(){return 1832}function AP(){return th()|0}function OP(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,(Sf(o,896)|0)==512?r|0&&(IP(r),Ve(r)):n|0&&Ve(n)}function IP(e){e=e|0,e=t[e+4>>2]|0,e|0&&Tf(e)}function PP(e){e=e|0,MP(e,5052),FP(e)|0,LP(e,5058,26)|0,RP(e,5069,1)|0,NP(e,5077,10)|0,BP(e,5087,19)|0,jP(e,5094,27)|0}function MP(e,n){e=e|0,n=n|0;var r=0;r=IF()|0,t[e>>2]=r,PF(r,n),Cf(t[e>>2]|0)}function FP(e){e=e|0;var n=0;return n=t[e>>2]|0,uc(n,vF()|0),e|0}function LP(e,n,r){return e=e|0,n=n|0,r=r|0,QM(e,Zn(n)|0,r,0),e|0}function RP(e,n,r){return e=e|0,n=n|0,r=r|0,BM(e,Zn(n)|0,r,0),e|0}function NP(e,n,r){return e=e|0,n=n|0,r=r|0,mM(e,Zn(n)|0,r,0),e|0}function BP(e,n,r){return e=e|0,n=n|0,r=r|0,eM(e,Zn(n)|0,r,0),e|0}function C8(e,n){e=e|0,n=n|0;var r=0,o=0;e:for(;;){for(r=t[2703]|0;;){if((r|0)==(n|0))break e;if(o=t[r>>2]|0,t[2703]=o,!r)r=o;else break}Ve(r)}t[2701]=e}function jP(e,n,r){return e=e|0,n=n|0,r=r|0,UP(e,Zn(n)|0,r,0),e|0}function UP(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=t[e>>2]|0,s=N4()|0,e=qP(r)|0,ur(l,n,s,e,zP(r,o)|0,o)}function N4(){var e=0,n=0;if(c[8040]|0||(x8(10860),Bt(65,10860,Q|0)|0,n=8040,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10860)|0)){e=10860,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));x8(10860)}return 10860}function qP(e){return e=e|0,e|0}function zP(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=N4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(T8(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(WP(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function T8(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function WP(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=HP(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,bP(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,T8(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,GP(e,s),VP(s),h=_;return}}function HP(e){return e=e|0,536870911}function bP(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function GP(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function VP(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function x8(e){e=e|0,KP(e)}function YP(e){e=e|0,$P(e+24|0)}function $P(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function KP(e){e=e|0;var n=0;n=An()|0,Nn(e,1,11,n,XP()|0,2),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function XP(){return 1840}function JP(e,n,r){e=e|0,n=n|0,r=r|0,ZP(t[(QP(e)|0)>>2]|0,n,r)}function QP(e){return e=e|0,(t[(N4()|0)+24>>2]|0)+(e<<3)|0}function ZP(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;o=h,h=h+16|0,l=o+1|0,s=o,Ml(l,n),n=Fl(l,n)|0,Ml(s,r),r=Fl(s,r)|0,Bl[e&31](n,r),h=o}function eM(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=t[e>>2]|0,s=B4()|0,e=tM(r)|0,ur(l,n,s,e,nM(r,o)|0,o)}function B4(){var e=0,n=0;if(c[8048]|0||(A8(10896),Bt(66,10896,Q|0)|0,n=8048,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10896)|0)){e=10896,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));A8(10896)}return 10896}function tM(e){return e=e|0,e|0}function nM(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=B4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(k8(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(rM(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function k8(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function rM(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=iM(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,oM(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,k8(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,uM(e,s),sM(s),h=_;return}}function iM(e){return e=e|0,536870911}function oM(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function uM(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function sM(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function A8(e){e=e|0,cM(e)}function lM(e){e=e|0,fM(e+24|0)}function fM(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function cM(e){e=e|0;var n=0;n=An()|0,Nn(e,1,11,n,aM()|0,1),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function aM(){return 1852}function dM(e,n){return e=e|0,n=n|0,hM(t[(pM(e)|0)>>2]|0,n)|0}function pM(e){return e=e|0,(t[(B4()|0)+24>>2]|0)+(e<<3)|0}function hM(e,n){e=e|0,n=n|0;var r=0,o=0;return r=h,h=h+16|0,o=r,Ml(o,n),n=Fl(o,n)|0,n=ea(dc[e&31](n)|0)|0,h=r,n|0}function mM(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=t[e>>2]|0,s=j4()|0,e=vM(r)|0,ur(l,n,s,e,gM(r,o)|0,o)}function j4(){var e=0,n=0;if(c[8056]|0||(I8(10932),Bt(67,10932,Q|0)|0,n=8056,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10932)|0)){e=10932,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));I8(10932)}return 10932}function vM(e){return e=e|0,e|0}function gM(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=j4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(O8(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(_M(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function O8(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function _M(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=yM(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,wM(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,O8(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,DM(e,s),EM(s),h=_;return}}function yM(e){return e=e|0,536870911}function wM(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function DM(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function EM(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function I8(e){e=e|0,TM(e)}function SM(e){e=e|0,CM(e+24|0)}function CM(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function TM(e){e=e|0;var n=0;n=An()|0,Nn(e,1,7,n,xM()|0,2),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function xM(){return 1860}function kM(e,n,r){return e=e|0,n=n|0,r=r|0,OM(t[(AM(e)|0)>>2]|0,n,r)|0}function AM(e){return e=e|0,(t[(j4()|0)+24>>2]|0)+(e<<3)|0}function OM(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0;return o=h,h=h+32|0,d=o+12|0,l=o+8|0,_=o,y=o+16|0,s=o+4|0,IM(y,n),PM(_,y,n),$s(s,r),r=Ks(s,r)|0,t[d>>2]=t[_>>2],X1[e&15](l,d,r),r=MM(l)|0,ei(l),Xs(s),h=o,r|0}function IM(e,n){e=e|0,n=n|0}function PM(e,n,r){e=e|0,n=n|0,r=r|0,FM(e,r)}function MM(e){return e=e|0,Oi(e)|0}function FM(e,n){e=e|0,n=n|0;var r=0,o=0,s=0;s=h,h=h+16|0,r=s,o=n,o&1?(LM(r,0),c0(o|0,r|0)|0,RM(e,r),NM(r)):t[e>>2]=t[n>>2],h=s}function LM(e,n){e=e|0,n=n|0,wd(e,n),t[e+4>>2]=0,c[e+8>>0]=0}function RM(e,n){e=e|0,n=n|0,t[e>>2]=t[n+4>>2]}function NM(e){e=e|0,c[e+8>>0]=0}function BM(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=t[e>>2]|0,s=U4()|0,e=jM(r)|0,ur(l,n,s,e,UM(r,o)|0,o)}function U4(){var e=0,n=0;if(c[8064]|0||(M8(10968),Bt(68,10968,Q|0)|0,n=8064,t[n>>2]=1,t[n+4>>2]=0),!(Dn(10968)|0)){e=10968,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));M8(10968)}return 10968}function jM(e){return e=e|0,e|0}function UM(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=U4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(P8(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(qM(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function P8(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function qM(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=zM(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,WM(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,P8(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,HM(e,s),bM(s),h=_;return}}function zM(e){return e=e|0,536870911}function WM(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function HM(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function bM(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function M8(e){e=e|0,YM(e)}function GM(e){e=e|0,VM(e+24|0)}function VM(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function YM(e){e=e|0;var n=0;n=An()|0,Nn(e,1,1,n,$M()|0,5),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function $M(){return 1872}function KM(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,JM(t[(XM(e)|0)>>2]|0,n,r,o,s,l)}function XM(e){return e=e|0,(t[(U4()|0)+24>>2]|0)+(e<<3)|0}function JM(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0;var d=0,_=0,y=0,k=0,T=0,P=0;d=h,h=h+32|0,_=d+16|0,y=d+12|0,k=d+8|0,T=d+4|0,P=d,$s(_,n),n=Ks(_,n)|0,$s(y,r),r=Ks(y,r)|0,$s(k,o),o=Ks(k,o)|0,$s(T,s),s=Ks(T,s)|0,$s(P,l),l=Ks(P,l)|0,eD[e&1](n,r,o,s,l),Xs(P),Xs(T),Xs(k),Xs(y),Xs(_),h=d}function QM(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;l=t[e>>2]|0,s=q4()|0,e=ZM(r)|0,ur(l,n,s,e,eF(r,o)|0,o)}function q4(){var e=0,n=0;if(c[8072]|0||(L8(11004),Bt(69,11004,Q|0)|0,n=8072,t[n>>2]=1,t[n+4>>2]=0),!(Dn(11004)|0)){e=11004,n=e+36|0;do t[e>>2]=0,e=e+4|0;while((e|0)<(n|0));L8(11004)}return 11004}function ZM(e){return e=e|0,e|0}function eF(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0,_=0,y=0;return _=h,h=h+16|0,s=_,l=_+4|0,t[s>>2]=e,y=q4()|0,d=y+24|0,n=Lt(n,4)|0,t[l>>2]=n,r=y+28|0,o=t[r>>2]|0,o>>>0<(t[y+32>>2]|0)>>>0?(F8(o,e,n),n=(t[r>>2]|0)+8|0,t[r>>2]=n):(tF(d,s,l),n=t[r>>2]|0),h=_,(n-(t[d>>2]|0)>>3)+-1|0}function F8(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,t[e+4>>2]=r}function tF(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0;if(_=h,h=h+32|0,s=_,l=e+4|0,d=((t[l>>2]|0)-(t[e>>2]|0)>>3)+1|0,o=nF(e)|0,o>>>0>>0)$n(e);else{y=t[e>>2]|0,T=(t[e+8>>2]|0)-y|0,k=T>>2,rF(s,T>>3>>>0>>1>>>0?k>>>0>>0?d:k:o,(t[l>>2]|0)-y>>3,e+8|0),d=s+8|0,F8(t[d>>2]|0,t[n>>2]|0,t[r>>2]|0),t[d>>2]=(t[d>>2]|0)+8,iF(e,s),oF(s),h=_;return}}function nF(e){return e=e|0,536870911}function rF(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0;t[e+12>>2]=0,t[e+16>>2]=o;do if(n)if(n>>>0>536870911)_n();else{s=Tt(n<<3)|0;break}else s=0;while(0);t[e>>2]=s,o=s+(r<<3)|0,t[e+8>>2]=o,t[e+4>>2]=o,t[e+12>>2]=s+(n<<3)}function iF(e,n){e=e|0,n=n|0;var r=0,o=0,s=0,l=0,d=0;o=t[e>>2]|0,d=e+4|0,l=n+4|0,s=(t[d>>2]|0)-o|0,r=(t[l>>2]|0)+(0-(s>>3)<<3)|0,t[l>>2]=r,(s|0)>0?(vn(r|0,o|0,s|0)|0,o=l,r=t[l>>2]|0):o=l,l=t[e>>2]|0,t[e>>2]=r,t[o>>2]=l,l=n+8|0,s=t[d>>2]|0,t[d>>2]=t[l>>2],t[l>>2]=s,l=e+8|0,d=n+12|0,e=t[l>>2]|0,t[l>>2]=t[d>>2],t[d>>2]=e,t[n>>2]=t[o>>2]}function oF(e){e=e|0;var n=0,r=0,o=0;n=t[e+4>>2]|0,r=e+8|0,o=t[r>>2]|0,(o|0)!=(n|0)&&(t[r>>2]=o+(~((o+-8-n|0)>>>3)<<3)),e=t[e>>2]|0,e|0&&Ve(e)}function L8(e){e=e|0,lF(e)}function uF(e){e=e|0,sF(e+24|0)}function sF(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function lF(e){e=e|0;var n=0;n=An()|0,Nn(e,1,12,n,fF()|0,2),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function fF(){return 1896}function cF(e,n,r){e=e|0,n=n|0,r=r|0,dF(t[(aF(e)|0)>>2]|0,n,r)}function aF(e){return e=e|0,(t[(q4()|0)+24>>2]|0)+(e<<3)|0}function dF(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;o=h,h=h+16|0,l=o+4|0,s=o,pF(l,n),n=hF(l,n)|0,$s(s,r),r=Ks(s,r)|0,Bl[e&31](n,r),Xs(s),h=o}function pF(e,n){e=e|0,n=n|0}function hF(e,n){return e=e|0,n=n|0,mF(n)|0}function mF(e){return e=e|0,e|0}function vF(){var e=0;return c[8080]|0||(R8(11040),Bt(70,11040,Q|0)|0,e=8080,t[e>>2]=1,t[e+4>>2]=0),Dn(11040)|0||R8(11040),11040}function R8(e){e=e|0,yF(e),sc(e,71)}function gF(e){e=e|0,_F(e+24|0)}function _F(e){e=e|0;var n=0,r=0,o=0;r=t[e>>2]|0,o=r,r|0&&(e=e+4|0,n=t[e>>2]|0,(n|0)!=(r|0)&&(t[e>>2]=n+(~((n+-8-o|0)>>>3)<<3)),Ve(r))}function yF(e){e=e|0;var n=0;n=An()|0,Nn(e,5,7,n,SF()|0,0),t[e+24>>2]=0,t[e+28>>2]=0,t[e+32>>2]=0}function wF(e){e=e|0,DF(e)}function DF(e){e=e|0,EF(e)}function EF(e){e=e|0,c[e+8>>0]=1}function SF(){return 1936}function CF(){return TF()|0}function TF(){var e=0,n=0,r=0,o=0,s=0,l=0,d=0;return n=h,h=h+16|0,s=n+4|0,d=n,r=Qo(8)|0,e=r,l=e+4|0,t[l>>2]=Tt(1)|0,o=Tt(8)|0,l=t[l>>2]|0,t[d>>2]=0,t[s>>2]=t[d>>2],xF(o,l,s),t[r>>2]=o,h=n,e|0}function xF(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]=n,r=Tt(16)|0,t[r+4>>2]=0,t[r+8>>2]=0,t[r>>2]=1916,t[r+12>>2]=n,t[e+4>>2]=r}function kF(e){e=e|0,da(e),Ve(e)}function AF(e){e=e|0,e=t[e+12>>2]|0,e|0&&Ve(e)}function OF(e){e=e|0,Ve(e)}function IF(){var e=0;return c[8088]|0||(BF(11076),Bt(25,11076,Q|0)|0,e=8088,t[e>>2]=1,t[e+4>>2]=0),11076}function PF(e,n){e=e|0,n=n|0,t[e>>2]=MF()|0,t[e+4>>2]=FF()|0,t[e+12>>2]=n,t[e+8>>2]=LF()|0,t[e+32>>2]=10}function MF(){return 11745}function FF(){return 1940}function LF(){return eh()|0}function RF(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,(Sf(o,896)|0)==512?r|0&&(NF(r),Ve(r)):n|0&&Ve(n)}function NF(e){e=e|0,e=t[e+4>>2]|0,e|0&&Tf(e)}function BF(e){e=e|0,Ys(e)}function os(e,n){e=e|0,n=n|0,t[e>>2]=n}function z4(e){return e=e|0,t[e>>2]|0}function jF(e){return e=e|0,c[t[e>>2]>>0]|0}function UF(e,n){e=e|0,n=n|0;var r=0,o=0;r=h,h=h+16|0,o=r,t[o>>2]=t[e>>2],qF(n,o)|0,h=r}function qF(e,n){e=e|0,n=n|0;var r=0;return r=zF(t[e>>2]|0,n)|0,n=e+4|0,t[(t[n>>2]|0)+8>>2]=r,t[(t[n>>2]|0)+8>>2]|0}function zF(e,n){e=e|0,n=n|0;var r=0,o=0;return r=h,h=h+16|0,o=r,Zo(o),e=Oi(e)|0,n=WF(e,t[n>>2]|0)|0,eu(o),h=r,n|0}function Zo(e){e=e|0,t[e>>2]=t[2701],t[e+4>>2]=t[2703]}function WF(e,n){e=e|0,n=n|0;var r=0;return r=ko(HF()|0)|0,sf(0,r|0,e|0,L4(n)|0)|0}function eu(e){e=e|0,C8(t[e>>2]|0,t[e+4>>2]|0)}function HF(){var e=0;return c[8096]|0||(bF(11120),e=8096,t[e>>2]=1,t[e+4>>2]=0),11120}function bF(e){e=e|0,Ao(e,GF()|0,1)}function GF(){return 1948}function VF(){YF()}function YF(){var e=0,n=0,r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0,le=0,ie=0;if(le=h,h=h+16|0,T=le+4|0,P=le,si(65536,10804,t[2702]|0,10812),r=o8()|0,n=t[r>>2]|0,e=t[n>>2]|0,e|0)for(o=t[r+8>>2]|0,r=t[r+4>>2]|0;As(e|0,C[r>>0]|0|0,c[o>>0]|0),n=n+4|0,e=t[n>>2]|0,e;)o=o+1|0,r=r+1|0;if(e=u8()|0,n=t[e>>2]|0,n|0)do uu(n|0,t[e+4>>2]|0),e=e+8|0,n=t[e>>2]|0;while((n|0)!=0);uu($F()|0,5167),k=sa()|0,e=t[k>>2]|0;e:do if(e|0){do KF(t[e+4>>2]|0),e=t[e>>2]|0;while((e|0)!=0);if(e=t[k>>2]|0,e|0){y=k;do{for(;s=e,e=t[e>>2]|0,s=t[s+4>>2]|0,!!(XF(s)|0);)if(t[P>>2]=y,t[T>>2]=t[P>>2],JF(k,T)|0,!e)break e;if(QF(s),y=t[y>>2]|0,n=N8(s)|0,l=Wo()|0,d=h,h=h+((1*(n<<2)|0)+15&-16)|0,_=h,h=h+((1*(n<<2)|0)+15&-16)|0,n=t[(_8(s)|0)>>2]|0,n|0)for(r=d,o=_;t[r>>2]=t[(la(t[n+4>>2]|0)|0)>>2],t[o>>2]=t[n+8>>2],n=t[n>>2]|0,n;)r=r+4|0,o=o+4|0;ie=la(s)|0,n=ZF(s)|0,r=N8(s)|0,o=eL(s)|0,Is(ie|0,n|0,d|0,_|0,r|0,o|0,A4(s)|0),b0(l|0)}while((e|0)!=0)}}while(0);if(e=t[(O4()|0)>>2]|0,e|0)do ie=e+4|0,k=I4(ie)|0,s=V1(k)|0,l=b1(k)|0,d=(G1(k)|0)+1|0,_=oh(k)|0,y=B8(ie)|0,k=Dn(k)|0,T=nh(ie)|0,P=W4(ie)|0,zo(0,s|0,l|0,d|0,_|0,y|0,k|0,T|0,P|0,H4(ie)|0),e=t[e>>2]|0;while((e|0)!=0);e=t[(sa()|0)>>2]|0;e:do if(e|0){t:for(;;){if(n=t[e+4>>2]|0,n|0?(q=t[(la(n)|0)>>2]|0,we=t[(y8(n)|0)>>2]|0,we|0):0){r=we;do{n=r+4|0,o=I4(n)|0;n:do if(o|0)switch(Dn(o)|0){case 0:break t;case 4:case 3:case 2:{_=V1(o)|0,y=b1(o)|0,k=(G1(o)|0)+1|0,T=oh(o)|0,P=Dn(o)|0,ie=nh(n)|0,zo(q|0,_|0,y|0,k|0,T|0,0,P|0,ie|0,W4(n)|0,H4(n)|0);break n}case 1:{d=V1(o)|0,_=b1(o)|0,y=(G1(o)|0)+1|0,k=oh(o)|0,T=B8(n)|0,P=Dn(o)|0,ie=nh(n)|0,zo(q|0,d|0,_|0,y|0,k|0,T|0,P|0,ie|0,W4(n)|0,H4(n)|0);break n}case 5:{k=V1(o)|0,T=b1(o)|0,P=(G1(o)|0)+1|0,ie=oh(o)|0,zo(q|0,k|0,T|0,P|0,ie|0,tL(o)|0,Dn(o)|0,0,0,0);break n}default:break n}while(0);r=t[r>>2]|0}while((r|0)!=0)}if(e=t[e>>2]|0,!e)break e}_n()}while(0);uf(),h=le}function $F(){return 11703}function KF(e){e=e|0,c[e+40>>0]=0}function XF(e){return e=e|0,(c[e+40>>0]|0)!=0|0}function JF(e,n){return e=e|0,n=n|0,n=nL(n)|0,e=t[n>>2]|0,t[n>>2]=t[e>>2],Ve(e),t[n>>2]|0}function QF(e){e=e|0,c[e+40>>0]=1}function N8(e){return e=e|0,t[e+20>>2]|0}function ZF(e){return e=e|0,t[e+8>>2]|0}function eL(e){return e=e|0,t[e+32>>2]|0}function oh(e){return e=e|0,t[e+4>>2]|0}function B8(e){return e=e|0,t[e+4>>2]|0}function W4(e){return e=e|0,t[e+8>>2]|0}function H4(e){return e=e|0,t[e+16>>2]|0}function tL(e){return e=e|0,t[e+20>>2]|0}function nL(e){return e=e|0,t[e>>2]|0}function uh(e){e=e|0;var n=0,r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0,le=0,ie=0,Pe=0,ke=0,qe=0,pe=0,_e=0,vt=0;vt=h,h=h+16|0,q=vt;do if(e>>>0<245){if(k=e>>>0<11?16:e+11&-8,e=k>>>3,P=t[2783]|0,r=P>>>e,r&3|0)return n=(r&1^1)+e|0,e=11172+(n<<1<<2)|0,r=e+8|0,o=t[r>>2]|0,s=o+8|0,l=t[s>>2]|0,(e|0)==(l|0)?t[2783]=P&~(1<>2]=e,t[r>>2]=l),_e=n<<3,t[o+4>>2]=_e|3,_e=o+_e+4|0,t[_e>>2]=t[_e>>2]|1,_e=s,h=vt,_e|0;if(T=t[2785]|0,k>>>0>T>>>0){if(r|0)return n=2<>>12&16,n=n>>>d,r=n>>>5&8,n=n>>>r,s=n>>>2&4,n=n>>>s,e=n>>>1&2,n=n>>>e,o=n>>>1&1,o=(r|d|s|e|o)+(n>>>o)|0,n=11172+(o<<1<<2)|0,e=n+8|0,s=t[e>>2]|0,d=s+8|0,r=t[d>>2]|0,(n|0)==(r|0)?(e=P&~(1<>2]=n,t[e>>2]=r,e=P),l=(o<<3)-k|0,t[s+4>>2]=k|3,o=s+k|0,t[o+4>>2]=l|1,t[o+l>>2]=l,T|0&&(s=t[2788]|0,n=T>>>3,r=11172+(n<<1<<2)|0,n=1<>2]|0):(t[2783]=e|n,n=r,e=r+8|0),t[e>>2]=s,t[n+12>>2]=s,t[s+8>>2]=n,t[s+12>>2]=r),t[2785]=l,t[2788]=o,_e=d,h=vt,_e|0;if(_=t[2784]|0,_){if(r=(_&0-_)+-1|0,d=r>>>12&16,r=r>>>d,l=r>>>5&8,r=r>>>l,y=r>>>2&4,r=r>>>y,o=r>>>1&2,r=r>>>o,e=r>>>1&1,e=t[11436+((l|d|y|o|e)+(r>>>e)<<2)>>2]|0,r=(t[e+4>>2]&-8)-k|0,o=t[e+16+(((t[e+16>>2]|0)==0&1)<<2)>>2]|0,!o)y=e,l=r;else{do d=(t[o+4>>2]&-8)-k|0,y=d>>>0>>0,r=y?d:r,e=y?o:e,o=t[o+16+(((t[o+16>>2]|0)==0&1)<<2)>>2]|0;while((o|0)!=0);y=e,l=r}if(d=y+k|0,y>>>0>>0){s=t[y+24>>2]|0,n=t[y+12>>2]|0;do if((n|0)==(y|0)){if(e=y+20|0,n=t[e>>2]|0,!n&&(e=y+16|0,n=t[e>>2]|0,!n)){r=0;break}for(;;){if(r=n+20|0,o=t[r>>2]|0,o|0){n=o,e=r;continue}if(r=n+16|0,o=t[r>>2]|0,o)n=o,e=r;else break}t[e>>2]=0,r=n}else r=t[y+8>>2]|0,t[r+12>>2]=n,t[n+8>>2]=r,r=n;while(0);do if(s|0){if(n=t[y+28>>2]|0,e=11436+(n<<2)|0,(y|0)==(t[e>>2]|0)){if(t[e>>2]=r,!r){t[2784]=_&~(1<>2]|0)!=(y|0)&1)<<2)>>2]=r,!r)break;t[r+24>>2]=s,n=t[y+16>>2]|0,n|0&&(t[r+16>>2]=n,t[n+24>>2]=r),n=t[y+20>>2]|0,n|0&&(t[r+20>>2]=n,t[n+24>>2]=r)}while(0);return l>>>0<16?(_e=l+k|0,t[y+4>>2]=_e|3,_e=y+_e+4|0,t[_e>>2]=t[_e>>2]|1):(t[y+4>>2]=k|3,t[d+4>>2]=l|1,t[d+l>>2]=l,T|0&&(o=t[2788]|0,n=T>>>3,r=11172+(n<<1<<2)|0,n=1<>2]|0):(t[2783]=P|n,n=r,e=r+8|0),t[e>>2]=o,t[n+12>>2]=o,t[o+8>>2]=n,t[o+12>>2]=r),t[2785]=l,t[2788]=d),_e=y+8|0,h=vt,_e|0}else P=k}else P=k}else P=k}else if(e>>>0<=4294967231)if(e=e+11|0,k=e&-8,y=t[2784]|0,y){o=0-k|0,e=e>>>8,e?k>>>0>16777215?_=31:(P=(e+1048320|0)>>>16&8,pe=e<>>16&4,pe=pe<>>16&2,_=14-(T|P|_)+(pe<<_>>>15)|0,_=k>>>(_+7|0)&1|_<<1):_=0,r=t[11436+(_<<2)>>2]|0;e:do if(!r)r=0,e=0,pe=57;else for(e=0,d=k<<((_|0)==31?0:25-(_>>>1)|0),l=0;;){if(s=(t[r+4>>2]&-8)-k|0,s>>>0>>0)if(s)e=r,o=s;else{e=r,o=0,s=r,pe=61;break e}if(s=t[r+20>>2]|0,r=t[r+16+(d>>>31<<2)>>2]|0,l=(s|0)==0|(s|0)==(r|0)?l:s,s=(r|0)==0,s){r=l,pe=57;break}else d=d<<((s^1)&1)}while(0);if((pe|0)==57){if((r|0)==0&(e|0)==0){if(e=2<<_,e=y&(e|0-e),!e){P=k;break}P=(e&0-e)+-1|0,d=P>>>12&16,P=P>>>d,l=P>>>5&8,P=P>>>l,_=P>>>2&4,P=P>>>_,T=P>>>1&2,P=P>>>T,r=P>>>1&1,e=0,r=t[11436+((l|d|_|T|r)+(P>>>r)<<2)>>2]|0}r?(s=r,pe=61):(_=e,d=o)}if((pe|0)==61)for(;;)if(pe=0,r=(t[s+4>>2]&-8)-k|0,P=r>>>0>>0,r=P?r:o,e=P?s:e,s=t[s+16+(((t[s+16>>2]|0)==0&1)<<2)>>2]|0,s)o=r,pe=61;else{_=e,d=r;break}if((_|0)!=0?d>>>0<((t[2785]|0)-k|0)>>>0:0){if(l=_+k|0,_>>>0>=l>>>0)return _e=0,h=vt,_e|0;s=t[_+24>>2]|0,n=t[_+12>>2]|0;do if((n|0)==(_|0)){if(e=_+20|0,n=t[e>>2]|0,!n&&(e=_+16|0,n=t[e>>2]|0,!n)){n=0;break}for(;;){if(r=n+20|0,o=t[r>>2]|0,o|0){n=o,e=r;continue}if(r=n+16|0,o=t[r>>2]|0,o)n=o,e=r;else break}t[e>>2]=0}else _e=t[_+8>>2]|0,t[_e+12>>2]=n,t[n+8>>2]=_e;while(0);do if(s){if(e=t[_+28>>2]|0,r=11436+(e<<2)|0,(_|0)==(t[r>>2]|0)){if(t[r>>2]=n,!n){o=y&~(1<>2]|0)!=(_|0)&1)<<2)>>2]=n,!n){o=y;break}t[n+24>>2]=s,e=t[_+16>>2]|0,e|0&&(t[n+16>>2]=e,t[e+24>>2]=n),e=t[_+20>>2]|0,e&&(t[n+20>>2]=e,t[e+24>>2]=n),o=y}else o=y;while(0);do if(d>>>0>=16){if(t[_+4>>2]=k|3,t[l+4>>2]=d|1,t[l+d>>2]=d,n=d>>>3,d>>>0<256){r=11172+(n<<1<<2)|0,e=t[2783]|0,n=1<>2]|0):(t[2783]=e|n,n=r,e=r+8|0),t[e>>2]=l,t[n+12>>2]=l,t[l+8>>2]=n,t[l+12>>2]=r;break}if(n=d>>>8,n?d>>>0>16777215?n=31:(pe=(n+1048320|0)>>>16&8,_e=n<>>16&4,_e=_e<>>16&2,n=14-(qe|pe|n)+(_e<>>15)|0,n=d>>>(n+7|0)&1|n<<1):n=0,r=11436+(n<<2)|0,t[l+28>>2]=n,e=l+16|0,t[e+4>>2]=0,t[e>>2]=0,e=1<>2]=l,t[l+24>>2]=r,t[l+12>>2]=l,t[l+8>>2]=l;break}for(e=d<<((n|0)==31?0:25-(n>>>1)|0),r=t[r>>2]|0;;){if((t[r+4>>2]&-8|0)==(d|0)){pe=97;break}if(o=r+16+(e>>>31<<2)|0,n=t[o>>2]|0,n)e=e<<1,r=n;else{pe=96;break}}if((pe|0)==96){t[o>>2]=l,t[l+24>>2]=r,t[l+12>>2]=l,t[l+8>>2]=l;break}else if((pe|0)==97){pe=r+8|0,_e=t[pe>>2]|0,t[_e+12>>2]=l,t[pe>>2]=l,t[l+8>>2]=_e,t[l+12>>2]=r,t[l+24>>2]=0;break}}else _e=d+k|0,t[_+4>>2]=_e|3,_e=_+_e+4|0,t[_e>>2]=t[_e>>2]|1;while(0);return _e=_+8|0,h=vt,_e|0}else P=k}else P=k;else P=-1;while(0);if(r=t[2785]|0,r>>>0>=P>>>0)return n=r-P|0,e=t[2788]|0,n>>>0>15?(_e=e+P|0,t[2788]=_e,t[2785]=n,t[_e+4>>2]=n|1,t[_e+n>>2]=n,t[e+4>>2]=P|3):(t[2785]=0,t[2788]=0,t[e+4>>2]=r|3,_e=e+r+4|0,t[_e>>2]=t[_e>>2]|1),_e=e+8|0,h=vt,_e|0;if(d=t[2786]|0,d>>>0>P>>>0)return qe=d-P|0,t[2786]=qe,_e=t[2789]|0,pe=_e+P|0,t[2789]=pe,t[pe+4>>2]=qe|1,t[_e+4>>2]=P|3,_e=_e+8|0,h=vt,_e|0;if(t[2901]|0?e=t[2903]|0:(t[2903]=4096,t[2902]=4096,t[2904]=-1,t[2905]=-1,t[2906]=0,t[2894]=0,e=q&-16^1431655768,t[q>>2]=e,t[2901]=e,e=4096),_=P+48|0,y=P+47|0,l=e+y|0,s=0-e|0,k=l&s,k>>>0<=P>>>0||(e=t[2893]|0,e|0?(T=t[2891]|0,q=T+k|0,q>>>0<=T>>>0|q>>>0>e>>>0):0))return _e=0,h=vt,_e|0;e:do if(t[2894]&4)n=0,pe=133;else{r=t[2789]|0;t:do if(r){for(o=11580;e=t[o>>2]|0,!(e>>>0<=r>>>0?(ie=o+4|0,(e+(t[ie>>2]|0)|0)>>>0>r>>>0):0);)if(e=t[o+8>>2]|0,e)o=e;else{pe=118;break t}if(n=l-d&s,n>>>0<2147483647)if(e=xf(n|0)|0,(e|0)==((t[o>>2]|0)+(t[ie>>2]|0)|0)){if((e|0)!=(-1|0)){d=n,l=e,pe=135;break e}}else o=e,pe=126;else n=0}else pe=118;while(0);do if((pe|0)==118)if(r=xf(0)|0,(r|0)!=(-1|0)?(n=r,we=t[2902]|0,le=we+-1|0,n=((le&n|0)==0?0:(le+n&0-we)-n|0)+k|0,we=t[2891]|0,le=n+we|0,n>>>0>P>>>0&n>>>0<2147483647):0){if(ie=t[2893]|0,ie|0?le>>>0<=we>>>0|le>>>0>ie>>>0:0){n=0;break}if(e=xf(n|0)|0,(e|0)==(r|0)){d=n,l=r,pe=135;break e}else o=e,pe=126}else n=0;while(0);do if((pe|0)==126){if(r=0-n|0,!(_>>>0>n>>>0&(n>>>0<2147483647&(o|0)!=(-1|0))))if((o|0)==(-1|0)){n=0;break}else{d=n,l=o,pe=135;break e}if(e=t[2903]|0,e=y-n+e&0-e,e>>>0>=2147483647){d=n,l=o,pe=135;break e}if((xf(e|0)|0)==(-1|0)){xf(r|0)|0,n=0;break}else{d=e+n|0,l=o,pe=135;break e}}while(0);t[2894]=t[2894]|4,pe=133}while(0);if((((pe|0)==133?k>>>0<2147483647:0)?(qe=xf(k|0)|0,ie=xf(0)|0,Pe=ie-qe|0,ke=Pe>>>0>(P+40|0)>>>0,!((qe|0)==(-1|0)|ke^1|qe>>>0>>0&((qe|0)!=(-1|0)&(ie|0)!=(-1|0))^1)):0)&&(d=ke?Pe:n,l=qe,pe=135),(pe|0)==135){n=(t[2891]|0)+d|0,t[2891]=n,n>>>0>(t[2892]|0)>>>0&&(t[2892]=n),y=t[2789]|0;do if(y){for(n=11580;;){if(e=t[n>>2]|0,r=n+4|0,o=t[r>>2]|0,(l|0)==(e+o|0)){pe=145;break}if(s=t[n+8>>2]|0,s)n=s;else break}if(((pe|0)==145?(t[n+12>>2]&8|0)==0:0)?y>>>0>>0&y>>>0>=e>>>0:0){t[r>>2]=o+d,_e=y+8|0,_e=(_e&7|0)==0?0:0-_e&7,pe=y+_e|0,_e=(t[2786]|0)+(d-_e)|0,t[2789]=pe,t[2786]=_e,t[pe+4>>2]=_e|1,t[pe+_e+4>>2]=40,t[2790]=t[2905];break}for(l>>>0<(t[2787]|0)>>>0&&(t[2787]=l),r=l+d|0,n=11580;;){if((t[n>>2]|0)==(r|0)){pe=153;break}if(e=t[n+8>>2]|0,e)n=e;else break}if((pe|0)==153?(t[n+12>>2]&8|0)==0:0){t[n>>2]=l,T=n+4|0,t[T>>2]=(t[T>>2]|0)+d,T=l+8|0,T=l+((T&7|0)==0?0:0-T&7)|0,n=r+8|0,n=r+((n&7|0)==0?0:0-n&7)|0,k=T+P|0,_=n-T-P|0,t[T+4>>2]=P|3;do if((n|0)!=(y|0)){if((n|0)==(t[2788]|0)){_e=(t[2785]|0)+_|0,t[2785]=_e,t[2788]=k,t[k+4>>2]=_e|1,t[k+_e>>2]=_e;break}if(e=t[n+4>>2]|0,(e&3|0)==1){d=e&-8,o=e>>>3;e:do if(e>>>0<256)if(e=t[n+8>>2]|0,r=t[n+12>>2]|0,(r|0)==(e|0)){t[2783]=t[2783]&~(1<>2]=r,t[r+8>>2]=e;break}else{l=t[n+24>>2]|0,e=t[n+12>>2]|0;do if((e|0)==(n|0)){if(o=n+16|0,r=o+4|0,e=t[r>>2]|0,!e)if(e=t[o>>2]|0,e)r=o;else{e=0;break}for(;;){if(o=e+20|0,s=t[o>>2]|0,s|0){e=s,r=o;continue}if(o=e+16|0,s=t[o>>2]|0,s)e=s,r=o;else break}t[r>>2]=0}else _e=t[n+8>>2]|0,t[_e+12>>2]=e,t[e+8>>2]=_e;while(0);if(!l)break;r=t[n+28>>2]|0,o=11436+(r<<2)|0;do if((n|0)!=(t[o>>2]|0)){if(t[l+16+(((t[l+16>>2]|0)!=(n|0)&1)<<2)>>2]=e,!e)break e}else{if(t[o>>2]=e,e|0)break;t[2784]=t[2784]&~(1<>2]=l,r=n+16|0,o=t[r>>2]|0,o|0&&(t[e+16>>2]=o,t[o+24>>2]=e),r=t[r+4>>2]|0,!r)break;t[e+20>>2]=r,t[r+24>>2]=e}while(0);n=n+d|0,s=d+_|0}else s=_;if(n=n+4|0,t[n>>2]=t[n>>2]&-2,t[k+4>>2]=s|1,t[k+s>>2]=s,n=s>>>3,s>>>0<256){r=11172+(n<<1<<2)|0,e=t[2783]|0,n=1<>2]|0):(t[2783]=e|n,n=r,e=r+8|0),t[e>>2]=k,t[n+12>>2]=k,t[k+8>>2]=n,t[k+12>>2]=r;break}n=s>>>8;do if(!n)n=0;else{if(s>>>0>16777215){n=31;break}pe=(n+1048320|0)>>>16&8,_e=n<>>16&4,_e=_e<>>16&2,n=14-(qe|pe|n)+(_e<>>15)|0,n=s>>>(n+7|0)&1|n<<1}while(0);if(o=11436+(n<<2)|0,t[k+28>>2]=n,e=k+16|0,t[e+4>>2]=0,t[e>>2]=0,e=t[2784]|0,r=1<>2]=k,t[k+24>>2]=o,t[k+12>>2]=k,t[k+8>>2]=k;break}for(e=s<<((n|0)==31?0:25-(n>>>1)|0),r=t[o>>2]|0;;){if((t[r+4>>2]&-8|0)==(s|0)){pe=194;break}if(o=r+16+(e>>>31<<2)|0,n=t[o>>2]|0,n)e=e<<1,r=n;else{pe=193;break}}if((pe|0)==193){t[o>>2]=k,t[k+24>>2]=r,t[k+12>>2]=k,t[k+8>>2]=k;break}else if((pe|0)==194){pe=r+8|0,_e=t[pe>>2]|0,t[_e+12>>2]=k,t[pe>>2]=k,t[k+8>>2]=_e,t[k+12>>2]=r,t[k+24>>2]=0;break}}else _e=(t[2786]|0)+_|0,t[2786]=_e,t[2789]=k,t[k+4>>2]=_e|1;while(0);return _e=T+8|0,h=vt,_e|0}for(n=11580;e=t[n>>2]|0,!(e>>>0<=y>>>0?(_e=e+(t[n+4>>2]|0)|0,_e>>>0>y>>>0):0);)n=t[n+8>>2]|0;s=_e+-47|0,e=s+8|0,e=s+((e&7|0)==0?0:0-e&7)|0,s=y+16|0,e=e>>>0>>0?y:e,n=e+8|0,r=l+8|0,r=(r&7|0)==0?0:0-r&7,pe=l+r|0,r=d+-40-r|0,t[2789]=pe,t[2786]=r,t[pe+4>>2]=r|1,t[pe+r+4>>2]=40,t[2790]=t[2905],r=e+4|0,t[r>>2]=27,t[n>>2]=t[2895],t[n+4>>2]=t[2896],t[n+8>>2]=t[2897],t[n+12>>2]=t[2898],t[2895]=l,t[2896]=d,t[2898]=0,t[2897]=n,n=e+24|0;do pe=n,n=n+4|0,t[n>>2]=7;while((pe+8|0)>>>0<_e>>>0);if((e|0)!=(y|0)){if(l=e-y|0,t[r>>2]=t[r>>2]&-2,t[y+4>>2]=l|1,t[e>>2]=l,n=l>>>3,l>>>0<256){r=11172+(n<<1<<2)|0,e=t[2783]|0,n=1<>2]|0):(t[2783]=e|n,n=r,e=r+8|0),t[e>>2]=y,t[n+12>>2]=y,t[y+8>>2]=n,t[y+12>>2]=r;break}if(n=l>>>8,n?l>>>0>16777215?r=31:(pe=(n+1048320|0)>>>16&8,_e=n<>>16&4,_e=_e<>>16&2,r=14-(qe|pe|r)+(_e<>>15)|0,r=l>>>(r+7|0)&1|r<<1):r=0,o=11436+(r<<2)|0,t[y+28>>2]=r,t[y+20>>2]=0,t[s>>2]=0,n=t[2784]|0,e=1<>2]=y,t[y+24>>2]=o,t[y+12>>2]=y,t[y+8>>2]=y;break}for(e=l<<((r|0)==31?0:25-(r>>>1)|0),r=t[o>>2]|0;;){if((t[r+4>>2]&-8|0)==(l|0)){pe=216;break}if(o=r+16+(e>>>31<<2)|0,n=t[o>>2]|0,n)e=e<<1,r=n;else{pe=215;break}}if((pe|0)==215){t[o>>2]=y,t[y+24>>2]=r,t[y+12>>2]=y,t[y+8>>2]=y;break}else if((pe|0)==216){pe=r+8|0,_e=t[pe>>2]|0,t[_e+12>>2]=y,t[pe>>2]=y,t[y+8>>2]=_e,t[y+12>>2]=r,t[y+24>>2]=0;break}}}else{_e=t[2787]|0,(_e|0)==0|l>>>0<_e>>>0&&(t[2787]=l),t[2895]=l,t[2896]=d,t[2898]=0,t[2792]=t[2901],t[2791]=-1,n=0;do _e=11172+(n<<1<<2)|0,t[_e+12>>2]=_e,t[_e+8>>2]=_e,n=n+1|0;while((n|0)!=32);_e=l+8|0,_e=(_e&7|0)==0?0:0-_e&7,pe=l+_e|0,_e=d+-40-_e|0,t[2789]=pe,t[2786]=_e,t[pe+4>>2]=_e|1,t[pe+_e+4>>2]=40,t[2790]=t[2905]}while(0);if(n=t[2786]|0,n>>>0>P>>>0)return qe=n-P|0,t[2786]=qe,_e=t[2789]|0,pe=_e+P|0,t[2789]=pe,t[pe+4>>2]=qe|1,t[_e+4>>2]=P|3,_e=_e+8|0,h=vt,_e|0}return t[(ca()|0)>>2]=12,_e=0,h=vt,_e|0}function sh(e){e=e|0;var n=0,r=0,o=0,s=0,l=0,d=0,_=0,y=0;if(!!e){r=e+-8|0,s=t[2787]|0,e=t[e+-4>>2]|0,n=e&-8,y=r+n|0;do if(e&1)_=r,d=r;else{if(o=t[r>>2]|0,!(e&3)||(d=r+(0-o)|0,l=o+n|0,d>>>0>>0))return;if((d|0)==(t[2788]|0)){if(e=y+4|0,n=t[e>>2]|0,(n&3|0)!=3){_=d,n=l;break}t[2785]=l,t[e>>2]=n&-2,t[d+4>>2]=l|1,t[d+l>>2]=l;return}if(r=o>>>3,o>>>0<256)if(e=t[d+8>>2]|0,n=t[d+12>>2]|0,(n|0)==(e|0)){t[2783]=t[2783]&~(1<>2]=n,t[n+8>>2]=e,_=d,n=l;break}s=t[d+24>>2]|0,e=t[d+12>>2]|0;do if((e|0)==(d|0)){if(r=d+16|0,n=r+4|0,e=t[n>>2]|0,!e)if(e=t[r>>2]|0,e)n=r;else{e=0;break}for(;;){if(r=e+20|0,o=t[r>>2]|0,o|0){e=o,n=r;continue}if(r=e+16|0,o=t[r>>2]|0,o)e=o,n=r;else break}t[n>>2]=0}else _=t[d+8>>2]|0,t[_+12>>2]=e,t[e+8>>2]=_;while(0);if(s){if(n=t[d+28>>2]|0,r=11436+(n<<2)|0,(d|0)==(t[r>>2]|0)){if(t[r>>2]=e,!e){t[2784]=t[2784]&~(1<>2]|0)!=(d|0)&1)<<2)>>2]=e,!e){_=d,n=l;break}t[e+24>>2]=s,n=d+16|0,r=t[n>>2]|0,r|0&&(t[e+16>>2]=r,t[r+24>>2]=e),n=t[n+4>>2]|0,n?(t[e+20>>2]=n,t[n+24>>2]=e,_=d,n=l):(_=d,n=l)}else _=d,n=l}while(0);if(!(d>>>0>=y>>>0)&&(e=y+4|0,o=t[e>>2]|0,!!(o&1))){if(o&2)t[e>>2]=o&-2,t[_+4>>2]=n|1,t[d+n>>2]=n,s=n;else{if(e=t[2788]|0,(y|0)==(t[2789]|0)){if(y=(t[2786]|0)+n|0,t[2786]=y,t[2789]=_,t[_+4>>2]=y|1,(_|0)!=(e|0))return;t[2788]=0,t[2785]=0;return}if((y|0)==(e|0)){y=(t[2785]|0)+n|0,t[2785]=y,t[2788]=d,t[_+4>>2]=y|1,t[d+y>>2]=y;return}s=(o&-8)+n|0,r=o>>>3;do if(o>>>0<256)if(n=t[y+8>>2]|0,e=t[y+12>>2]|0,(e|0)==(n|0)){t[2783]=t[2783]&~(1<>2]=e,t[e+8>>2]=n;break}else{l=t[y+24>>2]|0,e=t[y+12>>2]|0;do if((e|0)==(y|0)){if(r=y+16|0,n=r+4|0,e=t[n>>2]|0,!e)if(e=t[r>>2]|0,e)n=r;else{r=0;break}for(;;){if(r=e+20|0,o=t[r>>2]|0,o|0){e=o,n=r;continue}if(r=e+16|0,o=t[r>>2]|0,o)e=o,n=r;else break}t[n>>2]=0,r=e}else r=t[y+8>>2]|0,t[r+12>>2]=e,t[e+8>>2]=r,r=e;while(0);if(l|0){if(e=t[y+28>>2]|0,n=11436+(e<<2)|0,(y|0)==(t[n>>2]|0)){if(t[n>>2]=r,!r){t[2784]=t[2784]&~(1<>2]|0)!=(y|0)&1)<<2)>>2]=r,!r)break;t[r+24>>2]=l,e=y+16|0,n=t[e>>2]|0,n|0&&(t[r+16>>2]=n,t[n+24>>2]=r),e=t[e+4>>2]|0,e|0&&(t[r+20>>2]=e,t[e+24>>2]=r)}}while(0);if(t[_+4>>2]=s|1,t[d+s>>2]=s,(_|0)==(t[2788]|0)){t[2785]=s;return}}if(e=s>>>3,s>>>0<256){r=11172+(e<<1<<2)|0,n=t[2783]|0,e=1<>2]|0):(t[2783]=n|e,e=r,n=r+8|0),t[n>>2]=_,t[e+12>>2]=_,t[_+8>>2]=e,t[_+12>>2]=r;return}e=s>>>8,e?s>>>0>16777215?e=31:(d=(e+1048320|0)>>>16&8,y=e<>>16&4,y=y<>>16&2,e=14-(l|d|e)+(y<>>15)|0,e=s>>>(e+7|0)&1|e<<1):e=0,o=11436+(e<<2)|0,t[_+28>>2]=e,t[_+20>>2]=0,t[_+16>>2]=0,n=t[2784]|0,r=1<>>1)|0),r=t[o>>2]|0;;){if((t[r+4>>2]&-8|0)==(s|0)){e=73;break}if(o=r+16+(n>>>31<<2)|0,e=t[o>>2]|0,e)n=n<<1,r=e;else{e=72;break}}if((e|0)==72){t[o>>2]=_,t[_+24>>2]=r,t[_+12>>2]=_,t[_+8>>2]=_;break}else if((e|0)==73){d=r+8|0,y=t[d>>2]|0,t[y+12>>2]=_,t[d>>2]=_,t[_+8>>2]=y,t[_+12>>2]=r,t[_+24>>2]=0;break}}else t[2784]=n|r,t[o>>2]=_,t[_+24>>2]=o,t[_+12>>2]=_,t[_+8>>2]=_;while(0);if(y=(t[2791]|0)+-1|0,t[2791]=y,!y)e=11588;else return;for(;e=t[e>>2]|0,e;)e=e+8|0;t[2791]=-1}}}function rL(){return 11628}function iL(e){e=e|0;var n=0,r=0;return n=h,h=h+16|0,r=n,t[r>>2]=sL(t[e+60>>2]|0)|0,e=lh(Ms(6,r|0)|0)|0,h=n,e|0}function j8(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0;P=h,h=h+48|0,k=P+16|0,l=P,s=P+32|0,_=e+28|0,o=t[_>>2]|0,t[s>>2]=o,y=e+20|0,o=(t[y>>2]|0)-o|0,t[s+4>>2]=o,t[s+8>>2]=n,t[s+12>>2]=r,o=o+r|0,d=e+60|0,t[l>>2]=t[d>>2],t[l+4>>2]=s,t[l+8>>2]=2,l=lh(G0(146,l|0)|0)|0;e:do if((o|0)!=(l|0)){for(n=2;!((l|0)<0);)if(o=o-l|0,we=t[s+4>>2]|0,q=l>>>0>we>>>0,s=q?s+8|0:s,n=(q<<31>>31)+n|0,we=l-(q?we:0)|0,t[s>>2]=(t[s>>2]|0)+we,q=s+4|0,t[q>>2]=(t[q>>2]|0)-we,t[k>>2]=t[d>>2],t[k+4>>2]=s,t[k+8>>2]=n,l=lh(G0(146,k|0)|0)|0,(o|0)==(l|0)){T=3;break e}t[e+16>>2]=0,t[_>>2]=0,t[y>>2]=0,t[e>>2]=t[e>>2]|32,(n|0)==2?r=0:r=r-(t[s+4>>2]|0)|0}else T=3;while(0);return(T|0)==3&&(we=t[e+44>>2]|0,t[e+16>>2]=we+(t[e+48>>2]|0),t[_>>2]=we,t[y>>2]=we),h=P,r|0}function oL(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;return s=h,h=h+32|0,l=s,o=s+20|0,t[l>>2]=t[e+60>>2],t[l+4>>2]=0,t[l+8>>2]=n,t[l+12>>2]=o,t[l+16>>2]=r,(lh(Uu(140,l|0)|0)|0)<0?(t[o>>2]=-1,e=-1):e=t[o>>2]|0,h=s,e|0}function lh(e){return e=e|0,e>>>0>4294963200&&(t[(ca()|0)>>2]=0-e,e=-1),e|0}function ca(){return(uL()|0)+64|0}function uL(){return b4()|0}function b4(){return 2084}function sL(e){return e=e|0,e|0}function lL(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0;return s=h,h=h+32|0,o=s,t[e+36>>2]=1,((t[e>>2]&64|0)==0?(t[o>>2]=t[e+60>>2],t[o+4>>2]=21523,t[o+8>>2]=s+16,su(54,o|0)|0):0)&&(c[e+75>>0]=-1),o=j8(e,n,r)|0,h=s,o|0}function U8(e,n){e=e|0,n=n|0;var r=0,o=0;if(r=c[e>>0]|0,o=c[n>>0]|0,r<<24>>24==0?1:r<<24>>24!=o<<24>>24)e=o;else{do e=e+1|0,n=n+1|0,r=c[e>>0]|0,o=c[n>>0]|0;while(!(r<<24>>24==0?1:r<<24>>24!=o<<24>>24));e=o}return(r&255)-(e&255)|0}function fL(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0;e:do if(!r)e=0;else{for(;o=c[e>>0]|0,s=c[n>>0]|0,o<<24>>24==s<<24>>24;)if(r=r+-1|0,r)e=e+1|0,n=n+1|0;else{e=0;break e}e=(o&255)-(s&255)|0}while(0);return e|0}function q8(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0,le=0,ie=0;ie=h,h=h+224|0,T=ie+120|0,P=ie+80|0,we=ie,le=ie+136|0,o=P,s=o+40|0;do t[o>>2]=0,o=o+4|0;while((o|0)<(s|0));return t[T>>2]=t[r>>2],(G4(0,n,T,we,P)|0)<0?r=-1:((t[e+76>>2]|0)>-1?q=cL(e)|0:q=0,r=t[e>>2]|0,k=r&32,(c[e+74>>0]|0)<1&&(t[e>>2]=r&-33),o=e+48|0,t[o>>2]|0?r=G4(e,n,T,we,P)|0:(s=e+44|0,l=t[s>>2]|0,t[s>>2]=le,d=e+28|0,t[d>>2]=le,_=e+20|0,t[_>>2]=le,t[o>>2]=80,y=e+16|0,t[y>>2]=le+80,r=G4(e,n,T,we,P)|0,l&&(dh[t[e+36>>2]&7](e,0,0)|0,r=(t[_>>2]|0)==0?-1:r,t[s>>2]=l,t[o>>2]=0,t[y>>2]=0,t[d>>2]=0,t[_>>2]=0)),o=t[e>>2]|0,t[e>>2]=o|k,q|0&&aL(e),r=(o&32|0)==0?r:-1),h=ie,r|0}function G4(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0;var l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0,le=0,ie=0,Pe=0,ke=0,qe=0,pe=0,_e=0,vt=0,Ln=0,Ht=0,It=0,gn=0,Pn=0,zt=0;zt=h,h=h+64|0,Ht=zt+16|0,It=zt,vt=zt+24|0,gn=zt+8|0,Pn=zt+20|0,t[Ht>>2]=n,qe=(e|0)!=0,pe=vt+40|0,_e=pe,vt=vt+39|0,Ln=gn+4|0,d=0,l=0,T=0;e:for(;;){do if((l|0)>-1)if((d|0)>(2147483647-l|0)){t[(ca()|0)>>2]=75,l=-1;break}else{l=d+l|0;break}while(0);if(d=c[n>>0]|0,d<<24>>24)_=n;else{ke=87;break}t:for(;;){switch(d<<24>>24){case 37:{d=_,ke=9;break t}case 0:{d=_;break t}default:}Pe=_+1|0,t[Ht>>2]=Pe,d=c[Pe>>0]|0,_=Pe}t:do if((ke|0)==9)for(;;){if(ke=0,(c[_+1>>0]|0)!=37)break t;if(d=d+1|0,_=_+2|0,t[Ht>>2]=_,(c[_>>0]|0)==37)ke=9;else break}while(0);if(d=d-n|0,qe&&ri(e,n,d),d|0){n=_;continue}y=_+1|0,d=(c[y>>0]|0)+-48|0,d>>>0<10?(Pe=(c[_+2>>0]|0)==36,ie=Pe?d:-1,T=Pe?1:T,y=Pe?_+3|0:y):ie=-1,t[Ht>>2]=y,d=c[y>>0]|0,_=(d<<24>>24)+-32|0;t:do if(_>>>0<32)for(k=0,P=d;;){if(d=1<<_,!(d&75913)){d=P;break t}if(k=d|k,y=y+1|0,t[Ht>>2]=y,d=c[y>>0]|0,_=(d<<24>>24)+-32|0,_>>>0>=32)break;P=d}else k=0;while(0);if(d<<24>>24==42){if(_=y+1|0,d=(c[_>>0]|0)+-48|0,d>>>0<10?(c[y+2>>0]|0)==36:0)t[s+(d<<2)>>2]=10,d=t[o+((c[_>>0]|0)+-48<<3)>>2]|0,T=1,y=y+3|0;else{if(T|0){l=-1;break}qe?(T=(t[r>>2]|0)+(4-1)&~(4-1),d=t[T>>2]|0,t[r>>2]=T+4,T=0,y=_):(d=0,T=0,y=_)}t[Ht>>2]=y,Pe=(d|0)<0,d=Pe?0-d|0:d,k=Pe?k|8192:k}else{if(d=z8(Ht)|0,(d|0)<0){l=-1;break}y=t[Ht>>2]|0}do if((c[y>>0]|0)==46){if((c[y+1>>0]|0)!=42){t[Ht>>2]=y+1,_=z8(Ht)|0,y=t[Ht>>2]|0;break}if(P=y+2|0,_=(c[P>>0]|0)+-48|0,_>>>0<10?(c[y+3>>0]|0)==36:0){t[s+(_<<2)>>2]=10,_=t[o+((c[P>>0]|0)+-48<<3)>>2]|0,y=y+4|0,t[Ht>>2]=y;break}if(T|0){l=-1;break e}qe?(Pe=(t[r>>2]|0)+(4-1)&~(4-1),_=t[Pe>>2]|0,t[r>>2]=Pe+4):_=0,t[Ht>>2]=P,y=P}else _=-1;while(0);for(le=0;;){if(((c[y>>0]|0)+-65|0)>>>0>57){l=-1;break e}if(Pe=y+1|0,t[Ht>>2]=Pe,P=c[(c[y>>0]|0)+-65+(5178+(le*58|0))>>0]|0,q=P&255,(q+-1|0)>>>0<8)le=q,y=Pe;else break}if(!(P<<24>>24)){l=-1;break}we=(ie|0)>-1;do if(P<<24>>24==19)if(we){l=-1;break e}else ke=49;else{if(we){t[s+(ie<<2)>>2]=q,we=o+(ie<<3)|0,ie=t[we+4>>2]|0,ke=It,t[ke>>2]=t[we>>2],t[ke+4>>2]=ie,ke=49;break}if(!qe){l=0;break e}W8(It,q,r)}while(0);if((ke|0)==49?(ke=0,!qe):0){d=0,n=Pe;continue}y=c[y>>0]|0,y=(le|0)!=0&(y&15|0)==3?y&-33:y,we=k&-65537,ie=(k&8192|0)==0?k:we;t:do switch(y|0){case 110:switch((le&255)<<24>>24){case 0:{t[t[It>>2]>>2]=l,d=0,n=Pe;continue e}case 1:{t[t[It>>2]>>2]=l,d=0,n=Pe;continue e}case 2:{d=t[It>>2]|0,t[d>>2]=l,t[d+4>>2]=((l|0)<0)<<31>>31,d=0,n=Pe;continue e}case 3:{g[t[It>>2]>>1]=l,d=0,n=Pe;continue e}case 4:{c[t[It>>2]>>0]=l,d=0,n=Pe;continue e}case 6:{t[t[It>>2]>>2]=l,d=0,n=Pe;continue e}case 7:{d=t[It>>2]|0,t[d>>2]=l,t[d+4>>2]=((l|0)<0)<<31>>31,d=0,n=Pe;continue e}default:{d=0,n=Pe;continue e}}case 112:{y=120,_=_>>>0>8?_:8,n=ie|8,ke=61;break}case 88:case 120:{n=ie,ke=61;break}case 111:{y=It,n=t[y>>2]|0,y=t[y+4>>2]|0,q=pL(n,y,pe)|0,we=_e-q|0,k=0,P=5642,_=(ie&8|0)==0|(_|0)>(we|0)?_:we+1|0,we=ie,ke=67;break}case 105:case 100:if(y=It,n=t[y>>2]|0,y=t[y+4>>2]|0,(y|0)<0){n=fh(0,0,n|0,y|0)|0,y=be,k=It,t[k>>2]=n,t[k+4>>2]=y,k=1,P=5642,ke=66;break t}else{k=(ie&2049|0)!=0&1,P=(ie&2048|0)==0?(ie&1|0)==0?5642:5644:5643,ke=66;break t}case 117:{y=It,k=0,P=5642,n=t[y>>2]|0,y=t[y+4>>2]|0,ke=66;break}case 99:{c[vt>>0]=t[It>>2],n=vt,k=0,P=5642,q=pe,y=1,_=we;break}case 109:{y=hL(t[(ca()|0)>>2]|0)|0,ke=71;break}case 115:{y=t[It>>2]|0,y=y|0?y:5652,ke=71;break}case 67:{t[gn>>2]=t[It>>2],t[Ln>>2]=0,t[It>>2]=gn,q=-1,y=gn,ke=75;break}case 83:{n=t[It>>2]|0,_?(q=_,y=n,ke=75):(wi(e,32,d,0,ie),n=0,ke=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{d=vL(e,+L[It>>3],d,_,ie,y)|0,n=Pe;continue e}default:k=0,P=5642,q=pe,y=_,_=ie}while(0);t:do if((ke|0)==61)ie=It,le=t[ie>>2]|0,ie=t[ie+4>>2]|0,q=dL(le,ie,pe,y&32)|0,P=(n&8|0)==0|(le|0)==0&(ie|0)==0,k=P?0:2,P=P?5642:5642+(y>>4)|0,we=n,n=le,y=ie,ke=67;else if((ke|0)==66)q=aa(n,y,pe)|0,we=ie,ke=67;else if((ke|0)==71)ke=0,ie=mL(y,0,_)|0,le=(ie|0)==0,n=y,k=0,P=5642,q=le?y+_|0:ie,y=le?_:ie-y|0,_=we;else if((ke|0)==75){for(ke=0,P=y,n=0,_=0;k=t[P>>2]|0,!(!k||(_=H8(Pn,k)|0,(_|0)<0|_>>>0>(q-n|0)>>>0));)if(n=_+n|0,q>>>0>n>>>0)P=P+4|0;else break;if((_|0)<0){l=-1;break e}if(wi(e,32,d,n,ie),!n)n=0,ke=84;else for(k=0;;){if(_=t[y>>2]|0,!_){ke=84;break t}if(_=H8(Pn,_)|0,k=_+k|0,(k|0)>(n|0)){ke=84;break t}if(ri(e,Pn,_),k>>>0>=n>>>0){ke=84;break}else y=y+4|0}}while(0);if((ke|0)==67)ke=0,y=(n|0)!=0|(y|0)!=0,ie=(_|0)!=0|y,y=((y^1)&1)+(_e-q)|0,n=ie?q:pe,q=pe,y=ie?(_|0)>(y|0)?_:y:_,_=(_|0)>-1?we&-65537:we;else if((ke|0)==84){ke=0,wi(e,32,d,n,ie^8192),d=(d|0)>(n|0)?d:n,n=Pe;continue}le=q-n|0,we=(y|0)<(le|0)?le:y,ie=we+k|0,d=(d|0)<(ie|0)?ie:d,wi(e,32,d,ie,_),ri(e,P,k),wi(e,48,d,ie,_^65536),wi(e,48,we,le,0),ri(e,n,le),wi(e,32,d,ie,_^8192),n=Pe}e:do if((ke|0)==87&&!e)if(!T)l=0;else{for(l=1;n=t[s+(l<<2)>>2]|0,!!n;)if(W8(o+(l<<3)|0,n,r),l=l+1|0,(l|0)>=10){l=1;break e}for(;;){if(t[s+(l<<2)>>2]|0){l=-1;break e}if(l=l+1|0,(l|0)>=10){l=1;break}}}while(0);return h=zt,l|0}function cL(e){return e=e|0,0}function aL(e){e=e|0}function ri(e,n,r){e=e|0,n=n|0,r=r|0,t[e>>2]&32||TL(n,r,e)|0}function z8(e){e=e|0;var n=0,r=0,o=0;if(r=t[e>>2]|0,o=(c[r>>0]|0)+-48|0,o>>>0<10){n=0;do n=o+(n*10|0)|0,r=r+1|0,t[e>>2]=r,o=(c[r>>0]|0)+-48|0;while(o>>>0<10)}else n=0;return n|0}function W8(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;e:do if(n>>>0<=20)do switch(n|0){case 9:{o=(t[r>>2]|0)+(4-1)&~(4-1),n=t[o>>2]|0,t[r>>2]=o+4,t[e>>2]=n;break e}case 10:{o=(t[r>>2]|0)+(4-1)&~(4-1),n=t[o>>2]|0,t[r>>2]=o+4,o=e,t[o>>2]=n,t[o+4>>2]=((n|0)<0)<<31>>31;break e}case 11:{o=(t[r>>2]|0)+(4-1)&~(4-1),n=t[o>>2]|0,t[r>>2]=o+4,o=e,t[o>>2]=n,t[o+4>>2]=0;break e}case 12:{o=(t[r>>2]|0)+(8-1)&~(8-1),n=o,s=t[n>>2]|0,n=t[n+4>>2]|0,t[r>>2]=o+8,o=e,t[o>>2]=s,t[o+4>>2]=n;break e}case 13:{s=(t[r>>2]|0)+(4-1)&~(4-1),o=t[s>>2]|0,t[r>>2]=s+4,o=(o&65535)<<16>>16,s=e,t[s>>2]=o,t[s+4>>2]=((o|0)<0)<<31>>31;break e}case 14:{s=(t[r>>2]|0)+(4-1)&~(4-1),o=t[s>>2]|0,t[r>>2]=s+4,s=e,t[s>>2]=o&65535,t[s+4>>2]=0;break e}case 15:{s=(t[r>>2]|0)+(4-1)&~(4-1),o=t[s>>2]|0,t[r>>2]=s+4,o=(o&255)<<24>>24,s=e,t[s>>2]=o,t[s+4>>2]=((o|0)<0)<<31>>31;break e}case 16:{s=(t[r>>2]|0)+(4-1)&~(4-1),o=t[s>>2]|0,t[r>>2]=s+4,s=e,t[s>>2]=o&255,t[s+4>>2]=0;break e}case 17:{s=(t[r>>2]|0)+(8-1)&~(8-1),l=+L[s>>3],t[r>>2]=s+8,L[e>>3]=l;break e}case 18:{s=(t[r>>2]|0)+(8-1)&~(8-1),l=+L[s>>3],t[r>>2]=s+8,L[e>>3]=l;break e}default:break e}while(0);while(0)}function dL(e,n,r,o){if(e=e|0,n=n|0,r=r|0,o=o|0,!((e|0)==0&(n|0)==0))do r=r+-1|0,c[r>>0]=C[5694+(e&15)>>0]|0|o,e=ch(e|0,n|0,4)|0,n=be;while(!((e|0)==0&(n|0)==0));return r|0}function pL(e,n,r){if(e=e|0,n=n|0,r=r|0,!((e|0)==0&(n|0)==0))do r=r+-1|0,c[r>>0]=e&7|48,e=ch(e|0,n|0,3)|0,n=be;while(!((e|0)==0&(n|0)==0));return r|0}function aa(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;if(n>>>0>0|(n|0)==0&e>>>0>4294967295){for(;o=K4(e|0,n|0,10,0)|0,r=r+-1|0,c[r>>0]=o&255|48,o=e,e=$4(e|0,n|0,10,0)|0,n>>>0>9|(n|0)==9&o>>>0>4294967295;)n=be;n=e}else n=e;if(n)for(;r=r+-1|0,c[r>>0]=(n>>>0)%10|0|48,!(n>>>0<10);)n=(n>>>0)/10|0;return r|0}function hL(e){return e=e|0,DL(e,t[(wL()|0)+188>>2]|0)|0}function mL(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;l=n&255,o=(r|0)!=0;e:do if(o&(e&3|0)!=0)for(s=n&255;;){if((c[e>>0]|0)==s<<24>>24){d=6;break e}if(e=e+1|0,r=r+-1|0,o=(r|0)!=0,!(o&(e&3|0)!=0)){d=5;break}}else d=5;while(0);(d|0)==5&&(o?d=6:r=0);e:do if((d|0)==6&&(s=n&255,(c[e>>0]|0)!=s<<24>>24)){o=Un(l,16843009)|0;t:do if(r>>>0>3){for(;l=t[e>>2]^o,!((l&-2139062144^-2139062144)&l+-16843009|0);)if(e=e+4|0,r=r+-4|0,r>>>0<=3){d=11;break t}}else d=11;while(0);if((d|0)==11&&!r){r=0;break}for(;;){if((c[e>>0]|0)==s<<24>>24)break e;if(e=e+1|0,r=r+-1|0,!r){r=0;break}}}while(0);return(r|0?e:0)|0}function wi(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0;var l=0,d=0;if(d=h,h=h+256|0,l=d,(r|0)>(o|0)&(s&73728|0)==0){if(s=r-o|0,pa(l|0,n|0,(s>>>0<256?s:256)|0)|0,s>>>0>255){n=r-o|0;do ri(e,l,256),s=s+-256|0;while(s>>>0>255);s=n&255}ri(e,l,s)}h=d}function H8(e,n){return e=e|0,n=n|0,e?e=_L(e,n,0)|0:e=0,e|0}function vL(e,n,r,o,s,l){e=e|0,n=+n,r=r|0,o=o|0,s=s|0,l=l|0;var d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0,le=0,ie=0,Pe=0,ke=0,qe=0,pe=0,_e=0,vt=0,Ln=0,Ht=0,It=0,gn=0,Pn=0,zt=0,Dr=0;Dr=h,h=h+560|0,y=Dr+8|0,Pe=Dr,zt=Dr+524|0,Pn=zt,k=Dr+512|0,t[Pe>>2]=0,gn=k+12|0,b8(n)|0,(be|0)<0?(n=-n,Ht=1,Ln=5659):(Ht=(s&2049|0)!=0&1,Ln=(s&2048|0)==0?(s&1|0)==0?5660:5665:5662),b8(n)|0,It=be&2146435072;do if(It>>>0<2146435072|(It|0)==2146435072&0<0){if(we=+gL(n,Pe)*2,d=we!=0,d&&(t[Pe>>2]=(t[Pe>>2]|0)+-1),qe=l|32,(qe|0)==97){le=l&32,q=(le|0)==0?Ln:Ln+9|0,P=Ht|2,d=12-o|0;do if(o>>>0>11|(d|0)==0)n=we;else{n=8;do d=d+-1|0,n=n*16;while((d|0)!=0);if((c[q>>0]|0)==45){n=-(n+(-we-n));break}else{n=we+n-n;break}}while(0);_=t[Pe>>2]|0,d=(_|0)<0?0-_|0:_,d=aa(d,((d|0)<0)<<31>>31,gn)|0,(d|0)==(gn|0)&&(d=k+11|0,c[d>>0]=48),c[d+-1>>0]=(_>>31&2)+43,T=d+-2|0,c[T>>0]=l+15,k=(o|0)<1,y=(s&8|0)==0,d=zt;do It=~~n,_=d+1|0,c[d>>0]=C[5694+It>>0]|le,n=(n-+(It|0))*16,((_-Pn|0)==1?!(y&(k&n==0)):0)?(c[_>>0]=46,d=d+2|0):d=_;while(n!=0);It=d-Pn|0,Pn=gn-T|0,gn=(o|0)!=0&(It+-2|0)<(o|0)?o+2|0:It,d=Pn+P+gn|0,wi(e,32,r,d,s),ri(e,q,P),wi(e,48,r,d,s^65536),ri(e,zt,It),wi(e,48,gn-It|0,0,0),ri(e,T,Pn),wi(e,32,r,d,s^8192);break}_=(o|0)<0?6:o,d?(d=(t[Pe>>2]|0)+-28|0,t[Pe>>2]=d,n=we*268435456):(n=we,d=t[Pe>>2]|0),It=(d|0)<0?y:y+288|0,y=It;do _e=~~n>>>0,t[y>>2]=_e,y=y+4|0,n=(n-+(_e>>>0))*1e9;while(n!=0);if((d|0)>0)for(k=It,P=y;;){if(T=(d|0)<29?d:29,d=P+-4|0,d>>>0>=k>>>0){y=0;do pe=X8(t[d>>2]|0,0,T|0)|0,pe=Y4(pe|0,be|0,y|0,0)|0,_e=be,ke=K4(pe|0,_e|0,1e9,0)|0,t[d>>2]=ke,y=$4(pe|0,_e|0,1e9,0)|0,d=d+-4|0;while(d>>>0>=k>>>0);y&&(k=k+-4|0,t[k>>2]=y)}for(y=P;!(y>>>0<=k>>>0);)if(d=y+-4|0,!(t[d>>2]|0))y=d;else break;if(d=(t[Pe>>2]|0)-T|0,t[Pe>>2]=d,(d|0)>0)P=y;else break}else k=It;if((d|0)<0){o=((_+25|0)/9|0)+1|0,ie=(qe|0)==102;do{if(le=0-d|0,le=(le|0)<9?le:9,k>>>0>>0){T=(1<>>le,q=0,d=k;do _e=t[d>>2]|0,t[d>>2]=(_e>>>le)+q,q=Un(_e&T,P)|0,d=d+4|0;while(d>>>0>>0);d=(t[k>>2]|0)==0?k+4|0:k,q?(t[y>>2]=q,k=d,d=y+4|0):(k=d,d=y)}else k=(t[k>>2]|0)==0?k+4|0:k,d=y;y=ie?It:k,y=(d-y>>2|0)>(o|0)?y+(o<<2)|0:d,d=(t[Pe>>2]|0)+le|0,t[Pe>>2]=d}while((d|0)<0);d=k,o=y}else d=k,o=y;if(_e=It,d>>>0>>0){if(y=(_e-d>>2)*9|0,T=t[d>>2]|0,T>>>0>=10){k=10;do k=k*10|0,y=y+1|0;while(T>>>0>=k>>>0)}}else y=0;if(ie=(qe|0)==103,ke=(_|0)!=0,k=_-((qe|0)!=102?y:0)+((ke&ie)<<31>>31)|0,(k|0)<(((o-_e>>2)*9|0)+-9|0)){if(k=k+9216|0,le=It+4+(((k|0)/9|0)+-1024<<2)|0,k=((k|0)%9|0)+1|0,(k|0)<9){T=10;do T=T*10|0,k=k+1|0;while((k|0)!=9)}else T=10;if(P=t[le>>2]|0,q=(P>>>0)%(T>>>0)|0,k=(le+4|0)==(o|0),k&(q|0)==0)k=le;else if(we=(((P>>>0)/(T>>>0)|0)&1|0)==0?9007199254740992:9007199254740994,pe=(T|0)/2|0,n=q>>>0>>0?.5:k&(q|0)==(pe|0)?1:1.5,Ht&&(pe=(c[Ln>>0]|0)==45,n=pe?-n:n,we=pe?-we:we),k=P-q|0,t[le>>2]=k,we+n!=we){if(pe=k+T|0,t[le>>2]=pe,pe>>>0>999999999)for(y=le;k=y+-4|0,t[y>>2]=0,k>>>0>>0&&(d=d+-4|0,t[d>>2]=0),pe=(t[k>>2]|0)+1|0,t[k>>2]=pe,pe>>>0>999999999;)y=k;else k=le;if(y=(_e-d>>2)*9|0,P=t[d>>2]|0,P>>>0>=10){T=10;do T=T*10|0,y=y+1|0;while(P>>>0>=T>>>0)}}else k=le;k=k+4|0,k=o>>>0>k>>>0?k:o,pe=d}else k=o,pe=d;for(qe=k;;){if(qe>>>0<=pe>>>0){Pe=0;break}if(d=qe+-4|0,!(t[d>>2]|0))qe=d;else{Pe=1;break}}o=0-y|0;do if(ie)if(d=((ke^1)&1)+_|0,(d|0)>(y|0)&(y|0)>-5?(T=l+-1|0,_=d+-1-y|0):(T=l+-2|0,_=d+-1|0),d=s&8,d)le=d;else{if(Pe?(vt=t[qe+-4>>2]|0,(vt|0)!=0):0)if((vt>>>0)%10|0)k=0;else{k=0,d=10;do d=d*10|0,k=k+1|0;while(!((vt>>>0)%(d>>>0)|0|0))}else k=9;if(d=((qe-_e>>2)*9|0)+-9|0,(T|32|0)==102){le=d-k|0,le=(le|0)>0?le:0,_=(_|0)<(le|0)?_:le,le=0;break}else{le=d+y-k|0,le=(le|0)>0?le:0,_=(_|0)<(le|0)?_:le,le=0;break}}else T=l,le=s&8;while(0);if(ie=_|le,P=(ie|0)!=0&1,q=(T|32|0)==102,q)ke=0,d=(y|0)>0?y:0;else{if(d=(y|0)<0?o:y,d=aa(d,((d|0)<0)<<31>>31,gn)|0,k=gn,(k-d|0)<2)do d=d+-1|0,c[d>>0]=48;while((k-d|0)<2);c[d+-1>>0]=(y>>31&2)+43,d=d+-2|0,c[d>>0]=T,ke=d,d=k-d|0}if(d=Ht+1+_+P+d|0,wi(e,32,r,d,s),ri(e,Ln,Ht),wi(e,48,r,d,s^65536),q){T=pe>>>0>It>>>0?It:pe,le=zt+9|0,P=le,q=zt+8|0,k=T;do{if(y=aa(t[k>>2]|0,0,le)|0,(k|0)==(T|0))(y|0)==(le|0)&&(c[q>>0]=48,y=q);else if(y>>>0>zt>>>0){pa(zt|0,48,y-Pn|0)|0;do y=y+-1|0;while(y>>>0>zt>>>0)}ri(e,y,P-y|0),k=k+4|0}while(k>>>0<=It>>>0);if(ie|0&&ri(e,5710,1),k>>>0>>0&(_|0)>0)for(;;){if(y=aa(t[k>>2]|0,0,le)|0,y>>>0>zt>>>0){pa(zt|0,48,y-Pn|0)|0;do y=y+-1|0;while(y>>>0>zt>>>0)}if(ri(e,y,(_|0)<9?_:9),k=k+4|0,y=_+-9|0,k>>>0>>0&(_|0)>9)_=y;else{_=y;break}}wi(e,48,_+9|0,9,0)}else{if(ie=Pe?qe:pe+4|0,(_|0)>-1){Pe=zt+9|0,le=(le|0)==0,o=Pe,P=0-Pn|0,q=zt+8|0,T=pe;do{y=aa(t[T>>2]|0,0,Pe)|0,(y|0)==(Pe|0)&&(c[q>>0]=48,y=q);do if((T|0)==(pe|0)){if(k=y+1|0,ri(e,y,1),le&(_|0)<1){y=k;break}ri(e,5710,1),y=k}else{if(y>>>0<=zt>>>0)break;pa(zt|0,48,y+P|0)|0;do y=y+-1|0;while(y>>>0>zt>>>0)}while(0);Pn=o-y|0,ri(e,y,(_|0)>(Pn|0)?Pn:_),_=_-Pn|0,T=T+4|0}while(T>>>0>>0&(_|0)>-1)}wi(e,48,_+18|0,18,0),ri(e,ke,gn-ke|0)}wi(e,32,r,d,s^8192)}else zt=(l&32|0)!=0,d=Ht+3|0,wi(e,32,r,d,s&-65537),ri(e,Ln,Ht),ri(e,n!=n|!1?zt?5686:5690:zt?5678:5682,3),wi(e,32,r,d,s^8192);while(0);return h=Dr,((d|0)<(r|0)?r:d)|0}function b8(e){e=+e;var n=0;return L[j>>3]=e,n=t[j>>2]|0,be=t[j+4>>2]|0,n|0}function gL(e,n){return e=+e,n=n|0,+ +G8(e,n)}function G8(e,n){e=+e,n=n|0;var r=0,o=0,s=0;switch(L[j>>3]=e,r=t[j>>2]|0,o=t[j+4>>2]|0,s=ch(r|0,o|0,52)|0,s&2047){case 0:{e!=0?(e=+G8(e*18446744073709552e3,n),r=(t[n>>2]|0)+-64|0):r=0,t[n>>2]=r;break}case 2047:break;default:t[n>>2]=(s&2047)+-1022,t[j>>2]=r,t[j+4>>2]=o&-2146435073|1071644672,e=+L[j>>3]}return+e}function _L(e,n,r){e=e|0,n=n|0,r=r|0;do if(e){if(n>>>0<128){c[e>>0]=n,e=1;break}if(!(t[t[(yL()|0)+188>>2]>>2]|0))if((n&-128|0)==57216){c[e>>0]=n,e=1;break}else{t[(ca()|0)>>2]=84,e=-1;break}if(n>>>0<2048){c[e>>0]=n>>>6|192,c[e+1>>0]=n&63|128,e=2;break}if(n>>>0<55296|(n&-8192|0)==57344){c[e>>0]=n>>>12|224,c[e+1>>0]=n>>>6&63|128,c[e+2>>0]=n&63|128,e=3;break}if((n+-65536|0)>>>0<1048576){c[e>>0]=n>>>18|240,c[e+1>>0]=n>>>12&63|128,c[e+2>>0]=n>>>6&63|128,c[e+3>>0]=n&63|128,e=4;break}else{t[(ca()|0)>>2]=84,e=-1;break}}else e=1;while(0);return e|0}function yL(){return b4()|0}function wL(){return b4()|0}function DL(e,n){e=e|0,n=n|0;var r=0,o=0;for(o=0;;){if((C[5712+o>>0]|0)==(e|0)){e=2;break}if(r=o+1|0,(r|0)==87){r=5800,o=87,e=5;break}else o=r}if((e|0)==2&&(o?(r=5800,e=5):r=5800),(e|0)==5)for(;;){do e=r,r=r+1|0;while((c[e>>0]|0)!=0);if(o=o+-1|0,o)e=5;else break}return EL(r,t[n+20>>2]|0)|0}function EL(e,n){return e=e|0,n=n|0,SL(e,n)|0}function SL(e,n){return e=e|0,n=n|0,n?n=CL(t[n>>2]|0,t[n+4>>2]|0,e)|0:n=0,(n|0?n:e)|0}function CL(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0;q=(t[e>>2]|0)+1794895138|0,l=fc(t[e+8>>2]|0,q)|0,o=fc(t[e+12>>2]|0,q)|0,s=fc(t[e+16>>2]|0,q)|0;e:do if((l>>>0>>2>>>0?(P=n-(l<<2)|0,o>>>0

>>0&s>>>0

>>0):0)?((s|o)&3|0)==0:0){for(P=o>>>2,T=s>>>2,k=0;;){if(_=l>>>1,y=k+_|0,d=y<<1,s=d+P|0,o=fc(t[e+(s<<2)>>2]|0,q)|0,s=fc(t[e+(s+1<<2)>>2]|0,q)|0,!(s>>>0>>0&o>>>0<(n-s|0)>>>0)){o=0;break e}if(c[e+(s+o)>>0]|0){o=0;break e}if(o=U8(r,e+s|0)|0,!o)break;if(o=(o|0)<0,(l|0)==1){o=0;break e}else k=o?k:y,l=o?_:l-_|0}o=d+T|0,s=fc(t[e+(o<<2)>>2]|0,q)|0,o=fc(t[e+(o+1<<2)>>2]|0,q)|0,o>>>0>>0&s>>>0<(n-o|0)>>>0?o=(c[e+(o+s)>>0]|0)==0?e+o|0:0:o=0}else o=0;while(0);return o|0}function fc(e,n){e=e|0,n=n|0;var r=0;return r=Z8(e|0)|0,((n|0)==0?e:r)|0}function TL(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0,_=0;o=r+16|0,s=t[o>>2]|0,s?l=5:xL(r)|0?o=0:(s=t[o>>2]|0,l=5);e:do if((l|0)==5){if(_=r+20|0,d=t[_>>2]|0,o=d,(s-d|0)>>>0>>0){o=dh[t[r+36>>2]&7](r,e,n)|0;break}t:do if((c[r+75>>0]|0)>-1){for(d=n;;){if(!d){l=0,s=e;break t}if(s=d+-1|0,(c[e+s>>0]|0)==10)break;d=s}if(o=dh[t[r+36>>2]&7](r,e,d)|0,o>>>0>>0)break e;l=d,s=e+d|0,n=n-d|0,o=t[_>>2]|0}else l=0,s=e;while(0);vn(o|0,s|0,n|0)|0,t[_>>2]=(t[_>>2]|0)+n,o=l+n|0}while(0);return o|0}function xL(e){e=e|0;var n=0,r=0;return n=e+74|0,r=c[n>>0]|0,c[n>>0]=r+255|r,n=t[e>>2]|0,n&8?(t[e>>2]=n|32,e=-1):(t[e+8>>2]=0,t[e+4>>2]=0,r=t[e+44>>2]|0,t[e+28>>2]=r,t[e+20>>2]=r,t[e+16>>2]=r+(t[e+48>>2]|0),e=0),e|0}function Ur(e,n){e=w(e),n=w(n);var r=0,o=0;r=V8(e)|0;do if((r&2147483647)>>>0<=2139095040){if(o=V8(n)|0,(o&2147483647)>>>0<=2139095040)if((o^r|0)<0){e=(r|0)<0?n:e;break}else{e=e>2]=e,t[j>>2]|0|0}function cc(e,n){e=w(e),n=w(n);var r=0,o=0;r=Y8(e)|0;do if((r&2147483647)>>>0<=2139095040){if(o=Y8(n)|0,(o&2147483647)>>>0<=2139095040)if((o^r|0)<0){e=(r|0)<0?e:n;break}else{e=e>2]=e,t[j>>2]|0|0}function V4(e,n){e=w(e),n=w(n);var r=0,o=0,s=0,l=0,d=0,_=0,y=0,k=0;l=(D[j>>2]=e,t[j>>2]|0),_=(D[j>>2]=n,t[j>>2]|0),r=l>>>23&255,d=_>>>23&255,y=l&-2147483648,s=_<<1;e:do if((s|0)!=0?!((r|0)==255|((kL(n)|0)&2147483647)>>>0>2139095040):0){if(o=l<<1,o>>>0<=s>>>0)return n=w(e*w(0)),w((o|0)==(s|0)?n:e);if(r)o=l&8388607|8388608;else{if(r=l<<9,(r|0)>-1){o=r,r=0;do r=r+-1|0,o=o<<1;while((o|0)>-1)}else r=0;o=l<<1-r}if(d)_=_&8388607|8388608;else{if(l=_<<9,(l|0)>-1){s=0;do s=s+-1|0,l=l<<1;while((l|0)>-1)}else s=0;d=s,_=_<<1-s}s=o-_|0,l=(s|0)>-1;t:do if((r|0)>(d|0)){for(;;){if(l)if(s)o=s;else break;if(o=o<<1,r=r+-1|0,s=o-_|0,l=(s|0)>-1,(r|0)<=(d|0))break t}n=w(e*w(0));break e}while(0);if(l)if(s)o=s;else{n=w(e*w(0));break}if(o>>>0<8388608)do o=o<<1,r=r+-1|0;while(o>>>0<8388608);(r|0)>0?r=o+-8388608|r<<23:r=o>>>(1-r|0),n=(t[j>>2]=r|y,w(D[j>>2]))}else k=3;while(0);return(k|0)==3&&(n=w(e*n),n=w(n/n)),w(n)}function kL(e){return e=w(e),D[j>>2]=e,t[j>>2]|0|0}function AL(e,n){return e=e|0,n=n|0,q8(t[582]|0,e,n)|0}function $n(e){e=e|0,_n()}function da(e){e=e|0}function OL(e,n){return e=e|0,n=n|0,0}function IL(e){return e=e|0,($8(e+4|0)|0)==-1?(Nl[t[(t[e>>2]|0)+8>>2]&127](e),e=1):e=0,e|0}function $8(e){e=e|0;var n=0;return n=t[e>>2]|0,t[e>>2]=n+-1,n+-1|0}function Tf(e){e=e|0,IL(e)|0&&PL(e)}function PL(e){e=e|0;var n=0;n=e+8|0,((t[n>>2]|0)!=0?($8(n)|0)!=-1:0)||Nl[t[(t[e>>2]|0)+16>>2]&127](e)}function Tt(e){e=e|0;var n=0;for(n=(e|0)==0?1:e;e=uh(n)|0,!(e|0);){if(e=FL()|0,!e){e=0;break}fD[e&0]()}return e|0}function K8(e){return e=e|0,Tt(e)|0}function Ve(e){e=e|0,sh(e)}function ML(e){e=e|0,(c[e+11>>0]|0)<0&&Ve(t[e>>2]|0)}function FL(){var e=0;return e=t[2923]|0,t[2923]=e+0,e|0}function LL(){}function fh(e,n,r,o){return e=e|0,n=n|0,r=r|0,o=o|0,o=n-o-(r>>>0>e>>>0|0)>>>0,be=o,e-r>>>0|0|0}function Y4(e,n,r,o){return e=e|0,n=n|0,r=r|0,o=o|0,r=e+r>>>0,be=n+o+(r>>>0>>0|0)>>>0,r|0|0}function pa(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0,d=0;if(l=e+r|0,n=n&255,(r|0)>=67){for(;e&3;)c[e>>0]=n,e=e+1|0;for(o=l&-4|0,s=o-64|0,d=n|n<<8|n<<16|n<<24;(e|0)<=(s|0);)t[e>>2]=d,t[e+4>>2]=d,t[e+8>>2]=d,t[e+12>>2]=d,t[e+16>>2]=d,t[e+20>>2]=d,t[e+24>>2]=d,t[e+28>>2]=d,t[e+32>>2]=d,t[e+36>>2]=d,t[e+40>>2]=d,t[e+44>>2]=d,t[e+48>>2]=d,t[e+52>>2]=d,t[e+56>>2]=d,t[e+60>>2]=d,e=e+64|0;for(;(e|0)<(o|0);)t[e>>2]=d,e=e+4|0}for(;(e|0)<(l|0);)c[e>>0]=n,e=e+1|0;return l-r|0}function X8(e,n,r){return e=e|0,n=n|0,r=r|0,(r|0)<32?(be=n<>>32-r,e<>>r,e>>>r|(n&(1<>>r-32|0)}function vn(e,n,r){e=e|0,n=n|0,r=r|0;var o=0,s=0,l=0;if((r|0)>=8192)return wo(e|0,n|0,r|0)|0;if(l=e|0,s=e+r|0,(e&3)==(n&3)){for(;e&3;){if(!r)return l|0;c[e>>0]=c[n>>0]|0,e=e+1|0,n=n+1|0,r=r-1|0}for(r=s&-4|0,o=r-64|0;(e|0)<=(o|0);)t[e>>2]=t[n>>2],t[e+4>>2]=t[n+4>>2],t[e+8>>2]=t[n+8>>2],t[e+12>>2]=t[n+12>>2],t[e+16>>2]=t[n+16>>2],t[e+20>>2]=t[n+20>>2],t[e+24>>2]=t[n+24>>2],t[e+28>>2]=t[n+28>>2],t[e+32>>2]=t[n+32>>2],t[e+36>>2]=t[n+36>>2],t[e+40>>2]=t[n+40>>2],t[e+44>>2]=t[n+44>>2],t[e+48>>2]=t[n+48>>2],t[e+52>>2]=t[n+52>>2],t[e+56>>2]=t[n+56>>2],t[e+60>>2]=t[n+60>>2],e=e+64|0,n=n+64|0;for(;(e|0)<(r|0);)t[e>>2]=t[n>>2],e=e+4|0,n=n+4|0}else for(r=s-4|0;(e|0)<(r|0);)c[e>>0]=c[n>>0]|0,c[e+1>>0]=c[n+1>>0]|0,c[e+2>>0]=c[n+2>>0]|0,c[e+3>>0]=c[n+3>>0]|0,e=e+4|0,n=n+4|0;for(;(e|0)<(s|0);)c[e>>0]=c[n>>0]|0,e=e+1|0,n=n+1|0;return l|0}function J8(e){e=e|0;var n=0;return n=c[ce+(e&255)>>0]|0,(n|0)<8?n|0:(n=c[ce+(e>>8&255)>>0]|0,(n|0)<8?n+8|0:(n=c[ce+(e>>16&255)>>0]|0,(n|0)<8?n+16|0:(c[ce+(e>>>24)>>0]|0)+24|0))}function Q8(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0;var l=0,d=0,_=0,y=0,k=0,T=0,P=0,q=0,we=0,le=0;if(T=e,y=n,k=y,d=r,q=o,_=q,!k)return l=(s|0)!=0,_?l?(t[s>>2]=e|0,t[s+4>>2]=n&0,q=0,s=0,be=q,s|0):(q=0,s=0,be=q,s|0):(l&&(t[s>>2]=(T>>>0)%(d>>>0),t[s+4>>2]=0),q=0,s=(T>>>0)/(d>>>0)>>>0,be=q,s|0);l=(_|0)==0;do if(d){if(!l){if(l=(cr(_|0)|0)-(cr(k|0)|0)|0,l>>>0<=31){P=l+1|0,_=31-l|0,n=l-31>>31,d=P,e=T>>>(P>>>0)&n|k<<_,n=k>>>(P>>>0)&n,l=0,_=T<<_;break}return s?(t[s>>2]=e|0,t[s+4>>2]=y|n&0,q=0,s=0,be=q,s|0):(q=0,s=0,be=q,s|0)}if(l=d-1|0,l&d|0){_=(cr(d|0)|0)+33-(cr(k|0)|0)|0,le=64-_|0,P=32-_|0,y=P>>31,we=_-32|0,n=we>>31,d=_,e=P-1>>31&k>>>(we>>>0)|(k<>>(_>>>0))&n,n=n&k>>>(_>>>0),l=T<>>(we>>>0))&y|T<>31;break}return s|0&&(t[s>>2]=l&T,t[s+4>>2]=0),(d|0)==1?(we=y|n&0,le=e|0|0,be=we,le|0):(le=J8(d|0)|0,we=k>>>(le>>>0)|0,le=k<<32-le|T>>>(le>>>0)|0,be=we,le|0)}else{if(l)return s|0&&(t[s>>2]=(k>>>0)%(d>>>0),t[s+4>>2]=0),we=0,le=(k>>>0)/(d>>>0)>>>0,be=we,le|0;if(!T)return s|0&&(t[s>>2]=0,t[s+4>>2]=(k>>>0)%(_>>>0)),we=0,le=(k>>>0)/(_>>>0)>>>0,be=we,le|0;if(l=_-1|0,!(l&_))return s|0&&(t[s>>2]=e|0,t[s+4>>2]=l&k|n&0),we=0,le=k>>>((J8(_|0)|0)>>>0),be=we,le|0;if(l=(cr(_|0)|0)-(cr(k|0)|0)|0,l>>>0<=30){n=l+1|0,_=31-l|0,d=n,e=k<<_|T>>>(n>>>0),n=k>>>(n>>>0),l=0,_=T<<_;break}return s?(t[s>>2]=e|0,t[s+4>>2]=y|n&0,we=0,le=0,be=we,le|0):(we=0,le=0,be=we,le|0)}while(0);if(!d)k=_,y=0,_=0;else{P=r|0|0,T=q|o&0,k=Y4(P|0,T|0,-1,-1)|0,r=be,y=_,_=0;do o=y,y=l>>>31|y<<1,l=_|l<<1,o=e<<1|o>>>31|0,q=e>>>31|n<<1|0,fh(k|0,r|0,o|0,q|0)|0,le=be,we=le>>31|((le|0)<0?-1:0)<<1,_=we&1,e=fh(o|0,q|0,we&P|0,(((le|0)<0?-1:0)>>31|((le|0)<0?-1:0)<<1)&T|0)|0,n=be,d=d-1|0;while((d|0)!=0);k=y,y=0}return d=0,s|0&&(t[s>>2]=e,t[s+4>>2]=n),we=(l|0)>>>31|(k|d)<<1|(d<<1|l>>>31)&0|y,le=(l<<1|0>>>31)&-2|_,be=we,le|0}function $4(e,n,r,o){return e=e|0,n=n|0,r=r|0,o=o|0,Q8(e,n,r,o,0)|0}function xf(e){e=e|0;var n=0,r=0;return r=e+15&-16|0,n=t[N>>2]|0,e=n+r|0,(r|0)>0&(e|0)<(n|0)|(e|0)<0?(vr()|0,Os(12),-1):(t[N>>2]=e,((e|0)>(Xn()|0)?(Bn()|0)==0:0)?(t[N>>2]=n,Os(12),-1):n|0)}function Y1(e,n,r){e=e|0,n=n|0,r=r|0;var o=0;if((n|0)<(e|0)&(e|0)<(n+r|0)){for(o=e,n=n+r|0,e=e+r|0;(r|0)>0;)e=e-1|0,n=n-1|0,r=r-1|0,c[e>>0]=c[n>>0]|0;e=o}else vn(e,n,r)|0;return e|0}function K4(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0;var s=0,l=0;return l=h,h=h+16|0,s=l|0,Q8(e,n,r,o,s)|0,h=l,be=t[s+4>>2]|0,t[s>>2]|0|0}function Z8(e){return e=e|0,(e&255)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>>24|0}function RL(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,eD[e&1](n|0,r|0,o|0,s|0,l|0)}function NL(e,n,r){e=e|0,n=n|0,r=w(r),tD[e&1](n|0,w(r))}function BL(e,n,r){e=e|0,n=n|0,r=+r,nD[e&31](n|0,+r)}function jL(e,n,r,o){return e=e|0,n=n|0,r=w(r),o=w(o),w(rD[e&0](n|0,w(r),w(o)))}function UL(e,n){e=e|0,n=n|0,Nl[e&127](n|0)}function qL(e,n,r){e=e|0,n=n|0,r=r|0,Bl[e&31](n|0,r|0)}function zL(e,n){return e=e|0,n=n|0,dc[e&31](n|0)|0}function WL(e,n,r,o,s){e=e|0,n=n|0,r=+r,o=+o,s=s|0,iD[e&1](n|0,+r,+o,s|0)}function HL(e,n,r,o){e=e|0,n=n|0,r=+r,o=+o,CR[e&1](n|0,+r,+o)}function bL(e,n,r,o){return e=e|0,n=n|0,r=r|0,o=o|0,dh[e&7](n|0,r|0,o|0)|0}function VL(e,n,r,o){return e=e|0,n=n|0,r=r|0,o=o|0,+TR[e&1](n|0,r|0,o|0)}function YL(e,n){return e=e|0,n=n|0,+oD[e&15](n|0)}function $L(e,n,r){return e=e|0,n=n|0,r=+r,xR[e&1](n|0,+r)|0}function KL(e,n,r){return e=e|0,n=n|0,r=r|0,J4[e&15](n|0,r|0)|0}function XL(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=+o,s=+s,l=l|0,kR[e&1](n|0,r|0,+o,+s,l|0)}function JL(e,n,r,o,s,l,d){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,d=d|0,AR[e&1](n|0,r|0,o|0,s|0,l|0,d|0)}function QL(e,n,r){return e=e|0,n=n|0,r=r|0,+uD[e&7](n|0,r|0)}function ZL(e){return e=e|0,ph[e&7]()|0}function eR(e,n,r,o,s,l){return e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,sD[e&1](n|0,r|0,o|0,s|0,l|0)|0}function tR(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=+s,OR[e&1](n|0,r|0,o|0,+s)}function nR(e,n,r,o,s,l,d){e=e|0,n=n|0,r=r|0,o=w(o),s=s|0,l=w(l),d=d|0,lD[e&1](n|0,r|0,w(o),s|0,w(l),d|0)}function rR(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,X1[e&15](n|0,r|0,o|0)}function iR(e){e=e|0,fD[e&0]()}function oR(e,n,r,o){e=e|0,n=n|0,r=r|0,o=+o,cD[e&15](n|0,r|0,+o)}function uR(e,n,r){return e=e|0,n=+n,r=+r,IR[e&1](+n,+r)|0}function sR(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,Q4[e&15](n|0,r|0,o|0,s|0)}function lR(e,n,r,o,s){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,pt(0)}function fR(e,n){e=e|0,n=w(n),pt(1)}function Lo(e,n){e=e|0,n=+n,pt(2)}function cR(e,n,r){return e=e|0,n=w(n),r=w(r),pt(3),tt}function tn(e){e=e|0,pt(4)}function $1(e,n){e=e|0,n=n|0,pt(5)}function tu(e){return e=e|0,pt(6),0}function aR(e,n,r,o){e=e|0,n=+n,r=+r,o=o|0,pt(7)}function dR(e,n,r){e=e|0,n=+n,r=+r,pt(8)}function pR(e,n,r){return e=e|0,n=n|0,r=r|0,pt(9),0}function hR(e,n,r){return e=e|0,n=n|0,r=r|0,pt(10),0}function ac(e){return e=e|0,pt(11),0}function mR(e,n){return e=e|0,n=+n,pt(12),0}function K1(e,n){return e=e|0,n=n|0,pt(13),0}function vR(e,n,r,o,s){e=e|0,n=n|0,r=+r,o=+o,s=s|0,pt(14)}function gR(e,n,r,o,s,l){e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,l=l|0,pt(15)}function X4(e,n){return e=e|0,n=n|0,pt(16),0}function _R(){return pt(17),0}function yR(e,n,r,o,s){return e=e|0,n=n|0,r=r|0,o=o|0,s=s|0,pt(18),0}function wR(e,n,r,o){e=e|0,n=n|0,r=r|0,o=+o,pt(19)}function DR(e,n,r,o,s,l){e=e|0,n=n|0,r=w(r),o=o|0,s=w(s),l=l|0,pt(20)}function ah(e,n,r){e=e|0,n=n|0,r=r|0,pt(21)}function ER(){pt(22)}function ha(e,n,r){e=e|0,n=n|0,r=+r,pt(23)}function SR(e,n){return e=+e,n=+n,pt(24),0}function ma(e,n,r,o){e=e|0,n=n|0,r=r|0,o=o|0,pt(25)}var eD=[lR,_I],tD=[fR,x0],nD=[Lo,Kf,Tl,xl,hf,xo,mf,Wa,Hs,mi,Xf,Rc,Jf,ao,$o,kl,Nc,Al,vf,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo,Lo],rD=[cR],Nl=[tn,da,Km,Xm,es,a_,d_,p_,YA,$A,KA,oI,uI,sI,kF,AF,OF,Sn,Oc,pf,ti,vi,Nm,Uc,r1,Hd,Pl,mv,Av,Kc,Jc,yp,Eg,na,Ug,Yg,u_,k_,q_,J_,a4,Ct,w9,U9,ex,hx,Ix,_0,s7,S7,W7,uk,Dk,Wk,Qk,tA,_A,DA,jA,JA,eO,gO,RO,d1,vP,YP,lM,SM,GM,uF,gF,wF,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn,tn],Bl=[$1,ja,Ua,$f,gu,co,qa,Ws,za,Mc,Fc,Lc,po,Ce,ze,Et,on,sr,mn,Zf,gd,xd,H9,rx,ck,yP,HO,C8,$1,$1,$1,$1],dc=[tu,iL,Ba,m,b,ee,Ye,Ze,ut,In,jr,gi,Pm,Ha,Ya,Fx,Tk,wO,SP,Qo,tu,tu,tu,tu,tu,tu,tu,tu,tu,tu,tu,tu],iD=[aR,Sd],CR=[dR,zA],dh=[pR,j8,oL,lL,Gv,P_,a7,kM],TR=[hR,Op],oD=[ac,_i,Re,pr,Cd,ho,bs,$a,Td,qc,ac,ac,ac,ac,ac,ac],xR=[mR,Kk],J4=[K1,OL,vd,Vc,_v,ig,pg,f_,H_,_x,Xu,dM,K1,K1,K1,K1],kR=[vR,iv],AR=[gR,KM],uD=[X4,Hr,Ka,kd,Xa,Jg,X4,X4],ph=[_R,Ja,Z0,g0,oA,TA,iO,CF],sD=[yR,or],OR=[wR,m4],lD=[DR,Bc],X1=[ah,S,A0,Vn,ni,Mv,Tg,dn,C9,fo,zI,JP,cF,ah,ah,ah],fD=[ER],cD=[ha,Ic,vu,Pc,Qu,Qf,k0,v,W1,k7,Gk,ha,ha,ha,ha,ha],IR=[SR,GA],Q4=[ma,Fg,zx,V7,Lk,aA,PA,aO,qO,OP,RF,ma,ma,ma,ma,ma];return{_llvm_bswap_i32:Z8,dynCall_idd:uR,dynCall_i:ZL,_i64Subtract:fh,___udivdi3:$4,dynCall_vif:NL,setThrew:vl,dynCall_viii:rR,_bitshift64Lshr:ch,_bitshift64Shl:X8,dynCall_vi:UL,dynCall_viiddi:XL,dynCall_diii:VL,dynCall_iii:KL,_memset:pa,_sbrk:xf,_memcpy:vn,__GLOBAL__sub_I_Yoga_cpp:t0,dynCall_vii:qL,___uremdi3:K4,dynCall_vid:BL,stackAlloc:zi,_nbind_init:VF,getTempRet0:fu,dynCall_di:YL,dynCall_iid:$L,setTempRet0:gl,_i64Add:Y4,dynCall_fiff:jL,dynCall_iiii:bL,_emscripten_get_global_libc:rL,dynCall_viid:oR,dynCall_viiid:tR,dynCall_viififi:nR,dynCall_ii:zL,__GLOBAL__sub_I_Binding_cc:lP,dynCall_viiii:sR,dynCall_iiiiii:eR,stackSave:lu,dynCall_viiiii:RL,__GLOBAL__sub_I_nbind_cc:Gs,dynCall_vidd:HL,_free:sh,runPostSets:LL,dynCall_viiiiii:JL,establishStackSpace:O0,_memmove:Y1,stackRestore:Ho,_malloc:uh,__GLOBAL__sub_I_common_cc:AO,dynCall_viddi:WL,dynCall_dii:QL,dynCall_v:iR}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(i){this.name="ExitStatus",this.message="Program terminated with exit("+i+")",this.status=i}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function i(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=i)},Module.callMain=Module.callMain=function(u){u=u||[],ensureInitRuntime();var f=u.length+1;function c(){for(var x=0;x<4-1;x++)g.push(0)}var g=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];c();for(var t=0;t0||(preRun(),runDependencies>0)||Module.calledRun)return;function u(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(i),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),u()},1)):u()}Module.run=Module.run=run;function exit(i,u){u&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=i,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(i)),ENVIRONMENT_IS_NODE&&process.exit(i),Module.quit(i,new ExitStatus(i)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(i){Module.onAbort&&Module.onAbort(i),i!==void 0?(Module.print(i),Module.printErr(i),i=JSON.stringify(i)):i="",ABORT=!0,EXITSTATUS=1;var u=` +If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,f="abort("+i+") at "+stackTrace()+u;throw abortDecorators&&abortDecorators.forEach(function(c){f=c(f,i)}),f}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var hc=Me((hb,vE)=>{"use strict";var wN=hE(),DN=mE(),Py=!1,My=null;DN({},function(i,u){if(!Py){if(Py=!0,i)throw i;My=u}});if(!Py)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");vE.exports=wN(My.bind,My.lib)});var _E=Me((mb,gE)=>{"use strict";gE.exports=({onlyFirst:i=!1}={})=>{let u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(u,i?void 0:"g")}});var Fy=Me((vb,yE)=>{"use strict";var EN=_E();yE.exports=i=>typeof i=="string"?i.replace(EN(),""):i});var Ry=Me((gb,Ly)=>{"use strict";var wE=i=>Number.isNaN(i)?!1:i>=4352&&(i<=4447||i===9001||i===9002||11904<=i&&i<=12871&&i!==12351||12880<=i&&i<=19903||19968<=i&&i<=42182||43360<=i&&i<=43388||44032<=i&&i<=55203||63744<=i&&i<=64255||65040<=i&&i<=65049||65072<=i&&i<=65131||65281<=i&&i<=65376||65504<=i&&i<=65510||110592<=i&&i<=110593||127488<=i&&i<=127569||131072<=i&&i<=262141);Ly.exports=wE;Ly.exports.default=wE});var EE=Me((_b,DE)=>{"use strict";DE.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var Mh=Me((yb,Ny)=>{"use strict";var SN=Fy(),CN=Ry(),TN=EE(),SE=i=>{if(i=i.replace(TN()," "),typeof i!="string"||i.length===0)return 0;i=SN(i);let u=0;for(let f=0;f=127&&c<=159||c>=768&&c<=879||(c>65535&&f++,u+=CN(c)?2:1)}return u};Ny.exports=SE;Ny.exports.default=SE});var jy=Me((wb,By)=>{"use strict";var xN=Mh(),CE=i=>{let u=0;for(let f of i.split(` +`))u=Math.max(u,xN(f));return u};By.exports=CE;By.exports.default=CE});var TE=Me(a2=>{"use strict";var kN=a2&&a2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(a2,"__esModule",{value:!0});var AN=kN(jy()),Uy={};a2.default=i=>{if(i.length===0)return{width:0,height:0};if(Uy[i])return Uy[i];let u=AN.default(i),f=i.split(` +`).length;return Uy[i]={width:u,height:f},{width:u,height:f}}});var xE=Me(d2=>{"use strict";var ON=d2&&d2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(d2,"__esModule",{value:!0});var hr=ON(hc()),IN=(i,u)=>{"position"in u&&i.setPositionType(u.position==="absolute"?hr.default.POSITION_TYPE_ABSOLUTE:hr.default.POSITION_TYPE_RELATIVE)},PN=(i,u)=>{"marginLeft"in u&&i.setMargin(hr.default.EDGE_START,u.marginLeft||0),"marginRight"in u&&i.setMargin(hr.default.EDGE_END,u.marginRight||0),"marginTop"in u&&i.setMargin(hr.default.EDGE_TOP,u.marginTop||0),"marginBottom"in u&&i.setMargin(hr.default.EDGE_BOTTOM,u.marginBottom||0)},MN=(i,u)=>{"paddingLeft"in u&&i.setPadding(hr.default.EDGE_LEFT,u.paddingLeft||0),"paddingRight"in u&&i.setPadding(hr.default.EDGE_RIGHT,u.paddingRight||0),"paddingTop"in u&&i.setPadding(hr.default.EDGE_TOP,u.paddingTop||0),"paddingBottom"in u&&i.setPadding(hr.default.EDGE_BOTTOM,u.paddingBottom||0)},FN=(i,u)=>{var f;"flexGrow"in u&&i.setFlexGrow((f=u.flexGrow)!==null&&f!==void 0?f:0),"flexShrink"in u&&i.setFlexShrink(typeof u.flexShrink=="number"?u.flexShrink:1),"flexDirection"in u&&(u.flexDirection==="row"&&i.setFlexDirection(hr.default.FLEX_DIRECTION_ROW),u.flexDirection==="row-reverse"&&i.setFlexDirection(hr.default.FLEX_DIRECTION_ROW_REVERSE),u.flexDirection==="column"&&i.setFlexDirection(hr.default.FLEX_DIRECTION_COLUMN),u.flexDirection==="column-reverse"&&i.setFlexDirection(hr.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in u&&(typeof u.flexBasis=="number"?i.setFlexBasis(u.flexBasis):typeof u.flexBasis=="string"?i.setFlexBasisPercent(Number.parseInt(u.flexBasis,10)):i.setFlexBasis(NaN)),"alignItems"in u&&((u.alignItems==="stretch"||!u.alignItems)&&i.setAlignItems(hr.default.ALIGN_STRETCH),u.alignItems==="flex-start"&&i.setAlignItems(hr.default.ALIGN_FLEX_START),u.alignItems==="center"&&i.setAlignItems(hr.default.ALIGN_CENTER),u.alignItems==="flex-end"&&i.setAlignItems(hr.default.ALIGN_FLEX_END)),"alignSelf"in u&&((u.alignSelf==="auto"||!u.alignSelf)&&i.setAlignSelf(hr.default.ALIGN_AUTO),u.alignSelf==="flex-start"&&i.setAlignSelf(hr.default.ALIGN_FLEX_START),u.alignSelf==="center"&&i.setAlignSelf(hr.default.ALIGN_CENTER),u.alignSelf==="flex-end"&&i.setAlignSelf(hr.default.ALIGN_FLEX_END)),"justifyContent"in u&&((u.justifyContent==="flex-start"||!u.justifyContent)&&i.setJustifyContent(hr.default.JUSTIFY_FLEX_START),u.justifyContent==="center"&&i.setJustifyContent(hr.default.JUSTIFY_CENTER),u.justifyContent==="flex-end"&&i.setJustifyContent(hr.default.JUSTIFY_FLEX_END),u.justifyContent==="space-between"&&i.setJustifyContent(hr.default.JUSTIFY_SPACE_BETWEEN),u.justifyContent==="space-around"&&i.setJustifyContent(hr.default.JUSTIFY_SPACE_AROUND))},LN=(i,u)=>{var f,c;"width"in u&&(typeof u.width=="number"?i.setWidth(u.width):typeof u.width=="string"?i.setWidthPercent(Number.parseInt(u.width,10)):i.setWidthAuto()),"height"in u&&(typeof u.height=="number"?i.setHeight(u.height):typeof u.height=="string"?i.setHeightPercent(Number.parseInt(u.height,10)):i.setHeightAuto()),"minWidth"in u&&(typeof u.minWidth=="string"?i.setMinWidthPercent(Number.parseInt(u.minWidth,10)):i.setMinWidth((f=u.minWidth)!==null&&f!==void 0?f:0)),"minHeight"in u&&(typeof u.minHeight=="string"?i.setMinHeightPercent(Number.parseInt(u.minHeight,10)):i.setMinHeight((c=u.minHeight)!==null&&c!==void 0?c:0))},RN=(i,u)=>{"display"in u&&i.setDisplay(u.display==="flex"?hr.default.DISPLAY_FLEX:hr.default.DISPLAY_NONE)},NN=(i,u)=>{if("borderStyle"in u){let f=typeof u.borderStyle=="string"?1:0;i.setBorder(hr.default.EDGE_TOP,f),i.setBorder(hr.default.EDGE_BOTTOM,f),i.setBorder(hr.default.EDGE_LEFT,f),i.setBorder(hr.default.EDGE_RIGHT,f)}};d2.default=(i,u={})=>{IN(i,u),PN(i,u),MN(i,u),FN(i,u),LN(i,u),RN(i,u),NN(i,u)}});var AE=Me((Sb,kE)=>{"use strict";kE.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var qy=Me((Cb,OE)=>{var p2=AE(),IE={};for(let i of Object.keys(p2))IE[p2[i]]=i;var Xt={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};OE.exports=Xt;for(let i of Object.keys(Xt)){if(!("channels"in Xt[i]))throw new Error("missing channels property: "+i);if(!("labels"in Xt[i]))throw new Error("missing channel labels property: "+i);if(Xt[i].labels.length!==Xt[i].channels)throw new Error("channel and label counts mismatch: "+i);let{channels:u,labels:f}=Xt[i];delete Xt[i].channels,delete Xt[i].labels,Object.defineProperty(Xt[i],"channels",{value:u}),Object.defineProperty(Xt[i],"labels",{value:f})}Xt.rgb.hsl=function(i){let u=i[0]/255,f=i[1]/255,c=i[2]/255,g=Math.min(u,f,c),t=Math.max(u,f,c),C=t-g,A,x;t===g?A=0:u===t?A=(f-c)/C:f===t?A=2+(c-u)/C:c===t&&(A=4+(u-f)/C),A=Math.min(A*60,360),A<0&&(A+=360);let D=(g+t)/2;return t===g?x=0:D<=.5?x=C/(t+g):x=C/(2-t-g),[A,x*100,D*100]};Xt.rgb.hsv=function(i){let u,f,c,g,t,C=i[0]/255,A=i[1]/255,x=i[2]/255,D=Math.max(C,A,x),L=D-Math.min(C,A,x),N=function(j){return(D-j)/6/L+1/2};return L===0?(g=0,t=0):(t=L/D,u=N(C),f=N(A),c=N(x),C===D?g=c-f:A===D?g=1/3+u-c:x===D&&(g=2/3+f-u),g<0?g+=1:g>1&&(g-=1)),[g*360,t*100,D*100]};Xt.rgb.hwb=function(i){let u=i[0],f=i[1],c=i[2],g=Xt.rgb.hsl(i)[0],t=1/255*Math.min(u,Math.min(f,c));return c=1-1/255*Math.max(u,Math.max(f,c)),[g,t*100,c*100]};Xt.rgb.cmyk=function(i){let u=i[0]/255,f=i[1]/255,c=i[2]/255,g=Math.min(1-u,1-f,1-c),t=(1-u-g)/(1-g)||0,C=(1-f-g)/(1-g)||0,A=(1-c-g)/(1-g)||0;return[t*100,C*100,A*100,g*100]};function BN(i,u){return(i[0]-u[0])**2+(i[1]-u[1])**2+(i[2]-u[2])**2}Xt.rgb.keyword=function(i){let u=IE[i];if(u)return u;let f=Infinity,c;for(let g of Object.keys(p2)){let t=p2[g],C=BN(i,t);C.04045?((u+.055)/1.055)**2.4:u/12.92,f=f>.04045?((f+.055)/1.055)**2.4:f/12.92,c=c>.04045?((c+.055)/1.055)**2.4:c/12.92;let g=u*.4124+f*.3576+c*.1805,t=u*.2126+f*.7152+c*.0722,C=u*.0193+f*.1192+c*.9505;return[g*100,t*100,C*100]};Xt.rgb.lab=function(i){let u=Xt.rgb.xyz(i),f=u[0],c=u[1],g=u[2];f/=95.047,c/=100,g/=108.883,f=f>.008856?f**(1/3):7.787*f+16/116,c=c>.008856?c**(1/3):7.787*c+16/116,g=g>.008856?g**(1/3):7.787*g+16/116;let t=116*c-16,C=500*(f-c),A=200*(c-g);return[t,C,A]};Xt.hsl.rgb=function(i){let u=i[0]/360,f=i[1]/100,c=i[2]/100,g,t,C;if(f===0)return C=c*255,[C,C,C];c<.5?g=c*(1+f):g=c+f-c*f;let A=2*c-g,x=[0,0,0];for(let D=0;D<3;D++)t=u+1/3*-(D-1),t<0&&t++,t>1&&t--,6*t<1?C=A+(g-A)*6*t:2*t<1?C=g:3*t<2?C=A+(g-A)*(2/3-t)*6:C=A,x[D]=C*255;return x};Xt.hsl.hsv=function(i){let u=i[0],f=i[1]/100,c=i[2]/100,g=f,t=Math.max(c,.01);c*=2,f*=c<=1?c:2-c,g*=t<=1?t:2-t;let C=(c+f)/2,A=c===0?2*g/(t+g):2*f/(c+f);return[u,A*100,C*100]};Xt.hsv.rgb=function(i){let u=i[0]/60,f=i[1]/100,c=i[2]/100,g=Math.floor(u)%6,t=u-Math.floor(u),C=255*c*(1-f),A=255*c*(1-f*t),x=255*c*(1-f*(1-t));switch(c*=255,g){case 0:return[c,x,C];case 1:return[A,c,C];case 2:return[C,c,x];case 3:return[C,A,c];case 4:return[x,C,c];case 5:return[c,C,A]}};Xt.hsv.hsl=function(i){let u=i[0],f=i[1]/100,c=i[2]/100,g=Math.max(c,.01),t,C;C=(2-f)*c;let A=(2-f)*g;return t=f*g,t/=A<=1?A:2-A,t=t||0,C/=2,[u,t*100,C*100]};Xt.hwb.rgb=function(i){let u=i[0]/360,f=i[1]/100,c=i[2]/100,g=f+c,t;g>1&&(f/=g,c/=g);let C=Math.floor(6*u),A=1-c;t=6*u-C,(C&1)!=0&&(t=1-t);let x=f+t*(A-f),D,L,N;switch(C){default:case 6:case 0:D=A,L=x,N=f;break;case 1:D=x,L=A,N=f;break;case 2:D=f,L=A,N=x;break;case 3:D=f,L=x,N=A;break;case 4:D=x,L=f,N=A;break;case 5:D=A,L=f,N=x;break}return[D*255,L*255,N*255]};Xt.cmyk.rgb=function(i){let u=i[0]/100,f=i[1]/100,c=i[2]/100,g=i[3]/100,t=1-Math.min(1,u*(1-g)+g),C=1-Math.min(1,f*(1-g)+g),A=1-Math.min(1,c*(1-g)+g);return[t*255,C*255,A*255]};Xt.xyz.rgb=function(i){let u=i[0]/100,f=i[1]/100,c=i[2]/100,g,t,C;return g=u*3.2406+f*-1.5372+c*-.4986,t=u*-.9689+f*1.8758+c*.0415,C=u*.0557+f*-.204+c*1.057,g=g>.0031308?1.055*g**(1/2.4)-.055:g*12.92,t=t>.0031308?1.055*t**(1/2.4)-.055:t*12.92,C=C>.0031308?1.055*C**(1/2.4)-.055:C*12.92,g=Math.min(Math.max(0,g),1),t=Math.min(Math.max(0,t),1),C=Math.min(Math.max(0,C),1),[g*255,t*255,C*255]};Xt.xyz.lab=function(i){let u=i[0],f=i[1],c=i[2];u/=95.047,f/=100,c/=108.883,u=u>.008856?u**(1/3):7.787*u+16/116,f=f>.008856?f**(1/3):7.787*f+16/116,c=c>.008856?c**(1/3):7.787*c+16/116;let g=116*f-16,t=500*(u-f),C=200*(f-c);return[g,t,C]};Xt.lab.xyz=function(i){let u=i[0],f=i[1],c=i[2],g,t,C;t=(u+16)/116,g=f/500+t,C=t-c/200;let A=t**3,x=g**3,D=C**3;return t=A>.008856?A:(t-16/116)/7.787,g=x>.008856?x:(g-16/116)/7.787,C=D>.008856?D:(C-16/116)/7.787,g*=95.047,t*=100,C*=108.883,[g,t,C]};Xt.lab.lch=function(i){let u=i[0],f=i[1],c=i[2],g;g=Math.atan2(c,f)*360/2/Math.PI,g<0&&(g+=360);let C=Math.sqrt(f*f+c*c);return[u,C,g]};Xt.lch.lab=function(i){let u=i[0],f=i[1],g=i[2]/360*2*Math.PI,t=f*Math.cos(g),C=f*Math.sin(g);return[u,t,C]};Xt.rgb.ansi16=function(i,u=null){let[f,c,g]=i,t=u===null?Xt.rgb.hsv(i)[2]:u;if(t=Math.round(t/50),t===0)return 30;let C=30+(Math.round(g/255)<<2|Math.round(c/255)<<1|Math.round(f/255));return t===2&&(C+=60),C};Xt.hsv.ansi16=function(i){return Xt.rgb.ansi16(Xt.hsv.rgb(i),i[2])};Xt.rgb.ansi256=function(i){let u=i[0],f=i[1],c=i[2];return u===f&&f===c?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(f/255*5)+Math.round(c/255*5)};Xt.ansi16.rgb=function(i){let u=i%10;if(u===0||u===7)return i>50&&(u+=3.5),u=u/10.5*255,[u,u,u];let f=(~~(i>50)+1)*.5,c=(u&1)*f*255,g=(u>>1&1)*f*255,t=(u>>2&1)*f*255;return[c,g,t]};Xt.ansi256.rgb=function(i){if(i>=232){let t=(i-232)*10+8;return[t,t,t]}i-=16;let u,f=Math.floor(i/36)/5*255,c=Math.floor((u=i%36)/6)/5*255,g=u%6/5*255;return[f,c,g]};Xt.rgb.hex=function(i){let f=(((Math.round(i[0])&255)<<16)+((Math.round(i[1])&255)<<8)+(Math.round(i[2])&255)).toString(16).toUpperCase();return"000000".substring(f.length)+f};Xt.hex.rgb=function(i){let u=i.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!u)return[0,0,0];let f=u[0];u[0].length===3&&(f=f.split("").map(A=>A+A).join(""));let c=parseInt(f,16),g=c>>16&255,t=c>>8&255,C=c&255;return[g,t,C]};Xt.rgb.hcg=function(i){let u=i[0]/255,f=i[1]/255,c=i[2]/255,g=Math.max(Math.max(u,f),c),t=Math.min(Math.min(u,f),c),C=g-t,A,x;return C<1?A=t/(1-C):A=0,C<=0?x=0:g===u?x=(f-c)/C%6:g===f?x=2+(c-u)/C:x=4+(u-f)/C,x/=6,x%=1,[x*360,C*100,A*100]};Xt.hsl.hcg=function(i){let u=i[1]/100,f=i[2]/100,c=f<.5?2*u*f:2*u*(1-f),g=0;return c<1&&(g=(f-.5*c)/(1-c)),[i[0],c*100,g*100]};Xt.hsv.hcg=function(i){let u=i[1]/100,f=i[2]/100,c=u*f,g=0;return c<1&&(g=(f-c)/(1-c)),[i[0],c*100,g*100]};Xt.hcg.rgb=function(i){let u=i[0]/360,f=i[1]/100,c=i[2]/100;if(f===0)return[c*255,c*255,c*255];let g=[0,0,0],t=u%1*6,C=t%1,A=1-C,x=0;switch(Math.floor(t)){case 0:g[0]=1,g[1]=C,g[2]=0;break;case 1:g[0]=A,g[1]=1,g[2]=0;break;case 2:g[0]=0,g[1]=1,g[2]=C;break;case 3:g[0]=0,g[1]=A,g[2]=1;break;case 4:g[0]=C,g[1]=0,g[2]=1;break;default:g[0]=1,g[1]=0,g[2]=A}return x=(1-f)*c,[(f*g[0]+x)*255,(f*g[1]+x)*255,(f*g[2]+x)*255]};Xt.hcg.hsv=function(i){let u=i[1]/100,f=i[2]/100,c=u+f*(1-u),g=0;return c>0&&(g=u/c),[i[0],g*100,c*100]};Xt.hcg.hsl=function(i){let u=i[1]/100,c=i[2]/100*(1-u)+.5*u,g=0;return c>0&&c<.5?g=u/(2*c):c>=.5&&c<1&&(g=u/(2*(1-c))),[i[0],g*100,c*100]};Xt.hcg.hwb=function(i){let u=i[1]/100,f=i[2]/100,c=u+f*(1-u);return[i[0],(c-u)*100,(1-c)*100]};Xt.hwb.hcg=function(i){let u=i[1]/100,f=i[2]/100,c=1-f,g=c-u,t=0;return g<1&&(t=(c-g)/(1-g)),[i[0],g*100,t*100]};Xt.apple.rgb=function(i){return[i[0]/65535*255,i[1]/65535*255,i[2]/65535*255]};Xt.rgb.apple=function(i){return[i[0]/255*65535,i[1]/255*65535,i[2]/255*65535]};Xt.gray.rgb=function(i){return[i[0]/100*255,i[0]/100*255,i[0]/100*255]};Xt.gray.hsl=function(i){return[0,0,i[0]]};Xt.gray.hsv=Xt.gray.hsl;Xt.gray.hwb=function(i){return[0,100,i[0]]};Xt.gray.cmyk=function(i){return[0,0,0,i[0]]};Xt.gray.lab=function(i){return[i[0],0,0]};Xt.gray.hex=function(i){let u=Math.round(i[0]/100*255)&255,c=((u<<16)+(u<<8)+u).toString(16).toUpperCase();return"000000".substring(c.length)+c};Xt.rgb.gray=function(i){return[(i[0]+i[1]+i[2])/3/255*100]}});var ME=Me((Tb,PE)=>{var Fh=qy();function jN(){let i={},u=Object.keys(Fh);for(let f=u.length,c=0;c{var zy=qy(),WN=ME(),Ca={},HN=Object.keys(zy);function bN(i){let u=function(...f){let c=f[0];return c==null?c:(c.length>1&&(f=c),i(f))};return"conversion"in i&&(u.conversion=i.conversion),u}function GN(i){let u=function(...f){let c=f[0];if(c==null)return c;c.length>1&&(f=c);let g=i(f);if(typeof g=="object")for(let t=g.length,C=0;C{Ca[i]={},Object.defineProperty(Ca[i],"channels",{value:zy[i].channels}),Object.defineProperty(Ca[i],"labels",{value:zy[i].labels});let u=WN(i);Object.keys(u).forEach(c=>{let g=u[c];Ca[i][c]=GN(g),Ca[i][c].raw=bN(g)})});FE.exports=Ca});var Rh=Me((kb,RE)=>{"use strict";var NE=(i,u)=>(...f)=>`[${i(...f)+u}m`,BE=(i,u)=>(...f)=>{let c=i(...f);return`[${38+u};5;${c}m`},jE=(i,u)=>(...f)=>{let c=i(...f);return`[${38+u};2;${c[0]};${c[1]};${c[2]}m`},Lh=i=>i,UE=(i,u,f)=>[i,u,f],Ta=(i,u,f)=>{Object.defineProperty(i,u,{get:()=>{let c=f();return Object.defineProperty(i,u,{value:c,enumerable:!0,configurable:!0}),c},enumerable:!0,configurable:!0})},Wy,xa=(i,u,f,c)=>{Wy===void 0&&(Wy=LE());let g=c?10:0,t={};for(let[C,A]of Object.entries(Wy)){let x=C==="ansi16"?"ansi":C;C===u?t[x]=i(f,g):typeof A=="object"&&(t[x]=i(A[u],g))}return t};function VN(){let i=new Map,u={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};u.color.gray=u.color.blackBright,u.bgColor.bgGray=u.bgColor.bgBlackBright,u.color.grey=u.color.blackBright,u.bgColor.bgGrey=u.bgColor.bgBlackBright;for(let[f,c]of Object.entries(u)){for(let[g,t]of Object.entries(c))u[g]={open:`[${t[0]}m`,close:`[${t[1]}m`},c[g]=u[g],i.set(t[0],t[1]);Object.defineProperty(u,f,{value:c,enumerable:!1})}return Object.defineProperty(u,"codes",{value:i,enumerable:!1}),u.color.close="",u.bgColor.close="",Ta(u.color,"ansi",()=>xa(NE,"ansi16",Lh,!1)),Ta(u.color,"ansi256",()=>xa(BE,"ansi256",Lh,!1)),Ta(u.color,"ansi16m",()=>xa(jE,"rgb",UE,!1)),Ta(u.bgColor,"ansi",()=>xa(NE,"ansi16",Lh,!0)),Ta(u.bgColor,"ansi256",()=>xa(BE,"ansi256",Lh,!0)),Ta(u.bgColor,"ansi16m",()=>xa(jE,"rgb",UE,!0)),u}Object.defineProperty(RE,"exports",{enumerable:!0,get:VN})});var WE=Me((Ab,qE)=>{"use strict";var h2=Mh(),YN=Fy(),$N=Rh(),Hy=new Set(["","\x9B"]),KN=39,zE=i=>`${Hy.values().next().value}[${i}m`,XN=i=>i.split(" ").map(u=>h2(u)),by=(i,u,f)=>{let c=[...u],g=!1,t=h2(YN(i[i.length-1]));for(let[C,A]of c.entries()){let x=h2(A);if(t+x<=f?i[i.length-1]+=A:(i.push(A),t=0),Hy.has(A))g=!0;else if(g&&A==="m"){g=!1;continue}g||(t+=x,t===f&&C0&&i.length>1&&(i[i.length-2]+=i.pop())},JN=i=>{let u=i.split(" "),f=u.length;for(;f>0&&!(h2(u[f-1])>0);)f--;return f===u.length?i:u.slice(0,f).join(" ")+u.slice(f).join("")},QN=(i,u,f={})=>{if(f.trim!==!1&&i.trim()==="")return"";let c="",g="",t,C=XN(i),A=[""];for(let[x,D]of i.split(" ").entries()){f.trim!==!1&&(A[A.length-1]=A[A.length-1].trimLeft());let L=h2(A[A.length-1]);if(x!==0&&(L>=u&&(f.wordWrap===!1||f.trim===!1)&&(A.push(""),L=0),(L>0||f.trim===!1)&&(A[A.length-1]+=" ",L++)),f.hard&&C[x]>u){let N=u-L,j=1+Math.floor((C[x]-N-1)/u);Math.floor((C[x]-1)/u)u&&L>0&&C[x]>0){if(f.wordWrap===!1&&Lu&&f.wordWrap===!1){by(A,D,u);continue}A[A.length-1]+=D}f.trim!==!1&&(A=A.map(JN)),c=A.join(` +`);for(let[x,D]of[...c].entries()){if(g+=D,Hy.has(D)){let N=parseFloat(/\d[^m]*/.exec(c.slice(x,x+4)));t=N===KN?null:N}let L=$N.codes.get(Number(t));t&&L&&(c[x+1]===` +`?g+=zE(L):D===` +`&&(g+=zE(t)))}return g};qE.exports=(i,u,f)=>String(i).normalize().replace(/\r\n/g,` +`).split(` +`).map(c=>QN(c,u,f)).join(` +`)});var GE=Me((Ob,HE)=>{"use strict";var bE="[\uD800-\uDBFF][\uDC00-\uDFFF]",ZN=i=>i&&i.exact?new RegExp(`^${bE}$`):new RegExp(bE,"g");HE.exports=ZN});var Gy=Me((Ib,VE)=>{"use strict";var eB=Ry(),tB=GE(),YE=Rh(),$E=["","\x9B"],Nh=i=>`${$E[0]}[${i}m`,KE=(i,u,f)=>{let c=[];i=[...i];for(let g of i){let t=g;g.match(";")&&(g=g.split(";")[0][0]+"0");let C=YE.codes.get(parseInt(g,10));if(C){let A=i.indexOf(C.toString());A>=0?i.splice(A,1):c.push(Nh(u?C:t))}else if(u){c.push(Nh(0));break}else c.push(Nh(t))}if(u&&(c=c.filter((g,t)=>c.indexOf(g)===t),f!==void 0)){let g=Nh(YE.codes.get(parseInt(f,10)));c=c.reduce((t,C)=>C===g?[C,...t]:[...t,C],[])}return c.join("")};VE.exports=(i,u,f)=>{let c=[...i.normalize()],g=[];f=typeof f=="number"?f:c.length;let t=!1,C,A=0,x="";for(let[D,L]of c.entries()){let N=!1;if($E.includes(L)){let j=/\d[^m]*/.exec(i.slice(D,D+18));C=j&&j.length>0?j[0]:void 0,Au&&A<=f)x+=L;else if(A===u&&!t&&C!==void 0)x=KE(g);else if(A>=f){x+=KE(g,!0,C);break}}return x}});var JE=Me((Pb,XE)=>{"use strict";var Bf=Gy(),nB=Mh();function Bh(i,u,f){if(i.charAt(u)===" ")return u;for(let c=1;c<=3;c++)if(f){if(i.charAt(u+c)===" ")return u+c}else if(i.charAt(u-c)===" ")return u-c;return u}XE.exports=(i,u,f)=>{f=dt({position:"end",preferTruncationOnSpace:!1},f);let{position:c,space:g,preferTruncationOnSpace:t}=f,C="\u2026",A=1;if(typeof i!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof i}`);if(typeof u!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof u}`);if(u<1)return"";if(u===1)return C;let x=nB(i);if(x<=u)return i;if(c==="start"){if(t){let D=Bh(i,x-u+1,!0);return C+Bf(i,D,x).trim()}return g===!0&&(C+=" ",A=2),C+Bf(i,x-u+A,x)}if(c==="middle"){g===!0&&(C=" "+C+" ",A=3);let D=Math.floor(u/2);if(t){let L=Bh(i,D),N=Bh(i,x-(u-D)+1,!0);return Bf(i,0,L)+C+Bf(i,N,x).trim()}return Bf(i,0,D)+C+Bf(i,x-(u-D)+A,x)}if(c==="end"){if(t){let D=Bh(i,u-1);return Bf(i,0,D)+C}return g===!0&&(C=" "+C,A=2),Bf(i,0,u-A)+C}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${c}`)}});var Yy=Me(m2=>{"use strict";var QE=m2&&m2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(m2,"__esModule",{value:!0});var rB=QE(WE()),iB=QE(JE()),Vy={};m2.default=(i,u,f)=>{let c=i+String(u)+String(f);if(Vy[c])return Vy[c];let g=i;if(f==="wrap"&&(g=rB.default(i,u,{trim:!1,hard:!0})),f.startsWith("truncate")){let t="end";f==="truncate-middle"&&(t="middle"),f==="truncate-start"&&(t="start"),g=iB.default(i,u,{position:t})}return Vy[c]=g,g}});var Ky=Me($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});var ZE=i=>{let u="";if(i.childNodes.length>0)for(let f of i.childNodes){let c="";f.nodeName==="#text"?c=f.nodeValue:((f.nodeName==="ink-text"||f.nodeName==="ink-virtual-text")&&(c=ZE(f)),c.length>0&&typeof f.internal_transform=="function"&&(c=f.internal_transform(c))),u+=c}return u};$y.default=ZE});var Xy=Me(Zr=>{"use strict";var v2=Zr&&Zr.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Zr,"__esModule",{value:!0});Zr.setTextNodeValue=Zr.createTextNode=Zr.setStyle=Zr.setAttribute=Zr.removeChildNode=Zr.insertBeforeNode=Zr.appendChildNode=Zr.createNode=Zr.TEXT_NAME=void 0;var oB=v2(hc()),e6=v2(TE()),uB=v2(xE()),sB=v2(Yy()),lB=v2(Ky());Zr.TEXT_NAME="#text";Zr.createNode=i=>{var u;let f={nodeName:i,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:i==="ink-virtual-text"?void 0:oB.default.Node.create()};return i==="ink-text"&&((u=f.yogaNode)===null||u===void 0||u.setMeasureFunc(fB.bind(null,f))),f};Zr.appendChildNode=(i,u)=>{var f;u.parentNode&&Zr.removeChildNode(u.parentNode,u),u.parentNode=i,i.childNodes.push(u),u.yogaNode&&((f=i.yogaNode)===null||f===void 0||f.insertChild(u.yogaNode,i.yogaNode.getChildCount())),(i.nodeName==="ink-text"||i.nodeName==="ink-virtual-text")&&jh(i)};Zr.insertBeforeNode=(i,u,f)=>{var c,g;u.parentNode&&Zr.removeChildNode(u.parentNode,u),u.parentNode=i;let t=i.childNodes.indexOf(f);if(t>=0){i.childNodes.splice(t,0,u),u.yogaNode&&((c=i.yogaNode)===null||c===void 0||c.insertChild(u.yogaNode,t));return}i.childNodes.push(u),u.yogaNode&&((g=i.yogaNode)===null||g===void 0||g.insertChild(u.yogaNode,i.yogaNode.getChildCount())),(i.nodeName==="ink-text"||i.nodeName==="ink-virtual-text")&&jh(i)};Zr.removeChildNode=(i,u)=>{var f,c;u.yogaNode&&((c=(f=u.parentNode)===null||f===void 0?void 0:f.yogaNode)===null||c===void 0||c.removeChild(u.yogaNode)),u.parentNode=null;let g=i.childNodes.indexOf(u);g>=0&&i.childNodes.splice(g,1),(i.nodeName==="ink-text"||i.nodeName==="ink-virtual-text")&&jh(i)};Zr.setAttribute=(i,u,f)=>{i.attributes[u]=f};Zr.setStyle=(i,u)=>{i.style=u,i.yogaNode&&uB.default(i.yogaNode,u)};Zr.createTextNode=i=>{let u={nodeName:"#text",nodeValue:i,yogaNode:void 0,parentNode:null,style:{}};return Zr.setTextNodeValue(u,i),u};var fB=function(i,u){var f,c;let g=i.nodeName==="#text"?i.nodeValue:lB.default(i),t=e6.default(g);if(t.width<=u||t.width>=1&&u>0&&u<1)return t;let C=(c=(f=i.style)===null||f===void 0?void 0:f.textWrap)!==null&&c!==void 0?c:"wrap",A=sB.default(g,u,C);return e6.default(A)},t6=i=>{var u;if(!(!i||!i.parentNode))return(u=i.yogaNode)!==null&&u!==void 0?u:t6(i.parentNode)},jh=i=>{let u=t6(i);u==null||u.markDirty()};Zr.setTextNodeValue=(i,u)=>{typeof u!="string"&&(u=String(u)),i.nodeValue=u,jh(i)}});var mc=Me((Rb,n6)=>{"use strict";n6.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),EMPTY_BUFFER:Buffer.alloc(0),NOOP:()=>{}}});var g2=Me((Nb,Jy)=>{"use strict";var{EMPTY_BUFFER:cB}=mc();function r6(i,u){if(i.length===0)return cB;if(i.length===1)return i[0];let f=Buffer.allocUnsafe(u),c=0;for(let g=0;g{"use strict";var l6=Symbol("kDone"),Qy=Symbol("kRun"),f6=class{constructor(u){this[l6]=()=>{this.pending--,this[Qy]()},this.concurrency=u||Infinity,this.jobs=[],this.pending=0}add(u){this.jobs.push(u),this[Qy]()}[Qy](){if(this.pending!==this.concurrency&&this.jobs.length){let u=this.jobs.shift();this.pending++,u(this[l6])}}};s6.exports=f6});var w2=Me((jb,a6)=>{"use strict";var _2=require("zlib"),d6=g2(),aB=c6(),{kStatusCode:p6,NOOP:dB}=mc(),pB=Buffer.from([0,0,255,255]),qh=Symbol("permessage-deflate"),Xl=Symbol("total-length"),y2=Symbol("callback"),jf=Symbol("buffers"),Zy=Symbol("error"),zh,h6=class{constructor(u,f,c){if(this._maxPayload=c|0,this._options=u||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!f,this._deflate=null,this._inflate=null,this.params=null,!zh){let g=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;zh=new aB(g)}}static get extensionName(){return"permessage-deflate"}offer(){let u={};return this._options.serverNoContextTakeover&&(u.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(u.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(u.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?u.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(u.client_max_window_bits=!0),u}accept(u){return u=this.normalizeParams(u),this.params=this._isServer?this.acceptAsServer(u):this.acceptAsClient(u),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let u=this._deflate[y2];this._deflate.close(),this._deflate=null,u&&u(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(u){let f=this._options,c=u.find(g=>!(f.serverNoContextTakeover===!1&&g.server_no_context_takeover||g.server_max_window_bits&&(f.serverMaxWindowBits===!1||typeof f.serverMaxWindowBits=="number"&&f.serverMaxWindowBits>g.server_max_window_bits)||typeof f.clientMaxWindowBits=="number"&&!g.client_max_window_bits));if(!c)throw new Error("None of the extension offers can be accepted");return f.serverNoContextTakeover&&(c.server_no_context_takeover=!0),f.clientNoContextTakeover&&(c.client_no_context_takeover=!0),typeof f.serverMaxWindowBits=="number"&&(c.server_max_window_bits=f.serverMaxWindowBits),typeof f.clientMaxWindowBits=="number"?c.client_max_window_bits=f.clientMaxWindowBits:(c.client_max_window_bits===!0||f.clientMaxWindowBits===!1)&&delete c.client_max_window_bits,c}acceptAsClient(u){let f=u[0];if(this._options.clientNoContextTakeover===!1&&f.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!f.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(f.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&f.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return f}normalizeParams(u){return u.forEach(f=>{Object.keys(f).forEach(c=>{let g=f[c];if(g.length>1)throw new Error(`Parameter "${c}" must have only a single value`);if(g=g[0],c==="client_max_window_bits"){if(g!==!0){let t=+g;if(!Number.isInteger(t)||t<8||t>15)throw new TypeError(`Invalid value for parameter "${c}": ${g}`);g=t}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${c}": ${g}`)}else if(c==="server_max_window_bits"){let t=+g;if(!Number.isInteger(t)||t<8||t>15)throw new TypeError(`Invalid value for parameter "${c}": ${g}`);g=t}else if(c==="client_no_context_takeover"||c==="server_no_context_takeover"){if(g!==!0)throw new TypeError(`Invalid value for parameter "${c}": ${g}`)}else throw new Error(`Unknown parameter "${c}"`);f[c]=g})}),u}decompress(u,f,c){zh.add(g=>{this._decompress(u,f,(t,C)=>{g(),c(t,C)})})}compress(u,f,c){zh.add(g=>{this._compress(u,f,(t,C)=>{g(),c(t,C)})})}_decompress(u,f,c){let g=this._isServer?"client":"server";if(!this._inflate){let t=`${g}_max_window_bits`,C=typeof this.params[t]!="number"?_2.Z_DEFAULT_WINDOWBITS:this.params[t];this._inflate=_2.createInflateRaw(zn(dt({},this._options.zlibInflateOptions),{windowBits:C})),this._inflate[qh]=this,this._inflate[Xl]=0,this._inflate[jf]=[],this._inflate.on("error",mB),this._inflate.on("data",m6)}this._inflate[y2]=c,this._inflate.write(u),f&&this._inflate.write(pB),this._inflate.flush(()=>{let t=this._inflate[Zy];if(t){this._inflate.close(),this._inflate=null,c(t);return}let C=d6.concat(this._inflate[jf],this._inflate[Xl]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Xl]=0,this._inflate[jf]=[],f&&this.params[`${g}_no_context_takeover`]&&this._inflate.reset()),c(null,C)})}_compress(u,f,c){let g=this._isServer?"server":"client";if(!this._deflate){let t=`${g}_max_window_bits`,C=typeof this.params[t]!="number"?_2.Z_DEFAULT_WINDOWBITS:this.params[t];this._deflate=_2.createDeflateRaw(zn(dt({},this._options.zlibDeflateOptions),{windowBits:C})),this._deflate[Xl]=0,this._deflate[jf]=[],this._deflate.on("error",dB),this._deflate.on("data",hB)}this._deflate[y2]=c,this._deflate.write(u),this._deflate.flush(_2.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let t=d6.concat(this._deflate[jf],this._deflate[Xl]);f&&(t=t.slice(0,t.length-4)),this._deflate[y2]=null,this._deflate[Xl]=0,this._deflate[jf]=[],f&&this.params[`${g}_no_context_takeover`]&&this._deflate.reset(),c(null,t)})}};a6.exports=h6;function hB(i){this[jf].push(i),this[Xl]+=i.length}function m6(i){if(this[Xl]+=i.length,this[qh]._maxPayload<1||this[Xl]<=this[qh]._maxPayload){this[jf].push(i);return}this[Zy]=new RangeError("Max payload size exceeded"),this[Zy][p6]=1009,this.removeListener("data",m6),this.reset()}function mB(i){this[qh]._inflate=null,i[p6]=1007,this[y2](i)}});var t3=Me((Ub,e3)=>{"use strict";function v6(i){return i>=1e3&&i<=1014&&i!==1004&&i!==1005&&i!==1006||i>=3e3&&i<=4999}function g6(i){let u=i.length,f=0;for(;f=u||(i[f+1]&192)!=128||(i[f+2]&192)!=128||i[f]===224&&(i[f+1]&224)==128||i[f]===237&&(i[f+1]&224)==160)return!1;f+=3}else if((i[f]&248)==240){if(f+3>=u||(i[f+1]&192)!=128||(i[f+2]&192)!=128||(i[f+3]&192)!=128||i[f]===240&&(i[f+1]&240)==128||i[f]===244&&i[f+1]>143||i[f]>244)return!1;f+=4}else return!1;return!0}try{let i=require("utf-8-validate");typeof i=="object"&&(i=i.Validation.isValidUTF8),e3.exports={isValidStatusCode:v6,isValidUTF8(u){return u.length<150?g6(u):i(u)}}}catch(i){e3.exports={isValidStatusCode:v6,isValidUTF8:g6}}});var i3=Me((qb,_6)=>{"use strict";var{Writable:vB}=require("stream"),y6=w2(),{BINARY_TYPES:gB,EMPTY_BUFFER:_B,kStatusCode:yB,kWebSocket:wB}=mc(),{concat:n3,toArrayBuffer:DB,unmask:EB}=g2(),{isValidStatusCode:SB,isValidUTF8:w6}=t3(),D2=0,D6=1,E6=2,S6=3,r3=4,CB=5,C6=class extends vB{constructor(u,f,c,g){super();this._binaryType=u||gB[0],this[wB]=void 0,this._extensions=f||{},this._isServer=!!c,this._maxPayload=g|0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=D2,this._loop=!1}_write(u,f,c){if(this._opcode===8&&this._state==D2)return c();this._bufferedBytes+=u.length,this._buffers.push(u),this.startLoop(c)}consume(u){if(this._bufferedBytes-=u,u===this._buffers[0].length)return this._buffers.shift();if(u=c.length?f.set(this._buffers.shift(),g):(f.set(new Uint8Array(c.buffer,c.byteOffset,u),g),this._buffers[0]=c.slice(u)),u-=c.length}while(u>0);return f}startLoop(u){let f;this._loop=!0;do switch(this._state){case D2:f=this.getInfo();break;case D6:f=this.getPayloadLength16();break;case E6:f=this.getPayloadLength64();break;case S6:this.getMask();break;case r3:f=this.getData(u);break;default:this._loop=!1;return}while(this._loop);u(f)}getInfo(){if(this._bufferedBytes<2){this._loop=!1;return}let u=this.consume(2);if((u[0]&48)!=0)return this._loop=!1,ii(RangeError,"RSV2 and RSV3 must be clear",!0,1002);let f=(u[0]&64)==64;if(f&&!this._extensions[y6.extensionName])return this._loop=!1,ii(RangeError,"RSV1 must be clear",!0,1002);if(this._fin=(u[0]&128)==128,this._opcode=u[0]&15,this._payloadLength=u[1]&127,this._opcode===0){if(f)return this._loop=!1,ii(RangeError,"RSV1 must be clear",!0,1002);if(!this._fragmented)return this._loop=!1,ii(RangeError,"invalid opcode 0",!0,1002);this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented)return this._loop=!1,ii(RangeError,`invalid opcode ${this._opcode}`,!0,1002);this._compressed=f}else if(this._opcode>7&&this._opcode<11){if(!this._fin)return this._loop=!1,ii(RangeError,"FIN must be set",!0,1002);if(f)return this._loop=!1,ii(RangeError,"RSV1 must be clear",!0,1002);if(this._payloadLength>125)return this._loop=!1,ii(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002)}else return this._loop=!1,ii(RangeError,`invalid opcode ${this._opcode}`,!0,1002);if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(u[1]&128)==128,this._isServer){if(!this._masked)return this._loop=!1,ii(RangeError,"MASK must be set",!0,1002)}else if(this._masked)return this._loop=!1,ii(RangeError,"MASK must be clear",!0,1002);if(this._payloadLength===126)this._state=D6;else if(this._payloadLength===127)this._state=E6;else return this.haveLength()}getPayloadLength16(){if(this._bufferedBytes<2){this._loop=!1;return}return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength()}getPayloadLength64(){if(this._bufferedBytes<8){this._loop=!1;return}let u=this.consume(8),f=u.readUInt32BE(0);return f>Math.pow(2,53-32)-1?(this._loop=!1,ii(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009)):(this._payloadLength=f*Math.pow(2,32)+u.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,ii(RangeError,"Max payload size exceeded",!1,1009);this._masked?this._state=S6:this._state=r3}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=r3}getData(u){let f=_B;if(this._payloadLength){if(this._bufferedBytes7)return this.controlMessage(f);if(this._compressed){this._state=CB,this.decompress(f,u);return}return f.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(f)),this.dataMessage()}decompress(u,f){this._extensions[y6.extensionName].decompress(u,this._fin,(g,t)=>{if(g)return f(g);if(t.length){if(this._messageLength+=t.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return f(ii(RangeError,"Max payload size exceeded",!1,1009));this._fragments.push(t)}let C=this.dataMessage();if(C)return f(C);this.startLoop(f)})}dataMessage(){if(this._fin){let u=this._messageLength,f=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let c;this._binaryType==="nodebuffer"?c=n3(f,u):this._binaryType==="arraybuffer"?c=DB(n3(f,u)):c=f,this.emit("message",c)}else{let c=n3(f,u);if(!w6(c))return this._loop=!1,ii(Error,"invalid UTF-8 sequence",!0,1007);this.emit("message",c.toString())}}this._state=D2}controlMessage(u){if(this._opcode===8)if(this._loop=!1,u.length===0)this.emit("conclude",1005,""),this.end();else{if(u.length===1)return ii(RangeError,"invalid payload length 1",!0,1002);{let f=u.readUInt16BE(0);if(!SB(f))return ii(RangeError,`invalid status code ${f}`,!0,1002);let c=u.slice(2);if(!w6(c))return ii(Error,"invalid UTF-8 sequence",!0,1007);this.emit("conclude",f,c.toString()),this.end()}}else this._opcode===9?this.emit("ping",u):this.emit("pong",u);this._state=D2}};_6.exports=C6;function ii(i,u,f,c){let g=new i(f?`Invalid WebSocket frame: ${u}`:u);return Error.captureStackTrace(g,ii),g[yB]=c,g}});var o3=Me((zb,T6)=>{"use strict";var{randomFillSync:TB}=require("crypto"),x6=w2(),{EMPTY_BUFFER:xB}=mc(),{isValidStatusCode:kB}=t3(),{mask:k6,toBuffer:Jl}=g2(),vc=Buffer.alloc(4),Ql=class{constructor(u,f){this._extensions=f||{},this._socket=u,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(u,f){let c=f.mask&&f.readOnly,g=f.mask?6:2,t=u.length;u.length>=65536?(g+=8,t=127):u.length>125&&(g+=2,t=126);let C=Buffer.allocUnsafe(c?u.length+g:g);return C[0]=f.fin?f.opcode|128:f.opcode,f.rsv1&&(C[0]|=64),C[1]=t,t===126?C.writeUInt16BE(u.length,2):t===127&&(C.writeUInt32BE(0,2),C.writeUInt32BE(u.length,6)),f.mask?(TB(vc,0,4),C[1]|=128,C[g-4]=vc[0],C[g-3]=vc[1],C[g-2]=vc[2],C[g-1]=vc[3],c?(k6(u,vc,C,g,u.length),[C]):(k6(u,vc,u,0,u.length),[C,u])):[C,u]}close(u,f,c,g){let t;if(u===void 0)t=xB;else{if(typeof u!="number"||!kB(u))throw new TypeError("First argument must be a valid error code number");if(f===void 0||f==="")t=Buffer.allocUnsafe(2),t.writeUInt16BE(u,0);else{let C=Buffer.byteLength(f);if(C>123)throw new RangeError("The message must not be greater than 123 bytes");t=Buffer.allocUnsafe(2+C),t.writeUInt16BE(u,0),t.write(f,2)}}this._deflating?this.enqueue([this.doClose,t,c,g]):this.doClose(t,c,g)}doClose(u,f,c){this.sendFrame(Ql.frame(u,{fin:!0,rsv1:!1,opcode:8,mask:f,readOnly:!1}),c)}ping(u,f,c){let g=Jl(u);if(g.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPing,g,f,Jl.readOnly,c]):this.doPing(g,f,Jl.readOnly,c)}doPing(u,f,c,g){this.sendFrame(Ql.frame(u,{fin:!0,rsv1:!1,opcode:9,mask:f,readOnly:c}),g)}pong(u,f,c){let g=Jl(u);if(g.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPong,g,f,Jl.readOnly,c]):this.doPong(g,f,Jl.readOnly,c)}doPong(u,f,c,g){this.sendFrame(Ql.frame(u,{fin:!0,rsv1:!1,opcode:10,mask:f,readOnly:c}),g)}send(u,f,c){let g=Jl(u),t=this._extensions[x6.extensionName],C=f.binary?2:1,A=f.compress;if(this._firstFragment?(this._firstFragment=!1,A&&t&&(A=g.length>=t._threshold),this._compress=A):(A=!1,C=0),f.fin&&(this._firstFragment=!0),t){let x={fin:f.fin,rsv1:A,opcode:C,mask:f.mask,readOnly:Jl.readOnly};this._deflating?this.enqueue([this.dispatch,g,this._compress,x,c]):this.dispatch(g,this._compress,x,c)}else this.sendFrame(Ql.frame(g,{fin:f.fin,rsv1:!1,opcode:C,mask:f.mask,readOnly:Jl.readOnly}),c)}dispatch(u,f,c,g){if(!f){this.sendFrame(Ql.frame(u,c),g);return}let t=this._extensions[x6.extensionName];this._bufferedBytes+=u.length,this._deflating=!0,t.compress(u,c.fin,(C,A)=>{if(this._socket.destroyed){let x=new Error("The socket was closed while data was being compressed");typeof g=="function"&&g(x);for(let D=0;D{"use strict";var E2=class{constructor(u,f){this.target=f,this.type=u}},O6=class extends E2{constructor(u,f){super("message",f);this.data=u}},I6=class extends E2{constructor(u,f,c){super("close",c);this.wasClean=c._closeFrameReceived&&c._closeFrameSent,this.reason=f,this.code=u}},P6=class extends E2{constructor(u){super("open",u)}},M6=class extends E2{constructor(u,f){super("error",f);this.message=u.message,this.error=u}},AB={addEventListener(i,u,f){if(typeof u!="function")return;function c(x){u.call(this,new O6(x,this))}function g(x,D){u.call(this,new I6(x,D,this))}function t(x){u.call(this,new M6(x,this))}function C(){u.call(this,new P6(this))}let A=f&&f.once?"once":"on";i==="message"?(c._listener=u,this[A](i,c)):i==="close"?(g._listener=u,this[A](i,g)):i==="error"?(t._listener=u,this[A](i,t)):i==="open"?(C._listener=u,this[A](i,C)):this[A](i,u)},removeEventListener(i,u){let f=this.listeners(i);for(let c=0;c{"use strict";var S2=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function rl(i,u,f){i[u]===void 0?i[u]=[f]:i[u].push(f)}function OB(i){let u=Object.create(null);if(i===void 0||i==="")return u;let f=Object.create(null),c=!1,g=!1,t=!1,C,A,x=-1,D=-1,L=0;for(;L{let f=i[u];return Array.isArray(f)||(f=[f]),f.map(c=>[u].concat(Object.keys(c).map(g=>{let t=c[g];return Array.isArray(t)||(t=[t]),t.map(C=>C===!0?g:`${g}=${C}`).join("; ")})).join("; ")).join(", ")}).join(", ")}L6.exports={format:IB,parse:OB}});var a3=Me((bb,R6)=>{"use strict";var PB=require("events"),MB=require("https"),FB=require("http"),N6=require("net"),LB=require("tls"),{randomBytes:RB,createHash:NB}=require("crypto"),{URL:s3}=require("url"),Uf=w2(),BB=i3(),jB=o3(),{BINARY_TYPES:B6,EMPTY_BUFFER:l3,GUID:UB,kStatusCode:qB,kWebSocket:No,NOOP:j6}=mc(),{addEventListener:zB,removeEventListener:WB}=F6(),{format:HB,parse:bB}=u3(),{toBuffer:GB}=g2(),U6=["CONNECTING","OPEN","CLOSING","CLOSED"],f3=[8,13],VB=30*1e3,mr=class extends PB{constructor(u,f,c){super();this._binaryType=B6[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage="",this._closeTimer=null,this._extensions={},this._protocol="",this._readyState=mr.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,u!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,Array.isArray(f)?f=f.join(", "):typeof f=="object"&&f!==null&&(c=f,f=void 0),q6(this,u,f,c)):this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(u){!B6.includes(u)||(this._binaryType=u,this._receiver&&(this._receiver._binaryType=u))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(u,f,c){let g=new BB(this.binaryType,this._extensions,this._isServer,c);this._sender=new jB(u,this._extensions),this._receiver=g,this._socket=u,g[No]=this,u[No]=this,g.on("conclude",YB),g.on("drain",$B),g.on("error",KB),g.on("message",XB),g.on("ping",JB),g.on("pong",QB),u.setTimeout(0),u.setNoDelay(),f.length>0&&u.unshift(f),u.on("close",z6),u.on("data",Wh),u.on("end",W6),u.on("error",H6),this._readyState=mr.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=mr.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[Uf.extensionName]&&this._extensions[Uf.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=mr.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(u,f){if(this.readyState!==mr.CLOSED){if(this.readyState===mr.CONNECTING){let c="WebSocket was closed before the connection was established";return Zl(this,this._req,c)}if(this.readyState===mr.CLOSING){this._closeFrameSent&&this._closeFrameReceived&&this._socket.end();return}this._readyState=mr.CLOSING,this._sender.close(u,f,!this._isServer,c=>{c||(this._closeFrameSent=!0,this._closeFrameReceived&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),VB)}}ping(u,f,c){if(this.readyState===mr.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof u=="function"?(c=u,u=f=void 0):typeof f=="function"&&(c=f,f=void 0),typeof u=="number"&&(u=u.toString()),this.readyState!==mr.OPEN){c3(this,u,c);return}f===void 0&&(f=!this._isServer),this._sender.ping(u||l3,f,c)}pong(u,f,c){if(this.readyState===mr.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof u=="function"?(c=u,u=f=void 0):typeof f=="function"&&(c=f,f=void 0),typeof u=="number"&&(u=u.toString()),this.readyState!==mr.OPEN){c3(this,u,c);return}f===void 0&&(f=!this._isServer),this._sender.pong(u||l3,f,c)}send(u,f,c){if(this.readyState===mr.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof f=="function"&&(c=f,f={}),typeof u=="number"&&(u=u.toString()),this.readyState!==mr.OPEN){c3(this,u,c);return}let g=dt({binary:typeof u!="string",mask:!this._isServer,compress:!0,fin:!0},f);this._extensions[Uf.extensionName]||(g.compress=!1),this._sender.send(u||l3,g,c)}terminate(){if(this.readyState!==mr.CLOSED){if(this.readyState===mr.CONNECTING){let u="WebSocket was closed before the connection was established";return Zl(this,this._req,u)}this._socket&&(this._readyState=mr.CLOSING,this._socket.destroy())}}};U6.forEach((i,u)=>{let f={enumerable:!0,value:u};Object.defineProperty(mr.prototype,i,f),Object.defineProperty(mr,i,f)});["binaryType","bufferedAmount","extensions","protocol","readyState","url"].forEach(i=>{Object.defineProperty(mr.prototype,i,{enumerable:!0})});["open","error","close","message"].forEach(i=>{Object.defineProperty(mr.prototype,`on${i}`,{configurable:!0,enumerable:!0,get(){let u=this.listeners(i);for(let f=0;f{Zl(i,j,"Opening handshake has timed out")}),j.on("error",$=>{j===null||j.aborted||(j=i._req=null,i._readyState=mr.CLOSING,i.emit("error",$),i.emitClose())}),j.on("response",$=>{let h=$.headers.location,re=$.statusCode;if(h&&g.followRedirects&&re>=300&&re<400){if(++i._redirects>g.maxRedirects){Zl(i,j,"Maximum redirects exceeded");return}j.abort();let ce=new s3(h,u);q6(i,ce,f,c)}else i.emit("unexpected-response",j,$)||Zl(i,j,`Unexpected server response: ${$.statusCode}`)}),j.on("upgrade",($,h,re)=>{if(i.emit("upgrade",$),i.readyState!==mr.CONNECTING)return;j=i._req=null;let ce=NB("sha1").update(D+UB).digest("base64");if($.headers["sec-websocket-accept"]!==ce){Zl(i,h,"Invalid Sec-WebSocket-Accept header");return}let Q=$.headers["sec-websocket-protocol"],oe=(f||"").split(/, */),Se;if(!f&&Q?Se="Server sent a subprotocol but none was requested":f&&!Q?Se="Server sent no subprotocol":Q&&!oe.includes(Q)&&(Se="Server sent an invalid subprotocol"),Se){Zl(i,h,Se);return}if(Q&&(i._protocol=Q),N)try{let me=bB($.headers["sec-websocket-extensions"]);me[Uf.extensionName]&&(N.accept(me[Uf.extensionName]),i._extensions[Uf.extensionName]=N)}catch(me){Zl(i,h,"Invalid Sec-WebSocket-Extensions header");return}i.setSocket(h,re,g.maxPayload)})}function ZB(i){return i.path=i.socketPath,N6.connect(i)}function ej(i){return i.path=void 0,!i.servername&&i.servername!==""&&(i.servername=N6.isIP(i.host)?"":i.host),LB.connect(i)}function Zl(i,u,f){i._readyState=mr.CLOSING;let c=new Error(f);Error.captureStackTrace(c,Zl),u.setHeader?(u.abort(),u.socket&&!u.socket.destroyed&&u.socket.destroy(),u.once("abort",i.emitClose.bind(i)),i.emit("error",c)):(u.destroy(c),u.once("error",i.emit.bind(i,"error")),u.once("close",i.emitClose.bind(i)))}function c3(i,u,f){if(u){let c=GB(u).length;i._socket?i._sender._bufferedBytes+=c:i._bufferedAmount+=c}if(f){let c=new Error(`WebSocket is not open: readyState ${i.readyState} (${U6[i.readyState]})`);f(c)}}function YB(i,u){let f=this[No];f._socket.removeListener("data",Wh),f._socket.resume(),f._closeFrameReceived=!0,f._closeMessage=u,f._closeCode=i,i===1005?f.close():f.close(i,u)}function $B(){this[No]._socket.resume()}function KB(i){let u=this[No];u._socket.removeListener("data",Wh),u._readyState=mr.CLOSING,u._closeCode=i[qB],u.emit("error",i),u._socket.destroy()}function b6(){this[No].emitClose()}function XB(i){this[No].emit("message",i)}function JB(i){let u=this[No];u.pong(i,!u._isServer,j6),u.emit("ping",i)}function QB(i){this[No].emit("pong",i)}function z6(){let i=this[No];this.removeListener("close",z6),this.removeListener("end",W6),i._readyState=mr.CLOSING,i._socket.read(),i._receiver.end(),this.removeListener("data",Wh),this[No]=void 0,clearTimeout(i._closeTimer),i._receiver._writableState.finished||i._receiver._writableState.errorEmitted?i.emitClose():(i._receiver.on("error",b6),i._receiver.on("finish",b6))}function Wh(i){this[No]._receiver.write(i)||this.pause()}function W6(){let i=this[No];i._readyState=mr.CLOSING,i._receiver.end(),this.end()}function H6(){let i=this[No];this.removeListener("error",H6),this.on("error",j6),i&&(i._readyState=mr.CLOSING,this.destroy())}});var $6=Me((Gb,G6)=>{"use strict";var{Duplex:tj}=require("stream");function V6(i){i.emit("close")}function nj(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Y6(i){this.removeListener("error",Y6),this.destroy(),this.listenerCount("error")===0&&this.emit("error",i)}function rj(i,u){let f=!0;function c(){f&&i._socket.resume()}i.readyState===i.CONNECTING?i.once("open",function(){i._receiver.removeAllListeners("drain"),i._receiver.on("drain",c)}):(i._receiver.removeAllListeners("drain"),i._receiver.on("drain",c));let g=new tj(zn(dt({},u),{autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1}));return i.on("message",function(C){g.push(C)||(f=!1,i._socket.pause())}),i.once("error",function(C){g.destroyed||g.destroy(C)}),i.once("close",function(){g.destroyed||g.push(null)}),g._destroy=function(t,C){if(i.readyState===i.CLOSED){C(t),process.nextTick(V6,g);return}let A=!1;i.once("error",function(D){A=!0,C(D)}),i.once("close",function(){A||C(t),process.nextTick(V6,g)}),i.terminate()},g._final=function(t){if(i.readyState===i.CONNECTING){i.once("open",function(){g._final(t)});return}i._socket!==null&&(i._socket._writableState.finished?(t(),g._readableState.endEmitted&&g.destroy()):(i._socket.once("finish",function(){t()}),i.close()))},g._read=function(){i.readyState===i.OPEN&&!f&&(f=!0,i._receiver._writableState.needDrain||i._socket.resume())},g._write=function(t,C,A){if(i.readyState===i.CONNECTING){i.once("open",function(){g._write(t,C,A)});return}i.send(t,A)},g.on("end",nj),g.on("error",Y6),g}G6.exports=rj});var J6=Me((Vb,K6)=>{"use strict";var ij=require("events"),{createHash:oj}=require("crypto"),{createServer:uj,STATUS_CODES:d3}=require("http"),gc=w2(),sj=a3(),{format:lj,parse:fj}=u3(),{GUID:cj,kWebSocket:aj}=mc(),dj=/^[+/0-9A-Za-z]{22}==$/,X6=class extends ij{constructor(u,f){super();if(u=dt({maxPayload:100*1024*1024,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null},u),u.port==null&&!u.server&&!u.noServer)throw new TypeError('One of the "port", "server", or "noServer" options must be specified');if(u.port!=null?(this._server=uj((c,g)=>{let t=d3[426];g.writeHead(426,{"Content-Length":t.length,"Content-Type":"text/plain"}),g.end(t)}),this._server.listen(u.port,u.host,u.backlog,f)):u.server&&(this._server=u.server),this._server){let c=this.emit.bind(this,"connection");this._removeListeners=pj(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(g,t,C)=>{this.handleUpgrade(g,t,C,c)}})}u.perMessageDeflate===!0&&(u.perMessageDeflate={}),u.clientTracking&&(this.clients=new Set),this.options=u}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(u){if(u&&this.once("close",u),this.clients)for(let c of this.clients)c.terminate();let f=this._server;if(f&&(this._removeListeners(),this._removeListeners=this._server=null,this.options.port!=null)){f.close(()=>this.emit("close"));return}process.nextTick(hj,this)}shouldHandle(u){if(this.options.path){let f=u.url.indexOf("?");if((f!==-1?u.url.slice(0,f):u.url)!==this.options.path)return!1}return!0}handleUpgrade(u,f,c,g){f.on("error",p3);let t=u.headers["sec-websocket-key"]!==void 0?u.headers["sec-websocket-key"].trim():!1,C=+u.headers["sec-websocket-version"],A={};if(u.method!=="GET"||u.headers.upgrade.toLowerCase()!=="websocket"||!t||!dj.test(t)||C!==8&&C!==13||!this.shouldHandle(u))return Hh(f,400);if(this.options.perMessageDeflate){let x=new gc(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let D=fj(u.headers["sec-websocket-extensions"]);D[gc.extensionName]&&(x.accept(D[gc.extensionName]),A[gc.extensionName]=x)}catch(D){return Hh(f,400)}}if(this.options.verifyClient){let x={origin:u.headers[`${C===8?"sec-websocket-origin":"origin"}`],secure:!!(u.socket.authorized||u.socket.encrypted),req:u};if(this.options.verifyClient.length===2){this.options.verifyClient(x,(D,L,N,j)=>{if(!D)return Hh(f,L||401,N,j);this.completeUpgrade(t,A,u,f,c,g)});return}if(!this.options.verifyClient(x))return Hh(f,401)}this.completeUpgrade(t,A,u,f,c,g)}completeUpgrade(u,f,c,g,t,C){if(!g.readable||!g.writable)return g.destroy();if(g[aj])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");let A=oj("sha1").update(u+cj).digest("base64"),x=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${A}`],D=new sj(null),L=c.headers["sec-websocket-protocol"];if(L&&(L=L.split(",").map(mj),this.options.handleProtocols?L=this.options.handleProtocols(L,c):L=L[0],L&&(x.push(`Sec-WebSocket-Protocol: ${L}`),D._protocol=L)),f[gc.extensionName]){let N=f[gc.extensionName].params,j=lj({[gc.extensionName]:[N]});x.push(`Sec-WebSocket-Extensions: ${j}`),D._extensions=f}this.emit("headers",x,c),g.write(x.concat(`\r +`).join(`\r +`)),g.removeListener("error",p3),D.setSocket(g,t,this.options.maxPayload),this.clients&&(this.clients.add(D),D.on("close",()=>this.clients.delete(D))),C(D,c)}};K6.exports=X6;function pj(i,u){for(let f of Object.keys(u))i.on(f,u[f]);return function(){for(let c of Object.keys(u))i.removeListener(c,u[c])}}function hj(i){i.emit("close")}function p3(){this.destroy()}function Hh(i,u,f,c){i.writable&&(f=f||d3[u],c=dt({Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(f)},c),i.write(`HTTP/1.1 ${u} ${d3[u]}\r +`+Object.keys(c).map(g=>`${g}: ${c[g]}`).join(`\r +`)+`\r +\r +`+f)),i.removeListener("error",p3),i.destroy()}function mj(i){return i.trim()}});var Z6=Me((Yb,Q6)=>{"use strict";var C2=a3();C2.createWebSocketStream=$6();C2.Server=J6();C2.Receiver=i3();C2.Sender=o3();Q6.exports=C2});var eS=Me(bh=>{"use strict";var vj=bh&&bh.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(bh,"__esModule",{value:!0});var gj=vj(Z6()),T2=global;T2.WebSocket||(T2.WebSocket=gj.default);T2.window||(T2.window=global);T2.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__=[{type:1,value:7,isEnabled:!0},{type:2,value:"InternalApp",isEnabled:!0,isValid:!0},{type:2,value:"InternalAppContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdoutContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStderrContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdinContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalFocusContext",isEnabled:!0,isValid:!0}]});var tS=Me((Gh,h3)=>{(function(i,u){typeof Gh=="object"&&typeof h3=="object"?h3.exports=u():typeof define=="function"&&define.amd?define([],u):typeof Gh=="object"?Gh.ReactDevToolsBackend=u():i.ReactDevToolsBackend=u()})(window,function(){return function(i){var u={};function f(c){if(u[c])return u[c].exports;var g=u[c]={i:c,l:!1,exports:{}};return i[c].call(g.exports,g,g.exports,f),g.l=!0,g.exports}return f.m=i,f.c=u,f.d=function(c,g,t){f.o(c,g)||Object.defineProperty(c,g,{enumerable:!0,get:t})},f.r=function(c){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})},f.t=function(c,g){if(1&g&&(c=f(c)),8&g||4&g&&typeof c=="object"&&c&&c.__esModule)return c;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:c}),2&g&&typeof c!="string")for(var C in c)f.d(t,C,function(A){return c[A]}.bind(null,C));return t},f.n=function(c){var g=c&&c.__esModule?function(){return c.default}:function(){return c};return f.d(g,"a",g),g},f.o=function(c,g){return Object.prototype.hasOwnProperty.call(c,g)},f.p="",f(f.s=20)}([function(i,u,f){"use strict";i.exports=f(12)},function(i,u,f){"use strict";var c=Object.getOwnPropertySymbols,g=Object.prototype.hasOwnProperty,t=Object.prototype.propertyIsEnumerable;function C(A){if(A==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(A)}i.exports=function(){try{if(!Object.assign)return!1;var A=new String("abc");if(A[5]="de",Object.getOwnPropertyNames(A)[0]==="5")return!1;for(var x={},D=0;D<10;D++)x["_"+String.fromCharCode(D)]=D;if(Object.getOwnPropertyNames(x).map(function(N){return x[N]}).join("")!=="0123456789")return!1;var L={};return"abcdefghijklmnopqrst".split("").forEach(function(N){L[N]=N}),Object.keys(Object.assign({},L)).join("")==="abcdefghijklmnopqrst"}catch(N){return!1}}()?Object.assign:function(A,x){for(var D,L,N=C(A),j=1;j=J||Ft<0||Nt&&it-At>=ot}function Z(){var it=ce();if(ge(it))return Ae(it);Ue=setTimeout(Z,function(Ft){var jt=J-(Ft-be);return Nt?re(jt,ot-(Ft-At)):jt}(it))}function Ae(it){return Ue=void 0,Je&&Oe?V(it):(Oe=Le=void 0,ct)}function at(){var it=ce(),Ft=ge(it);if(Oe=arguments,Le=this,be=it,Ft){if(Ue===void 0)return ne(be);if(Nt)return Ue=setTimeout(Z,J),V(be)}return Ue===void 0&&(Ue=setTimeout(Z,J)),ct}return J=me(J)||0,oe(Te)&&(Ot=!!Te.leading,ot=(Nt="maxWait"in Te)?h(me(Te.maxWait)||0,J):ot,Je="trailing"in Te?!!Te.trailing:Je),at.cancel=function(){Ue!==void 0&&clearTimeout(Ue),At=0,Oe=be=Le=Ue=void 0},at.flush=function(){return Ue===void 0?ct:Ae(ce())},at}function oe(De){var J=g(De);return!!De&&(J=="object"||J=="function")}function Se(De){return g(De)=="symbol"||function(J){return!!J&&g(J)=="object"}(De)&&$.call(De)=="[object Symbol]"}function me(De){if(typeof De=="number")return De;if(Se(De))return NaN;if(oe(De)){var J=typeof De.valueOf=="function"?De.valueOf():De;De=oe(J)?J+"":J}if(typeof De!="string")return De===0?De:+De;De=De.replace(t,"");var Te=A.test(De);return Te||x.test(De)?D(De.slice(2),Te?2:8):C.test(De)?NaN:+De}i.exports=function(De,J,Te){var Oe=!0,Le=!0;if(typeof De!="function")throw new TypeError("Expected a function");return oe(Te)&&(Oe="leading"in Te?!!Te.leading:Oe,Le="trailing"in Te?!!Te.trailing:Le),Q(De,J,{leading:Oe,maxWait:J,trailing:Le})}}).call(this,f(4))},function(i,u,f){(function(c){function g(V){return(g=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(ne){return typeof ne}:function(ne){return ne&&typeof Symbol=="function"&&ne.constructor===Symbol&&ne!==Symbol.prototype?"symbol":typeof ne})(V)}var t;u=i.exports=h,t=(c===void 0?"undefined":g(c))==="object"&&c.env&&c.env.NODE_DEBUG&&/\bsemver\b/i.test(c.env.NODE_DEBUG)?function(){var V=Array.prototype.slice.call(arguments,0);V.unshift("SEMVER"),console.log.apply(console,V)}:function(){},u.SEMVER_SPEC_VERSION="2.0.0";var C=Number.MAX_SAFE_INTEGER||9007199254740991,A=u.re=[],x=u.src=[],D=u.tokens={},L=0;function N(V){D[V]=L++}N("NUMERICIDENTIFIER"),x[D.NUMERICIDENTIFIER]="0|[1-9]\\d*",N("NUMERICIDENTIFIERLOOSE"),x[D.NUMERICIDENTIFIERLOOSE]="[0-9]+",N("NONNUMERICIDENTIFIER"),x[D.NONNUMERICIDENTIFIER]="\\d*[a-zA-Z-][a-zA-Z0-9-]*",N("MAINVERSION"),x[D.MAINVERSION]="("+x[D.NUMERICIDENTIFIER]+")\\.("+x[D.NUMERICIDENTIFIER]+")\\.("+x[D.NUMERICIDENTIFIER]+")",N("MAINVERSIONLOOSE"),x[D.MAINVERSIONLOOSE]="("+x[D.NUMERICIDENTIFIERLOOSE]+")\\.("+x[D.NUMERICIDENTIFIERLOOSE]+")\\.("+x[D.NUMERICIDENTIFIERLOOSE]+")",N("PRERELEASEIDENTIFIER"),x[D.PRERELEASEIDENTIFIER]="(?:"+x[D.NUMERICIDENTIFIER]+"|"+x[D.NONNUMERICIDENTIFIER]+")",N("PRERELEASEIDENTIFIERLOOSE"),x[D.PRERELEASEIDENTIFIERLOOSE]="(?:"+x[D.NUMERICIDENTIFIERLOOSE]+"|"+x[D.NONNUMERICIDENTIFIER]+")",N("PRERELEASE"),x[D.PRERELEASE]="(?:-("+x[D.PRERELEASEIDENTIFIER]+"(?:\\."+x[D.PRERELEASEIDENTIFIER]+")*))",N("PRERELEASELOOSE"),x[D.PRERELEASELOOSE]="(?:-?("+x[D.PRERELEASEIDENTIFIERLOOSE]+"(?:\\."+x[D.PRERELEASEIDENTIFIERLOOSE]+")*))",N("BUILDIDENTIFIER"),x[D.BUILDIDENTIFIER]="[0-9A-Za-z-]+",N("BUILD"),x[D.BUILD]="(?:\\+("+x[D.BUILDIDENTIFIER]+"(?:\\."+x[D.BUILDIDENTIFIER]+")*))",N("FULL"),N("FULLPLAIN"),x[D.FULLPLAIN]="v?"+x[D.MAINVERSION]+x[D.PRERELEASE]+"?"+x[D.BUILD]+"?",x[D.FULL]="^"+x[D.FULLPLAIN]+"$",N("LOOSEPLAIN"),x[D.LOOSEPLAIN]="[v=\\s]*"+x[D.MAINVERSIONLOOSE]+x[D.PRERELEASELOOSE]+"?"+x[D.BUILD]+"?",N("LOOSE"),x[D.LOOSE]="^"+x[D.LOOSEPLAIN]+"$",N("GTLT"),x[D.GTLT]="((?:<|>)?=?)",N("XRANGEIDENTIFIERLOOSE"),x[D.XRANGEIDENTIFIERLOOSE]=x[D.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*",N("XRANGEIDENTIFIER"),x[D.XRANGEIDENTIFIER]=x[D.NUMERICIDENTIFIER]+"|x|X|\\*",N("XRANGEPLAIN"),x[D.XRANGEPLAIN]="[v=\\s]*("+x[D.XRANGEIDENTIFIER]+")(?:\\.("+x[D.XRANGEIDENTIFIER]+")(?:\\.("+x[D.XRANGEIDENTIFIER]+")(?:"+x[D.PRERELEASE]+")?"+x[D.BUILD]+"?)?)?",N("XRANGEPLAINLOOSE"),x[D.XRANGEPLAINLOOSE]="[v=\\s]*("+x[D.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+x[D.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+x[D.XRANGEIDENTIFIERLOOSE]+")(?:"+x[D.PRERELEASELOOSE]+")?"+x[D.BUILD]+"?)?)?",N("XRANGE"),x[D.XRANGE]="^"+x[D.GTLT]+"\\s*"+x[D.XRANGEPLAIN]+"$",N("XRANGELOOSE"),x[D.XRANGELOOSE]="^"+x[D.GTLT]+"\\s*"+x[D.XRANGEPLAINLOOSE]+"$",N("COERCE"),x[D.COERCE]="(^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])",N("COERCERTL"),A[D.COERCERTL]=new RegExp(x[D.COERCE],"g"),N("LONETILDE"),x[D.LONETILDE]="(?:~>?)",N("TILDETRIM"),x[D.TILDETRIM]="(\\s*)"+x[D.LONETILDE]+"\\s+",A[D.TILDETRIM]=new RegExp(x[D.TILDETRIM],"g"),N("TILDE"),x[D.TILDE]="^"+x[D.LONETILDE]+x[D.XRANGEPLAIN]+"$",N("TILDELOOSE"),x[D.TILDELOOSE]="^"+x[D.LONETILDE]+x[D.XRANGEPLAINLOOSE]+"$",N("LONECARET"),x[D.LONECARET]="(?:\\^)",N("CARETTRIM"),x[D.CARETTRIM]="(\\s*)"+x[D.LONECARET]+"\\s+",A[D.CARETTRIM]=new RegExp(x[D.CARETTRIM],"g"),N("CARET"),x[D.CARET]="^"+x[D.LONECARET]+x[D.XRANGEPLAIN]+"$",N("CARETLOOSE"),x[D.CARETLOOSE]="^"+x[D.LONECARET]+x[D.XRANGEPLAINLOOSE]+"$",N("COMPARATORLOOSE"),x[D.COMPARATORLOOSE]="^"+x[D.GTLT]+"\\s*("+x[D.LOOSEPLAIN]+")$|^$",N("COMPARATOR"),x[D.COMPARATOR]="^"+x[D.GTLT]+"\\s*("+x[D.FULLPLAIN]+")$|^$",N("COMPARATORTRIM"),x[D.COMPARATORTRIM]="(\\s*)"+x[D.GTLT]+"\\s*("+x[D.LOOSEPLAIN]+"|"+x[D.XRANGEPLAIN]+")",A[D.COMPARATORTRIM]=new RegExp(x[D.COMPARATORTRIM],"g"),N("HYPHENRANGE"),x[D.HYPHENRANGE]="^\\s*("+x[D.XRANGEPLAIN]+")\\s+-\\s+("+x[D.XRANGEPLAIN]+")\\s*$",N("HYPHENRANGELOOSE"),x[D.HYPHENRANGELOOSE]="^\\s*("+x[D.XRANGEPLAINLOOSE]+")\\s+-\\s+("+x[D.XRANGEPLAINLOOSE]+")\\s*$",N("STAR"),x[D.STAR]="(<|>)?=?\\s*\\*";for(var j=0;j256||!(ne.loose?A[D.LOOSE]:A[D.FULL]).test(V))return null;try{return new h(V,ne)}catch(ge){return null}}function h(V,ne){if(ne&&g(ne)==="object"||(ne={loose:!!ne,includePrerelease:!1}),V instanceof h){if(V.loose===ne.loose)return V;V=V.version}else if(typeof V!="string")throw new TypeError("Invalid Version: "+V);if(V.length>256)throw new TypeError("version is longer than 256 characters");if(!(this instanceof h))return new h(V,ne);t("SemVer",V,ne),this.options=ne,this.loose=!!ne.loose;var ge=V.trim().match(ne.loose?A[D.LOOSE]:A[D.FULL]);if(!ge)throw new TypeError("Invalid Version: "+V);if(this.raw=V,this.major=+ge[1],this.minor=+ge[2],this.patch=+ge[3],this.major>C||this.major<0)throw new TypeError("Invalid major version");if(this.minor>C||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>C||this.patch<0)throw new TypeError("Invalid patch version");ge[4]?this.prerelease=ge[4].split(".").map(function(Z){if(/^[0-9]+$/.test(Z)){var Ae=+Z;if(Ae>=0&&Ae=0;)typeof this.prerelease[ge]=="number"&&(this.prerelease[ge]++,ge=-2);ge===-1&&this.prerelease.push(0)}ne&&(this.prerelease[0]===ne?isNaN(this.prerelease[1])&&(this.prerelease=[ne,0]):this.prerelease=[ne,0]);break;default:throw new Error("invalid increment argument: "+V)}return this.format(),this.raw=this.version,this},u.inc=function(V,ne,ge,Z){typeof ge=="string"&&(Z=ge,ge=void 0);try{return new h(V,ge).inc(ne,Z).version}catch(Ae){return null}},u.diff=function(V,ne){if(me(V,ne))return null;var ge=$(V),Z=$(ne),Ae="";if(ge.prerelease.length||Z.prerelease.length){Ae="pre";var at="prerelease"}for(var it in ge)if((it==="major"||it==="minor"||it==="patch")&&ge[it]!==Z[it])return Ae+it;return at},u.compareIdentifiers=ce;var re=/^[0-9]+$/;function ce(V,ne){var ge=re.test(V),Z=re.test(ne);return ge&&Z&&(V=+V,ne=+ne),V===ne?0:ge&&!Z?-1:Z&&!ge?1:V0}function Se(V,ne,ge){return Q(V,ne,ge)<0}function me(V,ne,ge){return Q(V,ne,ge)===0}function De(V,ne,ge){return Q(V,ne,ge)!==0}function J(V,ne,ge){return Q(V,ne,ge)>=0}function Te(V,ne,ge){return Q(V,ne,ge)<=0}function Oe(V,ne,ge,Z){switch(ne){case"===":return g(V)==="object"&&(V=V.version),g(ge)==="object"&&(ge=ge.version),V===ge;case"!==":return g(V)==="object"&&(V=V.version),g(ge)==="object"&&(ge=ge.version),V!==ge;case"":case"=":case"==":return me(V,ge,Z);case"!=":return De(V,ge,Z);case">":return oe(V,ge,Z);case">=":return J(V,ge,Z);case"<":return Se(V,ge,Z);case"<=":return Te(V,ge,Z);default:throw new TypeError("Invalid operator: "+ne)}}function Le(V,ne){if(ne&&g(ne)==="object"||(ne={loose:!!ne,includePrerelease:!1}),V instanceof Le){if(V.loose===!!ne.loose)return V;V=V.value}if(!(this instanceof Le))return new Le(V,ne);t("comparator",V,ne),this.options=ne,this.loose=!!ne.loose,this.parse(V),this.semver===ot?this.value="":this.value=this.operator+this.semver.version,t("comp",this)}u.rcompareIdentifiers=function(V,ne){return ce(ne,V)},u.major=function(V,ne){return new h(V,ne).major},u.minor=function(V,ne){return new h(V,ne).minor},u.patch=function(V,ne){return new h(V,ne).patch},u.compare=Q,u.compareLoose=function(V,ne){return Q(V,ne,!0)},u.compareBuild=function(V,ne,ge){var Z=new h(V,ge),Ae=new h(ne,ge);return Z.compare(Ae)||Z.compareBuild(Ae)},u.rcompare=function(V,ne,ge){return Q(ne,V,ge)},u.sort=function(V,ne){return V.sort(function(ge,Z){return u.compareBuild(ge,Z,ne)})},u.rsort=function(V,ne){return V.sort(function(ge,Z){return u.compareBuild(Z,ge,ne)})},u.gt=oe,u.lt=Se,u.eq=me,u.neq=De,u.gte=J,u.lte=Te,u.cmp=Oe,u.Comparator=Le;var ot={};function ct(V,ne){if(ne&&g(ne)==="object"||(ne={loose:!!ne,includePrerelease:!1}),V instanceof ct)return V.loose===!!ne.loose&&V.includePrerelease===!!ne.includePrerelease?V:new ct(V.raw,ne);if(V instanceof Le)return new ct(V.value,ne);if(!(this instanceof ct))return new ct(V,ne);if(this.options=ne,this.loose=!!ne.loose,this.includePrerelease=!!ne.includePrerelease,this.raw=V,this.set=V.split(/\s*\|\|\s*/).map(function(ge){return this.parseRange(ge.trim())},this).filter(function(ge){return ge.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+V);this.format()}function Ue(V,ne){for(var ge=!0,Z=V.slice(),Ae=Z.pop();ge&&Z.length;)ge=Z.every(function(at){return Ae.intersects(at,ne)}),Ae=Z.pop();return ge}function be(V){return!V||V.toLowerCase()==="x"||V==="*"}function At(V,ne,ge,Z,Ae,at,it,Ft,jt,hn,Un,Jt,Yt){return((ne=be(ge)?"":be(Z)?">="+ge+".0.0":be(Ae)?">="+ge+"."+Z+".0":">="+ne)+" "+(Ft=be(jt)?"":be(hn)?"<"+(+jt+1)+".0.0":be(Un)?"<"+jt+"."+(+hn+1)+".0":Jt?"<="+jt+"."+hn+"."+Un+"-"+Jt:"<="+Ft)).trim()}function Ot(V,ne,ge){for(var Z=0;Z0){var Ae=V[Z].semver;if(Ae.major===ne.major&&Ae.minor===ne.minor&&Ae.patch===ne.patch)return!0}return!1}return!0}function Nt(V,ne,ge){try{ne=new ct(ne,ge)}catch(Z){return!1}return ne.test(V)}function Je(V,ne,ge,Z){var Ae,at,it,Ft,jt;switch(V=new h(V,Z),ne=new ct(ne,Z),ge){case">":Ae=oe,at=Te,it=Se,Ft=">",jt=">=";break;case"<":Ae=Se,at=J,it=oe,Ft="<",jt="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Nt(V,ne,Z))return!1;for(var hn=0;hn=0.0.0")),Jt=Jt||cr,Yt=Yt||cr,Ae(cr.semver,Jt.semver,Z)?Jt=cr:it(cr.semver,Yt.semver,Z)&&(Yt=cr)}),Jt.operator===Ft||Jt.operator===jt||(!Yt.operator||Yt.operator===Ft)&&at(V,Yt.semver)||Yt.operator===jt&&it(V,Yt.semver))return!1}return!0}Le.prototype.parse=function(V){var ne=this.options.loose?A[D.COMPARATORLOOSE]:A[D.COMPARATOR],ge=V.match(ne);if(!ge)throw new TypeError("Invalid comparator: "+V);this.operator=ge[1]!==void 0?ge[1]:"",this.operator==="="&&(this.operator=""),ge[2]?this.semver=new h(ge[2],this.options.loose):this.semver=ot},Le.prototype.toString=function(){return this.value},Le.prototype.test=function(V){if(t("Comparator.test",V,this.options.loose),this.semver===ot||V===ot)return!0;if(typeof V=="string")try{V=new h(V,this.options)}catch(ne){return!1}return Oe(V,this.operator,this.semver,this.options)},Le.prototype.intersects=function(V,ne){if(!(V instanceof Le))throw new TypeError("a Comparator is required");var ge;if(ne&&g(ne)==="object"||(ne={loose:!!ne,includePrerelease:!1}),this.operator==="")return this.value===""||(ge=new ct(V.value,ne),Nt(this.value,ge,ne));if(V.operator==="")return V.value===""||(ge=new ct(this.value,ne),Nt(V.semver,ge,ne));var Z=!(this.operator!==">="&&this.operator!==">"||V.operator!==">="&&V.operator!==">"),Ae=!(this.operator!=="<="&&this.operator!=="<"||V.operator!=="<="&&V.operator!=="<"),at=this.semver.version===V.semver.version,it=!(this.operator!==">="&&this.operator!=="<="||V.operator!==">="&&V.operator!=="<="),Ft=Oe(this.semver,"<",V.semver,ne)&&(this.operator===">="||this.operator===">")&&(V.operator==="<="||V.operator==="<"),jt=Oe(this.semver,">",V.semver,ne)&&(this.operator==="<="||this.operator==="<")&&(V.operator===">="||V.operator===">");return Z||Ae||at&&it||Ft||jt},u.Range=ct,ct.prototype.format=function(){return this.range=this.set.map(function(V){return V.join(" ").trim()}).join("||").trim(),this.range},ct.prototype.toString=function(){return this.range},ct.prototype.parseRange=function(V){var ne=this.options.loose;V=V.trim();var ge=ne?A[D.HYPHENRANGELOOSE]:A[D.HYPHENRANGE];V=V.replace(ge,At),t("hyphen replace",V),V=V.replace(A[D.COMPARATORTRIM],"$1$2$3"),t("comparator trim",V,A[D.COMPARATORTRIM]),V=(V=(V=V.replace(A[D.TILDETRIM],"$1~")).replace(A[D.CARETTRIM],"$1^")).split(/\s+/).join(" ");var Z=ne?A[D.COMPARATORLOOSE]:A[D.COMPARATOR],Ae=V.split(" ").map(function(at){return function(it,Ft){return t("comp",it,Ft),it=function(jt,hn){return jt.trim().split(/\s+/).map(function(Un){return function(Jt,Yt){t("caret",Jt,Yt);var cr=Yt.loose?A[D.CARETLOOSE]:A[D.CARET];return Jt.replace(cr,function(w,pt,Mn,Bn,Xn){var vr;return t("caret",Jt,w,pt,Mn,Bn,Xn),be(pt)?vr="":be(Mn)?vr=">="+pt+".0.0 <"+(+pt+1)+".0.0":be(Bn)?vr=pt==="0"?">="+pt+"."+Mn+".0 <"+pt+"."+(+Mn+1)+".0":">="+pt+"."+Mn+".0 <"+(+pt+1)+".0.0":Xn?(t("replaceCaret pr",Xn),vr=pt==="0"?Mn==="0"?">="+pt+"."+Mn+"."+Bn+"-"+Xn+" <"+pt+"."+Mn+"."+(+Bn+1):">="+pt+"."+Mn+"."+Bn+"-"+Xn+" <"+pt+"."+(+Mn+1)+".0":">="+pt+"."+Mn+"."+Bn+"-"+Xn+" <"+(+pt+1)+".0.0"):(t("no pr"),vr=pt==="0"?Mn==="0"?">="+pt+"."+Mn+"."+Bn+" <"+pt+"."+Mn+"."+(+Bn+1):">="+pt+"."+Mn+"."+Bn+" <"+pt+"."+(+Mn+1)+".0":">="+pt+"."+Mn+"."+Bn+" <"+(+pt+1)+".0.0"),t("caret return",vr),vr})}(Un,hn)}).join(" ")}(it,Ft),t("caret",it),it=function(jt,hn){return jt.trim().split(/\s+/).map(function(Un){return function(Jt,Yt){var cr=Yt.loose?A[D.TILDELOOSE]:A[D.TILDE];return Jt.replace(cr,function(w,pt,Mn,Bn,Xn){var vr;return t("tilde",Jt,w,pt,Mn,Bn,Xn),be(pt)?vr="":be(Mn)?vr=">="+pt+".0.0 <"+(+pt+1)+".0.0":be(Bn)?vr=">="+pt+"."+Mn+".0 <"+pt+"."+(+Mn+1)+".0":Xn?(t("replaceTilde pr",Xn),vr=">="+pt+"."+Mn+"."+Bn+"-"+Xn+" <"+pt+"."+(+Mn+1)+".0"):vr=">="+pt+"."+Mn+"."+Bn+" <"+pt+"."+(+Mn+1)+".0",t("tilde return",vr),vr})}(Un,hn)}).join(" ")}(it,Ft),t("tildes",it),it=function(jt,hn){return t("replaceXRanges",jt,hn),jt.split(/\s+/).map(function(Un){return function(Jt,Yt){Jt=Jt.trim();var cr=Yt.loose?A[D.XRANGELOOSE]:A[D.XRANGE];return Jt.replace(cr,function(w,pt,Mn,Bn,Xn,vr){t("xRange",Jt,w,pt,Mn,Bn,Xn,vr);var gr=be(Mn),r0=gr||be(Bn),Ci=r0||be(Xn),yo=Ci;return pt==="="&&yo&&(pt=""),vr=Yt.includePrerelease?"-0":"",gr?w=pt===">"||pt==="<"?"<0.0.0-0":"*":pt&&yo?(r0&&(Bn=0),Xn=0,pt===">"?(pt=">=",r0?(Mn=+Mn+1,Bn=0,Xn=0):(Bn=+Bn+1,Xn=0)):pt==="<="&&(pt="<",r0?Mn=+Mn+1:Bn=+Bn+1),w=pt+Mn+"."+Bn+"."+Xn+vr):r0?w=">="+Mn+".0.0"+vr+" <"+(+Mn+1)+".0.0"+vr:Ci&&(w=">="+Mn+"."+Bn+".0"+vr+" <"+Mn+"."+(+Bn+1)+".0"+vr),t("xRange return",w),w})}(Un,hn)}).join(" ")}(it,Ft),t("xrange",it),it=function(jt,hn){return t("replaceStars",jt,hn),jt.trim().replace(A[D.STAR],"")}(it,Ft),t("stars",it),it}(at,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(Ae=Ae.filter(function(at){return!!at.match(Z)})),Ae=Ae.map(function(at){return new Le(at,this.options)},this)},ct.prototype.intersects=function(V,ne){if(!(V instanceof ct))throw new TypeError("a Range is required");return this.set.some(function(ge){return Ue(ge,ne)&&V.set.some(function(Z){return Ue(Z,ne)&&ge.every(function(Ae){return Z.every(function(at){return Ae.intersects(at,ne)})})})})},u.toComparators=function(V,ne){return new ct(V,ne).set.map(function(ge){return ge.map(function(Z){return Z.value}).join(" ").trim().split(" ")})},ct.prototype.test=function(V){if(!V)return!1;if(typeof V=="string")try{V=new h(V,this.options)}catch(ge){return!1}for(var ne=0;ne":at.prerelease.length===0?at.patch++:at.prerelease.push(0),at.raw=at.format();case"":case">=":ge&&!oe(ge,at)||(ge=at);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+Ae.operator)}});return ge&&V.test(ge)?ge:null},u.validRange=function(V,ne){try{return new ct(V,ne).range||"*"}catch(ge){return null}},u.ltr=function(V,ne,ge){return Je(V,ne,"<",ge)},u.gtr=function(V,ne,ge){return Je(V,ne,">",ge)},u.outside=Je,u.prerelease=function(V,ne){var ge=$(V,ne);return ge&&ge.prerelease.length?ge.prerelease:null},u.intersects=function(V,ne,ge){return V=new ct(V,ge),ne=new ct(ne,ge),V.intersects(ne)},u.coerce=function(V,ne){if(V instanceof h)return V;if(typeof V=="number"&&(V=String(V)),typeof V!="string")return null;var ge=null;if((ne=ne||{}).rtl){for(var Z;(Z=A[D.COERCERTL].exec(V))&&(!ge||ge.index+ge[0].length!==V.length);)ge&&Z.index+Z[0].length===ge.index+ge[0].length||(ge=Z),A[D.COERCERTL].lastIndex=Z.index+Z[1].length+Z[2].length;A[D.COERCERTL].lastIndex=-1}else ge=V.match(A[D.COERCE]);return ge===null?null:$(ge[2]+"."+(ge[3]||"0")+"."+(ge[4]||"0"),ne)}}).call(this,f(5))},function(i,u){function f(g){return(f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(g)}var c;c=function(){return this}();try{c=c||new Function("return this")()}catch(g){(typeof window=="undefined"?"undefined":f(window))==="object"&&(c=window)}i.exports=c},function(i,u){var f,c,g=i.exports={};function t(){throw new Error("setTimeout has not been defined")}function C(){throw new Error("clearTimeout has not been defined")}function A(ce){if(f===setTimeout)return setTimeout(ce,0);if((f===t||!f)&&setTimeout)return f=setTimeout,setTimeout(ce,0);try{return f(ce,0)}catch(Q){try{return f.call(null,ce,0)}catch(oe){return f.call(this,ce,0)}}}(function(){try{f=typeof setTimeout=="function"?setTimeout:t}catch(ce){f=t}try{c=typeof clearTimeout=="function"?clearTimeout:C}catch(ce){c=C}})();var x,D=[],L=!1,N=-1;function j(){L&&x&&(L=!1,x.length?D=x.concat(D):N=-1,D.length&&$())}function $(){if(!L){var ce=A(j);L=!0;for(var Q=D.length;Q;){for(x=D,D=[];++N1)for(var oe=1;oethis[C])return De(this,this[h].get(Ue)),!1;var Je=this[h].get(Ue).value;return this[N]&&(this[j]||this[N](Ue,Je.value)),Je.now=Ot,Je.maxAge=At,Je.value=be,this[A]+=Nt-Je.length,Je.length=Nt,this.get(Ue),me(this),!0}var V=new J(Ue,be,Nt,Ot,At);return V.length>this[C]?(this[N]&&this[N](Ue,be),!1):(this[A]+=V.length,this[$].unshift(V),this[h].set(Ue,this[$].head),me(this),!0)}},{key:"has",value:function(Ue){if(!this[h].has(Ue))return!1;var be=this[h].get(Ue).value;return!Se(this,be)}},{key:"get",value:function(Ue){return oe(this,Ue,!0)}},{key:"peek",value:function(Ue){return oe(this,Ue,!1)}},{key:"pop",value:function(){var Ue=this[$].tail;return Ue?(De(this,Ue),Ue.value):null}},{key:"del",value:function(Ue){De(this,this[h].get(Ue))}},{key:"load",value:function(Ue){this.reset();for(var be=Date.now(),At=Ue.length-1;At>=0;At--){var Ot=Ue[At],Nt=Ot.e||0;if(Nt===0)this.set(Ot.k,Ot.v);else{var Je=Nt-be;Je>0&&this.set(Ot.k,Ot.v,Je)}}}},{key:"prune",value:function(){var Ue=this;this[h].forEach(function(be,At){return oe(Ue,At,!1)})}},{key:"max",set:function(Ue){if(typeof Ue!="number"||Ue<0)throw new TypeError("max must be a non-negative number");this[C]=Ue||1/0,me(this)},get:function(){return this[C]}},{key:"allowStale",set:function(Ue){this[D]=!!Ue},get:function(){return this[D]}},{key:"maxAge",set:function(Ue){if(typeof Ue!="number")throw new TypeError("maxAge must be a non-negative number");this[L]=Ue,me(this)},get:function(){return this[L]}},{key:"lengthCalculator",set:function(Ue){var be=this;typeof Ue!="function"&&(Ue=ce),Ue!==this[x]&&(this[x]=Ue,this[A]=0,this[$].forEach(function(At){At.length=be[x](At.value,At.key),be[A]+=At.length})),me(this)},get:function(){return this[x]}},{key:"length",get:function(){return this[A]}},{key:"itemCount",get:function(){return this[$].length}}])&&g(Le.prototype,ot),ct&&g(Le,ct),Oe}(),oe=function(Oe,Le,ot){var ct=Oe[h].get(Le);if(ct){var Ue=ct.value;if(Se(Oe,Ue)){if(De(Oe,ct),!Oe[D])return}else ot&&(Oe[re]&&(ct.value.now=Date.now()),Oe[$].unshiftNode(ct));return Ue.value}},Se=function(Oe,Le){if(!Le||!Le.maxAge&&!Oe[L])return!1;var ot=Date.now()-Le.now;return Le.maxAge?ot>Le.maxAge:Oe[L]&&ot>Oe[L]},me=function(Oe){if(Oe[A]>Oe[C])for(var Le=Oe[$].tail;Oe[A]>Oe[C]&&Le!==null;){var ot=Le.prev;De(Oe,Le),Le=ot}},De=function(Oe,Le){if(Le){var ot=Le.value;Oe[N]&&Oe[N](ot.key,ot.value),Oe[A]-=ot.length,Oe[h].delete(ot.key),Oe[$].removeNode(Le)}},J=function Oe(Le,ot,ct,Ue,be){c(this,Oe),this.key=Le,this.value=ot,this.length=ct,this.now=Ue,this.maxAge=be||0},Te=function(Oe,Le,ot,ct){var Ue=ot.value;Se(Oe,Ue)&&(De(Oe,ot),Oe[D]||(Ue=void 0)),Ue&&Le.call(ct,Ue.value,Ue.key,Oe)};i.exports=Q},function(i,u,f){(function(c){function g(t){return(g=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(C){return typeof C}:function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C})(t)}i.exports=function(){if(typeof document=="undefined"||!document.addEventListener)return null;var t,C,A,x={};return x.copy=function(){var D=!1,L=null,N=!1;function j(){D=!1,L=null,N&&window.getSelection().removeAllRanges(),N=!1}return document.addEventListener("copy",function($){if(D){for(var h in L)$.clipboardData.setData(h,L[h]);$.preventDefault()}}),function($){return new Promise(function(h,re){D=!0,typeof $=="string"?L={"text/plain":$}:$ instanceof Node?L={"text/html":new XMLSerializer().serializeToString($)}:$ instanceof Object?L=$:re("Invalid data type. Must be string, DOM node, or an object mapping MIME types to strings."),function ce(Q){try{if(document.execCommand("copy"))j(),h();else{if(Q)throw j(),new Error("Unable to copy. Perhaps it's not available in your browser?");(function(){var oe=document.getSelection();if(!document.queryCommandEnabled("copy")&&oe.isCollapsed){var Se=document.createRange();Se.selectNodeContents(document.body),oe.removeAllRanges(),oe.addRange(Se),N=!0}})(),ce(!0)}}catch(oe){j(),re(oe)}}(!1)})}}(),x.paste=(A=!1,document.addEventListener("paste",function(D){if(A){A=!1,D.preventDefault();var L=t;t=null,L(D.clipboardData.getData(C))}}),function(D){return new Promise(function(L,N){A=!0,t=L,C=D||"text/plain";try{document.execCommand("paste")||(A=!1,N(new Error("Unable to paste. Pasting only works in Internet Explorer at the moment.")))}catch(j){A=!1,N(new Error(j))}})}),typeof ClipboardEvent=="undefined"&&window.clipboardData!==void 0&&window.clipboardData.setData!==void 0&&(function(D){function L(me,De){return function(){me.apply(De,arguments)}}function N(me){if(g(this)!="object")throw new TypeError("Promises must be constructed via new");if(typeof me!="function")throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],Q(me,L($,this),L(h,this))}function j(me){var De=this;return this._state===null?void this._deferreds.push(me):void oe(function(){var J=De._state?me.onFulfilled:me.onRejected;if(J!==null){var Te;try{Te=J(De._value)}catch(Oe){return void me.reject(Oe)}me.resolve(Te)}else(De._state?me.resolve:me.reject)(De._value)})}function $(me){try{if(me===this)throw new TypeError("A promise cannot be resolved with itself.");if(me&&(g(me)=="object"||typeof me=="function")){var De=me.then;if(typeof De=="function")return void Q(L(De,me),L($,this),L(h,this))}this._state=!0,this._value=me,re.call(this)}catch(J){h.call(this,J)}}function h(me){this._state=!1,this._value=me,re.call(this)}function re(){for(var me=0,De=this._deferreds.length;De>me;me++)j.call(this,this._deferreds[me]);this._deferreds=null}function ce(me,De,J,Te){this.onFulfilled=typeof me=="function"?me:null,this.onRejected=typeof De=="function"?De:null,this.resolve=J,this.reject=Te}function Q(me,De,J){var Te=!1;try{me(function(Oe){Te||(Te=!0,De(Oe))},function(Oe){Te||(Te=!0,J(Oe))})}catch(Oe){if(Te)return;Te=!0,J(Oe)}}var oe=N.immediateFn||typeof c=="function"&&c||function(me){setTimeout(me,1)},Se=Array.isArray||function(me){return Object.prototype.toString.call(me)==="[object Array]"};N.prototype.catch=function(me){return this.then(null,me)},N.prototype.then=function(me,De){var J=this;return new N(function(Te,Oe){j.call(J,new ce(me,De,Te,Oe))})},N.all=function(){var me=Array.prototype.slice.call(arguments.length===1&&Se(arguments[0])?arguments[0]:arguments);return new N(function(De,J){function Te(ot,ct){try{if(ct&&(g(ct)=="object"||typeof ct=="function")){var Ue=ct.then;if(typeof Ue=="function")return void Ue.call(ct,function(be){Te(ot,be)},J)}me[ot]=ct,--Oe==0&&De(me)}catch(be){J(be)}}if(me.length===0)return De([]);for(var Oe=me.length,Le=0;LeTe;Te++)me[Te].then(De,J)})},i.exports?i.exports=N:D.Promise||(D.Promise=N)}(this),x.copy=function(D){return new Promise(function(L,N){if(typeof D!="string"&&!("text/plain"in D))throw new Error("You must provide a text/plain type.");var j=typeof D=="string"?D:D["text/plain"];window.clipboardData.setData("Text",j)?L():N(new Error("Copying was rejected."))})},x.paste=function(){return new Promise(function(D,L){var N=window.clipboardData.getData("Text");N?D(N):L(new Error("Pasting was rejected."))})}),x}()}).call(this,f(13).setImmediate)},function(i,u,f){"use strict";i.exports=f(15)},function(i,u,f){"use strict";f.r(u),u.default=`:root { + /** + * IMPORTANT: When new theme variables are added below\u2013 also add them to SettingsContext updateThemeVariables() + */ + + /* Light theme */ + --light-color-attribute-name: #ef6632; + --light-color-attribute-name-not-editable: #23272f; + --light-color-attribute-name-inverted: rgba(255, 255, 255, 0.7); + --light-color-attribute-value: #1a1aa6; + --light-color-attribute-value-inverted: #ffffff; + --light-color-attribute-editable-value: #1a1aa6; + --light-color-background: #ffffff; + --light-color-background-hover: rgba(0, 136, 250, 0.1); + --light-color-background-inactive: #e5e5e5; + --light-color-background-invalid: #fff0f0; + --light-color-background-selected: #0088fa; + --light-color-button-background: #ffffff; + --light-color-button-background-focus: #ededed; + --light-color-button: #5f6673; + --light-color-button-disabled: #cfd1d5; + --light-color-button-active: #0088fa; + --light-color-button-focus: #23272f; + --light-color-button-hover: #23272f; + --light-color-border: #eeeeee; + --light-color-commit-did-not-render-fill: #cfd1d5; + --light-color-commit-did-not-render-fill-text: #000000; + --light-color-commit-did-not-render-pattern: #cfd1d5; + --light-color-commit-did-not-render-pattern-text: #333333; + --light-color-commit-gradient-0: #37afa9; + --light-color-commit-gradient-1: #63b19e; + --light-color-commit-gradient-2: #80b393; + --light-color-commit-gradient-3: #97b488; + --light-color-commit-gradient-4: #abb67d; + --light-color-commit-gradient-5: #beb771; + --light-color-commit-gradient-6: #cfb965; + --light-color-commit-gradient-7: #dfba57; + --light-color-commit-gradient-8: #efbb49; + --light-color-commit-gradient-9: #febc38; + --light-color-commit-gradient-text: #000000; + --light-color-component-name: #6a51b2; + --light-color-component-name-inverted: #ffffff; + --light-color-component-badge-background: rgba(0, 0, 0, 0.1); + --light-color-component-badge-background-inverted: rgba(255, 255, 255, 0.25); + --light-color-component-badge-count: #777d88; + --light-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7); + --light-color-context-background: rgba(0,0,0,.9); + --light-color-context-background-hover: rgba(255, 255, 255, 0.1); + --light-color-context-background-selected: #178fb9; + --light-color-context-border: #3d424a; + --light-color-context-text: #ffffff; + --light-color-context-text-selected: #ffffff; + --light-color-dim: #777d88; + --light-color-dimmer: #cfd1d5; + --light-color-dimmest: #eff0f1; + --light-color-error-background: hsl(0, 100%, 97%); + --light-color-error-border: hsl(0, 100%, 92%); + --light-color-error-text: #ff0000; + --light-color-expand-collapse-toggle: #777d88; + --light-color-link: #0000ff; + --light-color-modal-background: rgba(255, 255, 255, 0.75); + --light-color-record-active: #fc3a4b; + --light-color-record-hover: #3578e5; + --light-color-record-inactive: #0088fa; + --light-color-scroll-thumb: #c2c2c2; + --light-color-scroll-track: #fafafa; + --light-color-search-match: yellow; + --light-color-search-match-current: #f7923b; + --light-color-selected-tree-highlight-active: rgba(0, 136, 250, 0.1); + --light-color-selected-tree-highlight-inactive: rgba(0, 0, 0, 0.05); + --light-color-shadow: rgba(0, 0, 0, 0.25); + --light-color-tab-selected-border: #0088fa; + --light-color-text: #000000; + --light-color-text-invalid: #ff0000; + --light-color-text-selected: #ffffff; + --light-color-toggle-background-invalid: #fc3a4b; + --light-color-toggle-background-on: #0088fa; + --light-color-toggle-background-off: #cfd1d5; + --light-color-toggle-text: #ffffff; + --light-color-tooltip-background: rgba(0, 0, 0, 0.9); + --light-color-tooltip-text: #ffffff; + + /* Dark theme */ + --dark-color-attribute-name: #9d87d2; + --dark-color-attribute-name-not-editable: #ededed; + --dark-color-attribute-name-inverted: #282828; + --dark-color-attribute-value: #cedae0; + --dark-color-attribute-value-inverted: #ffffff; + --dark-color-attribute-editable-value: yellow; + --dark-color-background: #282c34; + --dark-color-background-hover: rgba(255, 255, 255, 0.1); + --dark-color-background-inactive: #3d424a; + --dark-color-background-invalid: #5c0000; + --dark-color-background-selected: #178fb9; + --dark-color-button-background: #282c34; + --dark-color-button-background-focus: #3d424a; + --dark-color-button: #afb3b9; + --dark-color-button-active: #61dafb; + --dark-color-button-disabled: #4f5766; + --dark-color-button-focus: #a2e9fc; + --dark-color-button-hover: #ededed; + --dark-color-border: #3d424a; + --dark-color-commit-did-not-render-fill: #777d88; + --dark-color-commit-did-not-render-fill-text: #000000; + --dark-color-commit-did-not-render-pattern: #666c77; + --dark-color-commit-did-not-render-pattern-text: #ffffff; + --dark-color-commit-gradient-0: #37afa9; + --dark-color-commit-gradient-1: #63b19e; + --dark-color-commit-gradient-2: #80b393; + --dark-color-commit-gradient-3: #97b488; + --dark-color-commit-gradient-4: #abb67d; + --dark-color-commit-gradient-5: #beb771; + --dark-color-commit-gradient-6: #cfb965; + --dark-color-commit-gradient-7: #dfba57; + --dark-color-commit-gradient-8: #efbb49; + --dark-color-commit-gradient-9: #febc38; + --dark-color-commit-gradient-text: #000000; + --dark-color-component-name: #61dafb; + --dark-color-component-name-inverted: #282828; + --dark-color-component-badge-background: rgba(255, 255, 255, 0.25); + --dark-color-component-badge-background-inverted: rgba(0, 0, 0, 0.25); + --dark-color-component-badge-count: #8f949d; + --dark-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7); + --dark-color-context-background: rgba(255,255,255,.9); + --dark-color-context-background-hover: rgba(0, 136, 250, 0.1); + --dark-color-context-background-selected: #0088fa; + --dark-color-context-border: #eeeeee; + --dark-color-context-text: #000000; + --dark-color-context-text-selected: #ffffff; + --dark-color-dim: #8f949d; + --dark-color-dimmer: #777d88; + --dark-color-dimmest: #4f5766; + --dark-color-error-background: #200; + --dark-color-error-border: #900; + --dark-color-error-text: #f55; + --dark-color-expand-collapse-toggle: #8f949d; + --dark-color-link: #61dafb; + --dark-color-modal-background: rgba(0, 0, 0, 0.75); + --dark-color-record-active: #fc3a4b; + --dark-color-record-hover: #a2e9fc; + --dark-color-record-inactive: #61dafb; + --dark-color-scroll-thumb: #afb3b9; + --dark-color-scroll-track: #313640; + --dark-color-search-match: yellow; + --dark-color-search-match-current: #f7923b; + --dark-color-selected-tree-highlight-active: rgba(23, 143, 185, 0.15); + --dark-color-selected-tree-highlight-inactive: rgba(255, 255, 255, 0.05); + --dark-color-shadow: rgba(0, 0, 0, 0.5); + --dark-color-tab-selected-border: #178fb9; + --dark-color-text: #ffffff; + --dark-color-text-invalid: #ff8080; + --dark-color-text-selected: #ffffff; + --dark-color-toggle-background-invalid: #fc3a4b; + --dark-color-toggle-background-on: #178fb9; + --dark-color-toggle-background-off: #777d88; + --dark-color-toggle-text: #ffffff; + --dark-color-tooltip-background: rgba(255, 255, 255, 0.9); + --dark-color-tooltip-text: #000000; + + /* Font smoothing */ + --light-font-smoothing: auto; + --dark-font-smoothing: antialiased; + --font-smoothing: auto; + + /* Compact density */ + --compact-font-size-monospace-small: 9px; + --compact-font-size-monospace-normal: 11px; + --compact-font-size-monospace-large: 15px; + --compact-font-size-sans-small: 10px; + --compact-font-size-sans-normal: 12px; + --compact-font-size-sans-large: 14px; + --compact-line-height-data: 18px; + --compact-root-font-size: 16px; + + /* Comfortable density */ + --comfortable-font-size-monospace-small: 10px; + --comfortable-font-size-monospace-normal: 13px; + --comfortable-font-size-monospace-large: 17px; + --comfortable-font-size-sans-small: 12px; + --comfortable-font-size-sans-normal: 14px; + --comfortable-font-size-sans-large: 16px; + --comfortable-line-height-data: 22px; + --comfortable-root-font-size: 20px; + + /* GitHub.com system fonts */ + --font-family-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, + Courier, monospace; + --font-family-sans: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, + Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol; + + /* Constant values shared between JS and CSS */ + --interaction-commit-size: 10px; + --interaction-label-width: 200px; +} +`},function(i,u,f){"use strict";function c(x){var D=this;if(D instanceof c||(D=new c),D.tail=null,D.head=null,D.length=0,x&&typeof x.forEach=="function")x.forEach(function(j){D.push(j)});else if(arguments.length>0)for(var L=0,N=arguments.length;L1)L=D;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");N=this.head.next,L=this.head.value}for(var j=0;N!==null;j++)L=x(L,N.value,j),N=N.next;return L},c.prototype.reduceReverse=function(x,D){var L,N=this.tail;if(arguments.length>1)L=D;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");N=this.tail.prev,L=this.tail.value}for(var j=this.length-1;N!==null;j--)L=x(L,N.value,j),N=N.prev;return L},c.prototype.toArray=function(){for(var x=new Array(this.length),D=0,L=this.head;L!==null;D++)x[D]=L.value,L=L.next;return x},c.prototype.toArrayReverse=function(){for(var x=new Array(this.length),D=0,L=this.tail;L!==null;D++)x[D]=L.value,L=L.prev;return x},c.prototype.slice=function(x,D){(D=D||this.length)<0&&(D+=this.length),(x=x||0)<0&&(x+=this.length);var L=new c;if(Dthis.length&&(D=this.length);for(var N=0,j=this.head;j!==null&&Nthis.length&&(D=this.length);for(var N=this.length,j=this.tail;j!==null&&N>D;N--)j=j.prev;for(;j!==null&&N>x;N--,j=j.prev)L.push(j.value);return L},c.prototype.splice=function(x,D){x>this.length&&(x=this.length-1),x<0&&(x=this.length+x);for(var L=0,N=this.head;N!==null&&L=0&&(A._idleTimeoutId=setTimeout(function(){A._onTimeout&&A._onTimeout()},x))},f(14),u.setImmediate=typeof self!="undefined"&&self.setImmediate||c!==void 0&&c.setImmediate||this&&this.setImmediate,u.clearImmediate=typeof self!="undefined"&&self.clearImmediate||c!==void 0&&c.clearImmediate||this&&this.clearImmediate}).call(this,f(4))},function(i,u,f){(function(c,g){(function(t,C){"use strict";if(!t.setImmediate){var A,x,D,L,N,j=1,$={},h=!1,re=t.document,ce=Object.getPrototypeOf&&Object.getPrototypeOf(t);ce=ce&&ce.setTimeout?ce:t,{}.toString.call(t.process)==="[object process]"?A=function(Se){g.nextTick(function(){oe(Se)})}:function(){if(t.postMessage&&!t.importScripts){var Se=!0,me=t.onmessage;return t.onmessage=function(){Se=!1},t.postMessage("","*"),t.onmessage=me,Se}}()?(L="setImmediate$"+Math.random()+"$",N=function(Se){Se.source===t&&typeof Se.data=="string"&&Se.data.indexOf(L)===0&&oe(+Se.data.slice(L.length))},t.addEventListener?t.addEventListener("message",N,!1):t.attachEvent("onmessage",N),A=function(Se){t.postMessage(L+Se,"*")}):t.MessageChannel?((D=new MessageChannel).port1.onmessage=function(Se){oe(Se.data)},A=function(Se){D.port2.postMessage(Se)}):re&&"onreadystatechange"in re.createElement("script")?(x=re.documentElement,A=function(Se){var me=re.createElement("script");me.onreadystatechange=function(){oe(Se),me.onreadystatechange=null,x.removeChild(me),me=null},x.appendChild(me)}):A=function(Se){setTimeout(oe,0,Se)},ce.setImmediate=function(Se){typeof Se!="function"&&(Se=new Function(""+Se));for(var me=new Array(arguments.length-1),De=0;Dene;ne++)if((V=Q(Je,Ot,ne))!==-1){ce=ne,Ot=V;break e}Ot=-1}}e:{if(Je=Nt,(V=j().get(At.primitive))!==void 0){for(ne=0;neOt-Je?null:Nt.slice(Je,Ot-1))!==null){if(Ot=0,Le!==null){for(;OtOt;Le--)ot=Ue.pop()}for(Le=Nt.length-Ot-1;1<=Le;Le--)Ot=[],ot.push({id:null,isStateEditable:!1,name:Se(Nt[Le-1].functionName),value:void 0,subHooks:Ot}),Ue.push(ot),ot=Ot;Le=Nt}Ot=(Nt=At.primitive)==="Context"||Nt==="DebugValue"?null:ct++,ot.push({id:Ot,isStateEditable:Nt==="Reducer"||Nt==="State",name:Nt,value:At.value,subHooks:[]})}return function ge(Z,Ae){for(var at=[],it=0;it-1&&($=$.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var h=$.replace(/^\s+/,"").replace(/\(eval code/g,"("),re=h.match(/ (\((.+):(\d+):(\d+)\)$)/),ce=(h=re?h.replace(re[0],""):h).split(/\s+/).slice(1),Q=this.extractLocation(re?re[1]:ce.pop()),oe=ce.join(" ")||void 0,Se=["eval",""].indexOf(Q[0])>-1?void 0:Q[0];return new x({functionName:oe,fileName:Se,lineNumber:Q[1],columnNumber:Q[2],source:$})},this)},parseFFOrSafari:function(j){return j.stack.split(` +`).filter(function($){return!$.match(N)},this).map(function($){if($.indexOf(" > eval")>-1&&($=$.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),$.indexOf("@")===-1&&$.indexOf(":")===-1)return new x({functionName:$});var h=/((.*".+"[^@]*)?[^@]*)(?:@)/,re=$.match(h),ce=re&&re[1]?re[1]:void 0,Q=this.extractLocation($.replace(h,""));return new x({functionName:ce,fileName:Q[0],lineNumber:Q[1],columnNumber:Q[2],source:$})},this)},parseOpera:function(j){return!j.stacktrace||j.message.indexOf(` +`)>-1&&j.message.split(` +`).length>j.stacktrace.split(` +`).length?this.parseOpera9(j):j.stack?this.parseOpera11(j):this.parseOpera10(j)},parseOpera9:function(j){for(var $=/Line (\d+).*script (?:in )?(\S+)/i,h=j.message.split(` +`),re=[],ce=2,Q=h.length;ce/,"$2").replace(/\([^)]*\)/g,"")||void 0;Q.match(/\(([^)]*)\)/)&&(h=Q.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var Se=h===void 0||h==="[arguments not available]"?void 0:h.split(",");return new x({functionName:oe,args:Se,fileName:ce[0],lineNumber:ce[1],columnNumber:ce[2],source:$})},this)}}})=="function"?c.apply(u,g):c)===void 0||(i.exports=t)})()},function(i,u,f){var c,g,t;(function(C,A){"use strict";g=[],(t=typeof(c=function(){function x(oe){return oe.charAt(0).toUpperCase()+oe.substring(1)}function D(oe){return function(){return this[oe]}}var L=["isConstructor","isEval","isNative","isToplevel"],N=["columnNumber","lineNumber"],j=["fileName","functionName","source"],$=L.concat(N,j,["args"]);function h(oe){if(oe)for(var Se=0;Se<$.length;Se++)oe[$[Se]]!==void 0&&this["set"+x($[Se])](oe[$[Se]])}h.prototype={getArgs:function(){return this.args},setArgs:function(oe){if(Object.prototype.toString.call(oe)!=="[object Array]")throw new TypeError("Args must be an Array");this.args=oe},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(oe){if(oe instanceof h)this.evalOrigin=oe;else{if(!(oe instanceof Object))throw new TypeError("Eval Origin must be an Object or StackFrame");this.evalOrigin=new h(oe)}},toString:function(){var oe=this.getFileName()||"",Se=this.getLineNumber()||"",me=this.getColumnNumber()||"",De=this.getFunctionName()||"";return this.getIsEval()?oe?"[eval] ("+oe+":"+Se+":"+me+")":"[eval]:"+Se+":"+me:De?De+" ("+oe+":"+Se+":"+me+")":oe+":"+Se+":"+me}},h.fromString=function(oe){var Se=oe.indexOf("("),me=oe.lastIndexOf(")"),De=oe.substring(0,Se),J=oe.substring(Se+1,me).split(","),Te=oe.substring(me+1);if(Te.indexOf("@")===0)var Oe=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(Te,""),Le=Oe[1],ot=Oe[2],ct=Oe[3];return new h({functionName:De,args:J||void 0,fileName:Le,lineNumber:ot||void 0,columnNumber:ct||void 0})};for(var re=0;re1?de-1:0),ve=1;ve=0&&de.splice(W,1)}}}])&&c(R.prototype,U),H&&c(R,H),F}(),t=f(2),C=f.n(t);try{var A=f(9).default,x=function(F){var R=new RegExp("".concat(F,": ([0-9]+)")),U=A.match(R);return parseInt(U[1],10)};x("comfortable-line-height-data"),x("compact-line-height-data")}catch(F){}function D(F){try{return sessionStorage.getItem(F)}catch(R){return null}}function L(F){try{sessionStorage.removeItem(F)}catch(R){}}function N(F,R){try{return sessionStorage.setItem(F,R)}catch(U){}}var j=function(F,R){return F===R},$=f(1),h=f.n($);function re(F){return F.ownerDocument?F.ownerDocument.defaultView:null}function ce(F){var R=re(F);return R?R.frameElement:null}function Q(F){var R=me(F);return oe([F.getBoundingClientRect(),{top:R.borderTop,left:R.borderLeft,bottom:R.borderBottom,right:R.borderRight,width:0,height:0}])}function oe(F){return F.reduce(function(R,U){return R==null?U:{top:R.top+U.top,left:R.left+U.left,width:R.width,height:R.height,bottom:R.bottom+U.bottom,right:R.right+U.right}})}function Se(F,R){var U=ce(F);if(U&&U!==R){for(var H=[F.getBoundingClientRect()],fe=U,ue=!1;fe;){var de=Q(fe);if(H.push(de),fe=ce(fe),ue)break;fe&&re(fe)===R&&(ue=!0)}return oe(H)}return F.getBoundingClientRect()}function me(F){var R=window.getComputedStyle(F);return{borderLeft:parseInt(R.borderLeftWidth,10),borderRight:parseInt(R.borderRightWidth,10),borderTop:parseInt(R.borderTopWidth,10),borderBottom:parseInt(R.borderBottomWidth,10),marginLeft:parseInt(R.marginLeft,10),marginRight:parseInt(R.marginRight,10),marginTop:parseInt(R.marginTop,10),marginBottom:parseInt(R.marginBottom,10),paddingLeft:parseInt(R.paddingLeft,10),paddingRight:parseInt(R.paddingRight,10),paddingTop:parseInt(R.paddingTop,10),paddingBottom:parseInt(R.paddingBottom,10)}}function De(F,R){var U;if(typeof Symbol=="undefined"||F[Symbol.iterator]==null){if(Array.isArray(F)||(U=function(ve,Fe){if(!!ve){if(typeof ve=="string")return J(ve,Fe);var Ge=Object.prototype.toString.call(ve).slice(8,-1);if(Ge==="Object"&&ve.constructor&&(Ge=ve.constructor.name),Ge==="Map"||Ge==="Set")return Array.from(ve);if(Ge==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Ge))return J(ve,Fe)}}(F))||R&&F&&typeof F.length=="number"){U&&(F=U);var H=0,fe=function(){};return{s:fe,n:function(){return H>=F.length?{done:!0}:{done:!1,value:F[H++]}},e:function(ve){throw ve},f:fe}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var ue,de=!0,W=!1;return{s:function(){U=F[Symbol.iterator]()},n:function(){var ve=U.next();return de=ve.done,ve},e:function(ve){W=!0,ue=ve},f:function(){try{de||U.return==null||U.return()}finally{if(W)throw ue}}}}function J(F,R){(R==null||R>F.length)&&(R=F.length);for(var U=0,H=new Array(R);Ude.left+de.width&&(K=de.left+de.width-Ge-5),{style:{top:ve+="px",left:K+="px"}}}(R,U,{width:H.width,height:H.height});h()(this.tip.style,fe.style)}}]),F}(),Ue=function(){function F(){Te(this,F);var R=window.__REACT_DEVTOOLS_TARGET_WINDOW__||window;this.window=R;var U=window.__REACT_DEVTOOLS_TARGET_WINDOW__||window;this.tipBoundsWindow=U;var H=R.document;this.container=H.createElement("div"),this.container.style.zIndex="10000000",this.tip=new ct(H,this.container),this.rects=[],H.body.appendChild(this.container)}return Le(F,[{key:"remove",value:function(){this.tip.remove(),this.rects.forEach(function(R){R.remove()}),this.rects.length=0,this.container.parentNode&&this.container.parentNode.removeChild(this.container)}},{key:"inspect",value:function(R,U){for(var H=this,fe=R.filter(function(Xe){return Xe.nodeType===Node.ELEMENT_NODE});this.rects.length>fe.length;)this.rects.pop().remove();if(fe.length!==0){for(;this.rects.length1&&arguments[1]!==void 0?arguments[1]:j,je=void 0,Xe=[],rt=void 0,st=!1,xt=function(lt,Rt){return xe(lt,Xe[Rt])},wt=function(){for(var lt=arguments.length,Rt=Array(lt),yn=0;yn5&&arguments[5]!==void 0?arguments[5]:0,W=cl(F);switch(W){case"html_element":return R.push(H),{inspectable:!1,preview_short:Mr(F,!1),preview_long:Mr(F,!0),name:F.tagName,type:W};case"function":return R.push(H),{inspectable:!1,preview_short:Mr(F,!1),preview_long:Mr(F,!0),name:typeof F.name!="function"&&F.name?F.name:"function",type:W};case"string":return F.length<=500?F:F.slice(0,500)+"...";case"bigint":case"symbol":return R.push(H),{inspectable:!1,preview_short:Mr(F,!1),preview_long:Mr(F,!0),name:F.toString(),type:W};case"react_element":return R.push(H),{inspectable:!1,preview_short:Mr(F,!1),preview_long:Mr(F,!0),name:al(F)||"Unknown",type:W};case"array_buffer":case"data_view":return R.push(H),{inspectable:!1,preview_short:Mr(F,!1),preview_long:Mr(F,!0),name:W==="data_view"?"DataView":"ArrayBuffer",size:F.byteLength,type:W};case"array":return ue=fe(H),de>=2&&!ue?yo(W,!0,F,R,H):F.map(function(Ge,K){return Ds(Ge,R,U,H.concat([K]),fe,ue?1:de+1)});case"html_all_collection":case"typed_array":case"iterator":if(ue=fe(H),de>=2&&!ue)return yo(W,!0,F,R,H);var ve={unserializable:!0,type:W,readonly:!0,size:W==="typed_array"?F.length:void 0,preview_short:Mr(F,!1),preview_long:Mr(F,!0),name:F.constructor&&F.constructor.name!=="Object"?F.constructor.name:""};return r0(F[Symbol.iterator])&&Array.from(F).forEach(function(Ge,K){return ve[K]=Ds(Ge,R,U,H.concat([K]),fe,ue?1:de+1)}),U.push(H),ve;case"opaque_iterator":return R.push(H),{inspectable:!1,preview_short:Mr(F,!1),preview_long:Mr(F,!0),name:F[Symbol.toStringTag],type:W};case"date":case"regexp":return R.push(H),{inspectable:!1,preview_short:Mr(F,!1),preview_long:Mr(F,!0),name:F.toString(),type:W};case"object":if(ue=fe(H),de>=2&&!ue)return yo(W,!0,F,R,H);var Fe={};return Es(F).forEach(function(Ge){var K=Ge.toString();Fe[K]=Ds(F[Ge],R,U,H.concat([K]),fe,ue?1:de+1)}),Fe;case"infinity":case"nan":case"undefined":return R.push(H),{type:W};default:return F}}function Mu(F){return(Mu=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(R){return typeof R}:function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R})(F)}function Gf(F){return function(R){if(Array.isArray(R))return iu(R)}(F)||function(R){if(typeof Symbol!="undefined"&&Symbol.iterator in Object(R))return Array.from(R)}(F)||function(R,U){if(!!R){if(typeof R=="string")return iu(R,U);var H=Object.prototype.toString.call(R).slice(8,-1);if(H==="Object"&&R.constructor&&(H=R.constructor.name),H==="Map"||H==="Set")return Array.from(R);if(H==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(H))return iu(R,U)}}(F)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function iu(F,R){(R==null||R>F.length)&&(R=F.length);for(var U=0,H=new Array(R);UR.toString()?1:R.toString()>F.toString()?-1:0}function Es(F){for(var R=[],U=F,H=function(){var fe=[].concat(Gf(Object.keys(U)),Gf(Object.getOwnPropertySymbols(U))),ue=Object.getOwnPropertyDescriptors(U);fe.forEach(function(de){ue[de].enumerable&&R.push(de)}),U=Object.getPrototypeOf(U)};U!=null;)H();return R}function Uo(F){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Anonymous",U=ou.get(F);if(U!=null)return U;var H=R;return typeof F.displayName=="string"?H=F.displayName:typeof F.name=="string"&&F.name!==""&&(H=F.name),ou.set(F,H),H}var sl=0;function Ss(){return++sl}function Cs(F){var R=ol.get(F);if(R!==void 0)return R;for(var U=new Array(F.length),H=0;H1&&arguments[1]!==void 0?arguments[1]:50;return F.length>R?F.substr(0,R)+"\u2026":F}function Mr(F,R){if(F!=null&&hasOwnProperty.call(F,Ci.type))return R?F[Ci.preview_long]:F[Ci.preview_short];switch(cl(F)){case"html_element":return"<".concat(Ui(F.tagName.toLowerCase())," />");case"function":return Ui("\u0192 ".concat(typeof F.name=="function"?"":F.name,"() {}"));case"string":return'"'.concat(F,'"');case"bigint":return Ui(F.toString()+"n");case"regexp":case"symbol":return Ui(F.toString());case"react_element":return"<".concat(Ui(al(F)||"Unknown")," />");case"array_buffer":return"ArrayBuffer(".concat(F.byteLength,")");case"data_view":return"DataView(".concat(F.buffer.byteLength,")");case"array":if(R){for(var U="",H=0;H0&&(U+=", "),!((U+=Mr(F[H],!1)).length>50));H++);return"[".concat(Ui(U),"]")}var fe=hasOwnProperty.call(F,Ci.size)?F[Ci.size]:F.length;return"Array(".concat(fe,")");case"typed_array":var ue="".concat(F.constructor.name,"(").concat(F.length,")");if(R){for(var de="",W=0;W0&&(de+=", "),!((de+=F[W]).length>50));W++);return"".concat(ue," [").concat(Ui(de),"]")}return ue;case"iterator":var ve=F.constructor.name;if(R){for(var Fe=Array.from(F),Ge="",K=0;K0&&(Ge+=", "),Array.isArray(xe)){var je=Mr(xe[0],!0),Xe=Mr(xe[1],!1);Ge+="".concat(je," => ").concat(Xe)}else Ge+=Mr(xe,!1);if(Ge.length>50)break}return"".concat(ve,"(").concat(F.size,") {").concat(Ui(Ge),"}")}return"".concat(ve,"(").concat(F.size,")");case"opaque_iterator":return F[Symbol.toStringTag];case"date":return F.toString();case"object":if(R){for(var rt=Es(F).sort(ul),st="",xt=0;xt0&&(st+=", "),(st+="".concat(wt.toString(),": ").concat(Mr(F[wt],!1))).length>50)break}return"{".concat(Ui(st),"}")}return"{\u2026}";case"boolean":case"number":case"infinity":case"nan":case"null":case"undefined":return F;default:try{return Ui(""+F)}catch(lt){return"unserializable"}}}var Ac=f(7);function of(F){return(of=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(R){return typeof R}:function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R})(F)}function Ts(F,R){var U=Object.keys(F);if(Object.getOwnPropertySymbols){var H=Object.getOwnPropertySymbols(F);R&&(H=H.filter(function(fe){return Object.getOwnPropertyDescriptor(F,fe).enumerable})),U.push.apply(U,H)}return U}function xs(F){for(var R=1;R2&&arguments[2]!==void 0?arguments[2]:[];if(F!==null){var H=[],fe=[],ue=Ds(F,H,fe,U,R);return{data:ue,cleaned:H,unserializable:fe}}return null}function qo(F){var R,U,H=(R=F,U=new Set,JSON.stringify(R,function(de,W){if(of(W)==="object"&&W!==null){if(U.has(W))return;U.add(W)}return typeof W=="bigint"?W.toString()+"n":W})),fe=H===void 0?"undefined":H,ue=window.__REACT_DEVTOOLS_GLOBAL_HOOK__.clipboardCopyText;typeof ue=="function"?ue(fe).catch(function(de){}):Object(Ac.copy)(fe)}function kr(F,R){var U=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,H=R[U],fe=Array.isArray(F)?F.slice():xs({},F);return U+1===R.length?Array.isArray(fe)?fe.splice(H,1):delete fe[H]:fe[H]=kr(F[H],R,U+1),fe}function Fr(F,R,U){var H=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,fe=R[H],ue=Array.isArray(F)?F.slice():xs({},F);if(H+1===R.length){var de=U[H];ue[de]=ue[fe],Array.isArray(ue)?ue.splice(fe,1):delete ue[fe]}else ue[fe]=Fr(F[fe],R,U,H+1);return ue}function si(F,R,U){var H=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(H>=R.length)return U;var fe=R[H],ue=Array.isArray(F)?F.slice():xs({},F);return ue[fe]=si(F[fe],R,U,H+1),ue}var H0=f(8);function b0(F,R){var U=Object.keys(F);if(Object.getOwnPropertySymbols){var H=Object.getOwnPropertySymbols(F);R&&(H=H.filter(function(fe){return Object.getOwnPropertyDescriptor(F,fe).enumerable})),U.push.apply(U,H)}return U}function Bt(F){for(var R=1;R=F.length?{done:!0}:{done:!1,value:F[H++]}},e:function(ve){throw ve},f:fe}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var ue,de=!0,W=!1;return{s:function(){U=F[Symbol.iterator]()},n:function(){var ve=U.next();return de=ve.done,ve},e:function(ve){W=!0,ue=ve},f:function(){try{de||U.return==null||U.return()}finally{if(W)throw ue}}}}function As(F,R){if(F){if(typeof F=="string")return uu(F,R);var U=Object.prototype.toString.call(F).slice(8,-1);return U==="Object"&&F.constructor&&(U=F.constructor.name),U==="Map"||U==="Set"?Array.from(F):U==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(U)?uu(F,R):void 0}}function uu(F,R){(R==null||R>F.length)&&(R=F.length);for(var U=0,H=new Array(R);U0){var et=ue(X);if(et!=null){var Dt,bt=ks(du);try{for(bt.s();!(Dt=bt.n()).done;)if(Dt.value.test(et))return!0}catch(fn){bt.e(fn)}finally{bt.f()}}}if(Y!=null&&Yu.size>0){var Zt,qt=Y.fileName,Ut=ks(Yu);try{for(Ut.s();!(Zt=Ut.n()).done;)if(Zt.value.test(qt))return!0}catch(fn){Ut.e(fn)}finally{Ut.f()}}return!1}function Gr(X){var Y=X.type;switch(X.tag){case Xe:case ar:return 1;case je:case rn:return 5;case wt:return 6;case lt:return 11;case yn:return 7;case Rt:case sn:case xt:return 9;case Hn:case Cr:return 8;case He:return 12;case Qe:return 13;default:switch(de(Y)){case 60111:case"Symbol(react.concurrent_mode)":case"Symbol(react.async_mode)":return 9;case 60109:case"Symbol(react.provider)":return 2;case 60110:case"Symbol(react.context)":return 2;case 60108:case"Symbol(react.strict_mode)":return 9;case 60114:case"Symbol(react.profiler)":return 10;default:return 9}}}function ir(X){if(Co.has(X))return X;var Y=X.alternate;return Y!=null&&Co.has(Y)?Y:(Co.add(X),X)}window.__REACT_DEVTOOLS_COMPONENT_FILTERS__!=null?qs(window.__REACT_DEVTOOLS_COMPONENT_FILTERS__):qs([{type:1,value:7,isEnabled:!0}]);var L0=new Map,Y0=new Map,Co=new Set,$u=new Map,Vo=new Map,Rr=-1;function Jn(X){if(!L0.has(X)){var Y=Ss();L0.set(X,Y),Y0.set(Y,X)}return L0.get(X)}function ai(X){switch(Gr(X)){case 1:if(N0!==null){var Y=Jn(ir(X)),ye=Vr(X);ye!==null&&N0.set(Y,ye)}}}var o0={};function Vr(X){switch(Gr(X)){case 1:var Y=X.stateNode,ye=o0,he=o0;return Y!=null&&(Y.constructor&&Y.constructor.contextType!=null?he=Y.context:(ye=Y.context)&&Object.keys(ye).length===0&&(ye=o0)),[ye,he];default:return null}}function ff(X){switch(Gr(X)){case 1:if(N0!==null){var Y=Jn(ir(X)),ye=N0.has(Y)?N0.get(Y):null,he=Vr(X);if(ye==null||he==null)return null;var We=Ru(ye,2),et=We[0],Dt=We[1],bt=Ru(he,2),Zt=bt[0],qt=bt[1];if(Zt!==o0)return $0(et,Zt);if(qt!==o0)return Dt!==qt}}return null}function cf(X,Y){if(X==null||Y==null)return!1;if(Y.hasOwnProperty("baseState")&&Y.hasOwnProperty("memoizedState")&&Y.hasOwnProperty("next")&&Y.hasOwnProperty("queue"))for(;Y!==null;){if(Y.memoizedState!==X.memoizedState)return!0;Y=Y.next,X=X.next}return!1}function $0(X,Y){if(X==null||Y==null||Y.hasOwnProperty("baseState")&&Y.hasOwnProperty("memoizedState")&&Y.hasOwnProperty("next")&&Y.hasOwnProperty("queue"))return null;var ye,he=[],We=ks(new Set([].concat(c0(Object.keys(X)),c0(Object.keys(Y)))));try{for(We.s();!(ye=We.n()).done;){var et=ye.value;X[et]!==Y[et]&&he.push(et)}}catch(Dt){We.e(Dt)}finally{We.f()}return he}function K0(X,Y){switch(Y.tag){case Xe:case je:case rt:case Hn:case Cr:return(zo(Y)&K)===K;default:return X.memoizedProps!==Y.memoizedProps||X.memoizedState!==Y.memoizedState||X.ref!==Y.ref}}var ae=[],Be=[],Ie=[],ht=[],mt=new Map,wn=0,Gn=null;function $t(X){ae.push(X)}function X0(X){if(ae.length!==0||Be.length!==0||Ie.length!==0||Gn!==null||u0){var Y=Be.length+Ie.length+(Gn===null?0:1),ye=new Array(3+wn+(Y>0?2+Y:0)+ae.length),he=0;if(ye[he++]=R,ye[he++]=Rr,ye[he++]=wn,mt.forEach(function(bt,Zt){ye[he++]=Zt.length;for(var qt=Cs(Zt),Ut=0;Ut0){ye[he++]=2,ye[he++]=Y;for(var We=Be.length-1;We>=0;We--)ye[he++]=Be[We];for(var et=0;et0?X.forEach(function(Y){F.emit("operations",Y)}):(Fn!==null&&(zr=!0),F.getFiberRoots(R).forEach(function(Y){T0(Rr=Jn(ir(Y.current)),Y.current),u0&&Y.memoizedInteractions!=null&&(uo={changeDescriptions:To?new Map:null,durations:[],commitTime:Os()-v0,interactions:Array.from(Y.memoizedInteractions).map(function(ye){return Bt(Bt({},ye),{},{timestamp:ye.timestamp-v0})}),maxActualDuration:0,priorityLevel:null}),$r(Y.current,null,!1,!1),X0(),Rr=-1}))},getBestMatchForTrackedPath:function(){if(Fn===null||pi===null)return null;for(var X=pi;X!==null&&F0(X);)X=X.return;return X===null?null:{id:Jn(ir(X)),isFullMatch:Br===Fn.length-1}},getDisplayNameForFiberID:function(X){var Y=Y0.get(X);return Y!=null?ue(Y):null},getFiberIDForNative:function(X){var Y=arguments.length>1&&arguments[1]!==void 0&&arguments[1],ye=U.findFiberByHostInstance(X);if(ye!=null){if(Y)for(;ye!==null&&F0(ye);)ye=ye.return;return Jn(ir(ye))}return null},getInstanceAndStyle:function(X){var Y=null,ye=null,he=J0(X);return he!==null&&(Y=he.stateNode,he.memoizedProps!==null&&(ye=he.memoizedProps.style)),{instance:Y,style:ye}},getOwnersList:function(X){var Y=J0(X);if(Y==null)return null;var ye=Y._debugOwner,he=[{displayName:ue(Y)||"Anonymous",id:X,type:Gr(Y)}];if(ye)for(var We=ye;We!==null;)he.unshift({displayName:ue(We)||"Anonymous",id:Jn(ir(We)),type:Gr(We)}),We=We._debugOwner||null;return he},getPathForElement:function(X){var Y=Y0.get(X);if(Y==null)return null;for(var ye=[];Y!==null;)ye.push(Ai(Y)),Y=Y.return;return ye.reverse(),ye},getProfilingData:function(){var X=[];if(pu===null)throw Error("getProfilingData() called before any profiling data was recorded");return pu.forEach(function(Y,ye){var he=[],We=[],et=new Map,Dt=new Map,bt=so!==null&&so.get(ye)||"Unknown";C0!=null&&C0.forEach(function(Zt,qt){di!=null&&di.get(qt)===ye&&We.push([qt,Zt])}),Y.forEach(function(Zt,qt){var Ut=Zt.changeDescriptions,fn=Zt.durations,_t=Zt.interactions,_r=Zt.maxActualDuration,Wr=Zt.priorityLevel,Ar=Zt.commitTime,z=[];_t.forEach(function(s0){et.has(s0.id)||et.set(s0.id,s0),z.push(s0.id);var t0=Dt.get(s0.id);t0!=null?t0.push(qt):Dt.set(s0.id,[qt])});for(var dr=[],Or=[],Qn=0;Qn1?kn.set(Ut,fn-1):kn.delete(Ut),wr.delete(Zt)}(Rr),Yr(ye,!1))}else T0(Rr,ye),$r(ye,null,!1,!1);if(u0&&We){var bt=pu.get(Rr);bt!=null?bt.push(uo):pu.set(Rr,[uo])}X0(),oo&&F.emit("traceUpdates",Hi),Rr=-1},handleCommitFiberUnmount:function(X){Yr(X,!1)},inspectElement:function(X,Y){if(Tr(X)){if(Y!=null){R0(Y);var ye=null;return Y[0]==="hooks"&&(ye="hooks"),{id:X,type:"hydrated-path",path:Y,value:qi(Ti(S0,Y),Nr(null,ye),Y)}}return{id:X,type:"no-change"}}if(El=!1,S0!==null&&S0.id===X||(Q0={}),(S0=af(X))===null)return{id:X,type:"not-found"};Y!=null&&R0(Y),function(We){var et=We.hooks,Dt=We.id,bt=We.props,Zt=Y0.get(Dt);if(Zt!=null){var qt=Zt.elementType,Ut=Zt.stateNode,fn=Zt.tag,_t=Zt.type;switch(fn){case Xe:case ar:case rn:H.$r=Ut;break;case je:H.$r={hooks:et,props:bt,type:_t};break;case wt:H.$r={props:bt,type:_t.render};break;case Hn:case Cr:H.$r={props:bt,type:qt!=null&&qt.type!=null?qt.type:_t};break;default:H.$r=null}}else console.warn('Could not find Fiber with id "'.concat(Dt,'"'))}(S0);var he=Bt({},S0);return he.context=qi(he.context,Nr("context",null)),he.hooks=qi(he.hooks,Nr("hooks","hooks")),he.props=qi(he.props,Nr("props",null)),he.state=qi(he.state,Nr("state",null)),{id:X,type:"full-data",value:he}},logElementToConsole:function(X){var Y=Tr(X)?S0:af(X);if(Y!==null){var ye=typeof console.groupCollapsed=="function";ye&&console.groupCollapsed("[Click to expand] %c<".concat(Y.displayName||"Component"," />"),"color: var(--dom-tag-name-color); font-weight: normal;"),Y.props!==null&&console.log("Props:",Y.props),Y.state!==null&&console.log("State:",Y.state),Y.hooks!==null&&console.log("Hooks:",Y.hooks);var he=zs(X);he!==null&&console.log("Nodes:",he),Y.source!==null&&console.log("Location:",Y.source),(window.chrome||/firefox/i.test(navigator.userAgent))&&console.log("Right-click any value to save it as a global variable for further inspection."),ye&&console.groupEnd()}else console.warn('Could not find Fiber with id "'.concat(X,'"'))},prepareViewAttributeSource:function(X,Y){Tr(X)&&(window.$attribute=Ti(S0,Y))},prepareViewElementSource:function(X){var Y=Y0.get(X);if(Y!=null){var ye=Y.elementType,he=Y.tag,We=Y.type;switch(he){case Xe:case ar:case rn:case je:H.$type=We;break;case wt:H.$type=We.render;break;case Hn:case Cr:H.$type=ye!=null&&ye.type!=null?ye.type:We;break;default:H.$type=null}}else console.warn('Could not find Fiber with id "'.concat(X,'"'))},overrideSuspense:function(X,Y){if(typeof Eo!="function"||typeof So!="function")throw new Error("Expected overrideSuspense() to not get called for earlier React versions.");Y?(B0.add(X),B0.size===1&&Eo(hu)):(B0.delete(X),B0.size===0&&Eo(Cl));var ye=Y0.get(X);ye!=null&&So(ye)},overrideValueAtPath:function(X,Y,ye,he,We){var et=J0(Y);if(et!==null){var Dt=et.stateNode;switch(X){case"context":switch(he=he.slice(1),et.tag){case Xe:he.length===0?Dt.context=We:fl(Dt.context,he,We),Dt.forceUpdate()}break;case"hooks":typeof p0=="function"&&p0(et,ye,he,We);break;case"props":switch(et.tag){case Xe:et.pendingProps=si(Dt.props,he,We),Dt.forceUpdate();break;default:typeof xi=="function"&&xi(et,he,We)}break;case"state":switch(et.tag){case Xe:fl(Dt.state,he,We),Dt.forceUpdate()}}}},renamePath:function(X,Y,ye,he,We){var et=J0(Y);if(et!==null){var Dt=et.stateNode;switch(X){case"context":switch(he=he.slice(1),We=We.slice(1),et.tag){case Xe:he.length===0||ll(Dt.context,he,We),Dt.forceUpdate()}break;case"hooks":typeof ci=="function"&&ci(et,ye,he,We);break;case"props":Dt===null?typeof qr=="function"&&qr(et,he,We):(et.pendingProps=Fr(Dt.props,he,We),Dt.forceUpdate());break;case"state":ll(Dt.state,he,We),Dt.forceUpdate()}}},renderer:U,setTraceUpdatesEnabled:function(X){oo=X},setTrackedPath:lo,startProfiling:Sl,stopProfiling:function(){u0=!1,To=!1},storeAsGlobal:function(X,Y,ye){if(Tr(X)){var he=Ti(S0,Y),We="$reactTemp".concat(ye);window[We]=he,console.log(We),console.log(he)}},updateComponentFilters:function(X){if(u0)throw Error("Cannot modify filter preferences while profiling");F.getFiberRoots(R).forEach(function(Y){Rr=Jn(ir(Y.current)),m0(Y.current),Yr(Y.current,!1),Rr=-1}),qs(X),kn.clear(),F.getFiberRoots(R).forEach(function(Y){T0(Rr=Jn(ir(Y.current)),Y.current),$r(Y.current,null,!1,!1),X0(Y),Rr=-1})}}}var _n;function Nu(F){return(Nu=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(R){return typeof R}:function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R})(F)}function Wo(F,R,U){if(_n===void 0)try{throw Error()}catch(fe){var H=fe.stack.trim().match(/\n( *(at )?)/);_n=H&&H[1]||""}return` +`+_n+F}var su=!1;function Ps(F,R,U){if(!F||su)return"";var H,fe=Error.prepareStackTrace;Error.prepareStackTrace=void 0,su=!0;var ue=U.current;U.current=null;try{if(R){var de=function(){throw Error()};if(Object.defineProperty(de.prototype,"props",{set:function(){throw Error()}}),(typeof Reflect=="undefined"?"undefined":Nu(Reflect))==="object"&&Reflect.construct){try{Reflect.construct(de,[])}catch(xe){H=xe}Reflect.construct(F,[],de)}else{try{de.call()}catch(xe){H=xe}F.call(de.prototype)}}else{try{throw Error()}catch(xe){H=xe}F()}}catch(xe){if(xe&&H&&typeof xe.stack=="string"){for(var W=xe.stack.split(` +`),ve=H.stack.split(` +`),Fe=W.length-1,Ge=ve.length-1;Fe>=1&&Ge>=0&&W[Fe]!==ve[Ge];)Ge--;for(;Fe>=1&&Ge>=0;Fe--,Ge--)if(W[Fe]!==ve[Ge]){if(Fe!==1||Ge!==1)do if(Fe--,--Ge<0||W[Fe]!==ve[Ge])return` +`+W[Fe].replace(" at new "," at ");while(Fe>=1&&Ge>=0);break}}}finally{su=!1,Error.prepareStackTrace=fe,U.current=ue}var K=F?F.displayName||F.name:"";return K?Wo(K):""}function pl(F,R,U,H){return Ps(F,!1,H)}function Vf(F,R,U){var H=F.HostComponent,fe=F.LazyComponent,ue=F.SuspenseComponent,de=F.SuspenseListComponent,W=F.FunctionComponent,ve=F.IndeterminateComponent,Fe=F.SimpleMemoComponent,Ge=F.ForwardRef,K=F.Block,xe=F.ClassComponent;switch(R.tag){case H:return Wo(R.type);case fe:return Wo("Lazy");case ue:return Wo("Suspense");case de:return Wo("SuspenseList");case W:case ve:case Fe:return pl(R.type,0,0,U);case Ge:return pl(R.type.render,0,0,U);case K:return pl(R.type._render,0,0,U);case xe:return function(je,Xe,rt,st){return Ps(je,!0,st)}(R.type,0,0,U);default:return""}}function hl(F,R,U){try{var H="",fe=R;do H+=Vf(F,fe,U),fe=fe.return;while(fe);return H}catch(ue){return` +Error generating stack: `+ue.message+` +`+ue.stack}}function Bu(F,R){var U;if(typeof Symbol=="undefined"||F[Symbol.iterator]==null){if(Array.isArray(F)||(U=function(ve,Fe){if(!!ve){if(typeof ve=="string")return ju(ve,Fe);var Ge=Object.prototype.toString.call(ve).slice(8,-1);if(Ge==="Object"&&ve.constructor&&(Ge=ve.constructor.name),Ge==="Map"||Ge==="Set")return Array.from(ve);if(Ge==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Ge))return ju(ve,Fe)}}(F))||R&&F&&typeof F.length=="number"){U&&(F=U);var H=0,fe=function(){};return{s:fe,n:function(){return H>=F.length?{done:!0}:{done:!1,value:F[H++]}},e:function(ve){throw ve},f:fe}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var ue,de=!0,W=!1;return{s:function(){U=F[Symbol.iterator]()},n:function(){var ve=U.next();return de=ve.done,ve},e:function(ve){W=!0,ue=ve},f:function(){try{de||U.return==null||U.return()}finally{if(W)throw ue}}}}function ju(F,R){(R==null||R>F.length)&&(R=F.length);for(var U=0,H=new Array(R);U0?Fe[Fe.length-1]:null,xe=K!==null&&(ro.test(K)||Ms.test(K));if(!xe){var je,Xe=Bu(ml.values());try{for(Xe.s();!(je=Xe.n()).done;){var rt=je.value,st=rt.currentDispatcherRef,xt=rt.getCurrentFiber,wt=rt.workTagMap,lt=xt();if(lt!=null){var Rt=hl(wt,lt,st);Rt!==""&&Fe.push(Rt);break}}}catch(yn){Xe.e(yn)}finally{Xe.f()}}}catch(yn){}ue.apply(void 0,Fe)};de.__REACT_DEVTOOLS_ORIGINAL_METHOD__=ue,Uu[fe]=de}catch(W){}})}}function O0(F){return(O0=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(R){return typeof R}:function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R})(F)}function vl(F,R){for(var U=0;UF.length)&&(R=F.length);for(var U=0,H=new Array(R);U1?W-1:0),Fe=1;Fe0?K[K.length-1]:0),K.push(St),W.set(Ne,Fe(ft._topLevelWrapper));try{var Qt=He.apply(this,Qe);return K.pop(),Qt}catch(bn){throw K=[],bn}finally{if(K.length===0){var Cn=W.get(Ne);if(Cn===void 0)throw new Error("Expected to find root ID.");yn(Cn)}}},performUpdateIfNecessary:function(He,Qe){var Ne=Qe[0];if(P0(Ne)===9)return He.apply(this,Qe);var ft=Fe(Ne);K.push(ft);var St=ln(Ne);try{var Qt=He.apply(this,Qe),Cn=ln(Ne);return Ge(St,Cn)||Xe(Ne,ft,Cn),K.pop(),Qt}catch(p0){throw K=[],p0}finally{if(K.length===0){var bn=W.get(Ne);if(bn===void 0)throw new Error("Expected to find root ID.");yn(bn)}}},receiveComponent:function(He,Qe){var Ne=Qe[0];if(P0(Ne)===9)return He.apply(this,Qe);var ft=Fe(Ne);K.push(ft);var St=ln(Ne);try{var Qt=He.apply(this,Qe),Cn=ln(Ne);return Ge(St,Cn)||Xe(Ne,ft,Cn),K.pop(),Qt}catch(p0){throw K=[],p0}finally{if(K.length===0){var bn=W.get(Ne);if(bn===void 0)throw new Error("Expected to find root ID.");yn(bn)}}},unmountComponent:function(He,Qe){var Ne=Qe[0];if(P0(Ne)===9)return He.apply(this,Qe);var ft=Fe(Ne);K.push(ft);try{var St=He.apply(this,Qe);return K.pop(),function(Cn,bn){wt.push(bn),ue.delete(bn)}(0,ft),St}catch(Cn){throw K=[],Cn}finally{if(K.length===0){var Qt=W.get(Ne);if(Qt===void 0)throw new Error("Expected to find root ID.");yn(Qt)}}}}));var st=[],xt=new Map,wt=[],lt=0,Rt=null;function yn(He){if(st.length!==0||wt.length!==0||Rt!==null){var Qe=wt.length+(Rt===null?0:1),Ne=new Array(3+lt+(Qe>0?2+Qe:0)+st.length),ft=0;if(Ne[ft++]=R,Ne[ft++]=He,Ne[ft++]=lt,xt.forEach(function(Cn,bn){Ne[ft++]=bn.length;for(var p0=Cs(bn),h0=0;h00){Ne[ft++]=2,Ne[ft++]=Qe;for(var St=0;St"),"color: var(--dom-tag-name-color); font-weight: normal;"),Qe.props!==null&&console.log("Props:",Qe.props),Qe.state!==null&&console.log("State:",Qe.state),Qe.context!==null&&console.log("Context:",Qe.context);var ft=fe(He);ft!==null&&console.log("Node:",ft),(window.chrome||/firefox/i.test(navigator.userAgent))&&console.log("Right-click any value to save it as a global variable for further inspection."),Ne&&console.groupEnd()}else console.warn('Could not find element with id "'.concat(He,'"'))},overrideSuspense:function(){throw new Error("overrideSuspense not supported by this renderer")},overrideValueAtPath:function(He,Qe,Ne,ft,St){var Qt=ue.get(Qe);if(Qt!=null){var Cn=Qt._instance;if(Cn!=null)switch(He){case"context":fl(Cn.context,ft,St),a0(Cn);break;case"hooks":throw new Error("Hooks not supported by this renderer");case"props":var bn=Qt._currentElement;Qt._currentElement=V0(V0({},bn),{},{props:si(bn.props,ft,St)}),a0(Cn);break;case"state":fl(Cn.state,ft,St),a0(Cn)}}},renamePath:function(He,Qe,Ne,ft,St){var Qt=ue.get(Qe);if(Qt!=null){var Cn=Qt._instance;if(Cn!=null)switch(He){case"context":ll(Cn.context,ft,St),a0(Cn);break;case"hooks":throw new Error("Hooks not supported by this renderer");case"props":var bn=Qt._currentElement;Qt._currentElement=V0(V0({},bn),{},{props:Fr(bn.props,ft,St)}),a0(Cn);break;case"state":ll(Cn.state,ft,St),a0(Cn)}}},prepareViewAttributeSource:function(He,Qe){var Ne=Cr(He);Ne!==null&&(window.$attribute=Ti(Ne,Qe))},prepareViewElementSource:function(He){var Qe=ue.get(He);if(Qe!=null){var Ne=Qe._currentElement;Ne!=null?H.$type=Ne.type:console.warn('Could not find element with id "'.concat(He,'"'))}else console.warn('Could not find instance with id "'.concat(He,'"'))},renderer:U,setTraceUpdatesEnabled:function(He){},setTrackedPath:function(He){},startProfiling:function(){},stopProfiling:function(){},storeAsGlobal:function(He,Qe,Ne){var ft=Cr(He);if(ft!==null){var St=Ti(ft,Qe),Qt="$reactTemp".concat(Ne);window[Qt]=St,console.log(Qt),console.log(St)}},updateComponentFilters:function(He){}}}function nr(F,R){var U=!1,H={bottom:0,left:0,right:0,top:0},fe=R[F];if(fe!=null){for(var ue=0,de=Object.keys(H);ue0?"development":"production";var st=Function.prototype.toString;if(rt.Mount&&rt.Mount._renderNewRootComponent){var xt=st.call(rt.Mount._renderNewRootComponent);return xt.indexOf("function")!==0?"production":xt.indexOf("storedMeasure")!==-1?"development":xt.indexOf("should be a pure function")!==-1?xt.indexOf("NODE_ENV")!==-1||xt.indexOf("development")!==-1||xt.indexOf("true")!==-1?"development":xt.indexOf("nextElement")!==-1||xt.indexOf("nextComponent")!==-1?"unminified":"development":xt.indexOf("nextElement")!==-1||xt.indexOf("nextComponent")!==-1?"unminified":"outdated"}}catch(wt){}return"production"}(ve);try{var K=window.__REACT_DEVTOOLS_APPEND_COMPONENT_STACK__!==!1,xe=window.__REACT_DEVTOOLS_BREAK_ON_CONSOLE_ERRORS__===!0;(K||xe)&&(zi(ve),Ho({appendComponentStack:K,breakOnConsoleErrors:xe}))}catch(rt){}var je=F.__REACT_DEVTOOLS_ATTACH__;if(typeof je=="function"){var Xe=je(W,Fe,ve,F);W.rendererInterfaces.set(Fe,Xe)}return W.emit("renderer",{id:Fe,renderer:ve,reactBuildType:Ge}),Fe},on:function(ve,Fe){ue[ve]||(ue[ve]=[]),ue[ve].push(Fe)},off:function(ve,Fe){if(ue[ve]){var Ge=ue[ve].indexOf(Fe);Ge!==-1&&ue[ve].splice(Ge,1),ue[ve].length||delete ue[ve]}},sub:function(ve,Fe){return W.on(ve,Fe),function(){return W.off(ve,Fe)}},supportsFiber:!0,checkDCE:function(ve){try{Function.prototype.toString.call(ve).indexOf("^_^")>-1&&(U=!0,setTimeout(function(){throw new Error("React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build")}))}catch(Fe){}},onCommitFiberUnmount:function(ve,Fe){var Ge=fe.get(ve);Ge!=null&&Ge.handleCommitFiberUnmount(Fe)},onCommitFiberRoot:function(ve,Fe,Ge){var K=W.getFiberRoots(ve),xe=Fe.current,je=K.has(Fe),Xe=xe.memoizedState==null||xe.memoizedState.element==null;je||Xe?je&&Xe&&K.delete(Fe):K.add(Fe);var rt=fe.get(ve);rt!=null&&rt.handleCommitFiberRoot(Fe,Ge)}};Object.defineProperty(F,"__REACT_DEVTOOLS_GLOBAL_HOOK__",{configurable:!1,enumerable:!1,get:function(){return W}})})(window);var M0=window.__REACT_DEVTOOLS_GLOBAL_HOOK__,au=[{type:1,value:7,isEnabled:!0}];function Lr(F){if(M0!=null){var R=F||{},U=R.host,H=U===void 0?"localhost":U,fe=R.nativeStyleEditorValidAttributes,ue=R.useHttps,de=ue!==void 0&&ue,W=R.port,ve=W===void 0?8097:W,Fe=R.websocket,Ge=R.resolveRNStyle,K=Ge===void 0?null:Ge,xe=R.isAppActive,je=de?"wss":"ws",Xe=null;if((xe===void 0?function(){return!0}:xe)()){var rt=null,st=[],xt=je+"://"+H+":"+ve,wt=Fe||new window.WebSocket(xt);wt.onclose=function(){rt!==null&&rt.emit("shutdown"),lt()},wt.onerror=function(){lt()},wt.onmessage=function(Rt){var yn;try{if(typeof Rt.data!="string")throw Error();yn=JSON.parse(Rt.data)}catch(sn){return void console.error("[React DevTools] Failed to parse JSON: "+Rt.data)}st.forEach(function(sn){try{sn(yn)}catch(ar){throw console.log("[React DevTools] Error calling listener",yn),console.log("error:",ar),ar}})},wt.onopen=function(){(rt=new Do({listen:function(rn){return st.push(rn),function(){var Hn=st.indexOf(rn);Hn>=0&&st.splice(Hn,1)}},send:function(rn,Hn,d0){wt.readyState===wt.OPEN?wt.send(JSON.stringify({event:rn,payload:Hn})):(rt!==null&&rt.shutdown(),lt())}})).addListener("inspectElement",function(rn){var Hn=rn.id,d0=rn.rendererID,Cr=Rt.rendererInterfaces[d0];if(Cr!=null){var He=Cr.findNativeNodesForFiberID(Hn);He!=null&&He[0]!=null&&Rt.emit("showNativeHighlight",He[0])}}),rt.addListener("updateComponentFilters",function(rn){au=rn}),window.__REACT_DEVTOOLS_COMPONENT_FILTERS__==null&&rt.send("overrideComponentFilters",au);var Rt=new I0(rt);if(Rt.addListener("shutdown",function(){M0.emit("shutdown")}),function(rn,Hn,d0){if(rn==null)return function(){};var Cr=[rn.sub("renderer-attached",function(Ne){var ft=Ne.id,St=(Ne.renderer,Ne.rendererInterface);Hn.setRendererInterface(ft,St),St.flushInitialOperations()}),rn.sub("unsupported-renderer-version",function(Ne){Hn.onUnsupportedRenderer(Ne)}),rn.sub("operations",Hn.onHookOperations),rn.sub("traceUpdates",Hn.onTraceUpdates)],He=function(Ne,ft){var St=rn.rendererInterfaces.get(Ne);St==null&&(typeof ft.findFiberByHostInstance=="function"?St=uf(rn,Ne,ft,d0):ft.ComponentTree&&(St=lf(rn,Ne,ft,d0)),St!=null&&rn.rendererInterfaces.set(Ne,St)),St!=null?rn.emit("renderer-attached",{id:Ne,renderer:ft,rendererInterface:St}):rn.emit("unsupported-renderer-version",Ne)};rn.renderers.forEach(function(Ne,ft){He(ft,Ne)}),Cr.push(rn.sub("renderer",function(Ne){var ft=Ne.id,St=Ne.renderer;He(ft,St)})),rn.emit("react-devtools",Hn),rn.reactDevtoolsAgent=Hn;var Qe=function(){Cr.forEach(function(Ne){return Ne()}),rn.rendererInterfaces.forEach(function(Ne){Ne.cleanup()}),rn.reactDevtoolsAgent=null};Hn.addListener("shutdown",Qe),Cr.push(function(){Hn.removeListener("shutdown",Qe)})}(M0,Rt,window),K!=null||M0.resolveRNStyle!=null)Gu(rt,Rt,K||M0.resolveRNStyle,fe||M0.nativeStyleEditorValidAttributes||null);else{var yn,sn,ar=function(){rt!==null&&Gu(rt,Rt,yn,sn)};M0.hasOwnProperty("resolveRNStyle")||Object.defineProperty(M0,"resolveRNStyle",{enumerable:!1,get:function(){return yn},set:function(rn){yn=rn,ar()}}),M0.hasOwnProperty("nativeStyleEditorValidAttributes")||Object.defineProperty(M0,"nativeStyleEditorValidAttributes",{enumerable:!1,get:function(){return sn},set:function(rn){sn=rn,ar()}})}}}else lt()}function lt(){Xe===null&&(Xe=setTimeout(function(){return Lr(F)},2e3))}}}])})});var rS=Me(nS=>{"use strict";Object.defineProperty(nS,"__esModule",{value:!0});eS();var _j=tS();_j.connectToDevTools()});var lS=Me(x2=>{"use strict";var iS=x2&&x2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(x2,"__esModule",{value:!0});var oS=Ay(),yj=iS(lE()),uS=iS(hc()),no=Xy();process.env.DEV==="true"&&rS();var sS=i=>{i==null||i.unsetMeasureFunc(),i==null||i.freeRecursive()};x2.default=yj.default({schedulePassiveEffects:oS.unstable_scheduleCallback,cancelPassiveEffects:oS.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},resetAfterCommit:i=>{if(i.isStaticDirty){i.isStaticDirty=!1,typeof i.onImmediateRender=="function"&&i.onImmediateRender();return}typeof i.onRender=="function"&&i.onRender()},getChildHostContext:(i,u)=>{let f=i.isInsideText,c=u==="ink-text"||u==="ink-virtual-text";return f===c?i:{isInsideText:c}},shouldSetTextContent:()=>!1,createInstance:(i,u,f,c)=>{if(c.isInsideText&&i==="ink-box")throw new Error(" can\u2019t be nested inside component");let g=i==="ink-text"&&c.isInsideText?"ink-virtual-text":i,t=no.createNode(g);for(let[C,A]of Object.entries(u))C!=="children"&&(C==="style"?no.setStyle(t,A):C==="internal_transform"?t.internal_transform=A:C==="internal_static"?t.internal_static=!0:no.setAttribute(t,C,A));return t},createTextInstance:(i,u,f)=>{if(!f.isInsideText)throw new Error(`Text string "${i}" must be rendered inside component`);return no.createTextNode(i)},resetTextContent:()=>{},hideTextInstance:i=>{no.setTextNodeValue(i,"")},unhideTextInstance:(i,u)=>{no.setTextNodeValue(i,u)},getPublicInstance:i=>i,hideInstance:i=>{var u;(u=i.yogaNode)===null||u===void 0||u.setDisplay(uS.default.DISPLAY_NONE)},unhideInstance:i=>{var u;(u=i.yogaNode)===null||u===void 0||u.setDisplay(uS.default.DISPLAY_FLEX)},appendInitialChild:no.appendChildNode,appendChild:no.appendChildNode,insertBefore:no.insertBeforeNode,finalizeInitialChildren:(i,u,f,c)=>(i.internal_static&&(c.isStaticDirty=!0,c.staticNode=i),!1),supportsMutation:!0,appendChildToContainer:no.appendChildNode,insertInContainerBefore:no.insertBeforeNode,removeChildFromContainer:(i,u)=>{no.removeChildNode(i,u),sS(u.yogaNode)},prepareUpdate:(i,u,f,c,g)=>{i.internal_static&&(g.isStaticDirty=!0);let t={},C=Object.keys(c);for(let A of C)if(c[A]!==f[A]){if(A==="style"&&typeof c.style=="object"&&typeof f.style=="object"){let D=c.style,L=f.style,N=Object.keys(D);for(let j of N){if(j==="borderStyle"||j==="borderColor"){if(typeof t.style!="object"){let $={};t.style=$}t.style.borderStyle=D.borderStyle,t.style.borderColor=D.borderColor}if(D[j]!==L[j]){if(typeof t.style!="object"){let $={};t.style=$}t.style[j]=D[j]}}continue}t[A]=c[A]}return t},commitUpdate:(i,u)=>{for(let[f,c]of Object.entries(u))f!=="children"&&(f==="style"?no.setStyle(i,c):f==="internal_transform"?i.internal_transform=c:f==="internal_static"?i.internal_static=!0:no.setAttribute(i,f,c))},commitTextUpdate:(i,u,f)=>{no.setTextNodeValue(i,f)},removeChild:(i,u)=>{no.removeChildNode(i,u),sS(u.yogaNode)}})});var cS=Me((Jb,fS)=>{"use strict";fS.exports=(i,u=1,f)=>{if(f=dt({indent:" ",includeEmptyLines:!1},f),typeof i!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof i}\``);if(typeof u!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof u}\``);if(typeof f.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof f.indent}\``);if(u===0)return i;let c=f.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return i.replace(c,f.indent.repeat(u))}});var aS=Me(k2=>{"use strict";var wj=k2&&k2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(k2,"__esModule",{value:!0});var Vh=wj(hc());k2.default=i=>i.getComputedWidth()-i.getComputedPadding(Vh.default.EDGE_LEFT)-i.getComputedPadding(Vh.default.EDGE_RIGHT)-i.getComputedBorder(Vh.default.EDGE_LEFT)-i.getComputedBorder(Vh.default.EDGE_RIGHT)});var pS=Me((Zb,dS)=>{dS.exports={single:{topLeft:"\u250C",topRight:"\u2510",bottomRight:"\u2518",bottomLeft:"\u2514",vertical:"\u2502",horizontal:"\u2500"},double:{topLeft:"\u2554",topRight:"\u2557",bottomRight:"\u255D",bottomLeft:"\u255A",vertical:"\u2551",horizontal:"\u2550"},round:{topLeft:"\u256D",topRight:"\u256E",bottomRight:"\u256F",bottomLeft:"\u2570",vertical:"\u2502",horizontal:"\u2500"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomRight:"\u251B",bottomLeft:"\u2517",vertical:"\u2503",horizontal:"\u2501"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomRight:"\u255C",bottomLeft:"\u2559",vertical:"\u2551",horizontal:"\u2500"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomRight:"\u255B",bottomLeft:"\u2558",vertical:"\u2502",horizontal:"\u2550"},classic:{topLeft:"+",topRight:"+",bottomRight:"+",bottomLeft:"+",vertical:"|",horizontal:"-"}}});var mS=Me((eG,m3)=>{"use strict";var hS=pS();m3.exports=hS;m3.exports.default=hS});var gS=Me((tG,vS)=>{"use strict";vS.exports=(i,u=process.argv)=>{let f=i.startsWith("-")?"":i.length===1?"-":"--",c=u.indexOf(f+i),g=u.indexOf("--");return c!==-1&&(g===-1||c{"use strict";var Dj=require("os"),yS=require("tty"),Pu=gS(),{env:oi}=process,qf;Pu("no-color")||Pu("no-colors")||Pu("color=false")||Pu("color=never")?qf=0:(Pu("color")||Pu("colors")||Pu("color=true")||Pu("color=always"))&&(qf=1);"FORCE_COLOR"in oi&&(oi.FORCE_COLOR==="true"?qf=1:oi.FORCE_COLOR==="false"?qf=0:qf=oi.FORCE_COLOR.length===0?1:Math.min(parseInt(oi.FORCE_COLOR,10),3));function v3(i){return i===0?!1:{level:i,hasBasic:!0,has256:i>=2,has16m:i>=3}}function g3(i,u){if(qf===0)return 0;if(Pu("color=16m")||Pu("color=full")||Pu("color=truecolor"))return 3;if(Pu("color=256"))return 2;if(i&&!u&&qf===void 0)return 0;let f=qf||0;if(oi.TERM==="dumb")return f;if(process.platform==="win32"){let c=Dj.release().split(".");return Number(c[0])>=10&&Number(c[2])>=10586?Number(c[2])>=14931?3:2:1}if("CI"in oi)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(c=>c in oi)||oi.CI_NAME==="codeship"?1:f;if("TEAMCITY_VERSION"in oi)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(oi.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in oi)return 1;if(oi.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in oi){let c=parseInt((oi.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(oi.TERM_PROGRAM){case"iTerm.app":return c>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(oi.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(oi.TERM)||"COLORTERM"in oi?1:f}function Ej(i){let u=g3(i,i&&i.isTTY);return v3(u)}_S.exports={supportsColor:Ej,stdout:v3(g3(!0,yS.isatty(1))),stderr:v3(g3(!0,yS.isatty(2)))}});var ES=Me((rG,DS)=>{"use strict";var Sj=(i,u,f)=>{let c=i.indexOf(u);if(c===-1)return i;let g=u.length,t=0,C="";do C+=i.substr(t,c-t)+u+f,t=c+g,c=i.indexOf(u,t);while(c!==-1);return C+=i.substr(t),C},Cj=(i,u,f,c)=>{let g=0,t="";do{let C=i[c-1]==="\r";t+=i.substr(g,(C?c-1:c)-g)+u+(C?`\r +`:` +`)+f,g=c+1,c=i.indexOf(` +`,g)}while(c!==-1);return t+=i.substr(g),t};DS.exports={stringReplaceAll:Sj,stringEncaseCRLFWithFirstIndex:Cj}});var kS=Me((iG,SS)=>{"use strict";var Tj=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,CS=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,xj=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,kj=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,Aj=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function TS(i){let u=i[0]==="u",f=i[1]==="{";return u&&!f&&i.length===5||i[0]==="x"&&i.length===3?String.fromCharCode(parseInt(i.slice(1),16)):u&&f?String.fromCodePoint(parseInt(i.slice(2,-1),16)):Aj.get(i)||i}function Oj(i,u){let f=[],c=u.trim().split(/\s*,\s*/g),g;for(let t of c){let C=Number(t);if(!Number.isNaN(C))f.push(C);else if(g=t.match(xj))f.push(g[2].replace(kj,(A,x,D)=>x?TS(x):D));else throw new Error(`Invalid Chalk template style argument: ${t} (in style '${i}')`)}return f}function Ij(i){CS.lastIndex=0;let u=[],f;for(;(f=CS.exec(i))!==null;){let c=f[1];if(f[2]){let g=Oj(c,f[2]);u.push([c].concat(g))}else u.push([c])}return u}function xS(i,u){let f={};for(let g of u)for(let t of g.styles)f[t[0]]=g.inverse?null:t.slice(1);let c=i;for(let[g,t]of Object.entries(f))if(!!Array.isArray(t)){if(!(g in c))throw new Error(`Unknown Chalk style: ${g}`);c=t.length>0?c[g](...t):c[g]}return c}SS.exports=(i,u)=>{let f=[],c=[],g=[];if(u.replace(Tj,(t,C,A,x,D,L)=>{if(C)g.push(TS(C));else if(x){let N=g.join("");g=[],c.push(f.length===0?N:xS(i,f)(N)),f.push({inverse:A,styles:Ij(x)})}else if(D){if(f.length===0)throw new Error("Found extraneous } in Chalk template literal");c.push(xS(i,f)(g.join(""))),g=[],f.pop()}else g.push(L)}),c.push(g.join("")),f.length>0){let t=`Chalk template literal is missing ${f.length} closing bracket${f.length===1?"":"s"} (\`}\`)`;throw new Error(t)}return c.join("")}});var Jh=Me((oG,AS)=>{"use strict";var A2=Rh(),{stdout:_3,stderr:y3}=wS(),{stringReplaceAll:Pj,stringEncaseCRLFWithFirstIndex:Mj}=ES(),{isArray:Yh}=Array,OS=["ansi","ansi","ansi256","ansi16m"],ka=Object.create(null),Fj=(i,u={})=>{if(u.level&&!(Number.isInteger(u.level)&&u.level>=0&&u.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let f=_3?_3.level:0;i.level=u.level===void 0?f:u.level},IS=class{constructor(u){return PS(u)}},PS=i=>{let u={};return Fj(u,i),u.template=(...f)=>MS(u.template,...f),Object.setPrototypeOf(u,$h.prototype),Object.setPrototypeOf(u.template,u),u.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},u.template.Instance=IS,u.template};function $h(i){return PS(i)}for(let[i,u]of Object.entries(A2))ka[i]={get(){let f=Kh(this,w3(u.open,u.close,this._styler),this._isEmpty);return Object.defineProperty(this,i,{value:f}),f}};ka.visible={get(){let i=Kh(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:i}),i}};var LS=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let i of LS)ka[i]={get(){let{level:u}=this;return function(...f){let c=w3(A2.color[OS[u]][i](...f),A2.color.close,this._styler);return Kh(this,c,this._isEmpty)}}};for(let i of LS){let u="bg"+i[0].toUpperCase()+i.slice(1);ka[u]={get(){let{level:f}=this;return function(...c){let g=w3(A2.bgColor[OS[f]][i](...c),A2.bgColor.close,this._styler);return Kh(this,g,this._isEmpty)}}}}var Lj=Object.defineProperties(()=>{},zn(dt({},ka),{level:{enumerable:!0,get(){return this._generator.level},set(i){this._generator.level=i}}})),w3=(i,u,f)=>{let c,g;return f===void 0?(c=i,g=u):(c=f.openAll+i,g=u+f.closeAll),{open:i,close:u,openAll:c,closeAll:g,parent:f}},Kh=(i,u,f)=>{let c=(...g)=>Yh(g[0])&&Yh(g[0].raw)?RS(c,MS(c,...g)):RS(c,g.length===1?""+g[0]:g.join(" "));return Object.setPrototypeOf(c,Lj),c._generator=i,c._styler=u,c._isEmpty=f,c},RS=(i,u)=>{if(i.level<=0||!u)return i._isEmpty?"":u;let f=i._styler;if(f===void 0)return u;let{openAll:c,closeAll:g}=f;if(u.indexOf("")!==-1)for(;f!==void 0;)u=Pj(u,f.close,f.open),f=f.parent;let t=u.indexOf(` +`);return t!==-1&&(u=Mj(u,g,c,t)),c+u+g},D3,MS=(i,...u)=>{let[f]=u;if(!Yh(f)||!Yh(f.raw))return u.join(" ");let c=u.slice(1),g=[f.raw[0]];for(let t=1;t{"use strict";var Rj=O2&&O2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(O2,"__esModule",{value:!0});var I2=Rj(Jh()),Nj=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,Bj=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,Qh=(i,u)=>u==="foreground"?i:"bg"+i[0].toUpperCase()+i.slice(1);O2.default=(i,u,f)=>{if(!u)return i;if(u in I2.default){let g=Qh(u,f);return I2.default[g](i)}if(u.startsWith("#")){let g=Qh("hex",f);return I2.default[g](u)(i)}if(u.startsWith("ansi")){let g=Bj.exec(u);if(!g)return i;let t=Qh(g[1],f),C=Number(g[2]);return I2.default[t](C)(i)}if(u.startsWith("rgb")||u.startsWith("hsl")||u.startsWith("hsv")||u.startsWith("hwb")){let g=Nj.exec(u);if(!g)return i;let t=Qh(g[1],f),C=Number(g[2]),A=Number(g[3]),x=Number(g[4]);return I2.default[t](C,A,x)(i)}return i}});var BS=Me(P2=>{"use strict";var NS=P2&&P2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(P2,"__esModule",{value:!0});var jj=NS(mS()),S3=NS(E3());P2.default=(i,u,f,c)=>{if(typeof f.style.borderStyle=="string"){let g=f.yogaNode.getComputedWidth(),t=f.yogaNode.getComputedHeight(),C=f.style.borderColor,A=jj.default[f.style.borderStyle],x=S3.default(A.topLeft+A.horizontal.repeat(g-2)+A.topRight,C,"foreground"),D=(S3.default(A.vertical,C,"foreground")+` +`).repeat(t-2),L=S3.default(A.bottomLeft+A.horizontal.repeat(g-2)+A.bottomRight,C,"foreground");c.write(i,u,x,{transformers:[]}),c.write(i,u+1,D,{transformers:[]}),c.write(i+g-1,u+1,D,{transformers:[]}),c.write(i,u+t-1,L,{transformers:[]})}}});var US=Me(M2=>{"use strict";var _c=M2&&M2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(M2,"__esModule",{value:!0});var Uj=_c(hc()),qj=_c(jy()),zj=_c(cS()),Wj=_c(Yy()),Hj=_c(aS()),bj=_c(Ky()),Gj=_c(BS()),Vj=(i,u)=>{var f;let c=(f=i.childNodes[0])===null||f===void 0?void 0:f.yogaNode;if(c){let g=c.getComputedLeft(),t=c.getComputedTop();u=` +`.repeat(t)+zj.default(u,g)}return u},jS=(i,u,f)=>{var c;let{offsetX:g=0,offsetY:t=0,transformers:C=[],skipStaticElements:A}=f;if(A&&i.internal_static)return;let{yogaNode:x}=i;if(x){if(x.getDisplay()===Uj.default.DISPLAY_NONE)return;let D=g+x.getComputedLeft(),L=t+x.getComputedTop(),N=C;if(typeof i.internal_transform=="function"&&(N=[i.internal_transform,...C]),i.nodeName==="ink-text"){let j=bj.default(i);if(j.length>0){let $=qj.default(j),h=Hj.default(x);if($>h){let re=(c=i.style.textWrap)!==null&&c!==void 0?c:"wrap";j=Wj.default(j,h,re)}j=Vj(i,j),u.write(D,L,j,{transformers:N})}return}if(i.nodeName==="ink-box"&&Gj.default(D,L,i,u),i.nodeName==="ink-root"||i.nodeName==="ink-box")for(let j of i.childNodes)jS(j,u,{offsetX:D,offsetY:L,transformers:N,skipStaticElements:A})}};M2.default=jS});var zS=Me((fG,qS)=>{"use strict";qS.exports=i=>{i=Object.assign({onlyFirst:!1},i);let u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(u,i.onlyFirst?void 0:"g")}});var HS=Me((cG,C3)=>{"use strict";var Yj=zS(),WS=i=>typeof i=="string"?i.replace(Yj(),""):i;C3.exports=WS;C3.exports.default=WS});var VS=Me((aG,bS)=>{"use strict";var GS="[\uD800-\uDBFF][\uDC00-\uDFFF]";bS.exports=i=>i&&i.exact?new RegExp(`^${GS}$`):new RegExp(GS,"g")});var $S=Me((dG,T3)=>{"use strict";var $j=HS(),Kj=VS(),YS=i=>$j(i).replace(Kj()," ").length;T3.exports=YS;T3.exports.default=YS});var QS=Me(F2=>{"use strict";var KS=F2&&F2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(F2,"__esModule",{value:!0});var XS=KS(Gy()),Xj=KS($S()),JS=class{constructor(u){this.writes=[];let{width:f,height:c}=u;this.width=f,this.height=c}write(u,f,c,g){let{transformers:t}=g;!c||this.writes.push({x:u,y:f,text:c,transformers:t})}get(){let u=[];for(let c=0;cc.trimRight()).join(` +`),height:u.length}}};F2.default=JS});var t5=Me(L2=>{"use strict";var x3=L2&&L2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(L2,"__esModule",{value:!0});var Jj=x3(hc()),ZS=x3(US()),e5=x3(QS());L2.default=(i,u)=>{var f;if(i.yogaNode.setWidth(u),i.yogaNode){i.yogaNode.calculateLayout(void 0,void 0,Jj.default.DIRECTION_LTR);let c=new e5.default({width:i.yogaNode.getComputedWidth(),height:i.yogaNode.getComputedHeight()});ZS.default(i,c,{skipStaticElements:!0});let g;((f=i.staticNode)===null||f===void 0?void 0:f.yogaNode)&&(g=new e5.default({width:i.staticNode.yogaNode.getComputedWidth(),height:i.staticNode.yogaNode.getComputedHeight()}),ZS.default(i.staticNode,g,{skipStaticElements:!1}));let{output:t,height:C}=c.get();return{output:t,outputHeight:C,staticOutput:g?`${g.get().output} +`:""}}return{output:"",outputHeight:0,staticOutput:""}}});var o5=Me((mG,n5)=>{"use strict";var r5=require("stream"),i5=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],k3={},Qj=i=>{let u=new r5.PassThrough,f=new r5.PassThrough;u.write=g=>i("stdout",g),f.write=g=>i("stderr",g);let c=new console.Console(u,f);for(let g of i5)k3[g]=console[g],console[g]=c[g];return()=>{for(let g of i5)console[g]=k3[g];k3={}}};n5.exports=Qj});var O3=Me(A3=>{"use strict";Object.defineProperty(A3,"__esModule",{value:!0});A3.default=new WeakMap});var P3=Me(I3=>{"use strict";Object.defineProperty(I3,"__esModule",{value:!0});var Zj=lr(),u5=Zj.createContext({exit:()=>{}});u5.displayName="InternalAppContext";I3.default=u5});var F3=Me(M3=>{"use strict";Object.defineProperty(M3,"__esModule",{value:!0});var eU=lr(),s5=eU.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});s5.displayName="InternalStdinContext";M3.default=s5});var R3=Me(L3=>{"use strict";Object.defineProperty(L3,"__esModule",{value:!0});var tU=lr(),l5=tU.createContext({stdout:void 0,write:()=>{}});l5.displayName="InternalStdoutContext";L3.default=l5});var B3=Me(N3=>{"use strict";Object.defineProperty(N3,"__esModule",{value:!0});var nU=lr(),f5=nU.createContext({stderr:void 0,write:()=>{}});f5.displayName="InternalStderrContext";N3.default=f5});var Zh=Me(j3=>{"use strict";Object.defineProperty(j3,"__esModule",{value:!0});var rU=lr(),c5=rU.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});c5.displayName="InternalFocusContext";j3.default=c5});var d5=Me((EG,a5)=>{"use strict";var iU=/[|\\{}()[\]^$+*?.-]/g;a5.exports=i=>{if(typeof i!="string")throw new TypeError("Expected a string");return i.replace(iU,"\\$&")}});var v5=Me((SG,p5)=>{"use strict";var oU=d5(),h5=[].concat(require("module").builtinModules,"bootstrap_node","node").map(i=>new RegExp(`(?:\\(${i}\\.js:\\d+:\\d+\\)$|^\\s*at ${i}\\.js:\\d+:\\d+$)`));h5.push(/\(internal\/[^:]+:\d+:\d+\)$/,/\s*at internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var em=class{constructor(u){u=dt({ignoredPackages:[]},u),"internals"in u||(u.internals=em.nodeInternals()),"cwd"in u||(u.cwd=process.cwd()),this._cwd=u.cwd.replace(/\\/g,"/"),this._internals=[].concat(u.internals,uU(u.ignoredPackages)),this._wrapCallSite=u.wrapCallSite||!1}static nodeInternals(){return[...h5]}clean(u,f=0){f=" ".repeat(f),Array.isArray(u)||(u=u.split(` +`)),!/^\s*at /.test(u[0])&&/^\s*at /.test(u[1])&&(u=u.slice(1));let c=!1,g=null,t=[];return u.forEach(C=>{if(C=C.replace(/\\/g,"/"),this._internals.some(x=>x.test(C)))return;let A=/^\s*at /.test(C);c?C=C.trimEnd().replace(/^(\s+)at /,"$1"):(C=C.trim(),A&&(C=C.slice(3))),C=C.replace(`${this._cwd}/`,""),C&&(A?(g&&(t.push(g),g=null),t.push(C)):(c=!0,g=C))}),t.map(C=>`${f}${C} +`).join("")}captureString(u,f=this.captureString){typeof u=="function"&&(f=u,u=Infinity);let{stackTraceLimit:c}=Error;u&&(Error.stackTraceLimit=u);let g={};Error.captureStackTrace(g,f);let{stack:t}=g;return Error.stackTraceLimit=c,this.clean(t)}capture(u,f=this.capture){typeof u=="function"&&(f=u,u=Infinity);let{prepareStackTrace:c,stackTraceLimit:g}=Error;Error.prepareStackTrace=(A,x)=>this._wrapCallSite?x.map(this._wrapCallSite):x,u&&(Error.stackTraceLimit=u);let t={};Error.captureStackTrace(t,f);let{stack:C}=t;return Object.assign(Error,{prepareStackTrace:c,stackTraceLimit:g}),C}at(u=this.at){let[f]=this.capture(1,u);if(!f)return{};let c={line:f.getLineNumber(),column:f.getColumnNumber()};m5(c,f.getFileName(),this._cwd),f.isConstructor()&&(c.constructor=!0),f.isEval()&&(c.evalOrigin=f.getEvalOrigin()),f.isNative()&&(c.native=!0);let g;try{g=f.getTypeName()}catch(A){}g&&g!=="Object"&&g!=="[object Object]"&&(c.type=g);let t=f.getFunctionName();t&&(c.function=t);let C=f.getMethodName();return C&&t!==C&&(c.method=C),c}parseLine(u){let f=u&&u.match(sU);if(!f)return null;let c=f[1]==="new",g=f[2],t=f[3],C=f[4],A=Number(f[5]),x=Number(f[6]),D=f[7],L=f[8],N=f[9],j=f[10]==="native",$=f[11]===")",h,re={};if(L&&(re.line=Number(L)),N&&(re.column=Number(N)),$&&D){let ce=0;for(let Q=D.length-1;Q>0;Q--)if(D.charAt(Q)===")")ce++;else if(D.charAt(Q)==="("&&D.charAt(Q-1)===" "&&(ce--,ce===-1&&D.charAt(Q-1)===" ")){let oe=D.slice(0,Q-1);D=D.slice(Q+1),g+=` (${oe}`;break}}if(g){let ce=g.match(lU);ce&&(g=ce[1],h=ce[2])}return m5(re,D,this._cwd),c&&(re.constructor=!0),t&&(re.evalOrigin=t,re.evalLine=A,re.evalColumn=x,re.evalFile=C&&C.replace(/\\/g,"/")),j&&(re.native=!0),g&&(re.function=g),h&&g!==h&&(re.method=h),re}};function m5(i,u,f){u&&(u=u.replace(/\\/g,"/"),u.startsWith(`${f}/`)&&(u=u.slice(f.length+1)),i.file=u)}function uU(i){if(i.length===0)return[];let u=i.map(f=>oU(f));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${u.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var sU=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),lU=/^(.*?) \[as (.*?)\]$/;p5.exports=em});var _5=Me((CG,g5)=>{"use strict";g5.exports=(i,u)=>i.replace(/^\t+/gm,f=>" ".repeat(f.length*(u||2)))});var w5=Me((TG,y5)=>{"use strict";var fU=_5(),cU=(i,u)=>{let f=[],c=i-u,g=i+u;for(let t=c;t<=g;t++)f.push(t);return f};y5.exports=(i,u,f)=>{if(typeof i!="string")throw new TypeError("Source code is missing.");if(!u||u<1)throw new TypeError("Line number must start from `1`.");if(i=fU(i).split(/\r?\n/),!(u>i.length))return f=dt({around:3},f),cU(u,f.around).filter(c=>i[c-1]!==void 0).map(c=>({line:c,value:i[c-1]}))}});var tm=Me(hs=>{"use strict";var aU=hs&&hs.__createBinding||(Object.create?function(i,u,f,c){c===void 0&&(c=f),Object.defineProperty(i,c,{enumerable:!0,get:function(){return u[f]}})}:function(i,u,f,c){c===void 0&&(c=f),i[c]=u[f]}),dU=hs&&hs.__setModuleDefault||(Object.create?function(i,u){Object.defineProperty(i,"default",{enumerable:!0,value:u})}:function(i,u){i.default=u}),pU=hs&&hs.__importStar||function(i){if(i&&i.__esModule)return i;var u={};if(i!=null)for(var f in i)f!=="default"&&Object.hasOwnProperty.call(i,f)&&aU(u,i,f);return dU(u,i),u},hU=hs&&hs.__rest||function(i,u){var f={};for(var c in i)Object.prototype.hasOwnProperty.call(i,c)&&u.indexOf(c)<0&&(f[c]=i[c]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var g=0,c=Object.getOwnPropertySymbols(i);g{var{children:f}=i,c=hU(i,["children"]);let g=Object.assign(Object.assign({},c),{marginLeft:c.marginLeft||c.marginX||c.margin||0,marginRight:c.marginRight||c.marginX||c.margin||0,marginTop:c.marginTop||c.marginY||c.margin||0,marginBottom:c.marginBottom||c.marginY||c.margin||0,paddingLeft:c.paddingLeft||c.paddingX||c.padding||0,paddingRight:c.paddingRight||c.paddingX||c.padding||0,paddingTop:c.paddingTop||c.paddingY||c.padding||0,paddingBottom:c.paddingBottom||c.paddingY||c.padding||0});return D5.default.createElement("ink-box",{ref:u,style:g},f)});U3.displayName="Box";U3.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};hs.default=U3});var W3=Me(R2=>{"use strict";var q3=R2&&R2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(R2,"__esModule",{value:!0});var mU=q3(lr()),Aa=q3(Jh()),E5=q3(E3()),z3=({color:i,backgroundColor:u,dimColor:f,bold:c,italic:g,underline:t,strikethrough:C,inverse:A,wrap:x,children:D})=>{if(D==null)return null;let L=N=>(f&&(N=Aa.default.dim(N)),i&&(N=E5.default(N,i,"foreground")),u&&(N=E5.default(N,u,"background")),c&&(N=Aa.default.bold(N)),g&&(N=Aa.default.italic(N)),t&&(N=Aa.default.underline(N)),C&&(N=Aa.default.strikethrough(N)),A&&(N=Aa.default.inverse(N)),N);return mU.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:x},internal_transform:L},D)};z3.displayName="Text";z3.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};R2.default=z3});var x5=Me(ms=>{"use strict";var vU=ms&&ms.__createBinding||(Object.create?function(i,u,f,c){c===void 0&&(c=f),Object.defineProperty(i,c,{enumerable:!0,get:function(){return u[f]}})}:function(i,u,f,c){c===void 0&&(c=f),i[c]=u[f]}),gU=ms&&ms.__setModuleDefault||(Object.create?function(i,u){Object.defineProperty(i,"default",{enumerable:!0,value:u})}:function(i,u){i.default=u}),_U=ms&&ms.__importStar||function(i){if(i&&i.__esModule)return i;var u={};if(i!=null)for(var f in i)f!=="default"&&Object.hasOwnProperty.call(i,f)&&vU(u,i,f);return gU(u,i),u},N2=ms&&ms.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(ms,"__esModule",{value:!0});var S5=_U(require("fs")),ui=N2(lr()),C5=N2(v5()),yU=N2(w5()),ef=N2(tm()),il=N2(W3()),T5=new C5.default({cwd:process.cwd(),internals:C5.default.nodeInternals()}),wU=({error:i})=>{let u=i.stack?i.stack.split(` +`).slice(1):void 0,f=u?T5.parseLine(u[0]):void 0,c,g=0;if((f==null?void 0:f.file)&&(f==null?void 0:f.line)&&S5.existsSync(f.file)){let t=S5.readFileSync(f.file,"utf8");if(c=yU.default(t,f.line),c)for(let{line:C}of c)g=Math.max(g,String(C).length)}return ui.default.createElement(ef.default,{flexDirection:"column",padding:1},ui.default.createElement(ef.default,null,ui.default.createElement(il.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),ui.default.createElement(il.default,null," ",i.message)),f&&ui.default.createElement(ef.default,{marginTop:1},ui.default.createElement(il.default,{dimColor:!0},f.file,":",f.line,":",f.column)),f&&c&&ui.default.createElement(ef.default,{marginTop:1,flexDirection:"column"},c.map(({line:t,value:C})=>ui.default.createElement(ef.default,{key:t},ui.default.createElement(ef.default,{width:g+1},ui.default.createElement(il.default,{dimColor:t!==f.line,backgroundColor:t===f.line?"red":void 0,color:t===f.line?"white":void 0},String(t).padStart(g," "),":")),ui.default.createElement(il.default,{key:t,backgroundColor:t===f.line?"red":void 0,color:t===f.line?"white":void 0}," "+C)))),i.stack&&ui.default.createElement(ef.default,{marginTop:1,flexDirection:"column"},i.stack.split(` +`).slice(1).map(t=>{let C=T5.parseLine(t);return C?ui.default.createElement(ef.default,{key:t},ui.default.createElement(il.default,{dimColor:!0},"- "),ui.default.createElement(il.default,{dimColor:!0,bold:!0},C.function),ui.default.createElement(il.default,{dimColor:!0,color:"gray"}," ","(",C.file,":",C.line,":",C.column,")")):ui.default.createElement(ef.default,{key:t},ui.default.createElement(il.default,{dimColor:!0},"- "),ui.default.createElement(il.default,{dimColor:!0,bold:!0},t))})))};ms.default=wU});var A5=Me(vs=>{"use strict";var DU=vs&&vs.__createBinding||(Object.create?function(i,u,f,c){c===void 0&&(c=f),Object.defineProperty(i,c,{enumerable:!0,get:function(){return u[f]}})}:function(i,u,f,c){c===void 0&&(c=f),i[c]=u[f]}),EU=vs&&vs.__setModuleDefault||(Object.create?function(i,u){Object.defineProperty(i,"default",{enumerable:!0,value:u})}:function(i,u){i.default=u}),SU=vs&&vs.__importStar||function(i){if(i&&i.__esModule)return i;var u={};if(i!=null)for(var f in i)f!=="default"&&Object.hasOwnProperty.call(i,f)&&DU(u,i,f);return EU(u,i),u},yc=vs&&vs.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(vs,"__esModule",{value:!0});var wc=SU(lr()),k5=yc(gy()),CU=yc(P3()),TU=yc(F3()),xU=yc(R3()),kU=yc(B3()),AU=yc(Zh()),OU=yc(x5()),IU=" ",PU="",MU="",H3=class extends wc.PureComponent{constructor(){super(...arguments);this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=u=>{let{stdin:f}=this.props;if(!this.isRawModeSupported())throw f===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default. +Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink. +Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(f.setEncoding("utf8"),u){this.rawModeEnabledCount===0&&(f.addListener("data",this.handleInput),f.resume(),f.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount==0&&(f.setRawMode(!1),f.removeListener("data",this.handleInput),f.pause())},this.handleInput=u=>{u===""&&this.props.exitOnCtrlC&&this.handleExit(),u===MU&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(u===IU&&this.focusNext(),u===PU&&this.focusPrevious())},this.handleExit=u=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(u)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focusNext=()=>{this.setState(u=>{let f=u.focusables[0].id;return{activeFocusId:this.findNextFocusable(u)||f}})},this.focusPrevious=()=>{this.setState(u=>{let f=u.focusables[u.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(u)||f}})},this.addFocusable=(u,{autoFocus:f})=>{this.setState(c=>{let g=c.activeFocusId;return!g&&f&&(g=u),{activeFocusId:g,focusables:[...c.focusables,{id:u,isActive:!0}]}})},this.removeFocusable=u=>{this.setState(f=>({activeFocusId:f.activeFocusId===u?void 0:f.activeFocusId,focusables:f.focusables.filter(c=>c.id!==u)}))},this.activateFocusable=u=>{this.setState(f=>({focusables:f.focusables.map(c=>c.id!==u?c:{id:u,isActive:!0})}))},this.deactivateFocusable=u=>{this.setState(f=>({activeFocusId:f.activeFocusId===u?void 0:f.activeFocusId,focusables:f.focusables.map(c=>c.id!==u?c:{id:u,isActive:!1})}))},this.findNextFocusable=u=>{let f=u.focusables.findIndex(c=>c.id===u.activeFocusId);for(let c=f+1;c{let f=u.focusables.findIndex(c=>c.id===u.activeFocusId);for(let c=f-1;c>=0;c--)if(u.focusables[c].isActive)return u.focusables[c].id}}static getDerivedStateFromError(u){return{error:u}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return wc.default.createElement(CU.default.Provider,{value:{exit:this.handleExit}},wc.default.createElement(TU.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},wc.default.createElement(xU.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},wc.default.createElement(kU.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},wc.default.createElement(AU.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious}},this.state.error?wc.default.createElement(OU.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){k5.default.hide(this.props.stdout)}componentWillUnmount(){k5.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(u){this.handleExit(u)}};vs.default=H3;H3.displayName="InternalApp"});var M5=Me(gs=>{"use strict";var FU=gs&&gs.__createBinding||(Object.create?function(i,u,f,c){c===void 0&&(c=f),Object.defineProperty(i,c,{enumerable:!0,get:function(){return u[f]}})}:function(i,u,f,c){c===void 0&&(c=f),i[c]=u[f]}),LU=gs&&gs.__setModuleDefault||(Object.create?function(i,u){Object.defineProperty(i,"default",{enumerable:!0,value:u})}:function(i,u){i.default=u}),RU=gs&&gs.__importStar||function(i){if(i&&i.__esModule)return i;var u={};if(i!=null)for(var f in i)f!=="default"&&Object.hasOwnProperty.call(i,f)&&FU(u,i,f);return LU(u,i),u},_s=gs&&gs.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(gs,"__esModule",{value:!0});var NU=_s(lr()),O5=AD(),BU=_s(WD()),jU=_s(ay()),UU=_s(KD()),qU=_s(JD()),nm=_s(lS()),zU=_s(t5()),WU=_s(vy()),HU=_s(o5()),bU=RU(Xy()),GU=_s(O3()),VU=_s(A5()),Oa=process.env.CI==="false"?!1:UU.default,I5=()=>{},P5=class{constructor(u){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:f,outputHeight:c,staticOutput:g}=zU.default(this.rootNode,this.options.stdout.columns||80),t=g&&g!==` +`;if(this.options.debug){t&&(this.fullStaticOutput+=g),this.options.stdout.write(this.fullStaticOutput+f);return}if(Oa){t&&this.options.stdout.write(g),this.lastOutput=f;return}if(t&&(this.fullStaticOutput+=g),c>=this.options.stdout.rows){this.options.stdout.write(jU.default.clearTerminal+this.fullStaticOutput+f),this.lastOutput=f;return}t&&(this.log.clear(),this.options.stdout.write(g),this.log(f)),!t&&f!==this.lastOutput&&this.throttledLog(f),this.lastOutput=f},qU.default(this),this.options=u,this.rootNode=bU.createNode("ink-root"),this.rootNode.onRender=u.debug?this.onRender:O5.throttle(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=BU.default.create(u.stdout),this.throttledLog=u.debug?this.log:O5.throttle(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=nm.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=WU.default(this.unmount,{alwaysLast:!1}),process.env.DEV==="true"&&nm.default.injectIntoDevTools({bundleType:0,version:"16.13.1",rendererPackageName:"ink"}),u.patchConsole&&this.patchConsole(),Oa||(u.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{u.stdout.off("resize",this.onRender)})}render(u){let f=NU.default.createElement(VU.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},u);nm.default.updateContainer(f,this.container,null,I5)}writeToStdout(u){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(u+this.fullStaticOutput+this.lastOutput);return}if(Oa){this.options.stdout.write(u);return}this.log.clear(),this.options.stdout.write(u),this.log(this.lastOutput)}}writeToStderr(u){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(u),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(Oa){this.options.stderr.write(u);return}this.log.clear(),this.options.stderr.write(u),this.log(this.lastOutput)}}unmount(u){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),Oa?this.options.stdout.write(this.lastOutput+` +`):this.options.debug||this.log.done(),this.isUnmounted=!0,nm.default.updateContainer(null,this.container,null,I5),GU.default.delete(this.options.stdout),u instanceof Error?this.rejectExitPromise(u):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((u,f)=>{this.resolveExitPromise=u,this.rejectExitPromise=f})),this.exitPromise}clear(){!Oa&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=HU.default((u,f)=>{u==="stdout"&&this.writeToStdout(f),u==="stderr"&&(f.startsWith("The above error occurred")||this.writeToStderr(f))}))}};gs.default=P5});var L5=Me(B2=>{"use strict";var F5=B2&&B2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(B2,"__esModule",{value:!0});var YU=F5(M5()),rm=F5(O3()),$U=require("stream"),JU=(i,u)=>{let f=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},KU(u)),c=XU(f.stdout,()=>new YU.default(f));return c.render(i),{rerender:c.render,unmount:()=>c.unmount(),waitUntilExit:c.waitUntilExit,cleanup:()=>rm.default.delete(f.stdout),clear:c.clear}};B2.default=JU;var KU=(i={})=>i instanceof $U.Stream?{stdout:i,stdin:process.stdin}:i,XU=(i,u)=>{let f;return rm.default.has(i)?f=rm.default.get(i):(f=u(),rm.default.set(i,f)),f}});var N5=Me(tf=>{"use strict";var QU=tf&&tf.__createBinding||(Object.create?function(i,u,f,c){c===void 0&&(c=f),Object.defineProperty(i,c,{enumerable:!0,get:function(){return u[f]}})}:function(i,u,f,c){c===void 0&&(c=f),i[c]=u[f]}),ZU=tf&&tf.__setModuleDefault||(Object.create?function(i,u){Object.defineProperty(i,"default",{enumerable:!0,value:u})}:function(i,u){i.default=u}),eq=tf&&tf.__importStar||function(i){if(i&&i.__esModule)return i;var u={};if(i!=null)for(var f in i)f!=="default"&&Object.hasOwnProperty.call(i,f)&&QU(u,i,f);return ZU(u,i),u};Object.defineProperty(tf,"__esModule",{value:!0});var j2=eq(lr()),R5=i=>{let{items:u,children:f,style:c}=i,[g,t]=j2.useState(0),C=j2.useMemo(()=>u.slice(g),[u,g]);j2.useLayoutEffect(()=>{t(u.length)},[u.length]);let A=C.map((D,L)=>f(D,g+L)),x=j2.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},c),[c]);return j2.default.createElement("ink-box",{internal_static:!0,style:x},A)};R5.displayName="Static";tf.default=R5});var j5=Me(U2=>{"use strict";var tq=U2&&U2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(U2,"__esModule",{value:!0});var nq=tq(lr()),B5=({children:i,transform:u})=>i==null?null:nq.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:u},i);B5.displayName="Transform";U2.default=B5});var q5=Me(q2=>{"use strict";var rq=q2&&q2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(q2,"__esModule",{value:!0});var iq=rq(lr()),U5=({count:i=1})=>iq.default.createElement("ink-text",null,` +`.repeat(i));U5.displayName="Newline";q2.default=U5});var H5=Me(z2=>{"use strict";var z5=z2&&z2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(z2,"__esModule",{value:!0});var oq=z5(lr()),uq=z5(tm()),W5=()=>oq.default.createElement(uq.default,{flexGrow:1});W5.displayName="Spacer";z2.default=W5});var im=Me(W2=>{"use strict";var sq=W2&&W2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(W2,"__esModule",{value:!0});var lq=lr(),fq=sq(F3()),cq=()=>lq.useContext(fq.default);W2.default=cq});var G5=Me(H2=>{"use strict";var aq=H2&&H2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(H2,"__esModule",{value:!0});var b5=lr(),dq=aq(im()),pq=(i,u={})=>{let{stdin:f,setRawMode:c,internal_exitOnCtrlC:g}=dq.default();b5.useEffect(()=>{if(u.isActive!==!1)return c(!0),()=>{c(!1)}},[u.isActive,c]),b5.useEffect(()=>{if(u.isActive===!1)return;let t=C=>{let A=String(C),x={upArrow:A==="",downArrow:A==="",leftArrow:A==="",rightArrow:A==="",pageDown:A==="[6~",pageUp:A==="[5~",return:A==="\r",escape:A==="",ctrl:!1,shift:!1,tab:A===" "||A==="",backspace:A==="\b",delete:A==="\x7F"||A==="[3~",meta:!1};A<=""&&!x.return&&(A=String.fromCharCode(A.charCodeAt(0)+"a".charCodeAt(0)-1),x.ctrl=!0),A.startsWith("")&&(A=A.slice(1),x.meta=!0);let D=A>="A"&&A<="Z",L=A>="\u0410"&&A<="\u042F";A.length===1&&(D||L)&&(x.shift=!0),x.tab&&A==="[Z"&&(x.shift=!0),(x.tab||x.backspace||x.delete)&&(A=""),(!(A==="c"&&x.ctrl)||!g)&&i(A,x)};return f==null||f.on("data",t),()=>{f==null||f.off("data",t)}},[u.isActive,f,g,i])};H2.default=pq});var V5=Me(b2=>{"use strict";var hq=b2&&b2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(b2,"__esModule",{value:!0});var mq=lr(),vq=hq(P3()),gq=()=>mq.useContext(vq.default);b2.default=gq});var Y5=Me(G2=>{"use strict";var _q=G2&&G2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(G2,"__esModule",{value:!0});var yq=lr(),wq=_q(R3()),Dq=()=>yq.useContext(wq.default);G2.default=Dq});var $5=Me(V2=>{"use strict";var Eq=V2&&V2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(V2,"__esModule",{value:!0});var Sq=lr(),Cq=Eq(B3()),Tq=()=>Sq.useContext(Cq.default);V2.default=Tq});var X5=Me(Y2=>{"use strict";var K5=Y2&&Y2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(Y2,"__esModule",{value:!0});var $2=lr(),xq=K5(Zh()),kq=K5(im()),Aq=({isActive:i=!0,autoFocus:u=!1}={})=>{let{isRawModeSupported:f,setRawMode:c}=kq.default(),{activeId:g,add:t,remove:C,activate:A,deactivate:x}=$2.useContext(xq.default),D=$2.useMemo(()=>Math.random().toString().slice(2,7),[]);return $2.useEffect(()=>(t(D,{autoFocus:u}),()=>{C(D)}),[D,u]),$2.useEffect(()=>{i?A(D):x(D)},[i,D]),$2.useEffect(()=>{if(!(!f||!i))return c(!0),()=>{c(!1)}},[i]),{isFocused:Boolean(D)&&g===D}};Y2.default=Aq});var J5=Me(K2=>{"use strict";var Oq=K2&&K2.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(K2,"__esModule",{value:!0});var Iq=lr(),Pq=Oq(Zh()),Mq=()=>{let i=Iq.useContext(Pq.default);return{enableFocus:i.enableFocus,disableFocus:i.disableFocus,focusNext:i.focusNext,focusPrevious:i.focusPrevious}};K2.default=Mq});var Q5=Me(b3=>{"use strict";Object.defineProperty(b3,"__esModule",{value:!0});b3.default=i=>{var u,f,c,g;return{width:(f=(u=i.yogaNode)===null||u===void 0?void 0:u.getComputedWidth())!==null&&f!==void 0?f:0,height:(g=(c=i.yogaNode)===null||c===void 0?void 0:c.getComputedHeight())!==null&&g!==void 0?g:0}}});var ys=Me(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});var Fq=L5();Object.defineProperty(ji,"render",{enumerable:!0,get:function(){return Fq.default}});var Lq=tm();Object.defineProperty(ji,"Box",{enumerable:!0,get:function(){return Lq.default}});var Rq=W3();Object.defineProperty(ji,"Text",{enumerable:!0,get:function(){return Rq.default}});var Nq=N5();Object.defineProperty(ji,"Static",{enumerable:!0,get:function(){return Nq.default}});var Bq=j5();Object.defineProperty(ji,"Transform",{enumerable:!0,get:function(){return Bq.default}});var jq=q5();Object.defineProperty(ji,"Newline",{enumerable:!0,get:function(){return jq.default}});var Uq=H5();Object.defineProperty(ji,"Spacer",{enumerable:!0,get:function(){return Uq.default}});var qq=G5();Object.defineProperty(ji,"useInput",{enumerable:!0,get:function(){return qq.default}});var zq=V5();Object.defineProperty(ji,"useApp",{enumerable:!0,get:function(){return zq.default}});var Wq=im();Object.defineProperty(ji,"useStdin",{enumerable:!0,get:function(){return Wq.default}});var Hq=Y5();Object.defineProperty(ji,"useStdout",{enumerable:!0,get:function(){return Hq.default}});var bq=$5();Object.defineProperty(ji,"useStderr",{enumerable:!0,get:function(){return bq.default}});var Gq=X5();Object.defineProperty(ji,"useFocus",{enumerable:!0,get:function(){return Gq.default}});var Vq=J5();Object.defineProperty(ji,"useFocusManager",{enumerable:!0,get:function(){return Vq.default}});var Yq=Q5();Object.defineProperty(ji,"measureElement",{enumerable:!0,get:function(){return Yq.default}})});var lC=Me(X2=>{"use strict";Object.defineProperty(X2,"__esModule",{value:!0});X2.UncontrolledTextInput=void 0;var oC=lr(),Y3=lr(),uC=ys(),Sc=Jh(),sC=({value:i,placeholder:u="",focus:f=!0,mask:c,highlightPastedText:g=!1,showCursor:t=!0,onChange:C,onSubmit:A})=>{let[{cursorOffset:x,cursorWidth:D},L]=Y3.useState({cursorOffset:(i||"").length,cursorWidth:0});Y3.useEffect(()=>{L(re=>{if(!f||!t)return re;let ce=i||"";return re.cursorOffset>ce.length-1?{cursorOffset:ce.length,cursorWidth:0}:re})},[i,f,t]);let N=g?D:0,j=c?c.repeat(i.length):i,$=j,h=u?Sc.grey(u):void 0;if(t&&f){h=u.length>0?Sc.inverse(u[0])+Sc.grey(u.slice(1)):Sc.inverse(" "),$=j.length>0?"":Sc.inverse(" ");let re=0;for(let ce of j)re>=x-N&&re<=x?$+=Sc.inverse(ce):$+=ce,re++;j.length>0&&x===j.length&&($+=Sc.inverse(" "))}return uC.useInput((re,ce)=>{if(ce.upArrow||ce.downArrow||ce.ctrl&&re==="c"||ce.tab||ce.shift&&ce.tab)return;if(ce.return){A&&A(i);return}let Q=x,oe=i,Se=0;ce.leftArrow?t&&Q--:ce.rightArrow?t&&Q++:ce.backspace||ce.delete?x>0&&(oe=i.slice(0,x-1)+i.slice(x,i.length),Q--):(oe=i.slice(0,x)+re+i.slice(x,i.length),Q+=re.length,re.length>1&&(Se=re.length)),x<0&&(Q=0),x>i.length&&(Q=i.length),L({cursorOffset:Q,cursorWidth:Se}),oe!==i&&C(oe)},{isActive:f}),oC.createElement(uC.Text,null,u?j.length>0?$:h:$)};X2.default=sC;X2.UncontrolledTextInput=i=>{let[u,f]=Y3.useState("");return oC.createElement(sC,Object.assign({},i,{value:u,onChange:f}))}});var cC=Me(pm=>{"use strict";Object.defineProperty(pm,"__esModule",{value:!0});function J2(i){let u=[...i.caches],f=u.shift();return f===void 0?fC():{get(c,g,t={miss:()=>Promise.resolve()}){return f.get(c,g,t).catch(()=>J2({caches:u}).get(c,g,t))},set(c,g){return f.set(c,g).catch(()=>J2({caches:u}).set(c,g))},delete(c){return f.delete(c).catch(()=>J2({caches:u}).delete(c))},clear(){return f.clear().catch(()=>J2({caches:u}).clear())}}}function fC(){return{get(i,u,f={miss:()=>Promise.resolve()}){return u().then(g=>Promise.all([g,f.miss(g)])).then(([g])=>g)},set(i,u){return Promise.resolve(u)},delete(i){return Promise.resolve()},clear(){return Promise.resolve()}}}pm.createFallbackableCache=J2;pm.createNullCache=fC});var dC=Me((fV,aC)=>{aC.exports=cC()});var pC=Me($3=>{"use strict";Object.defineProperty($3,"__esModule",{value:!0});function $q(i={serializable:!0}){let u={};return{get(f,c,g={miss:()=>Promise.resolve()}){let t=JSON.stringify(f);if(t in u)return Promise.resolve(i.serializable?JSON.parse(u[t]):u[t]);let C=c(),A=g&&g.miss||(()=>Promise.resolve());return C.then(x=>A(x)).then(()=>C)},set(f,c){return u[JSON.stringify(f)]=i.serializable?JSON.stringify(c):c,Promise.resolve(c)},delete(f){return delete u[JSON.stringify(f)],Promise.resolve()},clear(){return u={},Promise.resolve()}}}$3.createInMemoryCache=$q});var mC=Me((aV,hC)=>{hC.exports=pC()});var gC=Me(ws=>{"use strict";Object.defineProperty(ws,"__esModule",{value:!0});function Kq(i,u,f){let c={"x-algolia-api-key":f,"x-algolia-application-id":u};return{headers(){return i===K3.WithinHeaders?c:{}},queryParameters(){return i===K3.WithinQueryParameters?c:{}}}}function Xq(i){let u=0,f=()=>(u++,new Promise(c=>{setTimeout(()=>{c(i(f))},Math.min(100*u,1e3))}));return i(f)}function vC(i,u=(f,c)=>Promise.resolve()){return Object.assign(i,{wait(f){return vC(i.then(c=>Promise.all([u(c,f),c])).then(c=>c[1]))}})}function Jq(i){let u=i.length-1;for(u;u>0;u--){let f=Math.floor(Math.random()*(u+1)),c=i[u];i[u]=i[f],i[f]=c}return i}function Qq(i,u){return Object.keys(u!==void 0?u:{}).forEach(f=>{i[f]=u[f](i)}),i}function Zq(i,...u){let f=0;return i.replace(/%s/g,()=>encodeURIComponent(u[f++]))}var ez="4.2.0",tz=i=>()=>i.transporter.requester.destroy(),K3={WithinQueryParameters:0,WithinHeaders:1};ws.AuthMode=K3;ws.addMethods=Qq;ws.createAuth=Kq;ws.createRetryablePromise=Xq;ws.createWaitablePromise=vC;ws.destroy=tz;ws.encode=Zq;ws.shuffle=Jq;ws.version=ez});var Q2=Me((pV,_C)=>{_C.exports=gC()});var yC=Me(X3=>{"use strict";Object.defineProperty(X3,"__esModule",{value:!0});var nz={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};X3.MethodEnum=nz});var Z2=Me((mV,wC)=>{wC.exports=yC()});var RC=Me(y0=>{"use strict";Object.defineProperty(y0,"__esModule",{value:!0});var DC=Z2();function J3(i,u){let f=i||{},c=f.data||{};return Object.keys(f).forEach(g=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(g)===-1&&(c[g]=f[g])}),{data:Object.entries(c).length>0?c:void 0,timeout:f.timeout||u,headers:f.headers||{},queryParameters:f.queryParameters||{},cacheable:f.cacheable}}var hm={Read:1,Write:2,Any:3},Ia={Up:1,Down:2,Timeouted:3},EC=2*60*1e3;function Q3(i,u=Ia.Up){return zn(dt({},i),{status:u,lastUpdate:Date.now()})}function SC(i){return i.status===Ia.Up||Date.now()-i.lastUpdate>EC}function CC(i){return i.status===Ia.Timeouted&&Date.now()-i.lastUpdate<=EC}function Z3(i){return{protocol:i.protocol||"https",url:i.url,accept:i.accept||hm.Any}}function rz(i,u){return Promise.all(u.map(f=>i.get(f,()=>Promise.resolve(Q3(f))))).then(f=>{let c=f.filter(A=>SC(A)),g=f.filter(A=>CC(A)),t=[...c,...g],C=t.length>0?t.map(A=>Z3(A)):u;return{getTimeout(A,x){return(g.length===0&&A===0?1:g.length+3+A)*x},statelessHosts:C}})}var iz=({isTimedOut:i,status:u})=>!i&&~~u==0,oz=i=>{let u=i.status;return i.isTimedOut||iz(i)||~~(u/100)!=2&&~~(u/100)!=4},uz=({status:i})=>~~(i/100)==2,sz=(i,u)=>oz(i)?u.onRetry(i):uz(i)?u.onSucess(i):u.onFail(i);function PC(i,u,f,c){let g=[],t=AC(f,c),C=OC(i,c),A=f.method,x=f.method!==DC.MethodEnum.Get?{}:dt(dt({},f.data),c.data),D=dt(dt(dt({"x-algolia-agent":i.userAgent.value},i.queryParameters),x),c.queryParameters),L=0,N=(j,$)=>{let h=j.pop();if(h===void 0)throw IC(ew(g));let re={data:t,headers:C,method:A,url:kC(h,f.path,D),connectTimeout:$(L,i.timeouts.connect),responseTimeout:$(L,c.timeout)},ce=oe=>{let Se={request:re,response:oe,host:h,triesLeft:j.length};return g.push(Se),Se},Q={onSucess:oe=>TC(oe),onRetry(oe){let Se=ce(oe);return oe.isTimedOut&&L++,Promise.all([i.logger.info("Retryable failure",tw(Se)),i.hostsCache.set(h,Q3(h,oe.isTimedOut?Ia.Timeouted:Ia.Down))]).then(()=>N(j,$))},onFail(oe){throw ce(oe),xC(oe,ew(g))}};return i.requester.send(re).then(oe=>sz(oe,Q))};return rz(i.hostsCache,u).then(j=>N([...j.statelessHosts].reverse(),j.getTimeout))}function lz(i){let{hostsCache:u,logger:f,requester:c,requestsCache:g,responsesCache:t,timeouts:C,userAgent:A,hosts:x,queryParameters:D,headers:L}=i,N={hostsCache:u,logger:f,requester:c,requestsCache:g,responsesCache:t,timeouts:C,userAgent:A,headers:L,queryParameters:D,hosts:x.map(j=>Z3(j)),read(j,$){let h=J3($,N.timeouts.read),re=()=>PC(N,N.hosts.filter(oe=>(oe.accept&hm.Read)!=0),j,h);if((h.cacheable!==void 0?h.cacheable:j.cacheable)!==!0)return re();let Q={request:j,mappedRequestOptions:h,transporter:{queryParameters:N.queryParameters,headers:N.headers}};return N.responsesCache.get(Q,()=>N.requestsCache.get(Q,()=>N.requestsCache.set(Q,re()).then(oe=>Promise.all([N.requestsCache.delete(Q),oe]),oe=>Promise.all([N.requestsCache.delete(Q),Promise.reject(oe)])).then(([oe,Se])=>Se)),{miss:oe=>N.responsesCache.set(Q,oe)})},write(j,$){return PC(N,N.hosts.filter(h=>(h.accept&hm.Write)!=0),j,J3($,N.timeouts.write))}};return N}function fz(i){let u={value:`Algolia for JavaScript (${i})`,add(f){let c=`; ${f.segment}${f.version!==void 0?` (${f.version})`:""}`;return u.value.indexOf(c)===-1&&(u.value=`${u.value}${c}`),u}};return u}function TC(i){try{return JSON.parse(i.content)}catch(u){throw MC(u.message,i)}}function xC({content:i,status:u},f){let c=i;try{c=JSON.parse(i).message}catch(g){}return FC(c,u,f)}function cz(i,...u){let f=0;return i.replace(/%s/g,()=>encodeURIComponent(u[f++]))}function kC(i,u,f){let c=LC(f),g=`${i.protocol}://${i.url}/${u.charAt(0)==="/"?u.substr(1):u}`;return c.length&&(g+=`?${c}`),g}function LC(i){let u=f=>Object.prototype.toString.call(f)==="[object Object]"||Object.prototype.toString.call(f)==="[object Array]";return Object.keys(i).map(f=>cz("%s=%s",f,u(i[f])?JSON.stringify(i[f]):i[f])).join("&")}function AC(i,u){if(i.method===DC.MethodEnum.Get||i.data===void 0&&u.data===void 0)return;let f=Array.isArray(i.data)?i.data:dt(dt({},i.data),u.data);return JSON.stringify(f)}function OC(i,u){let f=dt(dt({},i.headers),u.headers),c={};return Object.keys(f).forEach(g=>{let t=f[g];c[g.toLowerCase()]=t}),c}function ew(i){return i.map(u=>tw(u))}function tw(i){let u=i.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return zn(dt({},i),{request:zn(dt({},i.request),{headers:dt(dt({},i.request.headers),u)})})}function FC(i,u,f){return{name:"ApiError",message:i,status:u,transporterStackTrace:f}}function MC(i,u){return{name:"DeserializationError",message:i,response:u}}function IC(i){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:i}}y0.CallEnum=hm;y0.HostStatusEnum=Ia;y0.createApiError=FC;y0.createDeserializationError=MC;y0.createMappedRequestOptions=J3;y0.createRetryError=IC;y0.createStatefulHost=Q3;y0.createStatelessHost=Z3;y0.createTransporter=lz;y0.createUserAgent=fz;y0.deserializeFailure=xC;y0.deserializeSuccess=TC;y0.isStatefulHostTimeouted=CC;y0.isStatefulHostUp=SC;y0.serializeData=AC;y0.serializeHeaders=OC;y0.serializeQueryParameters=LC;y0.serializeUrl=kC;y0.stackFrameWithoutCredentials=tw;y0.stackTraceWithoutCredentials=ew});var ed=Me((gV,NC)=>{NC.exports=RC()});var BC=Me(Hf=>{"use strict";Object.defineProperty(Hf,"__esModule",{value:!0});var Pa=Q2(),az=ed(),td=Z2(),dz=i=>{let u=i.region||"us",f=Pa.createAuth(Pa.AuthMode.WithinHeaders,i.appId,i.apiKey),c=az.createTransporter(zn(dt({hosts:[{url:`analytics.${u}.algolia.com`}]},i),{headers:dt(zn(dt({},f.headers()),{"content-type":"application/json"}),i.headers),queryParameters:dt(dt({},f.queryParameters()),i.queryParameters)})),g=i.appId;return Pa.addMethods({appId:g,transporter:c},i.methods)},pz=i=>(u,f)=>i.transporter.write({method:td.MethodEnum.Post,path:"2/abtests",data:u},f),hz=i=>(u,f)=>i.transporter.write({method:td.MethodEnum.Delete,path:Pa.encode("2/abtests/%s",u)},f),mz=i=>(u,f)=>i.transporter.read({method:td.MethodEnum.Get,path:Pa.encode("2/abtests/%s",u)},f),vz=i=>u=>i.transporter.read({method:td.MethodEnum.Get,path:"2/abtests"},u),gz=i=>(u,f)=>i.transporter.write({method:td.MethodEnum.Post,path:Pa.encode("2/abtests/%s/stop",u)},f);Hf.addABTest=pz;Hf.createAnalyticsClient=dz;Hf.deleteABTest=hz;Hf.getABTest=mz;Hf.getABTests=vz;Hf.stopABTest=gz});var UC=Me((yV,jC)=>{jC.exports=BC()});var zC=Me(nd=>{"use strict";Object.defineProperty(nd,"__esModule",{value:!0});var nw=Q2(),_z=ed(),qC=Z2(),yz=i=>{let u=i.region||"us",f=nw.createAuth(nw.AuthMode.WithinHeaders,i.appId,i.apiKey),c=_z.createTransporter(zn(dt({hosts:[{url:`recommendation.${u}.algolia.com`}]},i),{headers:dt(zn(dt({},f.headers()),{"content-type":"application/json"}),i.headers),queryParameters:dt(dt({},f.queryParameters()),i.queryParameters)}));return nw.addMethods({appId:i.appId,transporter:c},i.methods)},wz=i=>u=>i.transporter.read({method:qC.MethodEnum.Get,path:"1/strategies/personalization"},u),Dz=i=>(u,f)=>i.transporter.write({method:qC.MethodEnum.Post,path:"1/strategies/personalization",data:u},f);nd.createRecommendationClient=yz;nd.getPersonalizationStrategy=wz;nd.setPersonalizationStrategy=Dz});var HC=Me((DV,WC)=>{WC.exports=zC()});var nT=Me(yt=>{"use strict";Object.defineProperty(yt,"__esModule",{value:!0});var Wt=Q2(),jo=ed(),Rn=Z2(),Ez=require("crypto");function mm(i){let u=f=>i.request(f).then(c=>{if(i.batch!==void 0&&i.batch(c.hits),!i.shouldStop(c))return c.cursor?u({cursor:c.cursor}):u({page:(f.page||0)+1})});return u({})}var Sz=i=>{let u=i.appId,f=Wt.createAuth(i.authMode!==void 0?i.authMode:Wt.AuthMode.WithinHeaders,u,i.apiKey),c=jo.createTransporter(zn(dt({hosts:[{url:`${u}-dsn.algolia.net`,accept:jo.CallEnum.Read},{url:`${u}.algolia.net`,accept:jo.CallEnum.Write}].concat(Wt.shuffle([{url:`${u}-1.algolianet.com`},{url:`${u}-2.algolianet.com`},{url:`${u}-3.algolianet.com`}]))},i),{headers:dt(zn(dt({},f.headers()),{"content-type":"application/x-www-form-urlencoded"}),i.headers),queryParameters:dt(dt({},f.queryParameters()),i.queryParameters)})),g={transporter:c,appId:u,addAlgoliaAgent(t,C){c.userAgent.add({segment:t,version:C})},clearCache(){return Promise.all([c.requestsCache.clear(),c.responsesCache.clear()]).then(()=>{})}};return Wt.addMethods(g,i.methods)};function bC(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function GC(){return{name:"ObjectNotFoundError",message:"Object not found."}}function VC(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var Cz=i=>(u,f)=>{let A=f||{},{queryParameters:c}=A,g=Si(A,["queryParameters"]),t=dt({acl:u},c!==void 0?{queryParameters:c}:{}),C=(x,D)=>Wt.createRetryablePromise(L=>rd(i)(x.key,D).catch(N=>{if(N.status!==404)throw N;return L()}));return Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:"1/keys",data:t},g),C)},Tz=i=>(u,f,c)=>{let g=jo.createMappedRequestOptions(c);return g.queryParameters["X-Algolia-User-ID"]=u,i.transporter.write({method:Rn.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:f}},g)},xz=i=>(u,f,c)=>i.transporter.write({method:Rn.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:u,cluster:f}},c),vm=i=>(u,f,c)=>{let g=(t,C)=>id(i)(u,{methods:{waitTask:z0}}).waitTask(t.taskID,C);return Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/operation",u),data:{operation:"copy",destination:f}},c),g)},kz=i=>(u,f,c)=>vm(i)(u,f,zn(dt({},c),{scope:[gm.Rules]})),Az=i=>(u,f,c)=>vm(i)(u,f,zn(dt({},c),{scope:[gm.Settings]})),Oz=i=>(u,f,c)=>vm(i)(u,f,zn(dt({},c),{scope:[gm.Synonyms]})),Iz=i=>(u,f)=>{let c=(g,t)=>Wt.createRetryablePromise(C=>rd(i)(u,t).then(C).catch(A=>{if(A.status!==404)throw A}));return Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Delete,path:Wt.encode("1/keys/%s",u)},f),c)},Pz=()=>(i,u)=>{let f=jo.serializeQueryParameters(u),c=Ez.createHmac("sha256",i).update(f).digest("hex");return Buffer.from(c+f).toString("base64")},rd=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Get,path:Wt.encode("1/keys/%s",u)},f),Mz=i=>u=>i.transporter.read({method:Rn.MethodEnum.Get,path:"1/logs"},u),Fz=()=>i=>{let u=Buffer.from(i,"base64").toString("ascii"),f=/validUntil=(\d+)/,c=u.match(f);if(c===null)throw VC();return parseInt(c[1],10)-Math.round(new Date().getTime()/1e3)},Lz=i=>u=>i.transporter.read({method:Rn.MethodEnum.Get,path:"1/clusters/mapping/top"},u),Rz=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Get,path:Wt.encode("1/clusters/mapping/%s",u)},f),Nz=i=>u=>{let g=u||{},{retrieveMappings:f}=g,c=Si(g,["retrieveMappings"]);return f===!0&&(c.getClusters=!0),i.transporter.read({method:Rn.MethodEnum.Get,path:"1/clusters/mapping/pending"},c)},id=i=>(u,f={})=>{let c={transporter:i.transporter,appId:i.appId,indexName:u};return Wt.addMethods(c,f.methods)},Bz=i=>u=>i.transporter.read({method:Rn.MethodEnum.Get,path:"1/keys"},u),jz=i=>u=>i.transporter.read({method:Rn.MethodEnum.Get,path:"1/clusters"},u),Uz=i=>u=>i.transporter.read({method:Rn.MethodEnum.Get,path:"1/indexes"},u),qz=i=>u=>i.transporter.read({method:Rn.MethodEnum.Get,path:"1/clusters/mapping"},u),zz=i=>(u,f,c)=>{let g=(t,C)=>id(i)(u,{methods:{waitTask:z0}}).waitTask(t.taskID,C);return Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/operation",u),data:{operation:"move",destination:f}},c),g)},Wz=i=>(u,f)=>{let c=(g,t)=>Promise.all(Object.keys(g.taskID).map(C=>id(i)(C,{methods:{waitTask:z0}}).waitTask(g.taskID[C],t)));return Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:u}},f),c)},Hz=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:u}},f),bz=i=>(u,f)=>{let c=u.map(g=>zn(dt({},g),{params:jo.serializeQueryParameters(g.params||{})}));return i.transporter.read({method:Rn.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:c},cacheable:!0},f)},Gz=i=>(u,f)=>Promise.all(u.map(c=>{let A=c.params,{facetName:g,facetQuery:t}=A,C=Si(A,["facetName","facetQuery"]);return id(i)(c.indexName,{methods:{searchForFacetValues:YC}}).searchForFacetValues(g,t,dt(dt({},f),C))})),Vz=i=>(u,f)=>{let c=jo.createMappedRequestOptions(f);return c.queryParameters["X-Algolia-User-ID"]=u,i.transporter.write({method:Rn.MethodEnum.Delete,path:"1/clusters/mapping"},c)},Yz=i=>(u,f)=>{let c=(g,t)=>Wt.createRetryablePromise(C=>rd(i)(u,t).catch(A=>{if(A.status!==404)throw A;return C()}));return Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/keys/%s/restore",u)},f),c)},$z=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:u}},f),Kz=i=>(u,f)=>{let c=Object.assign({},f),L=f||{},{queryParameters:g}=L,t=Si(L,["queryParameters"]),C=g?{queryParameters:g}:{},A=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],x=N=>Object.keys(c).filter(j=>A.indexOf(j)!==-1).every(j=>N[j]===c[j]),D=(N,j)=>Wt.createRetryablePromise($=>rd(i)(u,j).then(h=>x(h)?Promise.resolve():$()));return Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Put,path:Wt.encode("1/keys/%s",u),data:C},t),D)},$C=i=>(u,f)=>{let c=(g,t)=>z0(i)(g.taskID,t);return Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/batch",i.indexName),data:{requests:u}},f),c)},Xz=i=>u=>mm(zn(dt({},u),{shouldStop:f=>f.cursor===void 0,request:f=>i.transporter.read({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/browse",i.indexName),data:f},u)})),Jz=i=>u=>{let f=dt({hitsPerPage:1e3},u);return mm(zn(dt({},f),{shouldStop:c=>c.hits.lengthzn(dt({},g),{hits:g.hits.map(t=>(delete t._highlightResult,t))}))}}))},Qz=i=>u=>{let f=dt({hitsPerPage:1e3},u);return mm(zn(dt({},f),{shouldStop:c=>c.hits.lengthzn(dt({},g),{hits:g.hits.map(t=>(delete t._highlightResult,t))}))}}))},_m=i=>(u,f,c)=>{let x=c||{},{batchSize:g}=x,t=Si(x,["batchSize"]),C={taskIDs:[],objectIDs:[]},A=(D=0)=>{let L=[],N;for(N=D;N({action:f,body:j})),t).then(j=>(C.objectIDs=C.objectIDs.concat(j.objectIDs),C.taskIDs.push(j.taskID),N++,A(N)))};return Wt.createWaitablePromise(A(),(D,L)=>Promise.all(D.taskIDs.map(N=>z0(i)(N,L))))},Zz=i=>u=>Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/clear",i.indexName)},u),(f,c)=>z0(i)(f.taskID,c)),eW=i=>u=>{let t=u||{},{forwardToReplicas:f}=t,c=Si(t,["forwardToReplicas"]),g=jo.createMappedRequestOptions(c);return f&&(g.queryParameters.forwardToReplicas=1),Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/rules/clear",i.indexName)},g),(C,A)=>z0(i)(C.taskID,A))},tW=i=>u=>{let t=u||{},{forwardToReplicas:f}=t,c=Si(t,["forwardToReplicas"]),g=jo.createMappedRequestOptions(c);return f&&(g.queryParameters.forwardToReplicas=1),Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/synonyms/clear",i.indexName)},g),(C,A)=>z0(i)(C.taskID,A))},nW=i=>(u,f)=>Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/deleteByQuery",i.indexName),data:u},f),(c,g)=>z0(i)(c.taskID,g)),rW=i=>u=>Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Delete,path:Wt.encode("1/indexes/%s",i.indexName)},u),(f,c)=>z0(i)(f.taskID,c)),iW=i=>(u,f)=>Wt.createWaitablePromise(JC(i)([u],f).then(c=>({taskID:c.taskIDs[0]})),(c,g)=>z0(i)(c.taskID,g)),JC=i=>(u,f)=>{let c=u.map(g=>({objectID:g}));return _m(i)(c,Cc.DeleteObject,f)},oW=i=>(u,f)=>{let C=f||{},{forwardToReplicas:c}=C,g=Si(C,["forwardToReplicas"]),t=jo.createMappedRequestOptions(g);return c&&(t.queryParameters.forwardToReplicas=1),Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Delete,path:Wt.encode("1/indexes/%s/rules/%s",i.indexName,u)},t),(A,x)=>z0(i)(A.taskID,x))},uW=i=>(u,f)=>{let C=f||{},{forwardToReplicas:c}=C,g=Si(C,["forwardToReplicas"]),t=jo.createMappedRequestOptions(g);return c&&(t.queryParameters.forwardToReplicas=1),Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Delete,path:Wt.encode("1/indexes/%s/synonyms/%s",i.indexName,u)},t),(A,x)=>z0(i)(A.taskID,x))},sW=i=>u=>QC(i)(u).then(()=>!0).catch(f=>{if(f.status!==404)throw f;return!1}),lW=i=>(u,f)=>{let x=f||{},{query:c,paginate:g}=x,t=Si(x,["query","paginate"]),C=0,A=()=>ZC(i)(c||"",zn(dt({},t),{page:C})).then(D=>{for(let[L,N]of Object.entries(D.hits))if(u(N))return{object:N,position:parseInt(L,10),page:C};if(C++,g===!1||C>=D.nbPages)throw GC();return A()});return A()},fW=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Get,path:Wt.encode("1/indexes/%s/%s",i.indexName,u)},f),cW=()=>(i,u)=>{for(let[f,c]of Object.entries(i.hits))if(c.objectID===u)return parseInt(f,10);return-1},aW=i=>(u,f)=>{let C=f||{},{attributesToRetrieve:c}=C,g=Si(C,["attributesToRetrieve"]),t=u.map(A=>dt({indexName:i.indexName,objectID:A},c?{attributesToRetrieve:c}:{}));return i.transporter.read({method:Rn.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:t}},g)},dW=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Get,path:Wt.encode("1/indexes/%s/rules/%s",i.indexName,u)},f),QC=i=>u=>i.transporter.read({method:Rn.MethodEnum.Get,path:Wt.encode("1/indexes/%s/settings",i.indexName),data:{getVersion:2}},u),pW=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Get,path:Wt.encode("1/indexes/%s/synonyms/%s",i.indexName,u)},f),eT=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Get,path:Wt.encode("1/indexes/%s/task/%s",i.indexName,u.toString())},f),hW=i=>(u,f)=>Wt.createWaitablePromise(tT(i)([u],f).then(c=>({objectID:c.objectIDs[0],taskID:c.taskIDs[0]})),(c,g)=>z0(i)(c.taskID,g)),tT=i=>(u,f)=>{let C=f||{},{createIfNotExists:c}=C,g=Si(C,["createIfNotExists"]),t=c?Cc.PartialUpdateObject:Cc.PartialUpdateObjectNoCreate;return _m(i)(u,t,g)},mW=i=>(u,f)=>{let h=f||{},{safe:c,autoGenerateObjectIDIfNotExist:g,batchSize:t}=h,C=Si(h,["safe","autoGenerateObjectIDIfNotExist","batchSize"]),A=(re,ce,Q,oe)=>Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/operation",re),data:{operation:Q,destination:ce}},oe),(Se,me)=>z0(i)(Se.taskID,me)),x=Math.random().toString(36).substring(7),D=`${i.indexName}_tmp_${x}`,L=rw({appId:i.appId,transporter:i.transporter,indexName:D}),N=[],j=A(i.indexName,D,"copy",zn(dt({},C),{scope:["settings","synonyms","rules"]}));N.push(j);let $=(c?j.wait(C):j).then(()=>{let re=L(u,zn(dt({},C),{autoGenerateObjectIDIfNotExist:g,batchSize:t}));return N.push(re),c?re.wait(C):re}).then(()=>{let re=A(D,i.indexName,"move",C);return N.push(re),c?re.wait(C):re}).then(()=>Promise.all(N)).then(([re,ce,Q])=>({objectIDs:ce.objectIDs,taskIDs:[re.taskID,...ce.taskIDs,Q.taskID]}));return Wt.createWaitablePromise($,(re,ce)=>Promise.all(N.map(Q=>Q.wait(ce))))},vW=i=>(u,f)=>iw(i)(u,zn(dt({},f),{clearExistingRules:!0})),gW=i=>(u,f)=>ow(i)(u,zn(dt({},f),{replaceExistingSynonyms:!0})),_W=i=>(u,f)=>Wt.createWaitablePromise(rw(i)([u],f).then(c=>({objectID:c.objectIDs[0],taskID:c.taskIDs[0]})),(c,g)=>z0(i)(c.taskID,g)),rw=i=>(u,f)=>{let C=f||{},{autoGenerateObjectIDIfNotExist:c}=C,g=Si(C,["autoGenerateObjectIDIfNotExist"]),t=c?Cc.AddObject:Cc.UpdateObject;if(t===Cc.UpdateObject){for(let A of u)if(A.objectID===void 0)return Wt.createWaitablePromise(Promise.reject(bC()))}return _m(i)(u,t,g)},yW=i=>(u,f)=>iw(i)([u],f),iw=i=>(u,f)=>{let A=f||{},{forwardToReplicas:c,clearExistingRules:g}=A,t=Si(A,["forwardToReplicas","clearExistingRules"]),C=jo.createMappedRequestOptions(t);return c&&(C.queryParameters.forwardToReplicas=1),g&&(C.queryParameters.clearExistingRules=1),Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/rules/batch",i.indexName),data:u},C),(x,D)=>z0(i)(x.taskID,D))},wW=i=>(u,f)=>ow(i)([u],f),ow=i=>(u,f)=>{let A=f||{},{forwardToReplicas:c,replaceExistingSynonyms:g}=A,t=Si(A,["forwardToReplicas","replaceExistingSynonyms"]),C=jo.createMappedRequestOptions(t);return c&&(C.queryParameters.forwardToReplicas=1),g&&(C.queryParameters.replaceExistingSynonyms=1),Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/synonyms/batch",i.indexName),data:u},C),(x,D)=>z0(i)(x.taskID,D))},ZC=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/query",i.indexName),data:{query:u},cacheable:!0},f),YC=i=>(u,f,c)=>i.transporter.read({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/facets/%s/query",i.indexName,u),data:{facetQuery:f},cacheable:!0},c),KC=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/rules/search",i.indexName),data:{query:u}},f),XC=i=>(u,f)=>i.transporter.read({method:Rn.MethodEnum.Post,path:Wt.encode("1/indexes/%s/synonyms/search",i.indexName),data:{query:u}},f),DW=i=>(u,f)=>{let C=f||{},{forwardToReplicas:c}=C,g=Si(C,["forwardToReplicas"]),t=jo.createMappedRequestOptions(g);return c&&(t.queryParameters.forwardToReplicas=1),Wt.createWaitablePromise(i.transporter.write({method:Rn.MethodEnum.Put,path:Wt.encode("1/indexes/%s/settings",i.indexName),data:u},t),(A,x)=>z0(i)(A.taskID,x))},z0=i=>(u,f)=>Wt.createRetryablePromise(c=>eT(i)(u,f).then(g=>g.status!=="published"?c():void 0)),EW={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",ListIndexes:"listIndexes",Logs:"logs",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},Cc={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject"},gm={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},SW={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},CW={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};yt.ApiKeyACLEnum=EW;yt.BatchActionEnum=Cc;yt.ScopeEnum=gm;yt.StrategyEnum=SW;yt.SynonymEnum=CW;yt.addApiKey=Cz;yt.assignUserID=Tz;yt.assignUserIDs=xz;yt.batch=$C;yt.browseObjects=Xz;yt.browseRules=Jz;yt.browseSynonyms=Qz;yt.chunkedBatch=_m;yt.clearObjects=Zz;yt.clearRules=eW;yt.clearSynonyms=tW;yt.copyIndex=vm;yt.copyRules=kz;yt.copySettings=Az;yt.copySynonyms=Oz;yt.createBrowsablePromise=mm;yt.createMissingObjectIDError=bC;yt.createObjectNotFoundError=GC;yt.createSearchClient=Sz;yt.createValidUntilNotFoundError=VC;yt.deleteApiKey=Iz;yt.deleteBy=nW;yt.deleteIndex=rW;yt.deleteObject=iW;yt.deleteObjects=JC;yt.deleteRule=oW;yt.deleteSynonym=uW;yt.exists=sW;yt.findObject=lW;yt.generateSecuredApiKey=Pz;yt.getApiKey=rd;yt.getLogs=Mz;yt.getObject=fW;yt.getObjectPosition=cW;yt.getObjects=aW;yt.getRule=dW;yt.getSecuredApiKeyRemainingValidity=Fz;yt.getSettings=QC;yt.getSynonym=pW;yt.getTask=eT;yt.getTopUserIDs=Lz;yt.getUserID=Rz;yt.hasPendingMappings=Nz;yt.initIndex=id;yt.listApiKeys=Bz;yt.listClusters=jz;yt.listIndices=Uz;yt.listUserIDs=qz;yt.moveIndex=zz;yt.multipleBatch=Wz;yt.multipleGetObjects=Hz;yt.multipleQueries=bz;yt.multipleSearchForFacetValues=Gz;yt.partialUpdateObject=hW;yt.partialUpdateObjects=tT;yt.removeUserID=Vz;yt.replaceAllObjects=mW;yt.replaceAllRules=vW;yt.replaceAllSynonyms=gW;yt.restoreApiKey=Yz;yt.saveObject=_W;yt.saveObjects=rw;yt.saveRule=yW;yt.saveRules=iw;yt.saveSynonym=wW;yt.saveSynonyms=ow;yt.search=ZC;yt.searchForFacetValues=YC;yt.searchRules=KC;yt.searchSynonyms=XC;yt.searchUserIDs=$z;yt.setSettings=DW;yt.updateApiKey=Kz;yt.waitTask=z0});var iT=Me((SV,rT)=>{rT.exports=nT()});var oT=Me(ym=>{"use strict";Object.defineProperty(ym,"__esModule",{value:!0});function TW(){return{debug(i,u){return Promise.resolve()},info(i,u){return Promise.resolve()},error(i,u){return Promise.resolve()}}}var xW={Debug:1,Info:2,Error:3};ym.LogLevelEnum=xW;ym.createNullLogger=TW});var sT=Me((TV,uT)=>{uT.exports=oT()});var cT=Me(uw=>{"use strict";Object.defineProperty(uw,"__esModule",{value:!0});var lT=require("http"),fT=require("https"),kW=require("url");function AW(){let i={keepAlive:!0},u=new lT.Agent(i),f=new fT.Agent(i);return{send(c){return new Promise(g=>{let t=kW.parse(c.url),C=t.query===null?t.pathname:`${t.pathname}?${t.query}`,A=dt({agent:t.protocol==="https:"?f:u,hostname:t.hostname,path:C,method:c.method,headers:c.headers},t.port!==void 0?{port:t.port||""}:{}),x=(t.protocol==="https:"?fT:lT).request(A,j=>{let $="";j.on("data",h=>$+=h),j.on("end",()=>{clearTimeout(L),clearTimeout(N),g({status:j.statusCode||0,content:$,isTimedOut:!1})})}),D=(j,$)=>setTimeout(()=>{x.abort(),g({status:0,content:$,isTimedOut:!0})},j*1e3),L=D(c.connectTimeout,"Connection timeout"),N;x.on("error",j=>{clearTimeout(L),clearTimeout(N),g({status:0,content:j.message,isTimedOut:!1})}),x.once("response",()=>{clearTimeout(L),N=D(c.responseTimeout,"Socket timeout")}),c.data!==void 0&&x.write(c.data),x.end()})},destroy(){return u.destroy(),f.destroy(),Promise.resolve()}}}uw.createNodeHttpRequester=AW});var dT=Me((kV,aT)=>{aT.exports=cT()});var vT=Me((AV,pT)=>{"use strict";var hT=dC(),OW=mC(),Ma=UC(),sw=Q2(),lw=HC(),Mt=iT(),IW=sT(),PW=dT(),MW=ed();function mT(i,u,f){let c={appId:i,apiKey:u,timeouts:{connect:2,read:5,write:30},requester:PW.createNodeHttpRequester(),logger:IW.createNullLogger(),responsesCache:hT.createNullCache(),requestsCache:hT.createNullCache(),hostsCache:OW.createInMemoryCache(),userAgent:MW.createUserAgent(sw.version).add({segment:"Node.js",version:process.versions.node})};return Mt.createSearchClient(zn(dt(dt({},c),f),{methods:{search:Mt.multipleQueries,searchForFacetValues:Mt.multipleSearchForFacetValues,multipleBatch:Mt.multipleBatch,multipleGetObjects:Mt.multipleGetObjects,multipleQueries:Mt.multipleQueries,copyIndex:Mt.copyIndex,copySettings:Mt.copySettings,copyRules:Mt.copyRules,copySynonyms:Mt.copySynonyms,moveIndex:Mt.moveIndex,listIndices:Mt.listIndices,getLogs:Mt.getLogs,listClusters:Mt.listClusters,multipleSearchForFacetValues:Mt.multipleSearchForFacetValues,getApiKey:Mt.getApiKey,addApiKey:Mt.addApiKey,listApiKeys:Mt.listApiKeys,updateApiKey:Mt.updateApiKey,deleteApiKey:Mt.deleteApiKey,restoreApiKey:Mt.restoreApiKey,assignUserID:Mt.assignUserID,assignUserIDs:Mt.assignUserIDs,getUserID:Mt.getUserID,searchUserIDs:Mt.searchUserIDs,listUserIDs:Mt.listUserIDs,getTopUserIDs:Mt.getTopUserIDs,removeUserID:Mt.removeUserID,hasPendingMappings:Mt.hasPendingMappings,generateSecuredApiKey:Mt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Mt.getSecuredApiKeyRemainingValidity,destroy:sw.destroy,initIndex:g=>t=>Mt.initIndex(g)(t,{methods:{batch:Mt.batch,delete:Mt.deleteIndex,getObject:Mt.getObject,getObjects:Mt.getObjects,saveObject:Mt.saveObject,saveObjects:Mt.saveObjects,search:Mt.search,searchForFacetValues:Mt.searchForFacetValues,waitTask:Mt.waitTask,setSettings:Mt.setSettings,getSettings:Mt.getSettings,partialUpdateObject:Mt.partialUpdateObject,partialUpdateObjects:Mt.partialUpdateObjects,deleteObject:Mt.deleteObject,deleteObjects:Mt.deleteObjects,deleteBy:Mt.deleteBy,clearObjects:Mt.clearObjects,browseObjects:Mt.browseObjects,getObjectPosition:Mt.getObjectPosition,findObject:Mt.findObject,exists:Mt.exists,saveSynonym:Mt.saveSynonym,saveSynonyms:Mt.saveSynonyms,getSynonym:Mt.getSynonym,searchSynonyms:Mt.searchSynonyms,browseSynonyms:Mt.browseSynonyms,deleteSynonym:Mt.deleteSynonym,clearSynonyms:Mt.clearSynonyms,replaceAllObjects:Mt.replaceAllObjects,replaceAllSynonyms:Mt.replaceAllSynonyms,searchRules:Mt.searchRules,getRule:Mt.getRule,deleteRule:Mt.deleteRule,saveRule:Mt.saveRule,saveRules:Mt.saveRules,replaceAllRules:Mt.replaceAllRules,browseRules:Mt.browseRules,clearRules:Mt.clearRules}}),initAnalytics:()=>g=>Ma.createAnalyticsClient(zn(dt(dt({},c),g),{methods:{addABTest:Ma.addABTest,getABTest:Ma.getABTest,getABTests:Ma.getABTests,stopABTest:Ma.stopABTest,deleteABTest:Ma.deleteABTest}})),initRecommendation:()=>g=>lw.createRecommendationClient(zn(dt(dt({},c),g),{methods:{getPersonalizationStrategy:lw.getPersonalizationStrategy,setPersonalizationStrategy:lw.setPersonalizationStrategy}}))}}))}mT.version=sw.version;pT.exports=mT});var _T=Me((OV,fw)=>{var gT=vT();fw.exports=gT;fw.exports.default=gT});var rf=Me(dw=>{"use strict";Object.defineProperty(dw,"__esModule",{value:!0});dw.default=kT;function kT(){}kT.prototype={diff:function(u,f){var c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},g=c.callback;typeof c=="function"&&(g=c,c={}),this.options=c;var t=this;function C(re){return g?(setTimeout(function(){g(void 0,re)},0),!0):re}u=this.castInput(u),f=this.castInput(f),u=this.removeEmpty(this.tokenize(u)),f=this.removeEmpty(this.tokenize(f));var A=f.length,x=u.length,D=1,L=A+x,N=[{newPos:-1,components:[]}],j=this.extractCommon(N[0],f,u,0);if(N[0].newPos+1>=A&&j+1>=x)return C([{value:this.join(f),count:f.length}]);function $(){for(var re=-1*D;re<=D;re+=2){var ce=void 0,Q=N[re-1],oe=N[re+1],Se=(oe?oe.newPos:0)-re;Q&&(N[re-1]=void 0);var me=Q&&Q.newPos+1=A&&Se+1>=x)return C(LW(t,ce.components,f,u,t.useLongestToken));N[re]=ce}D++}if(g)(function re(){setTimeout(function(){if(D>L)return g();$()||re()},0)})();else for(;D<=L;){var h=$();if(h)return h}},pushComponent:function(u,f,c){var g=u[u.length-1];g&&g.added===f&&g.removed===c?u[u.length-1]={count:g.count+1,added:f,removed:c}:u.push({count:1,added:f,removed:c})},extractCommon:function(u,f,c,g){for(var t=f.length,C=c.length,A=u.newPos,x=A-g,D=0;A+1$.length?re:$}),D.value=i.join(L)}else D.value=i.join(f.slice(A,A+D.count));A+=D.count,D.added||(x+=D.count)}}var j=u[C-1];return C>1&&typeof j.value=="string"&&(j.added||j.removed)&&i.equals("",j.value)&&(u[C-2].value+=j.value,u.pop()),u}function RW(i){return{newPos:i.newPos,components:i.components.slice(0)}}});var OT=Me(ld=>{"use strict";Object.defineProperty(ld,"__esModule",{value:!0});ld.diffChars=NW;ld.characterDiff=void 0;var jW=BW(rf());function BW(i){return i&&i.__esModule?i:{default:i}}var AT=new jW.default;ld.characterDiff=AT;function NW(i,u,f){return AT.diff(i,u,f)}});var hw=Me(pw=>{"use strict";Object.defineProperty(pw,"__esModule",{value:!0});pw.generateOptions=UW;function UW(i,u){if(typeof i=="function")u.callback=i;else if(i)for(var f in i)i.hasOwnProperty(f)&&(u[f]=i[f]);return u}});var MT=Me(Fa=>{"use strict";Object.defineProperty(Fa,"__esModule",{value:!0});Fa.diffWords=qW;Fa.diffWordsWithSpace=zW;Fa.wordDiff=void 0;var HW=WW(rf()),bW=hw();function WW(i){return i&&i.__esModule?i:{default:i}}var IT=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,PT=/\S/,fd=new HW.default;Fa.wordDiff=fd;fd.equals=function(i,u){return this.options.ignoreCase&&(i=i.toLowerCase(),u=u.toLowerCase()),i===u||this.options.ignoreWhitespace&&!PT.test(i)&&!PT.test(u)};fd.tokenize=function(i){for(var u=i.split(/(\s+|[()[\]{}'"]|\b)/),f=0;f{"use strict";Object.defineProperty(La,"__esModule",{value:!0});La.diffLines=GW;La.diffTrimmedLines=VW;La.lineDiff=void 0;var $W=YW(rf()),KW=hw();function YW(i){return i&&i.__esModule?i:{default:i}}var Dm=new $W.default;La.lineDiff=Dm;Dm.tokenize=function(i){var u=[],f=i.split(/(\n|\r\n)/);f[f.length-1]||f.pop();for(var c=0;c{"use strict";Object.defineProperty(cd,"__esModule",{value:!0});cd.diffSentences=XW;cd.sentenceDiff=void 0;var QW=JW(rf());function JW(i){return i&&i.__esModule?i:{default:i}}var mw=new QW.default;cd.sentenceDiff=mw;mw.tokenize=function(i){return i.split(/(\S.+?[.!?])(?=\s+|$)/)};function XW(i,u,f){return mw.diff(i,u,f)}});var LT=Me(ad=>{"use strict";Object.defineProperty(ad,"__esModule",{value:!0});ad.diffCss=ZW;ad.cssDiff=void 0;var tH=eH(rf());function eH(i){return i&&i.__esModule?i:{default:i}}var vw=new tH.default;ad.cssDiff=vw;vw.tokenize=function(i){return i.split(/([{}:;,]|\s+)/)};function ZW(i,u,f){return vw.diff(i,u,f)}});var NT=Me(Ra=>{"use strict";Object.defineProperty(Ra,"__esModule",{value:!0});Ra.diffJson=nH;Ra.canonicalize=Sm;Ra.jsonDiff=void 0;var RT=rH(rf()),iH=Em();function rH(i){return i&&i.__esModule?i:{default:i}}function Cm(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Cm=function(f){return typeof f}:Cm=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},Cm(i)}var oH=Object.prototype.toString,xc=new RT.default;Ra.jsonDiff=xc;xc.useLongestToken=!0;xc.tokenize=iH.lineDiff.tokenize;xc.castInput=function(i){var u=this.options,f=u.undefinedReplacement,c=u.stringifyReplacer,g=c===void 0?function(t,C){return typeof C=="undefined"?f:C}:c;return typeof i=="string"?i:JSON.stringify(Sm(i,null,null,g),g," ")};xc.equals=function(i,u){return RT.default.prototype.equals.call(xc,i.replace(/,([\r\n])/g,"$1"),u.replace(/,([\r\n])/g,"$1"))};function nH(i,u,f){return xc.diff(i,u,f)}function Sm(i,u,f,c,g){u=u||[],f=f||[],c&&(i=c(g,i));var t;for(t=0;t{"use strict";Object.defineProperty(dd,"__esModule",{value:!0});dd.diffArrays=uH;dd.arrayDiff=void 0;var lH=sH(rf());function sH(i){return i&&i.__esModule?i:{default:i}}var pd=new lH.default;dd.arrayDiff=pd;pd.tokenize=function(i){return i.slice()};pd.join=pd.removeEmpty=function(i){return i};function uH(i,u,f){return pd.diff(i,u,f)}});var Tm=Me(gw=>{"use strict";Object.defineProperty(gw,"__esModule",{value:!0});gw.parsePatch=fH;function fH(i){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},f=i.split(/\r\n|[\n\v\f\r\x85]/),c=i.match(/\r\n|[\n\v\f\r\x85]/g)||[],g=[],t=0;function C(){var D={};for(g.push(D);t{"use strict";Object.defineProperty(_w,"__esModule",{value:!0});_w.default=cH;function cH(i,u,f){var c=!0,g=!1,t=!1,C=1;return function A(){if(c&&!t){if(g?C++:c=!1,i+C<=f)return C;t=!0}if(!g)return t||(c=!0),u<=i-C?-C++:(g=!0,A())}}});var zT=Me(xm=>{"use strict";Object.defineProperty(xm,"__esModule",{value:!0});xm.applyPatch=UT;xm.applyPatches=aH;var qT=Tm(),pH=dH(jT());function dH(i){return i&&i.__esModule?i:{default:i}}function UT(i,u){var f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof u=="string"&&(u=(0,qT.parsePatch)(u)),Array.isArray(u)){if(u.length>1)throw new Error("applyPatch only works with a single input.");u=u[0]}var c=i.split(/\r\n|[\n\v\f\r\x85]/),g=i.match(/\r\n|[\n\v\f\r\x85]/g)||[],t=u.hunks,C=f.compareLine||function(Ot,Nt,Je,V){return Nt===V},A=0,x=f.fuzzFactor||0,D=0,L=0,N,j;function $(Ot,Nt){for(var Je=0;Je0?V[0]:" ",ge=V.length>0?V.substr(1):V;if(ne===" "||ne==="-"){if(!C(Nt+1,c[Nt],ne,ge)&&(A++,A>x))return!1;Nt++}}return!0}for(var h=0;h0?Le[0]:" ",ct=Le.length>0?Le.substr(1):Le,Ue=J.linedelimiters[Oe];if(ot===" ")Te++;else if(ot==="-")c.splice(Te,1),g.splice(Te,1);else if(ot==="+")c.splice(Te,0,ct),g.splice(Te,0,Ue),Te++;else if(ot==="\\"){var be=J.lines[Oe-1]?J.lines[Oe-1][0]:null;be==="+"?N=!0:be==="-"&&(j=!0)}}}if(N)for(;!c[c.length-1];)c.pop(),g.pop();else j&&(c.push(""),g.push(` +`));for(var At=0;At{"use strict";Object.defineProperty(hd,"__esModule",{value:!0});hd.structuredPatch=WT;hd.createTwoFilesPatch=HT;hd.createPatch=hH;var mH=Em();function yw(i){return _H(i)||gH(i)||vH()}function vH(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function gH(i){if(Symbol.iterator in Object(i)||Object.prototype.toString.call(i)==="[object Arguments]")return Array.from(i)}function _H(i){if(Array.isArray(i)){for(var u=0,f=new Array(i.length);u0?x(J.lines.slice(-C.context)):[],L-=j.length,N-=j.length)}(De=j).push.apply(De,yw(me.map(function(At){return(Se.added?"+":"-")+At}))),Se.added?h+=me.length:$+=me.length}else{if(L)if(me.length<=C.context*2&&oe=A.length-2&&me.length<=C.context){var ct=/\n$/.test(f),Ue=/\n$/.test(c),be=me.length==0&&j.length>ot.oldLines;!ct&&be&&j.splice(ot.oldLines,0,"\\ No newline at end of file"),(!ct&&!be||!Ue)&&j.push("\\ No newline at end of file")}D.push(ot),L=0,N=0,j=[]}$+=me.length,h+=me.length}},ce=0;ce{"use strict";Object.defineProperty(km,"__esModule",{value:!0});km.arrayEqual=yH;km.arrayStartsWith=bT;function yH(i,u){return i.length!==u.length?!1:bT(i,u)}function bT(i,u){if(u.length>i.length)return!1;for(var f=0;f{"use strict";Object.defineProperty(Am,"__esModule",{value:!0});Am.calcLineCount=VT;Am.merge=wH;var DH=ww(),EH=Tm(),Dw=GT();function Na(i){return TH(i)||CH(i)||SH()}function SH(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function CH(i){if(Symbol.iterator in Object(i)||Object.prototype.toString.call(i)==="[object Arguments]")return Array.from(i)}function TH(i){if(Array.isArray(i)){for(var u=0,f=new Array(i.length);u{"use strict";Object.defineProperty(Cw,"__esModule",{value:!0});Cw.convertChangesToDMP=OH;function OH(i){for(var u=[],f,c,g=0;g{"use strict";Object.defineProperty(Tw,"__esModule",{value:!0});Tw.convertChangesToXML=IH;function IH(i){for(var u=[],f=0;f"):c.removed&&u.push(""),u.push(PH(c.value)),c.added?u.push(""):c.removed&&u.push("")}return u.join("")}function PH(i){var u=i;return u=u.replace(/&/g,"&"),u=u.replace(//g,">"),u=u.replace(/"/g,"""),u}});var f9=Me(w0=>{"use strict";Object.defineProperty(w0,"__esModule",{value:!0});Object.defineProperty(w0,"Diff",{enumerable:!0,get:function(){return MH.default}});Object.defineProperty(w0,"diffChars",{enumerable:!0,get:function(){return FH.diffChars}});Object.defineProperty(w0,"diffWords",{enumerable:!0,get:function(){return o9.diffWords}});Object.defineProperty(w0,"diffWordsWithSpace",{enumerable:!0,get:function(){return o9.diffWordsWithSpace}});Object.defineProperty(w0,"diffLines",{enumerable:!0,get:function(){return u9.diffLines}});Object.defineProperty(w0,"diffTrimmedLines",{enumerable:!0,get:function(){return u9.diffTrimmedLines}});Object.defineProperty(w0,"diffSentences",{enumerable:!0,get:function(){return LH.diffSentences}});Object.defineProperty(w0,"diffCss",{enumerable:!0,get:function(){return RH.diffCss}});Object.defineProperty(w0,"diffJson",{enumerable:!0,get:function(){return s9.diffJson}});Object.defineProperty(w0,"canonicalize",{enumerable:!0,get:function(){return s9.canonicalize}});Object.defineProperty(w0,"diffArrays",{enumerable:!0,get:function(){return NH.diffArrays}});Object.defineProperty(w0,"applyPatch",{enumerable:!0,get:function(){return l9.applyPatch}});Object.defineProperty(w0,"applyPatches",{enumerable:!0,get:function(){return l9.applyPatches}});Object.defineProperty(w0,"parsePatch",{enumerable:!0,get:function(){return BH.parsePatch}});Object.defineProperty(w0,"merge",{enumerable:!0,get:function(){return jH.merge}});Object.defineProperty(w0,"structuredPatch",{enumerable:!0,get:function(){return xw.structuredPatch}});Object.defineProperty(w0,"createTwoFilesPatch",{enumerable:!0,get:function(){return xw.createTwoFilesPatch}});Object.defineProperty(w0,"createPatch",{enumerable:!0,get:function(){return xw.createPatch}});Object.defineProperty(w0,"convertChangesToDMP",{enumerable:!0,get:function(){return UH.convertChangesToDMP}});Object.defineProperty(w0,"convertChangesToXML",{enumerable:!0,get:function(){return qH.convertChangesToXML}});var MH=zH(rf()),FH=OT(),o9=MT(),u9=Em(),LH=FT(),RH=LT(),s9=NT(),NH=BT(),l9=zT(),BH=Tm(),jH=n9(),xw=ww(),UH=r9(),qH=i9();function zH(i){return i&&i.__esModule?i:{default:i}}});var HH={};jR(HH,{default:()=>GH});var wT=Er(require("@yarnpkg/cli")),Tc=Er(require("@yarnpkg/core"));var Z5=Er(ys()),Dc=Er(lr()),om=(0,Dc.memo)(({active:i})=>{let u=(0,Dc.useMemo)(()=>i?"\u25C9":"\u25EF",[i]),f=(0,Dc.useMemo)(()=>i?"green":"yellow",[i]);return Dc.default.createElement(Z5.Text,{color:f},u)});var Wf=Er(ys()),Bo=Er(lr());var eC=Er(ys()),um=Er(lr());function zf({active:i},u,f){let{stdin:c}=(0,eC.useStdin)(),g=(0,um.useCallback)((t,C)=>u(t,C),f);(0,um.useEffect)(()=>{if(!(!i||!c))return c.on("keypress",g),()=>{c.off("keypress",g)}},[i,g,c])}var sm;(function(f){f.BEFORE="before",f.AFTER="after"})(sm||(sm={}));var tC=function({active:i},u,f){zf({active:i},(c,g)=>{g.name==="tab"&&(g.shift?u(sm.BEFORE):u(sm.AFTER))},f)};var lm=function(i,u,{active:f,minus:c,plus:g,set:t,loop:C=!0}){zf({active:f},(A,x)=>{let D=u.indexOf(i);switch(x.name){case c:{let L=D-1;if(C){t(u[(u.length+L)%u.length]);return}if(L<0)return;t(u[L])}break;case g:{let L=D+1;if(C){t(u[L%u.length]);return}if(L>=u.length)return;t(u[L])}break}},[u,i,g,t,C])};var fm=({active:i=!0,children:u=[],radius:f=10,size:c=1,loop:g=!0,onFocusRequest:t,willReachEnd:C})=>{let A=ce=>{if(ce.key===null)throw new Error("Expected all children to have a key");return ce.key},x=Bo.default.Children.map(u,ce=>A(ce)),D=x[0],[L,N]=(0,Bo.useState)(D),j=x.indexOf(L);(0,Bo.useEffect)(()=>{x.includes(L)||N(D)},[u]),(0,Bo.useEffect)(()=>{C&&j>=x.length-2&&C()},[j]),tC({active:i&&!!t},ce=>{t==null||t(ce)},[t]),lm(L,x,{active:i,minus:"up",plus:"down",set:N,loop:g});let $=j-f,h=j+f;h>x.length&&($-=h-x.length,h=x.length),$<0&&(h+=-$,$=0),h>=x.length&&(h=x.length-1);let re=[];for(let ce=$;ce<=h;++ce){let Q=x[ce],oe=i&&Q===L;re.push(Bo.default.createElement(Wf.Box,{key:Q,height:c},Bo.default.createElement(Wf.Box,{marginLeft:1,marginRight:1},Bo.default.createElement(Wf.Text,null,oe?Bo.default.createElement(Wf.Text,{color:"cyan",bold:!0},">"):" ")),Bo.default.createElement(Wf.Box,null,Bo.default.cloneElement(u[ce],{active:oe}))))}return Bo.default.createElement(Wf.Box,{flexDirection:"column",width:"100%"},re)};var cm=Er(lr());var nC=Er(ys()),nf=Er(lr()),rC=Er(require("readline")),G3=nf.default.createContext(null),iC=({children:i})=>{let{stdin:u,setRawMode:f}=(0,nC.useStdin)();(0,nf.useEffect)(()=>{f&&f(!0),u&&(0,rC.emitKeypressEvents)(u)},[u,f]);let[c,g]=(0,nf.useState)(new Map),t=(0,nf.useMemo)(()=>({getAll:()=>c,get:C=>c.get(C),set:(C,A)=>g(new Map([...c,[C,A]]))}),[c,g]);return nf.default.createElement(G3.Provider,{value:t,children:i})};function Ec(i,u){let f=(0,cm.useContext)(G3);if(f===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof i=="undefined")return f.getAll();let c=(0,cm.useCallback)(t=>{f.set(i,t)},[i,f.set]),g=f.get(i);return typeof g=="undefined"&&(g=u),[g,c]}var am=Er(ys()),V3=Er(lr());async function dm(i,u){let f,c=t=>{let{exit:C}=(0,am.useApp)();zf({active:!0},(A,x)=>{x.name==="return"&&(f=t,C())},[C,t])},{waitUntilExit:g}=(0,am.render)(V3.default.createElement(iC,null,V3.default.createElement(i,zn(dt({},u),{useSubmit:c}))));return await g(),f}var DT=Er(require("clipanion")),ET=Er(lC()),un=Er(ys()),Pt=Er(lr());var yT=Er(_T()),cw={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},FW=(0,yT.default)(cw.appId,cw.apiKey).initIndex(cw.indexName),aw=async(i,u=0)=>await FW.search(i,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:u,hitsPerPage:10});var od=["regular","dev","peer"],ud=class extends wT.BaseCommand{async execute(){let u=await Tc.Configuration.find(this.context.cwd,this.context.plugins),f=()=>Pt.default.createElement(un.Box,{flexDirection:"row"},Pt.default.createElement(un.Box,{flexDirection:"column",width:48},Pt.default.createElement(un.Box,null,Pt.default.createElement(un.Text,null,"Press ",Pt.default.createElement(un.Text,{bold:!0,color:"cyanBright"},""),"/",Pt.default.createElement(un.Text,{bold:!0,color:"cyanBright"},"")," to move between packages.")),Pt.default.createElement(un.Box,null,Pt.default.createElement(un.Text,null,"Press ",Pt.default.createElement(un.Text,{bold:!0,color:"cyanBright"},"")," to select a package.")),Pt.default.createElement(un.Box,null,Pt.default.createElement(un.Text,null,"Press ",Pt.default.createElement(un.Text,{bold:!0,color:"cyanBright"},"")," again to change the target."))),Pt.default.createElement(un.Box,{flexDirection:"column"},Pt.default.createElement(un.Box,{marginLeft:1},Pt.default.createElement(un.Text,null,"Press ",Pt.default.createElement(un.Text,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),Pt.default.createElement(un.Box,{marginLeft:1},Pt.default.createElement(un.Text,null,"Press ",Pt.default.createElement(un.Text,{bold:!0,color:"cyanBright"},"")," to abort.")))),c=()=>Pt.default.createElement(Pt.default.Fragment,null,Pt.default.createElement(un.Box,{width:15},Pt.default.createElement(un.Text,{bold:!0,underline:!0,color:"gray"},"Owner")),Pt.default.createElement(un.Box,{width:11},Pt.default.createElement(un.Text,{bold:!0,underline:!0,color:"gray"},"Version")),Pt.default.createElement(un.Box,{width:10},Pt.default.createElement(un.Text,{bold:!0,underline:!0,color:"gray"},"Downloads"))),g=()=>Pt.default.createElement(un.Box,{width:17},Pt.default.createElement(un.Text,{bold:!0,underline:!0,color:"gray"},"Target")),t=({hit:$,active:h})=>{let[re,ce]=Ec($.name,null);zf({active:h},(Se,me)=>{if(me.name!=="space")return;if(!re){ce(od[0]);return}let De=od.indexOf(re)+1;De===od.length?ce(null):ce(od[De])},[re,ce]);let Q=Tc.structUtils.parseIdent($.name),oe=Tc.structUtils.prettyIdent(u,Q);return Pt.default.createElement(un.Box,null,Pt.default.createElement(un.Box,{width:45},Pt.default.createElement(un.Text,{bold:!0,wrap:"wrap"},oe)),Pt.default.createElement(un.Box,{width:14,marginLeft:1},Pt.default.createElement(un.Text,{bold:!0,wrap:"truncate"},$.owner.name)),Pt.default.createElement(un.Box,{width:10,marginLeft:1},Pt.default.createElement(un.Text,{italic:!0,wrap:"truncate"},$.version)),Pt.default.createElement(un.Box,{width:16,marginLeft:1},Pt.default.createElement(un.Text,null,$.humanDownloadsLast30Days)))},C=({name:$,active:h})=>{let[re]=Ec($,null),ce=Tc.structUtils.parseIdent($);return Pt.default.createElement(un.Box,null,Pt.default.createElement(un.Box,{width:47},Pt.default.createElement(un.Text,{bold:!0}," - ",Tc.structUtils.prettyIdent(u,ce))),od.map(Q=>Pt.default.createElement(un.Box,{key:Q,width:14,marginLeft:1},Pt.default.createElement(un.Text,null," ",Pt.default.createElement(om,{active:re===Q})," ",Pt.default.createElement(un.Text,{bold:!0},Q)))))},A=()=>Pt.default.createElement(un.Box,{marginTop:1},Pt.default.createElement(un.Text,null,"Powered by Algolia.")),D=await dm(({useSubmit:$})=>{let h=Ec();$(h);let re=Array.from(h.keys()).filter(Le=>h.get(Le)!==null),[ce,Q]=(0,Pt.useState)(""),[oe,Se]=(0,Pt.useState)(0),[me,De]=(0,Pt.useState)([]),J=Le=>{Le.match(/\t| /)||Q(Le)},Te=async()=>{Se(0);let Le=await aw(ce);Le.query===ce&&De(Le.hits)},Oe=async()=>{let Le=await aw(ce,oe+1);Le.query===ce&&Le.page-1===oe&&(Se(Le.page),De([...me,...Le.hits]))};return(0,Pt.useEffect)(()=>{ce?Te():De([])},[ce]),Pt.default.createElement(un.Box,{flexDirection:"column"},Pt.default.createElement(f,null),Pt.default.createElement(un.Box,{flexDirection:"row",marginTop:1},Pt.default.createElement(un.Text,{bold:!0},"Search: "),Pt.default.createElement(un.Box,{width:41},Pt.default.createElement(ET.default,{value:ce,onChange:J,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),Pt.default.createElement(c,null)),me.length?Pt.default.createElement(fm,{radius:2,loop:!1,children:me.map(Le=>Pt.default.createElement(t,{key:Le.name,hit:Le,active:!1})),willReachEnd:Oe}):Pt.default.createElement(un.Text,{color:"gray"},"Start typing..."),Pt.default.createElement(un.Box,{flexDirection:"row",marginTop:1},Pt.default.createElement(un.Box,{width:49},Pt.default.createElement(un.Text,{bold:!0},"Selected:")),Pt.default.createElement(g,null)),re.length?re.map(Le=>Pt.default.createElement(C,{key:Le,name:Le,active:!1})):Pt.default.createElement(un.Text,{color:"gray"},"No selected packages..."),Pt.default.createElement(A,null))},{});if(typeof D=="undefined")return 1;let L=Array.from(D.keys()).filter($=>D.get($)==="regular"),N=Array.from(D.keys()).filter($=>D.get($)==="dev"),j=Array.from(D.keys()).filter($=>D.get($)==="peer");return L.length&&await this.cli.run(["add",...L]),N.length&&await this.cli.run(["add","--dev",...N]),j&&await this.cli.run(["add","--peer",...j]),0}};ud.paths=[["search"]],ud.usage=DT.Command.Usage({category:"Interactive commands",description:"open the search interface",details:` + This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry. + `,examples:[["Open the search window","yarn search"]]});var ST=ud;var Im=Er(require("@yarnpkg/cli")),W0=Er(require("@yarnpkg/core"));var sd=Er(ys()),bf=Er(lr());var CT=Er(ys()),TT=Er(lr()),wm=({length:i,active:u})=>{if(i===0)return null;let f=i>1?` ${"-".repeat(i-1)}`:" ";return TT.default.createElement(CT.Text,{dimColor:!u},f)};var xT=function({active:i,skewer:u,options:f,value:c,onChange:g,sizes:t=[]}){let C=f.filter(({label:x})=>!!x).map(({value:x})=>x),A=f.findIndex(x=>x.value===c&&x.label!="");return lm(c,C,{active:i,minus:"left",plus:"right",set:g}),bf.default.createElement(bf.default.Fragment,null,f.map(({label:x},D)=>{let L=D===A,N=t[D]-1||0,j=x.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),$=Math.max(0,N-j.length-2);return x?bf.default.createElement(sd.Box,{key:x,width:N,marginLeft:1},bf.default.createElement(sd.Text,{wrap:"truncate"},bf.default.createElement(om,{active:L})," ",x),u?bf.default.createElement(wm,{active:i,length:$}):null):bf.default.createElement(sd.Box,{key:`spacer-${D}`,width:N,marginLeft:1})}))};var c9=Er(require("@yarnpkg/plugin-essentials")),a9=Er(require("clipanion")),d9=Er(f9()),tr=Er(ys()),pn=Er(lr()),p9=Er(require("semver")),h9=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/,WH=10,md=class extends Im.BaseCommand{async execute(){let u=await W0.Configuration.find(this.context.cwd,this.context.plugins),{project:f,workspace:c}=await W0.Project.find(u,this.context.cwd),g=await W0.Cache.find(u);if(!c)throw new Im.WorkspaceRequiredError(f.cwd,this.context.cwd);await f.restoreInstallState({restoreResolutions:!1});let t=(Q,oe)=>{let Se=(0,d9.diffWords)(Q,oe),me="";for(let De of Se)De.added?me+=W0.formatUtils.pretty(u,De.value,"green"):De.removed||(me+=De.value);return me},C=(Q,oe)=>{if(Q===oe)return oe;let Se=W0.structUtils.parseRange(Q),me=W0.structUtils.parseRange(oe),De=Se.selector.match(h9),J=me.selector.match(h9);if(!De||!J)return t(Q,oe);let Te=["gray","red","yellow","green","magenta"],Oe=null,Le="";for(let ot=1;ot{let me=await c9.suggestUtils.fetchDescriptorFrom(Q,Se,{project:f,cache:g,preserveModifier:oe,workspace:c});return me!==null?me.range:Q.range},x=async Q=>{let oe=p9.default.valid(Q.range)?`^${Q.range}`:Q.range,[Se,me]=await Promise.all([A(Q,Q.range,oe).catch(()=>null),A(Q,Q.range,"latest").catch(()=>null)]),De=[{value:null,label:Q.range}];return Se&&Se!==Q.range?De.push({value:Se,label:C(Q.range,Se)}):De.push({value:null,label:""}),me&&me!==Se&&me!==Q.range?De.push({value:me,label:C(Q.range,me)}):De.push({value:null,label:""}),De},D=()=>pn.default.createElement(tr.Box,{flexDirection:"row"},pn.default.createElement(tr.Box,{flexDirection:"column",width:49},pn.default.createElement(tr.Box,{marginLeft:1},pn.default.createElement(tr.Text,null,"Press ",pn.default.createElement(tr.Text,{bold:!0,color:"cyanBright"},""),"/",pn.default.createElement(tr.Text,{bold:!0,color:"cyanBright"},"")," to select packages.")),pn.default.createElement(tr.Box,{marginLeft:1},pn.default.createElement(tr.Text,null,"Press ",pn.default.createElement(tr.Text,{bold:!0,color:"cyanBright"},""),"/",pn.default.createElement(tr.Text,{bold:!0,color:"cyanBright"},"")," to select versions."))),pn.default.createElement(tr.Box,{flexDirection:"column"},pn.default.createElement(tr.Box,{marginLeft:1},pn.default.createElement(tr.Text,null,"Press ",pn.default.createElement(tr.Text,{bold:!0,color:"cyanBright"},"")," to install.")),pn.default.createElement(tr.Box,{marginLeft:1},pn.default.createElement(tr.Text,null,"Press ",pn.default.createElement(tr.Text,{bold:!0,color:"cyanBright"},"")," to abort.")))),L=()=>pn.default.createElement(tr.Box,{flexDirection:"row",paddingTop:1,paddingBottom:1},pn.default.createElement(tr.Box,{width:50},pn.default.createElement(tr.Text,{bold:!0},pn.default.createElement(tr.Text,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),pn.default.createElement(tr.Box,{width:17},pn.default.createElement(tr.Text,{bold:!0,underline:!0,color:"gray"},"Current")),pn.default.createElement(tr.Box,{width:17},pn.default.createElement(tr.Text,{bold:!0,underline:!0,color:"gray"},"Range")),pn.default.createElement(tr.Box,{width:17},pn.default.createElement(tr.Text,{bold:!0,underline:!0,color:"gray"},"Latest"))),N=({active:Q,descriptor:oe,suggestions:Se})=>{let[me,De]=Ec(oe.descriptorHash,null),J=W0.structUtils.stringifyIdent(oe),Te=Math.max(0,45-J.length);return pn.default.createElement(pn.default.Fragment,null,pn.default.createElement(tr.Box,null,pn.default.createElement(tr.Box,{width:45},pn.default.createElement(tr.Text,{bold:!0},W0.structUtils.prettyIdent(u,oe)),pn.default.createElement(wm,{active:Q,length:Te})),Se!==null?pn.default.createElement(xT,{active:Q,options:Se,value:me,skewer:!0,onChange:De,sizes:[17,17,17]}):pn.default.createElement(tr.Box,{marginLeft:2},pn.default.createElement(tr.Text,{color:"gray"},"Fetching suggestions..."))))},j=({dependencies:Q})=>{let[oe,Se]=(0,pn.useState)(null),me=(0,pn.useRef)(!0);return(0,pn.useEffect)(()=>()=>{me.current=!1}),(0,pn.useEffect)(()=>{Promise.all(Q.map(De=>x(De))).then(De=>{let J=Q.map((Te,Oe)=>{let Le=De[Oe];return[Te,Le]}).filter(([Te,Oe])=>Oe.filter(Le=>Le.label!=="").length>1);me.current&&Se(J)})},[]),oe?oe.length?pn.default.createElement(fm,{radius:WH,children:oe.map(([De,J])=>pn.default.createElement(N,{key:De.descriptorHash,active:!1,descriptor:De,suggestions:J}))}):pn.default.createElement(tr.Text,null,"No upgrades found"):pn.default.createElement(tr.Text,null,"Fetching suggestions...")},h=await dm(({useSubmit:Q})=>{Q(Ec());let oe=new Map;for(let me of f.workspaces)for(let De of["dependencies","devDependencies"])for(let J of me.manifest[De].values())f.tryWorkspaceByDescriptor(J)===null&&oe.set(J.descriptorHash,J);let Se=W0.miscUtils.sortMap(oe.values(),me=>W0.structUtils.stringifyDescriptor(me));return pn.default.createElement(tr.Box,{flexDirection:"column"},pn.default.createElement(D,null),pn.default.createElement(L,null),pn.default.createElement(j,{dependencies:Se}))},{});if(typeof h=="undefined")return 1;let re=!1;for(let Q of f.workspaces)for(let oe of["dependencies","devDependencies"]){let Se=Q.manifest[oe];for(let me of Se.values()){let De=h.get(me.descriptorHash);typeof De!="undefined"&&De!==null&&(Se.set(me.identHash,W0.structUtils.makeDescriptor(me,De)),re=!0)}}return re?(await W0.StreamReport.start({configuration:u,stdout:this.context.stdout,includeLogs:!this.context.quiet},async Q=>{await f.install({cache:g,report:Q})})).exitCode():0}};md.paths=[["upgrade-interactive"]],md.usage=a9.Command.Usage({category:"Interactive commands",description:"open the upgrade interface",details:` + This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade. + `,examples:[["Open the upgrade window","yarn upgrade-interactive"]]});var m9=md;var bH={commands:[ST,m9]},GH=bH;return HH;})(); +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +/** @license React v0.0.0-experimental-51a3aa6af + * react-debug-tools.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +/** @license React v0.0.0-experimental-51a3aa6af + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +/** @license React v0.0.0-experimental-51a3aa6af + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +/** @license React v0.18.0 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +/** @license React v0.24.0 + * react-reconciler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +/** @license React v16.13.1 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +return plugin; +} +}; diff --git a/.yarn/releases/yarn-3.1.0.cjs b/.yarn/releases/yarn-3.1.0.cjs new file mode 100644 index 0000000..8584827 --- /dev/null +++ b/.yarn/releases/yarn-3.1.0.cjs @@ -0,0 +1,768 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var Mfe=Object.create,Vf=Object.defineProperty,Ofe=Object.defineProperties,Kfe=Object.getOwnPropertyDescriptor,Ufe=Object.getOwnPropertyDescriptors,Hfe=Object.getOwnPropertyNames,hI=Object.getOwnPropertySymbols,Gfe=Object.getPrototypeOf,eb=Object.prototype.hasOwnProperty,lO=Object.prototype.propertyIsEnumerable;var cO=(t,e,r)=>e in t?Vf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,P=(t,e)=>{for(var r in e||(e={}))eb.call(e,r)&&cO(t,r,e[r]);if(hI)for(var r of hI(e))lO.call(e,r)&&cO(t,r,e[r]);return t},_=(t,e)=>Ofe(t,Ufe(e)),jfe=t=>Vf(t,"__esModule",{value:!0});var qr=(t,e)=>{var r={};for(var i in t)eb.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&hI)for(var i of hI(t))e.indexOf(i)<0&&lO.call(t,i)&&(r[i]=t[i]);return r},Yfe=(t,e)=>()=>(t&&(e=t(t=0)),e),I=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),it=(t,e)=>{for(var r in e)Vf(t,r,{get:e[r],enumerable:!0})},qfe=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Hfe(e))!eb.call(t,i)&&i!=="default"&&Vf(t,i,{get:()=>e[i],enumerable:!(r=Kfe(e,i))||r.enumerable});return t},ie=t=>qfe(jfe(Vf(t!=null?Mfe(Gfe(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var MO=I((i$e,FO)=>{FO.exports=NO;NO.sync=Ahe;var LO=require("fs");function lhe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{OO.exports=KO;KO.sync=che;var UO=require("fs");function KO(t,e,r){UO.stat(t,function(i,n){r(i,i?!1:HO(n,e))})}function che(t,e){return HO(UO.statSync(t),e)}function HO(t,e){return t.isFile()&&uhe(t,e)}function uhe(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=r&c||r&l&&n===o||r&a&&i===s||r&u&&s===0;return g}});var YO=I((o$e,jO)=>{var s$e=require("fs"),xI;process.platform==="win32"||global.TESTING_WINDOWS?xI=MO():xI=GO();jO.exports=db;db.sync=ghe;function db(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){db(t,e||{},function(s,o){s?n(s):i(o)})})}xI(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function ghe(t,e){try{return xI.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var XO=I((a$e,qO)=>{var eu=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",JO=require("path"),fhe=eu?";":":",WO=YO(),zO=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),VO=(t,e)=>{let r=e.colon||fhe,i=t.match(/\//)||eu&&t.match(/\\/)?[""]:[...eu?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=eu?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=eu?n.split(r):[""];return eu&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},_O=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=VO(t,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(zO(t));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=JO.join(h,t),d=!h&&/^\.[\\\/]/.test(t)?t.slice(0,2)+p:p;u(l(d,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];WO(c+p,{pathExt:s},(d,m)=>{if(!d&&m)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},hhe=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=VO(t,e),s=[];for(let o=0;o{"use strict";var ZO=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Cb.exports=ZO;Cb.exports.default=ZO});var iK=I((l$e,eK)=>{"use strict";var tK=require("path"),phe=XO(),dhe=$O();function rK(t,e){let r=t.options.env||process.env,i=process.cwd(),n=t.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch(a){}let o;try{o=phe.sync(t.command,{path:r[dhe({env:r})],pathExt:e?tK.delimiter:void 0})}catch(a){}finally{s&&process.chdir(i)}return o&&(o=tK.resolve(n?t.options.cwd:"",o)),o}function Che(t){return rK(t)||rK(t,!0)}eK.exports=Che});var nK=I((c$e,mb)=>{"use strict";var Ib=/([()\][%!^"`<>&|;, *?])/g;function mhe(t){return t=t.replace(Ib,"^$1"),t}function Ihe(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(Ib,"^$1"),e&&(t=t.replace(Ib,"^$1")),t}mb.exports.command=mhe;mb.exports.argument=Ihe});var oK=I((u$e,sK)=>{"use strict";sK.exports=/^#!(.*)/});var AK=I((g$e,aK)=>{"use strict";var Ehe=oK();aK.exports=(t="")=>{let e=t.match(Ehe);if(!e)return null;let[r,i]=e[0].replace(/#! ?/,"").split(" "),n=r.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var cK=I((f$e,lK)=>{"use strict";var Eb=require("fs"),yhe=AK();function whe(t){let e=150,r=Buffer.alloc(e),i;try{i=Eb.openSync(t,"r"),Eb.readSync(i,r,0,e,0),Eb.closeSync(i)}catch(n){}return yhe(r.toString())}lK.exports=whe});var hK=I((h$e,uK)=>{"use strict";var Bhe=require("path"),gK=iK(),fK=nK(),Qhe=cK(),bhe=process.platform==="win32",vhe=/\.(?:com|exe)$/i,She=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function xhe(t){t.file=gK(t);let e=t.file&&Qhe(t.file);return e?(t.args.unshift(t.file),t.command=e,gK(t)):t.file}function khe(t){if(!bhe)return t;let e=xhe(t),r=!vhe.test(e);if(t.options.forceShell||r){let i=She.test(e);t.command=Bhe.normalize(t.command),t.command=fK.command(t.command),t.args=t.args.map(s=>fK.argument(s,i));let n=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${n}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function Phe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let i={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?i:khe(i)}uK.exports=Phe});var CK=I((p$e,pK)=>{"use strict";var yb=process.platform==="win32";function wb(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function Dhe(t,e){if(!yb)return;let r=t.emit;t.emit=function(i,n){if(i==="exit"){let s=dK(n,e,"spawn");if(s)return r.call(t,"error",s)}return r.apply(t,arguments)}}function dK(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawn"):null}function Rhe(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawnSync"):null}pK.exports={hookChildProcess:Dhe,verifyENOENT:dK,verifyENOENTSync:Rhe,notFoundError:wb}});var bb=I((d$e,tu)=>{"use strict";var mK=require("child_process"),Bb=hK(),Qb=CK();function IK(t,e,r){let i=Bb(t,e,r),n=mK.spawn(i.command,i.args,i.options);return Qb.hookChildProcess(n,i),n}function Fhe(t,e,r){let i=Bb(t,e,r),n=mK.spawnSync(i.command,i.args,i.options);return n.error=n.error||Qb.verifyENOENTSync(n.status,i),n}tu.exports=IK;tu.exports.spawn=IK;tu.exports.sync=Fhe;tu.exports._parse=Bb;tu.exports._enoent=Qb});var yK=I((y$e,EK)=>{"use strict";EK.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Nb=I((w$e,wK)=>{var gh=yK(),BK={};for(let t of Object.keys(gh))BK[gh[t]]=t;var Xe={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};wK.exports=Xe;for(let t of Object.keys(Xe)){if(!("channels"in Xe[t]))throw new Error("missing channels property: "+t);if(!("labels"in Xe[t]))throw new Error("missing channel labels property: "+t);if(Xe[t].labels.length!==Xe[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=Xe[t];delete Xe[t].channels,delete Xe[t].labels,Object.defineProperty(Xe[t],"channels",{value:e}),Object.defineProperty(Xe[t],"labels",{value:r})}Xe.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(e,r,i),s=Math.max(e,r,i),o=s-n,a,l;s===n?a=0:e===s?a=(r-i)/o:r===s?a=2+(i-e)/o:i===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+s)/2;return s===n?l=0:c<=.5?l=o/(s+n):l=o/(2-s-n),[a,l*100,c*100]};Xe.rgb.hsv=function(t){let e,r,i,n,s,o=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),g=function(f){return(c-f)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,e=g(o),r=g(a),i=g(l),o===c?n=i-r:a===c?n=1/3+e-i:l===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};Xe.rgb.hwb=function(t){let e=t[0],r=t[1],i=t[2],n=Xe.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,i));return i=1-1/255*Math.max(e,Math.max(r,i)),[n,s*100,i*100]};Xe.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(1-e,1-r,1-i),s=(1-e-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,a=(1-i-n)/(1-n)||0;return[s*100,o*100,a*100,n*100]};function The(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Xe.rgb.keyword=function(t){let e=BK[t];if(e)return e;let r=Infinity,i;for(let n of Object.keys(gh)){let s=gh[n],o=The(t,s);o.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=e*.4124+r*.3576+i*.1805,s=e*.2126+r*.7152+i*.0722,o=e*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};Xe.rgb.lab=function(t){let e=Xe.rgb.xyz(t),r=e[0],i=e[1],n=e[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),a=200*(i-n);return[s,o,a]};Xe.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let a=2*i-n,l=[0,0,0];for(let c=0;c<3;c++)s=e+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=a+(n-a)*6*s:2*s<1?o=n:3*s<2?o=a+(n-a)*(2/3-s)*6:o=a,l[c]=o*255;return l};Xe.hsl.hsv=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,a=i===0?2*n/(s+n):2*r/(i+r);return[e,a*100,o*100]};Xe.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-r),a=255*i*(1-r*s),l=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,l,o];case 1:return[a,i,o];case 2:return[o,i,l];case 3:return[o,a,i];case 4:return[l,o,i];case 5:return[i,o,a]}};Xe.hsv.hsl=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let a=(2-r)*n;return s=r*n,s/=a<=1?a:2-a,s=s||0,o/=2,[e,s*100,o*100]};Xe.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*e),a=1-i;s=6*e-o,(o&1)!=0&&(s=1-s);let l=r+s*(a-r),c,u,g;switch(o){default:case 6:case 0:c=a,u=l,g=r;break;case 1:c=l,u=a,g=r;break;case 2:c=r,u=a,g=l;break;case 3:c=r,u=l,g=a;break;case 4:c=l,u=r,g=a;break;case 5:c=a,u=r,g=l;break}return[c*255,u*255,g*255]};Xe.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n=t[3]/100,s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,a*255]};Xe.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n,s,o;return n=e*3.2406+r*-1.5372+i*-.4986,s=e*-.9689+r*1.8758+i*.0415,o=e*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};Xe.xyz.lab=function(t){let e=t[0],r=t[1],i=t[2];e/=95.047,r/=100,i/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(e-r),o=200*(r-i);return[n,s,o]};Xe.lab.xyz=function(t){let e=t[0],r=t[1],i=t[2],n,s,o;s=(e+16)/116,n=r/500+s,o=s-i/200;let a=s**3,l=n**3,c=o**3;return s=a>.008856?a:(s-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};Xe.lab.lch=function(t){let e=t[0],r=t[1],i=t[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[e,o,n]};Xe.lch.lab=function(t){let e=t[0],r=t[1],n=t[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[e,s,o]};Xe.rgb.ansi16=function(t,e=null){let[r,i,n]=t,s=e===null?Xe.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};Xe.hsv.ansi16=function(t){return Xe.rgb.ansi16(Xe.hsv.rgb(t),t[2])};Xe.rgb.ansi256=function(t){let e=t[0],r=t[1],i=t[2];return e===r&&r===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};Xe.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,i=(e&1)*r*255,n=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[i,n,s]};Xe.ansi256.rgb=function(t){if(t>=232){let s=(t-232)*10+8;return[s,s,s]}t-=16;let e,r=Math.floor(t/36)/5*255,i=Math.floor((e=t%36)/6)/5*255,n=e%6/5*255;return[r,i,n]};Xe.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};Xe.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(a=>a+a).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};Xe.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.max(Math.max(e,r),i),s=Math.min(Math.min(e,r),i),o=n-s,a,l;return o<1?a=s/(1-o):a=0,o<=0?l=0:n===e?l=(r-i)/o%6:n===r?l=2+(i-e)/o:l=4+(e-r)/o,l/=6,l%=1,[l*360,o*100,a*100]};Xe.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=r<.5?2*e*r:2*e*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[t[0],i*100,n*100]};Xe.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=e*r,n=0;return i<1&&(n=(r-i)/(1-i)),[t[0],i*100,n*100]};Xe.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=e%1*6,o=s%1,a=1-o,l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-r)*i,[(r*n[0]+l)*255,(r*n[1]+l)*255,(r*n[2]+l)*255]};Xe.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e),n=0;return i>0&&(n=e/i),[t[0],n*100,i*100]};Xe.hcg.hsl=function(t){let e=t[1]/100,i=t[2]/100*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[t[0],n*100,i*100]};Xe.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e);return[t[0],(i-e)*100,(1-i)*100]};Xe.hwb.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=1-r,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[t[0],n*100,s*100]};Xe.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Xe.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Xe.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Xe.gray.hsl=function(t){return[0,0,t[0]]};Xe.gray.hsv=Xe.gray.hsl;Xe.gray.hwb=function(t){return[0,100,t[0]]};Xe.gray.cmyk=function(t){return[0,0,0,t[0]]};Xe.gray.lab=function(t){return[t[0],0,0]};Xe.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,i=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(i.length)+i};Xe.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var bK=I((B$e,QK)=>{var kI=Nb();function Mhe(){let t={},e=Object.keys(kI);for(let r=e.length,i=0;i{var Lb=Nb(),Hhe=bK(),ru={},Ghe=Object.keys(Lb);function jhe(t){let e=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function Yhe(t){let e=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=t(r);if(typeof n=="object")for(let s=n.length,o=0;o{ru[t]={},Object.defineProperty(ru[t],"channels",{value:Lb[t].channels}),Object.defineProperty(ru[t],"labels",{value:Lb[t].labels});let e=Hhe(t);Object.keys(e).forEach(i=>{let n=e[i];ru[t][i]=Yhe(n),ru[t][i].raw=jhe(n)})});vK.exports=ru});var FK=I((b$e,xK)=>{"use strict";var kK=(t,e)=>(...r)=>`[${t(...r)+e}m`,PK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};5;${i}m`},DK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};2;${i[0]};${i[1]};${i[2]}m`},PI=t=>t,RK=(t,e,r)=>[t,e,r],iu=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let i=r();return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},Tb,nu=(t,e,r,i)=>{Tb===void 0&&(Tb=SK());let n=i?10:0,s={};for(let[o,a]of Object.entries(Tb)){let l=o==="ansi16"?"ansi":o;o===e?s[l]=t(r,n):typeof a=="object"&&(s[l]=t(a[e],n))}return s};function qhe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,i]of Object.entries(e)){for(let[n,s]of Object.entries(i))e[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=e[n],t.set(s[0],s[1]);Object.defineProperty(e,r,{value:i,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="",e.bgColor.close="",iu(e.color,"ansi",()=>nu(kK,"ansi16",PI,!1)),iu(e.color,"ansi256",()=>nu(PK,"ansi256",PI,!1)),iu(e.color,"ansi16m",()=>nu(DK,"rgb",RK,!1)),iu(e.bgColor,"ansi",()=>nu(kK,"ansi16",PI,!0)),iu(e.bgColor,"ansi256",()=>nu(PK,"ansi256",PI,!0)),iu(e.bgColor,"ansi16m",()=>nu(DK,"rgb",RK,!0)),e}Object.defineProperty(xK,"exports",{enumerable:!0,get:qhe})});var LK=I((v$e,NK)=>{"use strict";NK.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Jhe=require("os"),MK=require("tty"),Wn=LK(),{env:Wr}=process,tA;Wn("no-color")||Wn("no-colors")||Wn("color=false")||Wn("color=never")?tA=0:(Wn("color")||Wn("colors")||Wn("color=true")||Wn("color=always"))&&(tA=1);"FORCE_COLOR"in Wr&&(Wr.FORCE_COLOR==="true"?tA=1:Wr.FORCE_COLOR==="false"?tA=0:tA=Wr.FORCE_COLOR.length===0?1:Math.min(parseInt(Wr.FORCE_COLOR,10),3));function Mb(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Ob(t,e){if(tA===0)return 0;if(Wn("color=16m")||Wn("color=full")||Wn("color=truecolor"))return 3;if(Wn("color=256"))return 2;if(t&&!e&&tA===void 0)return 0;let r=tA||0;if(Wr.TERM==="dumb")return r;if(process.platform==="win32"){let i=Jhe.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Wr)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(i=>i in Wr)||Wr.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Wr)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Wr.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Wr)return 1;if(Wr.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Wr){let i=parseInt((Wr.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Wr.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Wr.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Wr.TERM)||"COLORTERM"in Wr?1:r}function Whe(t){let e=Ob(t,t&&t.isTTY);return Mb(e)}TK.exports={supportsColor:Whe,stdout:Mb(Ob(!0,MK.isatty(1))),stderr:Mb(Ob(!0,MK.isatty(2)))}});var UK=I((x$e,KK)=>{"use strict";var zhe=(t,e,r)=>{let i=t.indexOf(e);if(i===-1)return t;let n=e.length,s=0,o="";do o+=t.substr(s,i-s)+e+r,s=i+n,i=t.indexOf(e,s);while(i!==-1);return o+=t.substr(s),o},Vhe=(t,e,r,i)=>{let n=0,s="";do{let o=t[i-1]==="\r";s+=t.substr(n,(o?i-1:i)-n)+e+(o?`\r +`:` +`)+r,n=i+1,i=t.indexOf(` +`,n)}while(i!==-1);return s+=t.substr(n),s};KK.exports={stringReplaceAll:zhe,stringEncaseCRLFWithFirstIndex:Vhe}});var qK=I((k$e,HK)=>{"use strict";var _he=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,GK=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Xhe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Zhe=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,$he=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function jK(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):$he.get(t)||t}function epe(t,e){let r=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(Xhe))r.push(n[2].replace(Zhe,(a,l,c)=>l?jK(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`)}return r}function tpe(t){GK.lastIndex=0;let e=[],r;for(;(r=GK.exec(t))!==null;){let i=r[1];if(r[2]){let n=epe(i,r[2]);e.push([i].concat(n))}else e.push([i])}return e}function YK(t,e){let r={};for(let n of e)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=t;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}HK.exports=(t,e)=>{let r=[],i=[],n=[];if(e.replace(_he,(s,o,a,l,c,u)=>{if(o)n.push(jK(o));else if(l){let g=n.join("");n=[],i.push(r.length===0?g:YK(t,r)(g)),r.push({inverse:a,styles:tpe(l)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(YK(t,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var jb=I((P$e,JK)=>{"use strict";var fh=FK(),{stdout:Kb,stderr:Ub}=OK(),{stringReplaceAll:rpe,stringEncaseCRLFWithFirstIndex:ipe}=UK(),WK=["ansi","ansi","ansi256","ansi16m"],su=Object.create(null),npe=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=Kb?Kb.level:0;t.level=e.level===void 0?r:e.level},zK=class{constructor(e){return VK(e)}},VK=t=>{let e={};return npe(e,t),e.template=(...r)=>spe(e.template,...r),Object.setPrototypeOf(e,DI.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=zK,e.template};function DI(t){return VK(t)}for(let[t,e]of Object.entries(fh))su[t]={get(){let r=RI(this,Hb(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};su.visible={get(){let t=RI(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var _K=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of _K)su[t]={get(){let{level:e}=this;return function(...r){let i=Hb(fh.color[WK[e]][t](...r),fh.color.close,this._styler);return RI(this,i,this._isEmpty)}}};for(let t of _K){let e="bg"+t[0].toUpperCase()+t.slice(1);su[e]={get(){let{level:r}=this;return function(...i){let n=Hb(fh.bgColor[WK[r]][t](...i),fh.bgColor.close,this._styler);return RI(this,n,this._isEmpty)}}}}var ope=Object.defineProperties(()=>{},_(P({},su),{level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}})),Hb=(t,e,r)=>{let i,n;return r===void 0?(i=t,n=e):(i=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:i,closeAll:n,parent:r}},RI=(t,e,r)=>{let i=(...n)=>ape(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=ope,i._generator=t,i._styler=e,i._isEmpty=r,i},ape=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:i,closeAll:n}=r;if(e.indexOf("")!==-1)for(;r!==void 0;)e=rpe(e,r.close,r.open),r=r.parent;let s=e.indexOf(` +`);return s!==-1&&(e=ipe(e,n,i,s)),i+e+n},Gb,spe=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let i=e.slice(1),n=[r.raw[0]];for(let s=1;s{XK.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var ml=I(Dn=>{"use strict";var $K=ZK(),ro=process.env;Object.defineProperty(Dn,"_vendors",{value:$K.map(function(t){return t.constant})});Dn.name=null;Dn.isPR=null;$K.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(i){return e1(i)});if(Dn[t.constant]=r,r)switch(Dn.name=t.name,typeof t.pr){case"string":Dn.isPR=!!ro[t.pr];break;case"object":"env"in t.pr?Dn.isPR=t.pr.env in ro&&ro[t.pr.env]!==t.pr.ne:"any"in t.pr?Dn.isPR=t.pr.any.some(function(i){return!!ro[i]}):Dn.isPR=e1(t.pr);break;default:Dn.isPR=null}});Dn.isCI=!!(ro.CI||ro.CONTINUOUS_INTEGRATION||ro.BUILD_NUMBER||ro.RUN_ID||Dn.name);function e1(t){return typeof t=="string"?!!ro[t]:Object.keys(t).every(function(e){return ro[e]===t[e]})}});var FI=I(zn=>{"use strict";zn.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;zn.find=(t,e)=>t.nodes.find(r=>r.type===e);zn.exceedsLimit=(t,e,r=1,i)=>i===!1||!zn.isInteger(t)||!zn.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=i;zn.escapeNode=(t,e=0,r)=>{let i=t.nodes[e];!i||(r&&i.type===r||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};zn.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0==0?(t.invalid=!0,!0):!1;zn.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0==0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;zn.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;zn.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);zn.flatten=(...t)=>{let e=[],r=i=>{for(let n=0;n{"use strict";var r1=FI();t1.exports=(t,e={})=>{let r=(i,n={})=>{let s=e.escapeInvalid&&r1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&r1.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=r(l);return a};return r(t)}});var n1=I((L$e,i1)=>{"use strict";i1.exports=function(t){return typeof t=="number"?t-t==0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var f1=I((T$e,s1)=>{"use strict";var o1=n1(),Il=(t,e,r)=>{if(o1(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(o1(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i=P({relaxZeros:!0},r);typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=t+":"+e+"="+n+s+o+a;if(Il.cache.hasOwnProperty(l))return Il.cache[l].result;let c=Math.min(t,e),u=Math.max(t,e);if(Math.abs(c-u)===1){let d=t+"|"+e;return i.capture?`(${d})`:i.wrap===!1?d:`(?:${d})`}let g=A1(t)||A1(e),f={min:t,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let d=u<0?Math.abs(u):1;p=a1(d,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=a1(c,u,f,i)),f.negatives=p,f.positives=h,f.result=Ape(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),Il.cache[l]=f,f.result};function Ape(t,e,r){let i=Yb(t,e,"-",!1,r)||[],n=Yb(e,t,"",!1,r)||[],s=Yb(t,e,"-?",!0,r)||[];return i.concat(s).concat(n).join("|")}function cpe(t,e){let r=1,i=1,n=l1(t,r),s=new Set([e]);for(;t<=n&&n<=e;)s.add(n),r+=1,n=l1(t,r);for(n=c1(e+1,i)-1;t1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+u1(a.count),o=c+1;continue}r.isPadded&&(g=hpe(c,r,i)),u.string=g+u.pattern+u1(u.count),s.push(u),o=c+1,a=u}return s}function Yb(t,e,r,i,n){let s=[];for(let o of t){let{string:a}=o;!i&&!g1(e,"string",a)&&s.push(r+a),i&&g1(e,"string",a)&&s.push(r+a)}return s}function upe(t,e){let r=[];for(let i=0;ie?1:e>t?-1:0}function g1(t,e,r){return t.some(i=>i[e]===r)}function l1(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function c1(t,e){return t-t%Math.pow(10,e)}function u1(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function gpe(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function A1(t){return/^-?(0+)\d/.test(t)}function hpe(t,e,r){if(!e.isPadded)return t;let i=Math.abs(e.maxLen-String(t).length),n=r.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}Il.cache={};Il.clearCache=()=>Il.cache={};s1.exports=Il});var Wb=I((M$e,h1)=>{"use strict";var ppe=require("util"),p1=f1(),d1=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),dpe=t=>e=>t===!0?Number(e):String(e),qb=t=>typeof t=="number"||typeof t=="string"&&t!=="",ph=t=>Number.isInteger(+t),Jb=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},Cpe=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,mpe=(t,e,r)=>{if(e>0){let i=t[0]==="-"?"-":"";i&&(t=t.slice(1)),t=i+t.padStart(i?e-1:e,"0")}return r===!1?String(t):t},C1=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((o,a)=>oa?1:0),t.positives.sort((o,a)=>oa?1:0);let r=e.capture?"":"?:",i="",n="",s;return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(n=`-(${r}${t.negatives.join("|")})`),i&&n?s=`${i}|${n}`:s=i||n,e.wrap?`(${r}${s})`:s},m1=(t,e,r,i)=>{if(r)return p1(t,e,P({wrap:!1},i));let n=String.fromCharCode(t);if(t===e)return n;let s=String.fromCharCode(e);return`[${n}-${s}]`},I1=(t,e,r)=>{if(Array.isArray(t)){let i=r.wrap===!0,n=r.capture?"":"?:";return i?`(${n}${t.join("|")})`:t.join("|")}return p1(t,e,r)},E1=(...t)=>new RangeError("Invalid range arguments: "+ppe.inspect(...t)),y1=(t,e,r)=>{if(r.strictRanges===!0)throw E1([t,e]);return[]},Epe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},ype=(t,e,r=1,i={})=>{let n=Number(t),s=Number(e);if(!Number.isInteger(n)||!Number.isInteger(s)){if(i.strictRanges===!0)throw E1([t,e]);return[]}n===0&&(n=0),s===0&&(s=0);let o=n>s,a=String(t),l=String(e),c=String(r);r=Math.max(Math.abs(r),1);let u=Jb(a)||Jb(l)||Jb(c),g=u?Math.max(a.length,l.length,c.length):0,f=u===!1&&Cpe(t,e,i)===!1,h=i.transform||dpe(f);if(i.toRegex&&r===1)return m1(C1(t,g),C1(e,g),!0,i);let p={negatives:[],positives:[]},d=B=>p[B<0?"negatives":"positives"].push(Math.abs(B)),m=[],E=0;for(;o?n>=s:n<=s;)i.toRegex===!0&&r>1?d(n):m.push(mpe(h(n,E),g,f)),n=o?n-r:n+r,E++;return i.toRegex===!0?r>1?Ipe(p,i):I1(m,null,P({wrap:!1},i)):m},wpe=(t,e,r=1,i={})=>{if(!ph(t)&&t.length>1||!ph(e)&&e.length>1)return y1(t,e,i);let n=i.transform||(f=>String.fromCharCode(f)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(i.toRegex&&r===1)return m1(l,c,!1,i);let u=[],g=0;for(;a?s>=o:s<=o;)u.push(n(s,g)),s=a?s-r:s+r,g++;return i.toRegex===!0?I1(u,null,{wrap:!1,options:i}):u},LI=(t,e,r,i={})=>{if(e==null&&qb(t))return[t];if(!qb(t)||!qb(e))return y1(t,e,i);if(typeof r=="function")return LI(t,e,1,{transform:r});if(d1(r))return LI(t,e,0,r);let n=P({},i);return n.capture===!0&&(n.wrap=!0),r=r||n.step||1,ph(r)?ph(t)&&ph(e)?ype(t,e,r,n):wpe(t,e,Math.max(Math.abs(r),1),n):r!=null&&!d1(r)?Epe(r,n):LI(t,e,1,r)};h1.exports=LI});var Q1=I((O$e,w1)=>{"use strict";var Bpe=Wb(),B1=FI(),Qpe=(t,e={})=>{let r=(i,n={})=>{let s=B1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(i.isOpen===!0||i.isClose===!0)return l+i.value;if(i.type==="open")return a?l+i.value:"(";if(i.type==="close")return a?l+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":a?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let u=B1.reduce(i.nodes),g=Bpe(...u,_(P({},e),{wrap:!1,toRegex:!0}));if(g.length!==0)return u.length>1&&g.length>1?`(${g})`:g}if(i.nodes)for(let u of i.nodes)c+=r(u,i);return c};return r(t)};w1.exports=Qpe});var S1=I((K$e,b1)=>{"use strict";var bpe=Wb(),v1=NI(),ou=FI(),El=(t="",e="",r=!1)=>{let i=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ou.flatten(e).map(n=>`{${n}}`):e;for(let n of t)if(Array.isArray(n))for(let s of n)i.push(El(s,e,r));else for(let s of e)r===!0&&typeof s=="string"&&(s=`{${s}}`),i.push(Array.isArray(s)?El(n,s,r):n+s);return ou.flatten(i)},vpe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(n,s={})=>{n.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(n.invalid||n.dollar){a.push(El(a.pop(),v1(n,e)));return}if(n.type==="brace"&&n.invalid!==!0&&n.nodes.length===2){a.push(El(a.pop(),["{}"]));return}if(n.nodes&&n.ranges>0){let g=ou.reduce(n.nodes);if(ou.exceedsLimit(...g,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=bpe(...g,e);f.length===0&&(f=v1(n,e)),a.push(El(a.pop(),f)),n.nodes=[];return}let l=ou.encloseBrace(n),c=n.queue,u=n;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let g=0;g{"use strict";x1.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` +`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var N1=I((H$e,P1)=>{"use strict";var Spe=NI(),{MAX_LENGTH:D1,CHAR_BACKSLASH:zb,CHAR_BACKTICK:xpe,CHAR_COMMA:kpe,CHAR_DOT:Ppe,CHAR_LEFT_PARENTHESES:Dpe,CHAR_RIGHT_PARENTHESES:Rpe,CHAR_LEFT_CURLY_BRACE:Fpe,CHAR_RIGHT_CURLY_BRACE:Npe,CHAR_LEFT_SQUARE_BRACKET:R1,CHAR_RIGHT_SQUARE_BRACKET:F1,CHAR_DOUBLE_QUOTE:Lpe,CHAR_SINGLE_QUOTE:Tpe,CHAR_NO_BREAK_SPACE:Mpe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Ope}=k1(),Kpe=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},i=typeof r.maxLength=="number"?Math.min(D1,r.maxLength):D1;if(t.length>i)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${i})`);let n={type:"root",input:t,nodes:[]},s=[n],o=n,a=n,l=0,c=t.length,u=0,g=0,f,h={},p=()=>t[u++],d=m=>{if(m.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&m.type==="text"){a.value+=m.value;return}return o.nodes.push(m),m.parent=o,m.prev=a,a=m,m};for(d({type:"bos"});u0){if(o.ranges>0){o.ranges=0;let m=o.nodes.shift();o.nodes=[m,{type:"text",value:Spe(o)}]}d({type:"comma",value:f}),o.commas++;continue}if(f===Ppe&&g>0&&o.commas===0){let m=o.nodes;if(g===0||m.length===0){d({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){m.pop();let E=m[m.length-1];E.value+=a.value+f,a=E,o.ranges--;continue}d({type:"dot",value:f});continue}d({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(B=>{B.nodes||(B.type==="open"&&(B.isOpen=!0),B.type==="close"&&(B.isClose=!0),B.nodes||(B.type="text"),B.invalid=!0)});let m=s[s.length-1],E=m.nodes.indexOf(o);m.nodes.splice(E,1,...o.nodes)}while(s.length>0);return d({type:"eos"}),n};P1.exports=Kpe});var M1=I((G$e,L1)=>{"use strict";var T1=NI(),Upe=Q1(),Hpe=S1(),Gpe=N1(),Rn=(t,e={})=>{let r=[];if(Array.isArray(t))for(let i of t){let n=Rn.create(i,e);Array.isArray(n)?r.push(...n):r.push(n)}else r=[].concat(Rn.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.parse=(t,e={})=>Gpe(t,e);Rn.stringify=(t,e={})=>typeof t=="string"?T1(Rn.parse(t,e),e):T1(t,e);Rn.compile=(t,e={})=>(typeof t=="string"&&(t=Rn.parse(t,e)),Upe(t,e));Rn.expand=(t,e={})=>{typeof t=="string"&&(t=Rn.parse(t,e));let r=Hpe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Rn.compile(t,e):Rn.expand(t,e);L1.exports=Rn});var dh=I((j$e,O1)=>{"use strict";var jpe=require("path"),io="\\\\/",K1=`[^${io}]`,ea="\\.",Ype="\\+",qpe="\\?",TI="\\/",Jpe="(?=.)",U1="[^/]",Vb=`(?:${TI}|$)`,H1=`(?:^|${TI})`,_b=`${ea}{1,2}${Vb}`,Wpe=`(?!${ea})`,zpe=`(?!${H1}${_b})`,Vpe=`(?!${ea}{0,1}${Vb})`,_pe=`(?!${_b})`,Xpe=`[^.${TI}]`,Zpe=`${U1}*?`,G1={DOT_LITERAL:ea,PLUS_LITERAL:Ype,QMARK_LITERAL:qpe,SLASH_LITERAL:TI,ONE_CHAR:Jpe,QMARK:U1,END_ANCHOR:Vb,DOTS_SLASH:_b,NO_DOT:Wpe,NO_DOTS:zpe,NO_DOT_SLASH:Vpe,NO_DOTS_SLASH:_pe,QMARK_NO_DOT:Xpe,STAR:Zpe,START_ANCHOR:H1},$pe=_(P({},G1),{SLASH_LITERAL:`[${io}]`,QMARK:K1,STAR:`${K1}*?`,DOTS_SLASH:`${ea}{1,2}(?:[${io}]|$)`,NO_DOT:`(?!${ea})`,NO_DOTS:`(?!(?:^|[${io}])${ea}{1,2}(?:[${io}]|$))`,NO_DOT_SLASH:`(?!${ea}{0,1}(?:[${io}]|$))`,NO_DOTS_SLASH:`(?!${ea}{1,2}(?:[${io}]|$))`,QMARK_NO_DOT:`[^.${io}]`,START_ANCHOR:`(?:^|[${io}])`,END_ANCHOR:`(?:[${io}]|$)`}),ede={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};O1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:ede,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:jpe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?$pe:G1}}});var Ch=I(cn=>{"use strict";var tde=require("path"),rde=process.platform==="win32",{REGEX_BACKSLASH:ide,REGEX_REMOVE_BACKSLASH:nde,REGEX_SPECIAL_CHARS:sde,REGEX_SPECIAL_CHARS_GLOBAL:ode}=dh();cn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);cn.hasRegexChars=t=>sde.test(t);cn.isRegexChar=t=>t.length===1&&cn.hasRegexChars(t);cn.escapeRegex=t=>t.replace(ode,"\\$1");cn.toPosixSlashes=t=>t.replace(ide,"/");cn.removeBackslashes=t=>t.replace(nde,e=>e==="\\"?"":e);cn.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};cn.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:rde===!0||tde.sep==="\\";cn.escapeLast=(t,e,r)=>{let i=t.lastIndexOf(e,r);return i===-1?t:t[i-1]==="\\"?cn.escapeLast(t,e,i-1):`${t.slice(0,i)}\\${t.slice(i)}`};cn.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};cn.wrapOutput=(t,e={},r={})=>{let i=r.contains?"":"^",n=r.contains?"":"$",s=`${i}(?:${t})${n}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var X1=I((q$e,j1)=>{"use strict";var Y1=Ch(),{CHAR_ASTERISK:Xb,CHAR_AT:ade,CHAR_BACKWARD_SLASH:mh,CHAR_COMMA:Ade,CHAR_DOT:Zb,CHAR_EXCLAMATION_MARK:q1,CHAR_FORWARD_SLASH:J1,CHAR_LEFT_CURLY_BRACE:$b,CHAR_LEFT_PARENTHESES:ev,CHAR_LEFT_SQUARE_BRACKET:lde,CHAR_PLUS:cde,CHAR_QUESTION_MARK:W1,CHAR_RIGHT_CURLY_BRACE:ude,CHAR_RIGHT_PARENTHESES:z1,CHAR_RIGHT_SQUARE_BRACKET:gde}=dh(),V1=t=>t===J1||t===mh,_1=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?Infinity:1)},fde=(t,e)=>{let r=e||{},i=t.length-1,n=r.parts===!0||r.scanToEnd===!0,s=[],o=[],a=[],l=t,c=-1,u=0,g=0,f=!1,h=!1,p=!1,d=!1,m=!1,E=!1,B=!1,b=!1,R=!1,H=0,L,K,J={value:"",depth:0,isGlob:!1},ne=()=>c>=i,q=()=>l.charCodeAt(c+1),A=()=>(L=K,l.charCodeAt(++c));for(;c0&&(W=l.slice(0,u),l=l.slice(u),g-=u),V&&p===!0&&g>0?(V=l.slice(0,g),X=l.slice(g)):p===!0?(V="",X=l):V=l,V&&V!==""&&V!=="/"&&V!==l&&V1(V.charCodeAt(V.length-1))&&(V=V.slice(0,-1)),r.unescape===!0&&(X&&(X=Y1.removeBackslashes(X)),V&&B===!0&&(V=Y1.removeBackslashes(V)));let F={prefix:W,input:t,start:u,base:V,glob:X,isBrace:f,isBracket:h,isGlob:p,isExtglob:d,isGlobstar:m,negated:b};if(r.tokens===!0&&(F.maxDepth=0,V1(K)||o.push(J),F.tokens=o),r.parts===!0||r.tokens===!0){let D;for(let he=0;he{"use strict";var MI=dh(),Fn=Ch(),{MAX_LENGTH:OI,POSIX_REGEX_SOURCE:hde,REGEX_NON_SPECIAL_CHARS:pde,REGEX_SPECIAL_CHARS_BACKREF:dde,REPLACEMENTS:$1}=MI,Cde=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch(i){return t.map(n=>Fn.escapeRegex(n)).join("..")}return r},au=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,eU=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=$1[t]||t;let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OI,r.maxLength):OI,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);let s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",l=Fn.isWindows(e),c=MI.globChars(l),u=MI.extglobChars(c),{DOT_LITERAL:g,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:p,DOTS_SLASH:d,NO_DOT:m,NO_DOT_SLASH:E,NO_DOTS_SLASH:B,QMARK:b,QMARK_NO_DOT:R,STAR:H,START_ANCHOR:L}=c,K=G=>`(${a}(?:(?!${L}${G.dot?d:g}).)*?)`,J=r.dot?"":m,ne=r.dot?b:R,q=r.bash===!0?K(r):H;r.capture&&(q=`(${q})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Fn.removePrefix(t,A),n=t.length;let V=[],W=[],X=[],F=s,D,he=()=>A.index===n-1,pe=A.peek=(G=1)=>t[A.index+G],Ne=A.advance=()=>t[++A.index],Pe=()=>t.slice(A.index+1),qe=(G="",Ce=0)=>{A.consumed+=G,A.index+=Ce},re=G=>{A.output+=G.output!=null?G.output:G.value,qe(G.value)},se=()=>{let G=1;for(;pe()==="!"&&(pe(2)!=="("||pe(3)==="?");)Ne(),A.start++,G++;return G%2==0?!1:(A.negated=!0,A.start++,!0)},be=G=>{A[G]++,X.push(G)},ae=G=>{A[G]--,X.pop()},Ae=G=>{if(F.type==="globstar"){let Ce=A.braces>0&&(G.type==="comma"||G.type==="brace"),ee=G.extglob===!0||V.length&&(G.type==="pipe"||G.type==="paren");G.type!=="slash"&&G.type!=="paren"&&!Ce&&!ee&&(A.output=A.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=q,A.output+=F.output)}if(V.length&&G.type!=="paren"&&!u[G.value]&&(V[V.length-1].inner+=G.value),(G.value||G.output)&&re(G),F&&F.type==="text"&&G.type==="text"){F.value+=G.value,F.output=(F.output||"")+G.value;return}G.prev=F,o.push(G),F=G},De=(G,Ce)=>{let ee=_(P({},u[Ce]),{conditions:1,inner:""});ee.prev=F,ee.parens=A.parens,ee.output=A.output;let Ue=(r.capture?"(":"")+ee.open;be("parens"),Ae({type:G,value:Ce,output:A.output?"":p}),Ae({type:"paren",extglob:!0,value:Ne(),output:Ue}),V.push(ee)},$=G=>{let Ce=G.close+(r.capture?")":"");if(G.type==="negate"){let ee=q;G.inner&&G.inner.length>1&&G.inner.includes("/")&&(ee=K(r)),(ee!==q||he()||/^\)+$/.test(Pe()))&&(Ce=G.close=`)$))${ee}`),G.prev.type==="bos"&&(A.negatedExtglob=!0)}Ae({type:"paren",extglob:!0,value:D,output:Ce}),ae("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let G=!1,Ce=t.replace(dde,(ee,Ue,Oe,vt,dt,ri)=>vt==="\\"?(G=!0,ee):vt==="?"?Ue?Ue+vt+(dt?b.repeat(dt.length):""):ri===0?ne+(dt?b.repeat(dt.length):""):b.repeat(Oe.length):vt==="."?g.repeat(Oe.length):vt==="*"?Ue?Ue+vt+(dt?q:""):q:Ue?ee:`\\${ee}`);return G===!0&&(r.unescape===!0?Ce=Ce.replace(/\\/g,""):Ce=Ce.replace(/\\+/g,ee=>ee.length%2==0?"\\\\":ee?"\\":"")),Ce===t&&r.contains===!0?(A.output=t,A):(A.output=Fn.wrapOutput(Ce,A,e),A)}for(;!he();){if(D=Ne(),D==="\0")continue;if(D==="\\"){let ee=pe();if(ee==="/"&&r.bash!==!0||ee==="."||ee===";")continue;if(!ee){D+="\\",Ae({type:"text",value:D});continue}let Ue=/^\\+/.exec(Pe()),Oe=0;if(Ue&&Ue[0].length>2&&(Oe=Ue[0].length,A.index+=Oe,Oe%2!=0&&(D+="\\")),r.unescape===!0?D=Ne()||"":D+=Ne()||"",A.brackets===0){Ae({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(r.posix!==!1&&D===":"){let ee=F.value.slice(1);if(ee.includes("[")&&(F.posix=!0,ee.includes(":"))){let Ue=F.value.lastIndexOf("["),Oe=F.value.slice(0,Ue),vt=F.value.slice(Ue+2),dt=hde[vt];if(dt){F.value=Oe+dt,A.backtrack=!0,Ne(),!s.output&&o.indexOf(F)===1&&(s.output=p);continue}}}(D==="["&&pe()!==":"||D==="-"&&pe()==="]")&&(D=`\\${D}`),D==="]"&&(F.value==="["||F.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&F.value==="["&&(D="^"),F.value+=D,re({value:D});continue}if(A.quotes===1&&D!=='"'){D=Fn.escapeRegex(D),F.value+=D,re({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&Ae({type:"text",value:D});continue}if(D==="("){be("parens"),Ae({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(au("opening","("));let ee=V[V.length-1];if(ee&&A.parens===ee.parens+1){$(V.pop());continue}Ae({type:"paren",value:D,output:A.parens?")":"\\)"}),ae("parens");continue}if(D==="["){if(r.nobracket===!0||!Pe().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));D=`\\${D}`}else be("brackets");Ae({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){Ae({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(au("opening","["));Ae({type:"text",value:D,output:`\\${D}`});continue}ae("brackets");let ee=F.value.slice(1);if(F.posix!==!0&&ee[0]==="^"&&!ee.includes("/")&&(D=`/${D}`),F.value+=D,re({value:D}),r.literalBrackets===!1||Fn.hasRegexChars(ee))continue;let Ue=Fn.escapeRegex(F.value);if(A.output=A.output.slice(0,-F.value.length),r.literalBrackets===!0){A.output+=Ue,F.value=Ue;continue}F.value=`(${a}${Ue}|${F.value})`,A.output+=F.value;continue}if(D==="{"&&r.nobrace!==!0){be("braces");let ee={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};W.push(ee),Ae(ee);continue}if(D==="}"){let ee=W[W.length-1];if(r.nobrace===!0||!ee){Ae({type:"text",value:D,output:D});continue}let Ue=")";if(ee.dots===!0){let Oe=o.slice(),vt=[];for(let dt=Oe.length-1;dt>=0&&(o.pop(),Oe[dt].type!=="brace");dt--)Oe[dt].type!=="dots"&&vt.unshift(Oe[dt].value);Ue=Cde(vt,r),A.backtrack=!0}if(ee.comma!==!0&&ee.dots!==!0){let Oe=A.output.slice(0,ee.outputIndex),vt=A.tokens.slice(ee.tokensIndex);ee.value=ee.output="\\{",D=Ue="\\}",A.output=Oe;for(let dt of vt)A.output+=dt.output||dt.value}Ae({type:"brace",value:D,output:Ue}),ae("braces"),W.pop();continue}if(D==="|"){V.length>0&&V[V.length-1].conditions++,Ae({type:"text",value:D});continue}if(D===","){let ee=D,Ue=W[W.length-1];Ue&&X[X.length-1]==="braces"&&(Ue.comma=!0,ee="|"),Ae({type:"comma",value:D,output:ee});continue}if(D==="/"){if(F.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",o.pop(),F=s;continue}Ae({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&F.type==="dot"){F.value==="."&&(F.output=g);let ee=W[W.length-1];F.type="dots",F.output+=D,F.value+=D,ee.dots=!0;continue}if(A.braces+A.parens===0&&F.type!=="bos"&&F.type!=="slash"){Ae({type:"text",value:D,output:g});continue}Ae({type:"dot",value:D,output:g});continue}if(D==="?"){if(!(F&&F.value==="(")&&r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("qmark",D);continue}if(F&&F.type==="paren"){let Ue=pe(),Oe=D;if(Ue==="<"&&!Fn.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(F.value==="("&&!/[!=<:]/.test(Ue)||Ue==="<"&&!/<([!=]|\w+>)/.test(Pe()))&&(Oe=`\\${D}`),Ae({type:"text",value:D,output:Oe});continue}if(r.dot!==!0&&(F.type==="slash"||F.type==="bos")){Ae({type:"qmark",value:D,output:R});continue}Ae({type:"qmark",value:D,output:b});continue}if(D==="!"){if(r.noextglob!==!0&&pe()==="("&&(pe(2)!=="?"||!/[!=<:]/.test(pe(3)))){De("negate",D);continue}if(r.nonegate!==!0&&A.index===0){se();continue}}if(D==="+"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("plus",D);continue}if(F&&F.value==="("||r.regex===!1){Ae({type:"plus",value:D,output:f});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||A.parens>0){Ae({type:"plus",value:D});continue}Ae({type:"plus",value:f});continue}if(D==="@"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){Ae({type:"at",extglob:!0,value:D,output:""});continue}Ae({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let ee=pde.exec(Pe());ee&&(D+=ee[0],A.index+=ee[0].length),Ae({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=q,A.backtrack=!0,A.globstar=!0,qe(D);continue}let G=Pe();if(r.noextglob!==!0&&/^\([^?]/.test(G)){De("star",D);continue}if(F.type==="star"){if(r.noglobstar===!0){qe(D);continue}let ee=F.prev,Ue=ee.prev,Oe=ee.type==="slash"||ee.type==="bos",vt=Ue&&(Ue.type==="star"||Ue.type==="globstar");if(r.bash===!0&&(!Oe||G[0]&&G[0]!=="/")){Ae({type:"star",value:D,output:""});continue}let dt=A.braces>0&&(ee.type==="comma"||ee.type==="brace"),ri=V.length&&(ee.type==="pipe"||ee.type==="paren");if(!Oe&&ee.type!=="paren"&&!dt&&!ri){Ae({type:"star",value:D,output:""});continue}for(;G.slice(0,3)==="/**";){let ii=t[A.index+4];if(ii&&ii!=="/")break;G=G.slice(3),qe("/**",3)}if(ee.type==="bos"&&he()){F.type="globstar",F.value+=D,F.output=K(r),A.output=F.output,A.globstar=!0,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&!vt&&he()){A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=K(r)+(r.strictSlashes?")":"|$)"),F.value+=D,A.globstar=!0,A.output+=ee.output+F.output,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&G[0]==="/"){let ii=G[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=`${K(r)}${h}|${h}${ii})`,F.value+=D,A.output+=ee.output+F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}if(ee.type==="bos"&&G[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${h}|${K(r)}${h})`,A.output=F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-F.output.length),F.type="globstar",F.output=K(r),F.value+=D,A.output+=F.output,A.globstar=!0,qe(D);continue}let Ce={type:"star",value:D,output:q};if(r.bash===!0){Ce.output=".*?",(F.type==="bos"||F.type==="slash")&&(Ce.output=J+Ce.output),Ae(Ce);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&r.regex===!0){Ce.output=D,Ae(Ce);continue}(A.index===A.start||F.type==="slash"||F.type==="dot")&&(F.type==="dot"?(A.output+=E,F.output+=E):r.dot===!0?(A.output+=B,F.output+=B):(A.output+=J,F.output+=J),pe()!=="*"&&(A.output+=p,F.output+=p)),Ae(Ce)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));A.output=Fn.escapeLast(A.output,"["),ae("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing",")"));A.output=Fn.escapeLast(A.output,"("),ae("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","}"));A.output=Fn.escapeLast(A.output,"{"),ae("braces")}if(r.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket")&&Ae({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let G of A.tokens)A.output+=G.output!=null?G.output:G.value,G.suffix&&(A.output+=G.suffix)}return A};eU.fastpaths=(t,e)=>{let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OI,r.maxLength):OI,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);t=$1[t]||t;let s=Fn.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:g,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:p}=MI.globChars(s),d=r.dot?g:u,m=r.dot?f:u,E=r.capture?"":"?:",B={negated:!1,prefix:""},b=r.bash===!0?".*?":h;r.capture&&(b=`(${b})`);let R=J=>J.noglobstar===!0?b:`(${E}(?:(?!${p}${J.dot?c:o}).)*?)`,H=J=>{switch(J){case"*":return`${d}${l}${b}`;case".*":return`${o}${l}${b}`;case"*.*":return`${d}${b}${o}${l}${b}`;case"*/*":return`${d}${b}${a}${l}${m}${b}`;case"**":return d+R(r);case"**/*":return`(?:${d}${R(r)}${a})?${m}${l}${b}`;case"**/*.*":return`(?:${d}${R(r)}${a})?${m}${b}${o}${l}${b}`;case"**/.*":return`(?:${d}${R(r)}${a})?${o}${l}${b}`;default:{let ne=/^(.*?)\.(\w+)$/.exec(J);if(!ne)return;let q=H(ne[1]);return q?q+o+ne[2]:void 0}}},L=Fn.removePrefix(t,B),K=H(L);return K&&r.strictSlashes!==!0&&(K+=`${a}?`),K};Z1.exports=eU});var iU=I((W$e,rU)=>{"use strict";var mde=require("path"),Ide=X1(),tv=tU(),rv=Ch(),Ede=dh(),yde=t=>t&&typeof t=="object"&&!Array.isArray(t),Dr=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(f=>Dr(f,e,r));return f=>{for(let h of u){let p=h(f);if(p)return p}return!1}}let i=yde(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let n=e||{},s=rv.isWindows(e),o=i?Dr.compileRe(t,e):Dr.makeRe(t,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(n.ignore){let u=_(P({},e),{ignore:null,onMatch:null,onResult:null});l=Dr(n.ignore,u,r)}let c=(u,g=!1)=>{let{isMatch:f,match:h,output:p}=Dr.test(u,o,e,{glob:t,posix:s}),d={glob:t,state:a,regex:o,posix:s,input:u,output:p,match:h,isMatch:f};return typeof n.onResult=="function"&&n.onResult(d),f===!1?(d.isMatch=!1,g?d:!1):l(u)?(typeof n.onIgnore=="function"&&n.onIgnore(d),d.isMatch=!1,g?d:!1):(typeof n.onMatch=="function"&&n.onMatch(d),g?d:!0)};return r&&(c.state=a),c};Dr.test=(t,e,r,{glob:i,posix:n}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let s=r||{},o=s.format||(n?rv.toPosixSlashes:null),a=t===i,l=a&&o?o(t):t;return a===!1&&(l=o?o(t):t,a=l===i),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Dr.matchBase(t,e,r,n):a=e.exec(l)),{isMatch:Boolean(a),match:a,output:l}};Dr.matchBase=(t,e,r,i=rv.isWindows(r))=>(e instanceof RegExp?e:Dr.makeRe(e,r)).test(mde.basename(t));Dr.isMatch=(t,e,r)=>Dr(e,r)(t);Dr.parse=(t,e)=>Array.isArray(t)?t.map(r=>Dr.parse(r,e)):tv(t,_(P({},e),{fastpaths:!1}));Dr.scan=(t,e)=>Ide(t,e);Dr.compileRe=(t,e,r=!1,i=!1)=>{if(r===!0)return t.output;let n=e||{},s=n.contains?"":"^",o=n.contains?"":"$",a=`${s}(?:${t.output})${o}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let l=Dr.toRegex(a,e);return i===!0&&(l.state=t),l};Dr.makeRe=(t,e,r=!1,i=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let n=e||{},s={negated:!1,fastpaths:!0},o="",a;return t.startsWith("./")&&(t=t.slice(2),o=s.prefix="./"),n.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a=tv.fastpaths(t,e)),a===void 0?(s=tv(t,e),s.prefix=o+(s.prefix||"")):s.output=a,Dr.compileRe(s,e,r,i)};Dr.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Dr.constants=Ede;rU.exports=Dr});var iv=I((z$e,nU)=>{"use strict";nU.exports=iU()});var Nn=I((V$e,sU)=>{"use strict";var oU=require("util"),aU=M1(),no=iv(),nv=Ch(),AU=t=>typeof t=="string"&&(t===""||t==="./"),pr=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let i=new Set,n=new Set,s=new Set,o=0,a=u=>{s.add(u.output),r&&r.onResult&&r.onResult(u)};for(let u=0;u!i.has(u));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};pr.match=pr;pr.matcher=(t,e)=>no(t,e);pr.isMatch=(t,e,r)=>no(e,r)(t);pr.any=pr.isMatch;pr.not=(t,e,r={})=>{e=[].concat(e).map(String);let i=new Set,n=[],s=a=>{r.onResult&&r.onResult(a),n.push(a.output)},o=pr(t,e,_(P({},r),{onResult:s}));for(let a of n)o.includes(a)||i.add(a);return[...i]};pr.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);if(Array.isArray(e))return e.some(i=>pr.contains(t,i,r));if(typeof e=="string"){if(AU(t)||AU(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return pr.isMatch(t,e,_(P({},r),{contains:!0}))};pr.matchKeys=(t,e,r)=>{if(!nv.isObject(t))throw new TypeError("Expected the first argument to be an object");let i=pr(Object.keys(t),e,r),n={};for(let s of i)n[s]=t[s];return n};pr.some=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(i.some(o=>s(o)))return!0}return!1};pr.every=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(!i.every(o=>s(o)))return!1}return!0};pr.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);return[].concat(e).every(i=>no(i,r)(t))};pr.capture=(t,e,r)=>{let i=nv.isWindows(r),s=no.makeRe(String(t),_(P({},r),{capture:!0})).exec(i?nv.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};pr.makeRe=(...t)=>no.makeRe(...t);pr.scan=(...t)=>no.scan(...t);pr.parse=(t,e)=>{let r=[];for(let i of[].concat(t||[]))for(let n of aU(String(i),e))r.push(no.parse(n,e));return r};pr.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:aU(t,e)};pr.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return pr.braces(t,_(P({},e),{expand:!0}))};sU.exports=pr});var cU=I((_$e,lU)=>{"use strict";lU.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var gU=I((X$e,uU)=>{"use strict";var wde=cU();uU.exports=t=>typeof t=="string"?t.replace(wde(),""):t});var lu={};it(lu,{KeyRelationship:()=>Bl,applyCascade:()=>fv,base64RegExp:()=>CU,colorStringAlphaRegExp:()=>dU,colorStringRegExp:()=>pU,computeKey:()=>rA,getPrintable:()=>Mr,hasExactLength:()=>wU,hasForbiddenKeys:()=>eCe,hasKeyRelationship:()=>pv,hasMaxLength:()=>Mde,hasMinLength:()=>Tde,hasMutuallyExclusiveKeys:()=>tCe,hasRequiredKeys:()=>$de,hasUniqueItems:()=>Ode,isArray:()=>xde,isAtLeast:()=>Hde,isAtMost:()=>Gde,isBase64:()=>Xde,isBoolean:()=>bde,isDate:()=>Sde,isDict:()=>Pde,isEnum:()=>Yi,isHexColor:()=>_de,isISO8601:()=>Vde,isInExclusiveRange:()=>Yde,isInInclusiveRange:()=>jde,isInstanceOf:()=>Rde,isInteger:()=>qde,isJSON:()=>Zde,isLiteral:()=>Bde,isLowerCase:()=>Jde,isNegative:()=>Kde,isNullable:()=>Lde,isNumber:()=>vde,isObject:()=>Dde,isOneOf:()=>Fde,isOptional:()=>Nde,isPositive:()=>Ude,isString:()=>gv,isTuple:()=>kde,isUUID4:()=>zde,isUnknown:()=>yU,isUpperCase:()=>Wde,iso8601RegExp:()=>uv,makeCoercionFn:()=>wl,makeSetter:()=>EU,makeTrait:()=>IU,makeValidator:()=>Ct,matchesRegExp:()=>hv,plural:()=>GI,pushError:()=>at,simpleKeyRegExp:()=>hU,uuid4RegExp:()=>mU});function Ct({test:t}){return IU(t)()}function Mr(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function rA(t,e){var r,i,n;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:hU.test(e)?`${(i=t==null?void 0:t.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=t==null?void 0:t.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function wl(t,e){return r=>{let i=t[e];return t[e]=r,wl(t,e).bind(null,i)}}function EU(t,e){return r=>{t[e]=r}}function GI(t,e,r){return t===1?e:r}function at({errors:t,p:e}={},r){return t==null||t.push(`${e!=null?e:"."}: ${r}`),!1}function Bde(t){return Ct({test:(e,r)=>e!==t?at(r,`Expected a literal (got ${Mr(t)})`):!0})}function Yi(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return Ct({test:(i,n)=>r.has(i)?!0:at(n,`Expected a valid enumeration value (got ${Mr(i)})`)})}var hU,pU,dU,CU,mU,uv,IU,yU,gv,Qde,bde,vde,Sde,xde,kde,Pde,Dde,Rde,Fde,fv,Nde,Lde,Tde,Mde,wU,Ode,Kde,Ude,Hde,Gde,jde,Yde,qde,hv,Jde,Wde,zde,Vde,_de,Xde,Zde,$de,eCe,tCe,Bl,rCe,pv,Ss=Yfe(()=>{hU=/^[a-zA-Z_][a-zA-Z0-9_]*$/,pU=/^#[0-9a-f]{6}$/i,dU=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,CU=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,mU=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,uv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,IU=t=>()=>t;yU=()=>Ct({test:(t,e)=>!0});gv=()=>Ct({test:(t,e)=>typeof t!="string"?at(e,`Expected a string (got ${Mr(t)})`):!0});Qde=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),bde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i=Qde.get(t);if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a boolean (got ${Mr(t)})`)}return!0}}),vde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch(s){}if(typeof n=="number")if(JSON.stringify(n)===t)i=n;else return at(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a number (got ${Mr(t)})`)}return!0}}),Sde=()=>Ct({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"&&uv.test(t))i=new Date(t);else{let n;if(typeof t=="string"){let s;try{s=JSON.parse(t)}catch(o){}typeof s=="number"&&(n=s)}else typeof t=="number"&&(n=t);if(typeof n!="undefined")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return at(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a date (got ${Mr(t)})`)}return!0}}),xde=(t,{delimiter:e}={})=>Ct({test:(r,i)=>{var n;if(typeof r=="string"&&typeof e!="undefined"&&typeof(i==null?void 0:i.coercions)!="undefined"){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");r=r.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,r)])}if(!Array.isArray(r))return at(i,`Expected an array (got ${Mr(r)})`);let s=!0;for(let o=0,a=r.length;o{let r=wU(t.length);return Ct({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e!="undefined"&&typeof(n==null?void 0:n.coercions)!="undefined"){if(typeof(n==null?void 0:n.coercion)=="undefined")return at(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return at(n,`Expected a tuple (got ${Mr(i)})`);let o=r(i,Object.assign({},n));for(let a=0,l=i.length;aCt({test:(r,i)=>{if(typeof r!="object"||r===null)return at(i,`Expected an object (got ${Mr(r)})`);let n=Object.keys(r),s=!0;for(let o=0,a=n.length;o{let r=Object.keys(t);return Ct({test:(i,n)=>{if(typeof i!="object"||i===null)return at(n,`Expected an object (got ${Mr(i)})`);let s=new Set([...r,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(t,l)?t[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c!="undefined"?a=c(u,Object.assign(Object.assign({},n),{p:rA(n,l),coercion:wl(i,l)}))&&a:e===null?a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),`Extraneous property (got ${Mr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:EU(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Rde=t=>Ct({test:(e,r)=>e instanceof t?!0:at(r,`Expected an instance of ${t.name} (got ${Mr(e)})`)}),Fde=(t,{exclusive:e=!1}={})=>Ct({test:(r,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)!="undefined"?[]:void 0;for(let c=0,u=t.length;c1?at(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),fv=(t,e)=>Ct({test:(r,i)=>{var n,s;let o={value:r},a=typeof(i==null?void 0:i.coercions)!="undefined"?wl(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)!="undefined"?[]:void 0;if(!t(r,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l!="undefined")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)!="undefined"){if(o.value!==r){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Nde=t=>Ct({test:(e,r)=>typeof e=="undefined"?!0:t(e,r)}),Lde=t=>Ct({test:(e,r)=>e===null?!0:t(e,r)}),Tde=t=>Ct({test:(e,r)=>e.length>=t?!0:at(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),Mde=t=>Ct({test:(e,r)=>e.length<=t?!0:at(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),wU=t=>Ct({test:(e,r)=>e.length!==t?at(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),Ode=({map:t}={})=>Ct({test:(e,r)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sCt({test:(t,e)=>t<=0?!0:at(e,`Expected to be negative (got ${t})`)}),Ude=()=>Ct({test:(t,e)=>t>=0?!0:at(e,`Expected to be positive (got ${t})`)}),Hde=t=>Ct({test:(e,r)=>e>=t?!0:at(r,`Expected to be at least ${t} (got ${e})`)}),Gde=t=>Ct({test:(e,r)=>e<=t?!0:at(r,`Expected to be at most ${t} (got ${e})`)}),jde=(t,e)=>Ct({test:(r,i)=>r>=t&&r<=e?!0:at(i,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),Yde=(t,e)=>Ct({test:(r,i)=>r>=t&&rCt({test:(e,r)=>e!==Math.round(e)?at(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:at(r,`Expected to be a safe integer (got ${e})`)}),hv=t=>Ct({test:(e,r)=>t.test(e)?!0:at(r,`Expected to match the pattern ${t.toString()} (got ${Mr(e)})`)}),Jde=()=>Ct({test:(t,e)=>t!==t.toLowerCase()?at(e,`Expected to be all-lowercase (got ${t})`):!0}),Wde=()=>Ct({test:(t,e)=>t!==t.toUpperCase()?at(e,`Expected to be all-uppercase (got ${t})`):!0}),zde=()=>Ct({test:(t,e)=>mU.test(t)?!0:at(e,`Expected to be a valid UUID v4 (got ${Mr(t)})`)}),Vde=()=>Ct({test:(t,e)=>uv.test(t)?!1:at(e,`Expected to be a valid ISO 8601 date string (got ${Mr(t)})`)}),_de=({alpha:t=!1})=>Ct({test:(e,r)=>(t?pU.test(e):dU.test(e))?!0:at(r,`Expected to be a valid hexadecimal color string (got ${Mr(e)})`)}),Xde=()=>Ct({test:(t,e)=>CU.test(t)?!0:at(e,`Expected to be a valid base 64 string (got ${Mr(t)})`)}),Zde=(t=yU())=>Ct({test:(e,r)=>{let i;try{i=JSON.parse(e)}catch(n){return at(r,`Expected to be a valid JSON string (got ${Mr(e)})`)}return t(i,r)}}),$de=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?at(i,`Missing required ${GI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},eCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?at(i,`Forbidden ${GI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?at(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Bl||(Bl={}));rCe={[Bl.Forbids]:{expect:!1,message:"forbids using"},[Bl.Requires]:{expect:!0,message:"requires using"}},pv=(t,e,r,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(r),o=rCe[e];return Ct({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(t)||n.has(a[t]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?at(l,`Property "${t}" ${o.message} ${GI(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var Sh=I(($et,OU)=>{var mCe="2.0.0",ICe=256,ECe=Number.MAX_SAFE_INTEGER||9007199254740991,yCe=16;OU.exports={SEMVER_SPEC_VERSION:mCe,MAX_LENGTH:ICe,MAX_SAFE_INTEGER:ECe,MAX_SAFE_COMPONENT_LENGTH:yCe}});var xh=I((ett,KU)=>{var wCe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};KU.exports=wCe});var Ql=I((iA,UU)=>{var{MAX_SAFE_COMPONENT_LENGTH:yv}=Sh(),BCe=xh();iA=UU.exports={};var QCe=iA.re=[],Je=iA.src=[],We=iA.t={},bCe=0,mt=(t,e,r)=>{let i=bCe++;BCe(i,e),We[t]=i,Je[i]=e,QCe[i]=new RegExp(e,r?"g":void 0)};mt("NUMERICIDENTIFIER","0|[1-9]\\d*");mt("NUMERICIDENTIFIERLOOSE","[0-9]+");mt("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");mt("MAINVERSION",`(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})`);mt("MAINVERSIONLOOSE",`(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})`);mt("PRERELEASEIDENTIFIER",`(?:${Je[We.NUMERICIDENTIFIER]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASEIDENTIFIERLOOSE",`(?:${Je[We.NUMERICIDENTIFIERLOOSE]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASE",`(?:-(${Je[We.PRERELEASEIDENTIFIER]}(?:\\.${Je[We.PRERELEASEIDENTIFIER]})*))`);mt("PRERELEASELOOSE",`(?:-?(${Je[We.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${Je[We.PRERELEASEIDENTIFIERLOOSE]})*))`);mt("BUILDIDENTIFIER","[0-9A-Za-z-]+");mt("BUILD",`(?:\\+(${Je[We.BUILDIDENTIFIER]}(?:\\.${Je[We.BUILDIDENTIFIER]})*))`);mt("FULLPLAIN",`v?${Je[We.MAINVERSION]}${Je[We.PRERELEASE]}?${Je[We.BUILD]}?`);mt("FULL",`^${Je[We.FULLPLAIN]}$`);mt("LOOSEPLAIN",`[v=\\s]*${Je[We.MAINVERSIONLOOSE]}${Je[We.PRERELEASELOOSE]}?${Je[We.BUILD]}?`);mt("LOOSE",`^${Je[We.LOOSEPLAIN]}$`);mt("GTLT","((?:<|>)?=?)");mt("XRANGEIDENTIFIERLOOSE",`${Je[We.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);mt("XRANGEIDENTIFIER",`${Je[We.NUMERICIDENTIFIER]}|x|X|\\*`);mt("XRANGEPLAIN",`[v=\\s]*(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:${Je[We.PRERELEASE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGEPLAINLOOSE",`[v=\\s]*(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:${Je[We.PRERELEASELOOSE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAIN]}$`);mt("XRANGELOOSE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAINLOOSE]}$`);mt("COERCE",`(^|[^\\d])(\\d{1,${yv}})(?:\\.(\\d{1,${yv}}))?(?:\\.(\\d{1,${yv}}))?(?:$|[^\\d])`);mt("COERCERTL",Je[We.COERCE],!0);mt("LONETILDE","(?:~>?)");mt("TILDETRIM",`(\\s*)${Je[We.LONETILDE]}\\s+`,!0);iA.tildeTrimReplace="$1~";mt("TILDE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAIN]}$`);mt("TILDELOOSE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("LONECARET","(?:\\^)");mt("CARETTRIM",`(\\s*)${Je[We.LONECARET]}\\s+`,!0);iA.caretTrimReplace="$1^";mt("CARET",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAIN]}$`);mt("CARETLOOSE",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("COMPARATORLOOSE",`^${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]})$|^$`);mt("COMPARATOR",`^${Je[We.GTLT]}\\s*(${Je[We.FULLPLAIN]})$|^$`);mt("COMPARATORTRIM",`(\\s*)${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]}|${Je[We.XRANGEPLAIN]})`,!0);iA.comparatorTrimReplace="$1$2$3";mt("HYPHENRANGE",`^\\s*(${Je[We.XRANGEPLAIN]})\\s+-\\s+(${Je[We.XRANGEPLAIN]})\\s*$`);mt("HYPHENRANGELOOSE",`^\\s*(${Je[We.XRANGEPLAINLOOSE]})\\s+-\\s+(${Je[We.XRANGEPLAINLOOSE]})\\s*$`);mt("STAR","(<|>)?=?\\s*\\*");mt("GTE0","^\\s*>=\\s*0.0.0\\s*$");mt("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var kh=I((ttt,HU)=>{var vCe=["includePrerelease","loose","rtl"],SCe=t=>t?typeof t!="object"?{loose:!0}:vCe.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};HU.exports=SCe});var zI=I((rtt,GU)=>{var jU=/^[0-9]+$/,YU=(t,e)=>{let r=jU.test(t),i=jU.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:tYU(e,t);GU.exports={compareIdentifiers:YU,rcompareIdentifiers:xCe}});var bi=I((itt,qU)=>{var VI=xh(),{MAX_LENGTH:JU,MAX_SAFE_INTEGER:_I}=Sh(),{re:WU,t:zU}=Ql(),kCe=kh(),{compareIdentifiers:Ph}=zI(),_n=class{constructor(e,r){if(r=kCe(r),e instanceof _n){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>JU)throw new TypeError(`version is longer than ${JU} characters`);VI("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?WU[zU.LOOSE]:WU[zU.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>_I||this.major<0)throw new TypeError("Invalid major version");if(this.minor>_I||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>_I||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s<_I)return s}return n}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(VI("SemVer.compare",this.version,this.options,e),!(e instanceof _n)){if(typeof e=="string"&&e===this.version)return 0;e=new _n(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof _n||(e=new _n(e,this.options)),Ph(this.major,e.major)||Ph(this.minor,e.minor)||Ph(this.patch,e.patch)}comparePre(e){if(e instanceof _n||(e=new _n(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let i=this.prerelease[r],n=e.prerelease[r];if(VI("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}compareBuild(e){e instanceof _n||(e=new _n(e,this.options));let r=0;do{let i=this.build[r],n=e.build[r];if(VI("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}inc(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r),this.inc("pre",r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};qU.exports=_n});var bl=I((ntt,VU)=>{var{MAX_LENGTH:PCe}=Sh(),{re:_U,t:XU}=Ql(),ZU=bi(),DCe=kh(),RCe=(t,e)=>{if(e=DCe(e),t instanceof ZU)return t;if(typeof t!="string"||t.length>PCe||!(e.loose?_U[XU.LOOSE]:_U[XU.FULL]).test(t))return null;try{return new ZU(t,e)}catch(i){return null}};VU.exports=RCe});var e2=I((stt,$U)=>{var FCe=bl(),NCe=(t,e)=>{let r=FCe(t,e);return r?r.version:null};$U.exports=NCe});var r2=I((ott,t2)=>{var LCe=bl(),TCe=(t,e)=>{let r=LCe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};t2.exports=TCe});var n2=I((att,i2)=>{var MCe=bi(),OCe=(t,e,r,i)=>{typeof r=="string"&&(i=r,r=void 0);try{return new MCe(t,r).inc(e,i).version}catch(n){return null}};i2.exports=OCe});var Xn=I((Att,s2)=>{var o2=bi(),KCe=(t,e,r)=>new o2(t,r).compare(new o2(e,r));s2.exports=KCe});var XI=I((ltt,a2)=>{var UCe=Xn(),HCe=(t,e,r)=>UCe(t,e,r)===0;a2.exports=HCe});var c2=I((ctt,A2)=>{var l2=bl(),GCe=XI(),jCe=(t,e)=>{if(GCe(t,e))return null;{let r=l2(t),i=l2(e),n=r.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==i[a])return s+a;return o}};A2.exports=jCe});var g2=I((utt,u2)=>{var YCe=bi(),qCe=(t,e)=>new YCe(t,e).major;u2.exports=qCe});var h2=I((gtt,f2)=>{var JCe=bi(),WCe=(t,e)=>new JCe(t,e).minor;f2.exports=WCe});var d2=I((ftt,p2)=>{var zCe=bi(),VCe=(t,e)=>new zCe(t,e).patch;p2.exports=VCe});var m2=I((htt,C2)=>{var _Ce=bl(),XCe=(t,e)=>{let r=_Ce(t,e);return r&&r.prerelease.length?r.prerelease:null};C2.exports=XCe});var E2=I((ptt,I2)=>{var ZCe=Xn(),$Ce=(t,e,r)=>ZCe(e,t,r);I2.exports=$Ce});var w2=I((dtt,y2)=>{var eme=Xn(),tme=(t,e)=>eme(t,e,!0);y2.exports=tme});var ZI=I((Ctt,B2)=>{var Q2=bi(),rme=(t,e,r)=>{let i=new Q2(t,r),n=new Q2(e,r);return i.compare(n)||i.compareBuild(n)};B2.exports=rme});var v2=I((mtt,b2)=>{var ime=ZI(),nme=(t,e)=>t.sort((r,i)=>ime(r,i,e));b2.exports=nme});var x2=I((Itt,S2)=>{var sme=ZI(),ome=(t,e)=>t.sort((r,i)=>sme(i,r,e));S2.exports=ome});var Dh=I((Ett,k2)=>{var ame=Xn(),Ame=(t,e,r)=>ame(t,e,r)>0;k2.exports=Ame});var $I=I((ytt,P2)=>{var lme=Xn(),cme=(t,e,r)=>lme(t,e,r)<0;P2.exports=cme});var wv=I((wtt,D2)=>{var ume=Xn(),gme=(t,e,r)=>ume(t,e,r)!==0;D2.exports=gme});var eE=I((Btt,R2)=>{var fme=Xn(),hme=(t,e,r)=>fme(t,e,r)>=0;R2.exports=hme});var tE=I((Qtt,F2)=>{var pme=Xn(),dme=(t,e,r)=>pme(t,e,r)<=0;F2.exports=dme});var Bv=I((btt,N2)=>{var Cme=XI(),mme=wv(),Ime=Dh(),Eme=eE(),yme=$I(),wme=tE(),Bme=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Cme(t,r,i);case"!=":return mme(t,r,i);case">":return Ime(t,r,i);case">=":return Eme(t,r,i);case"<":return yme(t,r,i);case"<=":return wme(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};N2.exports=Bme});var T2=I((vtt,L2)=>{var Qme=bi(),bme=bl(),{re:rE,t:iE}=Ql(),vme=(t,e)=>{if(t instanceof Qme)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(rE[iE.COERCE]);else{let i;for(;(i=rE[iE.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),rE[iE.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;rE[iE.COERCERTL].lastIndex=-1}return r===null?null:bme(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};L2.exports=vme});var O2=I((Stt,M2)=>{"use strict";M2.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Rh=I((xtt,K2)=>{"use strict";K2.exports=Pt;Pt.Node=vl;Pt.create=Pt;function Pt(t){var e=this;if(e instanceof Pt||(e=new Pt),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};Pt.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};Pt.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Pt.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Pt.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Pt;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};Pt.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var Pme=Rh(),Sl=Symbol("max"),ra=Symbol("length"),uu=Symbol("lengthCalculator"),Fh=Symbol("allowStale"),xl=Symbol("maxAge"),ia=Symbol("dispose"),H2=Symbol("noDisposeOnSet"),si=Symbol("lruList"),ks=Symbol("cache"),G2=Symbol("updateAgeOnGet"),Qv=()=>1,j2=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Sl]=e.max||Infinity,i=e.length||Qv;if(this[uu]=typeof i!="function"?Qv:i,this[Fh]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[xl]=e.maxAge||0,this[ia]=e.dispose,this[H2]=e.noDisposeOnSet||!1,this[G2]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Sl]=e||Infinity,Nh(this)}get max(){return this[Sl]}set allowStale(e){this[Fh]=!!e}get allowStale(){return this[Fh]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[xl]=e,Nh(this)}get maxAge(){return this[xl]}set lengthCalculator(e){typeof e!="function"&&(e=Qv),e!==this[uu]&&(this[uu]=e,this[ra]=0,this[si].forEach(r=>{r.length=this[uu](r.value,r.key),this[ra]+=r.length})),Nh(this)}get lengthCalculator(){return this[uu]}get length(){return this[ra]}get itemCount(){return this[si].length}rforEach(e,r){r=r||this;for(let i=this[si].tail;i!==null;){let n=i.prev;q2(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[si].head;i!==null;){let n=i.next;q2(this,e,i,r),i=n}}keys(){return this[si].toArray().map(e=>e.key)}values(){return this[si].toArray().map(e=>e.value)}reset(){this[ia]&&this[si]&&this[si].length&&this[si].forEach(e=>this[ia](e.key,e.value)),this[ks]=new Map,this[si]=new Pme,this[ra]=0}dump(){return this[si].map(e=>nE(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[si]}set(e,r,i){if(i=i||this[xl],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[uu](r,e);if(this[ks].has(e)){if(s>this[Sl])return gu(this,this[ks].get(e)),!1;let l=this[ks].get(e).value;return this[ia]&&(this[H2]||this[ia](e,l.value)),l.now=n,l.maxAge=i,l.value=r,this[ra]+=s-l.length,l.length=s,this.get(e),Nh(this),!0}let o=new Y2(e,r,s,n,i);return o.length>this[Sl]?(this[ia]&&this[ia](e,r),!1):(this[ra]+=o.length,this[si].unshift(o),this[ks].set(e,this[si].head),Nh(this),!0)}has(e){if(!this[ks].has(e))return!1;let r=this[ks].get(e).value;return!nE(this,r)}get(e){return bv(this,e,!0)}peek(e){return bv(this,e,!1)}pop(){let e=this[si].tail;return e?(gu(this,e),e.value):null}del(e){gu(this,this[ks].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[ks].forEach((e,r)=>bv(this,r,!1))}},bv=(t,e,r)=>{let i=t[ks].get(e);if(i){let n=i.value;if(nE(t,n)){if(gu(t,i),!t[Fh])return}else r&&(t[G2]&&(i.value.now=Date.now()),t[si].unshiftNode(i));return n.value}},nE=(t,e)=>{if(!e||!e.maxAge&&!t[xl])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[xl]&&r>t[xl]},Nh=t=>{if(t[ra]>t[Sl])for(let e=t[si].tail;t[ra]>t[Sl]&&e!==null;){let r=e.prev;gu(t,e),e=r}},gu=(t,e)=>{if(e){let r=e.value;t[ia]&&t[ia](r.key,r.value),t[ra]-=r.length,t[ks].delete(r.key),t[si].removeNode(e)}},Y2=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},q2=(t,e,r,i)=>{let n=r.value;nE(t,n)&&(gu(t,r),t[Fh]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};U2.exports=j2});var Zn=I((Ptt,W2)=>{var fu=class{constructor(e,r){if(r=Dme(r),e instanceof fu)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new fu(e.raw,r);if(e instanceof vv)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!V2(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&Tme(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=z2.get(i);if(n)return n;let s=this.options.loose,o=s?vi[di.HYPHENRANGELOOSE]:vi[di.HYPHENRANGE];e=e.replace(o,Kme(this.options.includePrerelease)),Rr("hyphen replace",e),e=e.replace(vi[di.COMPARATORTRIM],Fme),Rr("comparator trim",e,vi[di.COMPARATORTRIM]),e=e.replace(vi[di.TILDETRIM],Nme),e=e.replace(vi[di.CARETTRIM],Lme),e=e.split(/\s+/).join(" ");let a=s?vi[di.COMPARATORLOOSE]:vi[di.COMPARATOR],l=e.split(" ").map(f=>Mme(f,this.options)).join(" ").split(/\s+/).map(f=>Ome(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new vv(f,this.options)),c=l.length,u=new Map;for(let f of l){if(V2(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return z2.set(i,g),g}intersects(e,r){if(!(e instanceof fu))throw new TypeError("a Range is required");return this.set.some(i=>_2(i,r)&&e.set.some(n=>_2(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new Rme(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",Tme=t=>t.value==="",_2=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},Mme=(t,e)=>(Rr("comp",t,e),t=jme(t,e),Rr("caret",t),t=Gme(t,e),Rr("tildes",t),t=Yme(t,e),Rr("xrange",t),t=qme(t,e),Rr("stars",t),t),Ji=t=>!t||t.toLowerCase()==="x"||t==="*",Gme=(t,e)=>t.trim().split(/\s+/).map(r=>Jme(r,e)).join(" "),Jme=(t,e)=>{let r=e.loose?vi[di.TILDELOOSE]:vi[di.TILDE];return t.replace(r,(i,n,s,o,a)=>{Rr("tilde",t,i,n,s,o,a);let l;return Ji(n)?l="":Ji(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Ji(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Rr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Rr("tilde return",l),l})},jme=(t,e)=>t.trim().split(/\s+/).map(r=>Wme(r,e)).join(" "),Wme=(t,e)=>{Rr("caret",t,e);let r=e.loose?vi[di.CARETLOOSE]:vi[di.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,l)=>{Rr("caret",t,n,s,o,a,l);let c;return Ji(s)?c="":Ji(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Ji(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Rr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Rr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Rr("caret return",c),c})},Yme=(t,e)=>(Rr("replaceXRanges",t,e),t.split(/\s+/).map(r=>zme(r,e)).join(" ")),zme=(t,e)=>{t=t.trim();let r=e.loose?vi[di.XRANGELOOSE]:vi[di.XRANGE];return t.replace(r,(i,n,s,o,a,l)=>{Rr("xRange",t,i,n,s,o,a,l);let c=Ji(s),u=c||Ji(o),g=u||Ji(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Rr("xRange return",i),i})},qme=(t,e)=>(Rr("replaceStars",t,e),t.trim().replace(vi[di.STAR],"")),Ome=(t,e)=>(Rr("replaceGTE0",t,e),t.trim().replace(vi[e.includePrerelease?di.GTE0PRE:di.GTE0],"")),Kme=t=>(e,r,i,n,s,o,a,l,c,u,g,f,h)=>(Ji(i)?r="":Ji(n)?r=`>=${i}.0.0${t?"-0":""}`:Ji(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ji(c)?l="":Ji(u)?l=`<${+c+1}.0.0-0`:Ji(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:t?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),Ume=(t,e,r)=>{for(let i=0;i0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Lh=I((Dtt,X2)=>{var Th=Symbol("SemVer ANY"),Mh=class{static get ANY(){return Th}constructor(e,r){if(r=Vme(r),e instanceof Mh){if(e.loose===!!r.loose)return e;e=e.value}xv("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Th?this.value="":this.value=this.operator+this.semver.version,xv("comp",this)}parse(e){let r=this.options.loose?Z2[$2.COMPARATORLOOSE]:Z2[$2.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new eH(i[2],this.options.loose):this.semver=Th}toString(){return this.value}test(e){if(xv("Comparator.test",e,this.options.loose),this.semver===Th||e===Th)return!0;if(typeof e=="string")try{e=new eH(e,this.options)}catch(r){return!1}return Sv(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Mh))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new tH(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new tH(this.value,r).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Sv(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=Sv(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};X2.exports=Mh;var Vme=kh(),{re:Z2,t:$2}=Ql(),Sv=Bv(),xv=xh(),eH=bi(),tH=Zn()});var Oh=I((Rtt,rH)=>{var _me=Zn(),Xme=(t,e,r)=>{try{e=new _me(e,r)}catch(i){return!1}return e.test(t)};rH.exports=Xme});var nH=I((Ftt,iH)=>{var Zme=Zn(),$me=(t,e)=>new Zme(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));iH.exports=$me});var oH=I((Ntt,sH)=>{var eIe=bi(),tIe=Zn(),rIe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new tIe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new eIe(i,r))}),i};sH.exports=rIe});var AH=I((Ltt,aH)=>{var iIe=bi(),nIe=Zn(),sIe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new nIe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new iIe(i,r))}),i};aH.exports=sIe});var uH=I((Ttt,lH)=>{var kv=bi(),oIe=Zn(),cH=Dh(),aIe=(t,e)=>{t=new oIe(t,e);let r=new kv("0.0.0");if(t.test(r)||(r=new kv("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i{let a=new kv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||cH(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||cH(r,s))&&(r=s)}return r&&t.test(r)?r:null};lH.exports=aIe});var fH=I((Mtt,gH)=>{var AIe=Zn(),lIe=(t,e)=>{try{return new AIe(t,e).range||"*"}catch(r){return null}};gH.exports=lIe});var sE=I((Ott,hH)=>{var cIe=bi(),pH=Lh(),{ANY:uIe}=pH,gIe=Zn(),fIe=Oh(),dH=Dh(),CH=$I(),hIe=tE(),pIe=eE(),dIe=(t,e,r,i)=>{t=new cIe(t,i),e=new gIe(e,i);let n,s,o,a,l;switch(r){case">":n=dH,s=hIe,o=CH,a=">",l=">=";break;case"<":n=CH,s=pIe,o=dH,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fIe(t,e,i))return!1;for(let c=0;c{h.semver===uIe&&(h=new pH(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(t,f.semver))return!1;if(f.operator===l&&o(t,f.semver))return!1}return!0};hH.exports=dIe});var IH=I((Ktt,mH)=>{var CIe=sE(),mIe=(t,e,r)=>CIe(t,e,">",r);mH.exports=mIe});var yH=I((Utt,EH)=>{var IIe=sE(),EIe=(t,e,r)=>IIe(t,e,"<",r);EH.exports=EIe});var QH=I((Htt,wH)=>{var BH=Zn(),yIe=(t,e,r)=>(t=new BH(t,r),e=new BH(e,r),t.intersects(e));wH.exports=yIe});var vH=I((Gtt,bH)=>{var wIe=Oh(),BIe=Xn();bH.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((u,g)=>BIe(u,g,r));for(let u of o)wIe(u,e,r)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var xH=Zn(),oE=Lh(),{ANY:Pv}=oE,Kh=Oh(),Dv=Xn(),bIe=(t,e,r={})=>{if(t===e)return!0;t=new xH(t,r),e=new xH(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=QIe(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},QIe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Pv){if(e.length===1&&e[0].semver===Pv)return!0;r.includePrerelease?t=[new oE(">=0.0.0-0")]:t=[new oE(">=0.0.0")]}if(e.length===1&&e[0].semver===Pv){if(r.includePrerelease)return!0;e=[new oE(">=0.0.0")]}let i=new Set,n,s;for(let h of t)h.operator===">"||h.operator===">="?n=kH(n,h,r):h.operator==="<"||h.operator==="<="?s=PH(s,h,r):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=Dv(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!Kh(h,String(n),r)||s&&!Kh(h,String(s),r))return null;for(let p of e)if(!Kh(h,String(p),r))return!1;return!0}let a,l,c,u,g=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=kH(n,h,r),a===h&&a!==n)return!1}else if(n.operator===">="&&!Kh(n.semver,String(h),r))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=PH(s,h,r),l===h&&l!==s)return!1}else if(s.operator==="<="&&!Kh(s.semver,String(h),r))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},kH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},PH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};SH.exports=bIe});var Or=I((Ytt,RH)=>{var Rv=Ql();RH.exports={re:Rv.re,src:Rv.src,tokens:Rv.t,SEMVER_SPEC_VERSION:Sh().SEMVER_SPEC_VERSION,SemVer:bi(),compareIdentifiers:zI().compareIdentifiers,rcompareIdentifiers:zI().rcompareIdentifiers,parse:bl(),valid:e2(),clean:r2(),inc:n2(),diff:c2(),major:g2(),minor:h2(),patch:d2(),prerelease:m2(),compare:Xn(),rcompare:E2(),compareLoose:w2(),compareBuild:ZI(),sort:v2(),rsort:x2(),gt:Dh(),lt:$I(),eq:XI(),neq:wv(),gte:eE(),lte:tE(),cmp:Bv(),coerce:T2(),Comparator:Lh(),Range:Zn(),satisfies:Oh(),toComparators:nH(),maxSatisfying:oH(),minSatisfying:AH(),minVersion:uH(),validRange:fH(),outside:sE(),gtr:IH(),ltr:yH(),intersects:QH(),simplifyRange:vH(),subset:DH()}});var Uv=I(AE=>{"use strict";Object.defineProperty(AE,"__esModule",{value:!0});AE.VERSION=void 0;AE.VERSION="9.1.0"});var Dt=I((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(t,e,r){if(r||arguments.length===2)for(var i=0,n=e.length,s;i{(function(t,e){typeof define=="function"&&define.amd?define([],e):typeof lE=="object"&&lE.exports?lE.exports=e():t.regexpToAst=e()})(typeof self!="undefined"?self:YH,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},t.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var d=this.disjunction();this.consumeChar("/");for(var m={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(m,"global");break;case"i":o(m,"ignoreCase");break;case"m":o(m,"multiLine");break;case"u":o(m,"unicode");break;case"y":o(m,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:m,value:d,loc:this.loc(0)}},t.prototype.disjunction=function(){var p=[],d=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(d)}},t.prototype.alternative=function(){for(var p=[],d=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(d)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var d;switch(this.popChar()){case"=":d="Lookahead";break;case"!":d="NegativeLookahead";break}a(d);var m=this.disjunction();return this.consumeChar(")"),{type:d,value:m,loc:this.loc(p)}}l()},t.prototype.quantifier=function(p){var d,m=this.idx;switch(this.popChar()){case"*":d={atLeast:0,atMost:Infinity};break;case"+":d={atLeast:1,atMost:Infinity};break;case"?":d={atLeast:0,atMost:1};break;case"{":var E=this.integerIncludingZero();switch(this.popChar()){case"}":d={atLeast:E,atMost:E};break;case",":var B;this.isDigit()?(B=this.integerIncludingZero(),d={atLeast:E,atMost:B}):d={atLeast:E,atMost:Infinity},this.consumeChar("}");break}if(p===!0&&d===void 0)return;a(d);break}if(!(p===!0&&d===void 0))return a(d),this.peekChar(0)==="?"?(this.consumeChar("?"),d.greedy=!1):d.greedy=!0,d.type="Quantifier",d.loc=this.loc(m),d},t.prototype.atom=function(){var p,d=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(d),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` +`),n("\r"),n("\u2028"),n("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},t.prototype.characterClassEscape=function(){var p,d=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,d=!0;break;case"s":p=f;break;case"S":p=f,d=!0;break;case"w":p=g;break;case"W":p=g,d=!0;break}return a(p),{type:"Set",value:p,complement:d}},t.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` +`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var d=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:d}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},t.prototype.characterClass=function(){var p=[],d=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),d=!0);this.isClassAtom();){var m=this.classAtom(),E=m.type==="Character";if(E&&this.isRangeDash()){this.consumeChar("-");var B=this.classAtom(),b=B.type==="Character";if(b){if(B.value=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,d){p.length!==void 0?p.forEach(function(m){d.push(m)}):d.push(p)}function o(p,d){if(p[d]===!0)throw"duplicate flag "+d;p[d]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` +`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var d in p){var m=p[d];p.hasOwnProperty(d)&&(m.type!==void 0?this.visit(m):Array.isArray(m)&&m.forEach(function(E){this.visit(E)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:t,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var gE=I(Iu=>{"use strict";Object.defineProperty(Iu,"__esModule",{value:!0});Iu.clearRegExpParserCache=Iu.getRegExpAst=void 0;var FIe=cE(),uE={},NIe=new FIe.RegExpParser;function LIe(t){var e=t.toString();if(uE.hasOwnProperty(e))return uE[e];var r=NIe.pattern(e);return uE[e]=r,r}Iu.getRegExpAst=LIe;function TIe(){uE={}}Iu.clearRegExpParserCache=TIe});var VH=I(fn=>{"use strict";var MIe=fn&&fn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(fn,"__esModule",{value:!0});fn.canMatchCharCode=fn.firstCharOptimizedIndices=fn.getOptimizedStartCodesIndices=fn.failedOptimizationPrefixMsg=void 0;var qH=cE(),$n=Dt(),JH=gE(),sa=Hv(),WH="Complement Sets are not supported for first char optimization";fn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: +`;function OIe(t,e){e===void 0&&(e=!1);try{var r=(0,JH.getRegExpAst)(t),i=fE(r.value,{},r.flags.ignoreCase);return i}catch(s){if(s.message===WH)e&&(0,$n.PRINT_WARNING)(""+fn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+t.toString()+` > +`)+` Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,$n.PRINT_ERROR)(fn.failedOptimizationPrefixMsg+` +`+(" Failed parsing: < "+t.toString()+` > +`)+(" Using the regexp-to-ast library version: "+qH.VERSION+` +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}fn.getOptimizedStartCodesIndices=OIe;function fE(t,e,r){switch(t.type){case"Disjunction":for(var i=0;i=sa.minOptimizationVal)for(var f=u.from>=sa.minOptimizationVal?u.from:sa.minOptimizationVal,h=u.to,p=(0,sa.charCodeToOptimizedIndex)(f),d=(0,sa.charCodeToOptimizedIndex)(h),m=p;m<=d;m++)e[m]=m}}});break;case"Group":fE(o.value,e,r);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&Gv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,$n.values)(e)}fn.firstCharOptimizedIndices=fE;function hE(t,e,r){var i=(0,sa.charCodeToOptimizedIndex)(t);e[i]=i,r===!0&&KIe(t,e)}function KIe(t,e){var r=String.fromCharCode(t),i=r.toUpperCase();if(i!==r){var n=(0,sa.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=r.toLowerCase();if(s!==r){var n=(0,sa.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function zH(t,e){return(0,$n.find)(t.value,function(r){if(typeof r=="number")return(0,$n.contains)(e,r);var i=r;return(0,$n.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function Gv(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?(0,$n.isArray)(t.value)?(0,$n.every)(t.value,Gv):Gv(t.value):!1}var UIe=function(t){MIe(e,t);function e(r){var i=t.call(this)||this;return i.targetCharCodes=r,i.found=!1,i}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case"Lookahead":this.visitLookahead(r);return;case"NegativeLookahead":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){(0,$n.contains)(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?zH(r,this.targetCharCodes)===void 0&&(this.found=!0):zH(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(qH.BaseRegExpVisitor);function HIe(t,e){if(e instanceof RegExp){var r=(0,JH.getRegExpAst)(e),i=new UIe(t);return i.visit(r),i.found}else return(0,$n.find)(e,function(n){return(0,$n.contains)(t,n.charCodeAt(0))})!==void 0}fn.canMatchCharCode=HIe});var Hv=I(je=>{"use strict";var _H=je&&je.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(je,"__esModule",{value:!0});je.charCodeToOptimizedIndex=je.minOptimizationVal=je.buildLineBreakIssueMessage=je.LineTerminatorOptimizedTester=je.isShortPattern=je.isCustomPattern=je.cloneEmptyGroups=je.performWarningRuntimeChecks=je.performRuntimeChecks=je.addStickyFlag=je.addStartOfInput=je.findUnreachablePatterns=je.findModesThatDoNotExist=je.findInvalidGroupType=je.findDuplicatePatterns=je.findUnsupportedFlags=je.findStartOfInputAnchor=je.findEmptyMatchRegExps=je.findEndOfInputAnchor=je.findInvalidPatterns=je.findMissingPatterns=je.validatePatterns=je.analyzeTokenTypes=je.enableSticky=je.disableSticky=je.SUPPORT_STICKY=je.MODES=je.DEFAULT_MODE=void 0;var XH=cE(),zt=Gh(),Ee=Dt(),Eu=VH(),ZH=gE(),ao="PATTERN";je.DEFAULT_MODE="defaultMode";je.MODES="modes";je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function GIe(){je.SUPPORT_STICKY=!1}je.disableSticky=GIe;function jIe(){je.SUPPORT_STICKY=!0}je.enableSticky=jIe;function qIe(t,e){e=(0,Ee.defaults)(e,{useSticky:je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(B,b){return b()}});var r=e.tracer;r("initCharCodeToOptimizedIndexMap",function(){YIe()});var i;r("Reject Lexer.NA",function(){i=(0,Ee.reject)(t,function(B){return B[ao]===zt.Lexer.NA})});var n=!1,s;r("Transform Patterns",function(){n=!1,s=(0,Ee.map)(i,function(B){var b=B[ao];if((0,Ee.isRegExp)(b)){var R=b.source;return R.length===1&&R!=="^"&&R!=="$"&&R!=="."&&!b.ignoreCase?R:R.length===2&&R[0]==="\\"&&!(0,Ee.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],R[1])?R[1]:e.useSticky?Yv(b):jv(b)}else{if((0,Ee.isFunction)(b))return n=!0,{exec:b};if((0,Ee.has)(b,"exec"))return n=!0,b;if(typeof b=="string"){if(b.length===1)return b;var H=b.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),L=new RegExp(H);return e.useSticky?Yv(L):jv(L)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;r("misc mapping",function(){o=(0,Ee.map)(i,function(B){return B.tokenTypeIdx}),a=(0,Ee.map)(i,function(B){var b=B.GROUP;if(b!==zt.Lexer.SKIPPED){if((0,Ee.isString)(b))return b;if((0,Ee.isUndefined)(b))return!1;throw Error("non exhaustive match")}}),l=(0,Ee.map)(i,function(B){var b=B.LONGER_ALT;if(b){var R=(0,Ee.isArray)(b)?(0,Ee.map)(b,function(H){return(0,Ee.indexOf)(i,H)}):[(0,Ee.indexOf)(i,b)];return R}}),c=(0,Ee.map)(i,function(B){return B.PUSH_MODE}),u=(0,Ee.map)(i,function(B){return(0,Ee.has)(B,"POP_MODE")})});var g;r("Line Terminator Handling",function(){var B=tG(e.lineTerminatorCharacters);g=(0,Ee.map)(i,function(b){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Ee.map)(i,function(b){if((0,Ee.has)(b,"LINE_BREAKS"))return b.LINE_BREAKS;if(eG(b,B)===!1)return(0,Eu.canMatchCharCode)(B,b.PATTERN)}))});var f,h,p,d;r("Misc Mapping #2",function(){f=(0,Ee.map)(i,qv),h=(0,Ee.map)(s,$H),p=(0,Ee.reduce)(i,function(B,b){var R=b.GROUP;return(0,Ee.isString)(R)&&R!==zt.Lexer.SKIPPED&&(B[R]=[]),B},{}),d=(0,Ee.map)(s,function(B,b){return{pattern:s[b],longerAlt:l[b],canLineTerminator:g[b],isCustom:f[b],short:h[b],group:a[b],push:c[b],pop:u[b],tokenTypeIdx:o[b],tokenType:i[b]}})});var m=!0,E=[];return e.safeMode||r("First Char Optimization",function(){E=(0,Ee.reduce)(i,function(B,b,R){if(typeof b.PATTERN=="string"){var H=b.PATTERN.charCodeAt(0),L=Wv(H);Jv(B,L,d[R])}else if((0,Ee.isArray)(b.START_CHARS_HINT)){var K;(0,Ee.forEach)(b.START_CHARS_HINT,function(ne){var q=typeof ne=="string"?ne.charCodeAt(0):ne,A=Wv(q);K!==A&&(K=A,Jv(B,A,d[R]))})}else if((0,Ee.isRegExp)(b.PATTERN))if(b.PATTERN.unicode)m=!1,e.ensureOptimizations&&(0,Ee.PRINT_ERROR)(""+Eu.failedOptimizationPrefixMsg+(" Unable to analyze < "+b.PATTERN.toString()+` > pattern. +`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var J=(0,Eu.getOptimizedStartCodesIndices)(b.PATTERN,e.ensureOptimizations);(0,Ee.isEmpty)(J)&&(m=!1),(0,Ee.forEach)(J,function(ne){Jv(B,ne,d[R])})}else e.ensureOptimizations&&(0,Ee.PRINT_ERROR)(""+Eu.failedOptimizationPrefixMsg+(" TokenType: <"+b.name+`> is using a custom token pattern without providing parameter. +`)+` This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),m=!1;return B},[])}),r("ArrayPacking",function(){E=(0,Ee.packArray)(E)}),{emptyGroups:p,patternIdxToConfig:d,charCodeToPatternIdxToConfig:E,hasCustom:n,canBeOptimized:m}}je.analyzeTokenTypes=qIe;function WIe(t,e){var r=[],i=rG(t);r=r.concat(i.errors);var n=iG(i.valid),s=n.valid;return r=r.concat(n.errors),r=r.concat(JIe(s)),r=r.concat(nG(s)),r=r.concat(sG(s,e)),r=r.concat(oG(s)),r}je.validatePatterns=WIe;function JIe(t){var e=[],r=(0,Ee.filter)(t,function(i){return(0,Ee.isRegExp)(i[ao])});return e=e.concat(aG(r)),e=e.concat(lG(r)),e=e.concat(cG(r)),e=e.concat(uG(r)),e=e.concat(AG(r)),e}function rG(t){var e=(0,Ee.filter)(t,function(n){return!(0,Ee.has)(n,ao)}),r=(0,Ee.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:zt.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Ee.difference)(t,e);return{errors:r,valid:i}}je.findMissingPatterns=rG;function iG(t){var e=(0,Ee.filter)(t,function(n){var s=n[ao];return!(0,Ee.isRegExp)(s)&&!(0,Ee.isFunction)(s)&&!(0,Ee.has)(s,"exec")&&!(0,Ee.isString)(s)}),r=(0,Ee.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:zt.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Ee.difference)(t,e);return{errors:r,valid:i}}je.findInvalidPatterns=iG;var zIe=/[^\\][\$]/;function aG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ee.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return zIe.test(s.source)}}),i=(0,Ee.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findEndOfInputAnchor=aG;function AG(t){var e=(0,Ee.filter)(t,function(i){var n=i[ao];return n.test("")}),r=(0,Ee.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:zt.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return r}je.findEmptyMatchRegExps=AG;var VIe=/[^\\[][\^]|^\^/;function lG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ee.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return VIe.test(s.source)}}),i=(0,Ee.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findStartOfInputAnchor=lG;function cG(t){var e=(0,Ee.filter)(t,function(i){var n=i[ao];return n instanceof RegExp&&(n.multiline||n.global)}),r=(0,Ee.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:zt.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return r}je.findUnsupportedFlags=cG;function uG(t){var e=[],r=(0,Ee.map)(t,function(s){return(0,Ee.reduce)(t,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Ee.contains)(e,a)&&a.PATTERN!==zt.Lexer.NA&&(e.push(a),o.push(a)),o},[])});r=(0,Ee.compact)(r);var i=(0,Ee.filter)(r,function(s){return s.length>1}),n=(0,Ee.map)(i,function(s){var o=(0,Ee.map)(s,function(l){return l.name}),a=(0,Ee.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:zt.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}je.findDuplicatePatterns=uG;function nG(t){var e=(0,Ee.filter)(t,function(i){if(!(0,Ee.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==zt.Lexer.SKIPPED&&n!==zt.Lexer.NA&&!(0,Ee.isString)(n)}),r=(0,Ee.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:zt.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return r}je.findInvalidGroupType=nG;function sG(t,e){var r=(0,Ee.filter)(t,function(n){return n.PUSH_MODE!==void 0&&!(0,Ee.contains)(e,n.PUSH_MODE)}),i=(0,Ee.map)(r,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:zt.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}je.findModesThatDoNotExist=sG;function oG(t){var e=[],r=(0,Ee.reduce)(t,function(i,n,s){var o=n.PATTERN;return o===zt.Lexer.NA||((0,Ee.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Ee.isRegExp)(o)&&XIe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Ee.forEach)(t,function(i,n){(0,Ee.forEach)(r,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:zt.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}je.findUnreachablePatterns=oG;function _Ie(t,e){if((0,Ee.isRegExp)(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if((0,Ee.isFunction)(e))return e(t,0,[],{});if((0,Ee.has)(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function XIe(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Ee.find)(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function jv(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}je.addStartOfInput=jv;function Yv(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}je.addStickyFlag=Yv;function ZIe(t,e,r){var i=[];return(0,Ee.has)(t,je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.DEFAULT_MODE+`> property in its definition +`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Ee.has)(t,je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.MODES+`> property in its definition +`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Ee.has)(t,je.MODES)&&(0,Ee.has)(t,je.DEFAULT_MODE)&&!(0,Ee.has)(t.modes,t.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+je.DEFAULT_MODE+": <"+t.defaultMode+`>which does not exist +`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Ee.has)(t,je.MODES)&&(0,Ee.forEach)(t.modes,function(n,s){(0,Ee.forEach)(n,function(o,a){(0,Ee.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> +`),type:zt.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}je.performRuntimeChecks=ZIe;function $Ie(t,e,r){var i=[],n=!1,s=(0,Ee.compact)((0,Ee.flatten)((0,Ee.mapValues)(t.modes,function(l){return l}))),o=(0,Ee.reject)(s,function(l){return l[ao]===zt.Lexer.NA}),a=tG(r);return e&&(0,Ee.forEach)(o,function(l){var c=eG(l,a);if(c!==!1){var u=gG(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Ee.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Eu.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:zt.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}je.performWarningRuntimeChecks=$Ie;function eEe(t){var e={},r=(0,Ee.keys)(t);return(0,Ee.forEach)(r,function(i){var n=t[i];if((0,Ee.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}je.cloneEmptyGroups=eEe;function qv(t){var e=t.PATTERN;if((0,Ee.isRegExp)(e))return!1;if((0,Ee.isFunction)(e))return!0;if((0,Ee.has)(e,"exec"))return!0;if((0,Ee.isString)(e))return!1;throw Error("non exhaustive match")}je.isCustomPattern=qv;function $H(t){return(0,Ee.isString)(t)&&t.length===1?t.charCodeAt(0):!1}je.isShortPattern=$H;je.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r Token Type +`)+(" Root cause: "+e.errMsg+`. +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===zt.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. +`+(" The problem is in the <"+t.name+`> Token Type +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}je.buildLineBreakIssueMessage=gG;function tG(t){var e=(0,Ee.map)(t,function(r){return(0,Ee.isString)(r)&&r.length>0?r.charCodeAt(0):r});return e}function Jv(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}je.minOptimizationVal=256;var pE=[];function Wv(t){return t255?255+~~(t/255):t}}});var yu=I(Bt=>{"use strict";Object.defineProperty(Bt,"__esModule",{value:!0});Bt.isTokenType=Bt.hasExtendingTokensTypesMapProperty=Bt.hasExtendingTokensTypesProperty=Bt.hasCategoriesProperty=Bt.hasShortKeyProperty=Bt.singleAssignCategoriesToksMap=Bt.assignCategoriesMapProp=Bt.assignCategoriesTokensProp=Bt.assignTokenDefaultProps=Bt.expandCategories=Bt.augmentTokenTypes=Bt.tokenIdxToClass=Bt.tokenShortNameIdx=Bt.tokenStructuredMatcherNoCategories=Bt.tokenStructuredMatcher=void 0;var Kr=Dt();function tEe(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}Bt.tokenStructuredMatcher=tEe;function rEe(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}Bt.tokenStructuredMatcherNoCategories=rEe;Bt.tokenShortNameIdx=1;Bt.tokenIdxToClass={};function iEe(t){var e=fG(t);hG(e),dG(e),pG(e),(0,Kr.forEach)(e,function(r){r.isParent=r.categoryMatches.length>0})}Bt.augmentTokenTypes=iEe;function fG(t){for(var e=(0,Kr.cloneArr)(t),r=t,i=!0;i;){r=(0,Kr.compact)((0,Kr.flatten)((0,Kr.map)(r,function(s){return s.CATEGORIES})));var n=(0,Kr.difference)(r,e);e=e.concat(n),(0,Kr.isEmpty)(n)?i=!1:r=n}return e}Bt.expandCategories=fG;function hG(t){(0,Kr.forEach)(t,function(e){CG(e)||(Bt.tokenIdxToClass[Bt.tokenShortNameIdx]=e,e.tokenTypeIdx=Bt.tokenShortNameIdx++),zv(e)&&!(0,Kr.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),zv(e)||(e.CATEGORIES=[]),mG(e)||(e.categoryMatches=[]),IG(e)||(e.categoryMatchesMap={})})}Bt.assignTokenDefaultProps=hG;function pG(t){(0,Kr.forEach)(t,function(e){e.categoryMatches=[],(0,Kr.forEach)(e.categoryMatchesMap,function(r,i){e.categoryMatches.push(Bt.tokenIdxToClass[i].tokenTypeIdx)})})}Bt.assignCategoriesTokensProp=pG;function dG(t){(0,Kr.forEach)(t,function(e){Vv([],e)})}Bt.assignCategoriesMapProp=dG;function Vv(t,e){(0,Kr.forEach)(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),(0,Kr.forEach)(e.CATEGORIES,function(r){var i=t.concat(e);(0,Kr.contains)(i,r)||Vv(i,r)})}Bt.singleAssignCategoriesToksMap=Vv;function CG(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.hasShortKeyProperty=CG;function zv(t){return(0,Kr.has)(t,"CATEGORIES")}Bt.hasCategoriesProperty=zv;function mG(t){return(0,Kr.has)(t,"categoryMatches")}Bt.hasExtendingTokensTypesProperty=mG;function IG(t){return(0,Kr.has)(t,"categoryMatchesMap")}Bt.hasExtendingTokensTypesMapProperty=IG;function nEe(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.isTokenType=nEe});var _v=I(dE=>{"use strict";Object.defineProperty(dE,"__esModule",{value:!0});dE.defaultLexerErrorProvider=void 0;dE.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,r,i,n){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+r+" characters.")}}});var Gh=I(Rl=>{"use strict";Object.defineProperty(Rl,"__esModule",{value:!0});Rl.Lexer=Rl.LexerDefinitionErrorType=void 0;var Ps=Hv(),Vt=Dt(),sEe=yu(),oEe=_v(),aEe=gE(),AEe;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(AEe=Rl.LexerDefinitionErrorType||(Rl.LexerDefinitionErrorType={}));var jh={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:oEe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(jh);var lEe=function(){function t(e,r){var i=this;if(r===void 0&&(r=jh),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=(0,Vt.merge)(jh,r);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===jh.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Ps.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===jh.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,Vt.isArray)(e)?(s={modes:{}},s.modes[Ps.DEFAULT_MODE]=(0,Vt.cloneArr)(e),s[Ps.DEFAULT_MODE]=Ps.DEFAULT_MODE):(o=!1,s=(0,Vt.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Ps.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,Vt.forEach)(s.modes,function(u,g){s.modes[g]=(0,Vt.reject)(u,function(f){return(0,Vt.isUndefined)(f)})});var a=(0,Vt.keys)(s.modes);if((0,Vt.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.validatePatterns)(u,a))}),(0,Vt.isEmpty)(i.lexerDefinitionErrors)){(0,sEe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Ps.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,Vt.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,Vt.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,Vt.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+c)}(0,Vt.forEach)(i.lexerDefinitionWarning,function(u){(0,Vt.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Ps.SUPPORT_STICKY?(i.chopInput=Vt.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=Vt.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=Vt.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=Vt.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=Vt.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,Vt.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(r.ensureOptimizations&&!(0,Vt.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,aEe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,Vt.toFastProperties)(i)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!(0,Vt.isEmpty)(this.lexerDefinitionErrors)){var i=(0,Vt.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}var s=this.tokenizeInternal(e,r);return s},t.prototype.tokenizeInternal=function(e,r){var i=this,n,s,o,a,l,c,u,g,f,h,p,d,m,E,B,b,R=e,H=R.length,L=0,K=0,J=this.hasCustom?0:Math.floor(e.length/10),ne=new Array(J),q=[],A=this.trackStartLines?1:void 0,V=this.trackStartLines?1:void 0,W=(0,Ps.cloneEmptyGroups)(this.emptyGroups),X=this.trackStartLines,F=this.config.lineTerminatorsPattern,D=0,he=[],pe=[],Ne=[],Pe=[];Object.freeze(Pe);var qe=void 0;function re(){return he}function se(wr){var Ui=(0,Ps.charCodeToOptimizedIndex)(wr),ws=pe[Ui];return ws===void 0?Pe:ws}var be=function(wr){if(Ne.length===1&&wr.tokenType.PUSH_MODE===void 0){var Ui=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(wr);q.push({offset:wr.startOffset,line:wr.startLine!==void 0?wr.startLine:void 0,column:wr.startColumn!==void 0?wr.startColumn:void 0,length:wr.image.length,message:Ui})}else{Ne.pop();var ws=(0,Vt.last)(Ne);he=i.patternIdxToConfig[ws],pe=i.charCodeToPatternIdxToConfig[ws],D=he.length;var Tf=i.canModeBeOptimized[ws]&&i.config.safeMode===!1;pe&&Tf?qe=se:qe=re}};function ae(wr){Ne.push(wr),pe=this.charCodeToPatternIdxToConfig[wr],he=this.patternIdxToConfig[wr],D=he.length,D=he.length;var Ui=this.canModeBeOptimized[wr]&&this.config.safeMode===!1;pe&&Ui?qe=se:qe=re}ae.call(this,r);for(var Ae;Lc.length){c=a,u=g,Ae=Oe;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,d=this.createTokenInstance(c,L,p,Ae.tokenType,A,V,f),this.handlePayload(d,u),h===!1?K=this.addToken(ne,K,d):W[h].push(d)),e=this.chopInput(e,f),L=L+f,V=this.computeNewColumn(V,f),X===!0&&Ae.canLineTerminator===!0){var dt=0,ri=void 0,ii=void 0;F.lastIndex=0;do ri=F.test(c),ri===!0&&(ii=F.lastIndex-1,dt++);while(ri===!0);dt!==0&&(A=A+dt,V=f-ii,this.updateTokenEndLineColumnLocation(d,h,ii,dt,A,V,f))}this.handleModes(Ae,be,ae,d)}else{for(var an=L,yr=A,Ki=V,Qi=!1;!Qi&&L <"+e+">");var n=(0,Vt.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();Rl.Lexer=lEe});var nA=I(Ci=>{"use strict";Object.defineProperty(Ci,"__esModule",{value:!0});Ci.tokenMatcher=Ci.createTokenInstance=Ci.EOF=Ci.createToken=Ci.hasTokenLabel=Ci.tokenName=Ci.tokenLabel=void 0;var Ds=Dt(),cEe=Gh(),Xv=yu();function uEe(t){return EG(t)?t.LABEL:t.name}Ci.tokenLabel=uEe;function gEe(t){return t.name}Ci.tokenName=gEe;function EG(t){return(0,Ds.isString)(t.LABEL)&&t.LABEL!==""}Ci.hasTokenLabel=EG;var fEe="parent",yG="categories",wG="label",BG="group",QG="push_mode",bG="pop_mode",vG="longer_alt",SG="line_breaks",xG="start_chars_hint";function kG(t){return hEe(t)}Ci.createToken=kG;function hEe(t){var e=t.pattern,r={};if(r.name=t.name,(0,Ds.isUndefined)(e)||(r.PATTERN=e),(0,Ds.has)(t,fEe))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Ds.has)(t,yG)&&(r.CATEGORIES=t[yG]),(0,Xv.augmentTokenTypes)([r]),(0,Ds.has)(t,wG)&&(r.LABEL=t[wG]),(0,Ds.has)(t,BG)&&(r.GROUP=t[BG]),(0,Ds.has)(t,bG)&&(r.POP_MODE=t[bG]),(0,Ds.has)(t,QG)&&(r.PUSH_MODE=t[QG]),(0,Ds.has)(t,vG)&&(r.LONGER_ALT=t[vG]),(0,Ds.has)(t,SG)&&(r.LINE_BREAKS=t[SG]),(0,Ds.has)(t,xG)&&(r.START_CHARS_HINT=t[xG]),r}Ci.EOF=kG({name:"EOF",pattern:cEe.Lexer.NA});(0,Xv.augmentTokenTypes)([Ci.EOF]);function pEe(t,e,r,i,n,s,o,a){return{image:e,startOffset:r,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}Ci.createTokenInstance=pEe;function dEe(t,e){return(0,Xv.tokenStructuredMatcher)(t,e)}Ci.tokenMatcher=dEe});var hn=I(Tt=>{"use strict";var oa=Tt&&Tt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Tt,"__esModule",{value:!0});Tt.serializeProduction=Tt.serializeGrammar=Tt.Terminal=Tt.Alternation=Tt.RepetitionWithSeparator=Tt.Repetition=Tt.RepetitionMandatoryWithSeparator=Tt.RepetitionMandatory=Tt.Option=Tt.Alternative=Tt.Rule=Tt.NonTerminal=Tt.AbstractProduction=void 0;var $t=Dt(),CEe=nA(),Ao=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),(0,$t.forEach)(this.definition,function(r){r.accept(e)})},t}();Tt.AbstractProduction=Ao;var PG=function(t){oa(e,t);function e(r){var i=t.call(this,[])||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(Ao);Tt.NonTerminal=PG;var DG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.orgText="",(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Rule=DG;var RG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.ignoreAmbiguities=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Alternative=RG;var FG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Option=FG;var NG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatory=NG;var LG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatoryWithSeparator=LG;var TG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Repetition=TG;var MG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionWithSeparator=MG;var OG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(Ao);Tt.Alternation=OG;var CE=function(){function t(e){this.idx=1,(0,$t.assign)(this,(0,$t.pick)(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();Tt.Terminal=CE;function mEe(t){return(0,$t.map)(t,Yh)}Tt.serializeGrammar=mEe;function Yh(t){function e(s){return(0,$t.map)(s,Yh)}if(t instanceof PG){var r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return(0,$t.isString)(t.label)&&(r.label=t.label),r}else{if(t instanceof RG)return{type:"Alternative",definition:e(t.definition)};if(t instanceof FG)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof NG)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof LG)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Yh(new CE({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof MG)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Yh(new CE({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof TG)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof OG)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof CE){var i={type:"Terminal",name:t.terminalType.name,label:(0,CEe.tokenLabel)(t.terminalType),idx:t.idx};(0,$t.isString)(t.label)&&(i.terminalLabel=t.label);var n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(i.pattern=(0,$t.isRegExp)(n)?n.source:n),i}else{if(t instanceof DG)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}Tt.serializeProduction=Yh});var IE=I(mE=>{"use strict";Object.defineProperty(mE,"__esModule",{value:!0});mE.RestWalker=void 0;var Zv=Dt(),pn=hn(),IEe=function(){function t(){}return t.prototype.walk=function(e,r){var i=this;r===void 0&&(r=[]),(0,Zv.forEach)(e.definition,function(n,s){var o=(0,Zv.drop)(e.definition,s+1);if(n instanceof pn.NonTerminal)i.walkProdRef(n,o,r);else if(n instanceof pn.Terminal)i.walkTerminal(n,o,r);else if(n instanceof pn.Alternative)i.walkFlat(n,o,r);else if(n instanceof pn.Option)i.walkOption(n,o,r);else if(n instanceof pn.RepetitionMandatory)i.walkAtLeastOne(n,o,r);else if(n instanceof pn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,r);else if(n instanceof pn.RepetitionWithSeparator)i.walkManySep(n,o,r);else if(n instanceof pn.Repetition)i.walkMany(n,o,r);else if(n instanceof pn.Alternation)i.walkOr(n,o,r);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,r,i){},t.prototype.walkProdRef=function(e,r,i){},t.prototype.walkFlat=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkOption=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkAtLeastOne=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkAtLeastOneSep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkMany=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkManySep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkOr=function(e,r,i){var n=this,s=r.concat(i);(0,Zv.forEach)(e.definition,function(o){var a=new pn.Alternative({definition:[o]});n.walk(a,s)})},t}();mE.RestWalker=IEe;function KG(t,e,r){var i=[new pn.Option({definition:[new pn.Terminal({terminalType:t.separator})].concat(t.definition)})],n=i.concat(e,r);return n}});var wu=I(EE=>{"use strict";Object.defineProperty(EE,"__esModule",{value:!0});EE.GAstVisitor=void 0;var lo=hn(),EEe=function(){function t(){}return t.prototype.visit=function(e){var r=e;switch(r.constructor){case lo.NonTerminal:return this.visitNonTerminal(r);case lo.Alternative:return this.visitAlternative(r);case lo.Option:return this.visitOption(r);case lo.RepetitionMandatory:return this.visitRepetitionMandatory(r);case lo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(r);case lo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(r);case lo.Repetition:return this.visitRepetition(r);case lo.Alternation:return this.visitAlternation(r);case lo.Terminal:return this.visitTerminal(r);case lo.Rule:return this.visitRule(r);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();EE.GAstVisitor=EEe});var Jh=I(Si=>{"use strict";var yEe=Si&&Si.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Si,"__esModule",{value:!0});Si.collectMethods=Si.DslMethodsCollectorVisitor=Si.getProductionDslName=Si.isBranchingProd=Si.isOptionalProd=Si.isSequenceProd=void 0;var qh=Dt(),dr=hn(),wEe=wu();function BEe(t){return t instanceof dr.Alternative||t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionMandatory||t instanceof dr.RepetitionMandatoryWithSeparator||t instanceof dr.RepetitionWithSeparator||t instanceof dr.Terminal||t instanceof dr.Rule}Si.isSequenceProd=BEe;function $v(t,e){e===void 0&&(e=[]);var r=t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionWithSeparator;return r?!0:t instanceof dr.Alternation?(0,qh.some)(t.definition,function(i){return $v(i,e)}):t instanceof dr.NonTerminal&&(0,qh.contains)(e,t)?!1:t instanceof dr.AbstractProduction?(t instanceof dr.NonTerminal&&e.push(t),(0,qh.every)(t.definition,function(i){return $v(i,e)})):!1}Si.isOptionalProd=$v;function QEe(t){return t instanceof dr.Alternation}Si.isBranchingProd=QEe;function bEe(t){if(t instanceof dr.NonTerminal)return"SUBRULE";if(t instanceof dr.Option)return"OPTION";if(t instanceof dr.Alternation)return"OR";if(t instanceof dr.RepetitionMandatory)return"AT_LEAST_ONE";if(t instanceof dr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(t instanceof dr.RepetitionWithSeparator)return"MANY_SEP";if(t instanceof dr.Repetition)return"MANY";if(t instanceof dr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Si.getProductionDslName=bEe;var UG=function(t){yEe(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.separator="-",r.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},r}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(r){var i=r.terminalType.name+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitNonTerminal=function(r){var i=r.nonTerminalName+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitOption=function(r){this.dslMethods.option.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.dslMethods.repetitionWithSeparator.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.dslMethods.repetitionMandatory.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.dslMethods.repetitionMandatoryWithSeparator.push(r)},e.prototype.visitRepetition=function(r){this.dslMethods.repetition.push(r)},e.prototype.visitAlternation=function(r){this.dslMethods.alternation.push(r)},e}(wEe.GAstVisitor);Si.DslMethodsCollectorVisitor=UG;var yE=new UG;function vEe(t){yE.reset(),t.accept(yE);var e=yE.dslMethods;return yE.reset(),e}Si.collectMethods=vEe});var tS=I(co=>{"use strict";Object.defineProperty(co,"__esModule",{value:!0});co.firstForTerminal=co.firstForBranching=co.firstForSequence=co.first=void 0;var wE=Dt(),HG=hn(),eS=Jh();function BE(t){if(t instanceof HG.NonTerminal)return BE(t.referencedRule);if(t instanceof HG.Terminal)return YG(t);if((0,eS.isSequenceProd)(t))return GG(t);if((0,eS.isBranchingProd)(t))return jG(t);throw Error("non exhaustive match")}co.first=BE;function GG(t){for(var e=[],r=t.definition,i=0,n=r.length>i,s,o=!0;n&&o;)s=r[i],o=(0,eS.isOptionalProd)(s),e=e.concat(BE(s)),i=i+1,n=r.length>i;return(0,wE.uniq)(e)}co.firstForSequence=GG;function jG(t){var e=(0,wE.map)(t.definition,function(r){return BE(r)});return(0,wE.uniq)((0,wE.flatten)(e))}co.firstForBranching=jG;function YG(t){return[t.terminalType]}co.firstForTerminal=YG});var rS=I(QE=>{"use strict";Object.defineProperty(QE,"__esModule",{value:!0});QE.IN=void 0;QE.IN="_~IN~_"});var VG=I(es=>{"use strict";var SEe=es&&es.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(es,"__esModule",{value:!0});es.buildInProdFollowPrefix=es.buildBetweenProdsFollowPrefix=es.computeAllProdsFollows=es.ResyncFollowsWalker=void 0;var xEe=IE(),kEe=tS(),qG=Dt(),JG=rS(),PEe=hn(),zG=function(t){SEe(e,t);function e(r){var i=t.call(this)||this;return i.topProd=r,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,i,n){},e.prototype.walkProdRef=function(r,i,n){var s=WG(r.referencedRule,r.idx)+this.topProd.name,o=i.concat(n),a=new PEe.Alternative({definition:o}),l=(0,kEe.first)(a);this.follows[s]=l},e}(xEe.RestWalker);es.ResyncFollowsWalker=zG;function DEe(t){var e={};return(0,qG.forEach)(t,function(r){var i=new zG(r).startWalking();(0,qG.assign)(e,i)}),e}es.computeAllProdsFollows=DEe;function WG(t,e){return t.name+e+JG.IN}es.buildBetweenProdsFollowPrefix=WG;function REe(t){var e=t.terminalType.name;return e+t.idx+JG.IN}es.buildInProdFollowPrefix=REe});var Wh=I(aa=>{"use strict";Object.defineProperty(aa,"__esModule",{value:!0});aa.defaultGrammarValidatorErrorProvider=aa.defaultGrammarResolverErrorProvider=aa.defaultParserErrorProvider=void 0;var Bu=nA(),FEe=Dt(),Rs=Dt(),iS=hn(),_G=Jh();aa.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,i=t.previous,n=t.ruleName,s=(0,Bu.hasTokenLabel)(e),o=s?"--> "+(0,Bu.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+r.image+"' <--";return a},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,i=t.previous,n=t.customUserDescription,s=t.ruleName,o="Expecting: ",a=(0,Rs.first)(r).image,l=` +but found: '`+a+"'";if(n)return o+n+l;var c=(0,Rs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Rs.map)(c,function(h){return"["+(0,Rs.map)(h,function(p){return(0,Bu.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Rs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: +`+g.join(` +`);return o+f+l},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,i=t.customUserDescription,n=t.ruleName,s="Expecting: ",o=(0,Rs.first)(r).image,a=` +but found: '`+o+"'";if(i)return s+i+a;var l=(0,Rs.map)(e,function(u){return"["+(0,Rs.map)(u,function(g){return(0,Bu.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(aa.defaultParserErrorProvider);aa.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+t.name+"<-";return r}};aa.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(u){return u instanceof iS.Terminal?u.terminalType.name:u instanceof iS.NonTerminal?u.nonTerminalName:""}var i=t.name,n=(0,Rs.first)(e),s=n.idx,o=(0,_G.getProductionDslName)(n),a=r(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` + appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` +`),c},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. +`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. +`)+`To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix +`+("in inside <"+t.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`;return i},buildAlternationAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,i},buildEmptyRepetitionError:function(t){var e=(0,_G.getProductionDslName)(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. +This could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. +`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: +`+(" inside <"+t.topLevelRule.name+`> Rule. + has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=FEe.map(t.leftRecursionPath,function(s){return s.name}),i=e+" --> "+r.concat([e]).join(" --> "),n=`Left Recursion found in grammar. +`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) +`)+(`without consuming any Tokens. The grammar path that causes this is: + `+i+` +`)+` To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof iS.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return r}}});var $G=I(sA=>{"use strict";var NEe=sA&&sA.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(sA,"__esModule",{value:!0});sA.GastRefResolverVisitor=sA.resolveGrammar=void 0;var LEe=Tn(),XG=Dt(),TEe=wu();function MEe(t,e){var r=new ZG(t,e);return r.resolveRefs(),r.errors}sA.resolveGrammar=MEe;var ZG=function(t){NEe(e,t);function e(r,i){var n=t.call(this)||this;return n.nameToTopRule=r,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var r=this;(0,XG.forEach)((0,XG.values)(this.nameToTopRule),function(i){r.currTopLevel=i,i.accept(r)})},e.prototype.visitNonTerminal=function(r){var i=this.nameToTopRule[r.nonTerminalName];if(i)r.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,r);this.errors.push({message:n,type:LEe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:r.nonTerminalName})}},e}(TEe.GAstVisitor);sA.GastRefResolverVisitor=ZG});var Vh=I(Br=>{"use strict";var Fl=Br&&Br.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Br,"__esModule",{value:!0});Br.nextPossibleTokensAfter=Br.possiblePathsFrom=Br.NextTerminalAfterAtLeastOneSepWalker=Br.NextTerminalAfterAtLeastOneWalker=Br.NextTerminalAfterManySepWalker=Br.NextTerminalAfterManyWalker=Br.AbstractNextTerminalAfterProductionWalker=Br.NextAfterTokenWalker=Br.AbstractNextPossibleTokensWalker=void 0;var ej=IE(),xt=Dt(),OEe=tS(),Et=hn(),tj=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topProd=r,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,xt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,xt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,i){i===void 0&&(i=[]),this.found||t.prototype.walk.call(this,r,i)},e.prototype.walkProdRef=function(r,i,n){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(r.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,xt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(ej.RestWalker);Br.AbstractNextPossibleTokensWalker=tj;var KEe=function(t){Fl(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(r,i,n){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new Et.Alternative({definition:s});this.possibleTokTypes=(0,OEe.first)(o),this.found=!0}},e}(tj);Br.NextAfterTokenWalker=KEe;var zh=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topRule=r,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(ej.RestWalker);Br.AbstractNextTerminalAfterProductionWalker=zh;var UEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkMany.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManyWalker=UEe;var HEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkManySep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManySepWalker=HEe;var GEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOne.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneWalker=GEe;var jEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneSepWalker=jEe;function rj(t,e,r){r===void 0&&(r=[]),r=(0,xt.cloneArr)(r);var i=[],n=0;function s(c){return c.concat((0,xt.drop)(t,n+1))}function o(c){var u=rj(s(c),e,r);return i.concat(u)}for(;r.length=0;W--){var X=E.definition[W],F={idx:p,def:X.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m};g.push(F),g.push(o)}else if(E instanceof Et.Alternative)g.push({idx:p,def:E.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m});else if(E instanceof Et.Rule)g.push(YEe(E,p,d,m));else throw Error("non exhaustive match")}}return u}Br.nextPossibleTokensAfter=qEe;function YEe(t,e,r,i){var n=(0,xt.cloneArr)(r);n.push(t.name);var s=(0,xt.cloneArr)(i);return s.push(1),{idx:e,def:t.definition,ruleStack:n,occurrenceStack:s}}});var _h=I(Gt=>{"use strict";var ij=Gt&&Gt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Gt,"__esModule",{value:!0});Gt.areTokenCategoriesNotUsed=Gt.isStrictPrefixOfPath=Gt.containsPath=Gt.getLookaheadPathsForOptionalProd=Gt.getLookaheadPathsForOr=Gt.lookAheadSequenceFromAlternatives=Gt.buildSingleAlternativeLookaheadFunction=Gt.buildAlternativesLookAheadFunc=Gt.buildLookaheadFuncForOptionalProd=Gt.buildLookaheadFuncForOr=Gt.getProdType=Gt.PROD_TYPE=void 0;var _t=Dt(),nj=Vh(),JEe=IE(),bE=yu(),oA=hn(),WEe=wu(),zr;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(zr=Gt.PROD_TYPE||(Gt.PROD_TYPE={}));function zEe(t){if(t instanceof oA.Option)return zr.OPTION;if(t instanceof oA.Repetition)return zr.REPETITION;if(t instanceof oA.RepetitionMandatory)return zr.REPETITION_MANDATORY;if(t instanceof oA.RepetitionMandatoryWithSeparator)return zr.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof oA.RepetitionWithSeparator)return zr.REPETITION_WITH_SEPARATOR;if(t instanceof oA.Alternation)return zr.ALTERNATION;throw Error("non exhaustive match")}Gt.getProdType=zEe;function VEe(t,e,r,i,n,s){var o=sj(t,e,r),a=nS(o)?bE.tokenStructuredMatcherNoCategories:bE.tokenStructuredMatcher;return s(o,i,a,n)}Gt.buildLookaheadFuncForOr=VEe;function _Ee(t,e,r,i,n,s){var o=oj(t,e,n,r),a=nS(o)?bE.tokenStructuredMatcherNoCategories:bE.tokenStructuredMatcher;return s(o[0],a,i)}Gt.buildLookaheadFuncForOptionalProd=_Ee;function XEe(t,e,r,i){var n=t.length,s=(0,_t.every)(t,function(l){return(0,_t.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,_t.map)(l,function(b){return b.GATE}),u=0;u{"use strict";var aS=Mt&&Mt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Mt,"__esModule",{value:!0});Mt.checkPrefixAlternativesAmbiguities=Mt.validateSomeNonEmptyLookaheadPath=Mt.validateTooManyAlts=Mt.RepetionCollector=Mt.validateAmbiguousAlternationAlternatives=Mt.validateEmptyOrAlternative=Mt.getFirstNoneTerminal=Mt.validateNoLeftRecursion=Mt.validateRuleIsOverridden=Mt.validateRuleDoesNotAlreadyExist=Mt.OccurrenceValidationCollector=Mt.identifyProductionForDuplicates=Mt.validateGrammar=void 0;var jt=Dt(),Cr=Dt(),uo=Tn(),AS=Jh(),Qu=_h(),rye=Vh(),Fs=hn(),lS=wu();function sye(t,e,r,i,n){var s=jt.map(t,function(h){return iye(h,i)}),o=jt.map(t,function(h){return cS(h,h,i)}),a=[],l=[],c=[];(0,Cr.every)(o,Cr.isEmpty)&&(a=(0,Cr.map)(t,function(h){return uj(h,i)}),l=(0,Cr.map)(t,function(h){return gj(h,e,i)}),c=hj(t,e,i));var u=nye(t,r,i),g=(0,Cr.map)(t,function(h){return fj(h,i)}),f=(0,Cr.map)(t,function(h){return cj(h,t,n,i)});return jt.flatten(s.concat(c,o,a,l,u,g,f))}Mt.validateGrammar=sye;function iye(t,e){var r=new Cj;t.accept(r);var i=r.allProductions,n=jt.groupBy(i,pj),s=jt.pick(n,function(a){return a.length>1}),o=jt.map(jt.values(s),function(a){var l=jt.first(a),c=e.buildDuplicateFoundError(t,a),u=(0,AS.getProductionDslName)(l),g={message:c,type:uo.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:u,occurrence:l.idx},f=dj(l);return f&&(g.parameter=f),g});return o}function pj(t){return(0,AS.getProductionDslName)(t)+"_#_"+t.idx+"_#_"+dj(t)}Mt.identifyProductionForDuplicates=pj;function dj(t){return t instanceof Fs.Terminal?t.terminalType.name:t instanceof Fs.NonTerminal?t.nonTerminalName:""}var Cj=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitNonTerminal=function(r){this.allProductions.push(r)},e.prototype.visitOption=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e.prototype.visitAlternation=function(r){this.allProductions.push(r)},e.prototype.visitTerminal=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.OccurrenceValidationCollector=Cj;function cj(t,e,r,i){var n=[],s=(0,Cr.reduce)(e,function(a,l){return l.name===t.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});n.push({message:o,type:uo.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return n}Mt.validateRuleDoesNotAlreadyExist=cj;function oye(t,e,r){var i=[],n;return jt.contains(e,t)||(n="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+r+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:uo.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),i}Mt.validateRuleIsOverridden=oye;function cS(t,e,r,i){i===void 0&&(i=[]);var n=[],s=Xh(e.definition);if(jt.isEmpty(s))return[];var o=t.name,a=jt.contains(s,t);a&&n.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:i}),type:uo.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=jt.difference(s,i.concat([t])),c=jt.map(l,function(u){var g=jt.cloneArr(i);return g.push(u),cS(t,u,r,g)});return n.concat(jt.flatten(c))}Mt.validateNoLeftRecursion=cS;function Xh(t){var e=[];if(jt.isEmpty(t))return e;var r=jt.first(t);if(r instanceof Fs.NonTerminal)e.push(r.referencedRule);else if(r instanceof Fs.Alternative||r instanceof Fs.Option||r instanceof Fs.RepetitionMandatory||r instanceof Fs.RepetitionMandatoryWithSeparator||r instanceof Fs.RepetitionWithSeparator||r instanceof Fs.Repetition)e=e.concat(Xh(r.definition));else if(r instanceof Fs.Alternation)e=jt.flatten(jt.map(r.definition,function(o){return Xh(o.definition)}));else if(!(r instanceof Fs.Terminal))throw Error("non exhaustive match");var i=(0,AS.isOptionalProd)(r),n=t.length>1;if(i&&n){var s=jt.drop(t);return e.concat(Xh(s))}else return e}Mt.getFirstNoneTerminal=Xh;var uS=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(lS.GAstVisitor);function uj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){var a=jt.dropRight(o.definition),l=jt.map(a,function(c,u){var g=(0,rye.nextPossibleTokensAfter)([c],[],null,1);return jt.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:u}),type:uo.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(jt.compact(l))},[]);return n}Mt.validateEmptyOrAlternative=uj;function gj(t,e,r){var i=new uS;t.accept(i);var n=i.alternations;n=(0,Cr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=jt.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,Qu.getLookaheadPathsForOr)(l,t,c,a),g=aye(u,a,t,r),f=mj(u,a,t,r);return o.concat(g,f)},[]);return s}Mt.validateAmbiguousAlternationAlternatives=gj;var Ij=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.RepetionCollector=Ij;function fj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:uo.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),s},[]);return n}Mt.validateTooManyAlts=fj;function hj(t,e,r){var i=[];return(0,Cr.forEach)(t,function(n){var s=new Ij;n.accept(s);var o=s.allProductions;(0,Cr.forEach)(o,function(a){var l=(0,Qu.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,Qu.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,Cr.isEmpty)((0,Cr.flatten)(f))){var h=r.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:uo.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}Mt.validateSomeNonEmptyLookaheadPath=hj;function aye(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,Cr.forEach)(l,function(u){var g=[c];(0,Cr.forEach)(t,function(f,h){c!==h&&(0,Qu.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,Qu.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=jt.map(s,function(a){var l=(0,Cr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:uo.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function mj(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(o,a,l){var c=(0,Cr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,Cr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,Cr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.validateGrammar=bu.resolveGrammar=void 0;var fS=Dt(),Aye=$G(),lye=gS(),Ej=Wh();function cye(t){t=(0,fS.defaults)(t,{errMsgProvider:Ej.defaultGrammarResolverErrorProvider});var e={};return(0,fS.forEach)(t.rules,function(r){e[r.name]=r}),(0,Aye.resolveGrammar)(e,t.errMsgProvider)}bu.resolveGrammar=cye;function uye(t){return t=(0,fS.defaults)(t,{errMsgProvider:Ej.defaultGrammarValidatorErrorProvider}),(0,lye.validateGrammar)(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}bu.validateGrammar=uye});var vu=I(dn=>{"use strict";var Zh=dn&&dn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.EarlyExitException=dn.NotAllInputParsedException=dn.NoViableAltException=dn.MismatchedTokenException=dn.isRecognitionException=void 0;var gye=Dt(),wj="MismatchedTokenException",Bj="NoViableAltException",Qj="EarlyExitException",bj="NotAllInputParsedException",vj=[wj,Bj,Qj,bj];Object.freeze(vj);function fye(t){return(0,gye.contains)(vj,t.name)}dn.isRecognitionException=fye;var vE=function(t){Zh(e,t);function e(r,i){var n=this.constructor,s=t.call(this,r)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),hye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=wj,s}return e}(vE);dn.MismatchedTokenException=hye;var pye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Bj,s}return e}(vE);dn.NoViableAltException=pye;var dye=function(t){Zh(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.name=bj,n}return e}(vE);dn.NotAllInputParsedException=dye;var Cye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Qj,s}return e}(vE);dn.EarlyExitException=Cye});var pS=I(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.attemptInRepetitionRecovery=xi.Recoverable=xi.InRuleRecoveryException=xi.IN_RULE_RECOVERY_EXCEPTION=xi.EOF_FOLLOW_KEY=void 0;var SE=nA(),ts=Dt(),mye=vu(),Iye=rS(),Eye=Tn();xi.EOF_FOLLOW_KEY={};xi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function hS(t){this.name=xi.IN_RULE_RECOVERY_EXCEPTION,this.message=t}xi.InRuleRecoveryException=hS;hS.prototype=Error.prototype;var yye=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ts.has)(e,"recoveryEnabled")?e.recoveryEnabled:Eye.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Sj)},t.prototype.getTokenToInsert=function(e){var r=(0,SE.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),d=new mye.MismatchedTokenException(p,u,s.LA(0));d.resyncedTokens=(0,ts.dropRight)(l),s.SAVE_ERROR(d)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,r);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,i){return!(i===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var i=this.getCurrentGrammarPath(e,r),n=this.getNextPossibleTokenTypes(i);return n},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new hS("sad sad panda")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ts.isEmpty)(r))return!1;var n=this.LA(1),s=(0,ts.find)(r,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(r);return(0,ts.contains)(i,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),i=2;;){var n=r.tokenType;if((0,ts.contains)(e,n))return n;r=this.LA(i),i++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return xi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(i)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ts.map)(r,function(n,s){return s===0?xi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(r[s-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=(0,ts.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ts.flatten)(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===xi.EOF_FOLLOW_KEY)return[SE.EOF];var r=e.ruleName+e.idxInCallingRule+Iye.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,SE.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,r);return(0,ts.dropRight)(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,i,n,s,o,a){},t.prototype.getCurrentGrammarPath=function(e,r){var i=this.getHumanReadableRuleStack(),n=(0,ts.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:r};return s},t.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ts.map)(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();xi.Recoverable=yye;function Sj(t,e,r,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=SE.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(t,e,r,f)}xi.attemptInRepetitionRecovery=Sj});var xE=I(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.getKeyForAutomaticLookahead=Nt.AT_LEAST_ONE_SEP_IDX=Nt.MANY_SEP_IDX=Nt.AT_LEAST_ONE_IDX=Nt.MANY_IDX=Nt.OPTION_IDX=Nt.OR_IDX=Nt.BITS_FOR_ALT_IDX=Nt.BITS_FOR_RULE_IDX=Nt.BITS_FOR_OCCURRENCE_IDX=Nt.BITS_FOR_METHOD_TYPE=void 0;Nt.BITS_FOR_METHOD_TYPE=4;Nt.BITS_FOR_OCCURRENCE_IDX=8;Nt.BITS_FOR_RULE_IDX=12;Nt.BITS_FOR_ALT_IDX=8;Nt.OR_IDX=1<{"use strict";Object.defineProperty(kE,"__esModule",{value:!0});kE.LooksAhead=void 0;var Aa=_h(),Ns=Dt(),xj=Tn(),la=xE(),Nl=Jh(),Bye=function(){function t(){}return t.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Ns.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:xj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Ns.has)(e,"maxLookahead")?e.maxLookahead:xj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Ns.isES2015MapSupported)()?new Map:[],(0,Ns.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;(0,Ns.forEach)(e,function(i){r.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Nl.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Ns.forEach)(s,function(g){var f=g.idx===0?"":g.idx;r.TRACE_INIT(""+(0,Nl.getProductionDslName)(g)+f,function(){var h=(0,Aa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||r.maxLookahead,g.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),p=(0,la.getKeyForAutomaticLookahead)(r.fullRuleNameToShort[i.name],la.OR_IDX,g.idx);r.setLaFuncCache(p,h)})}),(0,Ns.forEach)(o,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_IDX,Aa.PROD_TYPE.REPETITION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(a,function(g){r.computeLookaheadFunc(i,g.idx,la.OPTION_IDX,Aa.PROD_TYPE.OPTION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(l,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(c,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_SEP_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(u,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_SEP_IDX,Aa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))})})})},t.prototype.computeLookaheadFunc=function(e,r,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(r===0?"":r),function(){var l=(0,Aa.buildLookaheadFuncForOptionalProd)(r,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,la.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,r);a.setLaFuncCache(c,l)})},t.prototype.lookAheadBuilderForOptional=function(e,r,i){return(0,Aa.buildSingleAlternativeLookaheadFunction)(e,r,i)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,i,n){return(0,Aa.buildAlternativesLookAheadFunc)(e,r,i,n)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var i=this.getLastExplicitRuleShortName();return(0,la.getKeyForAutomaticLookahead)(i,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();kE.LooksAhead=Bye});var Pj=I(go=>{"use strict";Object.defineProperty(go,"__esModule",{value:!0});go.addNoneTerminalToCst=go.addTerminalToCst=go.setNodeLocationFull=go.setNodeLocationOnlyOffset=void 0;function Qye(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";Object.defineProperty(aA,"__esModule",{value:!0});aA.defineNameProp=aA.functionName=aA.classNameFromInstance=void 0;var xye=Dt();function kye(t){return Dj(t.constructor)}aA.classNameFromInstance=kye;var Rj="name";function Dj(t){var e=t.name;return e||"anonymous"}aA.functionName=Dj;function Pye(t,e){var r=Object.getOwnPropertyDescriptor(t,Rj);return(0,xye.isUndefined)(r)||r.configurable?(Object.defineProperty(t,Rj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}aA.defineNameProp=Pye});var Mj=I(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.validateRedundantMethods=mi.validateMissingCstMethods=mi.validateVisitor=mi.CstVisitorDefinitionError=mi.createBaseVisitorConstructorWithDefaults=mi.createBaseSemanticVisitorConstructor=mi.defaultVisit=void 0;var rs=Dt(),$h=dS();function Fj(t,e){for(var r=(0,rs.keys)(t),i=r.length,n=0;n: + `+(""+s.join(` + +`).replace(/\n/g,` + `)))}}};return r.prototype=i,r.prototype.constructor=r,r._RULE_NAMES=e,r}mi.createBaseSemanticVisitorConstructor=Dye;function Rye(t,e,r){var i=function(){};(0,$h.defineNameProp)(i,t+"BaseSemanticsWithDefaults");var n=Object.create(r.prototype);return(0,rs.forEach)(e,function(s){n[s]=Fj}),i.prototype=n,i.prototype.constructor=i,i}mi.createBaseVisitorConstructorWithDefaults=Rye;var CS;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(CS=mi.CstVisitorDefinitionError||(mi.CstVisitorDefinitionError={}));function Nj(t,e){var r=Lj(t,e),i=Tj(t,e);return r.concat(i)}mi.validateVisitor=Nj;function Lj(t,e){var r=(0,rs.map)(e,function(i){if(!(0,rs.isFunction)(t[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+" CST Visitor.",type:CS.MISSING_METHOD,methodName:i}});return(0,rs.compact)(r)}mi.validateMissingCstMethods=Lj;var Fye=["constructor","visit","validateVisitor"];function Tj(t,e){var r=[];for(var i in t)(0,rs.isFunction)(t[i])&&!(0,rs.contains)(Fye,i)&&!(0,rs.contains)(e,i)&&r.push({msg:"Redundant visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+` CST Visitor +There is no Grammar Rule corresponding to this method's name. +`,type:CS.REDUNDANT_METHOD,methodName:i});return r}mi.validateRedundantMethods=Tj});var Kj=I(PE=>{"use strict";Object.defineProperty(PE,"__esModule",{value:!0});PE.TreeBuilder=void 0;var Su=Pj(),Ur=Dt(),Oj=Mj(),Nye=Tn(),Lye=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Ur.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:Nye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Ur.NOOP,this.cstFinallyStateUpdate=Ur.NOOP,this.cstPostTerminal=Ur.NOOP,this.cstPostNonTerminal=Ur.NOOP,this.cstPostRule=Ur.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationFull,this.setNodeLocationFromNode=Su.setNodeLocationFull,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=Su.setNodeLocationOnlyOffset,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=Ur.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,r){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?(i.endOffset=r.endOffset,i.endLine=r.endLine,i.endColumn=r.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?i.endOffset=r.endOffset:i.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addTerminalToCst)(i,r,e),this.setNodeLocationFromToken(i.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addNoneTerminalToCst)(i,r,e),this.setNodeLocationFromNode(i.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if((0,Ur.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,Oj.createBaseSemanticVisitorConstructor)(this.className,(0,Ur.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Ur.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,Oj.createBaseVisitorConstructorWithDefaults)(this.className,(0,Ur.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();PE.TreeBuilder=Lye});var Hj=I(DE=>{"use strict";Object.defineProperty(DE,"__esModule",{value:!0});DE.LexerAdapter=void 0;var Uj=Tn(),Tye=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Uj.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?Uj.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();DE.LexerAdapter=Tye});var jj=I(RE=>{"use strict";Object.defineProperty(RE,"__esModule",{value:!0});RE.RecognizerApi=void 0;var Gj=Dt(),Mye=vu(),mS=Tn(),Oye=Wh(),Kye=gS(),Uye=hn(),Hye=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,i){return this.consumeInternal(r,e,i)},t.prototype.subrule=function(e,r,i){return this.subruleInternal(r,e,i)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,i){if(i===void 0&&(i=mS.DEFAULT_RULE_CONFIG),(0,Gj.contains)(this.definedRulesNames,e)){var n=Oye.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:mS.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,i);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,i){i===void 0&&(i=mS.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,Kye.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,r,i);return this[e]=s,s},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,r),!0}catch(n){if((0,Mye.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return(0,Uye.serializeGrammar)((0,Gj.values)(this.gastProductionsCache))},t}();RE.RecognizerApi=Hye});var Wj=I(FE=>{"use strict";Object.defineProperty(FE,"__esModule",{value:!0});FE.RecognizerEngine=void 0;var Ir=Dt(),Mn=xE(),NE=vu(),Yj=_h(),xu=Vh(),qj=Tn(),Gye=pS(),Jj=nA(),ep=yu(),jye=dS(),Yye=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,r){if(this.className=(0,jye.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=ep.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Ir.has)(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if((0,Ir.isArray)(e)){if((0,Ir.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if((0,Ir.isArray)(e))this.tokensMap=(0,Ir.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Ir.has)(e,"modes")&&(0,Ir.every)((0,Ir.flatten)((0,Ir.values)(e.modes)),ep.isTokenType)){var i=(0,Ir.flatten)((0,Ir.values)(e.modes)),n=(0,Ir.uniq)(i);this.tokensMap=(0,Ir.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Ir.isObject)(e))this.tokensMap=(0,Ir.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Jj.EOF;var s=(0,Ir.every)((0,Ir.values)(e),function(o){return(0,Ir.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?ep.tokenStructuredMatcherNoCategories:ep.tokenStructuredMatcher,(0,ep.augmentTokenTypes)((0,Ir.values)(this.tokensMap))},t.prototype.defineRule=function(e,r,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Ir.has)(i,"resyncEnabled")?i.resyncEnabled:qj.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Ir.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:qj.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<r},t.prototype.orInternal=function(e,r){var i=this.getKeyForAutomaticLookahead(Mn.OR_IDX,r),n=(0,Ir.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new NE.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,r,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,i){throw(0,NE.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:i),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},t.prototype.consumeInternalError=function(e,r,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new NE.MismatchedTokenException(n,r,s))},t.prototype.consumeInternalRecovery=function(e,r,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===Gye.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},t.prototype.saveRecogState=function(){var e=this.errors,r=(0,Ir.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),Jj.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();FE.RecognizerEngine=Yye});var Vj=I(LE=>{"use strict";Object.defineProperty(LE,"__esModule",{value:!0});LE.ErrorHandler=void 0;var IS=vu(),ES=Dt(),zj=_h(),qye=Tn(),Jye=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,ES.has)(e,"errorMessageProvider")?e.errorMessageProvider:qye.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if((0,IS.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,ES.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return(0,ES.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,zj.getLookaheadPathsForOptionalProd)(e,s,r,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new IS.EarlyExitException(u,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,zj.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new IS.NoViableAltException(c,this.LA(1),l))},t}();LE.ErrorHandler=Jye});var Zj=I(TE=>{"use strict";Object.defineProperty(TE,"__esModule",{value:!0});TE.ContentAssist=void 0;var _j=Vh(),Xj=Dt(),Wye=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var i=this.gastProductionsCache[e];if((0,Xj.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,_j.nextPossibleTokensAfter)([i],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=(0,Xj.first)(e.ruleStack),i=this.getGAstProductions(),n=i[r],s=new _j.NextAfterTokenWalker(n,e).startWalking();return s},t}();TE.ContentAssist=Wye});var oY=I(ME=>{"use strict";Object.defineProperty(ME,"__esModule",{value:!0});ME.GastRecorder=void 0;var Cn=Dt(),fo=hn(),zye=Gh(),$j=yu(),eY=nA(),Vye=Tn(),_ye=xE(),OE={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(OE);var tY=!0,rY=Math.pow(2,_ye.BITS_FOR_OCCURRENCE_IDX)-1,iY=(0,eY.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:zye.Lexer.NA});(0,$j.augmentTokenTypes)([iY]);var nY=(0,eY.createTokenInstance)(iY,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(nY);var Xye={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},$ye=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var r=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)r(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var r=0;r<10;r++){var i=r>0?r:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return Vye.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var i=new fo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),r.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(s){throw n}throw n}},t.prototype.optionInternalRecord=function(e,r){return tp.call(this,fo.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatoryWithSeparator,r,e,tY)},t.prototype.manyInternalRecord=function(e,r){tp.call(this,fo.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionWithSeparator,r,e,tY)},t.prototype.orInternalRecord=function(e,r){return Zye.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,i){if(KE(r),!e||(0,Cn.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=e.ruleName,a=new fo.NonTerminal({idx:r,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?Xye:OE},t.prototype.consumeInternalRecord=function(e,r,i){if(KE(r),!(0,$j.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=new fo.Terminal({idx:r,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),nY},t}();ME.GastRecorder=$ye;function tp(t,e,r,i){i===void 0&&(i=!1),KE(r);var n=(0,Cn.peek)(this.recordingProdStack),s=(0,Cn.isFunction)(e)?e:e.DEF,o=new t({definition:[],idx:r});return i&&(o.separator=e.SEP),(0,Cn.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),OE}function Zye(t,e){var r=this;KE(e);var i=(0,Cn.peek)(this.recordingProdStack),n=(0,Cn.isArray)(t)===!1,s=n===!1?t:t.DEF,o=new fo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});(0,Cn.has)(t,"MAX_LOOKAHEAD")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var a=(0,Cn.some)(s,function(l){return(0,Cn.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,Cn.forEach)(s,function(l){var c=new fo.Alternative({definition:[]});o.definition.push(c),(0,Cn.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,Cn.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),r.recordingProdStack.push(c),l.ALT.call(r),r.recordingProdStack.pop()}),OE}function sY(t){return t===0?"":""+t}function KE(t){if(t<0||t>rY){var e=new Error("Invalid DSL Method idx value: <"+t+`> + `+("Idx value must be a none negative value smaller than "+(rY+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var AY=I(UE=>{"use strict";Object.defineProperty(UE,"__esModule",{value:!0});UE.PerformanceTracer=void 0;var aY=Dt(),ewe=Tn(),twe=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if((0,aY.has)(e,"traceInitPerf")){var r=e.traceInitPerf,i=typeof r=="number";this.traceInitMaxIdent=i?r:Infinity,this.traceInitPerf=i?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ewe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,aY.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t}();UE.PerformanceTracer=twe});var lY=I(HE=>{"use strict";Object.defineProperty(HE,"__esModule",{value:!0});HE.applyMixins=void 0;function rwe(t,e){e.forEach(function(r){var i=r.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(t.prototype,n,s):t.prototype[n]=r.prototype[n]}})})}HE.applyMixins=rwe});var Tn=I(or=>{"use strict";var cY=or&&or.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(or,"__esModule",{value:!0});or.EmbeddedActionsParser=or.CstParser=or.Parser=or.EMPTY_ALT=or.ParserDefinitionErrorType=or.DEFAULT_RULE_CONFIG=or.DEFAULT_PARSER_CONFIG=or.END_OF_FILE=void 0;var Wi=Dt(),iwe=VG(),uY=nA(),gY=Wh(),fY=yj(),nwe=pS(),swe=kj(),owe=Kj(),awe=Hj(),Awe=jj(),lwe=Wj(),cwe=Vj(),uwe=Zj(),gwe=oY(),fwe=AY(),hwe=lY();or.END_OF_FILE=(0,uY.createTokenInstance)(uY.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(or.END_OF_FILE);or.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:gY.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});or.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var pwe;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(pwe=or.ParserDefinitionErrorType||(or.ParserDefinitionErrorType={}));function dwe(t){return t===void 0&&(t=void 0),function(){return t}}or.EMPTY_ALT=dwe;var GE=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(r),i.initLexerAdapter(),i.initLooksAhead(r),i.initRecognizerEngine(e,r),i.initRecoverable(r),i.initTreeBuilder(r),i.initContentAssist(),i.initGastRecorder(r),i.initPerformanceTracer(r),(0,Wi.has)(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=(0,Wi.has)(r,"skipValidations")?r.skipValidations:or.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var r;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Wi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Wi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,fY.resolveGrammar)({rules:(0,Wi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Wi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,fY.validateGrammar)({rules:(0,Wi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Wi.values)(e.tokensMap),errMsgProvider:gY.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Wi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,iwe.computeAllProdsFollows)((0,Wi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Wi.values)(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Wi.isEmpty)(e.definitionErrors))throw r=(0,Wi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: + `+r.join(` +------------------------------- +`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();or.Parser=GE;(0,hwe.applyMixins)(GE,[nwe.Recoverable,swe.LooksAhead,owe.TreeBuilder,awe.LexerAdapter,lwe.RecognizerEngine,Awe.RecognizerApi,cwe.ErrorHandler,uwe.ContentAssist,gwe.GastRecorder,fwe.PerformanceTracer]);var Cwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!0,n=t.call(this,r,s)||this,n}return e}(GE);or.CstParser=Cwe;var mwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!1,n=t.call(this,r,s)||this,n}return e}(GE);or.EmbeddedActionsParser=mwe});var pY=I(jE=>{"use strict";Object.defineProperty(jE,"__esModule",{value:!0});jE.createSyntaxDiagramsCode=void 0;var hY=Uv();function Iwe(t,e){var r=e===void 0?{}:e,i=r.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/":i,s=r.css,o=s===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/diagrams.css":s,a=` + + + + + +`,l=` + +`,c=` + + + + +`,u=` +

+`,g=` + +`,f=` + +`;return a+l+c+u+g+f}jE.createSyntaxDiagramsCode=Iwe});var mY=I(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.Parser=He.createSyntaxDiagramsCode=He.clearCache=He.GAstVisitor=He.serializeProduction=He.serializeGrammar=He.Terminal=He.Rule=He.RepetitionWithSeparator=He.RepetitionMandatoryWithSeparator=He.RepetitionMandatory=He.Repetition=He.Option=He.NonTerminal=He.Alternative=He.Alternation=He.defaultLexerErrorProvider=He.NoViableAltException=He.NotAllInputParsedException=He.MismatchedTokenException=He.isRecognitionException=He.EarlyExitException=He.defaultParserErrorProvider=He.tokenName=He.tokenMatcher=He.tokenLabel=He.EOF=He.createTokenInstance=He.createToken=He.LexerDefinitionErrorType=He.Lexer=He.EMPTY_ALT=He.ParserDefinitionErrorType=He.EmbeddedActionsParser=He.CstParser=He.VERSION=void 0;var Ewe=Uv();Object.defineProperty(He,"VERSION",{enumerable:!0,get:function(){return Ewe.VERSION}});var YE=Tn();Object.defineProperty(He,"CstParser",{enumerable:!0,get:function(){return YE.CstParser}});Object.defineProperty(He,"EmbeddedActionsParser",{enumerable:!0,get:function(){return YE.EmbeddedActionsParser}});Object.defineProperty(He,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return YE.ParserDefinitionErrorType}});Object.defineProperty(He,"EMPTY_ALT",{enumerable:!0,get:function(){return YE.EMPTY_ALT}});var dY=Gh();Object.defineProperty(He,"Lexer",{enumerable:!0,get:function(){return dY.Lexer}});Object.defineProperty(He,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return dY.LexerDefinitionErrorType}});var ku=nA();Object.defineProperty(He,"createToken",{enumerable:!0,get:function(){return ku.createToken}});Object.defineProperty(He,"createTokenInstance",{enumerable:!0,get:function(){return ku.createTokenInstance}});Object.defineProperty(He,"EOF",{enumerable:!0,get:function(){return ku.EOF}});Object.defineProperty(He,"tokenLabel",{enumerable:!0,get:function(){return ku.tokenLabel}});Object.defineProperty(He,"tokenMatcher",{enumerable:!0,get:function(){return ku.tokenMatcher}});Object.defineProperty(He,"tokenName",{enumerable:!0,get:function(){return ku.tokenName}});var ywe=Wh();Object.defineProperty(He,"defaultParserErrorProvider",{enumerable:!0,get:function(){return ywe.defaultParserErrorProvider}});var rp=vu();Object.defineProperty(He,"EarlyExitException",{enumerable:!0,get:function(){return rp.EarlyExitException}});Object.defineProperty(He,"isRecognitionException",{enumerable:!0,get:function(){return rp.isRecognitionException}});Object.defineProperty(He,"MismatchedTokenException",{enumerable:!0,get:function(){return rp.MismatchedTokenException}});Object.defineProperty(He,"NotAllInputParsedException",{enumerable:!0,get:function(){return rp.NotAllInputParsedException}});Object.defineProperty(He,"NoViableAltException",{enumerable:!0,get:function(){return rp.NoViableAltException}});var wwe=_v();Object.defineProperty(He,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return wwe.defaultLexerErrorProvider}});var ho=hn();Object.defineProperty(He,"Alternation",{enumerable:!0,get:function(){return ho.Alternation}});Object.defineProperty(He,"Alternative",{enumerable:!0,get:function(){return ho.Alternative}});Object.defineProperty(He,"NonTerminal",{enumerable:!0,get:function(){return ho.NonTerminal}});Object.defineProperty(He,"Option",{enumerable:!0,get:function(){return ho.Option}});Object.defineProperty(He,"Repetition",{enumerable:!0,get:function(){return ho.Repetition}});Object.defineProperty(He,"RepetitionMandatory",{enumerable:!0,get:function(){return ho.RepetitionMandatory}});Object.defineProperty(He,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionMandatoryWithSeparator}});Object.defineProperty(He,"RepetitionWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionWithSeparator}});Object.defineProperty(He,"Rule",{enumerable:!0,get:function(){return ho.Rule}});Object.defineProperty(He,"Terminal",{enumerable:!0,get:function(){return ho.Terminal}});var CY=hn();Object.defineProperty(He,"serializeGrammar",{enumerable:!0,get:function(){return CY.serializeGrammar}});Object.defineProperty(He,"serializeProduction",{enumerable:!0,get:function(){return CY.serializeProduction}});var Bwe=wu();Object.defineProperty(He,"GAstVisitor",{enumerable:!0,get:function(){return Bwe.GAstVisitor}});function Qwe(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. + It performs no action other than printing this message. + Please avoid using it as it will be completely removed in the future`)}He.clearCache=Qwe;var bwe=pY();Object.defineProperty(He,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return bwe.createSyntaxDiagramsCode}});var vwe=function(){function t(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. +See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return t}();He.Parser=vwe});var yY=I((Trt,IY)=>{var qE=mY(),ca=qE.createToken,EY=qE.tokenMatcher,yS=qE.Lexer,Swe=qE.EmbeddedActionsParser;IY.exports=t=>{let e=ca({name:"LogicalOperator",pattern:yS.NA}),r=ca({name:"Or",pattern:/\|/,categories:e}),i=ca({name:"Xor",pattern:/\^/,categories:e}),n=ca({name:"And",pattern:/&/,categories:e}),s=ca({name:"Not",pattern:/!/}),o=ca({name:"LParen",pattern:/\(/}),a=ca({name:"RParen",pattern:/\)/}),l=ca({name:"Query",pattern:t}),u=[ca({name:"WhiteSpace",pattern:/\s+/,group:yS.SKIPPED}),r,i,n,o,a,s,e,l],g=new yS(u);class f extends Swe{constructor(p){super(u);this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let m=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let E=m,B=this.CONSUME(e),b=this.SUBRULE2(this.atomicExpression);EY(B,r)?m=R=>E(R)||b(R):EY(B,i)?m=R=>!!(E(R)^b(R)):m=R=>E(R)&&b(R)}),m}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:d}=this.CONSUME(l);return m=>m(d)}},{ALT:()=>{this.CONSUME(s);let d=this.SUBRULE(this.atomicExpression);return m=>!d(m)}}])),this.RULE("parenthesisExpression",()=>{let d;return this.CONSUME(o),d=this.SUBRULE(this.expression),this.CONSUME(a),d}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var wY=I(JE=>{var xwe=yY();JE.makeParser=(t=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:r}=xwe(t),i=new r;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};JE.parse=JE.makeParser()});var QY=I((Ort,BY)=>{"use strict";BY.exports=(...t)=>[...new Set([].concat(...t))]});var wS=I((Krt,bY)=>{"use strict";var kwe=require("stream"),vY=kwe.PassThrough,Pwe=Array.prototype.slice;bY.exports=Dwe;function Dwe(){let t=[],e=!1,r=Pwe.call(arguments),i=r[r.length-1];i&&!Array.isArray(i)&&i.pipe==null?r.pop():i={};let n=i.end!==!1;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let s=vY(i);function o(){for(let c=0,u=arguments.length;c0||(e=!1,a())}function f(h){function p(){h.removeListener("merge2UnpipeEnd",p),h.removeListener("end",p),g()}if(h._readableState.endEmitted)return g();h.on("merge2UnpipeEnd",p),h.on("end",p),h.pipe(s,{end:!1}),h.resume()}for(let h=0;h{"use strict";Object.defineProperty(WE,"__esModule",{value:!0});function Rwe(t){return t.reduce((e,r)=>[].concat(e,r),[])}WE.flatten=Rwe;function Fwe(t,e){let r=[[]],i=0;for(let n of t)e(n)?(i++,r[i]=[]):r[i].push(n);return r}WE.splitWhen=Fwe});var kY=I(BS=>{"use strict";Object.defineProperty(BS,"__esModule",{value:!0});function Nwe(t){return t.code==="ENOENT"}BS.isEnoentCodeError=Nwe});var DY=I(QS=>{"use strict";Object.defineProperty(QS,"__esModule",{value:!0});var PY=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Lwe(t,e){return new PY(t,e)}QS.createDirentFromStats=Lwe});var RY=I(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});var Twe=require("path"),Mwe=2,Owe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function Kwe(t){return t.replace(/\\/g,"/")}Pu.unixify=Kwe;function Uwe(t,e){return Twe.resolve(t,e)}Pu.makeAbsolute=Uwe;function Hwe(t){return t.replace(Owe,"\\$2")}Pu.escape=Hwe;function Gwe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(Mwe)}return t}Pu.removeLeadingDotSegment=Gwe});var NY=I((Yrt,FY)=>{FY.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var TY=I((qrt,LY)=>{var jwe=NY(),Ywe={"{":"}","(":")","[":"]"},qwe=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,Jwe=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;LY.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(jwe(e))return!0;var i=qwe,n;for(r&&r.strict===!1&&(i=Jwe);n=i.exec(e);){if(n[2])return!0;var s=n.index+n[0].length,o=n[1],a=o?Ywe[o]:null;if(o&&a){var l=e.indexOf(a,s);l!==-1&&(s=l+1)}e=e.slice(s)}return!1}});var OY=I((Jrt,MY)=>{"use strict";var Wwe=TY(),zwe=require("path").posix.dirname,Vwe=require("os").platform()==="win32",bS="/",_we=/\\/g,Xwe=/[\{\[].*[\}\]]$/,Zwe=/(^|[^\\])([\{\[]|\([^\)]+$)/,$we=/\\([\!\*\?\|\[\]\(\)\{\}])/g;MY.exports=function(e,r){var i=Object.assign({flipBackslashes:!0},r);i.flipBackslashes&&Vwe&&e.indexOf(bS)<0&&(e=e.replace(_we,bS)),Xwe.test(e)&&(e+=bS),e+="a";do e=zwe(e);while(Wwe(e)||Zwe.test(e));return e.replace($we,"$1")}});var WY=I(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});var eBe=require("path"),tBe=OY(),KY=Nn(),rBe=iv(),UY="**",iBe="\\",nBe=/[*?]|^!/,sBe=/\[.*]/,oBe=/(?:^|[^!*+?@])\(.*\|.*\)/,aBe=/[!*+?@]\(.*\)/,ABe=/{.*(?:,|\.\.).*}/;function GY(t,e={}){return!HY(t,e)}Hr.isStaticPattern=GY;function HY(t,e={}){return!!(e.caseSensitiveMatch===!1||t.includes(iBe)||nBe.test(t)||sBe.test(t)||oBe.test(t)||e.extglob!==!1&&aBe.test(t)||e.braceExpansion!==!1&&ABe.test(t))}Hr.isDynamicPattern=HY;function lBe(t){return zE(t)?t.slice(1):t}Hr.convertToPositivePattern=lBe;function cBe(t){return"!"+t}Hr.convertToNegativePattern=cBe;function zE(t){return t.startsWith("!")&&t[1]!=="("}Hr.isNegativePattern=zE;function jY(t){return!zE(t)}Hr.isPositivePattern=jY;function uBe(t){return t.filter(zE)}Hr.getNegativePatterns=uBe;function gBe(t){return t.filter(jY)}Hr.getPositivePatterns=gBe;function fBe(t){return tBe(t,{flipBackslashes:!1})}Hr.getBaseDirectory=fBe;function hBe(t){return t.includes(UY)}Hr.hasGlobStar=hBe;function YY(t){return t.endsWith("/"+UY)}Hr.endsWithSlashGlobStar=YY;function pBe(t){let e=eBe.basename(t);return YY(t)||GY(e)}Hr.isAffectDepthOfReadingPattern=pBe;function dBe(t){return t.reduce((e,r)=>e.concat(qY(r)),[])}Hr.expandPatternsWithBraceExpansion=dBe;function qY(t){return KY.braces(t,{expand:!0,nodupes:!0})}Hr.expandBraceExpansion=qY;function CBe(t,e){let r=rBe.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.parts.length===0?[t]:r.parts}Hr.getPatternParts=CBe;function JY(t,e){return KY.makeRe(t,e)}Hr.makeRe=JY;function mBe(t,e){return t.map(r=>JY(r,e))}Hr.convertPatternsToRe=mBe;function IBe(t,e){return e.some(r=>r.test(t))}Hr.matchAny=IBe});var VY=I(vS=>{"use strict";Object.defineProperty(vS,"__esModule",{value:!0});var EBe=wS();function yBe(t){let e=EBe(t);return t.forEach(r=>{r.once("error",i=>e.emit("error",i))}),e.once("close",()=>zY(t)),e.once("end",()=>zY(t)),e}vS.merge=yBe;function zY(t){t.forEach(e=>e.emit("close"))}});var _Y=I(VE=>{"use strict";Object.defineProperty(VE,"__esModule",{value:!0});function wBe(t){return typeof t=="string"}VE.isString=wBe;function BBe(t){return t===""}VE.isEmpty=BBe});var ga=I(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});var QBe=xY();ua.array=QBe;var bBe=kY();ua.errno=bBe;var vBe=DY();ua.fs=vBe;var SBe=RY();ua.path=SBe;var xBe=WY();ua.pattern=xBe;var kBe=VY();ua.stream=kBe;var PBe=_Y();ua.string=PBe});var tq=I(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});var Ll=ga();function DBe(t,e){let r=XY(t),i=ZY(t,e.ignore),n=r.filter(l=>Ll.pattern.isStaticPattern(l,e)),s=r.filter(l=>Ll.pattern.isDynamicPattern(l,e)),o=SS(n,i,!1),a=SS(s,i,!0);return o.concat(a)}fa.generate=DBe;function SS(t,e,r){let i=$Y(t);return"."in i?[xS(".",t,e,r)]:eq(i,e,r)}fa.convertPatternsToTasks=SS;function XY(t){return Ll.pattern.getPositivePatterns(t)}fa.getPositivePatterns=XY;function ZY(t,e){return Ll.pattern.getNegativePatterns(t).concat(e).map(Ll.pattern.convertToPositivePattern)}fa.getNegativePatternsAsPositive=ZY;function $Y(t){let e={};return t.reduce((r,i)=>{let n=Ll.pattern.getBaseDirectory(i);return n in r?r[n].push(i):r[n]=[i],r},e)}fa.groupPatternsByBaseDirectory=$Y;function eq(t,e,r){return Object.keys(t).map(i=>xS(i,t[i],e,r))}fa.convertPatternGroupsToTasks=eq;function xS(t,e,r,i){return{dynamic:i,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Ll.pattern.convertToNegativePattern))}}fa.convertPatternGroupToTask=xS});var iq=I(_E=>{"use strict";Object.defineProperty(_E,"__esModule",{value:!0});_E.read=void 0;function RBe(t,e,r){e.fs.lstat(t,(i,n)=>{if(i!==null){rq(r,i);return}if(!n.isSymbolicLink()||!e.followSymbolicLink){kS(r,n);return}e.fs.stat(t,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){rq(r,s);return}kS(r,n);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),kS(r,o)})})}_E.read=RBe;function rq(t,e){t(e)}function kS(t,e){t(null,e)}});var nq=I(XE=>{"use strict";Object.defineProperty(XE,"__esModule",{value:!0});XE.read=void 0;function FBe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let i=e.fs.statSync(t);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw i}}XE.read=FBe});var sq=I(AA=>{"use strict";Object.defineProperty(AA,"__esModule",{value:!0});AA.createFileSystemAdapter=AA.FILE_SYSTEM_ADAPTER=void 0;var ZE=require("fs");AA.FILE_SYSTEM_ADAPTER={lstat:ZE.lstat,stat:ZE.stat,lstatSync:ZE.lstatSync,statSync:ZE.statSync};function NBe(t){return t===void 0?AA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},AA.FILE_SYSTEM_ADAPTER),t)}AA.createFileSystemAdapter=NBe});var aq=I(PS=>{"use strict";Object.defineProperty(PS,"__esModule",{value:!0});var LBe=sq(),oq=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=LBe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e!=null?e:r}};PS.default=oq});var Tl=I(lA=>{"use strict";Object.defineProperty(lA,"__esModule",{value:!0});lA.statSync=lA.stat=lA.Settings=void 0;var Aq=iq(),TBe=nq(),DS=aq();lA.Settings=DS.default;function MBe(t,e,r){if(typeof e=="function"){Aq.read(t,RS(),e);return}Aq.read(t,RS(e),r)}lA.stat=MBe;function OBe(t,e){let r=RS(e);return TBe.read(t,r)}lA.statSync=OBe;function RS(t={}){return t instanceof DS.default?t:new DS.default(t)}});var cq=I((iit,lq)=>{lq.exports=KBe;function KBe(t,e){var r,i,n,s=!0;Array.isArray(t)?(r=[],i=t.length):(n=Object.keys(t),r={},i=n.length);function o(l){function c(){e&&e(l,r),e=null}s?process.nextTick(c):c()}function a(l,c,u){r[l]=u,(--i==0||c)&&o(c)}i?n?n.forEach(function(l){t[l](function(c,u){a(l,c,u)})}):t.forEach(function(l,c){l(function(u,g){a(c,u,g)})}):o(null),s=!1}});var FS=I($E=>{"use strict";Object.defineProperty($E,"__esModule",{value:!0});$E.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var ey=process.versions.node.split(".");if(ey[0]===void 0||ey[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var uq=Number.parseInt(ey[0],10),UBe=Number.parseInt(ey[1],10),gq=10,HBe=10,GBe=uq>gq,jBe=uq===gq&&UBe>=HBe;$E.IS_SUPPORT_READDIR_WITH_FILE_TYPES=GBe||jBe});var hq=I(ty=>{"use strict";Object.defineProperty(ty,"__esModule",{value:!0});ty.createDirentFromStats=void 0;var fq=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function YBe(t,e){return new fq(t,e)}ty.createDirentFromStats=YBe});var NS=I(ry=>{"use strict";Object.defineProperty(ry,"__esModule",{value:!0});ry.fs=void 0;var qBe=hq();ry.fs=qBe});var LS=I(iy=>{"use strict";Object.defineProperty(iy,"__esModule",{value:!0});iy.joinPathSegments=void 0;function JBe(t,e,r){return t.endsWith(r)?t+e:t+r+e}iy.joinPathSegments=JBe});var Eq=I(cA=>{"use strict";Object.defineProperty(cA,"__esModule",{value:!0});cA.readdir=cA.readdirWithFileTypes=cA.read=void 0;var WBe=Tl(),pq=cq(),zBe=FS(),dq=NS(),Cq=LS();function VBe(t,e,r){if(!e.stats&&zBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){mq(t,e,r);return}Iq(t,e,r)}cA.read=VBe;function mq(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(a=>({dirent:a,name:a.name,path:Cq.joinPathSegments(t,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){TS(r,s);return}let o=s.map(a=>_Be(a,e));pq(o,(a,l)=>{if(a!==null){ny(r,a);return}TS(r,l)})})}cA.readdirWithFileTypes=mq;function _Be(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(i,n)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){r(i);return}r(null,t);return}t.dirent=dq.fs.createDirentFromStats(t.name,n),r(null,t)})}}function Iq(t,e,r){e.fs.readdir(t,(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(o=>{let a=Cq.joinPathSegments(t,o,e.pathSegmentSeparator);return l=>{WBe.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let g={name:o,path:a,dirent:dq.fs.createDirentFromStats(o,u)};e.stats&&(g.stats=u),l(null,g)})}});pq(s,(o,a)=>{if(o!==null){ny(r,o);return}TS(r,a)})})}cA.readdir=Iq;function ny(t,e){t(e)}function TS(t,e){t(null,e)}});var bq=I(uA=>{"use strict";Object.defineProperty(uA,"__esModule",{value:!0});uA.readdir=uA.readdirWithFileTypes=uA.read=void 0;var XBe=Tl(),ZBe=FS(),yq=NS(),wq=LS();function $Be(t,e){return!e.stats&&ZBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Bq(t,e):Qq(t,e)}uA.read=$Be;function Bq(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(i=>{let n={dirent:i,name:i.name,path:wq.joinPathSegments(t,i.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(n.path);n.dirent=yq.fs.createDirentFromStats(n.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return n})}uA.readdirWithFileTypes=Bq;function Qq(t,e){return e.fs.readdirSync(t).map(i=>{let n=wq.joinPathSegments(t,i,e.pathSegmentSeparator),s=XBe.statSync(n,e.fsStatSettings),o={name:i,path:n,dirent:yq.fs.createDirentFromStats(i,s)};return e.stats&&(o.stats=s),o})}uA.readdir=Qq});var vq=I(gA=>{"use strict";Object.defineProperty(gA,"__esModule",{value:!0});gA.createFileSystemAdapter=gA.FILE_SYSTEM_ADAPTER=void 0;var Du=require("fs");gA.FILE_SYSTEM_ADAPTER={lstat:Du.lstat,stat:Du.stat,lstatSync:Du.lstatSync,statSync:Du.statSync,readdir:Du.readdir,readdirSync:Du.readdirSync};function e0e(t){return t===void 0?gA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},gA.FILE_SYSTEM_ADAPTER),t)}gA.createFileSystemAdapter=e0e});var xq=I(MS=>{"use strict";Object.defineProperty(MS,"__esModule",{value:!0});var t0e=require("path"),r0e=Tl(),i0e=vq(),Sq=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=i0e.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,t0e.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new r0e.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};MS.default=Sq});var sy=I(fA=>{"use strict";Object.defineProperty(fA,"__esModule",{value:!0});fA.Settings=fA.scandirSync=fA.scandir=void 0;var kq=Eq(),n0e=bq(),OS=xq();fA.Settings=OS.default;function s0e(t,e,r){if(typeof e=="function"){kq.read(t,KS(),e);return}kq.read(t,KS(e),r)}fA.scandir=s0e;function o0e(t,e){let r=KS(e);return n0e.read(t,r)}fA.scandirSync=o0e;function KS(t={}){return t instanceof OS.default?t:new OS.default(t)}});var Dq=I((fit,Pq)=>{"use strict";function a0e(t){var e=new t,r=e;function i(){var s=e;return s.next?e=s.next:(e=new t,r=e),s.next=null,s}function n(s){r.next=s,r=s}return{get:i,release:n}}Pq.exports=a0e});var Fq=I((hit,US)=>{"use strict";var A0e=Dq();function Rq(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var i=A0e(l0e),n=null,s=null,o=0,a=null,l={push:d,drain:po,saturated:po,pause:u,paused:!1,concurrency:r,running:c,resume:h,idle:p,length:g,getQueue:f,unshift:m,empty:po,kill:B,killAndDrain:b,error:R};return l;function c(){return o}function u(){l.paused=!0}function g(){for(var H=n,L=0;H;)H=H.next,L++;return L}function f(){for(var H=n,L=[];H;)L.push(H.value),H=H.next;return L}function h(){if(!!l.paused){l.paused=!1;for(var H=0;H{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});Co.joinPathSegments=Co.replacePathSegmentSeparator=Co.isAppliedFilter=Co.isFatalError=void 0;function u0e(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Co.isFatalError=u0e;function g0e(t,e){return t===null||t(e)}Co.isAppliedFilter=g0e;function f0e(t,e){return t.split(/[/\\]/).join(e)}Co.replacePathSegmentSeparator=f0e;function h0e(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Co.joinPathSegments=h0e});var GS=I(HS=>{"use strict";Object.defineProperty(HS,"__esModule",{value:!0});var p0e=oy(),Nq=class{constructor(e,r){this._root=e,this._settings=r,this._root=p0e.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};HS.default=Nq});var YS=I(jS=>{"use strict";Object.defineProperty(jS,"__esModule",{value:!0});var d0e=require("events"),C0e=sy(),m0e=Fq(),ay=oy(),I0e=GS(),Lq=class extends I0e.default{constructor(e,r){super(e,r);this._settings=r,this._scandir=C0e.scandir,this._emitter=new d0e.EventEmitter,this._queue=m0e(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let i={directory:e,base:r};this._queue.push(i,n=>{n!==null&&this._handleError(n)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(i,n)=>{if(i!==null){r(i,void 0);return}for(let s of n)this._handleEntry(s,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!ay.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let i=e.path;r!==void 0&&(e.path=ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),ay.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};jS.default=Lq});var Mq=I(qS=>{"use strict";Object.defineProperty(qS,"__esModule",{value:!0});var E0e=YS(),Tq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new E0e.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{y0e(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{w0e(e,[...this._storage])}),this._reader.read()}};qS.default=Tq;function y0e(t,e){t(e)}function w0e(t,e){t(null,e)}});var Kq=I(JS=>{"use strict";Object.defineProperty(JS,"__esModule",{value:!0});var B0e=require("stream"),Q0e=YS(),Oq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Q0e.default(this._root,this._settings),this._stream=new B0e.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};JS.default=Oq});var Hq=I(WS=>{"use strict";Object.defineProperty(WS,"__esModule",{value:!0});var b0e=sy(),Ay=oy(),v0e=GS(),Uq=class extends v0e.default{constructor(){super(...arguments);this._scandir=b0e.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let n of i)this._handleEntry(n,r)}catch(i){this._handleError(i)}}_handleError(e){if(!!Ay.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let i=e.path;r!==void 0&&(e.path=Ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),Ay.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&Ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_pushToStorage(e){this._storage.add(e)}};WS.default=Uq});var jq=I(zS=>{"use strict";Object.defineProperty(zS,"__esModule",{value:!0});var S0e=Hq(),Gq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new S0e.default(this._root,this._settings)}read(){return this._reader.read()}};zS.default=Gq});var qq=I(VS=>{"use strict";Object.defineProperty(VS,"__esModule",{value:!0});var x0e=require("path"),k0e=sy(),Yq=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,x0e.sep),this.fsScandirSettings=new k0e.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};VS.default=Yq});var XS=I(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});mo.Settings=mo.walkStream=mo.walkSync=mo.walk=void 0;var Jq=Mq(),P0e=Kq(),D0e=jq(),_S=qq();mo.Settings=_S.default;function R0e(t,e,r){if(typeof e=="function"){new Jq.default(t,ly()).read(e);return}new Jq.default(t,ly(e)).read(r)}mo.walk=R0e;function F0e(t,e){let r=ly(e);return new D0e.default(t,r).read()}mo.walkSync=F0e;function N0e(t,e){let r=ly(e);return new P0e.default(t,r).read()}mo.walkStream=N0e;function ly(t={}){return t instanceof _S.default?t:new _S.default(t)}});var $S=I(ZS=>{"use strict";Object.defineProperty(ZS,"__esModule",{value:!0});var L0e=require("path"),T0e=Tl(),Wq=ga(),zq=class{constructor(e){this._settings=e,this._fsStatSettings=new T0e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return L0e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let i={name:r,path:r,dirent:Wq.fs.createDirentFromStats(r,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!Wq.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};ZS.default=zq});var tx=I(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var M0e=require("stream"),O0e=Tl(),K0e=XS(),U0e=$S(),Vq=class extends U0e.default{constructor(){super(...arguments);this._walkStream=K0e.walkStream,this._stat=O0e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let i=e.map(this._getFullEntryPath,this),n=new M0e.PassThrough({objectMode:!0});n._write=(s,o,a)=>this._getEntry(i[s],e[s],r).then(l=>{l!==null&&r.entryFilter(l)&&n.push(l),s===i.length-1&&n.end(),a()}).catch(a);for(let s=0;sthis._makeEntry(n,r)).catch(n=>{if(i.errorFilter(n))return null;throw n})}_getStat(e){return new Promise((r,i)=>{this._stat(e,this._fsStatSettings,(n,s)=>n===null?r(s):i(n))})}};ex.default=Vq});var Xq=I(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var Ru=ga(),_q=class{constructor(e,r,i){this._patterns=e,this._settings=r,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){let e=Ru.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let i=this._getPatternSegments(r),n=this._splitSegmentsIntoSections(i);this._storage.push({complete:n.length<=1,pattern:r,segments:i,sections:n})}}_getPatternSegments(e){return Ru.pattern.getPatternParts(e,this._micromatchOptions).map(i=>Ru.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:Ru.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return Ru.array.splitWhen(e,r=>r.dynamic&&Ru.pattern.hasGlobStar(r.pattern))}};rx.default=_q});var $q=I(ix=>{"use strict";Object.defineProperty(ix,"__esModule",{value:!0});var H0e=Xq(),Zq=class extends H0e.default{match(e){let r=e.split("/"),i=r.length,n=this._storage.filter(s=>!s.complete||s.segments.length>i);for(let s of n){let o=s.sections[0];if(!s.complete&&i>o.length||r.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};ix.default=Zq});var tJ=I(nx=>{"use strict";Object.defineProperty(nx,"__esModule",{value:!0});var cy=ga(),G0e=$q(),eJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,i){let n=this._getMatcher(r),s=this._getNegativePatternsRe(i);return o=>this._filter(e,o,n,s)}_getMatcher(e){return new G0e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(cy.pattern.isAffectDepthOfReadingPattern);return cy.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,i,n){let s=this._getEntryLevel(e,r.path);if(this._isSkippedByDeep(s)||this._isSkippedSymbolicLink(r))return!1;let o=cy.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(o,i)?!1:this._isSkippedByNegativePatterns(o,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,r){let i=e.split("/").length;return r.split("/").length-(e===""?0:i)}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!cy.pattern.matchAny(e,r)}};nx.default=eJ});var iJ=I(sx=>{"use strict";Object.defineProperty(sx,"__esModule",{value:!0});var ip=ga(),rJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let i=ip.pattern.convertPatternsToRe(e,this._micromatchOptions),n=ip.pattern.convertPatternsToRe(r,this._micromatchOptions);return s=>this._filter(s,i,n)}_filter(e,r,i){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,i))return!1;let n=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(n,r)&&!this._isMatchToPatterns(e.path,i)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let i=ip.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(i,r)}_isMatchToPatterns(e,r){let i=ip.path.removeLeadingDotSegment(e);return ip.pattern.matchAny(i,r)}};sx.default=rJ});var sJ=I(ox=>{"use strict";Object.defineProperty(ox,"__esModule",{value:!0});var j0e=ga(),nJ=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return j0e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};ox.default=nJ});var AJ=I(ax=>{"use strict";Object.defineProperty(ax,"__esModule",{value:!0});var oJ=ga(),aJ=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=oJ.path.makeAbsolute(this._settings.cwd,r),r=oJ.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};ax.default=aJ});var uy=I(Ax=>{"use strict";Object.defineProperty(Ax,"__esModule",{value:!0});var Y0e=require("path"),q0e=tJ(),J0e=iJ(),W0e=sJ(),z0e=AJ(),lJ=class{constructor(e){this._settings=e,this.errorFilter=new W0e.default(this._settings),this.entryFilter=new J0e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new q0e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new z0e.default(this._settings)}_getRootDirectory(e){return Y0e.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};Ax.default=lJ});var uJ=I(lx=>{"use strict";Object.defineProperty(lx,"__esModule",{value:!0});var V0e=tx(),_0e=uy(),cJ=class extends _0e.default{constructor(){super(...arguments);this._reader=new V0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=[];return new Promise((s,o)=>{let a=this.api(r,e,i);a.once("error",o),a.on("data",l=>n.push(i.transform(l))),a.once("end",()=>s(n))})}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};lx.default=cJ});var fJ=I(cx=>{"use strict";Object.defineProperty(cx,"__esModule",{value:!0});var X0e=require("stream"),Z0e=tx(),$0e=uy(),gJ=class extends $0e.default{constructor(){super(...arguments);this._reader=new Z0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=this.api(r,e,i),s=new X0e.Readable({objectMode:!0,read:()=>{}});return n.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",i.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>n.destroy()),s}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};cx.default=gJ});var pJ=I(ux=>{"use strict";Object.defineProperty(ux,"__esModule",{value:!0});var eQe=Tl(),tQe=XS(),rQe=$S(),hJ=class extends rQe.default{constructor(){super(...arguments);this._walkSync=tQe.walkSync,this._statSync=eQe.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let i=[];for(let n of e){let s=this._getFullEntryPath(n),o=this._getEntry(s,n,r);o===null||!r.entryFilter(o)||i.push(o)}return i}_getEntry(e,r,i){try{let n=this._getStat(e);return this._makeEntry(n,r)}catch(n){if(i.errorFilter(n))return null;throw n}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};ux.default=hJ});var CJ=I(gx=>{"use strict";Object.defineProperty(gx,"__esModule",{value:!0});var iQe=pJ(),nQe=uy(),dJ=class extends nQe.default{constructor(){super(...arguments);this._reader=new iQe.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(r,e,i).map(i.transform)}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};gx.default=dJ});var IJ=I(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});var Fu=require("fs"),sQe=require("os"),oQe=sQe.cpus().length;np.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Fu.lstat,lstatSync:Fu.lstatSync,stat:Fu.stat,statSync:Fu.statSync,readdir:Fu.readdir,readdirSync:Fu.readdirSync};var mJ=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,oQe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,Infinity),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},np.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};np.default=mJ});var gy=I((Oit,EJ)=>{"use strict";var yJ=tq(),aQe=uJ(),AQe=fJ(),lQe=CJ(),fx=IJ(),Ml=ga();async function px(t,e){Nu(t);let r=hx(t,aQe.default,e),i=await Promise.all(r);return Ml.array.flatten(i)}(function(t){function e(o,a){Nu(o);let l=hx(o,lQe.default,a);return Ml.array.flatten(l)}t.sync=e;function r(o,a){Nu(o);let l=hx(o,AQe.default,a);return Ml.stream.merge(l)}t.stream=r;function i(o,a){Nu(o);let l=[].concat(o),c=new fx.default(a);return yJ.generate(l,c)}t.generateTasks=i;function n(o,a){Nu(o);let l=new fx.default(a);return Ml.pattern.isDynamicPattern(o,l)}t.isDynamicPattern=n;function s(o){return Nu(o),Ml.path.escape(o)}t.escapePath=s})(px||(px={}));function hx(t,e,r){let i=[].concat(t),n=new fx.default(r),s=yJ.generate(i,n),o=new e(n);return s.map(o.read,o)}function Nu(t){if(![].concat(t).every(i=>Ml.string.isString(i)&&!Ml.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}EJ.exports=px});var BJ=I(Ol=>{"use strict";var{promisify:cQe}=require("util"),wJ=require("fs");async function dx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await cQe(wJ[t])(r))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function Cx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return wJ[t](r)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}Ol.isFile=dx.bind(null,"stat","isFile");Ol.isDirectory=dx.bind(null,"stat","isDirectory");Ol.isSymlink=dx.bind(null,"lstat","isSymbolicLink");Ol.isFileSync=Cx.bind(null,"statSync","isFile");Ol.isDirectorySync=Cx.bind(null,"statSync","isDirectory");Ol.isSymlinkSync=Cx.bind(null,"lstatSync","isSymbolicLink")});var xJ=I((Uit,mx)=>{"use strict";var Kl=require("path"),QJ=BJ(),bJ=t=>t.length>1?`{${t.join(",")}}`:t[0],vJ=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Kl.isAbsolute(r)?r:Kl.join(e,r)},uQe=(t,e)=>Kl.extname(t)?`**/${t}`:`**/${t}.${bJ(e)}`,SJ=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Kl.posix.join(t,uQe(r,e.extensions))):e.files?e.files.map(r=>Kl.posix.join(t,`**/${r}`)):e.extensions?[Kl.posix.join(t,`**/*.${bJ(e.extensions)}`)]:[Kl.posix.join(t,"**")]};mx.exports=async(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async i=>await QJ.isDirectory(vJ(i,e.cwd))?SJ(i,e):i));return[].concat.apply([],r)};mx.exports.sync=(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(i=>QJ.isDirectorySync(vJ(i,e.cwd))?SJ(i,e):i);return[].concat.apply([],r)}});var TJ=I((Hit,kJ)=>{function PJ(t){return Array.isArray(t)?t:[t]}var gQe=/^\s+$/,fQe=/^\\!/,hQe=/^\\#/,pQe=/\r?\n/g,dQe=/^\.*\/|^\.+$/,Ix="/",DJ=typeof Symbol!="undefined"?Symbol.for("node-ignore"):"node-ignore",CQe=(t,e,r)=>Object.defineProperty(t,e,{value:r}),mQe=/([0-z])-([0-z])/g,IQe=t=>t.replace(mQe,(e,r,i)=>r.charCodeAt(0)<=i.charCodeAt(0)?e:""),EQe=[[/\\?\s+$/,t=>t.indexOf("\\")===0?" ":""],[/\\\s/g,()=>" "],[/[\\^$.|*+(){]/g,t=>`\\${t}`],[/\[([^\]/]*)($|\])/g,(t,e,r)=>r==="]"?`[${IQe(e)}]`:`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6`${e}[^\\/]*`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`],[/\\\\\\/g,()=>"\\"]],RJ=Object.create(null),yQe=(t,e,r)=>{let i=RJ[t];if(i)return i;let n=EQe.reduce((s,o)=>s.replace(o[0],o[1].bind(t)),t);return RJ[t]=r?new RegExp(n,"i"):new RegExp(n)},Ex=t=>typeof t=="string",wQe=t=>t&&Ex(t)&&!gQe.test(t)&&t.indexOf("#")!==0,BQe=t=>t.split(pQe),FJ=class{constructor(e,r,i,n){this.origin=e,this.pattern=r,this.negative=i,this.regex=n}},QQe=(t,e)=>{let r=t,i=!1;t.indexOf("!")===0&&(i=!0,t=t.substr(1)),t=t.replace(fQe,"!").replace(hQe,"#");let n=yQe(t,i,e);return new FJ(r,t,i,n)},bQe=(t,e)=>{throw new e(t)},ha=(t,e,r)=>Ex(t)?t?ha.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),NJ=t=>dQe.test(t);ha.isNotRelative=NJ;ha.convert=t=>t;var LJ=class{constructor({ignorecase:e=!0}={}){this._rules=[],this._ignorecase=e,CQe(this,DJ,!0),this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[DJ]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(wQe(e)){let r=QQe(e,this._ignorecase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,PJ(Ex(e)?BQe(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:o}=s;if(n===o&&i!==n||o&&!i&&!n&&!r)return;s.regex.test(e)&&(i=!o,n=o)}),{ignored:i,unignored:n}}_test(e,r,i,n){let s=e&&ha.convert(e);return ha(s,e,bQe),this._t(s,r,i,n)}_t(e,r,i,n){if(e in r)return r[e];if(n||(n=e.split(Ix)),n.pop(),!n.length)return r[e]=this._testOne(e,i);let s=this._t(n.join(Ix)+Ix,r,i,n);return r[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return PJ(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},fy=t=>new LJ(t),vQe=()=>!1,SQe=t=>ha(t&&ha.convert(t),t,vQe);fy.isPathValid=SQe;fy.default=fy;kJ.exports=fy;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");ha.convert=t;let e=/^[a-z]:\//i;ha.isNotRelative=r=>e.test(r)||NJ(r)}});var OJ=I((Git,MJ)=>{"use strict";MJ.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var qJ=I((jit,yx)=>{"use strict";var{promisify:xQe}=require("util"),KJ=require("fs"),pa=require("path"),UJ=gy(),kQe=TJ(),sp=OJ(),HJ=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],PQe=xQe(KJ.readFile),DQe=t=>e=>e.startsWith("!")?"!"+pa.posix.join(t,e.slice(1)):pa.posix.join(t,e),RQe=(t,e)=>{let r=sp(pa.relative(e.cwd,pa.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(i=>!i.startsWith("#")).map(DQe(r))},GJ=t=>{let e=kQe();for(let r of t)e.add(RQe(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},FQe=(t,e)=>{if(t=sp(t),pa.isAbsolute(e)){if(sp(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return pa.join(t,e)},jJ=(t,e)=>r=>t.ignores(sp(pa.relative(e,FQe(e,r.path||r)))),NQe=async(t,e)=>{let r=pa.join(e,t),i=await PQe(r,"utf8");return{cwd:e,filePath:r,content:i}},LQe=(t,e)=>{let r=pa.join(e,t),i=KJ.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:i}},YJ=({ignore:t=[],cwd:e=sp(process.cwd())}={})=>({ignore:t,cwd:e});yx.exports=async t=>{t=YJ(t);let e=await UJ("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(n=>NQe(n,t.cwd))),i=GJ(r);return jJ(i,t.cwd)};yx.exports.sync=t=>{t=YJ(t);let r=UJ.sync("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}).map(n=>LQe(n,t.cwd)),i=GJ(r);return jJ(i,t.cwd)}});var VJ=I((Yit,JJ)=>{"use strict";var{Transform:TQe}=require("stream"),wx=class extends TQe{constructor(){super({objectMode:!0})}},WJ=class extends wx{constructor(e){super();this._filter=e}_transform(e,r,i){this._filter(e)&&this.push(e),i()}},zJ=class extends wx{constructor(){super();this._pushed=new Set}_transform(e,r,i){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),i()}};JJ.exports={FilterStream:WJ,UniqueStream:zJ}});var vx=I((qit,Ul)=>{"use strict";var _J=require("fs"),hy=QY(),MQe=wS(),py=gy(),dy=xJ(),Bx=qJ(),{FilterStream:OQe,UniqueStream:KQe}=VJ(),XJ=()=>!1,ZJ=t=>t[0]==="!",UQe=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},HQe=(t={})=>{if(!t.cwd)return;let e;try{e=_J.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},GQe=t=>t.stats instanceof _J.Stats?t.path:t,Cy=(t,e)=>{t=hy([].concat(t)),UQe(t),HQe(e);let r=[];e=P({ignore:[],expandDirectories:!0},e);for(let[i,n]of t.entries()){if(ZJ(n))continue;let s=t.slice(i).filter(a=>ZJ(a)).map(a=>a.slice(1)),o=_(P({},e),{ignore:e.ignore.concat(s)});r.push({pattern:n,options:o})}return r},jQe=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r=_(P({},r),{files:t.options.expandDirectories}):typeof t.options.expandDirectories=="object"&&(r=P(P({},r),t.options.expandDirectories)),e(t.pattern,r)},Qx=(t,e)=>t.options.expandDirectories?jQe(t,e):[t.pattern],$J=t=>t&&t.gitignore?Bx.sync({cwd:t.cwd,ignore:t.ignore}):XJ,bx=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=dy.sync(r.ignore)),{pattern:e,options:r}};Ul.exports=async(t,e)=>{let r=Cy(t,e),i=async()=>e&&e.gitignore?Bx({cwd:e.cwd,ignore:e.ignore}):XJ,n=async()=>{let l=await Promise.all(r.map(async c=>{let u=await Qx(c,dy);return Promise.all(u.map(bx(c)))}));return hy(...l)},[s,o]=await Promise.all([i(),n()]),a=await Promise.all(o.map(l=>py(l.pattern,l.options)));return hy(...a).filter(l=>!s(GQe(l)))};Ul.exports.sync=(t,e)=>{let r=Cy(t,e),i=[];for(let o of r){let a=Qx(o,dy.sync).map(bx(o));i.push(...a)}let n=$J(e),s=[];for(let o of i)s=hy(s,py.sync(o.pattern,o.options));return s.filter(o=>!n(o))};Ul.exports.stream=(t,e)=>{let r=Cy(t,e),i=[];for(let a of r){let l=Qx(a,dy.sync).map(bx(a));i.push(...l)}let n=$J(e),s=new OQe(a=>!n(a)),o=new KQe;return MQe(i.map(a=>py.stream(a.pattern,a.options))).pipe(s).pipe(o)};Ul.exports.generateGlobTasks=Cy;Ul.exports.hasMagic=(t,e)=>[].concat(t).some(r=>py.isDynamicPattern(r,e));Ul.exports.gitignore=Bx});var Ca=I((da,Dy)=>{"use strict";Object.defineProperty(da,"__esModule",{value:!0});var A3=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function ibe(t){return A3.includes(t)}var nbe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...A3];function sbe(t){return nbe.includes(t)}var obe=["null","undefined","string","number","bigint","boolean","symbol"];function abe(t){return obe.includes(t)}function Hu(t){return e=>typeof e===t}var{toString:l3}=Object.prototype,mp=t=>{let e=l3.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&j.domElement(t))return"HTMLElement";if(sbe(e))return e},er=t=>e=>mp(e)===t;function j(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(j.observable(t))return"Observable";if(j.array(t))return"Array";if(j.buffer(t))return"Buffer";let e=mp(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}j.undefined=Hu("undefined");j.string=Hu("string");var Abe=Hu("number");j.number=t=>Abe(t)&&!j.nan(t);j.bigint=Hu("bigint");j.function_=Hu("function");j.null_=t=>t===null;j.class_=t=>j.function_(t)&&t.toString().startsWith("class ");j.boolean=t=>t===!0||t===!1;j.symbol=Hu("symbol");j.numericString=t=>j.string(t)&&!j.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));j.array=(t,e)=>Array.isArray(t)?j.function_(e)?t.every(e):!0:!1;j.buffer=t=>{var e,r,i,n;return(n=(i=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||i===void 0?void 0:i.call(r,t))!==null&&n!==void 0?n:!1};j.nullOrUndefined=t=>j.null_(t)||j.undefined(t);j.object=t=>!j.null_(t)&&(typeof t=="object"||j.function_(t));j.iterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};j.asyncIterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};j.generator=t=>j.iterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.asyncGenerator=t=>j.asyncIterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.nativePromise=t=>er("Promise")(t);var lbe=t=>{var e,r;return j.function_((e=t)===null||e===void 0?void 0:e.then)&&j.function_((r=t)===null||r===void 0?void 0:r.catch)};j.promise=t=>j.nativePromise(t)||lbe(t);j.generatorFunction=er("GeneratorFunction");j.asyncGeneratorFunction=t=>mp(t)==="AsyncGeneratorFunction";j.asyncFunction=t=>mp(t)==="AsyncFunction";j.boundFunction=t=>j.function_(t)&&!t.hasOwnProperty("prototype");j.regExp=er("RegExp");j.date=er("Date");j.error=er("Error");j.map=t=>er("Map")(t);j.set=t=>er("Set")(t);j.weakMap=t=>er("WeakMap")(t);j.weakSet=t=>er("WeakSet")(t);j.int8Array=er("Int8Array");j.uint8Array=er("Uint8Array");j.uint8ClampedArray=er("Uint8ClampedArray");j.int16Array=er("Int16Array");j.uint16Array=er("Uint16Array");j.int32Array=er("Int32Array");j.uint32Array=er("Uint32Array");j.float32Array=er("Float32Array");j.float64Array=er("Float64Array");j.bigInt64Array=er("BigInt64Array");j.bigUint64Array=er("BigUint64Array");j.arrayBuffer=er("ArrayBuffer");j.sharedArrayBuffer=er("SharedArrayBuffer");j.dataView=er("DataView");j.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;j.urlInstance=t=>er("URL")(t);j.urlString=t=>{if(!j.string(t))return!1;try{return new URL(t),!0}catch(e){return!1}};j.truthy=t=>Boolean(t);j.falsy=t=>!t;j.nan=t=>Number.isNaN(t);j.primitive=t=>j.null_(t)||abe(typeof t);j.integer=t=>Number.isInteger(t);j.safeInteger=t=>Number.isSafeInteger(t);j.plainObject=t=>{if(l3.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};j.typedArray=t=>ibe(mp(t));var cbe=t=>j.safeInteger(t)&&t>=0;j.arrayLike=t=>!j.nullOrUndefined(t)&&!j.function_(t)&&cbe(t.length);j.inRange=(t,e)=>{if(j.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(j.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var ube=1,gbe=["innerHTML","ownerDocument","style","attributes","nodeValue"];j.domElement=t=>j.object(t)&&t.nodeType===ube&&j.string(t.nodeName)&&!j.plainObject(t)&&gbe.every(e=>e in t);j.observable=t=>{var e,r,i,n;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((n=(i=t)["@@observable"])===null||n===void 0?void 0:n.call(i)):!1};j.nodeStream=t=>j.object(t)&&j.function_(t.pipe)&&!j.observable(t);j.infinite=t=>t===Infinity||t===-Infinity;var c3=t=>e=>j.integer(e)&&Math.abs(e%2)===t;j.evenInteger=c3(0);j.oddInteger=c3(1);j.emptyArray=t=>j.array(t)&&t.length===0;j.nonEmptyArray=t=>j.array(t)&&t.length>0;j.emptyString=t=>j.string(t)&&t.length===0;j.nonEmptyString=t=>j.string(t)&&t.length>0;var fbe=t=>j.string(t)&&!/\S/.test(t);j.emptyStringOrWhitespace=t=>j.emptyString(t)||fbe(t);j.emptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length===0;j.nonEmptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length>0;j.emptySet=t=>j.set(t)&&t.size===0;j.nonEmptySet=t=>j.set(t)&&t.size>0;j.emptyMap=t=>j.map(t)&&t.size===0;j.nonEmptyMap=t=>j.map(t)&&t.size>0;j.propertyKey=t=>j.any([j.string,j.number,j.symbol],t);j.formData=t=>er("FormData")(t);j.urlSearchParams=t=>er("URLSearchParams")(t);var u3=(t,e,r)=>{if(!j.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};j.any=(t,...e)=>(j.array(t)?t:[t]).some(i=>u3(Array.prototype.some,i,e));j.all=(t,...e)=>u3(Array.prototype.every,t,e);var Te=(t,e,r,i={})=>{if(!t){let{multipleValues:n}=i,s=n?`received values of types ${[...new Set(r.map(o=>`\`${j(o)}\``))].join(", ")}`:`received value of type \`${j(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${s}.`)}};da.assert={undefined:t=>Te(j.undefined(t),"undefined",t),string:t=>Te(j.string(t),"string",t),number:t=>Te(j.number(t),"number",t),bigint:t=>Te(j.bigint(t),"bigint",t),function_:t=>Te(j.function_(t),"Function",t),null_:t=>Te(j.null_(t),"null",t),class_:t=>Te(j.class_(t),"Class",t),boolean:t=>Te(j.boolean(t),"boolean",t),symbol:t=>Te(j.symbol(t),"symbol",t),numericString:t=>Te(j.numericString(t),"string with a number",t),array:(t,e)=>{Te(j.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Te(j.buffer(t),"Buffer",t),nullOrUndefined:t=>Te(j.nullOrUndefined(t),"null or undefined",t),object:t=>Te(j.object(t),"Object",t),iterable:t=>Te(j.iterable(t),"Iterable",t),asyncIterable:t=>Te(j.asyncIterable(t),"AsyncIterable",t),generator:t=>Te(j.generator(t),"Generator",t),asyncGenerator:t=>Te(j.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Te(j.nativePromise(t),"native Promise",t),promise:t=>Te(j.promise(t),"Promise",t),generatorFunction:t=>Te(j.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Te(j.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Te(j.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Te(j.boundFunction(t),"Function",t),regExp:t=>Te(j.regExp(t),"RegExp",t),date:t=>Te(j.date(t),"Date",t),error:t=>Te(j.error(t),"Error",t),map:t=>Te(j.map(t),"Map",t),set:t=>Te(j.set(t),"Set",t),weakMap:t=>Te(j.weakMap(t),"WeakMap",t),weakSet:t=>Te(j.weakSet(t),"WeakSet",t),int8Array:t=>Te(j.int8Array(t),"Int8Array",t),uint8Array:t=>Te(j.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Te(j.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Te(j.int16Array(t),"Int16Array",t),uint16Array:t=>Te(j.uint16Array(t),"Uint16Array",t),int32Array:t=>Te(j.int32Array(t),"Int32Array",t),uint32Array:t=>Te(j.uint32Array(t),"Uint32Array",t),float32Array:t=>Te(j.float32Array(t),"Float32Array",t),float64Array:t=>Te(j.float64Array(t),"Float64Array",t),bigInt64Array:t=>Te(j.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Te(j.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Te(j.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Te(j.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Te(j.dataView(t),"DataView",t),urlInstance:t=>Te(j.urlInstance(t),"URL",t),urlString:t=>Te(j.urlString(t),"string with a URL",t),truthy:t=>Te(j.truthy(t),"truthy",t),falsy:t=>Te(j.falsy(t),"falsy",t),nan:t=>Te(j.nan(t),"NaN",t),primitive:t=>Te(j.primitive(t),"primitive",t),integer:t=>Te(j.integer(t),"integer",t),safeInteger:t=>Te(j.safeInteger(t),"integer",t),plainObject:t=>Te(j.plainObject(t),"plain object",t),typedArray:t=>Te(j.typedArray(t),"TypedArray",t),arrayLike:t=>Te(j.arrayLike(t),"array-like",t),domElement:t=>Te(j.domElement(t),"HTMLElement",t),observable:t=>Te(j.observable(t),"Observable",t),nodeStream:t=>Te(j.nodeStream(t),"Node.js Stream",t),infinite:t=>Te(j.infinite(t),"infinite number",t),emptyArray:t=>Te(j.emptyArray(t),"empty array",t),nonEmptyArray:t=>Te(j.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Te(j.emptyString(t),"empty string",t),nonEmptyString:t=>Te(j.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Te(j.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Te(j.emptyObject(t),"empty object",t),nonEmptyObject:t=>Te(j.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Te(j.emptySet(t),"empty set",t),nonEmptySet:t=>Te(j.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Te(j.emptyMap(t),"empty map",t),nonEmptyMap:t=>Te(j.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Te(j.propertyKey(t),"PropertyKey",t),formData:t=>Te(j.formData(t),"FormData",t),urlSearchParams:t=>Te(j.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Te(j.evenInteger(t),"even integer",t),oddInteger:t=>Te(j.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Te(j.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Te(j.inRange(t,e),"in range",t),any:(t,...e)=>Te(j.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Te(j.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(j,{class:{value:j.class_},function:{value:j.function_},null:{value:j.null_}});Object.defineProperties(da.assert,{class:{value:da.assert.class_},function:{value:da.assert.function_},null:{value:da.assert.null_}});da.default=j;Dy.exports=j;Dy.exports.default=j;Dy.exports.assert=da.assert});var g3=I((gnt,Ux)=>{"use strict";var Hx=class extends Error{constructor(e){super(e||"Promise was canceled");this.name="CancelError"}get isCanceled(){return!0}},Ip=class{static fn(e){return(...r)=>new Ip((i,n,s)=>{r.push(s),e(...r).then(i,n)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,i)=>{this._reject=i;let n=a=>{this._isPending=!1,r(a)},s=a=>{this._isPending=!1,i(a)},o=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(o,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(n,s,o)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new Hx(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Ip.prototype,Promise.prototype);Ux.exports=Ip;Ux.exports.CancelError=Hx});var f3=I((Gx,jx)=>{"use strict";Object.defineProperty(Gx,"__esModule",{value:!0});var hbe=require("tls"),Yx=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let i=typeof r.connect=="function",n=typeof r.secureConnect=="function",s=typeof r.close=="function",o=()=>{i&&r.connect(),t instanceof hbe.TLSSocket&&n&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),s&&t.once("close",r.close)};t.writable&&!t.connecting?o():t.connecting?t.once("connect",o):t.destroyed&&s&&r.close(t._hadError)};Gx.default=Yx;jx.exports=Yx;jx.exports.default=Yx});var h3=I((qx,Jx)=>{"use strict";Object.defineProperty(qx,"__esModule",{value:!0});var pbe=f3(),dbe=Number(process.versions.node.split(".")[0]),Wx=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=o=>{let a=o.emit.bind(o);o.emit=(l,...c)=>(l==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,o.emit=a),a(l,...c))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||dbe>=13)&&(e.phases.total=Date.now()-e.start)});let i=o=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let a=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};o.prependOnceListener("lookup",a),pbe.default(o,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(o.removeListener("lookup",a),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?i(t.socket):t.prependOnceListener("socket",i);let n=()=>{var o;e.upload=Date.now(),e.phases.request=e.upload-(o=e.secureConnect,o!=null?o:e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?n():t.prependOnceListener("finish",n),t.prependOnceListener("response",o=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,o.timings=e,r(o),o.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};qx.default=Wx;Jx.exports=Wx;Jx.exports.default=Wx});var y3=I((fnt,zx)=>{"use strict";var{V4MAPPED:Cbe,ADDRCONFIG:mbe,ALL:p3,promises:{Resolver:d3},lookup:Ibe}=require("dns"),{promisify:Vx}=require("util"),Ebe=require("os"),Gu=Symbol("cacheableLookupCreateConnection"),_x=Symbol("cacheableLookupInstance"),C3=Symbol("expires"),ybe=typeof p3=="number",m3=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},wbe=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},I3=()=>{let t=!1,e=!1;for(let r of Object.values(Ebe.networkInterfaces()))for(let i of r)if(!i.internal&&(i.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Bbe=t=>Symbol.iterator in t,E3={ttl:!0},Qbe={all:!0},Xx=class{constructor({cache:e=new Map,maxTtl:r=Infinity,fallbackDuration:i=3600,errorTtl:n=.15,resolver:s=new d3,lookup:o=Ibe}={}){if(this.maxTtl=r,this.errorTtl=n,this._cache=e,this._resolver=s,this._dnsLookup=Vx(o),this._resolver instanceof d3?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=Vx(this._resolver.resolve4.bind(this._resolver)),this._resolve6=Vx(this._resolver.resolve6.bind(this._resolver))),this._iface=I3(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,i<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},i*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,i){if(typeof r=="function"?(i=r,r={}):typeof r=="number"&&(r={family:r}),!i)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(n=>{r.all?i(null,n):i(null,n.address,n.family,n.expires,n.ttl)},i)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let i=await this.query(e);if(r.family===6){let n=i.filter(s=>s.family===6);r.hints&Cbe&&(ybe&&r.hints&p3||n.length===0)?wbe(i):i=n}else r.family===4&&(i=i.filter(n=>n.family===4));if(r.hints&mbe){let{_iface:n}=this;i=i.filter(s=>s.family===6?n.has6:n.has4)}if(i.length===0){let n=new Error(`cacheableLookup ENOTFOUND ${e}`);throw n.code="ENOTFOUND",n.hostname=e,n}return r.all?i:i[0]}async query(e){let r=await this._cache.get(e);if(!r){let i=this._pending[e];if(i)r=await i;else{let n=this.queryAndCache(e);this._pending[e]=n,r=await n}}return r=r.map(i=>P({},i)),r}async _resolve(e){let r=async c=>{try{return await c}catch(u){if(u.code==="ENODATA"||u.code==="ENOTFOUND")return[];throw u}},[i,n]=await Promise.all([this._resolve4(e,E3),this._resolve6(e,E3)].map(c=>r(c))),s=0,o=0,a=0,l=Date.now();for(let c of i)c.family=4,c.expires=l+c.ttl*1e3,s=Math.max(s,c.ttl);for(let c of n)c.family=6,c.expires=l+c.ttl*1e3,o=Math.max(o,c.ttl);return i.length>0?n.length>0?a=Math.min(s,o):a=s:a=o,{entries:[...i,...n],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch(r){return{entries:[],cacheTtl:0}}}async _set(e,r,i){if(this.maxTtl>0&&i>0){i=Math.min(i,this.maxTtl)*1e3,r[C3]=Date.now()+i;try{await this._cache.set(e,r,i)}catch(n){this.lookupAsync=async()=>{let s=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw s.cause=n,s}}Bbe(this._cache)&&this._tick(i)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Qbe);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let i=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,i),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let i=Infinity,n=Date.now();for(let[s,o]of this._cache){let a=o[C3];n>=a?this._cache.delete(s):a("lookup"in r||(r.lookup=this.lookup),e[Gu](r,i))}uninstall(e){if(m3(e),e[Gu]){if(e[_x]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[Gu],delete e[Gu],delete e[_x]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=I3(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};zx.exports=Xx;zx.exports.default=Xx});var Q3=I((hnt,Zx)=>{"use strict";var bbe=typeof URL=="undefined"?require("url").URL:URL,vbe="text/plain",Sbe="us-ascii",w3=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),xbe=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let i=r[1].split(";"),n=r[2],s=e?"":r[3],o=!1;i[i.length-1]==="base64"&&(i.pop(),o=!0);let a=(i.shift()||"").toLowerCase(),c=[...i.map(u=>{let[g,f=""]=u.split("=").map(h=>h.trim());return g==="charset"&&(f=f.toLowerCase(),f===Sbe)?"":`${g}${f?`=${f}`:""}`}).filter(Boolean)];return o&&c.push("base64"),(c.length!==0||a&&a!==vbe)&&c.unshift(a),`data:${c.join(";")},${o?n.trim():n}${s?`#${s}`:""}`},B3=(t,e)=>{if(e=P({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return xbe(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new bbe(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?!:).|^)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];w3(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])w3(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,"")),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};Zx.exports=B3;Zx.exports.default=B3});var S3=I((pnt,b3)=>{b3.exports=v3;function v3(t,e){if(t&&e)return v3(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(i){r[i]=t[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var x3=S3();$x.exports=x3(Ry);$x.exports.strict=x3(k3);Ry.proto=Ry(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Ry(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return k3(this)},configurable:!0})});function Ry(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function k3(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var tk=I((Cnt,P3)=>{var kbe=ek(),Pbe=function(){},Dbe=function(t){return t.setHeader&&typeof t.abort=="function"},Rbe=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},D3=function(t,e,r){if(typeof e=="function")return D3(t,null,e);e||(e={}),r=kbe(r||Pbe);var i=t._writableState,n=t._readableState,s=e.readable||e.readable!==!1&&t.readable,o=e.writable||e.writable!==!1&&t.writable,a=function(){t.writable||l()},l=function(){o=!1,s||r.call(t)},c=function(){s=!1,o||r.call(t)},u=function(p){r.call(t,p?new Error("exited with error code: "+p):null)},g=function(p){r.call(t,p)},f=function(){if(s&&!(n&&n.ended))return r.call(t,new Error("premature close"));if(o&&!(i&&i.ended))return r.call(t,new Error("premature close"))},h=function(){t.req.on("finish",l)};return Dbe(t)?(t.on("complete",l),t.on("abort",f),t.req?h():t.on("request",h)):o&&!i&&(t.on("end",a),t.on("close",a)),Rbe(t)&&t.on("exit",u),t.on("end",c),t.on("finish",l),e.error!==!1&&t.on("error",g),t.on("close",f),function(){t.removeListener("complete",l),t.removeListener("abort",f),t.removeListener("request",h),t.req&&t.req.removeListener("finish",l),t.removeListener("end",a),t.removeListener("close",a),t.removeListener("finish",l),t.removeListener("exit",u),t.removeListener("end",c),t.removeListener("error",g),t.removeListener("close",f)}};P3.exports=D3});var N3=I((mnt,R3)=>{var Fbe=ek(),Nbe=tk(),rk=require("fs"),Ep=function(){},Lbe=/^v?\.0/.test(process.version),Fy=function(t){return typeof t=="function"},Tbe=function(t){return!Lbe||!rk?!1:(t instanceof(rk.ReadStream||Ep)||t instanceof(rk.WriteStream||Ep))&&Fy(t.close)},Mbe=function(t){return t.setHeader&&Fy(t.abort)},Obe=function(t,e,r,i){i=Fbe(i);var n=!1;t.on("close",function(){n=!0}),Nbe(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,Tbe(t))return t.close(Ep);if(Mbe(t))return t.abort();if(Fy(t.destroy))return t.destroy();i(o||new Error("stream was destroyed"))}}},F3=function(t){t()},Kbe=function(t,e){return t.pipe(e)},Ube=function(){var t=Array.prototype.slice.call(arguments),e=Fy(t[t.length-1]||Ep)&&t.pop()||Ep;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,i=t.map(function(n,s){var o=s0;return Obe(n,o,a,function(l){r||(r=l),l&&i.forEach(F3),!o&&(i.forEach(F3),e(r))})});return t.reduce(Kbe)};R3.exports=Ube});var T3=I((Int,L3)=>{"use strict";var{PassThrough:Hbe}=require("stream");L3.exports=t=>{t=P({},t);let{array:e}=t,{encoding:r}=t,i=r==="buffer",n=!1;e?n=!(r||i):r=r||"utf8",i&&(r=null);let s=new Hbe({objectMode:n});r&&s.setEncoding(r);let o=0,a=[];return s.on("data",l=>{a.push(l),n?o=a.length:o+=l.length}),s.getBufferedValue=()=>e?a:i?Buffer.concat(a,o):a.join(""),s.getBufferedLength=()=>o,s}});var M3=I((Ent,ju)=>{"use strict";var Gbe=N3(),jbe=T3(),ik=class extends Error{constructor(){super("maxBuffer exceeded");this.name="MaxBufferError"}};async function Ny(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e=P({maxBuffer:Infinity},e);let{maxBuffer:r}=e,i;return await new Promise((n,s)=>{let o=a=>{a&&(a.bufferedData=i.getBufferedValue()),s(a)};i=Gbe(t,jbe(e),a=>{if(a){o(a);return}n()}),i.on("data",()=>{i.getBufferedLength()>r&&o(new ik)})}),i.getBufferedValue()}ju.exports=Ny;ju.exports.default=Ny;ju.exports.buffer=(t,e)=>Ny(t,_(P({},e),{encoding:"buffer"}));ju.exports.array=(t,e)=>Ny(t,_(P({},e),{array:!0}));ju.exports.MaxBufferError=ik});var K3=I((wnt,O3)=>{"use strict";var Ybe=[200,203,204,206,300,301,404,405,410,414,501],qbe=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],Jbe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},Wbe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function nk(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let i of r){let[n,s]=i.split(/\s*=\s*/,2);e[n]=s===void 0?!0:s.replace(/^"|"$/g,"")}return e}function zbe(t){let e=[];for(let r in t){let i=t[r];e.push(i===!0?r:r+"="+i)}if(!!e.length)return e.join(", ")}O3.exports=class{constructor(e,r,{shared:i,cacheHeuristic:n,immutableMinTimeToLive:s,ignoreCargoCult:o,trustServerDate:a,_fromObject:l}={}){if(l){this._fromObject(l);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=i!==!1,this._trustServerDate=a!==void 0?a:!0,this._cacheHeuristic=n!==void 0?n:.1,this._immutableMinTtl=s!==void 0?s:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=nk(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=nk(e.headers["cache-control"]),o&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":zbe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!r.headers["cache-control"]&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&qbe.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||Ybe.indexOf(this._status)!==-1))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=nk(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let i of r)if(e.headers[i]!==this._reqHeaders[i])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let i in e)Jbe[i]||(r[i]=e[i]);if(e.connection){let i=e.connection.trim().split(/\s*,\s*/);for(let n of i)delete r[n]}if(r.warning){let i=r.warning.split(/,/).filter(n=>!/^\s*1[0-9][0-9]/.test(n));i.length?r.warning=i.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){return this._trustServerDate?this._serverDate():this._responseTime}_serverDate(){let e=Date.parse(this._resHeaders.date);if(isFinite(e)){let r=8*3600*1e3;if(Math.abs(this._responseTime-e)e&&(e=i)}let r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){let e=parseInt(this._resHeaders.age);return isFinite(e)?e:0}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this._serverDate();if(this._resHeaders.expires){let i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ii)return Math.max(e,(r-i)/1e3*this._cacheHeuristic)}return e}timeToLive(){return Math.max(0,this.maxAge()-this.age())*1e3}stale(){return this.maxAge()<=this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let n=r["if-none-match"].split(/,/).filter(s=>!/^\s*W\//.test(s));n.length?r["if-none-match"]=n.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),!r||!r.headers)throw Error("Response headers missing");let i=!1;if(r.status!==void 0&&r.status!=304?i=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let n={};for(let o in this._resHeaders)n[o]=o in r.headers&&!Wbe[o]?r.headers[o]:this._resHeaders[o];let s=Object.assign({},r,{status:this._status,method:this._method,headers:n});return{policy:new this.constructor(e,s,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl,trustServerDate:this._trustServerDate}),modified:!1,matches:!0}}}});var Ly=I((Bnt,U3)=>{"use strict";U3.exports=t=>{let e={};for(let[r,i]of Object.entries(t))e[r.toLowerCase()]=i;return e}});var j3=I((Qnt,H3)=>{"use strict";var Vbe=require("stream").Readable,_be=Ly(),G3=class extends Vbe{constructor(e,r,i,n){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(i instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof n!="string")throw new TypeError("Argument `url` should be a string");super();this.statusCode=e,this.headers=_be(r),this.body=i,this.url=n}_read(){this.push(this.body),this.push(null)}};H3.exports=G3});var q3=I((bnt,Y3)=>{"use strict";var Xbe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Y3.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Xbe));for(let i of r)i in e||(e[i]=typeof t[i]=="function"?t[i].bind(t):t[i])}});var W3=I((vnt,J3)=>{"use strict";var Zbe=require("stream").PassThrough,$be=q3(),eve=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Zbe;return $be(t,e),t.pipe(e)};J3.exports=eve});var z3=I(sk=>{sk.stringify=function t(e){if(typeof e=="undefined")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",i=Array.isArray(e);r=i?"[":"{";var n=!0;for(var s in e){var o=typeof e[s]=="function"||!i&&typeof e[s]=="undefined";Object.hasOwnProperty.call(e,s)&&!o&&(n||(r+=","),n=!1,i?e[s]==null?r+="null":r+=t(e[s]):e[s]!==void 0&&(r+=t(s)+":"+t(e[s])))}return r+=i?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e=="undefined"?"null":JSON.stringify(e)};sk.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Z3=I((xnt,V3)=>{"use strict";var tve=require("events"),_3=z3(),rve=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(require(e[r]))(t)}return new Map},X3=class extends tve{constructor(e,r){super();if(this.opts=Object.assign({namespace:"keyv",serialize:_3.stringify,deserialize:_3.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let i=Object.assign({},this.opts);this.opts.store=rve(i)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",i=>this.emit("error",i)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:i}=this.opts;return Promise.resolve().then(()=>i.get(e)).then(n=>typeof n=="string"?this.opts.deserialize(n):n).then(n=>{if(n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(e);return}return r&&r.raw?n:n.value}})}set(e,r,i){e=this._getKeyPrefix(e),typeof i=="undefined"&&(i=this.opts.ttl),i===0&&(i=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof i=="number"?Date.now()+i:null;return r={value:r,expires:s},this.opts.serialize(r)}).then(s=>n.set(e,s,i)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};V3.exports=X3});var tW=I((knt,$3)=>{"use strict";var ive=require("events"),Ty=require("url"),nve=Q3(),sve=M3(),ok=K3(),eW=j3(),ove=Ly(),ave=W3(),Ave=Z3(),yo=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Ave({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,i)=>{let n;if(typeof r=="string")n=ak(Ty.parse(r)),r={};else if(r instanceof Ty.URL)n=ak(Ty.parse(r.toString())),r={};else{let[g,...f]=(r.path||"").split("?"),h=f.length>0?`?${f.join("?")}`:"";n=ak(_(P({},r),{pathname:g,search:h}))}r=P(P({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},r),lve(n)),r.headers=ove(r.headers);let s=new ive,o=nve(Ty.format(n),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${r.method}:${o}`,l=!1,c=!1,u=g=>{c=!0;let f=!1,h,p=new Promise(m=>{h=()=>{f||(f=!0,m())}}),d=m=>{if(l&&!g.forceRefresh){m.status=m.statusCode;let B=ok.fromObject(l.cachePolicy).revalidatedPolicy(g,m);if(!B.modified){let b=B.policy.responseHeaders();m=new eW(l.statusCode,b,l.body,l.url),m.cachePolicy=B.policy,m.fromCache=!0}}m.fromCache||(m.cachePolicy=new ok(g,m,g),m.fromCache=!1);let E;g.cache&&m.cachePolicy.storable()?(E=ave(m),(async()=>{try{let B=sve.buffer(m);if(await Promise.race([p,new Promise(L=>m.once("end",L))]),f)return;let b=await B,R={cachePolicy:m.cachePolicy.toObject(),url:m.url,statusCode:m.fromCache?l.statusCode:m.statusCode,body:b},H=g.strictTtl?m.cachePolicy.timeToLive():void 0;g.maxTtl&&(H=H?Math.min(H,g.maxTtl):g.maxTtl),await this.cache.set(a,R,H)}catch(B){s.emit("error",new yo.CacheError(B))}})()):g.cache&&l&&(async()=>{try{await this.cache.delete(a)}catch(B){s.emit("error",new yo.CacheError(B))}})(),s.emit("response",E||m),typeof i=="function"&&i(E||m)};try{let m=e(g,d);m.once("error",h),m.once("abort",h),s.emit("request",m)}catch(m){s.emit("error",new yo.RequestError(m))}};return(async()=>{let g=async h=>{await Promise.resolve();let p=h.cache?await this.cache.get(a):void 0;if(typeof p=="undefined")return u(h);let d=ok.fromObject(p.cachePolicy);if(d.satisfiesWithoutRevalidation(h)&&!h.forceRefresh){let m=d.responseHeaders(),E=new eW(p.statusCode,m,p.body,p.url);E.cachePolicy=d,E.fromCache=!0,s.emit("response",E),typeof i=="function"&&i(E)}else l=p,h.headers=d.revalidationHeaders(h),u(h)},f=h=>s.emit("error",new yo.CacheError(h));this.cache.once("error",f),s.on("response",()=>this.cache.removeListener("error",f));try{await g(r)}catch(h){r.automaticFailover&&!c&&u(r),s.emit("error",new yo.CacheError(h))}})(),s}}};function lve(t){let e=P({},t);return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function ak(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}yo.RequestError=class extends Error{constructor(t){super(t.message);this.name="RequestError",Object.assign(this,t)}};yo.CacheError=class extends Error{constructor(t){super(t.message);this.name="CacheError",Object.assign(this,t)}};$3.exports=yo});var iW=I((Pnt,rW)=>{"use strict";var cve=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];rW.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(cve)),i={};for(let n of r)n in e||(i[n]={get(){let s=t[n];return typeof s=="function"?s.bind(t):s},set(s){t[n]=s},enumerable:!0,configurable:!1});return Object.defineProperties(e,i),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var sW=I((Dnt,nW)=>{"use strict";var{Transform:uve,PassThrough:gve}=require("stream"),Ak=require("zlib"),fve=iW();nW.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof Ak.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let i=!0,n=new uve({transform(a,l,c){i=!1,c(null,a)},flush(a){a()}}),s=new gve({autoDestroy:!1,destroy(a,l){t.destroy(),l(a)}}),o=r?Ak.createBrotliDecompress():Ak.createUnzip();return o.once("error",a=>{if(i&&!t.readable){s.end();return}s.destroy(a)}),fve(t,s),t.pipe(n).pipe(o).pipe(s),s}});var lk=I((Rnt,oW)=>{"use strict";var aW=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[i,n]of this.oldCache.entries())this.onEviction(i,n);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};oW.exports=aW});var uk=I((Fnt,AW)=>{"use strict";var hve=require("events"),pve=require("tls"),dve=require("http2"),Cve=lk(),_i=Symbol("currentStreamsCount"),lW=Symbol("request"),ns=Symbol("cachedOriginSet"),Yu=Symbol("gracefullyClosing"),mve=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],Ive=(t,e,r)=>{let i=0,n=t.length;for(;i>>1;r(t[s],e)?i=s+1:n=s}return i},Eve=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,ck=(t,e)=>{for(let r of t)r[ns].lengthe[ns].includes(i))&&r[_i]+e[_i]<=e.remoteSettings.maxConcurrentStreams&&cW(r)},yve=(t,e)=>{for(let r of t)e[ns].lengthr[ns].includes(i))&&e[_i]+r[_i]<=r.remoteSettings.maxConcurrentStreams&&cW(e)},uW=({agent:t,isFree:e})=>{let r={};for(let i in t.sessions){let s=t.sessions[i].filter(o=>{let a=o[ma.kCurrentStreamsCount]{t[Yu]=!0,t[_i]===0&&t.close()},ma=class extends hve{constructor({timeout:e=6e4,maxSessions:r=Infinity,maxFreeSessions:i=10,maxCachedTlsSessions:n=100}={}){super();this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=i,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Cve({maxSize:n})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let i of mve)e[i]&&(r+=`:${e[i]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let i=this.queue[e][r];this._sessionsCount{Array.isArray(i)?(i=[...i],n()):i=[{resolve:n,reject:s}];let o=this.normalizeOptions(r),a=ma.normalizeOrigin(e,r&&r.servername);if(a===void 0){for(let{reject:u}of i)u(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(o in this.sessions){let u=this.sessions[o],g=-1,f=-1,h;for(let p of u){let d=p.remoteSettings.maxConcurrentStreams;if(d=d||p[Yu]||p.destroyed)continue;h||(g=d),m>f&&(h=p,f=m)}}if(h){if(i.length!==1){for(let{reject:p}of i){let d=new Error(`Expected the length of listeners to be 1, got ${i.length}. +Please report this to https://github.com/szmarczak/http2-wrapper/`);p(d)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=dve.connect(e,P({createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u)},r));f[_i]=0,f[Yu]=!1;let h=()=>f[_i]{this.tlsSessionCache.set(u,m)}),f.once("error",m=>{for(let{reject:E}of i)E(m);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let m=this.sessions[o];m.splice(m.indexOf(f),1),m.length===0&&delete this.sessions[o]}else{let m=new Error("Session closed without receiving a SETTINGS frame");m.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:E}of i)E(m);l()}this._tryToCreateNewSession(o,a)});let d=()=>{if(!(!(o in this.queue)||!h())){for(let m of f[ns])if(m in this.queue[o]){let{listeners:E}=this.queue[o][m];for(;E.length!==0&&h();)E.shift().resolve(f);let B=this.queue[o];if(B[m].listeners.length===0&&(delete B[m],Object.keys(B).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[ns]=f.originSet,!!h()&&(d(),ck(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let m=new Error("Agent has been destroyed");for(let E of i)E.reject(m);f.destroy();return}f[ns]=f.originSet;{let m=this.sessions;if(o in m){let E=m[o];E.splice(Ive(E,f,Eve),0,f)}else m[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),d(),l(),f[_i]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,r,i),i.length=0),f.on("remoteSettings",()=>{d(),ck(this.sessions[o],f)})}),f[lW]=f.request,f.request=(m,E)=>{if(f[Yu])throw new Error("The session is gracefully closing. No new streams are allowed.");let B=f[lW](m,E);return f.ref(),++f[_i],f[_i]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,B.once("close",()=>{if(p=h(),--f[_i],!f.destroyed&&!f.closed&&(yve(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let b=f[_i]===0;b&&f.unref(),b&&(this._freeSessionsCount>this.maxFreeSessions||f[Yu])?f.close():(ck(this.sessions[o],f),d())}}),B}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,r,i,n){return new Promise((s,o)=>{this.getSession(e,r,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,r){return ma.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof r.servername=="undefined"&&(r.servername=n),pve.connect(i,n,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[_i]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let i of r)i.destroy(e);for(let r of Object.values(this.queue))for(let i of Object.values(r))i.destroyed=!0;this.queue={}}get freeSessions(){return uW({agent:this,isFree:!0})}get busySessions(){return uW({agent:this,isFree:!1})}};ma.kCurrentStreamsCount=_i;ma.kGracefullyClosing=Yu;AW.exports={Agent:ma,globalAgent:new ma}});var gk=I((Nnt,gW)=>{"use strict";var{Readable:wve}=require("stream"),fW=class extends wve{constructor(e,r){super({highWaterMark:r,autoDestroy:!1});this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};gW.exports=fW});var fk=I((Lnt,hW)=>{"use strict";hW.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var dW=I((Tnt,pW)=>{"use strict";pW.exports=(t,e,r)=>{for(let i of r)t.on(i,(...n)=>e.emit(i,...n))}});var mW=I((Mnt,CW)=>{"use strict";CW.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var EW=I((Knt,IW)=>{"use strict";var qu=(t,e,r)=>{IW.exports[e]=class extends t{constructor(...n){super(typeof r=="string"?r:r(n));this.name=`${super.name} [${e}]`,this.code=e}}};qu(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],i=Array.isArray(r);return i&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${i?"one of":"of"} type ${r}. Received ${typeof t[2]}`});qu(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);qu(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);qu(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);qu(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);qu(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var Ck=I((Unt,yW)=>{"use strict";var Bve=require("http2"),{Writable:Qve}=require("stream"),{Agent:wW,globalAgent:bve}=uk(),vve=gk(),Sve=fk(),xve=dW(),kve=mW(),{ERR_INVALID_ARG_TYPE:hk,ERR_INVALID_PROTOCOL:Pve,ERR_HTTP_HEADERS_SENT:BW,ERR_INVALID_HTTP_TOKEN:Dve,ERR_HTTP_INVALID_HEADER_VALUE:Rve,ERR_INVALID_CHAR:Fve}=EW(),{HTTP2_HEADER_STATUS:QW,HTTP2_HEADER_METHOD:bW,HTTP2_HEADER_PATH:vW,HTTP2_METHOD_CONNECT:Nve}=Bve.constants,Pi=Symbol("headers"),pk=Symbol("origin"),dk=Symbol("session"),SW=Symbol("options"),My=Symbol("flushedHeaders"),yp=Symbol("jobs"),Lve=/^[\^`\-\w!#$%&*+.|~]+$/,Tve=/[^\t\u0020-\u007E\u0080-\u00FF]/,xW=class extends Qve{constructor(e,r,i){super({autoDestroy:!1});let n=typeof e=="string"||e instanceof URL;if(n&&(e=Sve(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(i=r,r=n?e:P({},e)):r=P(P({},e),r),r.h2session)this[dk]=r.h2session;else if(r.agent===!1)this.agent=new wW({maxFreeSessions:0});else if(typeof r.agent=="undefined"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new wW({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=bve;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new hk("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Pve(r.protocol,"https:");let s=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,o=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:a}=r;if(r.timeout=void 0,this[Pi]=Object.create(null),this[yp]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[l,c]of Object.entries(r.headers))this.setHeader(l,c);r.auth&&!("authorization"in this[Pi])&&(this[Pi].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[SW]=r,s===443?(this[pk]=`https://${o}`,":authority"in this[Pi]||(this[Pi][":authority"]=o)):(this[pk]=`https://${o}:${s}`,":authority"in this[Pi]||(this[Pi][":authority"]=`${o}:${s}`)),a&&this.setTimeout(a),i&&this.once("response",i),this[My]=!1}get method(){return this[Pi][bW]}set method(e){e&&(this[Pi][bW]=e.toUpperCase())}get path(){return this[Pi][vW]}set path(e){e&&(this[Pi][vW]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,i){if(this._mustNotHaveABody){i(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let n=()=>this._request.write(e,r,i);this._request?n():this[yp].push(n)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[yp].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[My]||this.destroyed)return;this[My]=!0;let e=this.method===Nve,r=i=>{if(this._request=i,this.destroyed){i.destroy();return}e||xve(i,this,["timeout","continue","close","error"]);let n=o=>(...a)=>{!this.writable&&!this.destroyed?o(...a):this.once("finish",()=>{o(...a)})};i.once("response",n((o,a,l)=>{let c=new vve(this.socket,i.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=o[QW],c.headers=o,c.rawHeaders=l,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,i,Buffer.alloc(0))?this.emit("close"):i.destroy()):(i.on("data",u=>{!c._dumped&&!c.push(u)&&i.pause()}),i.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),i.once("headers",n(o=>this.emit("information",{statusCode:o[QW]}))),i.once("trailers",n((o,a,l)=>{let{res:c}=this;c.trailers=o,c.rawTrailers=l}));let{socket:s}=i.session;this.socket=s,this.connection=s;for(let o of this[yp])o();this.emit("socket",this.socket)};if(this[dk])try{r(this[dk].request(this[Pi]))}catch(i){this.emit("error",i)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[pk],this[SW],this[Pi]))}catch(i){this.emit("error",i)}}}getHeader(e){if(typeof e!="string")throw new hk("name","string",e);return this[Pi][e.toLowerCase()]}get headersSent(){return this[My]}removeHeader(e){if(typeof e!="string")throw new hk("name","string",e);if(this.headersSent)throw new BW("remove");delete this[Pi][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new BW("set");if(typeof e!="string"||!Lve.test(e)&&!kve(e))throw new Dve("Header name",e);if(typeof r=="undefined")throw new Rve(r,e);if(Tve.test(r))throw new Fve("header content",e);this[Pi][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let i=()=>this._request.setTimeout(e,r);return this._request?i():this[yp].push(i),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};yW.exports=xW});var PW=I((Hnt,kW)=>{"use strict";var Mve=require("tls");kW.exports=(t={})=>new Promise((e,r)=>{let i=Mve.connect(t,()=>{t.resolveSocket?(i.off("error",r),e({alpnProtocol:i.alpnProtocol,socket:i})):(i.destroy(),e({alpnProtocol:i.alpnProtocol}))});i.on("error",r)})});var RW=I((Gnt,DW)=>{"use strict";var Ove=require("net");DW.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Ove.isIP(e)?"":e}});var LW=I((jnt,mk)=>{"use strict";var FW=require("http"),Ik=require("https"),Kve=PW(),Uve=lk(),Hve=Ck(),Gve=RW(),jve=fk(),Oy=new Uve({maxSize:100}),wp=new Map,NW=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let i=()=>{t.emit("free",e,r)};e.on("free",i);let n=()=>{t.removeSocket(e,r)};e.on("close",n);let s=()=>{t.removeSocket(e,r),e.off("close",n),e.off("free",i),e.off("agentRemove",s)};e.on("agentRemove",s),t.emit("free",e,r)},Yve=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!Oy.has(e)){if(wp.has(e))return(await wp.get(e)).alpnProtocol;let{path:r,agent:i}=t;t.path=t.socketPath;let n=Kve(t);wp.set(e,n);try{let{socket:s,alpnProtocol:o}=await n;if(Oy.set(e,o),t.path=r,o==="h2")s.destroy();else{let{globalAgent:a}=Ik,l=Ik.Agent.prototype.createConnection;i?i.createConnection===l?NW(i,s,t):s.destroy():a.createConnection===l?NW(a,s,t):s.destroy()}return wp.delete(e),o}catch(s){throw wp.delete(e),s}}return Oy.get(e)};mk.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=jve(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e=_(P(P({ALPNProtocols:["h2","http/1.1"]},t),e),{resolveSocket:!0}),!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let i=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Gve(e),e.port=e.port||(i?443:80),e._defaultAgent=i?Ik.globalAgent:FW.globalAgent;let n=e.agent;if(n){if(n.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=n[i?"https":"http"]}return i&&await Yve(e)==="h2"?(n&&(e.agent=n.http2),new Hve(e,r)):FW.request(e,r)};mk.exports.protocolCache=Oy});var MW=I((Ynt,TW)=>{"use strict";var qve=require("http2"),Jve=uk(),Ek=Ck(),Wve=gk(),zve=LW(),Vve=(t,e,r)=>new Ek(t,e,r),_ve=(t,e,r)=>{let i=new Ek(t,e,r);return i.end(),i};TW.exports=_(P(_(P({},qve),{ClientRequest:Ek,IncomingMessage:Wve}),Jve),{request:Vve,get:_ve,auto:zve})});var wk=I(yk=>{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});var OW=Ca();yk.default=t=>OW.default.nodeStream(t)&&OW.default.function_(t.getBoundary)});var GW=I(Bk=>{"use strict";Object.defineProperty(Bk,"__esModule",{value:!0});var KW=require("fs"),UW=require("util"),HW=Ca(),Xve=wk(),Zve=UW.promisify(KW.stat);Bk.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(HW.default.string(t))return Buffer.byteLength(t);if(HW.default.buffer(t))return t.length;if(Xve.default(t))return UW.promisify(t.getLength.bind(t))();if(t instanceof KW.ReadStream){let{size:r}=await Zve(t.path);return r===0?void 0:r}}});var bk=I(Qk=>{"use strict";Object.defineProperty(Qk,"__esModule",{value:!0});function $ve(t,e,r){let i={};for(let n of r)i[n]=(...s)=>{e.emit(n,...s)},t.on(n,i[n]);return()=>{for(let n of r)t.off(n,i[n])}}Qk.default=$ve});var jW=I(vk=>{"use strict";Object.defineProperty(vk,"__esModule",{value:!0});vk.default=()=>{let t=[];return{once(e,r,i){e.once(r,i),t.push({origin:e,event:r,fn:i})},unhandleAll(){for(let e of t){let{origin:r,event:i,fn:n}=e;r.removeListener(i,n)}t.length=0}}}});var qW=I(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});Bp.TimeoutError=void 0;var eSe=require("net"),tSe=jW(),YW=Symbol("reentry"),rSe=()=>{},Sk=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`);this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};Bp.TimeoutError=Sk;Bp.default=(t,e,r)=>{if(YW in t)return rSe;t[YW]=!0;let i=[],{once:n,unhandleAll:s}=tSe.default(),o=(g,f,h)=>{var p;let d=setTimeout(f,g,g,h);(p=d.unref)===null||p===void 0||p.call(d);let m=()=>{clearTimeout(d)};return i.push(m),m},{host:a,hostname:l}=r,c=(g,f)=>{t.destroy(new Sk(g,f))},u=()=>{for(let g of i)g();s()};if(t.once("error",g=>{if(u(),t.listenerCount("error")===0)throw g}),t.once("close",u),n(t,"response",g=>{n(g,"end",u)}),typeof e.request!="undefined"&&o(e.request,c,"request"),typeof e.socket!="undefined"){let g=()=>{c(e.socket,"socket")};t.setTimeout(e.socket,g),i.push(()=>{t.removeListener("timeout",g)})}return n(t,"socket",g=>{var f;let{socketPath:h}=t;if(g.connecting){let p=Boolean(h!=null?h:eSe.isIP((f=l!=null?l:a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup!="undefined"&&!p&&typeof g.address().address=="undefined"){let d=o(e.lookup,c,"lookup");n(g,"lookup",d)}if(typeof e.connect!="undefined"){let d=()=>o(e.connect,c,"connect");p?n(g,"connect",d()):n(g,"lookup",m=>{m===null&&n(g,"connect",d())})}typeof e.secureConnect!="undefined"&&r.protocol==="https:"&&n(g,"connect",()=>{let d=o(e.secureConnect,c,"secureConnect");n(g,"secureConnect",d)})}if(typeof e.send!="undefined"){let p=()=>o(e.send,c,"send");g.connecting?n(g,"connect",()=>{n(t,"upload-complete",p())}):n(t,"upload-complete",p())}}),typeof e.response!="undefined"&&n(t,"upload-complete",()=>{let g=o(e.response,c,"response");n(t,"response",g)}),u}});var WW=I(xk=>{"use strict";Object.defineProperty(xk,"__esModule",{value:!0});var JW=Ca();xk.default=t=>{t=t;let e={protocol:t.protocol,hostname:JW.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return JW.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var zW=I(kk=>{"use strict";Object.defineProperty(kk,"__esModule",{value:!0});var iSe=require("url"),nSe=["protocol","host","hostname","port","pathname","search"];kk.default=(t,e)=>{var r,i;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(i=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&i!==void 0?i:""}`}let n=new iSe.URL(t);if(e.path){let s=e.path.indexOf("?");s===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,s),e.search=e.path.slice(s+1)),delete e.path}for(let s of nSe)e[s]&&(n[s]=e[s].toString());return n}});var _W=I(Pk=>{"use strict";Object.defineProperty(Pk,"__esModule",{value:!0});var VW=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};Pk.default=VW});var Rk=I(Dk=>{"use strict";Object.defineProperty(Dk,"__esModule",{value:!0});var sSe=async t=>{let e=[],r=0;for await(let i of t)e.push(i),r+=Buffer.byteLength(i);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};Dk.default=sSe});var ZW=I(ql=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});ql.dnsLookupIpVersionToFamily=ql.isDnsLookupIpVersion=void 0;var XW={auto:0,ipv4:4,ipv6:6};ql.isDnsLookupIpVersion=t=>t in XW;ql.dnsLookupIpVersionToFamily=t=>{if(ql.isDnsLookupIpVersion(t))return XW[t];throw new Error("Invalid DNS lookup IP version")}});var Fk=I(Ky=>{"use strict";Object.defineProperty(Ky,"__esModule",{value:!0});Ky.isResponseOk=void 0;Ky.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var e8=I(Nk=>{"use strict";Object.defineProperty(Nk,"__esModule",{value:!0});var $W=new Set;Nk.default=t=>{$W.has(t)||($W.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var t8=I(Lk=>{"use strict";Object.defineProperty(Lk,"__esModule",{value:!0});var ar=Ca(),oSe=(t,e)=>{if(ar.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");ar.assert.any([ar.default.string,ar.default.undefined],t.encoding),ar.assert.any([ar.default.boolean,ar.default.undefined],t.resolveBodyOnly),ar.assert.any([ar.default.boolean,ar.default.undefined],t.methodRewriting),ar.assert.any([ar.default.boolean,ar.default.undefined],t.isStream),ar.assert.any([ar.default.string,ar.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry=P({},e.retry):t.retry={calculateDelay:i=>i.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},ar.default.object(r)?(t.retry=P(P({},t.retry),r),t.retry.methods=[...new Set(t.retry.methods.map(i=>i.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):ar.default.number(r)&&(t.retry.limit=r),ar.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(ar.default.number))),ar.default.object(t.pagination)){e&&(t.pagination=P(P({},e.pagination),t.pagination));let{pagination:i}=t;if(!ar.default.function_(i.transform))throw new Error("`options.pagination.transform` must be implemented");if(!ar.default.function_(i.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!ar.default.function_(i.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!ar.default.function_(i.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};Lk.default=oSe});var r8=I(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.retryAfterStatusCodes=void 0;Qp.retryAfterStatusCodes=new Set([413,429,503]);var aSe=({attemptCount:t,retryOptions:e,error:r,retryAfter:i})=>{if(t>e.limit)return 0;let n=e.methods.includes(r.options.method),s=e.errorCodes.includes(r.code),o=r.response&&e.statusCodes.includes(r.response.statusCode);if(!n||!s&&!o)return 0;if(r.response){if(i)return e.maxRetryAfter===void 0||i>e.maxRetryAfter?0:i;if(r.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(t-1)*1e3+a};Qp.default=aSe});var vp=I(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.UnsupportedProtocolError=Rt.ReadError=Rt.TimeoutError=Rt.UploadError=Rt.CacheError=Rt.HTTPError=Rt.MaxRedirectsError=Rt.RequestError=Rt.setNonEnumerableProperties=Rt.knownHookEvents=Rt.withoutBody=Rt.kIsNormalizedAlready=void 0;var i8=require("util"),n8=require("stream"),ASe=require("fs"),dA=require("url"),s8=require("http"),Tk=require("http"),lSe=require("https"),cSe=h3(),uSe=y3(),o8=tW(),gSe=sW(),fSe=MW(),hSe=Ly(),ce=Ca(),pSe=GW(),a8=wk(),dSe=bk(),A8=qW(),CSe=WW(),l8=zW(),mSe=_W(),ISe=Rk(),c8=ZW(),ESe=Fk(),CA=e8(),ySe=t8(),wSe=r8(),Mk,Ii=Symbol("request"),Uy=Symbol("response"),Ju=Symbol("responseSize"),Wu=Symbol("downloadedSize"),zu=Symbol("bodySize"),Vu=Symbol("uploadedSize"),Hy=Symbol("serverResponsesPiped"),u8=Symbol("unproxyEvents"),g8=Symbol("isFromCache"),Ok=Symbol("cancelTimeouts"),f8=Symbol("startedReading"),_u=Symbol("stopReading"),Gy=Symbol("triggerRead"),mA=Symbol("body"),bp=Symbol("jobs"),h8=Symbol("originalResponse"),p8=Symbol("retryTimeout");Rt.kIsNormalizedAlready=Symbol("isNormalizedAlready");var BSe=ce.default.string(process.versions.brotli);Rt.withoutBody=new Set(["GET","HEAD"]);Rt.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function QSe(t){for(let e in t){let r=t[e];if(!ce.default.string(r)&&!ce.default.number(r)&&!ce.default.boolean(r)&&!ce.default.null_(r)&&!ce.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function bSe(t){return ce.default.object(t)&&!("statusCode"in t)}var Kk=new mSe.default,vSe=async t=>new Promise((e,r)=>{let i=n=>{r(n)};t.pending||e(),t.once("error",i),t.once("ready",()=>{t.off("error",i),e()})}),SSe=new Set([300,301,302,303,304,307,308]),xSe=["context","body","json","form"];Rt.setNonEnumerableProperties=(t,e)=>{let r={};for(let i of t)if(!!i)for(let n of xSe)n in i&&(r[n]={writable:!0,configurable:!0,enumerable:!1,value:i[n]});Object.defineProperties(e,r)};var _r=class extends Error{constructor(e,r,i){var n;super(e);if(Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,i instanceof Uk?(Object.defineProperty(this,"request",{enumerable:!1,value:i}),Object.defineProperty(this,"response",{enumerable:!1,value:i[Uy]}),Object.defineProperty(this,"options",{enumerable:!1,value:i.options})):Object.defineProperty(this,"options",{enumerable:!1,value:i}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,ce.default.string(r.stack)&&ce.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,o=this.stack.slice(s).split(` +`).reverse(),a=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` +`).reverse();for(;a.length!==0&&a[0]===o[0];)o.shift();this.stack=`${this.stack.slice(0,s)}${o.reverse().join(` +`)}${a.reverse().join(` +`)}`}}};Rt.RequestError=_r;var Hk=class extends _r{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e);this.name="MaxRedirectsError"}};Rt.MaxRedirectsError=Hk;var Gk=class extends _r{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request);this.name="HTTPError"}};Rt.HTTPError=Gk;var jk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="CacheError"}};Rt.CacheError=jk;var Yk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="UploadError"}};Rt.UploadError=Yk;var qk=class extends _r{constructor(e,r,i){super(e.message,e,i);this.name="TimeoutError",this.event=e.event,this.timings=r}};Rt.TimeoutError=qk;var jy=class extends _r{constructor(e,r){super(e.message,e,r);this.name="ReadError"}};Rt.ReadError=jy;var Jk=class extends _r{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e);this.name="UnsupportedProtocolError"}};Rt.UnsupportedProtocolError=Jk;var kSe=["socket","connect","continue","information","upgrade","timeout"],Uk=class extends n8.Duplex{constructor(e,r={},i){super({autoDestroy:!1,highWaterMark:0});this[Wu]=0,this[Vu]=0,this.requestInitialized=!1,this[Hy]=new Set,this.redirects=[],this[_u]=!1,this[Gy]=!1,this[bp]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof Tk.IncomingMessage&&(this.options.headers=P(P({},c.headers),this.options.headers))});let{json:o,body:a,form:l}=r;if((o||a||l)&&this._lockWrite(),Rt.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,i)}catch(c){ce.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof ASe.ReadStream&&await vSe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[Ii])===null||c===void 0||c.destroy();return}for(let g of this[bp])g();this[bp].length=0,this.requestInitialized=!0}catch(u){if(u instanceof _r){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,r,i){var n,s,o,a,l;let c=r;if(ce.default.object(e)&&!ce.default.urlInstance(e))r=P(P(P({},i),e),r);else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r=P(P({},i),r),e!==void 0&&(r.url=e),ce.default.urlInstance(r.url)&&(r.url=new dA.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),ce.assert.any([ce.default.string,ce.default.undefined],r.method),ce.assert.any([ce.default.object,ce.default.undefined],r.headers),ce.assert.any([ce.default.string,ce.default.urlInstance,ce.default.undefined],r.prefixUrl),ce.assert.any([ce.default.object,ce.default.undefined],r.cookieJar),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.searchParams),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.cache),ce.assert.any([ce.default.object,ce.default.number,ce.default.undefined],r.timeout),ce.assert.any([ce.default.object,ce.default.undefined],r.context),ce.assert.any([ce.default.object,ce.default.undefined],r.hooks),ce.assert.any([ce.default.boolean,ce.default.undefined],r.decompress),ce.assert.any([ce.default.boolean,ce.default.undefined],r.ignoreInvalidCookies),ce.assert.any([ce.default.boolean,ce.default.undefined],r.followRedirect),ce.assert.any([ce.default.number,ce.default.undefined],r.maxRedirects),ce.assert.any([ce.default.boolean,ce.default.undefined],r.throwHttpErrors),ce.assert.any([ce.default.boolean,ce.default.undefined],r.http2),ce.assert.any([ce.default.boolean,ce.default.undefined],r.allowGetBody),ce.assert.any([ce.default.string,ce.default.undefined],r.localAddress),ce.assert.any([c8.isDnsLookupIpVersion,ce.default.undefined],r.dnsLookupIpVersion),ce.assert.any([ce.default.object,ce.default.undefined],r.https),ce.assert.any([ce.default.boolean,ce.default.undefined],r.rejectUnauthorized),r.https&&(ce.assert.any([ce.default.boolean,ce.default.undefined],r.https.rejectUnauthorized),ce.assert.any([ce.default.function_,ce.default.undefined],r.https.checkServerIdentity),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificateAuthority),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.key),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificate),ce.assert.any([ce.default.string,ce.default.undefined],r.https.passphrase),ce.assert.any([ce.default.string,ce.default.buffer,ce.default.array,ce.default.undefined],r.https.pfx)),ce.assert.any([ce.default.object,ce.default.undefined],r.cacheOptions),ce.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(i==null?void 0:i.headers)?r.headers=P({},r.headers):r.headers=hSe(P(P({},i==null?void 0:i.headers),r.headers)),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(i==null?void 0:i.searchParams)){let h;if(ce.default.string(r.searchParams)||r.searchParams instanceof dA.URLSearchParams)h=new dA.URLSearchParams(r.searchParams);else{QSe(r.searchParams),h=new dA.URLSearchParams;for(let p in r.searchParams){let d=r.searchParams[p];d===null?h.append(p,""):d!==void 0&&h.append(p,d)}}(n=i==null?void 0:i.searchParams)===null||n===void 0||n.forEach((p,d)=>{h.has(d)||h.append(d,p)}),r.searchParams=h}if(r.username=(s=r.username)!==null&&s!==void 0?s:"",r.password=(o=r.password)!==null&&o!==void 0?o:"",ce.default.undefined(r.prefixUrl)?r.prefixUrl=(a=i==null?void 0:i.prefixUrl)!==null&&a!==void 0?a:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),ce.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=l8.default(r.prefixUrl+r.url,r)}else(ce.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=l8.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:h}=r;Object.defineProperty(r,"prefixUrl",{set:d=>{let m=r.url;if(!m.href.startsWith(d))throw new Error(`Cannot change \`prefixUrl\` from ${h} to ${d}: ${m.href}`);r.url=new dA.URL(d+m.href.slice(h.length)),h=d},get:()=>h});let{protocol:p}=r.url;if(p==="unix:"&&(p="http:",r.url=new dA.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),p!=="http:"&&p!=="https:")throw new Jk(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:u}=r;if(u){let{setCookie:h,getCookieString:p}=u;ce.assert.function_(h),ce.assert.function_(p),h.length===4&&p.length===0&&(h=i8.promisify(h.bind(r.cookieJar)),p=i8.promisify(p.bind(r.cookieJar)),r.cookieJar={setCookie:h,getCookieString:p})}let{cache:g}=r;if(g&&(Kk.has(g)||Kk.set(g,new o8((h,p)=>{let d=h[Ii](h,p);return ce.default.promise(d)&&(d.once=(m,E)=>{if(m==="error")d.catch(E);else if(m==="abort")(async()=>{try{(await d).once("abort",E)}catch(B){}})();else throw new Error(`Unknown HTTP2 promise event: ${m}`);return d}),d},g))),r.cacheOptions=P({},r.cacheOptions),r.dnsCache===!0)Mk||(Mk=new uSe.default),r.dnsCache=Mk;else if(!ce.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${ce.default(r.dnsCache)}`);ce.default.number(r.timeout)?r.timeout={request:r.timeout}:i&&r.timeout!==i.timeout?r.timeout=P(P({},i.timeout),r.timeout):r.timeout=P({},r.timeout),r.context||(r.context={});let f=r.hooks===(i==null?void 0:i.hooks);r.hooks=P({},r.hooks);for(let h of Rt.knownHookEvents)if(h in r.hooks)if(ce.default.array(r.hooks[h]))r.hooks[h]=[...r.hooks[h]];else throw new TypeError(`Parameter \`${h}\` must be an Array, got ${ce.default(r.hooks[h])}`);else r.hooks[h]=[];if(i&&!f)for(let h of Rt.knownHookEvents)i.hooks[h].length>0&&(r.hooks[h]=[...i.hooks[h],...r.hooks[h]]);if("family"in r&&CA.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),(i==null?void 0:i.https)&&(r.https=P(P({},i.https),r.https)),"rejectUnauthorized"in r&&CA.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&CA.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&CA.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&CA.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&CA.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&CA.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&CA.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let h in r.agent)if(h!=="http"&&h!=="https"&&h!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${h}\``)}return r.maxRedirects=(l=r.maxRedirects)!==null&&l!==void 0?l:0,Rt.setNonEnumerableProperties([i,c],r),ySe.default(r,i)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,i=!ce.default.undefined(e.form),n=!ce.default.undefined(e.json),s=!ce.default.undefined(e.body),o=i||n||s,a=Rt.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,o){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,i,n].filter(l=>l).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof n8.Readable)&&!ce.default.string(e.body)&&!ce.default.buffer(e.body)&&!a8.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(i&&!ce.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let l=!ce.default.string(r["content-type"]);s?(a8.default(e.body)&&l&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[mA]=e.body):i?(l&&(r["content-type"]="application/x-www-form-urlencoded"),this[mA]=new dA.URLSearchParams(e.form).toString()):(l&&(r["content-type"]="application/json"),this[mA]=e.stringifyJson(e.json));let c=await pSe.default(this[mA],e.headers);ce.default.undefined(r["content-length"])&&ce.default.undefined(r["transfer-encoding"])&&!a&&!ce.default.undefined(c)&&(r["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[zu]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:i}=r;this[h8]=e,r.decompress&&(e=gSe(e));let n=e.statusCode,s=e;s.statusMessage=s.statusMessage?s.statusMessage:s8.STATUS_CODES[n],s.url=r.url.toString(),s.requestUrl=this.requestUrl,s.redirectUrls=this.redirects,s.request=this,s.isFromCache=e.fromCache||!1,s.ip=this.ip,s.retryCount=this.retryCount,this[g8]=s.isFromCache,this[Ju]=Number(e.headers["content-length"])||void 0,this[Uy]=e,e.once("end",()=>{this[Ju]=this[Wu],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new jy(a,this))}),e.once("aborted",()=>{this._beforeError(new jy({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let o=e.headers["set-cookie"];if(ce.default.object(r.cookieJar)&&o){let a=o.map(async l=>r.cookieJar.setCookie(l,i.toString()));r.ignoreInvalidCookies&&(a=a.map(async l=>l.catch(()=>{})));try{await Promise.all(a)}catch(l){this._beforeError(l);return}}if(r.followRedirect&&e.headers.location&&SSe.has(n)){if(e.resume(),this[Ii]&&(this[Ok](),delete this[Ii],this[u8]()),(n===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[mA]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new Hk(this));return}try{let l=Buffer.from(e.headers.location,"binary").toString(),c=new dA.URL(l,i),u=c.toString();decodeURI(u),c.hostname!==i.hostname||c.port!==i.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(c.username=r.username,c.password=r.password),this.redirects.push(u),r.url=c;for(let g of r.hooks.beforeRedirect)await g(r,s);this.emit("redirect",s,r),await this._makeRequest()}catch(l){this._beforeError(l);return}return}if(r.isStream&&r.throwHttpErrors&&!ESe.isResponseOk(s)){this._beforeError(new Gk(s));return}e.on("readable",()=>{this[Gy]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[Hy])if(!a.headersSent){for(let l in e.headers){let c=r.decompress?l!=="content-encoding":!0,u=e.headers[l];c&&a.setHeader(l,u)}a.statusCode=n}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:i,url:n}=r;cSe.default(e),this[Ok]=A8.default(e,i,n);let s=r.cache?"cacheableResponse":"response";e.once(s,l=>{this._onResponse(l)}),e.once("error",l=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),l=l instanceof A8.TimeoutError?new qk(l,this.timings,this):new _r(l.message,l,this),this._beforeError(l)}),this[u8]=dSe.default(e,this,kSe),this[Ii]=e,this.emit("uploadProgress",this.uploadProgress);let o=this[mA],a=this.redirects.length===0?this:e;ce.default.nodeStream(o)?(o.pipe(a),o.once("error",l=>{this._beforeError(new Yk(l,this))})):(this._unlockWrite(),ce.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((i,n)=>{Object.assign(r,CSe.default(e)),delete r.url;let s,o=Kk.get(r.cache)(r,async a=>{a._readableState.autoDestroy=!1,s&&(await s).emit("cacheableResponse",a),i(a)});r.url=e,o.once("error",n),o.once("request",async a=>{s=a,i(s)})})}async _makeRequest(){var e,r,i,n,s;let{options:o}=this,{headers:a}=o;for(let E in a)if(ce.default.undefined(a[E]))delete a[E];else if(ce.default.null_(a[E]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${E}\` header`);if(o.decompress&&ce.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=BSe?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){let E=await o.cookieJar.getCookieString(o.url.toString());ce.default.nonEmptyString(E)&&(o.headers.cookie=E)}for(let E of o.hooks.beforeRequest){let B=await E(o);if(!ce.default.undefined(B)){o.request=()=>B;break}}o.body&&this[mA]!==o.body&&(this[mA]=o.body);let{agent:l,request:c,timeout:u,url:g}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),g.hostname==="unix"){let E=/(?.+?):(?.+)/.exec(`${g.pathname}${g.search}`);if(E==null?void 0:E.groups){let{socketPath:B,path:b}=E.groups;Object.assign(o,{socketPath:B,path:b,host:""})}}let f=g.protocol==="https:",h;o.http2?h=fSe.auto:h=f?lSe.request:s8.request;let p=(e=o.request)!==null&&e!==void 0?e:h,d=o.cache?this._createCacheableRequest:p;l&&!o.http2&&(o.agent=l[f?"https":"http"]),o[Ii]=p,delete o.request,delete o.timeout;let m=o;if(m.shared=(r=o.cacheOptions)===null||r===void 0?void 0:r.shared,m.cacheHeuristic=(i=o.cacheOptions)===null||i===void 0?void 0:i.cacheHeuristic,m.immutableMinTimeToLive=(n=o.cacheOptions)===null||n===void 0?void 0:n.immutableMinTimeToLive,m.ignoreCargoCult=(s=o.cacheOptions)===null||s===void 0?void 0:s.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{m.family=c8.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch(E){throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(m.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(m.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(m.ca=o.https.certificateAuthority),o.https.certificate&&(m.cert=o.https.certificate),o.https.key&&(m.key=o.https.key),o.https.passphrase&&(m.passphrase=o.https.passphrase),o.https.pfx&&(m.pfx=o.https.pfx));try{let E=await d(g,m);ce.default.undefined(E)&&(E=h(g,m)),o.request=c,o.timeout=u,o.agent=l,o.https&&("rejectUnauthorized"in o.https&&delete m.rejectUnauthorized,o.https.checkServerIdentity&&delete m.checkServerIdentity,o.https.certificateAuthority&&delete m.ca,o.https.certificate&&delete m.cert,o.https.key&&delete m.key,o.https.passphrase&&delete m.passphrase,o.https.pfx&&delete m.pfx),bSe(E)?this._onRequest(E):this.writable?(this.once("finish",()=>{this._onResponse(E)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(E)}catch(E){throw E instanceof o8.CacheError?new jk(E,this):new _r(E.message,E,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new _r(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[_u])return;let{options:r}=this,i=this.retryCount+1;this[_u]=!0,e instanceof _r||(e=new _r(e.message,e,this));let n=e,{response:s}=n;(async()=>{if(s&&!s.body){s.setEncoding(this._readableState.encoding);try{s.rawBody=await ISe.default(s),s.body=s.rawBody.toString()}catch(o){}}if(this.listenerCount("retry")!==0){let o;try{let a;s&&"retry-after"in s.headers&&(a=Number(s.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(s.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),o=await r.retry.calculateDelay({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:wSe.default({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:0})})}catch(a){this._error(new _r(a.message,a,this));return}if(o){let a=async()=>{try{for(let l of this.options.hooks.beforeRetry)await l(this.options,n,i)}catch(l){this._error(new _r(l.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",i,e))};this[p8]=setTimeout(a,o);return}}this._error(n)})()}_read(){this[Gy]=!0;let e=this[Uy];if(e&&!this[_u]){e.readableLength&&(this[Gy]=!1);let r;for(;(r=e.read())!==null;){this[Wu]+=r.length,this[f8]=!0;let i=this.downloadProgress;i.percent<1&&this.emit("downloadProgress",i),this.push(r)}}}_write(e,r,i){let n=()=>{this._writeRequest(e,r,i)};this.requestInitialized?n():this[bp].push(n)}_writeRequest(e,r,i){this[Ii].destroyed||(this._progressCallbacks.push(()=>{this[Vu]+=Buffer.byteLength(e,r);let n=this.uploadProgress;n.percent<1&&this.emit("uploadProgress",n)}),this[Ii].write(e,r,n=>{!n&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),i(n)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Ii in this)){e();return}if(this[Ii].destroyed){e();return}this[Ii].end(i=>{i||(this[zu]=this[Vu],this.emit("uploadProgress",this.uploadProgress),this[Ii].emit("upload-complete")),e(i)})};this.requestInitialized?r():this[bp].push(r)}_destroy(e,r){var i;this[_u]=!0,clearTimeout(this[p8]),Ii in this&&(this[Ok](),((i=this[Uy])===null||i===void 0?void 0:i.complete)||this[Ii].destroy()),e!==null&&!ce.default.undefined(e)&&!(e instanceof _r)&&(e=new _r(e.message,e,this)),r(e)}get _isAboutToError(){return this[_u]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,i;return((r=(e=this[Ii])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!((i=this[h8])===null||i===void 0?void 0:i.complete)}get socket(){var e,r;return(r=(e=this[Ii])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[Ju]?e=this[Wu]/this[Ju]:this[Ju]===this[Wu]?e=1:e=0,{percent:e,transferred:this[Wu],total:this[Ju]}}get uploadProgress(){let e;return this[zu]?e=this[Vu]/this[zu]:this[zu]===this[Vu]?e=1:e=0,{percent:e,transferred:this[Vu],total:this[zu]}}get timings(){var e;return(e=this[Ii])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[g8]}pipe(e,r){if(this[f8])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof Tk.ServerResponse&&this[Hy].add(e),super.pipe(e,r)}unpipe(e){return e instanceof Tk.ServerResponse&&this[Hy].delete(e),super.unpipe(e),this}};Rt.default=Uk});var Sp=I(Ms=>{"use strict";var PSe=Ms&&Ms.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),DSe=Ms&&Ms.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&PSe(e,t,r)};Object.defineProperty(Ms,"__esModule",{value:!0});Ms.CancelError=Ms.ParseError=void 0;var d8=vp(),C8=class extends d8.RequestError{constructor(e,r){let{options:i}=r.request;super(`${e.message} in "${i.url.toString()}"`,e,r.request);this.name="ParseError"}};Ms.ParseError=C8;var m8=class extends d8.RequestError{constructor(e){super("Promise was canceled",{},e);this.name="CancelError"}get isCanceled(){return!0}};Ms.CancelError=m8;DSe(vp(),Ms)});var E8=I(Wk=>{"use strict";Object.defineProperty(Wk,"__esModule",{value:!0});var I8=Sp(),RSe=(t,e,r,i)=>{let{rawBody:n}=t;try{if(e==="text")return n.toString(i);if(e==="json")return n.length===0?"":r(n.toString());if(e==="buffer")return n;throw new I8.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(s){throw new I8.ParseError(s,t)}};Wk.default=RSe});var zk=I(IA=>{"use strict";var FSe=IA&&IA.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),NSe=IA&&IA.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&FSe(e,t,r)};Object.defineProperty(IA,"__esModule",{value:!0});var LSe=require("events"),TSe=Ca(),MSe=g3(),Yy=Sp(),y8=E8(),w8=vp(),OSe=bk(),KSe=Rk(),B8=Fk(),USe=["request","response","redirect","uploadProgress","downloadProgress"];function Q8(t){let e,r,i=new LSe.EventEmitter,n=new MSe((o,a,l)=>{let c=u=>{let g=new w8.default(void 0,t);g.retryCount=u,g._noPipe=!0,l(()=>g.destroy()),l.shouldReject=!1,l(()=>a(new Yy.CancelError(g))),e=g,g.once("response",async p=>{var d;if(p.retryCount=u,p.request.aborted)return;let m;try{m=await KSe.default(g),p.rawBody=m}catch(R){return}if(g._isAboutToError)return;let E=((d=p.headers["content-encoding"])!==null&&d!==void 0?d:"").toLowerCase(),B=["gzip","deflate","br"].includes(E),{options:b}=g;if(B&&!b.decompress)p.body=m;else try{p.body=y8.default(p,b.responseType,b.parseJson,b.encoding)}catch(R){if(p.body=m.toString(),B8.isResponseOk(p)){g._beforeError(R);return}}try{for(let[R,H]of b.hooks.afterResponse.entries())p=await H(p,async L=>{let K=w8.default.normalizeArguments(void 0,_(P({},L),{retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1}),b);K.hooks.afterResponse=K.hooks.afterResponse.slice(0,R);for(let ne of K.hooks.beforeRetry)await ne(K);let J=Q8(K);return l(()=>{J.catch(()=>{}),J.cancel()}),J})}catch(R){g._beforeError(new Yy.RequestError(R.message,R,g));return}if(!B8.isResponseOk(p)){g._beforeError(new Yy.HTTPError(p));return}r=p,o(g.options.resolveBodyOnly?p.body:p)});let f=p=>{if(n.isCanceled)return;let{options:d}=g;if(p instanceof Yy.HTTPError&&!d.throwHttpErrors){let{response:m}=p;o(g.options.resolveBodyOnly?m.body:m);return}a(p)};g.once("error",f);let h=g.options.body;g.once("retry",(p,d)=>{var m,E;if(h===((m=d.request)===null||m===void 0?void 0:m.options.body)&&TSe.default.nodeStream((E=d.request)===null||E===void 0?void 0:E.options.body)){f(d);return}c(p)}),OSe.default(g,i,USe)};c(0)});n.on=(o,a)=>(i.on(o,a),n);let s=o=>{let a=(async()=>{await n;let{options:l}=r.request;return y8.default(r,o,l.parseJson,l.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(n)),a};return n.json=()=>{let{headers:o}=e.options;return!e.writableFinished&&o.accept===void 0&&(o.accept="application/json"),s("json")},n.buffer=()=>s("buffer"),n.text=()=>s("text"),n}IA.default=Q8;NSe(Sp(),IA)});var b8=I(Vk=>{"use strict";Object.defineProperty(Vk,"__esModule",{value:!0});var HSe=Sp();function GSe(t,...e){let r=(async()=>{if(t instanceof HSe.RequestError)try{for(let n of e)if(n)for(let s of n)t=await s(t)}catch(n){t=n}throw t})(),i=()=>r;return r.json=i,r.text=i,r.buffer=i,r.on=i,r}Vk.default=GSe});var x8=I(_k=>{"use strict";Object.defineProperty(_k,"__esModule",{value:!0});var v8=Ca();function S8(t){for(let e of Object.values(t))(v8.default.plainObject(e)||v8.default.array(e))&&S8(e);return Object.freeze(t)}_k.default=S8});var P8=I(k8=>{"use strict";Object.defineProperty(k8,"__esModule",{value:!0})});var Xk=I(ss=>{"use strict";var jSe=ss&&ss.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),YSe=ss&&ss.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&jSe(e,t,r)};Object.defineProperty(ss,"__esModule",{value:!0});ss.defaultHandler=void 0;var D8=Ca(),os=zk(),qSe=b8(),qy=vp(),JSe=x8(),WSe={RequestError:os.RequestError,CacheError:os.CacheError,ReadError:os.ReadError,HTTPError:os.HTTPError,MaxRedirectsError:os.MaxRedirectsError,TimeoutError:os.TimeoutError,ParseError:os.ParseError,CancelError:os.CancelError,UnsupportedProtocolError:os.UnsupportedProtocolError,UploadError:os.UploadError},zSe=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:Jy}=qy.default,R8=(...t)=>{let e;for(let r of t)e=Jy(void 0,r,e);return e},VSe=t=>t.isStream?new qy.default(void 0,t):os.default(t),_Se=t=>"defaults"in t&&"options"in t.defaults,XSe=["get","post","put","patch","head","delete"];ss.defaultHandler=(t,e)=>e(t);var F8=(t,e)=>{if(t)for(let r of t)r(e)},N8=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(i=>(n,s)=>{let o,a=i(n,l=>(o=s(l),o));if(a!==o&&!n.isStream&&o){let l=a,{then:c,catch:u,finally:g}=l;Object.setPrototypeOf(l,Object.getPrototypeOf(o)),Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)),l.then=c,l.catch=u,l.finally=g}return a});let e=(i,n={},s)=>{var o,a;let l=0,c=u=>t.handlers[l++](u,l===t.handlers.length?VSe:c);if(D8.default.plainObject(i)){let u=P(P({},i),n);qy.setNonEnumerableProperties([i,n],u),n=u,i=void 0}try{let u;try{F8(t.options.hooks.init,n),F8((o=n.hooks)===null||o===void 0?void 0:o.init,n)}catch(f){u=f}let g=Jy(i,n,s!=null?s:t.options);if(g[qy.kIsNormalizedAlready]=!0,u)throw new os.RequestError(u.message,u,g);return c(g)}catch(u){if(n.isStream)throw u;return qSe.default(u,t.options.hooks.beforeError,(a=n.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...i)=>{let n=[t.options],s=[...t._rawHandlers],o;for(let a of i)_Se(a)?(n.push(a.defaults.options),s.push(...a.defaults._rawHandlers),o=a.defaults.mutableDefaults):(n.push(a),"handlers"in a&&s.push(...a.handlers),o=a.mutableDefaults);return s=s.filter(a=>a!==ss.defaultHandler),s.length===0&&s.push(ss.defaultHandler),N8({options:R8(...n),handlers:s,mutableDefaults:Boolean(o)})};let r=async function*(i,n){let s=Jy(i,n,t.options);s.resolveBodyOnly=!1;let o=s.pagination;if(!D8.default.object(o))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:l}=o,c=0;for(;c{let s=[];for await(let o of r(i,n))s.push(o);return s},e.paginate.each=r,e.stream=(i,n)=>e(i,_(P({},n),{isStream:!0}));for(let i of XSe)e[i]=(n,s)=>e(n,_(P({},s),{method:i})),e.stream[i]=(n,s)=>e(n,_(P({},s),{method:i,isStream:!0}));return Object.assign(e,WSe),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:JSe.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=R8,e};ss.default=N8;YSe(P8(),ss)});var zy=I((Ia,Wy)=>{"use strict";var ZSe=Ia&&Ia.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),L8=Ia&&Ia.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&ZSe(e,t,r)};Object.defineProperty(Ia,"__esModule",{value:!0});var $Se=require("url"),T8=Xk(),exe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let i of e){let n=i.split(";");if(n[1].includes("next")){r=n[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new $Se.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:Infinity,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[T8.defaultHandler],mutableDefaults:!1},Zk=T8.default(exe);Ia.default=Zk;Wy.exports=Zk;Wy.exports.default=Zk;Wy.exports.__esModule=!0;L8(Xk(),Ia);L8(zk(),Ia)});var U8=I(Xu=>{"use strict";var fst=require("net"),txe=require("tls"),$k=require("http"),M8=require("https"),rxe=require("events"),hst=require("assert"),ixe=require("util");Xu.httpOverHttp=nxe;Xu.httpsOverHttp=sxe;Xu.httpOverHttps=oxe;Xu.httpsOverHttps=axe;function nxe(t){var e=new Ea(t);return e.request=$k.request,e}function sxe(t){var e=new Ea(t);return e.request=$k.request,e.createSocket=O8,e.defaultPort=443,e}function oxe(t){var e=new Ea(t);return e.request=M8.request,e}function axe(t){var e=new Ea(t);return e.request=M8.request,e.createSocket=O8,e.defaultPort=443,e}function Ea(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||$k.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(i,n,s,o){for(var a=K8(n,s,o),l=0,c=e.requests.length;l=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",l),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function l(){s.emit("free",a,o)}function c(u){s.removeSocket(a),a.removeListener("free",l),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Ea.prototype.createSocket=function(e,r){var i=this,n={};i.sockets.push(n);var s=eP({},i.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),EA("making CONNECT request");var o=i.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",l),o.once("connect",c),o.once("error",u),o.end();function a(g){g.upgrade=!0}function l(g,f,h){process.nextTick(function(){c(g,f,h)})}function c(g,f,h){if(o.removeAllListeners(),f.removeAllListeners(),g.statusCode!==200){EA("tunneling socket could not be established, statusCode=%d",g.statusCode),f.destroy();var p=new Error("tunneling socket could not be established, statusCode="+g.statusCode);p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}if(h.length>0){EA("got illegal response body from proxy"),f.destroy();var p=new Error("got illegal response body from proxy");p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}return EA("tunneling connection has established"),i.sockets[i.sockets.indexOf(n)]=f,r(f)}function u(g){o.removeAllListeners(),EA(`tunneling socket could not be established, cause=%s +`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};Ea.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function O8(t,e){var r=this;Ea.prototype.createSocket.call(r,t,function(i){var n=t.request.getHeader("host"),s=eP({},r.options,{socket:i,servername:n?n.replace(/:.*$/,""):t.host}),o=txe.connect(0,s);r.sockets[r.sockets.indexOf(i)]=o,e(o)})}function K8(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function eP(t){for(var e=1,r=arguments.length;e{H8.exports=U8()});var bz=I((xot,sP)=>{var ez=Object.assign({},require("fs")),oe=typeof oe!="undefined"?oe:{},kp={},wA;for(wA in oe)oe.hasOwnProperty(wA)&&(kp[wA]=oe[wA]);var oP=[],tz="./this.program",rz=function(t,e){throw e},iz=!1,Wl=!0,Pp="";function dxe(t){return oe.locateFile?oe.locateFile(t,Pp):Pp+t}var Xy,aP,Zy,AP;Wl&&(iz?Pp=require("path").dirname(Pp)+"/":Pp=__dirname+"/",Xy=function(e,r){var i=sz(e);return i?r?i:i.toString():(Zy||(Zy=ez),AP||(AP=require("path")),e=AP.normalize(e),Zy.readFileSync(e,r?null:"utf8"))},aP=function(e){var r=Xy(e,!0);return r.buffer||(r=new Uint8Array(r)),nz(r.buffer),r},process.argv.length>1&&(tz=process.argv[1].replace(/\\/g,"/")),oP=process.argv.slice(2),typeof sP!="undefined"&&(sP.exports=oe),rz=function(t){process.exit(t)},oe.inspect=function(){return"[Emscripten Module object]"});var $y=oe.print||console.log.bind(console),Di=oe.printErr||console.warn.bind(console);for(wA in kp)kp.hasOwnProperty(wA)&&(oe[wA]=kp[wA]);kp=null;oe.arguments&&(oP=oe.arguments);oe.thisProgram&&(tz=oe.thisProgram);oe.quit&&(rz=oe.quit);var Cxe=16;function mxe(t,e){return e||(e=Cxe),Math.ceil(t/e)*e}var Ixe=0,Exe=function(t){Ixe=t},lP;oe.wasmBinary&&(lP=oe.wasmBinary);var Pst=oe.noExitRuntime||!0;typeof WebAssembly!="object"&&Gr("no native wasm support detected");function yxe(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return Zi[t>>0];case"i8":return Zi[t>>0];case"i16":return cP[t>>1];case"i32":return _e[t>>2];case"i64":return _e[t>>2];case"float":return oz[t>>2];case"double":return az[t>>3];default:Gr("invalid type for getValue: "+e)}return null}var ew,Az=!1,wxe;function nz(t,e){t||Gr("Assertion failed: "+e)}function lz(t){var e=oe["_"+t];return nz(e,"Cannot call unknown function "+t+", make sure it is exported"),e}function vxe(t,e,r,i,n){var s={string:function(h){var p=0;if(h!=null&&h!==0){var d=(h.length<<2)+1;p=gz(d),uz(h,p,d)}return p},array:function(h){var p=gz(h.length);return Bxe(h,p),p}};function o(h){return e==="string"?cz(h):e==="boolean"?Boolean(h):h}var a=lz(t),l=[],c=0;if(i)for(var u=0;u=i);)++n;if(n-e>16&&t.subarray&&fz)return fz.decode(t.subarray(e,n));for(var s="";e>10,56320|c&1023)}}return s}function cz(t,e){return t?Zu($u,t,e):""}function tw(t,e,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343){var l=t.charCodeAt(++o);a=65536+((a&1023)<<10)|l&1023}if(a<=127){if(r>=s)break;e[r++]=a}else if(a<=2047){if(r+1>=s)break;e[r++]=192|a>>6,e[r++]=128|a&63}else if(a<=65535){if(r+2>=s)break;e[r++]=224|a>>12,e[r++]=128|a>>6&63,e[r++]=128|a&63}else{if(r+3>=s)break;e[r++]=240|a>>18,e[r++]=128|a>>12&63,e[r++]=128|a>>6&63,e[r++]=128|a&63}}return e[r]=0,r-n}function uz(t,e,r){return tw(t,$u,e,r)}function rw(t){for(var e=0,r=0;r=55296&&i<=57343&&(i=65536+((i&1023)<<10)|t.charCodeAt(++r)&1023),i<=127?++e:i<=2047?e+=2:i<=65535?e+=3:e+=4}return e}function uP(t){var e=rw(t)+1,r=hz(e);return r&&tw(t,Zi,r,e),r}function Bxe(t,e){Zi.set(t,e)}function xxe(t,e){return t%e>0&&(t+=e-t%e),t}var gP,Zi,$u,cP,kxe,_e,Pxe,oz,az;function pz(t){gP=t,oe.HEAP8=Zi=new Int8Array(t),oe.HEAP16=cP=new Int16Array(t),oe.HEAP32=_e=new Int32Array(t),oe.HEAPU8=$u=new Uint8Array(t),oe.HEAPU16=kxe=new Uint16Array(t),oe.HEAPU32=Pxe=new Uint32Array(t),oe.HEAPF32=oz=new Float32Array(t),oe.HEAPF64=az=new Float64Array(t)}var Dst=oe.INITIAL_MEMORY||16777216,fP,dz=[],Cz=[],mz=[],Dxe=!1;function Fxe(){if(oe.preRun)for(typeof oe.preRun=="function"&&(oe.preRun=[oe.preRun]);oe.preRun.length;)Rxe(oe.preRun.shift());hP(dz)}function Nxe(){Dxe=!0,!oe.noFSInit&&!y.init.initialized&&y.init(),BA.init(),hP(Cz)}function Txe(){if(oe.postRun)for(typeof oe.postRun=="function"&&(oe.postRun=[oe.postRun]);oe.postRun.length;)Lxe(oe.postRun.shift());hP(mz)}function Rxe(t){dz.unshift(t)}function Mxe(t){Cz.unshift(t)}function Lxe(t){mz.unshift(t)}var zl=0,pP=null,Dp=null;function Oxe(t){return t}function Iz(t){zl++,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl)}function dP(t){if(zl--,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl),zl==0&&(pP!==null&&(clearInterval(pP),pP=null),Dp)){var e=Dp;Dp=null,e()}}oe.preloadedImages={};oe.preloadedAudios={};function Gr(t){oe.onAbort&&oe.onAbort(t),t+="",Di(t),Az=!0,wxe=1,t="abort("+t+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(t);throw e}var Ez="data:application/octet-stream;base64,";function yz(t){return t.startsWith(Ez)}var Rp="data:application/octet-stream;base64,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AkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALIANB/wFxRQRAIAIgAGsPCwNAIAItAAEhAyACQQFqIgEhAiADDQALCyABIABrC2EBAX8jAEEQayICIAA2AgggAiABNwMAAkAgAikDACACKAIIKQMIVgRAIAIoAghBADoAACACQX82AgwMAQsgAigCCEEBOgAAIAIoAgggAikDADcDECACQQA2AgwLIAIoAgwL7wEBAX8jAEEgayICJAAgAiAANgIYIAIgATcDECACIAIoAhhCCBAeNgIMAkAgAigCDEUEQCACQX82AhwMAQsgAigCDCACKQMQQv8BgzwAACACKAIMIAIpAxBCCIhC/wGDPAABIAIoAgwgAikDEEIQiEL/AYM8AAIgAigCDCACKQMQQhiIQv8BgzwAAyACKAIMIAIpAxBCIIhC/wGDPAAEIAIoAgwgAikDEEIoiEL/AYM8AAUgAigCDCACKQMQQjCIQv8BgzwABiACKAIMIAIpAxBCOIhC/wGDPAAHIAJBADYCHAsgAigCHBogAkEgaiQAC4cDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEUNACADKQMYQv///////////wBWDQAgAykDGFANASADKAIgDQELIAMoAiRBDGpBEkEAEBQgA0J/NwMoDAELIAMoAiQtADVBAXEEQCADQn83AygMAQsCfyMAQRBrIgAgAygCJDYCDCAAKAIMLQA0QQFxCwRAIANCADcDKAwBCyADKQMYUARAIANCADcDKAwBCyADQgA3AxADQCADKQMQIAMpAxhUBEAgAyADKAIkIAMoAiAgAykDEKdqIAMpAxggAykDEH1BARAhIgI3AwggAkIAUwRAIAMoAiRBAToANSADKQMQUARAIANCfzcDKAwECyADIAMpAxA3AygMAwsgAykDCFAEQCADKAIkQQE6ADQFIAMgAykDCCADKQMQfDcDEAwCCwsLIAMgAykDEDcDKAsgAykDKCECIANBMGokACACCzYBAX8jAEEQayIBIAA2AgwCfiABKAIMLQAAQQFxBEAgASgCDCkDCCABKAIMKQMQfQwBC0IACwuyAQIBfwF+IwBBEGsiASQAIAEgADYCBCABIAEoAgRC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AkEBNgIQIAJBADYCCANAAkAgAigCCCACKAIYLwEETw0AAkAgAigCDCACKAIIai0AAEEfSwRAIAIoAgwgAigCCGotAABBgAFJDQELIAIoAgwgAigCCGotAABBDUYNACACKAIMIAIoAghqLQAAQQpGDQAgAigCDCACKAIIai0AAEEJRgRADAELIAJBAzYCEAJAIAIoAgwgAigCCGotAABB4AFxQcABRgRAIAJBATYCAAwBCwJAIAIoAgwgAigCCGotAABB8AFxQeABRgRAIAJBAjYCAAwBCwJAIAIoAgwgAigCCGotAABB+AFxQfABRgRAIAJBAzYCAAwBCyACQQQ2AhAMBAsLCyACKAIYLwEEIAIoAgggAigCAGpNBEAgAkEENgIQDAILIAJBATYCBANAIAIoAgQgAigCAE0EQCACKAIMIAIoAgggAigCBGpqLQAAQcABcUGAAUcEQCACQQQ2AhAMBgUgAiACKAIEQQFqNgIEDAILAAsLIAIgAigCACACKAIIajYCCAsgAiACKAIIQQFqNgIIDAELCwsgAigCGCACKAIQNgIIIAIoAhQEQAJAIAIoAhRBAkcNACACKAIQQQNHDQAgAkECNgIQIAIoAhhBAjYCCAsCQCACKAIUIAIoAhBGDQAgAigCEEEBRg0AIAJBBTYCHAwCCwsgAiACKAIQNgIcCyACKAIcC2oBAX8jAEEQayIBIAA2AgwgASgCDEIANwMAIAEoAgxBADYCCCABKAIMQn83AxAgASgCDEEANgIsIAEoAgxBfzYCKCABKAIMQgA3AxggASgCDEIANwMgIAEoAgxBADsBMCABKAIMQQA7ATILUgECf0GQlwEoAgAiASAAQQNqQXxxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABATRQ0BC0GQlwEgADYCACABDwtBtJsBQTA2AgBBfwuNBQEDfyMAQRBrIgEkACABIAA2AgwgASgCDARAIAEoAgwoAgAEQCABKAIMKAIAEDEaIAEoAgwoAgAQGwsgASgCDCgCHBAVIAEoAgwoAiAQJSABKAIMKAIkECUgASgCDCgCUCECIwBBEGsiACQAIAAgAjYCDCAAKAIMBEAgACgCDCgCEARAIABBADYCCANAIAAoAgggACgCDCgCAEkEQCAAKAIMKAIQIAAoAghBAnRqKAIABEAgACgCDCgC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A3EQHwsgAygCpAEoAhQgA0GeAWogA0GcAWoQgQEgAygCTCADLwGeARAfIAMoAkwgAy8BnAEQHwJAAkAgAy0AhQFBAXFFDQAgAygCpAEpAyhCFFoNACADKAJMQQAQIAwBCyADKAJMIAMoAqQBKAIYECALAkACQCADKAKgAUGAAnFBgAJHDQAgAygCpAEpAyBC/////w9UBEAgAygCpAEpAyhC/////w9UDQELIAMoAkxBfxAgIAMoAkxBfxAgDAELAkAgAygCpAEpAyBC/////w9UBEAgAygCTCADKAKkASkDIKcQIAwBCyADKAJMQX8QIAsCQCADKAKkASkDKEL/////D1QEQCADKAJMIAMoAqQBKQMopxAgDAELIAMoAkxBfxAgCwsgAygCTCADKAKkASgCMBBTQf//A3EQHyADIAMoAqQBKAI0IAMoAqABEIYBQf//A3EgAygCkAFBgAYQhgFB//8DcWo2AogBIAMoAkwgAygCiAFB//8DcRAfIAMoAqABQYACcUUEQCADKAJMIAMoAqQBKAI4EFNB//8DcRAfIAMoAkwgAygCpAEoAjxB//8DcRAfIAMoAkwgAygCpAEvAUAQHyADKAJMIAMoAqQBKAJEECACQCADKAKkASkDSEL/////D1QEQCADKAJMIAMoAqQBKQNIpxAgDAELIAMoAkxBfxAgCwsCfyMAQRBrIgAgAygCTDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAJMEBYgAygCkAEQIyADQX82AqwBDAELIAMoAqgBIANB0ABqAn4jAEEQayIAIAMoAkw2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IACwsQNUEASARAIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCTBAWIAMoAqQBKAIwBEAgAygCqAEgAygCpAEoAjAQigFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABBEAgAygCqAEgAygCkAFBgAYQhQFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABECMgAygCpAEoAjQEQCADKAKoASADKAKkASgCNCADKAKgARCFAUEASARAIANBfzYCrAEMAgsLIAMoAqABQYACcUUEQCADKAKkASgCOARAIAMoAqgBIAMoAqQBKAI4EIoB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HCAAIAAoAhRBAWo2AhQMAQsLIAAoAggQR0EBcUUEQCAAKAIgQRRBABAUIAAoAggQFiAAQX82AiwMAQsgACgCCBAWIAAgACgCHDYCLAsgACgCLCECIABBMGokACADIAIiADYCBCAAQQBIBEAgA0IANwMoDAELIAMpAwggAygCBK18Qv///////////wBWBEAgAygCFEEEQRYQFCADQgA3AygMAQsgAyADKQMIIAMoAgStfDcDKAsgAykDKCEBIANBMGokACABC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQoAhAgBCgCDCAEKAIYQQhqEJIBNgIcCyAEKAIcIQAgBEEgaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwCQAJAIAEoAgwoAiRBAUYNACABKAIMKAIkQQJGDQAMAQsgASgCDEEAQgBBChAhGiABKAIMQQA2AiQLIAFBEGokAAumAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCCC0AKEEBcQRAIAJBfzYCDAwBCyACKAIIKAIABEAgAigCCCgCACACKAIEEGhBAEgEQCACKAIIQQxqIAIoAggoAgAQFyACQX82AgwMAgsLIAIoAgggAkEEakIEQRMQIUIAUwRAIAJBfzYCDAwBCyACQQA2AgwLIAIoAgwhACACQRBqJAAgAAuNCAIBfwF+IwBBkAFrIgMkACADIAA2AoQBIAMgATYCgAEgAyACNgJ8IAMQTwJAIAMoAoABKQMIQgBSBEAgAyADKAKAASgCACgCACkDSDcDYCADIAMoAoABKAIAKAIAKQNINwNoDAELIANCADcDYCADQgA3A2gLIANCADcDcAJAA0AgAykDcCADKAKAASkDCFQEQCADKAKAASgCACADKQNwp0EEdGooAgApA0ggAykDaFQEQCADIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSDcDaAsgAykDaCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAyADKAKAASgCACADKQNwp0EEdGooAgApA0ggAygCgAEoAgAgAykDcKdBBHRqKAIAKQMgfCADKAKAASgCACADKQNwp0EEdGooAgAoAjAQU0H//wNxrXxC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DEECdGooAgBBAnRqLwEASA0AAkAgAygCGCADKAIQQQJ0ai8BACADKAIYIAMoAhxB3BZqIAMoAgxBAnRqKAIAQQJ0ai8BAEcNACADKAIQIAMoAhxB2Chqai0AACADKAIcQdwWaiADKAIMQQJ0aigCACADKAIcQdgoamotAABKDQAMAQsgAygCHEHcFmogAygCFEECdGogAygCHEHcFmogAygCDEECdGooAgA2AgAgAyADKAIMNgIUIAMgAygCDEEBdDYCDAwBCwsgAygCHEHcFmogAygCFEECdGogAygCEDYCAAvXEwEDfyMAQTBrIgIkACACIAA2AiwgAiABNgIoIAIgAigCKCgCADYCJCACIAIoAigoAggoAgA2AiAgAiACKAIoKAIIKAIMNgIcIAJBfzYCECACKAIsQQA2AtAoIAIoAixBvQQ2AtQoIAJBADYCGANAIAIoAhggAigCHEgEQAJAIAIoAiQgAigCGEECdGovAQAEQCACIAIoAhgiATYCECACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohACAEIAA2AtAoIABBAnQgA2ogATYCACACKAIYIAIoAixB2ChqakEAOgAADAELIAIoAiQgAigCGEECdGpBADsBAgsgAiACKAIYQQFqNgIYDAELCwNAIAIoAiwoAtAoQQJIBEACQCACKAIQQQJIBEAgAiACKAIQQQFqIgA2AhAMAQtBACEACyACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohASAEIAE2AtAoIAFBAnQgA2ogADYCACACIAA2AgwgAigCJCACKAIMQQJ0akEBOwEAIAIoAgwgAigCLEHYKGpqQQA6AAAgAigCLCIAIAAoAqgtQQFrNgKoLSACKAIgBEAgAigCLCIAIAAoAqwtIAIoAiAgAigCDEECdGovAQJrNgKsLQsMAQsLIAIoAiggAigCEDYCBCACIAIoAiwoAtAoQQJtNgIYA0AgAigCGEEBTgRAIAIoAiwgAigCJCACKAIYEHogAiACKAIYQQFrNgIYDAELCyACIAIoAhw2AgwDQCACIAIoAiwoAuAWNgIYIAIoAixB3BZqIQEgAigCLCIDKALQKCEAIAMgAEEBazYC0CggAigCLCAAQQJ0IAFqKAIANgLgFiACKAIsIAIoAiRBARB6IAIgAigCLCgC4BY2AhQgAigCGCEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAhQhASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIkIAIoAgxBAnRqIAIoAiQgAigCGEECdGovAQAgAigCJCACKAIUQQJ0ai8BAGo7AQAgAigCDCACKAIsQdgoamoCfyACKAIYIAIoAixB2Chqai0AACACKAIUIAIoAixB2Chqai0AAE4EQCACKAIYIAIoAixB2Chqai0AAAwBCyACKAIUIAIoAixB2Chqai0AAAtBAWo6AAAgAigCJCACKAIUQQJ0aiACKAIMIgA7AQIgAigCJCACKAIYQQJ0aiAAOwECIAIgAigCDCIAQQFqNgIMIAIoAiwgADYC4BYgAigCLCACKAIkQQEQeiACKAIsKALQKEECTg0ACyACKAIsKALgFiEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAighASMAQUBqIgAgAigCLDYCPCAAIAE2AjggACAAKAI4KAIANgI0IAAgACgCOCgCBDYCMCAAIAAoAjgoAggoAgA2AiwgACAAKAI4KAIIKAIENgIoIAAgACgCOCgCCCgCCDYCJCAAIAAoAjgoAggoAhA2AiAgAEEANgIEIABBADYCEANAIAAoAhBBD0wEQCAAKAI8QbwWaiAAKAIQQQF0akEAOwEAIAAgACgCEEEBajYCEAwBCwsgACgCNCAAKAI8QdwWaiAAKAI8KALUKEECdGooAgBBAnRqQQA7AQIgACAAKAI8KALUKEEBajYCHANAIAAoAhxBvQRIBEAgACAAKAI8QdwWaiAAKAIcQQJ0aigCADYCGCAAIAAoAjQgACgCNCAAKAIYQQJ0ai8BAkECdGovAQJBAWo2AhAgACgCECAAKAIgSgRAIAAgACgCIDYCECAAIAAoAgRBAWo2AgQLIAAoAjQgACgCGEECdGogACgCEDsBAiAAKAIYIAAoAjBMBEAgACgCPCAAKAIQQQF0akG8FmoiASABLwEAQQFqOwEAIABBADYCDCAAKAIYIAAoAiROBEAgACAAKAIoIAAoAhggACgCJGtBAnRqKAIANgIMCyAAIAAoAjQgACgCGEECdGovAQA7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EANAIAMpAxAgAykDCFpFBEAgAygCKCgCACADKQMQp0EEdGoQkAEgAyADKQMQQgF8NwMQDAELCyADKAIoIAMpAwgiATcDECADKAIoIAE3AwggA0EBOgAvCyADLQAvQQFxIQAgA0EwaiQAIAALzAEBAX8jAEEgayICJAAgAiAANwMQIAIgATYCDCACQTAQGCIBNgIIAkAgAUUEQCACKAIMQQ5BABAUIAJBADYCHAwBCyACKAIIQQA2AgAgAigCCEIANwMQIAIoAghCADcDCCACKAIIQgA3AyAgAigCCEIANwMYIAIoAghBADYCKCACKAIIQQA6ACwgAigCCCACKQMQIAIoAgwQgwFBAXFFBEAgAigCCBAkIAJBADYCHAwBCyACIAIoAgg2AhwLIAIoAhwhASACQSBqJAAgAQvWAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCECADIANBDGpCBBApNgIIAkAgAygCCEUEQCADQX82AhwMAQsDQCADKAIUBEAgAygCFCgCBCADKAIQcUGABnEEQCADKAIIQgAQLBogAygCCCADKAIULwEIEB8gAygCCCADKAIULwEKEB8CfyMAQRBrIgAgAygCCDYCDCAAKAIMLQAAQQFxRQsEQCADKAIYQQhqQRRBABAUIAMoAggQFiADQX82AhwMBAsgAygCGCADQQxqQgQQNUEASARAIAMoAggQFiADQX82AhwMBAsgAygCFC8BCgRAIAMoAhggAygCFCgCDCADKAIULwEKrRA1QQBIBEAgAygCCBAWIANBfzYCHAwFCwsLIAMgAygCFCgCADYCFAwBCwsgAygCCBAWIANBADYCHAsgAygCHCEAIANBIGokACAAC2gBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADsBBgNAIAIoAgwEQCACKAIMKAIEIAIoAghxQYAGcQRAIAIgAigCDC8BCiACLwEGQQRqajsBBgsgAiACKAIMKAIANgIMDAELCyACLwEGC/ABAQF/IwBBEGsiASQAIAEgADYCDCABIAEoAgw2AgggAUEANgIEA0AgASgCDARAAkACQCABKAIMLwEIQfXGAUYNACABKAIMLwEIQfXgAUYNACABKAIMLwEIQYGyAkYNACABKAIMLwEIQQFHDQELIAEgASgCDCgCADYCACABKAIIIAEoAgxGBEAgASABKAIANgIICyABKAIMQQA2AgAgASgCDBAjIAEoAgQEQCABKAIEIAEoAgA2AgALIAEgASgCADYCDAwCCyABIAEoAgw2AgQgASABKAIMKAIANgIMDAELCyABKAIIIQAgAUEQaiQAIAALswQBAX8jAEFAaiIFJAAgBSAANgI4IAUgATsBNiAFIAI2AjAgBSADNgIsIAUgBDYCKCAFIAUoAjggBS8BNq0QKSIANgIkAkAgAEUEQCAFKAIoQQ5BABAUIAVBADoAPwwBCyAFQQA2AiAgBUEANgIYA0ACfyMAQRBrIgAgBSgCJDYCDCAAKAIMLQAAQQFxCwR/IAUoAiQQL0IEWgVBAAtBAXEEQCAFIAUoAiQQHTsBFiAFIAUoAiQQHTsBFCAFIAUoAiQgBS8BFK0QHjYCECAFKAIQRQRAIAUoAihBFUEAEBQgBSgCJBAWIAUoAhgQIyAFQQA6AD8MAwsgBSAFLwEWIAUvARQgBSgCECAFKAIwEFEiADYCHCAARQRAIAUoAihBDkEAEBQgBSgCJBAWIAUoAhgQIyAFQQA6AD8MAwsCQCAFKAIYBEAgBSgCICAFKAIcNgIAIAUgBSgCHDYCIAwBCyAFIAUoAhwiADYCICAFIAA2AhgLDAELCyAFKAIkEEdBAXFFBEAgBSAFKAIkEC8+AgwgBSAFKAIkIAUoAgytEB42AggCQAJAIAUoAgxBBE8NACAFKAIIRQ0AIAUoAghBktkAIAUoAgwQVEUNAQsgBSgCKEEVQQAQFCAFKAIkEBYgBSgCGBAjIAVBADoAPwwCCwsgBSgCJBAWAkAgBSgCLARAIAUoAiwgBSgCGDYCAAwBCyAFKAIYECMLIAVBAToAPwsgBS0AP0EBcSEAIAVBQGskACAAC+8CAQF/IwBBIGsiAiQAIAIgADYCGCACIAE2AhQCQCACKAIYRQRAIAIgAigCFDYCHAwBCyACIAIoAhg2AggDQCACKAIIKAIABEAgAiACKAIIKAIANgIIDAELCwNAIAIoAhQEQCACIAIoAhQoAgA2AhAgAkEANgIEIAIgAigCGDYCDANAAkAgAigCDEUNAAJAIAIoAgwvAQggAigCFC8BCEcNACACKAIMLwEKIAIoAhQvAQpHDQAgAigCDC8BCgRAIAIoAgwoAgwgAigCFCgCDCACKAIMLwEKEFQNAQsgAigCDCIAIAAoAgQgAigCFCgCBEGABnFyNgIEIAJBATYCBAwBCyACIAIoAgwoAgA2AgwMAQsLIAIoAhRBADYCAAJAIAIoAgQEQCACKAIUECMMAQsgAigCCCACKAIUIgA2AgAgAiAANgIICyACIAIoAhA2AhQMAQsLIAIgAigCGDYCHAsgAigCHCEAIAJBIGokACAAC10BAX8jAEEQayICJAAgAiAANgIIIAIgATYCBAJAIAIoAgRFBEAgAkEANgIMDAELIAIgAigCCCACKAIEKAIAIAIoAgQvAQStEDU2AgwLIAIoAgwhACACQRBqJAAgAAuPAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkACQCACKAIIBEAgAigCBA0BCyACIAIoAgggAigCBEY2AgwMAQsgAigCCC8BBCACKAIELwEERwRAIAJBADYCDAwBCyACIAIoAggoAgAgAigCBCgCACACKAIILwEEEFRFNgIMCyACKAIMIQAgAkEQaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwgAUEAQQBBABAaNgIIIAEoAgwEQCABIAEoAgggASgCDCgCACABKAIMLwEEEBo2AggLIAEoAgghACABQRBqJAAgAAugAQEBfyMAQSBrIgUkACAFIAA2AhggBSABNgIUIAUgAjsBEiAFIAM6ABEgBSAENgIMIAUgBSgCGCAFKAIUIAUvARIgBS0AEUEBcSAFKAIMEGAiADYCCAJAIABFBEAgBUEANgIcDAELIAUgBSgCCCAFLwESQQAgBSgCDBBSNgIEIAUoAggQFSAFIAUoAgQ2AhwLIAUoAhwhACAFQSBqJAAgAAtfAQF/IwBBEGsiAiQAIAIgADYCCCACIAE6AAcgAiACKAIIQgEQHjYCAAJAIAIoAgBFBEAgAkF/NgIMDAELIAIoAgAgAi0ABzoAACACQQA2AgwLIAIoAgwaIAJBEGokAAtUAQF/IwBBEGsiASQAIAEgADYCCCABIAEoAghCARAeNgIEAkAgASgCBEUEQCABQQA6AA8MAQsgASABKAIELQAAOgAPCyABLQAPIQAgAUEQaiQAIAALOAEBfyMAQRBrIgEgADYCDCABKAIMQQA2AgAgASgCDEEANgIEIAEoAgxBADYCCCABKAIMQQA6AAwLnwIBAX8jAEFAaiIFJAAgBSAANwMwIAUgATcDKCAFIAI2AiQgBSADNwMYIAUgBDYCFCAFAn8gBSkDGEIQVARAIAUoAhRBEkEAEBRBAAwBCyAFKAIkCzYCBAJAIAUoAgRFBEAgBUJ/NwM4DAELAkACQAJAAkACQCAFKAIEKAIIDgMCAAEDCyAFIAUpAzAgBSgCBCkDAHw3AwgMAwsgBSAFKQMoIAUoAgQpAwB8NwMIDAILIAUgBSgCBCkDADcDCAwBCyAFKAIUQRJBABAUIAVCfzcDOAwBCwJAIAUpAwhCAFkEQCAFKQMIIAUpAyhYDQELIAUoAhRBEkEAEBQgBUJ/NwM4DAELIAUgBSkDCDcDOAsgBSkDOCEAIAVBQGskACAAC+oBAgF/AX4jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMIAQgBCgCDBCTASIANgIIAkAgAEUEQCAEQQA2AhwMAQsjAEEQayIAIAQoAhg2AgwgACgCDCIAIAAoAjBBAWo2AjAgBCgCCCAEKAIYNgIAIAQoAgggBCgCFDYCBCAEKAIIIAQoAhA2AgggBCgCGCAEKAIQQQBCAEEOIAQoAhQRCgAhBSAEKAIIIAU3AxggBCgCCCkDGEIAUwRAIAQoAghCPzcDGAsgBCAEKAIINgIcCyAEKAIcIQAgBEEgaiQAIAAL6gEBAX8jAEEQayIBJAAgASAANgIIIAFBOBAYIgA2AgQCQCAARQRAIAEoAghBDkEAEBQgAUEANgIMDAELIAEoAgRBADYCACABKAIEQQA2AgQgASgCBEEANgIIIAEoAgRBADYCICABKAIEQQA2AiQgASgCBEEAOgAoIAEoAgRBADYCLCABKAIEQQE2AjAjAEEQayIAIAEoAgRBDGo2AgwgACgCDEEANgIAIAAoAgxBADYCBCAAKAIMQQA2AgggASgCBEEAOgA0IAEoAgRBADoANSABIAEoAgQ2AgwLIAEoAgwhACABQRBqJAAgAAuwAQIBfwF+IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNgIQIAMgAygCEBCTASIANgIMAkAgAEUEQCADQQA2AhwMAQsgAygCDCADKAIYNgIEIAMoAgwgAygCFDYCCCADKAIUQQBCAEEOIAMoAhgRDgAhBCADKAIMIAQ3AxggAygCDCkDGEIAUwRAIAMoAgxCPzcDGAsgAyADKAIMNgIcCyADKAIcIQAgA0EgaiQAIAALwwIBAX8jAEEQayIDIAA2AgwgAyABNgIIIAMgAjYCBCADKAIIKQMAQgKDQgBSBEAgAygCDCADKAIIKQMQNwMQCyADKAIIKQMAQgSDQgBSBEAgAygCDCADKAIIKQMYNwMYCyADKAIIKQMAQgiDQgBSBEAgAygCDCADKAIIKQMgNwMgCyADKAIIKQMAQhCDQgBSBEAgAygCDCADKAIIKAIoNgIoCyADKAIIKQMAQiCDQgBSBEAgAygCDCADKAIIKAIsNgIsCyADKAIIKQMAQsAAg0IAUgRAIAMoAgwgAygCCC8BMDsBMAsgAygCCCkDAEKAAYNCAFIEQCADKAIMIAMoAggvATI7ATILIAMoAggpAwBCgAKDQgBSBEAgAygCDCADKAIIKAI0NgI0CyADKAIMIgAgAygCCCkDACAAKQMAhDcDAEEAC1oBAX8jAEEQayIBIAA2AggCQAJAIAEoAggoAgBBAE4EQCABKAIIKAIAQYAUKAIASA0BCyABQQA2AgwMAQsgASABKAIIKAIAQQJ0QZAUaigCADYCDAsgASgCDAumAQEBfyMAQSBrIgUkACAFIAA2AhggBSABNwMQIAUgAjYCDCAFIAM2AgggBSAENgIEIAUgBSgCGCAFKQMQIAUoAgxBABBFIgA2AgACQCAARQRAIAVBfzYCHAwBCyAFKAIIBEAgBSgCCCAFKAIALwEIQQh2OgAACyAFKAIEBEAgBSgCBCAFKAIAKAJENgIACyAFQQA2AhwLIAUoAhwhACAFQSBqJAAgAAucBgECfyMAQSBrIgIkACACIAA2AhggAiABNwMQAkAgAikDECACKAIYKQMwWgRAIAIoAhhBCGpBEkEAEBQgAkF/NgIcDAELIAIoAhgoAhhBAnEEQCACKAIYQQhqQRlBABAUIAJBfzYCHAwBCyACIAIoAhggAikDEEEAIAIoAhhBCGoQTiIANgIMIABFBEAgAkF/NgIcDAELIAIoAhgoAlAgAigCDCACKAIYQQhqEFhBAXFFBEAgAkF/NgIcDAELAn8gAigCGCEDIAIpAxAhASMAQTBrIgAkACAAIAM2AiggACABNwMgIABBATYCHAJAIAApAyAgACgCKCkDMFoEQCAAKAIoQQhqQRJBABAUIABBfzYCLAwBCwJAIAAoAhwNACAAKAIoKAJAIAApAyCnQQR0aigCBEUNACAAKAIoKAJAIAApAyCnQQR0aigCBCgCAEECcUUNAAJAIAAoAigoAkAgACkDIKdBBHRqKAIABEAgACAAKAIoIAApAyBBCCAAKAIoQQhqEE4iAzYCDCADRQRAIABBfzYCLAwECyAAIAAoAiggACgCDEEAQQAQVzcDEAJAIAApAxBCAFMNACAAKQMQIAApAyBRDQAgACgCKEEIakEKQQAQFCAAQX82AiwMBAsMAQsgAEEANgIMCyAAIAAoAiggACkDIEEAIAAoAihBCGoQTiIDNgIIIANFBEAgAEF/NgIsDAILIAAoAgwEQCAAKAIoKAJQIAAoAgwgACkDIEEAIAAoAihBCGoQdUEBcUUEQCAAQX82AiwMAwsLIAAoAigoAlAgACgCCCAAKAIoQQhqEFhBAXFFBEAgACgCKCgCUCAAKAIMQQAQWBogAEF/NgIsDAILCyAAKAIoKAJAIAApAyCnQQR0aigCBBA5IAAoAigoAkAgACkDIKdBBHRqQQA2AgQgACgCKCgCQCAAKQMgp0EEdGoQYyAAQQA2AiwLIAAoAiwhAyAAQTBqJAAgAwsEQCACQX82AhwMAQsgAigCGCgCQCACKQMQp0EEdGpBAToADCACQQA2AhwLIAIoAhwhACACQSBqJAAgAAulBAEBfyMAQTBrIgUkACAFIAA2AiggBSABNwMgIAUgAjYCHCAFIAM6ABsgBSAENgIUAkAgBSgCKCAFKQMgQQBBABBFRQRAIAVBfzYCLAwBCyAFKAIoKAIYQQJxBEAgBSgCKEEIakEZQQAQFCAFQX82AiwMAQsgBSAFKAIoKAJAIAUpAyCnQQR0ajYCECAFAn8gBSgCECgCAARAIAUoAhAoAgAvAQhBCHYMAQtBAws6AAsgBQJ/IAUoAhAoAgAEQCAFKAIQKAIAKAJEDAELQYCA2I14CzYCBEEBIQAgBSAFLQAbIAUtAAtGBH8gBSgCFCAFKAIERwVBAQtBAXE2AgwCQCAFKAIMBEAgBSgCECgCBEUEQCAFKAIQKAIAED8hACAFKAIQIAA2AgQgAEUEQCAFKAIoQQhqQQ5BABAUIAVBfzYCLAwECwsgBSgCECgCBCAFKAIQKAIELwEIQf8BcSAFLQAbQQh0cjsBCCAFKAIQKAIEIAUoAhQ2AkQgBSgCECgCBCIAIAAoAgBBEHI2AgAMAQsgBSgCECgCBARAIAUoAhAoAgQiACAAKAIAQW9xNgIAAkAgBSgCECgCBCgCAEUEQCAFKAIQKAIEEDkgBSgCEEEANgIEDAELIAUoAhAoAgQgBSgCECgCBC8BCEH/AXEgBS0AC0EIdHI7AQggBSgCECgCBCAFKAIENgJECwsLIAVBADYCLAsgBSgCLCEAIAVBMGokACAAC90PAgF/AX4jAEFAaiIEJAAgBCAANgI0IARCfzcDKCAEIAE2AiQgBCACNgIgIAQgAzYCHAJAIAQoAjQoAhhBAnEEQCAEKAI0QQhqQRlBABAUIARCfzcDOAwBCyAEIAQoAjQpAzA3AxAgBCkDKEJ/UQRAIARCfzcDCCAEKAIcQYDAAHEEQCAEIAQoAjQgBCgCJCAEKAIcQQAQVzcDCAsgBCkDCEJ/UQRAIAQoAjQhASMAQUBqIgAkACAAIAE2AjQCQCAAKAI0KQM4IAAoAjQpAzBCAXxYBEAgACAAKAI0KQM4NwMYIAAgACkDGEIBhjcDEAJAIAApAxBCEFQEQCAAQhA3AxAMAQsgACkDEEKACFYEQCAAQoAINwMQCwsgACAAKQMQIAApAxh8NwMYIAAgACkDGKdBBHStNwMIIAApAwggACgCNCkDOKdBBHStVARAIAAoAjRBCGpBDkEAEBQgAEJ/NwM4DAILIAAgACgCNCgCQCAAKQMYp0EEdBBINgIkIAAoAiRFBEAgACgCNEEIakEOQQAQFCAAQn83AzgMAgsgACgCNCAAKAIkNgJAIAAoAjQgACkDGDcDOAsgACgCNCIBKQMwIQUgASAFQgF8NwMwIAAgBTcDKCAAKAI0KAJAIAApAyinQQR0ahCQASAAIAApAyg3AzgLIAApAzghBSAAQUBrJAAgBCAFNwMIIAVCAFMEQCAEQn83AzgMAwsLIAQgBCkDCDcDKAsCQCAEKAIkRQ0AIAQoAjQhASAEKQMoIQUgBCgCJCECIAQoAhwhAyMAQUBqIgAkACAAIAE2AjggACAFNwMwIAAgAjYCLCAAIAM2AigCQCAAKQMwIAAoAjgpAzBaBEAgACgCOEEIakESQQAQFCAAQX82AjwMAQsgACgCOCgCGEECcQRAIAAoAjhBCGpBGUEAEBQgAEF/NgI8DAELAkACQCAAKAIsRQ0AIAAoAiwsAABFDQAgACAAKAIsIAAoAiwQK0H//wNxIAAoAiggACgCOEEIahBSIgE2AiAgAUUEQCAAQX82AjwMAwsCQCAAKAIoQYAwcQ0AIAAoAiBBABA6QQNHDQAgACgCIEECNgIICwwBCyAAQQA2AiALIAAgACgCOCAAKAIsQQBBABBXIgU3AxACQCAFQgBTDQAgACkDECAAKQMwUQ0AIAAoAiAQJSAAKAI4QQhqQQpBABAUIABBfzYCPAwBCwJAIAApAxBCAFMNACAAKQMQIAApAzBSDQAgACgCIBAlIABBADYCPAwBCyAAIAAoAjgoAkAgACkDMKdBBHRqNgIkAkAgACgCJCgCAARAIAAgACgCJCgCACgCMCAAKAIgEIsBQQBHOgAfDAELIABBADoAHwsCQCAALQAfQQFxDQAgACgCJCgCBA0AIAAoAiQoAgAQPyEBIAAoAiQgATYCBCABRQRAIAAoAjhBCGpBDkEAEBQgACgCIBAlIABBfzYCPAwCCwsgAAJ/IAAtAB9BAXEEQCAAKAIkKAIAKAIwDAELIAAoAiALQQBBACAAKAI4QQhqEEYiATYCCCABRQRAIAAoAiAQJSAAQX82AjwMAQsCQCAAKAIkKAIEBEAgACAAKAIkKAIEKAIwNgIEDAELAkAgACgCJCgCAARAIAAgACgCJCgCACgCMDYCBAwBCyAAQQA2AgQLCwJAIAAoAgQEQCAAIAAoAgRBAEEAIAAoAjhBCGoQRiIBNgIMIAFFBEAgACgCIBAlIABBfzYCPAwDCwwBCyAAQQA2AgwLIAAoAjgoAlAgACgCCCAAKQMwQQAgACgCOEEIahB1QQFxRQRAIAAoAiAQJSAAQX82AjwMAQsgACgCDARAIAAoAjgoAlAgACgCDEEAEFgaCwJAIAAtAB9BAXEEQCAAKAIkKAIEBEAgACgCJCgCBCgCAEECcQRAIAAoAiQoAgQoAjAQJSAAKAIkKAIEIgEgASgCAEF9cTYCAAJAIAAoAiQoAgQoAgBFBEAgACgCJCgCBBA5IAAoAiRBADYCBAwBCyAAKAIkKAIEIAAoAiQoAgAoAjA2AjALCwsgACgCIBAlDAELIAAoAiQoAgQoAgBBAnEEQCAAKAIkKAIEKAIwECULIAAoAiQoAgQiASABKAIAQQJyNgIAIAAoAiQoAgQgACgCIDYCMAsgAEEANgI8CyAAKAI8IQEgAEFAayQAIAFFDQAgBCgCNCkDMCAEKQMQUgRAIAQoAjQoAkAgBCkDKKdBBHRqEGIgBCgCNCAEKQMQNwMwCyAEQn83AzgMAQsgBCgCNCgCQCAEKQMop0EEdGoQYwJAIAQoAjQoAkAgBCkDKKdBBHRqKAIARQ0AIAQoAjQoAkAgBCkDKKdBBHRqKAIEBEAgBCgCNCgCQCAEKQMop0EEdGooAgQoAgBBAXENAQsgBCgCNCgCQCAEKQMop0EEdGooAgRFBEAgBCgCNCgCQCAEKQMop0EEdGooAgAQPyEAIAQoAjQoAkAgBCkDKKdBBHRqIAA2AgQgAEUEQCAEKAI0QQhqQQ5BABAUIARCfzcDOAwDCwsgBCgCNCgCQCAEKQMop0EEdGooAgRBfjYCECAEKAI0KAJAIAQpAyinQQR0aigCBCIAIAAoAgBBAXI2AgALIAQoAjQoAkAgBCkDKKdBBHRqIAQoAiA2AgggBCAEKQMoNwM4CyAEKQM4IQUgBEFAayQAIAULqgEBAX8jAEEwayICJAAgAiAANgIoIAIgATcDICACQQA2AhwCQAJAIAIoAigoAiRBAUYEQCACKAIcRQ0BIAIoAhxBAUYNASACKAIcQQJGDQELIAIoAihBDGpBEkEAEBQgAkF/NgIsDAELIAIgAikDIDcDCCACIAIoAhw2AhAgAkF/QQAgAigCKCACQQhqQhBBDBAhQgBTGzYCLAsgAigCLCEAIAJBMGokACAAC6UyAwZ/AX4BfCMAQeAAayIEJAAgBCAANgJYIAQgATYCVCAEIAI2AlACQAJAIAQoAlRBAE4EQCAEKAJYDQELIAQoAlBBEkEAEBQgBEEANgJcDAELIAQgBCgCVDYCTCMAQRBrIgAgBCgCWDYCDCAEIAAoAgwpAxg3A0BB4JoBKQMAQn9RBEAgBEF/NgIUIARBAzYCECAEQQc2AgwgBEEGNgIIIARBAjYCBCAEQQE2AgBB4JoBQQAgBBA2NwMAIARBfzYCNCAEQQ82AjAgBEENNgIsIARBDDYCKCAEQQo2AiQgBEEJNgIgQeiaAUEIIARBIGoQNjcDAAtB4JoBKQMAIAQpA0BB4JoBKQMAg1IEQCAEKAJQQRxBABAUIARBADYCXAwBC0HomgEpAwAgBCkDQEHomgEpAwCDUgRAIAQgBCgCTEEQcjYCTAsgBCgCTEEYcUEYRgRAIAQoAlBBGUEAEBQgBEEANgJcDAELIAQoAlghASAEKAJQIQIjAEHQAGsiACQAIAAgATYCSCAAIAI2AkQgAEEIahA7AkAgACgCSCAAQQhqEDgEQCMAQRBrIgEgACgCSDYCDCAAIAEoAgxBDGo2AgQjAEEQayIBIAAoAgQ2AgwCQCABKAIMKAIAQQVHDQAjAEEQayIBIAAoAgQ2AgwgASgCDCgCBEEsRw0AIABBADYCTAwCCyAAKAJEIAAoAgQQQyAAQX82AkwMAQsgAEEBNgJMCyAAKAJMIQEgAEHQAGokACAEIAE2AjwCQAJAAkAgBCgCPEEBag4CAAECCyAEQQA2AlwMAgsgBCgCTEEBcUUEQCAEKAJQQQlBABAUIARBADYCXAwCCyAEIAQoAlggBCgCTCAEKAJQEGo2AlwMAQsgBCgCTEECcQRAIAQoAlBBCkEAEBQgBEEANgJcDAELIAQoAlgQSUEASARAIAQoAlAgBCgCWBAXIARBADYCXAwBCwJAIAQoAkxBCHEEQCAEIAQoAlggBCgCTCAEKAJQEGo2AjgMAQsgBCgCWCEAIAQoAkwhASAEKAJQIQIjAEHwAGsiAyQAIAMgADYCaCADIAE2AmQgAyACNgJgIANBIGoQOwJAIAMoAmggA0EgahA4QQBIBEAgAygCYCADKAJoEBcgA0EANgJsDAELIAMpAyBCBINQBEAgAygCYEEEQYoBEBQgA0EANgJsDAELIAMgAykDODcDGCADIAMoAmggAygCZCADKAJgEGoiADYCXCAARQRAIANBADYCbAwBCwJAIAMpAxhQRQ0AIAMoAmgQngFBAXFFDQAgAyADKAJcNgJsDAELIAMoAlwhACADKQMYIQkjAEHgAGsiAiQAIAIgADYCWCACIAk3A1ACQCACKQNQQhZUBEAgAigCWEEIakETQQAQFCACQQA2AlwMAQsgAgJ+IAIpA1BCqoAEVARAIAIpA1AMAQtCqoAECzcDMCACKAJYKAIAQgAgAikDMH1BAhAnQQBIBEAjAEEQayIAIAIoAlgoAgA2AgwgAiAAKAIMQQxqNgIIAkACfyMAQRBrIgAgAigCCDYCDCAAKAIMKAIAQQRGCwRAIwBBEGsiACACKAIINgIMIAAoAgwoAgRBFkYNAQsgAigCWEEIaiACKAIIEEMgAkEANgJcDAILCyACIAIoAlgoAgAQSiIJNwM4IAlCAFMEQCACKAJYQQhqIAIoAlgoAgAQFyACQQA2AlwMAQsgAiACKAJYKAIAIAIpAzBBACACKAJYQQhqEEEiADYCDCAARQRAIAJBADYCXAwBCyACQn83AyAgAkEANgJMIAIpAzBCqoAEWgRAIAIoAgxCFBAsGgsgAkEQakETQQAQFCACIAIoAgxCABAeNgJEA0ACQCACKAJEIQEgAigCDBAvQhJ9pyEFIwBBIGsiACQAIAAgATYCGCAAIAU2AhQgAEHsEjYCECAAQQQ2AgwCQAJAIAAoAhQgACgCDE8EQCAAKAIMDQELIABBADYCHAwBCyAAIAAoAhhBAWs2AggDQAJAIAAgACgCCEEBaiAAKAIQLQAAIAAoAhggACgCCGsgACgCFCAAKAIMa2oQqwEiATYCCCABRQ0AIAAoAghBAWogACgCEEEBaiAAKAIMQQFrEFQNASAAIAAoAgg2AhwMAgsLIABBADYCHAsgACgCHCEBIABBIGokACACIAE2AkQgAUUNACACKAIMIAIoAkQCfyMAQRBrIgAgAigCDDYCDCAAKAIMKAIEC2usECwaIAIoAlghASACKAIMIQUgAikDOCEJIwBB8ABrIgAkACAAIAE2AmggACAFNgJkIAAgCTcDWCAAIAJBEGo2AlQjAEEQayIBIAAoAmQ2AgwgAAJ+IAEoAgwtAABBAXEEQCABKAIMKQMQDAELQgALNwMwAkAgACgCZBAvQhZUBEAgACgCVEETQQAQFCAAQQA2AmwMAQsgACgCZEIEEB4oAABB0JaVMEcEQCAAKAJUQRNBABAUIABBADYCbAwBCwJAAkAgACkDMEIUVA0AIwBBEGsiASAAKAJkNgIMIAEoAgwoAgQgACkDMKdqQRRrKAAAQdCWmThHDQAgACgCZCAAKQMwQhR9ECwaIAAoAmgoAgAhBSAAKAJkIQYgACkDWCEJIAAoAmgoAhQhByAAKAJUIQgjAEGwAWsiASQAIAEgBTYCqAEgASAGNgKkASABIAk3A5gBIAEgBzYClAEgASAINgKQASMAQRBrIgUgASgCpAE2AgwgAQJ+IAUoAgwtAABBAXEEQCAFKAIMKQMQDAELQgALNwMYIAEoAqQBQgQQHhogASABKAKkARAdQf//A3E2AhAgASABKAKkARAdQf//A3E2AgggASABKAKkARAwNwM4AkAgASkDOEL///////////8AVgRAIAEoApABQQRBFhAUIAFBADYCrAEMAQsgASkDOEI4fCABKQMYIAEpA5gBfFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELAkACQCABKQM4IAEpA5gBVA0AIAEpAzhCOHwgASkDmAECfiMAQRBrIgUgASgCpAE2AgwgBSgCDCkDCAt8Vg0AIAEoAqQBIAEpAzggASkDmAF9ECwaIAFBADoAFwwBCyABKAKoASABKQM4QQAQJ0EASARAIAEoApABIAEoAqgBEBcgAUEANgKsAQwCCyABIAEoAqgBQjggAUFAayABKAKQARBBIgU2AqQBIAVFBEAgAUEANgKsAQwCCyABQQE6ABcLIAEoAqQBQgQQHigAAEHQlpkwRwRAIAEoApABQRVBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELIAEgASgCpAEQMDcDMAJAIAEoApQBQQRxRQ0AIAEpAzAgASkDOHxCDHwgASkDmAEgASkDGHxRDQAgASgCkAFBFUEAEBQgAS0AF0EBcQRAIAEoAqQBEBYLIAFBADYCrAEMAQsgASgCpAFCBBAeGiABIAEoAqQBECo2AgwgASABKAKkARAqNgIEIAEoAhBB//8DRgRAIAEgASgCDDYCEAsgASgCCEH//wNGBEAgASABKAIENgIICwJAIAEoApQBQQRxRQ0AIAEoAgggASgCBEYEQCABKAIQIAEoAgxGDQELIAEoApABQRVBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELAkAgASgCEEUEQCABKAIIRQ0BCyABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDA3AyggASABKAKkARAwNwMgIAEpAyggASkDIFIEQCABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDA3AzAgASABKAKkARAwNwOAAQJ/IwBBEGsiBSABKAKkATYCDCAFKAIMLQAAQQFxRQsEQCABKAKQAUEUQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABLQAXQQFxBEAgASgCpAEQFgsCQCABKQOAAUL///////////8AWARAIAEpA4ABIAEpA4ABIAEpAzB8WA0BCyABKAKQAUEEQRYQFCABQQA2AqwBDAELIAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCEASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQL0IWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJIQgQQHhogASgCSBAqBEAgASgCOEEBQQAQFCABQQA2AkwMAQsgASABKAJIEB1B//8Dca03AyggASABKAJIEB1B//8Dca03AyAgASkDICABKQMoUgRAIAEoAjhBE0EAEBQgAUEANgJMDAELIAEgASgCSBAqrTcDGCABIAEoAkgQKq03AxAgASkDECABKQMQIAEpAxh8VgRAIAEoAjhBBEEWEBQgAUEANgJMDAELIAEpAxAgASkDGHwgASkDQCABKQMIfFYEQCABKAI4QRVBABAUIAFBADYCTAwBCwJAIAEoAjxBBHFFDQAgASkDECABKQMYfCABKQNAIAEpAwh8UQ0AIAEoAjhBFUEAEBQgAUEANgJMDAELIAEgASkDICABKAI4EIQBIgU2AjQgBUUEQCABQQA2AkwMAQsgASgCNEEAOgAsIAEoAjQgASkDGDcDGCABKAI0IAEpAxA3AyAgASABKAI0NgJMCyABKAJMIQUgAUHQAGokACAAIAU2AlALIAAoAlBFBEAgAEEANgJsDAELIAAoAmQgACkDMEIUfBAsGiAAIAAoAmQQHTsBTiAAKAJQKQMgIAAoAlApAxh8IAApA1ggACkDMHxWBEAg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IAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEFwgAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQeBogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2AiwMAQsCQCACKAIkRQ0AIAIoAiRBBEYNACACKAIoKAIAKAIEDQAgAigCKCgCbCACKAIoKAJcRw0AIAJBATYCLAwBCyACIAIoAigoAjwgAigCKCgCbGtBAWs2AhQCQCACKAIoKAIAKAIEIAIoAhRNDQAgAigCKCgCXCACKAIoKAIsSA0AIAIoAigiACAAKAJcIAIoAigoAixrNgJcIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBkaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsgAiACKAIoKAIsIAIoAhRqNgIUCyACKAIUIAIoAigoAgAoAgRLBEAgAiACKAIoKAIAKAIENgIUCyACKAIUBEAgAigCKCgCACACKAIoKAI4IAIoAigoAmxqIAIoAhQQeBogAigCKCIAIAIoAhQgACgCbGo2AmwLIAIoAigoAsAtIAIoAigoAmxJBEAgAigCKCACKAIoKAJsNgLALQsgAiACKAIoKAK8LUEqakEDdTYCFCACIAIoAigoAgwgAigCFGtB//8DSwR/Qf//AwUgAigCKCgCDCACKAIUaws2AhQgAgJ/IAIoAhQgAigCKCgCLEsEQCACKAIoKAIsDAELIAIoAhQLNgIgIAIgAigCKCgCbCACKAIoKAJcazYCGAJAIAIoAhggAigCIEkEQCACKAIYRQRAIAIoAiRBBEcNAgsgAigCJEUNASACKAIoKAIAKAIEDQEgAigCGCACKAIUSw0BCyACAn8gAigCGCACKAIUSwRAIAIoAhQMAQsgAigCGAs2AhwgAgJ/QQAgAigCJEEERw0AGkEAIAIoAigoAgAoAgQNABogAigCHCACKAIYRgtBAXE2AhAgAigCKCACKAIoKAI4IAIoAigoAlxqIAIoAhwgAigCEBBcIAIoAigiACACKAIcIAAoAlxqNgJcIAIoAigoAgAQHAsgAkECQQAgAigCEBs2AiwLIAIoAiwhACACQTBqJAAgAAuyAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEHkEQCABQX42AgwMAQsgASABKAIIKAIcKAIENgIEIAEoAggoAhwoAggEQCABKAIIKAIoIAEoAggoAhwoAgggASgCCCgCJBEEAAsgASgCCCgCHCgCRARAIAEoAggoAiggASgCCCgCHCgCRCABKAIIKAIkEQQACyABKAIIKAIcKAJABEAgASgCCCgCKCABKAIIKAIcKAJAIAEoAggoAiQRBAALIAEoAggoAhwoAjgEQCABKAIIKAIoIAEoAggoAhwoAjggASgCCCgCJBEEAAsgASgCCCgCKCABKAIIKAIcIAEoAggoAiQRBAAgASgCCEEANgIcIAFBfUEAIAEoAgRB8QBGGzYCDAsgASgCDCEAIAFBEGokACAAC+sXAQJ/IwBB8ABrIgMgADYCbCADIAE2AmggAyACNgJkIANBfzYCXCADIAMoAmgvAQI2AlQgA0EANgJQIANBBzYCTCADQQQ2AkggAygCVEUEQCADQYoBNgJMIANBAzYCSAsgA0EANgJgA0AgAygCYCADKAJkSkUEQCADIAMoAlQ2AlggAyADKAJoIAMoAmBBAWpBAnRqLwECNgJUIAMgAygCUEEBaiIANgJQAkACQCADKAJMIABMDQAgAygCWCADKAJURw0ADAELAkAgAygCUCADKAJISARAA0AgAyADKAJsQfwUaiADKAJYQQJ0ai8BAjYCRAJAIAMoAmwoArwtQRAgAygCRGtKBEAgAyADKAJsQfwUaiADKAJYQQJ0ai8BADYCQCADKAJsIgAgAC8BuC0gAygCQEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAJAQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCREEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsQfwUaiADKAJYQQJ0ai8BACADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCRCAAKAK8LWo2ArwtCyADIAMoAlBBAWsiADYCUCAADQALDAELAkAgAygCWARAIAMoAlggAygCXEcEQCADIAMoAmxB/BRqIAMoAlhBAnRqLwECNgI8AkAgAygCbCgCvC1BECADKAI8a0oEQCADIAMoAmxB/BRqIAMoAlhBAnRqLwEANgI4IAMoAmwiACAALwG4LSADKAI4Qf//A3EgAygCbCgCvC10cjsBuC0gAygCbC8BuC1B/wFxIQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbC8BuC1BCHYhASADKAJsKAIIIQIgAygCbCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJsIAMoAjhB//8DcUEQIAMoAmwoArwta3U7AbgtIAMoAmwiACAAKAK8LSADKAI8QRBrajYCvC0MAQsgAygCbCIAIAAvAbgtIAMoAmxB/BRqIAMoAlhBAnRqLwEAIAMoAmwoArwtdHI7AbgtIAMoAmwiACADKAI8IAAoArwtajYCvC0LIAMgAygCUEEBazYCUAsgAyADKAJsLwG+FTYCNAJAIAMoAmwoArwtQRAgAygCNGtKBEAgAyADKAJsLwG8FTYCMCADKAJsIgAgAC8BuC0gAygCMEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIwQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCNEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsLwG8FSADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCNCAAKAK8LWo2ArwtCyADQQI2AiwCQCADKAJsKAK8LUEQIAMoAixrSgRAIAMgAygCUEEDazYCKCADKAJsIgAgAC8BuC0gAygCKEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIoQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCLEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJQQQNrQf//A3EgAygCbCgCvC10cjsBuC0gAygCbCIAIAMoAiwgACgCvC1qNgK8LQsMAQsCQCADKAJQQQpMBEAgAyADKAJsLwHCFTYCJAJAIAMoAmwoArwtQRAgAygCJGtKBEAgAyADKAJsLwHAFTYCICADKAJsIgAgAC8BuC0gAygCIEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIgQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCJEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsLwHAFSADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCJCAAKAK8LWo2ArwtCyADQQM2AhwCQCADKAJsKAK8LUEQIAMoAhxrSgRAIAMgAygCUEEDazYCGCADKAJsIgAgAC8BuC0gAygCGEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIYQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCHEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJQQQNrQf//A3EgAygCbCgCvC10cjsBuC0gAygCbCIAIAMoAhwgACgCvC1qNgK8LQsMAQsgAyADKAJsLwHGFTYCFAJAIAMoAmwoArwtQRAgAygCFGtKBEAgAyADKAJsLwHEFTYCECADKAJsIgAgAC8BuC0gAygCEEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIQQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCFEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsLwHEFSADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCFCAAKAK8LWo2ArwtCyADQQc2AgwCQCADKAJsKAK8LUEQIAMoAgxrSgRAIAMgAygCUEELazYCCCADKAJsIgAgAC8BuC0gAygCCEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIIQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCDEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJQQQtrQf//A3EgAygCbCgCvC10cjsBuC0gAygCbCIAIAMoAgwgACgCvC1qNgK8LQsLCwsgA0EANgJQIAMgAygCWDYCXAJAIAMoAlRFBEAgA0GKATYCTCADQQM2AkgMAQsCQCADKAJYIAMoAlRGBEAgA0EGNgJMIANBAzYCSAwBCyADQQc2AkwgA0EENgJICwsLIAMgAygCYEEBajYCYAwBCwsLkQQBAX8jAEEwayIDIAA2AiwgAyABNgIoIAMgAjYCJCADQX82AhwgAyADKAIoLwECNgIUIANBADYCECADQQc2AgwgA0EENgIIIAMoAhRFBEAgA0GKATYCDCADQQM2AggLIAMoAiggAygCJEEBakECdGpB//8DOwECIANBADYCIANAIAMoAiAgAygCJEpFBEAgAyADKAIUNgIYIAMgAygCKCADKAIgQQFqQQJ0ai8BAjYCFCADIAMoAhBBAWoiADYCEAJAAkAgAygCDCAATA0AIAMoAhggAygCFEcNAAwBCwJAIAMoAhAgAygCCEgEQCADKAIsQfwUaiADKAIYQQJ0aiIAIAMoAhAgAC8BAGo7AQAMAQsCQCADKAIYBEAgAygCGCADKAIcRwRAIAMoAiwgAygCGEECdGpB/BRqIgAgAC8BAEEBajsBAAsgAygCLCIAIABBvBVqLwEAQQFqOwG8FQwBCwJAIAMoAhBBCkwEQCADKAIsIgAgAEHAFWovAQBBAWo7AcAVDAELIAMoAiwiACAAQcQVai8BAEEBajsBxBULCwsgA0EANgIQIAMgAygCGDYCHAJAIAMoAhRFBEAgA0GKATYCDCADQQM2AggMAQsCQCADKAIYIAMoAhRGBEAgA0EGNgIMIANBAzYCCAwBCyADQQc2AgwgA0EENgIICwsLIAMgAygCIEEBajYCIAwBCwsLpxIBAn8jAEHQAGsiAyAANgJMIAMgATYCSCADIAI2AkQgA0EANgI4IAMoAkwoAqAtBEADQCADIAMoAkwoAqQtIAMoAjhBAXRqLwEANgJAIAMoAkwoApgtIQAgAyADKAI4IgFBAWo2AjggAyAAIAFqLQAANgI8AkAgAygCQEUEQCADIAMoAkggAygCPEECdGovAQI2AiwCQCADKAJMKAK8LUEQIAMoAixrSgRAIAMgAygCSCADKAI8QQJ0ai8BADYCKCADKAJMIgAgAC8BuC0gAygCKEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIoQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCLEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJIIAMoAjxBAnRqLwEAIAMoAkwoArwtdHI7AbgtIAMoAkwiACADKAIsIAAoArwtajYCvC0LDAELIAMgAygCPC0A0F02AjQgAyADKAJIIAMoAjRBgQJqQQJ0ai8BAjYCJAJAIAMoAkwoArwtQRAgAygCJGtKBEAgAyADKAJIIAMoAjRBgQJqQQJ0ai8BADYCICADKAJMIgAgAC8BuC0gAygCIEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIgQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCJEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJIIAMoAjRBgQJqQQJ0ai8BACADKAJMKAK8LXRyOwG4LSADKAJMIgAgAygCJCAAKAK8LWo2ArwtCyADIAMoAjRBAnRBkOoAaigCADYCMCADKAIwBEAgAyADKAI8IAMoAjRBAnRBgO0AaigCAGs2AjwgAyADKAIwNgIcAkAgAygCTCgCvC1BECADKAIca0oEQCADIAMoAjw2AhggAygCTCIAIAAvAbgtIAMoAhhB//8DcSADKAJMKAK8LXRyOwG4LSADKAJMLwG4LUH/AXEhASADKAJMKAIIIQIgAygCTCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJMLwG4LUEIdiEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwgAygCGEH//wNxQRAgAygCTCgCvC1rdTsBuC0gAygCTCIAIAAoArwtIAMoAhxBEGtqNgK8LQwBCyADKAJMIgAgAC8BuC0gAygCPEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwiACADKAIcIAAoArwtajYCvC0LCyADIAMoAkBBAWs2AkAgAwJ/IAMoAkBBgAJJBEAgAygCQC0A0FkMAQsgAygCQEEHdkGAAmotANBZCzYCNCADIAMoAkQgAygCNEECdGovAQI2AhQCQCADKAJMKAK8LUEQIAMoAhRrSgRAIAMgAygCRCADKAI0QQJ0ai8BADYCECADKAJMIgAgAC8BuC0gAygCEEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIQQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCFEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJEIAMoAjRBAnRqLwEAIAMoAkwoArwtdHI7AbgtIAMoAkwiACADKAIUIAAoArwtajYCvC0LIAMgAygCNEECdEGQ6wBqKAIANgIwIAMoAjAEQCADIAMoAkAgAygCNEECdEGA7gBqKAIAazYCQCADIAMoAjA2AgwCQCADKAJMKAK8LUEQIAMoAgxrSgRAIAMgAygCQDYCCCADKAJMIgAgAC8BuC0gAygCCEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIIQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCDEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJAQf//A3EgAygCTCgCvC10cjsBuC0gAygCTCIAIAMoAgwgACgCvC1qNgK8LQsLCyADKAI4IAMoAkwoAqAtSQ0ACwsgAyADKAJILwGCCDYCBAJAIAMoAkwoArwtQRAgAygCBGtKBEAgAyADKAJILwGACDYCACADKAJMIgAgAC8BuC0gAygCAEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIAQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCBEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJILwGACCADKAJMKAK8LXRyOwG4LSADKAJMIgAgAygCBCAAKAK8LWo2ArwtCwuXAgEEfyMAQRBrIgEgADYCDAJAIAEoAgwoArwtQRBGBEAgASgCDC8BuC1B/wFxIQIgASgCDCgCCCEDIAEoAgwiBCgCFCEAIAQgAEEBajYCFCAAIANqIAI6AAAgASgCDC8BuC1BCHYhAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAACABKAIMQQA7AbgtIAEoAgxBADYCvC0MAQsgASgCDCgCvC1BCE4EQCABKAIMLwG4LSECIAEoAgwoAgghAyABKAIMIgQoAhQhACAEIABBAWo2AhQgACADaiACOgAAIAEoAgwiACAALwG4LUEIdjsBuC0gASgCDCIAIAAoArwtQQhrNgK8LQsLC+8BAQR/IwBBEGsiASAANgIMAkAgASgCDCgCvC1BCEoEQCABKAIMLwG4LUH/AXEhAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAACABKAIMLwG4LUEIdiECIAEoAgwoAgghAyABKAIMIgQoAhQhACAEIABBAWo2AhQgACADaiACOgAADAELIAEoAgwoArwtQQBKBEAgASgCDC8BuC0hAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAAAsLIAEoAgxBADsBuC0gASgCDEEANgK8LQv8AQEBfyMAQRBrIgEgADYCDCABQQA2AggDQCABKAIIQZ4CTkUEQCABKAIMQZQBaiABKAIIQQJ0akEAOwEAIAEgASgCCEEBajYCCAwBCwsgAUEANgIIA0AgASgCCEEeTkUEQCABKAIMQYgTaiABKAIIQQJ0akEAOwEAIAEgASgCCEEBajYCCAwBCwsgAUEANgIIA0AgASgCCEETTkUEQCABKAIMQfwUaiABKAIIQQJ0akEAOwEAIAEgASgCCEEBajYCCAwBCwsgASgCDEEBOwGUCSABKAIMQQA2AqwtIAEoAgxBADYCqC0gASgCDEEANgKwLSABKAIMQQA2AqAtCyIBAX8jAEEQayIBJAAgASAANgIMIAEoAgwQFSABQRBqJAAL6QEBAX8jAEEwayICIAA2AiQgAiABNwMYIAJCADcDECACIAIoAiQpAwhCAX03AwgCQANAIAIpAxAgAikDCFQEQCACIAIpAxAgAikDCCACKQMQfUIBiHw3AwACQCACKAIkKAIEIAIpAwCnQQN0aikDACACKQMYVgRAIAIgAikDAEIBfTcDCAwBCwJAIAIpAwAgAigCJCkDCFIEQCACKAIkKAIEIAIpAwBCAXynQQN0aikDACACKQMYWA0BCyACIAIpAwA3AygMBAsgAiACKQMAQgF8NwMQCwwBCwsgAiACKQMQNwMoCyACKQMoC6cBAQF/IwBBMGsiBCQAIAQgADYCKCAEIAE2AiQgBCACNwMYIAQgAzYCFCAEIAQoAigpAzggBCgCKCkDMCAEKAIkIAQpAxggBCgCFBCRATcDCAJAIAQpAwhCAFMEQCAEQX82AiwMAQsgBCgCKCAEKQMINwM4IAQoAiggBCgCKCkDOBC/ASECIAQoAiggAjcDQCAEQQA2AiwLIAQoAiwhACAEQTBqJAAgAAvrAQEBfyMAQSBrIgMkACADIAA2AhggAyABNwMQIAMgAjYCDAJAIAMpAxAgAygCGCkDEFQEQCADQQE6AB8MAQsgAyADKAIYKAIAIAMpAxBCBIanEEgiADYCCCAARQRAIAMoAgxBDkEAEBQgA0EAOgAfDAELIAMoAhggAygCCDYCACADIAMoAhgoAgQgAykDEEIBfEIDhqcQSCIANgIEIABFBEAgAygCDEEOQQAQFCADQQA6AB8MAQsgAygCGCADKAIENgIEIAMoAhggAykDEDcDECADQQE6AB8LIAMtAB9BAXEhACADQSBqJAAgAAvOAgEBfyMAQTBrIgQkACAEIAA2AiggBCABNwMgIAQgAjYCHCAEIAM2AhgCQAJAIAQoAigNACAEKQMgUA0AIAQoAhhBEkEAEBQgBEEANgIsDAELIAQgBCgCKCAEKQMgIAQoAhwgBCgCGBBNIgA2AgwgAEUEQCAEQQA2AiwMAQsgBEEYEBgiADYCFCAARQRAIAQoAhhBDkEAEBQgBCgCDBAzIARBADYCLAwBCyAEKAIUIAQoAgw2AhAgBCgCFEEANgIUQQAQASEAIAQoAhQgADYCDCMAQRBrIgAgBCgCFDYCDCAAKAIMQQA2AgAgACgCDEEANgIEIAAoAgxBADYCCCAEQQIgBCgCFCAEKAIYEJQBIgA2AhAgAEUEQCAEKAIUKAIQEDMgBCgCFBAVIARBADYCLAwBCyAEIAQoAhA2AiwLIAQoAiwhACAEQTBqJAAgAAupAQEBfyMAQTBrIgQkACAEIAA2AiggBCABNwMgIAQgAjYCHCAEIAM2AhgCQCAEKAIoRQRAIAQpAyBCAFIEQCAEKAIYQRJBABAUIARBADYCLAwCCyAEQQBCACAEKAIcIAQoAhgQwgE2AiwMAQsgBCAEKAIoNgIIIAQgBCkDIDcDECAEIARBCGpCASAEKAIcIAQoAhgQwgE2AiwLIAQoAiwhACAEQTBqJAAgAAtGAQF/IwBBIGsiAyQAIAMgADYCHCADIAE3AxAgAyACNgIMIAMoAhwgAykDECADKAIMIAMoAhxBCGoQTiEAIANBIGokACAAC40CAQF/IwBBMGsiAyQAIAMgADYCKCADIAE7ASYgAyACNgIgIAMgAygCKCgCNCADQR5qIAMvASZBgAZBABBfNgIQAkAgAygCEEUNACADLwEeQQVJDQACQCADKAIQLQAAQQFGDQAMAQsgAyADKAIQIAMvAR6tECkiADYCFCAARQRADAELIAMoAhQQjwEaIAMgAygCFBAqNgIYIAMoAiAQjAEgAygCGEYEQCADIAMoAhQQLz0BDiADIAMoAhQgAy8BDq0QHiADLwEOQYAQQQAQUjYCCCADKAIIBEAgAygCIBAlIAMgAygCCDYCIAsLIAMoAhQQFgsgAyADKAIgNgIsIAMoAiwhACADQTBqJAAgAAvaFwIBfwF+IwBBgAFrIgUkACAFIAA2AnQgBSABNgJwIAUgAjYCbCAFIAM6AGsgBSAENgJkIAUgBSgCbEEARzoAHSAFQR5BLiAFLQBrQQFxGzYCKAJAAkAgBSgCbARAIAUoAmwQLyAFKAIorVQEQCAFKAJkQRNBABAUIAVCfzcDeAwDCwwBCyAFIAUoAnAgBSgCKK0gBUEwaiAFKAJkEEEiADYCbCAARQRAIAVCfzcDeAwCCwsgBSgCbEIEEB4hAEHxEkH2EiAFLQBrQQFxGygAACAAKAAARwRAIAUoAmRBE0EAEBQgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwBCyAFKAJ0EE8CQCAFLQBrQQFxRQRAIAUoAmwQHSEAIAUoAnQgADsBCAwBCyAFKAJ0QQA7AQgLIAUoAmwQHSEAIAUoAnQgADsBCiAFKAJsEB0hACAFKAJ0IAA7AQwgBSgCbBAdQf//A3EhACAFKAJ0IAA2AhAgBSAFKAJsEB07AS4gBSAFKAJsEB07ASwgBS8BLiEBIAUvASwhAiMAQTBrIgAkACAAIAE7AS4gACACOwEsIABCADcCACAAQQA2AiggAEIANwIgIABCADcCGCAAQgA3AhAgAEIANwIIIABBADYCICAAIAAvASxBCXZB0ABqNgIUIAAgAC8BLEEFdkEPcUEBazYCECAAIAAvASxBH3E2AgwgACAALwEuQQt2NgIIIAAgAC8BLkEFdkE/cTYCBCAAIAAvAS5BAXRBPnE2AgAgABAMIQEgAEEwaiQAIAEhACAFKAJ0IAA2AhQgBSgCbBAqIQAgBSgCdCAANgIYIAUoAmwQKq0hBiAFKAJ0IAY3AyAgBSgCbBAqrSEGIAUoAnQgBjcDKCAFIAUoAmwQHTsBIiAFIAUoAmwQHTsBHgJAIAUtAGtBAXEEQCAFQQA7ASAgBSgCdEEANgI8IAUoAnRBADsBQCAFKAJ0QQA2AkQgBSgCdEIANwNIDAELIAUgBSgCbBAdOwEgIAUoAmwQHUH//wNxIQAgBSgCdCAANgI8IAUoAmwQHSEAIAUoAnQgADsBQCAFKAJsECohACAFKAJ0IAA2AkQgBSgCbBAqrSEGIAUoAnQgBjcDSAsCfyMAQRBrIgAgBSgCbDYCDCAAKAIMLQAAQQFxRQsEQCAFKAJkQRRBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAQsCQCAFKAJ0LwEMQQFxBEAgBSgCdC8BDEHAAHEEQCAFKAJ0Qf//AzsBUgwCCyAFKAJ0QQE7AVIMAQsgBSgCdEEAOwFSCyAFKAJ0QQA2AjAgBSgCdEEANgI0IAUoAnRBADYCOCAFIAUvASAgBS8BIiAFLwEeamo2AiQCQCAFLQAdQQFxBEAgBSgCbBAvIAUoAiStVARAIAUoAmRBFUEAEBQgBUJ/NwN4DAMLDAELIAUoAmwQFiAFIAUoAnAgBSgCJK1BACAFKAJkEEEiADYCbCAARQRAIAVCfzcDeAwCCwsgBS8BIgRAIAUoAmwgBSgCcCAFLwEiQQEgBSgCZBCNASEAIAUoAnQgADYCMCAFKAJ0KAIwRQRAAn8jAEEQayIAIAUoAmQ2AgwgACgCDCgCAEERRgsEQCAFKAJkQRVBABAUCyAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAILIAUoAnQvAQxBgBBxBEAgBSgCdCgCMEECEDpBBUYEQCAFKAJkQRVBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAwsLCyAFLwEeBEAgBSAFKAJsIAUoAnAgBS8BHkEAIAUoAmQQYDYCGCAFKAIYRQRAIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsgBSgCGCAFLwEeQYACQYAEIAUtAGtBAXEbIAUoAnRBNGogBSgCZBCIAUEBcUUEQCAFKAIYEBUgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwCCyAFKAIYEBUgBS0Aa0EBcQRAIAUoAnRBAToABAsLIAUvASAEQCAFKAJsIAUoAnAgBS8BIEEAIAUoAmQQjQEhACAFKAJ0IAA2AjggBSgCdCgCOEUEQCAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAILIAUoAnQvAQxBgBBxBEAgBSgCdCgCOEECEDpBBUYEQCAFKAJkQRVBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAwsLCyAFKAJ0QfXgASAFKAJ0KAIwEMUBIQAgBSgCdCAANgIwIAUoAnRB9cYBIAUoAnQoAjgQxQEhACAFKAJ0IAA2AjgCQAJAIAUoAnQpAyhC/////w9RDQAgBSgCdCkDIEL/////D1ENACAFKAJ0KQNIQv////8PUg0BCyAFIAUoAnQoAjQgBUEWakEBQYACQYAEIAUtAGtBAXEbIAUoAmQQXzYCDCAFKAIMRQRAIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsgBSAFKAIMIAUvARatECkiADYCECAARQRAIAUoAmRBDkEAEBQgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwCCwJAIAUoAnQpAyhC/////w9RBEAgBSgCEBAwIQYgBSgCdCAGNwMoDAELIAUtAGtBAXEEQCAFKAIQIQEjAEEgayIAJAAgACABNgIYIABCCDcDECAAIAAoAhgpAxAgACkDEHw3AwgCQCAAKQMIIAAoAhgpAxBUBEAgACgCGEEAOgAAIABBfzYCHAwBCyAAIAAoAhggACkDCBAsNgIcCyAAKAIcGiAAQSBqJAALCyAFKAJ0KQMgQv////8PUQRAIAUoAhAQMCEGIAUoAnQgBjcDIAsgBS0Aa0EBcUUEQCAFKAJ0KQNIQv////8PUQRAIAUoAhAQMCEGIAUoAnQgBjcDSAsgBSgCdCgCPEH//wNGBEAgBSgCEBAqIQAgBSgCdCAANgI8CwsgBSgCEBBHQQFxRQRAIAUoAmRBFUEAEBQgBSgCEBAWIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsgBSgCEBAWCwJ/IwBBEGsiACAFKAJsNgIMIAAoAgwtAABBAXFFCwRAIAUoAmRBFEEAEBQgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwBCyAFLQAdQQFxRQRAIAUoAmwQFgsgBSgCdCkDSEL///////////8AVgRAIAUoAmRBBEEWEBQgBUJ/NwN4DAELAn8gBSgCdCEBIAUoAmQhAiMAQSBrIgAkACAAIAE2AhggACACNgIUAkAgACgCGCgCEEHjAEcEQCAAQQE6AB8MAQsgACAAKAIYKAI0IABBEmpBgbICQYAGQQAQXzYCCAJAIAAoAggEQCAALwESQQdPDQELIAAoAhRBFUEAEBQgAEEAOgAfDAELIAAgACgCCCAALwESrRApIgE2AgwgAUUEQCAAKAIUQRRBABAUIABBADoAHwwBCyAAQQE6AAcCQAJAAkAgACgCDBAdQQFrDgICAAELIAAoAhgpAyhCFFQEQCAAQQA6AAcLDAELIAAoAhRBGEEAEBQgACgCDBAWIABBADoAHwwBCyAAKAIMQgIQHi8AAEHBigFHBEAgACgCFEEYQQAQFCAAKAIMEBYgAEEAOgAfDAELAkACQAJAAkACQCAAKAIMEI8BQQFrDgMAAQIDCyAAQYECOwEEDAMLIABBggI7AQQMAgsgAEGDAjsBBAwBCyAAKAIUQRhBABAUIAAoAgwQFiAAQQA6AB8MAQsgAC8BEkEHRwRAIAAoAhRBFUEAEBQgACgCDBAWIABBADoAHwwBCyAAKAIYIAAtAAdBAXE6AAYgACgCGCAALwEEOwFSIAAoAgwQHUH//wNxIQEgACgCGCABNgIQIAAoAgwQFiAAQQE6AB8LIAAtAB9BAXEhASAAQSBqJAAgAUEBcUULBEAgBUJ/NwN4DAELIAUoAnQoAjQQhwEhACAFKAJ0IAA2AjQgBSAFKAIoIAUoAiRqrTcDeAsgBSkDeCEGIAVBgAFqJAAgBgsYAEGomwFCADcCAEGwmwFBADYCAEGomwELCABBAUEMEHYLBwAgACgCLAsHACAAKAIoCwcAIAAoAhgLtQkBAX8jAEHgwABrIgUkACAFIAA2AtRAIAUgATYC0EAgBSACNgLMQCAFIAM3A8BAIAUgBDYCvEAgBSAFKALQQDYCuEACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBSgCvEAOEQMEAAYBAgUJCgoKCgoKCAoHCgsgBUIANwPYQAwKCyAFIAUoArhAQeQAaiAFKALMQCAFKQPAQBBCNwPYQAwJCyAFKAK4QBAVIAVCADcD2EAMCAsgBSgCuEAoAhAEQCAFIAUoArhAKAIQIAUoArhAKQMYIAUoArhAQeQAahBlIgM3A5hAIANQBEAgBUJ/NwPYQAwJCyAFKAK4QCkDCCAFKAK4QCkDCCAFKQOYQHxWBEAgBSgCuEBB5ABqQRVBABAUIAVCfzcD2EAMCQsgBSgCuEAiACAFKQOYQCAAKQMAfDcDACAFKAK4QCIAIAUpA5hAIAApAwh8NwMIIAUoArhAQQA2AhALIAUoArhALQB4QQFxRQRAIAVCADcDqEADQCAFKQOoQCAFKAK4QCkDAFQEQCAFIAUoArhAKQMAIAUpA6hAfUKAwABWBH5CgMAABSAFKAK4QCkDACAFKQOoQH0LNwOgQCAFIAUoAtRAIAVBEGogBSkDoEAQLiIDNwOwQCADQgBTBEAgBSgCuEBB5ABqIAUoAtRAEBcgBUJ/NwPYQAwLCyAFKQOwQFAEQCAFKAK4QEHkAGpBEUEAEBQgBUJ/NwPYQAwLBSAFIAUpA7BAIAUpA6hAfDcDqEAMAgsACwsLIAUoArhAIAUoArhAKQMANwMgIAVCADcD2EAMBwsgBSkDwEAgBSgCuEApAwggBSgCuEApAyB9VgRAIAUgBSgCuEApAwggBSgCuEApAyB9NwPAQAsgBSkDwEBQBEAgBUIANwPYQAwHCyAFKAK4QC0AeEEBcQRAIAUoAtRAIAUoArhAKQMgQQAQJ0EASARAIAUoArhAQeQAaiAFKALUQBAXIAVCfzcD2EAMCAsLIAUgBSgC1EAgBSgCzEAgBSkDwEAQLiIDNwOwQCADQgBTBEAgBSgCuEBB5ABqQRFBABAUIAVCfzcD2EAMBwsgBSgCuEAiACAFKQOwQCAAKQMgfDcDICAFKQOwQFAEQCAFKAK4QCkDICAFKAK4QCkDCFQEQCAFKAK4QEHkAGpBEUEAEBQgBUJ/NwPYQAwICwsgBSAFKQOwQDcD2EAMBgsgBSAFKAK4QCkDICAFKAK4QCkDAH0gBSgCuEApAwggBSgCuEApAwB9IAUoAsxAIAUpA8BAIAUoArhAQeQAahCRATcDCCAFKQMIQgBTBEAgBUJ/NwPYQAwGCyAFKAK4QCAFKQMIIAUoArhAKQMAfDcDICAFQgA3A9hADAULIAUgBSgCzEA2AgQgBSgCBCAFKAK4QEEoaiAFKAK4QEHkAGoQlQFBAEgEQCAFQn83A9hADAULIAVCADcD2EAMBAsgBSAFKAK4QCwAYKw3A9hADAMLIAUgBSgCuEApA3A3A9hADAILIAUgBSgCuEApAyAgBSgCuEApAwB9NwPYQAwBCyAFKAK4QEHkAGpBHEEAEBQgBUJ/NwPYQAsgBSkD2EAhAyAFQeDAAGokACADCwcAIAAoAhALIgEBfyMAQRBrIgEgADYCDCABKAIMIgAgACgCMEEBajYCMAsHACAAKAIICxQAIAAgAa0gAq1CIIaEIAMgBBB/CxMBAX4gABBKIgFCIIinEAAgAacLEgAgACABrSACrUIghoQgAxAnCx8BAX4gACABIAKtIAOtQiCGhBAuIgRCIIinEAAgBKcLFQAgACABrSACrUIghoQgAyAEEMMBCxQAIAAgASACrSADrUIghoQgBBB+C60EAQF/IwBBIGsiBSQAIAUgADYCGCAFIAGtIAKtQiCGhDcDECAFIAM2AgwgBSAENgIIAkACQCAFKQMQIAUoAhgpAzBUBEAgBSgCCEEJTQ0BCyAFKAIYQQhqQRJBABAUIAVBfzYCHAwBCyAFKAIYKAIYQQJxBEAgBSgCGEEIakEZQQAQFCAFQX82AhwMAQsCfyAFKAIMIQEjAEEQayIAJAAgACABNgIIIABBAToABwJAIAAoAghFBEAgAEEBOgAPDAELIAAgACgCCCAALQAHQQFxELMBQQBHOgAPCyAALQAPQQFxIQEgAEEQaiQAIAFFCwRAIAUoAhhBCGpBEEEAEBQgBUF/NgIcDAELIAUgBSgCGCgCQCAFKQMQp0EEdGo2AgQgBSAFKAIEKAIABH8gBSgCBCgCACgCEAVBfws2AgACQCAFKAIMIAUoAgBGBEAgBSgCBCgCBARAIAUoAgQoAgQiACAAKAIAQX5xNgIAIAUoAgQoAgRBADsBUCAFKAIEKAIEKAIARQRAIAUoAgQoAgQQOSAFKAIEQQA2AgQLCwwBCyAFKAIEKAIERQRAIAUoAgQoAgAQPyEAIAUoAgQgADYCBCAARQRAIAUoAhhBCGpBDkEAEBQgBUF/NgIcDAMLCyAFKAIEKAIEIAUoAgw2AhAgBSgCBCgCBCAFKAIIOwFQIAUoAgQoAgQiACAAKAIAQQFyNgIACyAFQQA2AhwLIAUoAhwhACAFQSBqJAAgAAsXAQF+IAAgASACEHMiA0IgiKcQACADpwuuAQIBfwF+An8jAEEgayICIAA2AhQgAiABNgIQAkAgAigCFEUEQCACQn83AxgMAQsgAigCEEEIcQRAIAIgAigCFCkDMDcDCANAIAIpAwhCAFIEfyACKAIUKAJAIAIpAwhCAX2nQQR0aigCAAVBAQtFBEAgAiACKQMIQgF9NwMIDAELCyACIAIpAwg3AxgMAQsgAiACKAIUKQMwNwMYCyACKQMYIgNCIIinCxAAIAOnCxMAIAAgAa0gAq1CIIaEIAMQxAELiAICAX8BfgJ/IwBBIGsiBCQAIAQgADYCFCAEIAE2AhAgBCACrSADrUIghoQ3AwgCQCAEKAIURQRAIARCfzcDGAwBCyAEKAIUKAIEBEAgBEJ/NwMYDAELIAQpAwhC////////////AFYEQCAEKAIUQQRqQRJBABAUIARCfzcDGAwBCwJAIAQoAhQtABBBAXFFBEAgBCkDCFBFDQELIARCADcDGAwBCyAEIAQoAhQoAhQgBCgCECAEKQMIEC4iBTcDACAFQgBTBEAgBCgCFEEEaiAEKAIUKAIUEBcgBEJ/NwMYDAELIAQgBCkDADcDGAsgBCkDGCEFIARBIGokACAFQiCIpwsQACAFpwtPAQF/IwBBIGsiBCQAIAQgADYCHCAEIAGtIAKtQiCGhDcDECAEIAM2AgwgBCgCHCAEKQMQIAQoAgwgBCgCHCgCHBCtASEAIARBIGokACAAC9kDAQF/IwBBIGsiBSQAIAUgADYCGCAFIAGtIAKtQiCGhDcDECAFIAM2AgwgBSAENgIIAkAgBSgCGCAFKQMQQQBBABBFRQRAIAVBfzYCHAwBCyAFKAIYKAIYQQJxBEAgBSgCGEEIakEZQQAQFCAFQX82AhwMAQsgBSgCGCgCQCAFKQMQp0EEdGooAggEQCAFKAIYKAJAIAUpAxCnQQR0aigCCCAFKAIMEGhBAEgEQCAFKAIYQQhqQQ9BABAUIAVBfzYCHAwCCyAFQQA2AhwMAQsgBSAFKAIYKAJAIAUpAxCnQQR0ajYCBCAFIAUoAgQoAgAEfyAFKAIMIAUoAgQoAgAoAhRHBUEBC0EBcTYCAAJAIAUoAgAEQCAFKAIEKAIERQRAIAUoAgQoAgAQPyEAIAUoAgQgADYCBCAARQRAIAUoAhhBCGpBDkEAEBQgBUF/NgIcDAQLCyAFKAIEKAIEIAUoAgw2AhQgBSgCBCgCBCIAIAAoAgBBIHI2AgAMAQsgBSgCBCgCBARAIAUoAgQoAgQiACAAKAIAQV9xNgIAIAUoAgQoAgQoAgBFBEAgBSgCBCgCBBA5IAUoAgRBADYCBAsLCyAFQQA2AhwLIAUoAhwhACAFQSBqJAAgAAsXACAAIAGtIAKtQiCGhCADIAQgBRCZAQsXACAAIAGtIAKtQiCGhCADIAQgBRCXAQuPAQIBfwF+An8jAEEgayIEJAAgBCAANgIUIAQgATYCECAEIAI2AgwgBCADNgIIAkACQCAEKAIQBEAgBCgCDA0BCyAEKAIUQQhqQRJBABAUIARCfzcDGAwBCyAEIAQoAhQgBCgCECAEKAIMIAQoAggQmgE3AxgLIAQpAxghBSAEQSBqJAAgBUIgiKcLEAAgBacLiAEBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCMAQRBrIgAgAigCDDYCDCAAKAIMQQA2AgAgACgCDEEANgIEIAAoAgxBADYCCCACKAIMIAIoAgg2AgACQCACKAIMEJYBQQFGBEAgAigCDEG0mwEoAgA2AgQMAQsgAigCDEEANgIECyACQRBqJAALhQUCAX8BfgJ/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNgIcAkAgAygCJCgCGEECcQRAIAMoAiRBCGpBGUEAEBQgA0J/NwMoDAELIAMoAiBFBEAgAygCJEEIakESQQAQFCADQn83AygMAQsgA0EANgIMIAMgAygCIBArNgIYIAMoAiAgAygCGEEBa2osAABBL0cEQCADIAMoAhhBAmoQGCIANgIMIABFBEAgAygCJEEIakEOQQAQFCADQn83AygMAgsCQAJAIAMoAgwiASADKAIgIgBzQQNxDQAgAEEDcQRAA0AgASAALQAAIgI6AAAgAkUNAyABQQFqIQEgAEEBaiIAQQNxDQALCyAAKAIAIgJBf3MgAkGBgoQIa3FBgIGChHhxDQADQCABIAI2AgAgACgCBCECIAFBBGohASAAQQRqIQAgAkGBgoQIayACQX9zcUGAgYKEeHFFDQALCyABIAAtAAAiAjoAACACRQ0AA0AgASAALQABIgI6AAEgAUEBaiEBIABBAWohACACDQALCyADKAIMIAMoAhhqQS86AAAgAygCDCADKAIYQQFqakEAOgAACyADIAMoAiRBAEIAQQAQfiIANgIIIABFBEAgAygCDBAVIANCfzcDKAwBCyADIAMoAiQCfyADKAIMBEAgAygCDAwBCyADKAIgCyADKAIIIAMoAhwQmgE3AxAgAygCDBAVAkAgAykDEEIAUwRAIAMoAggQGwwBCyADKAIkIAMpAxBBAEEDQYCA/I8EEJkBQQBIBEAgAygCJCADKQMQEJgBGiADQn83AygMAgsLIAMgAykDEDcDKAsgAykDKCEEIANBMGokACAEQiCIpwsQACAEpwsRACAAIAGtIAKtQiCGhBCYAQt/AgF/AX4jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADKAIYIAMoAhQgAygCEBBzIgQ3AwgCQCAEQgBTBEAgA0EANgIcDAELIAMgAygCGCADKQMIIAMoAhAgAygCGCgCHBCtATYCHAsgAygCHCEAIANBIGokACAAC8QBAQF/IwBBMGsiASQAIAEgADYCKCABQQA2AiQgAUIANwMYAkADQCABKQMYIAEoAigpAzBUBEAgASABKAIoIAEpAxhBACABQRdqIAFBEGoQlwE2AgwgASgCDEF/RgRAIAFBfzYCLAwDBQJAIAEtABdBA0cNACABKAIQQRB2QYDgA3FBgMACRw0AIAEgASgCJEEBajYCJAsgASABKQMYQgF8NwMYDAILAAsLIAEgASgCJDYCLAsgASgCLCEAIAFBMGokACAACxAAIwAgAGtBcHEiACQAIAALBgAgACQACwQAIwALggECAX8BfiMAQSBrIgQkACAEIAA2AhggBCABNgIUIAQgAjYCECAEIAM2AgwgBCAEKAIYIAQoAhQgBCgCEBBzIgU3AwACQCAFQgBTBEAgBEF/NgIcDAELIAQgBCgCGCAEKQMAIAQoAhAgBCgCDBB/NgIcCyAEKAIcIQAgBEEgaiQAIAAL0EUDBn8BfgJ8IwBB4ABrIgEkACABIAA2AlgCQCABKAJYRQRAIAFBfzYCXAwBCyMAQSBrIgAgASgCWDYCHCAAIAFBQGs2AhggAEEANgIUIABCADcDAAJAIAAoAhwtAChBAXFFBEAgACgCHCgCGCAAKAIcKAIURg0BCyAAQQE2AhQLIABCADcDCANAIAApAwggACgCHCkDMFQEQAJAAkAgACgCHCgCQCAAKQMIp0EEdGooAggNACAAKAIcKAJAIAApAwinQQR0ai0ADEEBcQ0AIAAoAhwoAkAgACkDCKdBBHRqKAIERQ0BIAAoAhwoAkAgACkDCKdBBHRqKAIEKAIARQ0BCyAAQQE2AhQLIAAoAhwoAkAgACkDCKdBBHRqLQAMQQFxRQRAIAAgACkDAEIBfDcDAAsgACAAKQMIQgF8NwMIDAELCyAAKAIYBEAgACgCGCAAKQMANwMACyABIAAoAhQ2AiQgASkDQFAEQAJAIAEoAlgoAgRBCHFFBEAgASgCJEUNAQsCfyABKAJYKAIAIQIjAEEQayIAJAAgACACNgIIAkAgACgCCCgCJEEDRgRAIABBADYCDAwBCyAAKAIIKAIgBEAgACgCCBAxQQBIBEAgAEF/NgIMDAILCyAAKAIIKAIkBEAgACgCCBBnCyAAKAIIQQBCAEEPECFCAFMEQCAAQX82AgwMAQsgACgCCEEDNgIkIABBADYCDAsgACgCDCECIABBEGokACACQQBICwRAAkACfyMAQRBrIgAgASgCWCgCADYCDCMAQRBrIgIgACgCDEEMajYCDCACKAIMKAIAQRZGCwRAIwBBEGsiACABKAJYKAIANgIMIwBBEGsiAiAAKAIMQQxqNgIMIAIoAgwoAgRBLEYNAQsgASgCWEEIaiABKAJYKAIAEBcgAUF/NgJcDAQLCwsgASgCWBA9IAFBADYCXAwBCyABKAIkRQRAIAEoAlgQPSABQQA2AlwMAQsgASkDQCABKAJYKQMwVgRAIAEoAlhBCGpBFEEAEBQgAUF/NgJcDAELIAEgASkDQKdBA3QQGCIANgIoIABFBEAgAUF/NgJcDAELIAFCfzcDOCABQgA3A0ggAUIANwNQA0AgASkDUCABKAJYKQMwVARAAkAgASgCWCgCQCABKQNQp0EEdGooAgBFDQACQCABKAJYKAJAIAEpA1CnQQR0aigCCA0AIAEoAlgoAkAgASkDUKdBBHRqLQAMQQFxDQAgASgCWCgCQCABKQNQp0EEdGooAgRFDQEgASgCWCgCQCABKQNQp0EEdGooAgQoAgBFDQELIAECfiABKQM4IAEoAlgoAkAgASkDUKdBBHRqKAIAKQNIVARAIAEpAzgMAQsgASgCWCgCQCABKQNQp0EEdGooAgApA0gLNwM4CyABKAJYKAJAIAEpA1CnQQR0ai0ADEEBcUUEQCABKQNIIAEpA0BaBEAgASgCKBAVIAEoAlhBCGpBFEEAEBQgAUF/NgJcDAQLIAEoAiggASkDSKdBA3RqIAEpA1A3AwAgASABKQNIQgF8NwNICyABIAEpA1BCAXw3A1AMAQsLIAEpA0ggASkDQFQEQCABKAIoEBUgASgCWEEIakEUQQAQFCABQX82AlwMAQsCQAJ/IwBBEGsiACABKAJYKAIANgIMIAAoAgwpAxhCgIAIg1ALBEAgAUIANwM4DAELIAEpAzhCf1EEQCABQn83AxggAUIANwM4IAFCADcDUANAIAEpA1AgASgCWCkDMFQEQCABKAJYKAJAIAEpA1CnQQR0aigCAARAIAEoAlgoAkAgASkDUKdBBHRqKAIAKQNIIAEpAzhaBEAgASABKAJYKAJAIAEpA1CnQQR0aigCACkDSDcDOCABIAEpA1A3AxgLCyABIAEpA1BCAXw3A1AMAQsLIAEpAxhCf1IEQCABKAJYIQIgASkDGCEHIAEoAlhBCGohAyMAQTBrIgAkACAAIAI2AiQgACAHNwMYIAAgAzYCFCAAIAAoAiQgACkDGCAAKAIUEGUiBzcDCAJAIAdQBEAgAEIANwMoDAELIAAgACgCJCgCQCAAKQMYp0EEdGooAgA2AgQCQCAAKQMIIAApAwggACgCBCkDIHxYBEAgACkDCCAAKAIEKQMgfEL///////////8AWA0BCyAAKAIUQQRBFhAUIABCADcDKAwBCyAAIAAoAgQpAyAgACkDCHw3AwggACgCBC8BDEEIcQRAIAAoAiQoAgAgACkDCEEAECdBAEgEQCAAKAIUIAAoAiQoAgAQFyAAQgA3AygMAgsgACgCJCgCACAAQgQQLkIEUgRAIAAoAhQgACgCJCgCABAXIABCADcDKAwCCyAAKAAAQdCWncAARgRAIAAgACkDCEIEfDcDCAsgACAAKQMIQgx8NwMIIAAoAgRBABBeQQFxBEAgACAAKQMIQgh8NwMICyAAKQMIQv///////////wBWBEAgACgCFEEEQRYQFCAAQgA3AygMAgsLIAAgACkDCDcDKAsgACkDKCEHIABBMGokACABIAc3AzggB1AEQCABKAIoEBUgAUF/NgJcDAQLCwsgASkDOEIAUgRAAn8gASgCWCgCACECIAEpAzghByMAQRBrIgAkACAAIAI2AgggACAHNwMAAkAgACgCCCgCJEEBRgRAIAAoAghBDGpBEkEAEBQgAEF/NgIMDAELIAAoAghBACAAKQMAQREQIUIAUwRAIABBfzYCDAwBCyAAKAIIQQE2AiQgAEEANgIMCyAAKAIMIQIgAEEQaiQAIAJBAEgLBEAgAUIANwM4CwsLIAEpAzhQBEACfyABKAJYKAIAIQIjAEEQayIAJAAgACACNgIIAkAgACgCCCgCJEEBRgRAIAAoAghBDGpBEkEAEBQgAEF/NgIMDAELIAAoAghBAEIAQQgQIUIAUwRAIABBfzYCDAwBCyAAKAIIQQE2AiQgAEEANgIMCyAAKAIMIQIgAEEQaiQAIAJBAEgLBEAgASgCWEEIaiABKAJYKAIAEBcgASgCKBAVIAFBfzYCXAwCCwsgASgCWCgCVCECIwBBEGsiACQAIAAgAjYCDCAAKAIMBEAgACgCDEQAAAAAAAAAADkDGCAAKAIMKAIARAAAAAAAAAAAIAAoAgwoAgwgACgCDCgCBBEWAAsgAEEQaiQAIAFBADYCLCABQgA3A0gDQAJAIAEpA0ggASkDQFoNACABKAJYKAJUIQIgASkDSCIHuiABKQNAuiIIoyEJIwBBIGsiACQAIAAgAjYCHCAAIAk5AxAgACAHQgF8uiAIozkDCCAAKAIcBEAgACgCHCAAKwMQOQMgIAAoAhwgACsDCDkDKCAAKAIcRAAAAAAAAAAAEFYLIABBIGokACABIAEoAiggASkDSKdBA3RqKQMANwNQIAEgASgCWCgCQCABKQNQp0EEdGo2AhACQAJAIAEoAhAoAgBFDQAgASgCECgCACkDSCABKQM4Wg0ADAELIAECf0EBIAEoAhAoAggNABogASgCECgCBARAQQEgASgCECgCBCgCAEEBcQ0BGgsgASgCECgCBAR/IAEoAhAoAgQoAgBBwABxQQBHBUEACwtBAXE2AhQgASgCECgCBEUEQCABKAIQKAIAED8hACABKAIQIAA2AgQgAEUEQCABKAJYQQhqQQ5BABAUIAFBATYCLAwDCwsgASABKAIQKAIENgIMAn8gASgCWCECIAEpA1AhByMAQTBrIgAkACAAIAI2AiggACAHNwMgAkAgACkDICAAKAIoKQMwWgRAIAAoAihBCGpBEkEAEBQgAEF/NgIsDAELIAAgACgCKCgCQCAAKQMgp0EEdGo2AhwCQCAAKAIcKAIABEAgACgCHCgCAC0ABEEBcUUNAQsgAEEANgIsDAELIAAoAhwoAgApA0hCGnxC////////////AFYEQCAAKAIoQQhqQQRBFhAUIABBfzYCLAwBCyAAKAIoKAIAIAAoAhwoAgApA0hCGnxBABAnQQBIBEAgACgCKEEIaiAAKAIoKAIAEBcgAEF/NgIsDAELIAAgACgCKCgCAEIEIABBGGogACgCKEEIahBBIgI2AhQgAkUEQCAAQX82AiwMAQsgACAAKAIUEB07ARIgACAAKAIUEB07ARAgACgCFBBHQQFxRQRAIAAoAhQQFiAAKAIoQQhqQRRBABAUIABBfzYCLAwBCyAAKAIUEBYgAC8BEARAIAAoAigoAgAgAC8BEq1BARAnQQBIBEAgACgCKEEIakEEQbSbASgCABAUIABBfzYCLAwCCyAAQQAgACgCKCgCACAALwEQQQAgACgCKEEIahBgNgIIIAAoAghFBEAgAEF/NgIsDAILIAAoAgggAC8BEEGAAiAAQQxqIAAoAihBCGoQiAFBAXFFBEAgACgCCBAVIABBfzYCLAwCCyAAKAIIEBUgACgCDARAIAAgACgCDBCHATYCDCAAKAIcKAIAKAI0IAAoAgwQiQEhAiAAKAIcKAIAIAI2AjQLCyAAKAIcKAIAQQE6AAQCQCAAKAIcKAIERQ0AIAAoAhwoAgQtAARBAXENACAAKAIcKAIEIAAoAhwoAgAoAjQ2AjQgACgCHCgCBEEBOgAECyAAQQA2AiwLIAAoAiwhAiAAQTBqJAAgAkEASAsEQCABQQE2AiwMAgsgASABKAJYKAIAEDQiBzcDMCAHQgBTBEAgAUEBNgIsDAILIAEoAgwgASkDMDcDSAJAIAEoAhQEQCABQQA2AgggASgCECgCCEUEQCABIAEoAlggASgCWCABKQNQQQhBABCuASIANgIIIABFBEAgAUEBNgIsDAULCwJ/IAEoAlghAgJ/IAEoAggEQCABKAIIDAELIAEoAhAoAggLIQMgASgCDCEEIwBBoAFrIgAkACAAIAI2ApgBIAAgAzYClAEgACAENgKQAQJAIAAoApQBIABBOGoQOEEASARAIAAoApgBQQhqIAAoApQBEBcgAEF/NgKcAQwBCyAAKQM4QsAAg1AEQCAAIAApAzhCwACENwM4IABBADsBaAsCQAJAIAAoApABKAIQQX9HBEAgACgCkAEoAhBBfkcNAQsgAC8BaEUNACAAKAKQASAALwFoNgIQDAELAkACQCAAKAKQASgCEA0AIAApAzhCBINQDQAgACAAKQM4QgiENwM4IAAgACkDUDcDWAwBCyAAIAApAzhC9////w+DNwM4CwsgACkDOEKAAYNQBEAgACAAKQM4QoABhDcDOCAAQQA7AWoLIABBgAI2AiQCQCAAKQM4QgSDUARAIAAgACgCJEGACHI2AiQgAEJ/NwNwDAELIAAoApABIAApA1A3AyggACAAKQNQNwNwAkAgACkDOEIIg1AEQAJAAkACQAJAAkACfwJAIAAoApABKAIQQX9HBEAgACgCkAEoAhBBfkcNAQtBCAwBCyAAKAKQASgCEAtB//8DcQ4NAgMDAwMDAwMBAwMDAAMLIABClMLk8w83AxAMAwsgAEKDg7D/DzcDEAwCCyAAQv////8PNwMQDAELIABCADcDEAsgACkDUCAAKQMQVgRAIAAgACgCJEGACHI2AiQLDAELIAAoApABIAApA1g3AyALCyAAIAAoApgBKAIAEDQiBzcDiAEgB0IAUwRAIAAoApgBQQhqIAAoApgBKAIAEBcgAEF/NgKcAQwBCyAAKAKQASICIAIvAQxB9/8DcTsBDCAAIAAoApgBIAAoApABIAAoAiQQUCICNgIoIAJBAEgEQCAAQX82ApwBDAELIAAgAC8BaAJ/AkAgACgCkAEoAhBBf0cEQCAAKAKQASgCEEF+Rw0BC0EIDAELIAAoApABKAIQC0H//wNxRzoAIiAAIAAtACJBAXEEfyAALwFoQQBHBUEAC0EBcToAISAAIAAvAWgEfyAALQAhBUEBC0EBcToAICAAIAAtACJBAXEEfyAAKAKQASgCEEEARwVBAAtBAXE6AB8gAAJ/QQEgAC0AIkEBcQ0AGkEBIAAoApABKAIAQYABcQ0AGiAAKAKQAS8BUiAALwFqRwtBAXE6AB4gACAALQAeQQFxBH8gAC8BakEARwVBAAtBAXE6AB0gACAALQAeQQFxBH8gACgCkAEvAVJBAEcFQQALQQFxOgAcIAAgACgClAE2AjQjAEEQayICIAAoAjQ2AgwgAigCDCICIAIoAjBBAWo2AjAgAC0AHUEBcQRAIAAgAC8BakEAEHwiAjYCDCACRQRAIAAoApgBQQhqQRhBABAUIAAoAjQQGyAAQX82ApwBDAILIAAgACgCmAEgACgCNCAALwFqQQAgACgCmAEoAhwgACgCDBEFACICNgIwIAJFBEAgACgCNBAbIABBfzYCnAEMAgsgACgCNBAbIAAgACgCMDYCNAsgAC0AIUEBcQRAIAAgACgCmAEgACgCNCAALwFoELABIgI2AjAgAkUEQCAAKAI0EBsgAEF/NgKcAQwCCyAAKAI0EBsgACAAKAIwNgI0CyAALQAgQQFxBEAgACAAKAKYASAAKAI0QQAQrwEiAjYCMCACRQRAIAAoAjQQGyAAQX82ApwBDAILIAAoAjQQGyAAIAAoAjA2AjQLIAAtAB9BAXEEQCAAKAKYASEDIAAoAjQhBCAAKAKQASgCECEFIAAoApABLwFQIQYjAEEQayICJAAgAiADNgIMIAIgBDYCCCACIAU2AgQgAiAGNgIAIAIoAgwgAigCCCACKAIEQQEgAigCABCyASEDIAJBEGokACAAIAMiAjYCMCACRQRAIAAoAjQQGyAAQX82ApwBDAILIAAoAjQQGyAAIAAoAjA2AjQLIAAtABxBAXEEQCAAQQA2AgQCQCAAKAKQASgCVARAIAAgACgCkAEoAlQ2AgQMAQsgACgCmAEoAhwEQCAAIAAoApgBKAIcNgIECwsgACAAKAKQAS8BUkEBEHwiAjYCCCACRQRAIAAoApgBQQhqQRhBABAUIAAoAjQQGyAAQX82ApwBDAILIAAgACgCmAEgACgCNCAAKAKQAS8BUkEBIAAoAgQgACgCCBEFACICNgIwIAJFBEAgACgCNBAbIABBfzYCnAEMAgsgACgCNBAbIAAgACgCMDYCNAsgACAAKAKYASgCABA0Igc3A4ABIAdCAFMEQCAAKAKYAUEIaiAAKAKYASgCABAXIABBfzYCnAEMAQsgACgCmAEhAyAAKAI0IQQgACkDcCEHIwBBwMAAayICJAAgAiADNgK4QCACIAQ2ArRAIAIgBzcDqEACQCACKAK0QBBJQQBIBEAgAigCuEBBCGogAigCtEAQFyACQX82ArxADAELIAJBADYCDCACQgA3AxADQAJAIAIgAigCtEAgAkEgakKAwAAQLiIHNwMYIAdCAFcNACACKAK4QCACQSBqIAIpAxgQNUEASARAIAJBfzYCDAUgAikDGEKAwABSDQIgAigCuEAoAlRFDQIgAikDqEBCAFcNAiACIAIpAxggAikDEHw3AxAgAigCuEAoAlQgAikDELkgAikDqEC5oxBWDAILCwsgAikDGEIAUwRAIAIoArhAQQhqIAIoArRAEBcgAkF/NgIMCyACKAK0QBAxGiACIAIoAgw2ArxACyACKAK8QCEDIAJBwMAAaiQAIAAgAzYCLCAAKAI0IABBOGoQOEEASARAIAAoApgBQQhqIAAoAjQQFyAAQX82AiwLIAAoAjQhAyMAQRBrIgIkACACIAM2AggCQANAIAIoAggEQCACKAIIKQMYQoCABINCAFIEQCACIAIoAghBAEIAQRAQITcDACACKQMAQgBTBEAgAkH/AToADwwECyACKQMAQgNVBEAgAigCCEEMakEUQQAQFCACQf8BOgAPDAQLIAIgAikDADwADwwDBSACIAIoAggoAgA2AggMAgsACwsgAkEAOgAPCyACLAAPIQMgAkEQaiQAIAAgAyICOgAjIAJBGHRBGHVBAEgEQCAAKAKYAUEIaiAAKAI0EBcgAEF/NgIsCyAAKAI0EBsgACgCLEEASARAIABBfzYCnAEMAQsgACAAKAKYASgCABA0Igc3A3ggB0IAUwRAIAAoApgBQQhqIAAoApgBKAIAEBcgAEF/NgKcAQwBCyAAKAKYASgCACAAKQOIARCbAUEASARAIAAoApgBQQhqIAAoApgBKAIAEBcgAEF/NgKcAQwBCyAAKQM4QuQAg0LkAFIEQCAAKAKYAUEIakEUQQAQFCAAQX82ApwBDAELIAAoApABKAIAQSBxRQRAAkAgACkDOEIQg0IAUgRAIAAoApABIAAoAmA2AhQMAQsgACgCkAFBFGoQARoLCyAAKAKQASAALwFoNgIQIAAoApABIAAoAmQ2AhggACgCkAEgACkDUDcDKCAAKAKQASAAKQN4IAApA4ABfTcDICAAKAKQASAAKAKQAS8BDEH5/wNxIAAtACNBAXRyOwEMIAAoApABIQMgACgCJEGACHFBAEchBCMAQRBrIgIkACACIAM2AgwgAiAEOgALAkAgAigCDCgCEEEORgRAIAIoAgxBPzsBCgwBCyACKAIMKAIQQQxGBEAgAigCDEEuOwEKDAELAkAgAi0AC0EBcUUEQCACKAIMQQAQXkEBcUUNAQsgAigCDEEtOwEKDAELAkAgAigCDCgCEEEIRwRAIAIoAgwvAVJBAUcNAQsgAigCDEEUOwEKDAELIAIgAigCDCgCMBBTIgM7AQggA0H//wNxBEAgAigCDCgCMCgCACACLwEIQQFrai0AAEEvRgRAIAIoAgxBFDsBCgwCCwsgAigCDEEKOwEKCyACQRBqJAAgACAAKAKYASAAKAKQASAAKAIkEFAiAjYCLCACQQBIBEAgAEF/NgKcAQwBCyAAKAIoIAAoAixHBEAgACgCmAFBCGpBFEEAEBQgAEF/NgKcAQwBCyAAKAKYASgCACAAKQN4EJsBQQBIBEAgACgCmAFBCGogACgCmAEoAgAQFyAAQX82ApwBDAELIABBADYCnAELIAAoApwBIQIgAEGgAWokACACQQBICwRAIAFBATYCLCABKAIIBEAgASgCCBAbCwwECyABKAIIBEAgASgCCBAbCwwBCyABKAIMIgAgAC8BDEH3/wNxOwEMIAEoAlggASgCDEGAAhBQQQBIBEAgAUEBNgIsDAMLIAEgASgCWCABKQNQIAEoAlhBCGoQZSIHNwMAIAdQBEAgAUEBNgIsDAMLIAEoAlgoAgAgASkDAEEAECdBAEgEQCABKAJYQQhqIAEoAlgoAgAQFyABQQE2AiwMAwsCfyABKAJYIQIgASgCDCkDICEHIwBBoMAAayIAJAAgACACNgKYQCAAIAc3A5BAIAAgACkDkEC6OQMAAkADQCAAKQOQQFBFBEAgACAAKQOQQEKAwABWBH5CgMAABSAAKQOQQAs+AgwgACgCmEAoAgAgAEEQaiAAKAIMrSAAKAKYQEEIahBhQQBIBEAgAEF/NgKcQAwDCyAAKAKYQCAAQRBqIAAoAgytEDVBAEgEQCAAQX82ApxADAMFIAAgACkDkEAgADUCDH03A5BAIAAoAphAKAJUIAArAwAgACkDkEC6oSAAKwMAoxBWDAILAAsLIABBADYCnEALIAAoApxAIQIgAEGgwABqJAAgAkEASAsEQCABQQE2AiwMAwsLCyABIAEpA0hCAXw3A0gMAQsLIAEoAixFBEACfyABKAJYIQAgASgCKCEDIAEpA0AhByMAQTBrIgIkACACIAA2AiggAiADNgIkIAIgBzcDGCACIAIoAigoAgAQNCIHNwMQAkAgB0IAUwRAIAJBfzYCLAwBCyACKAIoIQMgAigCJCEEIAIpAxghByMAQcABayIAJAAgACADNgK0ASAAIAQ2ArABIAAgBzcDqAEgACAAKAK0ASgCABA0Igc3AyACQCAHQgBTBEAgACgCtAFBCGogACgCtAEoAgAQFyAAQn83A7gBDAELIAAgACkDIDcDoAEgAEEAOgAXIABCADcDGANAIAApAxggACkDqAFUBEAgACAAKAK0ASgCQCAAKAKwASAAKQMYp0EDdGopAwCnQQR0ajYCDCAAIAAoArQBAn8gACgCDCgCBARAIAAoAgwoAgQMAQsgACgCDCgCAAtBgAQQUCIDNgIQIANBAEgEQCAAQn83A7gBDAMLIAAoAhAEQCAAQQE6ABcLIAAgACkDGEIBfDcDGAwBCwsgACAAKAK0ASgCABA0Igc3AyAgB0IAUwRAIAAoArQBQQhqIAAoArQBKAIAEBcgAEJ/NwO4AQwBCyAAIAApAyAgACkDoAF9NwOYAQJAIAApA6ABQv////8PWARAIAApA6gBQv//A1gNAQsgAEEBOgAXCyAAIABBMGpC4gAQKSIDNgIsIANFBEAgACgCtAFBCGpBDkEAEBQgAEJ/NwO4AQwBCyAALQAXQQFxBEAgACgCLEHnEkEEEEAgACgCLEIsEC0gACgCLEEtEB8gACgCLEEtEB8gACgCLEEAECAgACgCLEEAECAgACgCLCAAKQOoARAtIAAoAiwgACkDqAEQLSAAKAIsIAApA5gBEC0gACgCLCAAKQOgARAtIAAoAixB4hJBBBBAIAAoAixBABAgIAAoAiwgACkDoAEgACkDmAF8EC0gACgCLEEBECALIAAoAixB7BJBBBBAIAAoAixBABAgIAAoAiwgACkDqAFC//8DWgR+Qv//AwUgACkDqAELp0H//wNxEB8gACgCLCAAKQOoAUL//wNaBH5C//8DBSAAKQOoAQunQf//A3EQHyAAKAIsIAApA5gBQv////8PWgR/QX8FIAApA5gBpwsQICAAKAIsIAApA6ABQv////8PWgR/QX8FIAApA6ABpwsQICAAAn8gACgCtAEtAChBAXEEQCAAKAK0ASgCJAwBCyAAKAK0ASgCIAs2ApQBIAAoAiwCfyAAKAKUAQRAIAAoApQBLwEEDAELQQALQf//A3EQHwJ/IwBBEGsiAyAAKAIsNgIMIAMoAgwtAABBAXFFCwRAIAAoArQBQQhqQRRBABAUIAAoAiwQFiAAQn83A7gBDAELIAAoArQBAn8jAEEQayIDIAAoAiw2AgwgAygCDCgCBAsCfiMAQRBrIgMgACgCLDYCDAJ+IAMoAgwtAABBAXEEQCADKAIMKQMQDAELQgALCxA1QQBIBEAgACgCLBAWIABCfzcDuAEMAQsgACgCLBAWIAAoApQBBEAgACgCtAEgACgClAEoAgAgACgClAEvAQStEDVBAEgEQCAAQn83A7gBDAILCyAAIAApA5gBNwO4AQsgACkDuAEhByAAQcABaiQAIAIgBzcDACAHQgBTBEAgAkF/NgIsDAELIAIgAigCKCgCABA0Igc3AwggB0IAUwRAIAJBfzYCLAwBCyACQQA2AiwLIAIoAiwhACACQTBqJAAgAEEASAsEQCABQQE2AiwLCyABKAIoEBUgASgCLEUEQAJ/IAEoAlgoAgAhAiMAQRBrIgAkACAAIAI2AggCQCAAKAIIKAIkQQFHBEAgACgCCEEMakESQQAQFCAAQX82AgwMAQsgACgCCCgCIEEBSwRAIAAoAghBDGpBHUEAEBQgAEF/NgIMDAELIAAoAggoAiAEQCAAKAIIEDFBAEgEQCAAQX82AgwMAgsLIAAoAghBAEIAQQkQIUIAUwRAIAAoAghBAjYCJCAAQX82AgwMAQsgACgCCEEANgIkIABBADYCDAsgACgCDCECIABBEGokACACCwRAIAEoAlhBCGogASgCWCgCABAXIAFBATYCLAsLIAEoAlgoAlQhAiMAQRBrIgAkACAAIAI2AgwgACgCDEQAAAAAAADwPxBWIABBEGokACABKAIsBEAgASgCWCgCABBnIAFBfzYCXAwBCyABKAJYED0gAUEANgJcCyABKAJcIQAgAUHgAGokACAAC9IOAgd/An4jAEEwayIDJAAgAyAANgIoIAMgATYCJCADIAI2AiAjAEEQayIAIANBCGo2AgwgACgCDEEANgIAIAAoAgxBADYCBCAAKAIMQQA2AgggAygCKCEAIwBBIGsiBCQAIAQgADYCGCAEQgA3AxAgBEJ/NwMIIAQgA0EIajYCBAJAAkAgBCgCGARAIAQpAwhCf1kNAQsgBCgCBEESQQAQFCAEQQA2AhwMAQsgBCgCGCEAIAQpAxAhCiAEKQMIIQsgBCgCBCEBIwBBoAFrIgIkACACIAA2ApgBIAJBADYClAEgAiAKNwOIASACIAs3A4ABIAJBADYCfCACIAE2AngCQAJAIAIoApQBDQAgAigCmAENACACKAJ4QRJBABAUIAJBADYCnAEMAQsgAikDgAFCAFMEQCACQgA3A4ABCwJAIAIpA4gBQv///////////wBYBEAgAikDiAEgAikDiAEgAikDgAF8WA0BCyACKAJ4QRJBABAUIAJBADYCnAEMAQsgAkGIARAYIgA2AnQgAEUEQCACKAJ4QQ5BABAUIAJBADYCnAEMAQsgAigCdEEANgIYIAIoApgBBEAgAigCmAEiABArQQFqIgEQGCIFBH8gBSAAIAEQGQVBAAshACACKAJ0IAA2AhggAEUEQCACKAJ4QQ5BABAUIAIoAnQQFSACQQA2ApwBDAILCyACKAJ0IAIoApQBNgIcIAIoAnQgAikDiAE3A2ggAigCdCACKQOAATcDcAJAIAIoAnwEQCACKAJ0IgAgAigCfCIBKQMANwMgIAAgASkDMDcDUCAAIAEpAyg3A0ggACABKQMgNwNAIAAgASkDGDcDOCAAIAEpAxA3AzAgACABKQMINwMoIAIoAnRBADYCKCACKAJ0IgAgACkDIEL+////D4M3AyAMAQsgAigCdEEgahA7CyACKAJ0KQNwQgBSBEAgAigCdCACKAJ0KQNwNwM4IAIoAnQiACAAKQMgQgSENwMgCyMAQRBrIgAgAigCdEHYAGo2AgwgACgCDEEANgIAIAAoAgxBADYCBCAAKAIMQQA2AgggAigCdEEANgKAASACKAJ0QQA2AoQBIwBBEGsiACACKAJ0NgIMIAAoAgxBADYCACAAKAIMQQA2AgQgACgCDEEANgIIIAJBfzYCBCACQQc2AgBBDiACEDZCP4QhCiACKAJ0IAo3AxACQCACKAJ0KAIYBEAgAiACKAJ0KAIYIAJBGGoQpgFBAE46ABcgAi0AF0EBcUUEQAJAIAIoAnQpA2hQRQ0AIAIoAnQpA3BQRQ0AIAIoAnRC//8DNwMQCwsMAQsCQCACKAJ0KAIcIgAoAkxBAEgNAAsgACgCPCEAQQAhBSMAQSBrIgYkAAJ/AkAgACACQRhqIgkQCiIBQXhGBEAjAEEgayIHJAAgACAHQQhqEAkiCAR/QbSbASAINgIAQQAFQQELIQggB0EgaiQAIAgNAQsgAUGBYE8Ef0G0mwFBACABazYCAEF/BSABCwwBCwNAIAUgBmoiASAFQccSai0AADoAACAFQQ5HIQcgBUEBaiEFIAcNAAsCQCAABEBBDyEFIAAhAQNAIAFBCk8EQCAFQQFqIQUgAUEKbiEBDAELCyAFIAZqQQA6AAADQCAGIAVBAWsiBWogACAAQQpuIgFBCmxrQTByOgAAIABBCUshByABIQAgBw0ACwwBCyABQTA6AAAgBkEAOgAPCyAGIAkQAiIAQYFgTwR/QbSbAUEAIABrNgIAQX8FIAALCyEAIAZBIGokACACIABBAE46ABcLAkAgAi0AF0EBcUUEQCACKAJ0QdgAakEFQbSbASgCABAUDAELIAIoAnQpAyBCEINQBEAgAigCdCACKAJYNgJIIAIoAnQiACAAKQMgQhCENwMgCyACKAIkQYDgA3FBgIACRgRAIAIoAnRC/4EBNwMQIAIpA0AgAigCdCkDaCACKAJ0KQNwfFQEQCACKAJ4QRJBABAUIAIoAnQoAhgQFSACKAJ0EBUgAkEANgKcAQwDCyACKAJ0KQNwUARAIAIoAnQgAikDQCACKAJ0KQNofTcDOCACKAJ0IgAgACkDIEIEhDcDIAJAIAIoAnQoAhhFDQAgAikDiAFQRQ0AIAIoAnRC//8DNwMQCwsLCyACKAJ0IgAgACkDEEKAgBCENwMQIAJBHiACKAJ0IAIoAngQlAEiADYCcCAARQRAIAIoAnQoAhgQFSACKAJ0EBUgAkEANgKcAQwBCyACIAIoAnA2ApwBCyACKAKcASEAIAJBoAFqJAAgBCAANgIcCyAEKAIcIQAgBEEgaiQAIAMgADYCGAJAIABFBEAgAygCICADQQhqEJ0BIANBCGoQNyADQQA2AiwMAQsgAyADKAIYIAMoAiQgA0EIahCcASIANgIcIABFBEAgAygCGBAbIAMoAiAgA0EIahCdASADQQhqEDcgA0EANgIsDAELIANBCGoQNyADIAMoAhw2AiwLIAMoAiwhACADQTBqJAAgAAsYAQF/IwBBEGsiASAANgIMIAEoAgxBDGoLkh8BBn8jAEHgAGsiBCQAIAQgADYCVCAEIAE2AlAgBCACNwNIIAQgAzYCRCAEIAQoAlQ2AkAgBCAEKAJQNgI8AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBCgCRA4TBgcCDAQFCg4BAwkQCw8NCBERABELIARCADcDWAwRCyAEKAJAKAIYRQRAIAQoAkBBHEEAEBQgBEJ/NwNYDBELIAQoAkAhACMAQYABayIBJAAgASAANgJ4IAEgASgCeCgCGBArQQhqEBgiADYCdAJAIABFBEAgASgCeEEOQQAQFCABQX82AnwMAQsCQCABKAJ4KAIYIAFBEGoQpgFFBEAgASABKAIcNgJsDAELIAFBfzYCbAsgASgCdCEAIAEgASgCeCgCGDYCACAAQasSIAEQcCABKAJ0IQMgASgCbCEHIwBBMGsiACQAIAAgAzYCKCAAIAc2AiQgAEEANgIQIAAgACgCKCAAKAIoECtqNgIYIAAgACgCGEEBazYCHANAIAAoAhwgACgCKE8EfyAAKAIcLAAAQdgARgVBAAtBAXEEQCAAIAAoAhBBAWo2AhAgACAAKAIcQQFrNgIcDAELCwJAIAAoAhBFBEBBtJsBQRw2AgAgAEF/NgIsDAELIAAgACgCHEEBajYCHANAIwBBEGsiByQAAkACfyMAQRBrIgMkACADIAdBCGo2AgggA0EEOwEGIANB6AtBAEEAEG0iBTYCAAJAIAVBAEgEQCADQQA6AA8MAQsCfyADKAIAIQYgAygCCCEIIAMvAQYhCSMAQRBrIgUkACAFIAk2AgwgBSAINgIIIAYgBUEIakEBIAVBBGoQBiIGBH9BtJsBIAY2AgBBfwVBAAshBiAFKAIEIQggBUEQaiQAIAMvAQZBfyAIIAYbRwsEQCADKAIAEGwgA0EAOgAPDAELIAMoAgAQbCADQQE6AA8LIAMtAA9BAXEhBSADQRBqJAAgBQsEQCAHIAcoAgg2AgwMAQtBwKABLQAAQQFxRQRAQQAQASEGAkBByJkBKAIAIgNFBEBBzJkBKAIAIAY2AgAMAQtB0JkBQQNBA0EBIANBB0YbIANBH0YbNgIAQbygAUEANgIAQcyZASgCACEFIANBAU4EQCAGrSECQQAhBgNAIAUgBkECdGogAkKt/tXk1IX9qNgAfkIBfCICQiCIPgIAIAZBAWoiBiADRw0ACwsgBSAFKAIAQQFyNgIACwtBzJkBKAIAIQMCQEHImQEoAgAiBUUEQCADIAMoAgBB7ZyZjgRsQbngAGpB/////wdxIgM2AgAMAQsgA0HQmQEoAgAiBkECdGoiCCAIKAIAIANBvKABKAIAIghBAnRqKAIAaiIDNgIAQbygAUEAIAhBAWoiCCAFIAhGGzYCAEHQmQFBACAGQQFqIgYgBSAGRhs2AgAgA0EBdiEDCyAHIAM2AgwLIAcoAgwhAyAHQRBqJAAgACADNgIMIAAgACgCHDYCFANAIAAoAhQgACgCGEkEQCAAIAAoAgxBJHA6AAsCfyAALAALQQpIBEAgACwAC0EwagwBCyAALAALQdcAagshAyAAIAAoAhQiB0EBajYCFCAHIAM6AAAgACAAKAIMQSRuNgIMDAELCyAAKAIoIQMgACAAKAIkQX9GBH9BtgMFIAAoAiQLNgIAIAAgA0HCgSAgABBtIgM2AiAgA0EATgRAIAAoAiRBf0cEQCAAKAIoIAAoAiQQDyIDQYFgTwR/QbSbAUEAIANrNgIAQQAFIAMLGgsgACAAKAIgNgIsDAILQbSbASgCAEEURg0ACyAAQX82AiwLIAAoAiwhAyAAQTBqJAAgASADIgA2AnAgAEF/RgRAIAEoAnhBDEG0mwEoAgAQFCABKAJ0EBUgAUF/NgJ8DAELIAEgASgCcEGjEhChASIANgJoIABFBEAgASgCeEEMQbSbASgCABAUIAEoAnAQbCABKAJ0EG4aIAEoAnQQFSABQX82AnwMAQsgASgCeCABKAJoNgKEASABKAJ4IAEoAnQ2AoABIAFBADYCfAsgASgCfCEAIAFBgAFqJAAgBCAArDcDWAwQCyAEKAJAKAIYBEAgBCgCQCgCHBBVGiAEKAJAQQA2AhwLIARCADcDWAwPCyAEKAJAKAKEARBVQQBIBEAgBCgCQEEANgKEASAEKAJAQQZBtJsBKAIAEBQLIAQoAkBBADYChAEgBCgCQCgCgAEgBCgCQCgCGBAIIgBBgWBPBH9BtJsBQQAgAGs2AgBBfwUgAAtBAEgEQCAEKAJAQQJBtJsBKAIAEBQgBEJ/NwNYDA8LIAQoAkAoAoABEBUgBCgCQEEANgKAASAEQgA3A1gMDgsgBCAEKAJAIAQoAlAgBCkDSBBCNwNYDA0LIAQoAkAoAhgQFSAEKAJAKAKAARAVIAQoAkAoAhwEQCAEKAJAKAIcEFUaCyAEKAJAEBUgBEIANwNYDAwLIAQoAkAoAhgEQCAEKAJAKAIYIQEjAEEgayIAJAAgACABNgIYIABBADoAFyAAQYCAIDYCDAJAIAAtABdBAXEEQCAAIAAoAgxBAnI2AgwMAQsgACAAKAIMNgIMCyAAKAIYIQEgACgCDCEDIABBtgM2AgAgACABIAMgABBtIgE2AhACQCABQQBIBEAgAEEANgIcDAELIAAgACgCEEGjEkGgEiAALQAXQQFxGxChASIBNgIIIAFFBEAgAEEANgIcDAELIAAgACgCCDYCHAsgACgCHCEBIABBIGokACAEKAJAIAE2AhwgAUUEQCAEKAJAQQtBtJsBKAIAEBQgBEJ/NwNYDA0LCyAEKAJAKQNoQgBSBEAgBCgCQCgCHCAEKAJAKQNoIAQoAkAQnwFBAEgEQCAEQn83A1gMDQsLIAQoAkBCADcDeCAEQgA3A1gMCwsCQCAEKAJAKQNwQgBSBEAgBCAEKAJAKQNwIAQoAkApA3h9NwMwIAQpAzAgBCkDSFYEQCAEIAQpA0g3AzALDAELIAQgBCkDSDcDMAsgBCkDMEL/////D1YEQCAEQv////8PNwMwCyAEAn8gBCgCPCEHIAQpAzCnIQAgBCgCQCgCHCIDKAJMGiADIAMtAEoiAUEBayABcjoASiADKAIIIAMoAgQiBWsiAUEBSAR/IAAFIAcgBSABIAAgACABSxsiARAZGiADIAMoAgQgAWo2AgQgASAHaiEHIAAgAWsLIgEEQANAAkACfyADIAMtAEoiBUEBayAFcjoASiADKAIUIAMoAhxLBEAgA0EAQQAgAygCJBEBABoLIANBADYCHCADQgA3AxAgAygCACIFQQRxBEAgAyAFQSByNgIAQX8MAQsgAyADKAIsIAMoAjBqIgY2AgggAyAGNgIEIAVBG3RBH3ULRQRAIAMgByABIAMoAiARAQAiBUEBakEBSw0BCyAAIAFrDAMLIAUgB2ohByABIAVrIgENAAsLIAALIgA2AiwgAEUEQAJ/IAQoAkAoAhwiACgCTEF/TARAIAAoAgAMAQsgACgCAAtBBXZBAXEEQCAEKAJAQQVBtJsBKAIAEBQgBEJ/NwNYDAwLCyAEKAJAIgAgACkDeCAEKAIsrXw3A3ggBCAEKAIsrTcDWAwKCyAEKAJAKAIYEG5BAEgEQCAEKAJAQRZBtJsBKAIAEBQgBEJ/NwNYDAoLIARCADcDWAwJCyAEKAJAKAKEAQRAIAQoAkAoAoQBEFUaIAQoAkBBADYChAELIAQoAkAoAoABEG4aIAQoAkAoAoABEBUgBCgCQEEANgKAASAEQgA3A1gMCAsgBAJ/IAQpA0hCEFQEQCAEKAJAQRJBABAUQQAMAQsgBCgCUAs2AhggBCgCGEUEQCAEQn83A1gMCAsgBEEBNgIcAkACQAJAAkACQCAEKAIYKAIIDgMAAgEDCyAEIAQoAhgpAwA3AyAMAwsCQCAEKAJAKQNwUARAIAQoAkAoAhwgBCgCGCkDAEECIAQoAkAQa0EASARAIARCfzcDWAwNCyAEIAQoAkAoAhwQowEiAjcDICACQgBTBEAgBCgCQEEEQbSbASgCABAUIARCfzcDWAwNCyAEIAQpAyAgBCgCQCkDaH03AyAgBEEANgIcDAELIAQgBCgCQCkDcCAEKAIYKQMAfDcDIAsMAgsgBCAEKAJAKQN4IAQoAhgpAwB8NwMgDAELIAQoAkBBEkEAEBQgBEJ/NwNYDAgLAkACQCAEKQMgQgBTDQAgBCgCQCkDcEIAUgRAIAQpAyAgBCgCQCkDcFYNAQsgBCgCQCkDaCAEKQMgIAQoAkApA2h8WA0BCyAEKAJAQRJBABAUIARCfzcDWAwICyAEKAJAIAQpAyA3A3ggBCgCHARAIAQoAkAoAhwgBCgCQCkDeCAEKAJAKQNofCAEKAJAEJ8BQQBIBEAgBEJ/NwNYDAkLCyAEQgA3A1gMBwsgBAJ/IAQpA0hCEFQEQCAEKAJAQRJBABAUQQAMAQsgBCgCUAs2AhQgBCgCFEUEQCAEQn83A1gMBwsgBCgCQCgChAEgBCgCFCkDACAEKAIUKAIIIAQoAkAQa0EASARAIARCfzcDWAwHCyAEQgA3A1gMBgsgBCkDSEI4VARAIARCfzcDWAwGCwJ/IwBBEGsiACAEKAJAQdgAajYCDCAAKAIMKAIACwRAIAQoAkACfyMAQRBrIgAgBCgCQEHYAGo2AgwgACgCDCgCAAsCfyMAQRBrIgAgBCgCQEHYAGo2AgwgACgCDCgCBAsQFCAEQn83A1gMBgsgBCgCUCIAIAQoAkAiASkAIDcAACAAIAEpAFA3ADAgACABKQBINwAoIAAgASkAQDcAICAAIAEpADg3ABggACABKQAwNwAQIAAgASkAKDcACCAEQjg3A1gMBQsgBCAEKAJAKQMQNwNYDAQLIAQgBCgCQCkDeDcDWAwDCyAEIAQoAkAoAoQBEKMBNwMIIAQpAwhCAFMEQCAEKAJAQR5BtJsBKAIAEBQgBEJ/NwNYDAMLIAQgBCkDCDcDWAwCCyAEKAJAKAKEASIAKAJMQQBOGiAAIAAoAgBBT3E2AgAgBAJ/IAQoAlAhASAEKQNIpyIAIAACfyAEKAJAKAKEASIDKAJMQX9MBEAgASAAIAMQcgwBCyABIAAgAxByCyIBRg0AGiABCzYCBAJAIAQpA0ggBCgCBK1RBEACfyAEKAJAKAKEASIAKAJMQX9MBEAgACgCAAwBCyAAKAIAC0EFdkEBcUUNAQsgBCgCQEEGQbSbASgCABAUIARCfzcDWAwCCyAEIAQoAgStNwNYDAELIAQoAkBBHEEAEBQgBEJ/NwNYCyAEKQNYIQIgBEHgAGokACACCwkAIAAoAjwQBQvkAQEEfyMAQSBrIgMkACADIAE2AhAgAyACIAAoAjAiBEEAR2s2AhQgACgCLCEFIAMgBDYCHCADIAU2AhhBfyEEAkACQCAAKAI8IANBEGpBAiADQQxqEAYiBQR/QbSbASAFNgIAQX8FQQALRQRAIAMoAgwiBEEASg0BCyAAIAAoAgAgBEEwcUEQc3I2AgAMAQsgBCADKAIUIgZNDQAgACAAKAIsIgU2AgQgACAFIAQgBmtqNgIIIAAoAjAEQCAAIAVBAWo2AgQgASACakEBayAFLQAAOgAACyACIQQLIANBIGokACAEC/QCAQd/IwBBIGsiAyQAIAMgACgCHCIFNgIQIAAoAhQhBCADIAI2AhwgAyABNgIYIAMgBCAFayIBNgIUIAEgAmohBUECIQcgA0EQaiEBAn8CQAJAIAAoAjwgA0EQakECIANBDGoQAyIEBH9BtJsBIAQ2AgBBfwVBAAtFBEADQCAFIAMoAgwiBEYNAiAEQX9MDQMgASAEIAEoAgQiCEsiBkEDdGoiCSAEIAhBACAGG2siCCAJKAIAajYCACABQQxBBCAGG2oiCSAJKAIAIAhrNgIAIAUgBGshBSAAKAI8IAFBCGogASAGGyIBIAcgBmsiByADQQxqEAMiBAR/QbSbASAENgIAQX8FQQALRQ0ACwsgBUF/Rw0BCyAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQIAIMAQsgAEEANgIcIABCADcDECAAIAAoAgBBIHI2AgBBACAHQQJGDQAaIAIgASgCBGsLIQAgA0EgaiQAIAALUgEBfyMAQRBrIgMkACAAKAI8IAGnIAFCIIinIAJB/wFxIANBCGoQDSIABH9BtJsBIAA2AgBBfwVBAAshACADKQMIIQEgA0EQaiQAQn8gASAAGwtFAEGgmwFCADcDAEGYmwFCADcDAEGQmwFCADcDAEGImwFCADcDAEGAmwFCADcDAEH4mgFCADcDAEHwmgFCADcDAEHwmgEL1QQBBX8jAEGwAWsiASQAIAEgADYCqAEgASgCqAEQNwJAAkAgASgCqAEoAgBBAE4EQCABKAKoASgCAEGAFCgCAEgNAQsgASABKAKoASgCADYCECABQSBqQY8SIAFBEGoQcCABQQA2AqQBIAEgAUEgajYCoAEMAQsgASABKAKoASgCAEECdEGAE2ooAgA2AqQBAkACQAJAAkAgASgCqAEoAgBBAnRBkBRqKAIAQQFrDgIAAQILIAEoAqgBKAIEIQJBkJkBKAIAIQRBACEAAkACQANAIAIgAEGgiAFqLQAARwRAQdcAIQMgAEEBaiIAQdcARw0BDAILCyAAIgMNAEGAiQEhAgwBC0GAiQEhAANAIAAtAAAhBSAAQQFqIgIhACAFDQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQKwJ/IAEoAqQBBEAgASgCpAEQK0ECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEHAgASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMIQgSGIAgpAwAiA0I8iIQhAiAIKQMQIAgpAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIAhBIGokACACIAZCgICAgICAgICAf4OEvws5AwALrRcDEn8CfgF8IwBBsARrIgkkACAJQQA2AiwCQCABvSIYQn9XBEBBASESQa4IIRMgAZoiAb0hGAwBCyAEQYAQcQRAQQEhEkGxCCETDAELQbQIQa8IIARBAXEiEhshEyASRSEXCwJAIBhCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiASQQNqIg0gBEH//3txECYgACATIBIQIiAAQeQLQbUSIAVBIHEiAxtBjw1BuRIgAxsgASABYhtBAxAiDAELIAlBEGohEAJAAn8CQCABIAlBLGoQqQEiASABoCIBRAAAAAAAAAAAYgRAIAkgCSgCLCIGQQFrNgIsIAVBIHIiFEHhAEcNAQwDCyAFQSByIhRB4QBGDQIgCSgCLCELQQYgAyADQQBIGwwBCyAJIAZBHWsiCzYCLCABRAAAAAAAALBBoiEBQQYgAyADQQBIGwshCiAJQTBqIAlB0AJqIAtBAEgbIg4hBwNAIAcCfyABRAAAAAAAAPBBYyABRAAAAAAAAAAAZnEEQCABqwwBC0EACyIDNgIAIAdBBGohByABIAO4oUQA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HCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCGCABKAIUSQtBAXENAAsgASgCKEGCAiABKAIUIAEoAhhrazYCYCABKAIoKAJgIAEoAigoAnRLBEAgASgCKCABKAIoKAJ0NgJgCwsLAkAgASgCKCgCYEEDTwRAIAEgASgCKCgCYEEDazoAEyABQQE7ARAgASgCKCICKAKkLSACKAKgLUEBdGogAS8BEDsBACABLQATIQMgASgCKCICKAKYLSEEIAIgAigCoC0iAkEBajYCoC0gAiAEaiADOgAAIAEgAS8BEEEBazsBECABKAIoIAEtABNB0N0Aai0AAEECdGpBmAlqIgIgAi8BAEEBajsBACABKAIoQYgTagJ/IAEvARBBgAJJBEAgAS8BEC0A0FkMAQsgAS8BEEEHdkGAAmotANBZC0ECdGoiAiACLwEAQQFqOwEAIAEgASgCKCgCoC0gASgCKCgCnC1BAWtGNgIgIAEoAigiAiACKAJ0IAEoAigoAmBrNgJ0IAEoAigiAiABKAIoKAJgIAIoAmxqNgJsIAEoAihBADYCYAwBCyABIAEoAigiAigCOCACKAJsai0AADoADyABKAIoIgIoAqQtIAIoAqAtQQF0akEAOwEAIAEtAA8hAyABKAIoIgIoApgtIQQgAiACKAKgLSICQQFqNgKgLSACIARqIAM6AAAgASgCKCABLQAPQQJ0aiICIAIvAZQBQQFqOwGUASABIAEoAigoAqAtIAEoAigoApwtQQFrRjYCICABKAIoIgIgAigCdEEBazYCdCABKAIoIgIgAigCbEEBajYCbAsgASgCIARAIAEoAigCfyABKAIoKAJcQQBOBEAgASgCKCgCOCABKAIoKAJcagwBC0EACyABKAIoKAJsIAEoAigoAlxrQQAQKCABKAIoIAEoAigoAmw2AlwgASgCKCgCABAcIAEoAigo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QCABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiQgASgCLCABKAIccUECdGooAQA2ARACQAJAA0AgASABLQARNgIMIAEgASgCLCABKAIMdjYCLCABIAEoAiggASgCDGs2AiggASABLQAQNgIMIAEoAgxFBEAgAS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgi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ZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AbmFuAC9kZXYvdXJhbmRvbQBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAaW5mAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAcmIAcitiAHJ3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CADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";yz(Rp)||(Rp=dxe(Rp));function Kxe(t){try{if(t==Rp&&lP)return new Uint8Array(lP);var e=sz(t);if(e)return e;if(aP)return aP(t);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(r){Gr(r)}}function Uxe(t,e){var r,i,n;try{n=Kxe(t),i=new WebAssembly.Module(n),r=new WebAssembly.Instance(i,e)}catch(o){var s=o.toString();throw Di("failed to compile wasm module: "+s),(s.includes("imported Memory")||s.includes("memory import"))&&Di("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),o}return[r,i]}function Gxe(){var t={a:Hxe};function e(n,s){var o=n.exports;oe.asm=o,ew=oe.asm.u,pz(ew.buffer),fP=oe.asm.za,Mxe(oe.asm.v),dP("wasm-instantiate")}if(Iz("wasm-instantiate"),oe.instantiateWasm)try{var r=oe.instantiateWasm(t,e);return r}catch(n){return Di("Module.instantiateWasm callback failed with error: "+n),!1}var i=Uxe(Rp,t);return e(i[0]),oe.asm}var ai,ya;function hP(t){for(;t.length>0;){var e=t.shift();if(typeof e=="function"){e(oe);continue}var r=e.func;typeof r=="number"?e.arg===void 0?fP.get(r)():fP.get(r)(e.arg):r(e.arg===void 0?null:e.arg)}}function iw(t,e){var r=new Date(_e[t>>2]*1e3);_e[e>>2]=r.getUTCSeconds(),_e[e+4>>2]=r.getUTCMinutes(),_e[e+8>>2]=r.getUTCHours(),_e[e+12>>2]=r.getUTCDate(),_e[e+16>>2]=r.getUTCMonth(),_e[e+20>>2]=r.getUTCFullYear()-1900,_e[e+24>>2]=r.getUTCDay(),_e[e+36>>2]=0,_e[e+32>>2]=0;var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[e+28>>2]=n,iw.GMTString||(iw.GMTString=uP("GMT")),_e[e+40>>2]=iw.GMTString,e}function jxe(t,e){return iw(t,e)}var yt={splitPath:function(t){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return e.exec(t).slice(1)},normalizeArray:function(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];n==="."?t.splice(i,1):n===".."?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r;r--)t.unshift("..");return t},normalize:function(t){var e=t.charAt(0)==="/",r=t.substr(-1)==="/";return t=yt.normalizeArray(t.split("/").filter(function(i){return!!i}),!e).join("/"),!t&&!e&&(t="."),t&&r&&(t+="/"),(e?"/":"")+t},dirname:function(t){var e=yt.splitPath(t),r=e[0],i=e[1];return!r&&!i?".":(i&&(i=i.substr(0,i.length-1)),r+i)},basename:function(t){if(t==="/")return"/";t=yt.normalize(t),t=t.replace(/\/$/,"");var e=t.lastIndexOf("/");return e===-1?t:t.substr(e+1)},extname:function(t){return yt.splitPath(t)[3]},join:function(){var t=Array.prototype.slice.call(arguments,0);return yt.normalize(t.join("/"))},join2:function(t,e){return yt.normalize(t+"/"+e)}};function Yxe(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var t=new Uint8Array(1);return function(){return crypto.getRandomValues(t),t[0]}}else if(Wl)try{var e=require("crypto");return function(){return e.randomBytes(1)[0]}}catch(r){}return function(){Gr("randomDevice")}}var wa={resolve:function(){for(var t="",e=!1,r=arguments.length-1;r>=-1&&!e;r--){var i=r>=0?arguments[r]:y.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";t=i+"/"+t,e=i.charAt(0)==="/"}return t=yt.normalizeArray(t.split("/").filter(function(n){return!!n}),!e).join("/"),(e?"/":"")+t||"."},relative:function(t,e){t=wa.resolve(t).substr(1),e=wa.resolve(e).substr(1);function r(c){for(var u=0;u=0&&c[g]==="";g--);return u>g?[]:c.slice(u,g-u+1)}for(var i=r(t.split("/")),n=r(e.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?e=i.slice(0,n).toString("utf-8"):e=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(e=window.prompt("Input: "),e!==null&&(e+=` +`)):typeof readline=="function"&&(e=readline(),e!==null&&(e+=` +`));if(!e)return null;t.input=CP(e,!0)}return t.input.shift()},put_char:function(t,e){e===null||e===10?($y(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&($y(Zu(t.output,0)),t.output=[])}},default_tty1_ops:{put_char:function(t,e){e===null||e===10?(Di(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&(Di(Zu(t.output,0)),t.output=[])}}};function mP(t){for(var e=mxe(t,65536),r=hz(e);t=e)){var i=1024*1024;e=Math.max(e,r*(r>>0),r!=0&&(e=Math.max(e,256));var n=t.contents;t.contents=new Uint8Array(e),t.usedBytes>0&&t.contents.set(n.subarray(0,t.usedBytes),0)}},resizeFileStorage:function(t,e){if(t.usedBytes!=e)if(e==0)t.contents=null,t.usedBytes=0;else{var r=t.contents;t.contents=new Uint8Array(e),r&&t.contents.set(r.subarray(0,Math.min(e,t.usedBytes))),t.usedBytes=e}},node_ops:{getattr:function(t){var e={};return e.dev=y.isChrdev(t.mode)?t.id:1,e.ino=t.id,e.mode=t.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=t.rdev,y.isDir(t.mode)?e.size=4096:y.isFile(t.mode)?e.size=t.usedBytes:y.isLink(t.mode)?e.size=t.link.length:e.size=0,e.atime=new Date(t.timestamp),e.mtime=new Date(t.timestamp),e.ctime=new Date(t.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr:function(t,e){e.mode!==void 0&&(t.mode=e.mode),e.timestamp!==void 0&&(t.timestamp=e.timestamp),e.size!==void 0&&pt.resizeFileStorage(t,e.size)},lookup:function(t,e){throw y.genericErrors[44]},mknod:function(t,e,r,i){return pt.createNode(t,e,r,i)},rename:function(t,e,r){if(y.isDir(t.mode)){var i;try{i=y.lookupNode(e,r)}catch(s){}if(i)for(var n in i.contents)throw new y.ErrnoError(55)}delete t.parent.contents[t.name],t.parent.timestamp=Date.now(),t.name=r,e.contents[r]=t,e.timestamp=t.parent.timestamp,t.parent=e},unlink:function(t,e){delete t.contents[e],t.timestamp=Date.now()},rmdir:function(t,e){var r=y.lookupNode(t,e);for(var i in r.contents)throw new y.ErrnoError(55);delete t.contents[e],t.timestamp=Date.now()},readdir:function(t){var e=[".",".."];for(var r in t.contents)!t.contents.hasOwnProperty(r)||e.push(r);return e},symlink:function(t,e,r){var i=pt.createNode(t,e,511|40960,0);return i.link=r,i},readlink:function(t){if(!y.isLink(t.mode))throw new y.ErrnoError(28);return t.link}},stream_ops:{read:function(t,e,r,i,n){var s=t.node.contents;if(n>=t.node.usedBytes)return 0;var o=Math.min(t.node.usedBytes-n,i);if(o>8&&s.subarray)e.set(s.subarray(n,n+o),r);else for(var a=0;a0||i+r>2)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}return e.mode},realPath:function(t){for(var e=[];t.parent!==t;)e.push(t.name),t=t.parent;return e.push(t.mount.opts.root),e.reverse(),yt.join.apply(null,e)},flagsForNode:function(t){t&=~2097152,t&=~2048,t&=~32768,t&=~524288;var e=0;for(var r in tt.flagsForNodeMap)t&r&&(e|=tt.flagsForNodeMap[r],t^=r);if(t)throw new y.ErrnoError(28);return e},node_ops:{getattr:function(t){var e=tt.realPath(t),r;try{r=ft.lstatSync(e)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}return tt.isWindows&&!r.blksize&&(r.blksize=4096),tt.isWindows&&!r.blocks&&(r.blocks=(r.size+r.blksize-1)/r.blksize|0),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr:function(t,e){var r=tt.realPath(t);try{if(e.mode!==void 0&&(ft.chmodSync(r,e.mode),t.mode=e.mode),e.timestamp!==void 0){var i=new Date(e.timestamp);ft.utimesSync(r,i,i)}e.size!==void 0&&ft.truncateSync(r,e.size)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},lookup:function(t,e){var r=yt.join2(tt.realPath(t),e),i=tt.getMode(r);return tt.createNode(t,e,i)},mknod:function(t,e,r,i){var n=tt.createNode(t,e,r,i),s=tt.realPath(n);try{y.isDir(n.mode)?ft.mkdirSync(s,n.mode):ft.writeFileSync(s,"",{mode:n.mode})}catch(o){throw o.code?new y.ErrnoError(tt.convertNodeCode(o)):o}return n},rename:function(t,e,r){var i=tt.realPath(t),n=yt.join2(tt.realPath(e),r);try{ft.renameSync(i,n)}catch(s){throw s.code?new y.ErrnoError(tt.convertNodeCode(s)):s}t.name=r},unlink:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.unlinkSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},rmdir:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.rmdirSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},readdir:function(t){var e=tt.realPath(t);try{return ft.readdirSync(e)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},symlink:function(t,e,r){var i=yt.join2(tt.realPath(t),e);try{ft.symlinkSync(r,i)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},readlink:function(t){var e=tt.realPath(t);try{return e=ft.readlinkSync(e),e=IP.relative(IP.resolve(t.mount.opts.root),e),e}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}}},stream_ops:{open:function(t){var e=tt.realPath(t.node);try{y.isFile(t.node.mode)&&(t.nfd=ft.openSync(e,tt.flagsForNode(t.flags)))}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},close:function(t){try{y.isFile(t.node.mode)&&t.nfd&&ft.closeSync(t.nfd)}catch(e){throw e.code?new y.ErrnoError(tt.convertNodeCode(e)):e}},read:function(t,e,r,i,n){if(i===0)return 0;try{return ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},write:function(t,e,r,i,n){try{return ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},llseek:function(t,e,r){var i=e;if(r===1)i+=t.position;else if(r===2&&y.isFile(t.node.mode))try{var n=ft.fstatSync(t.nfd);i+=n.size}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}if(i<0)throw new y.ErrnoError(28);return i},mmap:function(t,e,r,i,n,s){if(e!==0)throw new y.ErrnoError(28);if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);var o=mP(r);return tt.stream_ops.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);if(n&2)return 0;var s=tt.stream_ops.write(t,e,0,i,r,!1);return 0}}},wz={lookupPath:function(t){return{path:t,node:{mode:tt.getMode(t)}}},createStandardStreams:function(){y.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var t=1;t<3;t++)y.streams[t]={fd:t,nfd:t,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(t,e){y.isDir(t)?ft.mkdirSync(t,e):ft.writeFileSync(t,"",{mode:e})},mkdir:function(){ft.mkdirSync.apply(void 0,arguments)},symlink:function(){ft.symlinkSync.apply(void 0,arguments)},rename:function(){ft.renameSync.apply(void 0,arguments)},rmdir:function(){ft.rmdirSync.apply(void 0,arguments)},readdir:function(){ft.readdirSync.apply(void 0,arguments)},unlink:function(){ft.unlinkSync.apply(void 0,arguments)},readlink:function(){return ft.readlinkSync.apply(void 0,arguments)},stat:function(){return ft.statSync.apply(void 0,arguments)},lstat:function(){return ft.lstatSync.apply(void 0,arguments)},chmod:function(){ft.chmodSync.apply(void 0,arguments)},fchmod:function(){ft.fchmodSync.apply(void 0,arguments)},chown:function(){ft.chownSync.apply(void 0,arguments)},fchown:function(){ft.fchownSync.apply(void 0,arguments)},truncate:function(){ft.truncateSync.apply(void 0,arguments)},ftruncate:function(t,e){if(e<0)throw new y.ErrnoError(28);ft.ftruncateSync.apply(void 0,arguments)},utime:function(){ft.utimesSync.apply(void 0,arguments)},open:function(t,e,r,i){typeof e=="string"&&(e=Vl.modeStringToFlags(e));var n=ft.openSync(t,tt.flagsForNode(e),r),s=i!=null?i:y.nextfd(n),o={fd:s,nfd:n,position:0,path:t,flags:e,seekable:!0};return y.streams[s]=o,o},close:function(t){t.stream_ops||ft.closeSync(t.nfd),y.closeStream(t.fd)},llseek:function(t,e,r){if(t.stream_ops)return Vl.llseek(t,e,r);var i=e;if(r===1)i+=t.position;else if(r===2)i+=ft.fstatSync(t.nfd).size;else if(r!==0)throw new y.ErrnoError(eg.EINVAL);if(i<0)throw new y.ErrnoError(eg.EINVAL);return t.position=i,i},read:function(t,e,r,i,n){if(t.stream_ops)return Vl.read(t,e,r,i,n);var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},write:function(t,e,r,i,n){if(t.stream_ops)return Vl.write(t,e,r,i,n);t.flags&+"1024"&&y.llseek(t,0,+"2");var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},allocate:function(){throw new y.ErrnoError(eg.EOPNOTSUPP)},mmap:function(t,e,r,i,n,s){if(t.stream_ops)return Vl.mmap(t,e,r,i,n,s);if(e!==0)throw new y.ErrnoError(28);var o=mP(r);return y.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){return t.stream_ops?Vl.msync(t,e,r,i,n):(n&2||y.write(t,e,0,i,r),0)},munmap:function(){return 0},ioctl:function(){throw new y.ErrnoError(eg.ENOTTY)}},y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(t,e){if(t=wa.resolve(y.cwd(),t),e=e||{},!t)return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var i in r)e[i]===void 0&&(e[i]=r[i]);if(e.recurse_count>8)throw new y.ErrnoError(32);for(var n=yt.normalizeArray(t.split("/").filter(function(f){return!!f}),!1),s=y.root,o="/",a=0;a40)throw new y.ErrnoError(32)}}return{path:o,node:s}},getPath:function(t){for(var e;;){if(y.isRoot(t)){var r=t.mount.mountpoint;return e?r[r.length-1]!=="/"?r+"/"+e:r+e:r}e=e?t.name+"/"+e:t.name,t=t.parent}},hashName:function(t,e){for(var r=0,i=0;i>>0)%y.nameTable.length},hashAddNode:function(t){var e=y.hashName(t.parent.id,t.name);t.name_next=y.nameTable[e],y.nameTable[e]=t},hashRemoveNode:function(t){var e=y.hashName(t.parent.id,t.name);if(y.nameTable[e]===t)y.nameTable[e]=t.name_next;else for(var r=y.nameTable[e];r;){if(r.name_next===t){r.name_next=t.name_next;break}r=r.name_next}},lookupNode:function(t,e){var r=y.mayLookup(t);if(r)throw new y.ErrnoError(r,t);for(var i=y.hashName(t.id,e),n=y.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===t.id&&s===e)return n}return y.lookup(t,e)},createNode:function(t,e,r,i){var n=new y.FSNode(t,e,r,i);return y.hashAddNode(n),n},destroyNode:function(t){y.hashRemoveNode(t)},isRoot:function(t){return t===t.parent},isMountpoint:function(t){return!!t.mounted},isFile:function(t){return(t&61440)==32768},isDir:function(t){return(t&61440)==16384},isLink:function(t){return(t&61440)==40960},isChrdev:function(t){return(t&61440)==8192},isBlkdev:function(t){return(t&61440)==24576},isFIFO:function(t){return(t&61440)==4096},isSocket:function(t){return(t&49152)==49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(t){var e=y.flagModes[t];if(typeof e=="undefined")throw new Error("Unknown file open mode: "+t);return e},flagsToPermissionString:function(t){var e=["r","w","rw"][t&3];return t&512&&(e+="w"),e},nodePermissions:function(t,e){return y.ignorePermissions?0:e.includes("r")&&!(t.mode&292)||e.includes("w")&&!(t.mode&146)||e.includes("x")&&!(t.mode&73)?2:0},mayLookup:function(t){var e=y.nodePermissions(t,"x");return e||(t.node_ops.lookup?0:2)},mayCreate:function(t,e){try{var r=y.lookupNode(t,e);return 20}catch(i){}return y.nodePermissions(t,"wx")},mayDelete:function(t,e,r){var i;try{i=y.lookupNode(t,e)}catch(s){return s.errno}var n=y.nodePermissions(t,"wx");if(n)return n;if(r){if(!y.isDir(i.mode))return 54;if(y.isRoot(i)||y.getPath(i)===y.cwd())return 10}else if(y.isDir(i.mode))return 31;return 0},mayOpen:function(t,e){return t?y.isLink(t.mode)?32:y.isDir(t.mode)&&(y.flagsToPermissionString(e)!=="r"||e&512)?31:y.nodePermissions(t,y.flagsToPermissionString(e)):44},MAX_OPEN_FDS:4096,nextfd:function(t,e){t=t||0,e=e||y.MAX_OPEN_FDS;for(var r=t;r<=e;r++)if(!y.streams[r])return r;throw new y.ErrnoError(33)},getStream:function(t){return y.streams[t]},createStream:function(t,e,r){y.FSStream||(y.FSStream=function(){},y.FSStream.prototype={object:{get:function(){return this.node},set:function(o){this.node=o}},isRead:{get:function(){return(this.flags&2097155)!=1}},isWrite:{get:function(){return(this.flags&2097155)!=0}},isAppend:{get:function(){return this.flags&1024}}});var i=new y.FSStream;for(var n in t)i[n]=t[n];t=i;var s=y.nextfd(e,r);return t.fd=s,y.streams[s]=t,t},closeStream:function(t){y.streams[t]=null},chrdev_stream_ops:{open:function(t){var e=y.getDevice(t.node.rdev);t.stream_ops=e.stream_ops,t.stream_ops.open&&t.stream_ops.open(t)},llseek:function(){throw new y.ErrnoError(70)}},major:function(t){return t>>8},minor:function(t){return t&255},makedev:function(t,e){return t<<8|e},registerDevice:function(t,e){y.devices[t]={stream_ops:e}},getDevice:function(t){return y.devices[t]},getMounts:function(t){for(var e=[],r=[t];r.length;){var i=r.pop();e.push(i),r.push.apply(r,i.mounts)}return e},syncfs:function(t,e){typeof t=="function"&&(e=t,t=!1),y.syncFSRequests++,y.syncFSRequests>1&&Di("warning: "+y.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=y.getMounts(y.root.mount),i=0;function n(o){return y.syncFSRequests--,e(o)}function s(o){if(o)return s.errored?void 0:(s.errored=!0,n(o));++i>=r.length&&n(null)}r.forEach(function(o){if(!o.type.syncfs)return s(null);o.type.syncfs(o,t,s)})},mount:function(t,e,r){var i=r==="/",n=!r,s;if(i&&y.root)throw new y.ErrnoError(10);if(!i&&!n){var o=y.lookupPath(r,{follow_mount:!1});if(r=o.path,s=o.node,y.isMountpoint(s))throw new y.ErrnoError(10);if(!y.isDir(s.mode))throw new y.ErrnoError(54)}var a={type:t,opts:e,mountpoint:r,mounts:[]},l=t.mount(a);return l.mount=a,a.root=l,i?y.root=l:s&&(s.mounted=a,s.mount&&s.mount.mounts.push(a)),l},unmount:function(t){var e=y.lookupPath(t,{follow_mount:!1});if(!y.isMountpoint(e.node))throw new y.ErrnoError(28);var r=e.node,i=r.mounted,n=y.getMounts(i);Object.keys(y.nameTable).forEach(function(o){for(var a=y.nameTable[o];a;){var l=a.name_next;n.includes(a.mount)&&y.destroyNode(a),a=l}}),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:function(t,e){return t.node_ops.lookup(t,e)},mknod:function(t,e,r){var i=y.lookupPath(t,{parent:!0}),n=i.node,s=yt.basename(t);if(!s||s==="."||s==="..")throw new y.ErrnoError(28);var o=y.mayCreate(n,s);if(o)throw new y.ErrnoError(o);if(!n.node_ops.mknod)throw new y.ErrnoError(63);return n.node_ops.mknod(n,s,e,r)},create:function(t,e){return e=e!==void 0?e:438,e&=4095,e|=32768,y.mknod(t,e,0)},mkdir:function(t,e){return e=e!==void 0?e:511,e&=511|512,e|=16384,y.mknod(t,e,0)},mkdirTree:function(t,e){for(var r=t.split("/"),i="",n=0;nthis.length-1||f<0)){var h=f%this.chunkSize,p=f/this.chunkSize|0;return this.getter(p)[h]}},s.prototype.setDataGetter=function(f){this.getter=f},s.prototype.cacheLength=function(){var f=new XMLHttpRequest;if(f.open("HEAD",r,!1),f.send(null),!(f.status>=200&&f.status<300||f.status===304))throw new Error("Couldn't load "+r+". Status: "+f.status);var h=Number(f.getResponseHeader("Content-length")),p,d=(p=f.getResponseHeader("Accept-Ranges"))&&p==="bytes",m=(p=f.getResponseHeader("Content-Encoding"))&&p==="gzip",E=1024*1024;d||(E=h);var B=function(R,H){if(R>H)throw new Error("invalid range ("+R+", "+H+") or no bytes requested!");if(H>h-1)throw new Error("only "+h+" bytes available! programmer error!");var L=new XMLHttpRequest;if(L.open("GET",r,!1),h!==E&&L.setRequestHeader("Range","bytes="+R+"-"+H),typeof Uint8Array!="undefined"&&(L.responseType="arraybuffer"),L.overrideMimeType&&L.overrideMimeType("text/plain; charset=x-user-defined"),L.send(null),!(L.status>=200&&L.status<300||L.status===304))throw new Error("Couldn't load "+r+". Status: "+L.status);return L.response!==void 0?new Uint8Array(L.response||[]):CP(L.responseText||"",!0)},b=this;b.setDataGetter(function(R){var H=R*E,L=(R+1)*E-1;if(L=Math.min(L,h-1),typeof b.chunks[R]=="undefined"&&(b.chunks[R]=B(H,L)),typeof b.chunks[R]=="undefined")throw new Error("doXHR failed!");return b.chunks[R]}),(m||!h)&&(E=h=1,h=this.getter(0).length,E=h,$y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=h,this._chunkSize=E,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!iz)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else var a={isDevice:!1,url:r};var l=y.createFile(t,e,a,i,n);a.contents?l.contents=a.contents:a.url&&(l.contents=null,l.url=a.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var c={},u=Object.keys(l.stream_ops);return u.forEach(function(g){var f=l.stream_ops[g];c[g]=function(){return y.forceLoadFile(l),f.apply(null,arguments)}}),c.read=function(f,h,p,d,m){y.forceLoadFile(l);var E=f.node.contents;if(m>=E.length)return 0;var B=Math.min(E.length-m,d);if(E.slice)for(var b=0;b>2]=i.dev,_e[r+4>>2]=0,_e[r+8>>2]=i.ino,_e[r+12>>2]=i.mode,_e[r+16>>2]=i.nlink,_e[r+20>>2]=i.uid,_e[r+24>>2]=i.gid,_e[r+28>>2]=i.rdev,_e[r+32>>2]=0,ya=[i.size>>>0,(ai=i.size,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+40>>2]=ya[0],_e[r+44>>2]=ya[1],_e[r+48>>2]=4096,_e[r+52>>2]=i.blocks,_e[r+56>>2]=i.atime.getTime()/1e3|0,_e[r+60>>2]=0,_e[r+64>>2]=i.mtime.getTime()/1e3|0,_e[r+68>>2]=0,_e[r+72>>2]=i.ctime.getTime()/1e3|0,_e[r+76>>2]=0,ya=[i.ino>>>0,(ai=i.ino,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+80>>2]=ya[0],_e[r+84>>2]=ya[1],0},doMsync:function(t,e,r,i,n){var s=$u.slice(t,t+r);y.msync(e,s,n,r,i)},doMkdir:function(t,e){return t=yt.normalize(t),t[t.length-1]==="/"&&(t=t.substr(0,t.length-1)),y.mkdir(t,e,0),0},doMknod:function(t,e,r){switch(e&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return y.mknod(t,e,r),0},doReadlink:function(t,e,r){if(r<=0)return-28;var i=y.readlink(t),n=Math.min(r,rw(i)),s=Zi[e+n];return uz(i,e,r+1),Zi[e+n]=s,n},doAccess:function(t,e){if(e&~7)return-28;var r,i=y.lookupPath(t,{follow:!0});if(r=i.node,!r)return-44;var n="";return e&4&&(n+="r"),e&2&&(n+="w"),e&1&&(n+="x"),n&&y.nodePermissions(r,n)?-2:0},doDup:function(t,e,r){var i=y.getStream(r);return i&&y.close(i),y.open(t,e,0,r,r).fd},doReadv:function(t,e,r,i){for(var n=0,s=0;s>2],a=_e[e+(s*8+4)>>2],l=y.read(t,Zi,o,a,i);if(l<0)return-1;if(n+=l,l>2],a=_e[e+(s*8+4)>>2],l=y.write(t,Zi,o,a,i);if(l<0)return-1;n+=l}return n},varargs:void 0,get:function(){Ot.varargs+=4;var t=_e[Ot.varargs-4>>2];return t},getStr:function(t){var e=cz(t);return e},getStreamFromFD:function(t){var e=y.getStream(t);if(!e)throw new y.ErrnoError(8);return e},get64:function(t,e){return t}};function qxe(t,e){try{return t=Ot.getStr(t),y.chmod(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function Wxe(t){return _e[Jxe()>>2]=t,t}function zxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 0:{var n=Ot.get();if(n<0)return-28;var s;return s=y.open(i.path,i.flags,0,n),s.fd}case 1:case 2:return 0;case 3:return i.flags;case 4:{var n=Ot.get();return i.flags|=n,0}case 12:{var n=Ot.get(),o=0;return cP[n+o>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Wxe(28),-1;default:return-28}}catch(a){return(typeof y=="undefined"||!(a instanceof y.ErrnoError))&&Gr(a),-a.errno}}function Vxe(t,e){try{var r=Ot.getStreamFromFD(t);return Ot.doStat(y.stat,r.path,e)}catch(i){return(typeof y=="undefined"||!(i instanceof y.ErrnoError))&&Gr(i),-i.errno}}function _xe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 21509:case 21505:return i.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return i.tty?0:-59;case 21519:{if(!i.tty)return-59;var n=Ot.get();return _e[n>>2]=0,0}case 21520:return i.tty?-28:-59;case 21531:{var n=Ot.get();return y.ioctl(i,e,n)}case 21523:return i.tty?0:-59;case 21524:return i.tty?0:-59;default:Gr("bad ioctl syscall "+e)}}catch(s){return(typeof y=="undefined"||!(s instanceof y.ErrnoError))&&Gr(s),-s.errno}}function Xxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStr(t),n=r?Ot.get():0,s=y.open(i,e,n);return s.fd}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),-o.errno}}function Zxe(t,e){try{return t=Ot.getStr(t),e=Ot.getStr(e),y.rename(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function $xe(t){try{return t=Ot.getStr(t),y.rmdir(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function eke(t,e){try{return t=Ot.getStr(t),Ot.doStat(y.stat,t,e)}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function tke(t){try{return t=Ot.getStr(t),y.unlink(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function rke(t,e,r){$u.copyWithin(t,e,e+r)}function ike(t){try{return ew.grow(t-gP.byteLength+65535>>>16),pz(ew.buffer),1}catch(e){}}function nke(t){var e=$u.length;t=t>>>0;var r=2147483648;if(t>r)return!1;for(var i=1;i<=4;i*=2){var n=e*(1+.2/i);n=Math.min(n,t+100663296);var s=Math.min(r,xxe(Math.max(t,n),65536)),o=ike(s);if(o)return!0}return!1}function ske(t){try{var e=Ot.getStreamFromFD(t);return y.close(e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),r.errno}}function oke(t,e){try{var r=Ot.getStreamFromFD(t),i=r.tty?2:y.isDir(r.mode)?3:y.isLink(r.mode)?7:4;return Zi[e>>0]=i,0}catch(n){return(typeof y=="undefined"||!(n instanceof y.ErrnoError))&&Gr(n),n.errno}}function ake(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doReadv(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function Ake(t,e,r,i,n){try{var s=Ot.getStreamFromFD(t),o=4294967296,a=r*o+(e>>>0),l=9007199254740992;return a<=-l||a>=l?-61:(y.llseek(s,a,i),ya=[s.position>>>0,(ai=s.position,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[n>>2]=ya[0],_e[n+4>>2]=ya[1],s.getdents&&a===0&&i===0&&(s.getdents=null),0)}catch(c){return(typeof y=="undefined"||!(c instanceof y.ErrnoError))&&Gr(c),c.errno}}function lke(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doWritev(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function cke(t){Exe(t)}function uke(t){var e=Date.now()/1e3|0;return t&&(_e[t>>2]=e),e}function EP(){if(EP.called)return;EP.called=!0;var t=new Date().getFullYear(),e=new Date(t,0,1),r=new Date(t,6,1),i=e.getTimezoneOffset(),n=r.getTimezoneOffset(),s=Math.max(i,n);_e[fke()>>2]=s*60,_e[gke()>>2]=Number(i!=n);function o(g){var f=g.toTimeString().match(/\(([A-Za-z ]+)\)$/);return f?f[1]:"GMT"}var a=o(e),l=o(r),c=uP(a),u=uP(l);n>2]=c,_e[nw()+4>>2]=u):(_e[nw()>>2]=u,_e[nw()+4>>2]=c)}function hke(t){EP();var e=Date.UTC(_e[t+20>>2]+1900,_e[t+16>>2],_e[t+12>>2],_e[t+8>>2],_e[t+4>>2],_e[t>>2],0),r=new Date(e);_e[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[t+28>>2]=n,r.getTime()/1e3|0}var Bz=function(t,e,r,i){t||(t=this),this.parent=t,this.mount=t.mount,this.mounted=null,this.id=y.nextInode++,this.name=e,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},sw=292|73,ow=146;Object.defineProperties(Bz.prototype,{read:{get:function(){return(this.mode&sw)===sw},set:function(t){t?this.mode|=sw:this.mode&=~sw}},write:{get:function(){return(this.mode&ow)===ow},set:function(t){t?this.mode|=ow:this.mode&=~ow}},isFolder:{get:function(){return y.isDir(this.mode)}},isDevice:{get:function(){return y.isChrdev(this.mode)}}});y.FSNode=Bz;y.staticInit();Wl&&(ft=ez,IP=require("path"),tt.staticInit());var ft,IP;if(Wl){Qz=function(t){return function(){try{return t.apply(this,arguments)}catch(e){throw e.code?new y.ErrnoError(eg[e.code]):e}}},Vl=Object.assign({},y);for(yP in wz)y[yP]=Qz(wz[yP])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");var Qz,Vl,yP;function CP(t,e,r){var i=r>0?r:rw(t)+1,n=new Array(i),s=tw(t,n,0,n.length);return e&&(n.length=s),n}var pke=typeof atob=="function"?atob:function(t){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="",i,n,s,o,a,l,c,u=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");do o=e.indexOf(t.charAt(u++)),a=e.indexOf(t.charAt(u++)),l=e.indexOf(t.charAt(u++)),c=e.indexOf(t.charAt(u++)),i=o<<2|a>>4,n=(a&15)<<4|l>>2,s=(l&3)<<6|c,r=r+String.fromCharCode(i),l!==64&&(r=r+String.fromCharCode(n)),c!==64&&(r=r+String.fromCharCode(s));while(u0||(Fxe(),zl>0))return;function e(){aw||(aw=!0,oe.calledRun=!0,!Az&&(Nxe(),oe.onRuntimeInitialized&&oe.onRuntimeInitialized(),Txe()))}oe.setStatus?(oe.setStatus("Running..."),setTimeout(function(){setTimeout(function(){oe.setStatus("")},1),e()},1)):e()}oe.run=wP;if(oe.preInit)for(typeof oe.preInit=="function"&&(oe.preInit=[oe.preInit]);oe.preInit.length>0;)oe.preInit.pop()();wP()});var xz=I((Dot,Sz)=>{"use strict";function Cke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function _l(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,_l)}Cke(_l,Error);_l.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ee=At(">>",!1),Ue=">&",Oe=At(">&",!1),vt=">",dt=At(">",!1),ri="<<<",ii=At("<<<",!1),an="<&",yr=At("<&",!1),Ki="<",Qi=At("<",!1),Go=function(C){return{type:"argument",segments:[].concat(...C)}},wr=function(C){return C},Ui="'",ws=At("'",!1),Tf=function(C){return[{type:"text",text:C}]},Mf='"',Rm=At('"',!1),Fm=function(C){return C},Nm=function(C){return{type:"arithmetic",arithmetic:C,quoted:!0}},DQ=function(C){return{type:"shell",shell:C,quoted:!0}},RQ=function(C){return _(P({type:"variable"},C),{quoted:!0})},Of=function(C){return{type:"text",text:C}},FQ=function(C){return{type:"arithmetic",arithmetic:C,quoted:!1}},NQ=function(C){return{type:"shell",shell:C,quoted:!1}},Lm=function(C){return _(P({type:"variable"},C),{quoted:!1})},LQ=function(C){return{type:"glob",pattern:C}},Va="\\",jo=At("\\",!1),Tm=/^[\\']/,Mm=Qs(["\\","'"],!1,!1),te=function(C){return C},Om=/^[^']/,Km=Qs(["'"],!0,!1),il=function(C){return C.join("")},Um=/^[\\$"]/,Hm=Qs(["\\","$",'"'],!1,!1),Kf=/^[^$"]/,Gm=Qs(["$",'"'],!0,!1),jm="\\0",TQ=At("\\0",!1),MQ=function(){return"\0"},Ym="\\a",qm=At("\\a",!1),Jm=function(){return"a"},Wm="\\b",zm=At("\\b",!1),Vm=function(){return"\b"},Uf="\\e",OQ=At("\\e",!1),KQ=function(){return""},_m="\\f",UQ=At("\\f",!1),HQ=function(){return"\f"},O="\\n",ht=At("\\n",!1),Vc=function(){return` +`},xn="\\r",Hf=At("\\r",!1),Ye=function(){return"\r"},nl="\\t",Xm=At("\\t",!1),MM=function(){return" "},GQ="\\v",OM=At("\\v",!1),fr=function(){return"\v"},Bs="\\x",jQ=At("\\x",!1),Zm=function(C){return String.fromCharCode(parseInt(C,16))},Yo="\\u",$m=At("\\u",!1),_a="\\U",et=At("\\U",!1),YQ=function(C){return String.fromCodePoint(parseInt(C,16))},eI=/^[0-9a-fA-f]/,tI=Qs([["0","9"],["a","f"],["A","f"]],!1,!1),Xa=Cfe(),sl="-",ol=At("-",!1),al="+",qo=At("+",!1),Al=".",qQ=At(".",!1),rI=function(C,Q,k){return{type:"number",value:(C==="-"?-1:1)*parseFloat(Q.join("")+"."+k.join(""))}},iI=function(C,Q){return{type:"number",value:(C==="-"?-1:1)*parseInt(Q.join(""))}},JQ=function(C){return P({type:"variable"},C)},ll=function(C){return{type:"variable",name:C}},WQ=function(C){return C},nI="*",Gf=At("*",!1),_c="/",jf=At("/",!1),sI=function(C,Q,k){return{type:Q==="*"?"multiplication":"division",right:k}},cl=function(C,Q){return Q.reduce((k,N)=>P({left:k},N),C)},oI=function(C,Q,k){return{type:Q==="+"?"addition":"subtraction",right:k}},Yf="$((",Xc=At("$((",!1),xr="))",KM=At("))",!1),Jo=function(C){return C},Zs="$(",aI=At("$(",!1),Zc=function(C){return C},x="${",U=At("${",!1),le=":-",xe=At(":-",!1),Qe=function(C,Q){return{name:C,defaultValue:Q}},Ge=":-}",ct=At(":-}",!1),sr=function(C){return{name:C,defaultValue:[]}},Wo=function(C){return{name:C}},Afe="$",lfe=At("$",!1),cfe=function(C){return e.isGlobPattern(C)},ufe=function(C){return C},UM=/^[a-zA-Z0-9_]/,HM=Qs([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),GM=function(){return dfe()},jM=/^[$@*?#a-zA-Z0-9_\-]/,YM=Qs(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),gfe=/^[(){}<>$|&; \t"']/,ffe=Qs(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),hfe=/^[<>&; \t"']/,pfe=Qs(["<",">","&",";"," "," ",'"',"'"],!1,!1),qM=/^[ \t]/,JM=Qs([" "," "],!1,!1),w=0,Re=0,AI=[{line:1,column:1}],$s=0,zQ=[],we=0,lI;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function dfe(){return t.substring(Re,w)}function P_e(){return qf(Re,w)}function D_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),zM([Ife(C)],t.substring(Re,w),Q)}function R_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),Efe(C,Q)}function At(C,Q){return{type:"literal",text:C,ignoreCase:Q}}function Qs(C,Q,k){return{type:"class",parts:C,inverted:Q,ignoreCase:k}}function Cfe(){return{type:"any"}}function mfe(){return{type:"end"}}function Ife(C){return{type:"other",description:C}}function WM(C){var Q=AI[C],k;if(Q)return Q;for(k=C-1;!AI[k];)k--;for(Q=AI[k],Q={line:Q.line,column:Q.column};k$s&&($s=w,zQ=[]),zQ.push(C))}function Efe(C,Q){return new _l(C,null,null,Q)}function zM(C,Q,k){return new _l(_l.buildMessage(C,Q),C,Q,k)}function VM(){var C,Q;return C=w,Q=Jf(),Q===r&&(Q=null),Q!==r&&(Re=C,Q=s(Q)),C=Q,C}function Jf(){var C,Q,k,N,Z;if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N!==r?(Z=yfe(),Z===r&&(Z=null),Z!==r?(Re=C,Q=o(Q,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;if(C===r)if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N===r&&(N=null),N!==r?(Re=C,Q=a(Q,N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function yfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Jf(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=l(k),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function _M(){var C;return t.charCodeAt(w)===59?(C=c,w++):(C=r,we===0&&ve(u)),C===r&&(t.charCodeAt(w)===38?(C=g,w++):(C=r,we===0&&ve(f))),C}function VQ(){var C,Q,k;return C=w,Q=XM(),Q!==r?(k=wfe(),k===r&&(k=null),k!==r?(Re=C,Q=h(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function wfe(){var C,Q,k,N,Z,Ie,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=VQ(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();Ie!==r?(Re=C,Q=p(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function Bfe(){var C;return t.substr(w,2)===d?(C=d,w+=2):(C=r,we===0&&ve(m)),C===r&&(t.substr(w,2)===E?(C=E,w+=2):(C=r,we===0&&ve(B))),C}function XM(){var C,Q,k;return C=w,Q=vfe(),Q!==r?(k=Qfe(),k===r&&(k=null),k!==r?(Re=C,Q=b(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function Qfe(){var C,Q,k,N,Z,Ie,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=XM(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();Ie!==r?(Re=C,Q=R(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function bfe(){var C;return t.substr(w,2)===H?(C=H,w+=2):(C=r,we===0&&ve(L)),C===r&&(t.charCodeAt(w)===124?(C=K,w++):(C=r,we===0&&ve(J))),C}function cI(){var C,Q,k,N,Z,Ie;if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r)if(N=$M(),N!==r){for(Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();Z!==r?(Re=C,Q=A(Q,N),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;else w=C,C=r;if(C===r)if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=V(Q),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function vfe(){var C,Q,k,N,Z,Ie,ot,ut,Tr,ni,Yn;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===40?(k=W,w++):(k=r,we===0&&ve(X)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();if(Ie!==r)if(t.charCodeAt(w)===41?(ot=F,w++):(ot=r,we===0&&ve(D)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=he(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===123?(k=pe,w++):(k=r,we===0&&ve(Ne)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();if(Ie!==r)if(t.charCodeAt(w)===125?(ot=Pe,w++):(ot=r,we===0&&ve(qe)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=re(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){for(k=[],N=cI();N!==r;)k.push(N),N=cI();if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r){if(Z=[],Ie=ZM(),Ie!==r)for(;Ie!==r;)Z.push(Ie),Ie=ZM();else Z=r;if(Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();Ie!==r?(Re=C,Q=se(k,Z),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r}else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=cI(),N!==r)for(;N!==r;)k.push(N),N=cI();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=be(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}}}return C}function Sfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=uI(),N!==r)for(;N!==r;)k.push(N),N=uI();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=ae(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r;return C}function ZM(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r?(k=Wf(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();Q!==r?(k=uI(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r)}return C}function Wf(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(De.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve($)),k===r&&(k=null),k!==r?(N=xfe(),N!==r?(Z=uI(),Z!==r?(Re=C,Q=G(k,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function xfe(){var C;return t.substr(w,2)===Ce?(C=Ce,w+=2):(C=r,we===0&&ve(ee)),C===r&&(t.substr(w,2)===Ue?(C=Ue,w+=2):(C=r,we===0&&ve(Oe)),C===r&&(t.charCodeAt(w)===62?(C=vt,w++):(C=r,we===0&&ve(dt)),C===r&&(t.substr(w,3)===ri?(C=ri,w+=3):(C=r,we===0&&ve(ii)),C===r&&(t.substr(w,2)===an?(C=an,w+=2):(C=r,we===0&&ve(yr)),C===r&&(t.charCodeAt(w)===60?(C=Ki,w++):(C=r,we===0&&ve(Qi))))))),C}function uI(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(k=$M(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C}function $M(){var C,Q,k;if(C=w,Q=[],k=eO(),k!==r)for(;k!==r;)Q.push(k),k=eO();else Q=r;return Q!==r&&(Re=C,Q=Go(Q)),C=Q,C}function eO(){var C,Q;return C=w,Q=kfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Pfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Dfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q)),C}function kfe(){var C,Q,k,N;return C=w,t.charCodeAt(w)===39?(Q=Ui,w++):(Q=r,we===0&&ve(ws)),Q!==r?(k=Rfe(),k!==r?(t.charCodeAt(w)===39?(N=Ui,w++):(N=r,we===0&&ve(ws)),N!==r?(Re=C,Q=Tf(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function Pfe(){var C,Q,k,N;if(C=w,t.charCodeAt(w)===34?(Q=Mf,w++):(Q=r,we===0&&ve(Rm)),Q!==r){for(k=[],N=tO();N!==r;)k.push(N),N=tO();k!==r?(t.charCodeAt(w)===34?(N=Mf,w++):(N=r,we===0&&ve(Rm)),N!==r?(Re=C,Q=Fm(k),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function Dfe(){var C,Q,k;if(C=w,Q=[],k=rO(),k!==r)for(;k!==r;)Q.push(k),k=rO();else Q=r;return Q!==r&&(Re=C,Q=Fm(Q)),C=Q,C}function tO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=Nm(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=DQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=RQ(Q)),C=Q,C===r&&(C=w,Q=Ffe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q))),C}function rO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=FQ(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=NQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=Lm(Q)),C=Q,C===r&&(C=w,Q=Lfe(),Q!==r&&(Re=C,Q=LQ(Q)),C=Q,C===r&&(C=w,Q=Nfe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q)))),C}function Rfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));k!==r;)Q.push(k),k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function Ffe(){var C,Q,k,N,Z;if(C=w,Q=[],k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm))))),k!==r)for(;k!==r;)Q.push(k),k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm)))));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function gI(){var C,Q;return C=w,t.substr(w,2)===jm?(Q=jm,w+=2):(Q=r,we===0&&ve(TQ)),Q!==r&&(Re=C,Q=MQ()),C=Q,C===r&&(C=w,t.substr(w,2)===Ym?(Q=Ym,w+=2):(Q=r,we===0&&ve(qm)),Q!==r&&(Re=C,Q=Jm()),C=Q,C===r&&(C=w,t.substr(w,2)===Wm?(Q=Wm,w+=2):(Q=r,we===0&&ve(zm)),Q!==r&&(Re=C,Q=Vm()),C=Q,C===r&&(C=w,t.substr(w,2)===Uf?(Q=Uf,w+=2):(Q=r,we===0&&ve(OQ)),Q!==r&&(Re=C,Q=KQ()),C=Q,C===r&&(C=w,t.substr(w,2)===_m?(Q=_m,w+=2):(Q=r,we===0&&ve(UQ)),Q!==r&&(Re=C,Q=HQ()),C=Q,C===r&&(C=w,t.substr(w,2)===O?(Q=O,w+=2):(Q=r,we===0&&ve(ht)),Q!==r&&(Re=C,Q=Vc()),C=Q,C===r&&(C=w,t.substr(w,2)===xn?(Q=xn,w+=2):(Q=r,we===0&&ve(Hf)),Q!==r&&(Re=C,Q=Ye()),C=Q,C===r&&(C=w,t.substr(w,2)===nl?(Q=nl,w+=2):(Q=r,we===0&&ve(Xm)),Q!==r&&(Re=C,Q=MM()),C=Q,C===r&&(C=w,t.substr(w,2)===GQ?(Q=GQ,w+=2):(Q=r,we===0&&ve(OM)),Q!==r&&(Re=C,Q=fr()),C=Q)))))))),C}function fI(){var C,Q,k,N,Z,Ie,ot,ut,Tr,ni,Yn,$Q;return C=w,t.substr(w,2)===Bs?(Q=Bs,w+=2):(Q=r,we===0&&ve(jQ)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ie=An(),Ie!==r?(Z=[Z,Ie],N=Z):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===Yo?(Q=Yo,w+=2):(Q=r,we===0&&ve($m)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ie=An(),Ie!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Z=[Z,Ie,ot,ut],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===_a?(Q=_a,w+=2):(Q=r,we===0&&ve(et)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ie=An(),Ie!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Tr=An(),Tr!==r?(ni=An(),ni!==r?(Yn=An(),Yn!==r?($Q=An(),$Q!==r?(Z=[Z,Ie,ot,ut,Tr,ni,Yn,$Q],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=YQ(k),C=Q):(w=C,C=r)):(w=C,C=r))),C}function An(){var C;return eI.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(tI)),C}function Nfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r)),k!==r)for(;k!==r;)Q.push(k),k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function _Q(){var C,Q,k,N,Z,Ie;if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;if(k!==r)if(t.charCodeAt(w)===46?(N=Al,w++):(N=r,we===0&&ve(qQ)),N!==r){if(Z=[],De.test(t.charAt(w))?(Ie=t.charAt(w),w++):(Ie=r,we===0&&ve($)),Ie!==r)for(;Ie!==r;)Z.push(Ie),De.test(t.charAt(w))?(Ie=t.charAt(w),w++):(Ie=r,we===0&&ve($));else Z=r;Z!==r?(Re=C,Q=rI(Q,k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;if(C===r){if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;k!==r?(Re=C,Q=iI(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;if(C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=JQ(Q)),C=Q,C===r&&(C=w,Q=zf(),Q!==r&&(Re=C,Q=ll(Q)),C=Q,C===r)))if(C=w,t.charCodeAt(w)===40?(Q=W,w++):(Q=r,we===0&&ve(X)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();Z!==r?(t.charCodeAt(w)===41?(Ie=F,w++):(Ie=r,we===0&&ve(D)),Ie!==r?(Re=C,Q=WQ(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r}return C}function XQ(){var C,Q,k,N,Z,Ie,ot,ut;if(C=w,Q=_Q(),Q!==r){for(k=[],N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ie=nI,w++):(Ie=r,we===0&&ve(Gf)),Ie===r&&(t.charCodeAt(w)===47?(Ie=_c,w++):(Ie=r,we===0&&ve(jf))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ie=nI,w++):(Ie=r,we===0&&ve(Gf)),Ie===r&&(t.charCodeAt(w)===47?(Ie=_c,w++):(Ie=r,we===0&&ve(jf))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function iO(){var C,Q,k,N,Z,Ie,ot,ut;if(C=w,Q=XQ(),Q!==r){for(k=[],N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ie=al,w++):(Ie=r,we===0&&ve(qo)),Ie===r&&(t.charCodeAt(w)===45?(Ie=sl,w++):(Ie=r,we===0&&ve(ol))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ie=al,w++):(Ie=r,we===0&&ve(qo)),Ie===r&&(t.charCodeAt(w)===45?(Ie=sl,w++):(Ie=r,we===0&&ve(ol))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function nO(){var C,Q,k,N,Z,Ie;if(C=w,t.substr(w,3)===Yf?(Q=Yf,w+=3):(Q=r,we===0&&ve(Xc)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();Z!==r?(t.substr(w,2)===xr?(Ie=xr,w+=2):(Ie=r,we===0&&ve(KM)),Ie!==r?(Re=C,Q=Jo(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;return C}function sO(){var C,Q,k,N;return C=w,t.substr(w,2)===Zs?(Q=Zs,w+=2):(Q=r,we===0&&ve(aI)),Q!==r?(k=Jf(),k!==r?(t.charCodeAt(w)===41?(N=F,w++):(N=r,we===0&&ve(D)),N!==r?(Re=C,Q=Zc(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function ZQ(){var C,Q,k,N,Z,Ie;return C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,2)===le?(N=le,w+=2):(N=r,we===0&&ve(xe)),N!==r?(Z=Sfe(),Z!==r?(t.charCodeAt(w)===125?(Ie=Pe,w++):(Ie=r,we===0&&ve(qe)),Ie!==r?(Re=C,Q=Qe(k,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,3)===Ge?(N=Ge,w+=3):(N=r,we===0&&ve(ct)),N!==r?(Re=C,Q=sr(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.charCodeAt(w)===125?(N=Pe,w++):(N=r,we===0&&ve(qe)),N!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.charCodeAt(w)===36?(Q=Afe,w++):(Q=r,we===0&&ve(lfe)),Q!==r?(k=zf(),k!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)))),C}function Lfe(){var C,Q,k;return C=w,Q=Tfe(),Q!==r?(Re=w,k=cfe(Q),k?k=void 0:k=r,k!==r?(Re=C,Q=ufe(Q),C=Q):(w=C,C=r)):(w=C,C=r),C}function Tfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k!==r)for(;k!==r;)Q.push(k),k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r);else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function oO(){var C,Q,k;if(C=w,Q=[],UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM)),k!==r)for(;k!==r;)Q.push(k),UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function zf(){var C,Q,k;if(C=w,Q=[],jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM)),k!==r)for(;k!==r;)Q.push(k),jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function aO(){var C;return gfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(ffe)),C}function AO(){var C;return hfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(pfe)),C}function ke(){var C,Q;if(C=[],qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM)),Q!==r)for(;Q!==r;)C.push(Q),qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM));else C=r;return C}if(lI=n(),lI!==r&&w===t.length)return lI;throw lI!==r&&w{"use strict";function Ike(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Xl(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Xl)}Ike(Xl,Error);Xl.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=B,L=[]),L.push($))}function qe($,G){return new Xl($,null,null,G)}function re($,G,Ce){return new Xl(Xl.buildMessage($,G),$,G,Ce)}function se(){var $,G,Ce,ee;return $=B,G=be(),G!==r?(t.charCodeAt(B)===47?(Ce=s,B++):(Ce=r,K===0&&Pe(o)),Ce!==r?(ee=be(),ee!==r?(b=$,G=a(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=be(),G!==r&&(b=$,G=l(G)),$=G),$}function be(){var $,G,Ce,ee;return $=B,G=ae(),G!==r?(t.charCodeAt(B)===64?(Ce=c,B++):(Ce=r,K===0&&Pe(u)),Ce!==r?(ee=De(),ee!==r?(b=$,G=g(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=ae(),G!==r&&(b=$,G=f(G)),$=G),$}function ae(){var $,G,Ce,ee,Ue;return $=B,t.charCodeAt(B)===64?(G=c,B++):(G=r,K===0&&Pe(u)),G!==r?(Ce=Ae(),Ce!==r?(t.charCodeAt(B)===47?(ee=s,B++):(ee=r,K===0&&Pe(o)),ee!==r?(Ue=Ae(),Ue!==r?(b=$,G=h(),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=Ae(),G!==r&&(b=$,G=h()),$=G),$}function Ae(){var $,G,Ce;if($=B,G=[],p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d)),Ce!==r)for(;Ce!==r;)G.push(Ce),p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d));else G=r;return G!==r&&(b=$,G=h()),$=G,$}function De(){var $,G,Ce;if($=B,G=[],m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(E)),Ce!==r)for(;Ce!==r;)G.push(Ce),m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(E));else G=r;return G!==r&&(b=$,G=h()),$=G,$}if(J=n(),J!==r&&B===t.length)return J;throw J!==r&&B{"use strict";function Fz(t){return typeof t=="undefined"||t===null}function yke(t){return typeof t=="object"&&t!==null}function wke(t){return Array.isArray(t)?t:Fz(t)?[]:[t]}function Bke(t,e){var r,i,n,s;if(e)for(s=Object.keys(e),r=0,i=s.length;r{"use strict";function Lp(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Lp.prototype=Object.create(Error.prototype);Lp.prototype.constructor=Lp;Lp.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};Nz.exports=Lp});var Mz=I((Vot,Lz)=>{"use strict";var Tz=$l();function kP(t,e,r,i,n){this.name=t,this.buffer=e,this.position=r,this.line=i,this.column=n}kP.prototype.getSnippet=function(e,r){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,r=r||75,i="",n=this.position;n>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>r/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;or/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),Tz.repeat(" ",e)+i+a+s+` +`+Tz.repeat(" ",e+this.position-n+i.length)+"^"};kP.prototype.toString=function(e){var r,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(i+=`: +`+r)),i};Lz.exports=kP});var Xr=I((_ot,Oz)=>{"use strict";var Kz=ng(),vke=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Ske=["scalar","sequence","mapping"];function xke(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(i){e[String(i)]=r})}),e}function kke(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(vke.indexOf(r)===-1)throw new Kz('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=xke(e.styleAliases||null),Ske.indexOf(this.kind)===-1)throw new Kz('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}Oz.exports=kke});var ec=I((Xot,Uz)=>{"use strict";var Hz=$l(),hw=ng(),Pke=Xr();function PP(t,e,r){var i=[];return t.include.forEach(function(n){r=PP(n,e,r)}),t[e].forEach(function(n){r.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),r.push(n)}),r.filter(function(n,s){return i.indexOf(s)===-1})}function Dke(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function i(n){t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,r=arguments.length;e{"use strict";var Rke=Xr();Gz.exports=new Rke("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var qz=I(($ot,Yz)=>{"use strict";var Fke=Xr();Yz.exports=new Fke("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var Wz=I((eat,Jz)=>{"use strict";var Nke=Xr();Jz.exports=new Nke("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var pw=I((tat,zz)=>{"use strict";var Lke=ec();zz.exports=new Lke({explicit:[jz(),qz(),Wz()]})});var _z=I((rat,Vz)=>{"use strict";var Tke=Xr();function Mke(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function Oke(){return null}function Kke(t){return t===null}Vz.exports=new Tke("tag:yaml.org,2002:null",{kind:"scalar",resolve:Mke,construct:Oke,predicate:Kke,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var Zz=I((iat,Xz)=>{"use strict";var Uke=Xr();function Hke(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function Gke(t){return t==="true"||t==="True"||t==="TRUE"}function jke(t){return Object.prototype.toString.call(t)==="[object Boolean]"}Xz.exports=new Uke("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Hke,construct:Gke,predicate:jke,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var e4=I((nat,$z)=>{"use strict";var Yke=$l(),qke=Xr();function Jke(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function Wke(t){return 48<=t&&t<=55}function zke(t){return 48<=t&&t<=57}function Vke(t){if(t===null)return!1;var e=t.length,r=0,i=!1,n;if(!e)return!1;if(n=t[r],(n==="-"||n==="+")&&(n=t[++r]),n==="0"){if(r+1===e)return!0;if(n=t[++r],n==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var i4=I((sat,t4)=>{"use strict";var r4=$l(),Zke=Xr(),$ke=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ePe(t){return!(t===null||!$ke.test(t)||t[t.length-1]==="_")}function tPe(t){var e,r,i,n;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),r*e):r*parseFloat(e,10)}var rPe=/^[-+]?[0-9]+e/;function iPe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(r4.isNegativeZero(t))return"-0.0";return r=t.toString(10),rPe.test(r)?r.replace("e",".e"):r}function nPe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!=0||r4.isNegativeZero(t))}t4.exports=new Zke("tag:yaml.org,2002:float",{kind:"scalar",resolve:ePe,construct:tPe,predicate:nPe,represent:iPe,defaultStyle:"lowercase"})});var DP=I((oat,n4)=>{"use strict";var sPe=ec();n4.exports=new sPe({include:[pw()],implicit:[_z(),Zz(),e4(),i4()]})});var RP=I((aat,s4)=>{"use strict";var oPe=ec();s4.exports=new oPe({include:[DP()]})});var l4=I((Aat,o4)=>{"use strict";var aPe=Xr(),a4=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),A4=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function APe(t){return t===null?!1:a4.exec(t)!==null||A4.exec(t)!==null}function lPe(t){var e,r,i,n,s,o,a,l=0,c=null,u,g,f;if(e=a4.exec(t),e===null&&(e=A4.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(r,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function cPe(t){return t.toISOString()}o4.exports=new aPe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:APe,construct:lPe,instanceOf:Date,represent:cPe})});var u4=I((lat,c4)=>{"use strict";var uPe=Xr();function gPe(t){return t==="<<"||t===null}c4.exports=new uPe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:gPe})});var h4=I((cat,g4)=>{"use strict";var tc;try{f4=require,tc=f4("buffer").Buffer}catch(t){}var f4,fPe=Xr(),FP=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function hPe(t){if(t===null)return!1;var e,r,i=0,n=t.length,s=FP;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function pPe(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,s=FP,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return r=n%4*6,r===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):r===18?(a.push(o>>10&255),a.push(o>>2&255)):r===12&&a.push(o>>4&255),tc?tc.from?tc.from(a):new tc(a):a}function dPe(t){var e="",r=0,i,n,s=t.length,o=FP;for(i=0;i>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]),r=(r<<8)+t[i];return n=s%3,n===0?(e+=o[r>>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]):n===2?(e+=o[r>>10&63],e+=o[r>>4&63],e+=o[r<<2&63],e+=o[64]):n===1&&(e+=o[r>>2&63],e+=o[r<<4&63],e+=o[64],e+=o[64]),e}function CPe(t){return tc&&tc.isBuffer(t)}g4.exports=new fPe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:hPe,construct:pPe,predicate:CPe,represent:dPe})});var d4=I((uat,p4)=>{"use strict";var mPe=Xr(),IPe=Object.prototype.hasOwnProperty,EPe=Object.prototype.toString;function yPe(t){if(t===null)return!0;var e=[],r,i,n,s,o,a=t;for(r=0,i=a.length;r{"use strict";var BPe=Xr(),QPe=Object.prototype.toString;function bPe(t){if(t===null)return!0;var e,r,i,n,s,o=t;for(s=new Array(o.length),e=0,r=o.length;e{"use strict";var SPe=Xr(),xPe=Object.prototype.hasOwnProperty;function kPe(t){if(t===null)return!0;var e,r=t;for(e in r)if(xPe.call(r,e)&&r[e]!==null)return!1;return!0}function PPe(t){return t!==null?t:{}}I4.exports=new SPe("tag:yaml.org,2002:set",{kind:"mapping",resolve:kPe,construct:PPe})});var og=I((hat,y4)=>{"use strict";var DPe=ec();y4.exports=new DPe({include:[RP()],implicit:[l4(),u4()],explicit:[h4(),d4(),m4(),E4()]})});var B4=I((pat,w4)=>{"use strict";var RPe=Xr();function FPe(){return!0}function NPe(){}function LPe(){return""}function TPe(t){return typeof t=="undefined"}w4.exports=new RPe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:FPe,construct:NPe,predicate:TPe,represent:LPe})});var b4=I((dat,Q4)=>{"use strict";var MPe=Xr();function OPe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),i="";return!(e[0]==="/"&&(r&&(i=r[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function KPe(t){var e=t,r=/\/([gim]*)$/.exec(t),i="";return e[0]==="/"&&(r&&(i=r[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function UPe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function HPe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}Q4.exports=new MPe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:OPe,construct:KPe,predicate:HPe,represent:UPe})});var x4=I((Cat,v4)=>{"use strict";var dw;try{S4=require,dw=S4("esprima")}catch(t){typeof window!="undefined"&&(dw=window.esprima)}var S4,GPe=Xr();function jPe(t){if(t===null)return!1;try{var e="("+t+")",r=dw.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch(i){return!1}}function YPe(t){var e="("+t+")",r=dw.parse(e,{range:!0}),i=[],n;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function qPe(t){return t.toString()}function JPe(t){return Object.prototype.toString.call(t)==="[object Function]"}v4.exports=new GPe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:jPe,construct:YPe,predicate:JPe,represent:qPe})});var Tp=I((mat,k4)=>{"use strict";var P4=ec();k4.exports=P4.DEFAULT=new P4({include:[og()],explicit:[B4(),b4(),x4()]})});var V4=I((Iat,Mp)=>{"use strict";var Ba=$l(),D4=ng(),WPe=Mz(),R4=og(),zPe=Tp(),QA=Object.prototype.hasOwnProperty,Cw=1,F4=2,N4=3,mw=4,NP=1,VPe=2,L4=3,_Pe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,XPe=/[\x85\u2028\u2029]/,ZPe=/[,\[\]\{\}]/,T4=/^(?:!|!!|![a-z\-]+!)$/i,M4=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function O4(t){return Object.prototype.toString.call(t)}function wo(t){return t===10||t===13}function rc(t){return t===9||t===32}function yn(t){return t===9||t===32||t===10||t===13}function ag(t){return t===44||t===91||t===93||t===123||t===125}function $Pe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function eDe(t){return t===120?2:t===117?4:t===85?8:0}function tDe(t){return 48<=t&&t<=57?t-48:-1}function K4(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` +`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function rDe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var U4=new Array(256),H4=new Array(256);for(var Ag=0;Ag<256;Ag++)U4[Ag]=K4(Ag)?1:0,H4[Ag]=K4(Ag);function iDe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||zPe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function G4(t,e){return new D4(e,new WPe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function st(t,e){throw G4(t,e)}function Iw(t,e){t.onWarning&&t.onWarning.call(null,G4(t,e))}var j4={YAML:function(e,r,i){var n,s,o;e.version!==null&&st(e,"duplication of %YAML directive"),i.length!==1&&st(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&st(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&st(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&Iw(e,"unsupported YAML version of the document")},TAG:function(e,r,i){var n,s;i.length!==2&&st(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],T4.test(n)||st(e,"ill-formed tag handle (first argument) of the TAG directive"),QA.call(e.tagMap,n)&&st(e,'there is a previously declared suffix for "'+n+'" tag handle'),M4.test(s)||st(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function bA(t,e,r,i){var n,s,o,a;if(e1&&(t.result+=Ba.repeat(` +`,e-1))}function nDe(t,e,r){var i,n,s,o,a,l,c,u,g=t.kind,f=t.result,h;if(h=t.input.charCodeAt(t.position),yn(h)||ag(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n)))return!1;for(t.kind="scalar",t.result="",s=o=t.position,a=!1;h!==0;){if(h===58){if(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n))break}else if(h===35){if(i=t.input.charCodeAt(t.position-1),yn(i))break}else{if(t.position===t.lineStart&&Ew(t)||r&&ag(h))break;if(wo(h))if(l=t.line,c=t.lineStart,u=t.lineIndent,jr(t,!1,-1),t.lineIndent>=e){a=!0,h=t.input.charCodeAt(t.position);continue}else{t.position=o,t.line=l,t.lineStart=c,t.lineIndent=u;break}}a&&(bA(t,s,o,!1),TP(t,t.line-l),s=o=t.position,a=!1),rc(h)||(o=t.position+1),h=t.input.charCodeAt(++t.position)}return bA(t,s,o,!1),t.result?!0:(t.kind=g,t.result=f,!1)}function sDe(t,e){var r,i,n;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(bA(t,i,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)i=t.position,t.position++,n=t.position;else return!0;else wo(r)?(bA(t,i,n,!0),TP(t,jr(t,!1,e)),i=n=t.position):t.position===t.lineStart&&Ew(t)?st(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);st(t,"unexpected end of the stream within a single quoted scalar")}function oDe(t,e){var r,i,n,s,o,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return bA(t,r,t.position,!0),t.position++,!0;if(a===92){if(bA(t,r,t.position,!0),a=t.input.charCodeAt(++t.position),wo(a))jr(t,!1,e);else if(a<256&&U4[a])t.result+=H4[a],t.position++;else if((o=eDe(a))>0){for(n=o,s=0;n>0;n--)a=t.input.charCodeAt(++t.position),(o=$Pe(a))>=0?s=(s<<4)+o:st(t,"expected hexadecimal character");t.result+=rDe(s),t.position++}else st(t,"unknown escape sequence");r=i=t.position}else wo(a)?(bA(t,r,i,!0),TP(t,jr(t,!1,e)),r=i=t.position):t.position===t.lineStart&&Ew(t)?st(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}st(t,"unexpected end of the stream within a double quoted scalar")}function aDe(t,e){var r=!0,i,n=t.tag,s,o=t.anchor,a,l,c,u,g,f={},h,p,d,m;if(m=t.input.charCodeAt(t.position),m===91)l=93,g=!1,s=[];else if(m===123)l=125,g=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),m=t.input.charCodeAt(++t.position);m!==0;){if(jr(t,!0,e),m=t.input.charCodeAt(t.position),m===l)return t.position++,t.tag=n,t.anchor=o,t.kind=g?"mapping":"sequence",t.result=s,!0;r||st(t,"missed comma between flow collection entries"),p=h=d=null,c=u=!1,m===63&&(a=t.input.charCodeAt(t.position+1),yn(a)&&(c=u=!0,t.position++,jr(t,!0,e))),i=t.line,cg(t,e,Cw,!1,!0),p=t.tag,h=t.result,jr(t,!0,e),m=t.input.charCodeAt(t.position),(u||t.line===i)&&m===58&&(c=!0,m=t.input.charCodeAt(++t.position),jr(t,!0,e),cg(t,e,Cw,!1,!0),d=t.result),g?lg(t,s,f,p,h,d):c?s.push(lg(t,null,f,p,h,d)):s.push(h),jr(t,!0,e),m=t.input.charCodeAt(t.position),m===44?(r=!0,m=t.input.charCodeAt(++t.position)):r=!1}st(t,"unexpected end of the stream within a flow collection")}function ADe(t,e){var r,i,n=NP,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=t.input.charCodeAt(t.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(t.kind="scalar",t.result="";g!==0;)if(g=t.input.charCodeAt(++t.position),g===43||g===45)NP===n?n=g===43?L4:VPe:st(t,"repeat of a chomping mode identifier");else if((u=tDe(g))>=0)u===0?st(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?st(t,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(rc(g)){do g=t.input.charCodeAt(++t.position);while(rc(g));if(g===35)do g=t.input.charCodeAt(++t.position);while(!wo(g)&&g!==0)}for(;g!==0;){for(LP(t),t.lineIndent=0,g=t.input.charCodeAt(t.position);(!o||t.lineIndenta&&(a=t.lineIndent),wo(g)){l++;continue}if(t.lineIndente)&&l!==0)st(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(cg(t,e,mw,!0,n)&&(p?f=t.result:h=t.result),p||(lg(t,c,u,g,f,h,s,o),g=f=h=null),jr(t,!0,-1),m=t.input.charCodeAt(t.position)),t.lineIndent>e&&m!==0)st(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),g=0,f=t.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result)?(t.result=h.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):st(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):st(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function fDe(t){var e=t.position,r,i,n,s=!1,o;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(o=t.input.charCodeAt(t.position))!==0&&(jr(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||o!==37));){for(s=!0,o=t.input.charCodeAt(++t.position),r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);for(i=t.input.slice(r,t.position),n=[],i.length<1&&st(t,"directive name must not be less than one character in length");o!==0;){for(;rc(o);)o=t.input.charCodeAt(++t.position);if(o===35){do o=t.input.charCodeAt(++t.position);while(o!==0&&!wo(o));break}if(wo(o))break;for(r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(r,t.position))}o!==0&&LP(t),QA.call(j4,i)?j4[i](t,i,n):Iw(t,'unknown document directive "'+i+'"')}if(jr(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,jr(t,!0,-1)):s&&st(t,"directives end mark is expected"),cg(t,t.lineIndent-1,mw,!1,!0),jr(t,!0,-1),t.checkLineBreaks&&XPe.test(t.input.slice(e,t.position))&&Iw(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Ew(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,jr(t,!0,-1));return}if(t.position{"use strict";var Op=$l(),Kp=ng(),dDe=Tp(),CDe=og(),_4=Object.prototype.toString,X4=Object.prototype.hasOwnProperty,mDe=9,Up=10,IDe=13,EDe=32,yDe=33,wDe=34,Z4=35,BDe=37,QDe=38,bDe=39,vDe=42,$4=44,SDe=45,e5=58,xDe=61,kDe=62,PDe=63,DDe=64,t5=91,r5=93,RDe=96,i5=123,FDe=124,n5=125,Ri={};Ri[0]="\\0";Ri[7]="\\a";Ri[8]="\\b";Ri[9]="\\t";Ri[10]="\\n";Ri[11]="\\v";Ri[12]="\\f";Ri[13]="\\r";Ri[27]="\\e";Ri[34]='\\"';Ri[92]="\\\\";Ri[133]="\\N";Ri[160]="\\_";Ri[8232]="\\L";Ri[8233]="\\P";var NDe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function LDe(t,e){var r,i,n,s,o,a,l;if(e===null)return{};for(r={},i=Object.keys(e),n=0,s=i.length;n0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}else{for(s=0;si&&t[g+1]!==" ",g=s);else if(!ug(o))return yw;a=s>0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}c=c||u&&s-g-1>i&&t[g+1]!==" "}return!l&&!c?f&&!n(t)?l5:c5:r>9&&A5(t)?yw:c?g5:u5}function jDe(t,e,r,i){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&NDe.indexOf(e)!==-1)return"'"+e+"'";var n=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-n),o=i||t.flowLevel>-1&&r>=t.flowLevel;function a(l){return MDe(t,l)}switch(UDe(e,o,t.indent,s,a)){case l5:return e;case c5:return"'"+e.replace(/'/g,"''")+"'";case u5:return"|"+f5(e,t.indent)+h5(o5(e,n));case g5:return">"+f5(e,t.indent)+h5(o5(HDe(e,s),n));case yw:return'"'+GDe(e,s)+'"';default:throw new Kp("impossible error: invalid scalar style")}}()}function f5(t,e){var r=A5(t)?String(e):"",i=t[t.length-1]===` +`,n=i&&(t[t.length-2]===` +`||t===` +`),s=n?"+":i?"":"-";return r+s+` +`}function h5(t){return t[t.length-1]===` +`?t.slice(0,-1):t}function HDe(t,e){for(var r=/(\n+)([^\n]*)/g,i=function(){var c=t.indexOf(` +`);return c=c!==-1?c:t.length,r.lastIndex=c,p5(t.slice(0,c),e)}(),n=t[0]===` +`||t[0]===" ",s,o;o=r.exec(t);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` +`:"")+p5(l,e),n=s}return i}function p5(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=r.exec(t);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` +`+t.slice(n,s),n=s+1),o=a;return l+=` +`,t.length-n>e&&o>n?l+=t.slice(n,o)+` +`+t.slice(o+1):l+=t.slice(n),l.slice(1)}function GDe(t){for(var e="",r,i,n,s=0;s=55296&&r<=56319&&(i=t.charCodeAt(s+1),i>=56320&&i<=57343)){e+=s5((r-55296)*1024+i-56320+65536),s++;continue}n=Ri[r],e+=!n&&ug(r)?t[s]:n||s5(r)}return e}function YDe(t,e,r){var i="",n=t.tag,s,o;for(s=0,o=r.length;s1024&&(u+="? "),u+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),!!ic(t,e,c,!1,!1)&&(u+=t.dump,i+=u));t.tag=n,t.dump="{"+i+"}"}function WDe(t,e,r,i){var n="",s=t.tag,o=Object.keys(r),a,l,c,u,g,f;if(t.sortKeys===!0)o.sort();else if(typeof t.sortKeys=="function")o.sort(t.sortKeys);else if(t.sortKeys)throw new Kp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(t.dump&&Up===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,g&&(f+=OP(t,e)),!!ic(t,e+1,u,!0,g)&&(t.dump&&Up===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,n+=f));t.tag=s,t.dump=n||"{}"}function d5(t,e,r){var i,n,s,o,a,l;for(n=r?t.explicitTypes:t.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');t.dump=i}return!0}return!1}function ic(t,e,r,i,n,s){t.tag=null,t.dump=r,d5(t,r,!1)||d5(t,r,!0);var o=_4.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=t.duplicates.indexOf(r),c=l!==-1),(t.tag!==null&&t.tag!=="?"||c||t.indent!==2&&e>0)&&(n=!1),c&&t.usedDuplicates[l])t.dump="*ref_"+l;else{if(a&&c&&!t.usedDuplicates[l]&&(t.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(t.dump).length!==0?(WDe(t,e,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(JDe(t,e,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump));else if(o==="[object Array]"){var u=t.noArrayIndent&&e>0?e-1:e;i&&t.dump.length!==0?(qDe(t,u,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(YDe(t,u,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump))}else if(o==="[object String]")t.tag!=="?"&&jDe(t,t.dump,e,s);else{if(t.skipInvalid)return!1;throw new Kp("unacceptable kind of an object to dump "+o)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function zDe(t,e){var r=[],i=[],n,s;for(UP(t,r,i),n=0,s=i.length;n{"use strict";var ww=V4(),I5=m5();function Bw(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Qr.exports.Type=Xr();Qr.exports.Schema=ec();Qr.exports.FAILSAFE_SCHEMA=pw();Qr.exports.JSON_SCHEMA=DP();Qr.exports.CORE_SCHEMA=RP();Qr.exports.DEFAULT_SAFE_SCHEMA=og();Qr.exports.DEFAULT_FULL_SCHEMA=Tp();Qr.exports.load=ww.load;Qr.exports.loadAll=ww.loadAll;Qr.exports.safeLoad=ww.safeLoad;Qr.exports.safeLoadAll=ww.safeLoadAll;Qr.exports.dump=I5.dump;Qr.exports.safeDump=I5.safeDump;Qr.exports.YAMLException=ng();Qr.exports.MINIMAL_SCHEMA=pw();Qr.exports.SAFE_SCHEMA=og();Qr.exports.DEFAULT_SCHEMA=Tp();Qr.exports.scan=Bw("scan");Qr.exports.parse=Bw("parse");Qr.exports.compose=Bw("compose");Qr.exports.addConstructor=Bw("addConstructor")});var w5=I((wat,y5)=>{"use strict";var _De=E5();y5.exports=_De});var Q5=I((Bat,B5)=>{"use strict";function XDe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function nc(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,nc)}XDe(nc,Error);nc.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[xe]:le})))},H=function(x){return x},L=function(x){return x},K=Yo("correct indentation"),J=" ",ne=fr(" ",!1),q=function(x){return x.length===Zc*aI},A=function(x){return x.length===(Zc+1)*aI},V=function(){return Zc++,!0},W=function(){return Zc--,!0},X=function(){return Xm()},F=Yo("pseudostring"),D=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,he=Bs(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),pe=/^[^\r\n\t ,\][{}:#"']/,Ne=Bs(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Xm().replace(/^ *| *$/g,"")},qe="--",re=fr("--",!1),se=/^[a-zA-Z\/0-9]/,be=Bs([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),ae=/^[^\r\n\t :,]/,Ae=Bs(["\r",` +`," "," ",":",","],!0,!1),De="null",$=fr("null",!1),G=function(){return null},Ce="true",ee=fr("true",!1),Ue=function(){return!0},Oe="false",vt=fr("false",!1),dt=function(){return!1},ri=Yo("string"),ii='"',an=fr('"',!1),yr=function(){return""},Ki=function(x){return x},Qi=function(x){return x.join("")},Go=/^[^"\\\0-\x1F\x7F]/,wr=Bs(['"',"\\",["\0",""],"\x7F"],!0,!1),Ui='\\"',ws=fr('\\"',!1),Tf=function(){return'"'},Mf="\\\\",Rm=fr("\\\\",!1),Fm=function(){return"\\"},Nm="\\/",DQ=fr("\\/",!1),RQ=function(){return"/"},Of="\\b",FQ=fr("\\b",!1),NQ=function(){return"\b"},Lm="\\f",LQ=fr("\\f",!1),Va=function(){return"\f"},jo="\\n",Tm=fr("\\n",!1),Mm=function(){return` +`},te="\\r",Om=fr("\\r",!1),Km=function(){return"\r"},il="\\t",Um=fr("\\t",!1),Hm=function(){return" "},Kf="\\u",Gm=fr("\\u",!1),jm=function(x,U,le,xe){return String.fromCharCode(parseInt(`0x${x}${U}${le}${xe}`))},TQ=/^[0-9a-fA-F]/,MQ=Bs([["0","9"],["a","f"],["A","F"]],!1,!1),Ym=Yo("blank space"),qm=/^[ \t]/,Jm=Bs([" "," "],!1,!1),Wm=Yo("white space"),zm=/^[ \t\n\r]/,Vm=Bs([" "," ",` +`,"\r"],!1,!1),Uf=`\r +`,OQ=fr(`\r +`,!1),KQ=` +`,_m=fr(` +`,!1),UQ="\r",HQ=fr("\r",!1),O=0,ht=0,Vc=[{line:1,column:1}],xn=0,Hf=[],Ye=0,nl;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Xm(){return t.substring(ht,O)}function MM(){return _a(ht,O)}function GQ(x,U){throw U=U!==void 0?U:_a(ht,O),eI([Yo(x)],t.substring(ht,O),U)}function OM(x,U){throw U=U!==void 0?U:_a(ht,O),YQ(x,U)}function fr(x,U){return{type:"literal",text:x,ignoreCase:U}}function Bs(x,U,le){return{type:"class",parts:x,inverted:U,ignoreCase:le}}function jQ(){return{type:"any"}}function Zm(){return{type:"end"}}function Yo(x){return{type:"other",description:x}}function $m(x){var U=Vc[x],le;if(U)return U;for(le=x-1;!Vc[le];)le--;for(U=Vc[le],U={line:U.line,column:U.column};lexn&&(xn=O,Hf=[]),Hf.push(x))}function YQ(x,U){return new nc(x,null,null,U)}function eI(x,U,le){return new nc(nc.buildMessage(x,U),x,U,le)}function tI(){var x;return x=ol(),x}function Xa(){var x,U,le;for(x=O,U=[],le=sl();le!==r;)U.push(le),le=sl();return U!==r&&(ht=x,U=s(U)),x=U,x}function sl(){var x,U,le,xe,Qe;return x=O,U=Al(),U!==r?(t.charCodeAt(O)===45?(le=o,O++):(le=r,Ye===0&&et(a)),le!==r?(xe=xr(),xe!==r?(Qe=qo(),Qe!==r?(ht=x,U=l(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x}function ol(){var x,U,le;for(x=O,U=[],le=al();le!==r;)U.push(le),le=al();return U!==r&&(ht=x,U=c(U)),x=U,x}function al(){var x,U,le,xe,Qe,Ge,ct,sr,Wo;if(x=O,U=xr(),U===r&&(U=null),U!==r){if(le=O,t.charCodeAt(O)===35?(xe=u,O++):(xe=r,Ye===0&&et(g)),xe!==r){if(Qe=[],Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r),Ge!==r)for(;Ge!==r;)Qe.push(Ge),Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r);else Qe=r;Qe!==r?(xe=[xe,Qe],le=xe):(O=le,le=r)}else O=le,le=r;if(le===r&&(le=null),le!==r){if(xe=[],Qe=Jo(),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=Jo();else xe=r;xe!==r?(ht=x,U=h(),x=U):(O=x,x=r)}else O=x,x=r}else O=x,x=r;if(x===r&&(x=O,U=Al(),U!==r?(le=JQ(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Al(),U!==r?(le=ll(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))){if(x=O,U=Al(),U!==r)if(le=ll(),le!==r)if(xe=xr(),xe!==r)if(Qe=nI(),Qe!==r){if(Ge=[],ct=Jo(),ct!==r)for(;ct!==r;)Ge.push(ct),ct=Jo();else Ge=r;Ge!==r?(ht=x,U=m(le,Qe),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;else O=x,x=r;else O=x,x=r;if(x===r)if(x=O,U=Al(),U!==r)if(le=ll(),le!==r){if(xe=[],Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=E,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=E,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r);else xe=r;xe!==r?(Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(t.charCodeAt(O)===58?(Ge=p,O++):(Ge=r,Ye===0&&et(d)),Ge!==r?(ct=xr(),ct===r&&(ct=null),ct!==r?(sr=qo(),sr!==r?(ht=x,U=R(le,xe,sr),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)}else O=x,x=r;else O=x,x=r}return x}function qo(){var x,U,le,xe,Qe,Ge,ct;if(x=O,U=O,Ye++,le=O,xe=Zs(),xe!==r?(Qe=qQ(),Qe!==r?(t.charCodeAt(O)===45?(Ge=o,O++):(Ge=r,Ye===0&&et(a)),Ge!==r?(ct=xr(),ct!==r?(xe=[xe,Qe,Ge,ct],le=xe):(O=le,le=r)):(O=le,le=r)):(O=le,le=r)):(O=le,le=r),Ye--,le!==r?(O=U,U=void 0):U=r,U!==r?(le=Jo(),le!==r?(xe=rI(),xe!==r?(Qe=Xa(),Qe!==r?(Ge=iI(),Ge!==r?(ht=x,U=H(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Zs(),U!==r?(le=rI(),le!==r?(xe=ol(),xe!==r?(Qe=iI(),Qe!==r?(ht=x,U=H(xe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))if(x=O,U=WQ(),U!==r){if(le=[],xe=Jo(),xe!==r)for(;xe!==r;)le.push(xe),xe=Jo();else le=r;le!==r?(ht=x,U=L(U),x=U):(O=x,x=r)}else O=x,x=r;return x}function Al(){var x,U,le;for(Ye++,x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=q(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),Ye--,x===r&&(U=r,Ye===0&&et(K)),x}function qQ(){var x,U,le;for(x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=A(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),x}function rI(){var x;return ht=O,x=V(),x?x=void 0:x=r,x}function iI(){var x;return ht=O,x=W(),x?x=void 0:x=r,x}function JQ(){var x;return x=cl(),x===r&&(x=Gf()),x}function ll(){var x,U,le;if(x=cl(),x===r){if(x=O,U=[],le=_c(),le!==r)for(;le!==r;)U.push(le),le=_c();else U=r;U!==r&&(ht=x,U=X()),x=U}return x}function WQ(){var x;return x=jf(),x===r&&(x=sI(),x===r&&(x=cl(),x===r&&(x=Gf()))),x}function nI(){var x;return x=jf(),x===r&&(x=cl(),x===r&&(x=_c())),x}function Gf(){var x,U,le,xe,Qe,Ge;if(Ye++,x=O,D.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(he)),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;return Ye--,x===r&&(U=r,Ye===0&&et(F)),x}function _c(){var x,U,le,xe,Qe;if(x=O,t.substr(O,2)===qe?(U=qe,O+=2):(U=r,Ye===0&&et(re)),U===r&&(U=null),U!==r)if(se.test(t.charAt(O))?(le=t.charAt(O),O++):(le=r,Ye===0&&et(be)),le!==r){for(xe=[],ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));Qe!==r;)xe.push(Qe),ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));xe!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;return x}function jf(){var x,U;return x=O,t.substr(O,4)===De?(U=De,O+=4):(U=r,Ye===0&&et($)),U!==r&&(ht=x,U=G()),x=U,x}function sI(){var x,U;return x=O,t.substr(O,4)===Ce?(U=Ce,O+=4):(U=r,Ye===0&&et(ee)),U!==r&&(ht=x,U=Ue()),x=U,x===r&&(x=O,t.substr(O,5)===Oe?(U=Oe,O+=5):(U=r,Ye===0&&et(vt)),U!==r&&(ht=x,U=dt()),x=U),x}function cl(){var x,U,le,xe;return Ye++,x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(t.charCodeAt(O)===34?(le=ii,O++):(le=r,Ye===0&&et(an)),le!==r?(ht=x,U=yr(),x=U):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(le=oI(),le!==r?(t.charCodeAt(O)===34?(xe=ii,O++):(xe=r,Ye===0&&et(an)),xe!==r?(ht=x,U=Ki(le),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)),Ye--,x===r&&(U=r,Ye===0&&et(ri)),x}function oI(){var x,U,le;if(x=O,U=[],le=Yf(),le!==r)for(;le!==r;)U.push(le),le=Yf();else U=r;return U!==r&&(ht=x,U=Qi(U)),x=U,x}function Yf(){var x,U,le,xe,Qe,Ge;return Go.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(wr)),x===r&&(x=O,t.substr(O,2)===Ui?(U=Ui,O+=2):(U=r,Ye===0&&et(ws)),U!==r&&(ht=x,U=Tf()),x=U,x===r&&(x=O,t.substr(O,2)===Mf?(U=Mf,O+=2):(U=r,Ye===0&&et(Rm)),U!==r&&(ht=x,U=Fm()),x=U,x===r&&(x=O,t.substr(O,2)===Nm?(U=Nm,O+=2):(U=r,Ye===0&&et(DQ)),U!==r&&(ht=x,U=RQ()),x=U,x===r&&(x=O,t.substr(O,2)===Of?(U=Of,O+=2):(U=r,Ye===0&&et(FQ)),U!==r&&(ht=x,U=NQ()),x=U,x===r&&(x=O,t.substr(O,2)===Lm?(U=Lm,O+=2):(U=r,Ye===0&&et(LQ)),U!==r&&(ht=x,U=Va()),x=U,x===r&&(x=O,t.substr(O,2)===jo?(U=jo,O+=2):(U=r,Ye===0&&et(Tm)),U!==r&&(ht=x,U=Mm()),x=U,x===r&&(x=O,t.substr(O,2)===te?(U=te,O+=2):(U=r,Ye===0&&et(Om)),U!==r&&(ht=x,U=Km()),x=U,x===r&&(x=O,t.substr(O,2)===il?(U=il,O+=2):(U=r,Ye===0&&et(Um)),U!==r&&(ht=x,U=Hm()),x=U,x===r&&(x=O,t.substr(O,2)===Kf?(U=Kf,O+=2):(U=r,Ye===0&&et(Gm)),U!==r?(le=Xc(),le!==r?(xe=Xc(),xe!==r?(Qe=Xc(),Qe!==r?(Ge=Xc(),Ge!==r?(ht=x,U=jm(le,xe,Qe,Ge),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)))))))))),x}function Xc(){var x;return TQ.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(MQ)),x}function xr(){var x,U;if(Ye++,x=[],qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm)),U!==r)for(;U!==r;)x.push(U),qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Ym)),x}function KM(){var x,U;if(Ye++,x=[],zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm)),U!==r)for(;U!==r;)x.push(U),zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Wm)),x}function Jo(){var x,U,le,xe,Qe,Ge;if(x=O,U=Zs(),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(U=[U,le],x=U):(O=x,x=r)}else O=x,x=r;return x}function Zs(){var x;return t.substr(O,2)===Uf?(x=Uf,O+=2):(x=r,Ye===0&&et(OQ)),x===r&&(t.charCodeAt(O)===10?(x=KQ,O++):(x=r,Ye===0&&et(_m)),x===r&&(t.charCodeAt(O)===13?(x=UQ,O++):(x=r,Ye===0&&et(HQ)))),x}let aI=2,Zc=0;if(nl=n(),nl!==r&&O===t.length)return nl;throw nl!==r&&O{var fRe=typeof global=="object"&&global&&global.Object===Object&&global;V5.exports=fRe});var Ks=I((Zat,_5)=>{var hRe=WP(),pRe=typeof self=="object"&&self&&self.Object===Object&&self,dRe=hRe||pRe||Function("return this")();_5.exports=dRe});var ac=I(($at,X5)=>{var CRe=Ks(),mRe=CRe.Symbol;X5.exports=mRe});var $5=I((eAt,Z5)=>{function IRe(t,e){for(var r=-1,i=t==null?0:t.length,n=Array(i);++r{var ERe=Array.isArray;e6.exports=ERe});var n6=I((rAt,t6)=>{var r6=ac(),i6=Object.prototype,yRe=i6.hasOwnProperty,wRe=i6.toString,Jp=r6?r6.toStringTag:void 0;function BRe(t){var e=yRe.call(t,Jp),r=t[Jp];try{t[Jp]=void 0;var i=!0}catch(s){}var n=wRe.call(t);return i&&(e?t[Jp]=r:delete t[Jp]),n}t6.exports=BRe});var o6=I((iAt,s6)=>{var QRe=Object.prototype,bRe=QRe.toString;function vRe(t){return bRe.call(t)}s6.exports=vRe});var Ac=I((nAt,a6)=>{var A6=ac(),SRe=n6(),xRe=o6(),kRe="[object Null]",PRe="[object Undefined]",l6=A6?A6.toStringTag:void 0;function DRe(t){return t==null?t===void 0?PRe:kRe:l6&&l6 in Object(t)?SRe(t):xRe(t)}a6.exports=DRe});var Qo=I((sAt,c6)=>{function RRe(t){return t!=null&&typeof t=="object"}c6.exports=RRe});var Nw=I((oAt,u6)=>{var FRe=Ac(),NRe=Qo(),LRe="[object Symbol]";function TRe(t){return typeof t=="symbol"||NRe(t)&&FRe(t)==LRe}u6.exports=TRe});var C6=I((aAt,g6)=>{var f6=ac(),MRe=$5(),ORe=As(),KRe=Nw(),URe=1/0,h6=f6?f6.prototype:void 0,p6=h6?h6.toString:void 0;function d6(t){if(typeof t=="string")return t;if(ORe(t))return MRe(t,d6)+"";if(KRe(t))return p6?p6.call(t):"";var e=t+"";return e=="0"&&1/t==-URe?"-0":e}g6.exports=d6});var gg=I((AAt,m6)=>{var HRe=C6();function GRe(t){return t==null?"":HRe(t)}m6.exports=GRe});var zP=I((lAt,I6)=>{function jRe(t,e,r){var i=-1,n=t.length;e<0&&(e=-e>n?0:n+e),r=r>n?n:r,r<0&&(r+=n),n=e>r?0:r-e>>>0,e>>>=0;for(var s=Array(n);++i{var YRe=zP();function qRe(t,e,r){var i=t.length;return r=r===void 0?i:r,!e&&r>=i?t:YRe(t,e,r)}E6.exports=qRe});var VP=I((uAt,w6)=>{var JRe="\\ud800-\\udfff",WRe="\\u0300-\\u036f",zRe="\\ufe20-\\ufe2f",VRe="\\u20d0-\\u20ff",_Re=WRe+zRe+VRe,XRe="\\ufe0e\\ufe0f",ZRe="\\u200d",$Re=RegExp("["+ZRe+JRe+_Re+XRe+"]");function eFe(t){return $Re.test(t)}w6.exports=eFe});var Q6=I((gAt,B6)=>{function tFe(t){return t.split("")}B6.exports=tFe});var R6=I((fAt,b6)=>{var v6="\\ud800-\\udfff",rFe="\\u0300-\\u036f",iFe="\\ufe20-\\ufe2f",nFe="\\u20d0-\\u20ff",sFe=rFe+iFe+nFe,oFe="\\ufe0e\\ufe0f",aFe="["+v6+"]",_P="["+sFe+"]",XP="\\ud83c[\\udffb-\\udfff]",AFe="(?:"+_P+"|"+XP+")",S6="[^"+v6+"]",x6="(?:\\ud83c[\\udde6-\\uddff]){2}",k6="[\\ud800-\\udbff][\\udc00-\\udfff]",lFe="\\u200d",P6=AFe+"?",D6="["+oFe+"]?",cFe="(?:"+lFe+"(?:"+[S6,x6,k6].join("|")+")"+D6+P6+")*",uFe=D6+P6+cFe,gFe="(?:"+[S6+_P+"?",_P,x6,k6,aFe].join("|")+")",fFe=RegExp(XP+"(?="+XP+")|"+gFe+uFe,"g");function hFe(t){return t.match(fFe)||[]}b6.exports=hFe});var N6=I((hAt,F6)=>{var pFe=Q6(),dFe=VP(),CFe=R6();function mFe(t){return dFe(t)?CFe(t):pFe(t)}F6.exports=mFe});var T6=I((pAt,L6)=>{var IFe=y6(),EFe=VP(),yFe=N6(),wFe=gg();function BFe(t){return function(e){e=wFe(e);var r=EFe(e)?yFe(e):void 0,i=r?r[0]:e.charAt(0),n=r?IFe(r,1).join(""):e.slice(1);return i[t]()+n}}L6.exports=BFe});var O6=I((dAt,M6)=>{var QFe=T6(),bFe=QFe("toUpperCase");M6.exports=bFe});var ZP=I((CAt,K6)=>{var vFe=gg(),SFe=O6();function xFe(t){return SFe(vFe(t).toLowerCase())}K6.exports=xFe});var H6=I((mAt,U6)=>{"use strict";U6.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Wp=I((IAt,$P)=>{"use strict";var kFe=H6(),G6=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,i=()=>{r--,e.length>0&&e.shift()()},n=(a,l,...c)=>{r++;let u=kFe(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{rnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),o};$P.exports=G6;$P.exports.default=G6});var X6=I((FAt,Mw)=>{function PFe(){var t=0,e=1,r=2,i=3,n=4,s=5,o=6,a=7,l=8,c=9,u=10,g=11,f=12,h=13,p=14,d=15,m=16,E=17,B=0,b=1,R=2,H=3,L=4;function K(A,V){return 55296<=A.charCodeAt(V)&&A.charCodeAt(V)<=56319&&56320<=A.charCodeAt(V+1)&&A.charCodeAt(V+1)<=57343}function J(A,V){V===void 0&&(V=0);var W=A.charCodeAt(V);if(55296<=W&&W<=56319&&V=1){var X=A.charCodeAt(V-1),F=W;return 55296<=X&&X<=56319?(X-55296)*1024+(F-56320)+65536:F}return W}function ne(A,V,W){var X=[A].concat(V).concat([W]),F=X[X.length-2],D=W,he=X.lastIndexOf(p);if(he>1&&X.slice(1,he).every(function(Pe){return Pe==i})&&[i,h,E].indexOf(A)==-1)return R;var pe=X.lastIndexOf(n);if(pe>0&&X.slice(1,pe).every(function(Pe){return Pe==n})&&[f,n].indexOf(F)==-1)return X.filter(function(Pe){return Pe==n}).length%2==1?H:L;if(F==t&&D==e)return B;if(F==r||F==t||F==e)return D==p&&V.every(function(Pe){return Pe==i})?R:b;if(D==r||D==t||D==e)return b;if(F==o&&(D==o||D==a||D==c||D==u))return B;if((F==c||F==a)&&(D==a||D==l))return B;if((F==u||F==l)&&D==l)return B;if(D==i||D==d)return B;if(D==s)return B;if(F==f)return B;var Ne=X.indexOf(i)!=-1?X.lastIndexOf(i)-1:X.length-2;return[h,E].indexOf(X[Ne])!=-1&&X.slice(Ne+1,-1).every(function(Pe){return Pe==i})&&D==p||F==d&&[m,E].indexOf(D)!=-1?B:V.indexOf(n)!=-1?R:F==n&&D==n?B:b}this.nextBreak=function(A,V){if(V===void 0&&(V=0),V<0)return 0;if(V>=A.length-1)return A.length;for(var W=q(J(A,V)),X=[],F=V+1;F{var DFe=X6(),RFe=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,FFe=new DFe;Z6.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let i=r-e,n="",s=0,o=0;for(;t.length>0;){let a=t.match(RFe)||[t,t,void 0],l=FFe.splitGraphemes(a[1]),c=Math.min(e-s,l.length);l=l.slice(c);let u=Math.min(i-o,l.length);n+=l.slice(0,u).join(""),s+=c,o+=u,typeof a[2]!="undefined"&&(n+=a[2]),t=t.slice(a[0].length)}return n}});var fg=I((alt,f9)=>{"use strict";var h9=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]),olt=f9.exports=t=>t?Object.keys(t).map(e=>[h9.has(e)?h9.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var hg=I((Alt,p9)=>{"use strict";var JFe=require("events"),d9=require("stream"),_p=Rh(),C9=require("string_decoder").StringDecoder,va=Symbol("EOF"),Xp=Symbol("maybeEmitEnd"),xA=Symbol("emittedEnd"),Gw=Symbol("emittingEnd"),jw=Symbol("closed"),m9=Symbol("read"),iD=Symbol("flush"),I9=Symbol("flushChunk"),Bn=Symbol("encoding"),Sa=Symbol("decoder"),Yw=Symbol("flowing"),Zp=Symbol("paused"),$p=Symbol("resume"),rn=Symbol("bufferLength"),E9=Symbol("bufferPush"),nD=Symbol("bufferShift"),Ni=Symbol("objectMode"),Li=Symbol("destroyed"),y9=global._MP_NO_ITERATOR_SYMBOLS_!=="1",WFe=y9&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),zFe=y9&&Symbol.iterator||Symbol("iterator not implemented"),w9=t=>t==="end"||t==="finish"||t==="prefinish",VFe=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,_Fe=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);p9.exports=class B9 extends d9{constructor(e){super();this[Yw]=!1,this[Zp]=!1,this.pipes=new _p,this.buffer=new _p,this[Ni]=e&&e.objectMode||!1,this[Ni]?this[Bn]=null:this[Bn]=e&&e.encoding||null,this[Bn]==="buffer"&&(this[Bn]=null),this[Sa]=this[Bn]?new C9(this[Bn]):null,this[va]=!1,this[xA]=!1,this[Gw]=!1,this[jw]=!1,this.writable=!0,this.readable=!0,this[rn]=0,this[Li]=!1}get bufferLength(){return this[rn]}get encoding(){return this[Bn]}set encoding(e){if(this[Ni])throw new Error("cannot set encoding in objectMode");if(this[Bn]&&e!==this[Bn]&&(this[Sa]&&this[Sa].lastNeed||this[rn]))throw new Error("cannot change encoding");this[Bn]!==e&&(this[Sa]=e?new C9(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Sa].write(r)))),this[Bn]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ni]}set objectMode(e){this[Ni]=this[Ni]||!!e}write(e,r,i){if(this[va])throw new Error("write after end");return this[Li]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[Ni]&&!Buffer.isBuffer(e)&&(_Fe(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):VFe(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof e=="string"&&!this[Ni]&&!(r===this[Bn]&&!this[Sa].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Bn]&&(e=this[Sa].write(e)),this.flowing?(this[rn]!==0&&this[iD](!0),this.emit("data",e)):this[E9](e),this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(e){if(this[Li])return null;try{return this[rn]===0||e===0||e>this[rn]?null:(this[Ni]&&(e=null),this.buffer.length>1&&!this[Ni]&&(this.encoding?this.buffer=new _p([Array.from(this.buffer).join("")]):this.buffer=new _p([Buffer.concat(Array.from(this.buffer),this[rn])])),this[m9](e||null,this.buffer.head.value))}finally{this[Xp]()}}[m9](e,r){return e===r.length||e===null?this[nD]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[rn]-=e),this.emit("data",r),!this.buffer.length&&!this[va]&&this.emit("drain"),r}end(e,r,i){return typeof e=="function"&&(i=e,e=null),typeof r=="function"&&(i=r,r="utf8"),e&&this.write(e,r),i&&this.once("end",i),this[va]=!0,this.writable=!1,(this.flowing||!this[Zp])&&this[Xp](),this}[$p](){this[Li]||(this[Zp]=!1,this[Yw]=!0,this.emit("resume"),this.buffer.length?this[iD]():this[va]?this[Xp]():this.emit("drain"))}resume(){return this[$p]()}pause(){this[Yw]=!1,this[Zp]=!0}get destroyed(){return this[Li]}get flowing(){return this[Yw]}get paused(){return this[Zp]}[E9](e){return this[Ni]?this[rn]+=1:this[rn]+=e.length,this.buffer.push(e)}[nD](){return this.buffer.length&&(this[Ni]?this[rn]-=1:this[rn]-=this.buffer.head.value.length),this.buffer.shift()}[iD](e){do;while(this[I9](this[nD]()));!e&&!this.buffer.length&&!this[va]&&this.emit("drain")}[I9](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Li])return;let i=this[xA];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:e,opts:r,ondrain:s=>this[$p]()};return this.pipes.push(n),e.on("drain",n.ondrain),this[$p](),i&&n.opts.end&&n.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[$p]():w9(e)&&this[xA]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[xA]}[Xp](){!this[Gw]&&!this[xA]&&!this[Li]&&this.buffer.length===0&&this[va]&&(this[Gw]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jw]&&this.emit("close"),this[Gw]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==Li&&this[Li])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[xA]===!0)return;this[xA]=!0,this.readable=!1,this[Sa]&&(r=this[Sa].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(e==="close"&&(this[jw]=!0,!this[xA]&&!this[Li]))return;let i=new Array(arguments.length);if(i[0]=e,i[1]=r,arguments.length>2)for(let n=2;n{e.push(i),this[Ni]||(e.dataLength+=i.length)}),r.then(()=>e)}concat(){return this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this[Bn]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Li,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",i=>r(i))})}[WFe](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[va])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[va]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},l=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(Li,l),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[zFe](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Li]?(e?this.emit("error",e):this.emit(Li),this):(this[Li]=!0,this.buffer=new _p,this[rn]=0,typeof this.close=="function"&&!this[jw]&&this.close(),e?this.emit("error",e):this.emit(Li),this)}static isStream(e){return!!e&&(e instanceof B9||e instanceof d9||e instanceof JFe&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var b9=I((llt,Q9)=>{var XFe=require("zlib").constants||{ZLIB_VERNUM:4736};Q9.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},XFe))});var fD=I(Un=>{"use strict";var sD=require("assert"),kA=require("buffer").Buffer,v9=require("zlib"),uc=Un.constants=b9(),ZFe=hg(),S9=kA.concat,gc=Symbol("_superWrite"),ed=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},$Fe=Symbol("opts"),td=Symbol("flushFlag"),x9=Symbol("finishFlushFlag"),oD=Symbol("fullFlushFlag"),tr=Symbol("handle"),qw=Symbol("onError"),pg=Symbol("sawError"),aD=Symbol("level"),AD=Symbol("strategy"),lD=Symbol("ended"),clt=Symbol("_defaultFullFlush"),cD=class extends ZFe{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[pg]=!1,this[lD]=!1,this[$Fe]=e,this[td]=e.flush,this[x9]=e.finishFlush;try{this[tr]=new v9[r](e)}catch(i){throw new ed(i)}this[qw]=i=>{this[pg]||(this[pg]=!0,this.close(),this.emit("error",i))},this[tr].on("error",i=>this[qw](new ed(i))),this.once("end",()=>this.close)}close(){this[tr]&&(this[tr].close(),this[tr]=null,this.emit("close"))}reset(){if(!this[pg])return sD(this[tr],"zlib binding closed"),this[tr].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[oD]),this.write(Object.assign(kA.alloc(0),{[td]:e})))}end(e,r,i){return e&&this.write(e,r),this.flush(this[x9]),this[lD]=!0,super.end(null,null,i)}get ended(){return this[lD]}write(e,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof e=="string"&&(e=kA.from(e,r)),this[pg])return;sD(this[tr],"zlib binding closed");let n=this[tr]._handle,s=n.close;n.close=()=>{};let o=this[tr].close;this[tr].close=()=>{},kA.concat=c=>c;let a;try{let c=typeof e[td]=="number"?e[td]:this[td];a=this[tr]._processChunk(e,c),kA.concat=S9}catch(c){kA.concat=S9,this[qw](new ed(c))}finally{this[tr]&&(this[tr]._handle=n,n.close=s,this[tr].close=o,this[tr].removeAllListeners("error"))}this[tr]&&this[tr].on("error",c=>this[qw](new ed(c)));let l;if(a)if(Array.isArray(a)&&a.length>0){l=this[gc](kA.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[tr].params(e,r)}finally{this[tr].flush=i}this[tr]&&(this[aD]=e,this[AD]=r)}}}},k9=class extends PA{constructor(e){super(e,"Deflate")}},P9=class extends PA{constructor(e){super(e,"Inflate")}},uD=Symbol("_portable"),D9=class extends PA{constructor(e){super(e,"Gzip");this[uD]=e&&!!e.portable}[gc](e){return this[uD]?(this[uD]=!1,e[9]=255,super[gc](e)):super[gc](e)}},R9=class extends PA{constructor(e){super(e,"Gunzip")}},F9=class extends PA{constructor(e){super(e,"DeflateRaw")}},N9=class extends PA{constructor(e){super(e,"InflateRaw")}},L9=class extends PA{constructor(e){super(e,"Unzip")}},gD=class extends cD{constructor(e,r){e=e||{},e.flush=e.flush||uc.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||uc.BROTLI_OPERATION_FINISH,super(e,r),this[oD]=uc.BROTLI_OPERATION_FLUSH}},T9=class extends gD{constructor(e){super(e,"BrotliCompress")}},M9=class extends gD{constructor(e){super(e,"BrotliDecompress")}};Un.Deflate=k9;Un.Inflate=P9;Un.Gzip=D9;Un.Gunzip=R9;Un.DeflateRaw=F9;Un.InflateRaw=N9;Un.Unzip=L9;typeof v9.BrotliCompress=="function"?(Un.BrotliCompress=T9,Un.BrotliDecompress=M9):Un.BrotliCompress=Un.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var rd=I(Jw=>{"use strict";Jw.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Jw.code=new Map(Array.from(Jw.name).map(t=>[t[1],t[0]]))});var id=I((plt,O9)=>{"use strict";var flt=rd(),eNe=hg(),hD=Symbol("slurp");O9.exports=class extends eNe{constructor(e,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[hD](r),i&&this[hD](i,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(e):super.write(e.slice(0,i))}[hD](e,r){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(r&&i==="path")&&(this[i]=e[i])}}});var H9=I(pD=>{"use strict";var dlt=pD.encode=(t,e)=>{if(Number.isSafeInteger(t))t<0?rNe(t,e):tNe(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},tNe=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},rNe=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var i=e.length;i>1;i--){var n=t&255;t=Math.floor(t/256),r?e[i-1]=K9(n):n===0?e[i-1]=0:(r=!0,e[i-1]=U9(n))}},Clt=pD.parse=t=>{var e=t[t.length-1],r=t[0],i;if(r===128)i=nNe(t.slice(1,t.length));else if(r===255)i=iNe(t);else throw Error("invalid base256 encoding");if(!Number.isSafeInteger(i))throw Error("parsed number outside of javascript safe integer range");return i},iNe=t=>{for(var e=t.length,r=0,i=!1,n=e-1;n>-1;n--){var s=t[n],o;i?o=K9(s):s===0?o=s:(i=!0,o=U9(s)),o!==0&&(r-=o*Math.pow(256,e-n-1))}return r},nNe=t=>{for(var e=t.length,r=0,i=e-1;i>-1;i--){var n=t[i];n!==0&&(r+=n*Math.pow(256,e-i-1))}return r},K9=t=>(255^t)&255,U9=t=>(255^t)+1&255});var Cg=I((Ilt,G9)=>{"use strict";var dD=rd(),dg=require("path").posix,j9=H9(),CD=Symbol("slurp"),Hn=Symbol("type"),Y9=class{constructor(e,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Hn]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,i,n):e&&this.set(e)}decode(e,r,i,n){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=fc(e,r,100),this.mode=DA(e,r+100,8),this.uid=DA(e,r+108,8),this.gid=DA(e,r+116,8),this.size=DA(e,r+124,12),this.mtime=mD(e,r+136,12),this.cksum=DA(e,r+148,12),this[CD](i),this[CD](n,!0),this[Hn]=fc(e,r+156,1),this[Hn]===""&&(this[Hn]="0"),this[Hn]==="0"&&this.path.substr(-1)==="/"&&(this[Hn]="5"),this[Hn]==="5"&&(this.size=0),this.linkpath=fc(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=fc(e,r+265,32),this.gname=fc(e,r+297,32),this.devmaj=DA(e,r+329,8),this.devmin=DA(e,r+337,8),e[r+475]!==0){let o=fc(e,r+345,155);this.path=o+"/"+this.path}else{let o=fc(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=mD(e,r+476,12),this.ctime=mD(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=sNe(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=hc(e,r,100,s)||this.needPax,this.needPax=RA(e,r+100,8,this.mode)||this.needPax,this.needPax=RA(e,r+108,8,this.uid)||this.needPax,this.needPax=RA(e,r+116,8,this.gid)||this.needPax,this.needPax=RA(e,r+124,12,this.size)||this.needPax,this.needPax=ID(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[Hn].charCodeAt(0),this.needPax=hc(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=hc(e,r+265,32,this.uname)||this.needPax,this.needPax=hc(e,r+297,32,this.gname)||this.needPax,this.needPax=RA(e,r+329,8,this.devmaj)||this.needPax,this.needPax=RA(e,r+337,8,this.devmin)||this.needPax,this.needPax=hc(e,r+345,i,o)||this.needPax,e[r+475]!==0?this.needPax=hc(e,r+345,155,o)||this.needPax:(this.needPax=hc(e,r+345,130,o)||this.needPax,this.needPax=ID(e,r+476,12,this.atime)||this.needPax,this.needPax=ID(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let l=r;l{let r=100,i=t,n="",s,o=dg.parse(t).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=e?s=[i.substr(0,r-1),n,!0]:(i=dg.join(dg.basename(n),i),n=dg.dirname(n));while(n!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},fc=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),mD=(t,e,r)=>oNe(DA(t,e,r)),oNe=t=>t===null?null:new Date(t*1e3),DA=(t,e,r)=>t[e]&128?j9.parse(t.slice(e,e+r)):aNe(t,e,r),ANe=t=>isNaN(t)?null:t,aNe=(t,e,r)=>ANe(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),lNe={12:8589934591,8:2097151},RA=(t,e,r,i)=>i===null?!1:i>lNe[r]||i<0?(j9.encode(i,t.slice(e,e+r)),!0):(cNe(t,e,r,i),!1),cNe=(t,e,r,i)=>t.write(uNe(i,r),e,r,"ascii"),uNe=(t,e)=>gNe(Math.floor(t).toString(8),e),gNe=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",ID=(t,e,r,i)=>i===null?!1:RA(t,e,r,i.getTime()/1e3),fNe=new Array(156).join("\0"),hc=(t,e,r,i)=>i===null?!1:(t.write(i+fNe,e,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);G9.exports=Y9});var zw=I((Elt,q9)=>{"use strict";var hNe=Cg(),pNe=require("path"),Ww=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new hNe({path:("PaxHeader/"+pNe.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Ww.parse=(t,e,r)=>new Ww(dNe(CNe(t),e),r);var dNe=(t,e)=>e?Object.keys(t).reduce((r,i)=>(r[i]=t[i],r),e):t,CNe=t=>t.replace(/\n$/,"").split(` +`).reduce(mNe,Object.create(null)),mNe=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return t;let s=i.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};q9.exports=Ww});var Vw=I((ylt,J9)=>{"use strict";J9.exports=t=>class extends t{warn(e,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),i))}}});var yD=I((wlt,W9)=>{"use strict";var _w=["|","<",">","?",":"],ED=_w.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),INe=new Map(_w.map((t,e)=>[t,ED[e]])),ENe=new Map(ED.map((t,e)=>[t,_w[e]]));W9.exports={encode:t=>_w.reduce((e,r)=>e.split(r).join(INe.get(r)),t),decode:t=>ED.reduce((e,r)=>e.split(r).join(ENe.get(r)),t)}});var V9=I((Blt,z9)=>{"use strict";z9.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var xD=I((xlt,_9)=>{"use strict";var X9=hg(),Z9=zw(),$9=Cg(),Qlt=id(),bo=require("fs"),mg=require("path"),blt=rd(),yNe=16*1024*1024,e7=Symbol("process"),t7=Symbol("file"),r7=Symbol("directory"),wD=Symbol("symlink"),i7=Symbol("hardlink"),nd=Symbol("header"),Xw=Symbol("read"),BD=Symbol("lstat"),Zw=Symbol("onlstat"),QD=Symbol("onread"),bD=Symbol("onreadlink"),vD=Symbol("openfile"),SD=Symbol("onopenfile"),pc=Symbol("close"),$w=Symbol("mode"),n7=Vw(),wNe=yD(),s7=V9(),eB=n7(class extends X9{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||yNe,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&mg.win32.isAbsolute(e)){let n=mg.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=wNe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||mg.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Zw](this.statCache.get(this.absolute)):this[BD]()}[BD](){bo.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Zw](r)})}[Zw](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=BNe(e),this.emit("stat",e),this[e7]()}[e7](){switch(this.type){case"File":return this[t7]();case"Directory":return this[r7]();case"SymbolicLink":return this[wD]();default:return this.end()}}[$w](e){return s7(e,this.type==="Directory",this.portable)}[nd](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this[$w](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new Z9({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[r7](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[nd](),this.end()}[wD](){bo.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[bD](r)})}[bD](e){this.linkpath=e.replace(/\\/g,"/"),this[nd](),this.end()}[i7](e){this.type="Link",this.linkpath=mg.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[nd](),this.end()}[t7](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[i7](r)}this.linkCache.set(e,this.absolute)}if(this[nd](),this.stat.size===0)return this.end();this[vD]()}[vD](){bo.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[SD](r)})}[SD](e){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Xw](e,n,0,n.length,0,this.stat.size,r)}[Xw](e,r,i,n,s,o,a){bo.read(e,r,i,n,s,(l,c)=>{if(l)return this[pc](e,()=>this.emit("error",l));this[QD](e,r,i,n,s,o,a,c)})}[pc](e,r){bo.close(e,r)}[QD](e,r,i,n,s,o,a,l){if(l<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l===o)for(let u=l;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Xw](e,r,i,n,s,o,a)}}),o7=class extends eB{constructor(e,r){super(e,r)}[BD](){this[Zw](bo.lstatSync(this.absolute))}[wD](){this[bD](bo.readlinkSync(this.absolute))}[vD](){this[SD](bo.openSync(this.absolute,"r"))}[Xw](e,r,i,n,s,o,a){let l=!0;try{let c=bo.readSync(e,r,i,n,s);this[QD](e,r,i,n,s,o,a,c),l=!1}finally{if(l)try{this[pc](e,()=>{})}catch(c){}}}[pc](e,r){bo.closeSync(e),r()}},QNe=n7(class extends X9{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[$w](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(mg.isAbsolute(this.path)&&!this.preservePaths){let n=mg.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new Z9({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[$w](e){return s7(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});eB.Sync=o7;eB.Tar=QNe;var BNe=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";_9.exports=eB});var AB=I((Plt,a7)=>{"use strict";var kD=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},bNe=hg(),vNe=fD(),SNe=id(),PD=xD(),xNe=PD.Sync,kNe=PD.Tar,PNe=Rh(),A7=Buffer.alloc(1024),tB=Symbol("onStat"),rB=Symbol("ended"),vo=Symbol("queue"),Ig=Symbol("current"),dc=Symbol("process"),iB=Symbol("processing"),l7=Symbol("processJob"),So=Symbol("jobs"),DD=Symbol("jobDone"),nB=Symbol("addFSEntry"),c7=Symbol("addTarEntry"),RD=Symbol("stat"),FD=Symbol("readdir"),sB=Symbol("onreaddir"),oB=Symbol("pipe"),u7=Symbol("entry"),ND=Symbol("entryOpt"),LD=Symbol("writeEntryClass"),g7=Symbol("write"),TD=Symbol("ondrain"),aB=require("fs"),f7=require("path"),DNe=Vw(),MD=DNe(class extends bNe{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[LD]=PD,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new vNe.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[TD]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[TD]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[vo]=new PNe,this[So]=0,this.jobs=+e.jobs||4,this[iB]=!1,this[rB]=!1}[g7](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[rB]=!0,this[dc](),this}write(e){if(this[rB])throw new Error("write after end");return e instanceof SNe?this[c7](e):this[nB](e),this.flowing}[c7](e){let r=f7.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new kD(e.path,r,!1);i.entry=new kNe(e,this[ND](i)),i.entry.on("end",n=>this[DD](i)),this[So]+=1,this[vo].push(i)}this[dc]()}[nB](e){let r=f7.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[vo].push(new kD(e,r)),this[dc]()}[RD](e){e.pending=!0,this[So]+=1;let r=this.follow?"stat":"lstat";aB[r](e.absolute,(i,n)=>{e.pending=!1,this[So]-=1,i?this.emit("error",i):this[tB](e,n)})}[tB](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[dc]()}[FD](e){e.pending=!0,this[So]+=1,aB.readdir(e.absolute,(r,i)=>{if(e.pending=!1,this[So]-=1,r)return this.emit("error",r);this[sB](e,i)})}[sB](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[dc]()}[dc](){if(!this[iB]){this[iB]=!0;for(let e=this[vo].head;e!==null&&this[So]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[u7](e){this[So]+=1;try{return new this[LD](e.path,this[ND](e)).on("end",()=>this[DD](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[TD](){this[Ig]&&this[Ig].entry&&this[Ig].entry.resume()}[oB](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)});let r=e.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),h7=class extends MD{constructor(e){super(e);this[LD]=xNe}pause(){}resume(){}[RD](e){let r=this.follow?"statSync":"lstatSync";this[tB](e,aB[r](e.absolute))}[FD](e,r){this[sB](e,aB.readdirSync(e.absolute))}[oB](e){let r=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[g7](n)})}};MD.Sync=h7;a7.exports=MD});var bg=I(sd=>{"use strict";var RNe=hg(),FNe=require("events").EventEmitter,ls=require("fs"),lB=process.binding("fs"),Dlt=lB.writeBuffers,NNe=lB.FSReqWrap||lB.FSReqCallback,Eg=Symbol("_autoClose"),xo=Symbol("_close"),od=Symbol("_ended"),Jt=Symbol("_fd"),p7=Symbol("_finished"),Cc=Symbol("_flags"),OD=Symbol("_flush"),KD=Symbol("_handleChunk"),UD=Symbol("_makeBuf"),HD=Symbol("_mode"),cB=Symbol("_needDrain"),yg=Symbol("_onerror"),wg=Symbol("_onopen"),GD=Symbol("_onread"),mc=Symbol("_onwrite"),FA=Symbol("_open"),NA=Symbol("_path"),Ic=Symbol("_pos"),ko=Symbol("_queue"),Bg=Symbol("_read"),d7=Symbol("_readSize"),LA=Symbol("_reading"),uB=Symbol("_remain"),C7=Symbol("_size"),gB=Symbol("_write"),Qg=Symbol("_writing"),fB=Symbol("_defaultFlag"),jD=class extends RNe{constructor(e,r){if(r=r||{},super(r),this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Jt]=typeof r.fd=="number"?r.fd:null,this[NA]=e,this[d7]=r.readSize||16*1024*1024,this[LA]=!1,this[C7]=typeof r.size=="number"?r.size:Infinity,this[uB]=this[C7],this[Eg]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Jt]=="number"?this[Bg]():this[FA]()}get fd(){return this[Jt]}get path(){return this[NA]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[FA](){ls.open(this[NA],"r",(e,r)=>this[wg](e,r))}[wg](e,r){e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[Bg]())}[UD](){return Buffer.allocUnsafe(Math.min(this[d7],this[uB]))}[Bg](){if(!this[LA]){this[LA]=!0;let e=this[UD]();if(e.length===0)return process.nextTick(()=>this[GD](null,0,e));ls.read(this[Jt],e,0,e.length,null,(r,i,n)=>this[GD](r,i,n))}}[GD](e,r,i){this[LA]=!1,e?this[yg](e):this[KD](r,i)&&this[Bg]()}[xo](){this[Eg]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}[yg](e){this[LA]=!0,this[xo](),this.emit("error",e)}[KD](e,r){let i=!1;return this[uB]-=e,e>0&&(i=super.write(ethis[wg](e,r))}[wg](e,r){this[fB]&&this[Cc]==="r+"&&e&&e.code==="ENOENT"?(this[Cc]="w",this[FA]()):e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[OD]())}end(e,r){e&&this.write(e,r),this[od]=!0,!this[Qg]&&!this[ko].length&&typeof this[Jt]=="number"&&this[mc](null,0)}write(e,r){return typeof e=="string"&&(e=new Buffer(e,r)),this[od]?(this.emit("error",new Error("write() after end()")),!1):this[Jt]===null||this[Qg]||this[ko].length?(this[ko].push(e),this[cB]=!0,!1):(this[Qg]=!0,this[gB](e),!0)}[gB](e){ls.write(this[Jt],e,0,e.length,this[Ic],(r,i)=>this[mc](r,i))}[mc](e,r){e?this[yg](e):(this[Ic]!==null&&(this[Ic]+=r),this[ko].length?this[OD]():(this[Qg]=!1,this[od]&&!this[p7]?(this[p7]=!0,this[xo](),this.emit("finish")):this[cB]&&(this[cB]=!1,this.emit("drain"))))}[OD](){if(this[ko].length===0)this[od]&&this[mc](null,0);else if(this[ko].length===1)this[gB](this[ko].pop());else{let e=this[ko];this[ko]=[],LNe(this[Jt],e,this[Ic],(r,i)=>this[mc](r,i))}}[xo](){this[Eg]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}},I7=class extends YD{[FA](){let e;try{e=ls.openSync(this[NA],this[Cc],this[HD])}catch(r){if(this[fB]&&this[Cc]==="r+"&&r&&r.code==="ENOENT")return this[Cc]="w",this[FA]();throw r}this[wg](null,e)}[xo](){if(this[Eg]&&typeof this[Jt]=="number"){try{ls.closeSync(this[Jt])}catch(e){}this[Jt]=null,this.emit("close")}}[gB](e){try{this[mc](null,ls.writeSync(this[Jt],e,0,e.length,this[Ic]))}catch(r){this[mc](r,0)}}},LNe=(t,e,r,i)=>{let n=(o,a)=>i(o,a,e),s=new NNe;s.oncomplete=n,lB.writeBuffers(t,e,r,s)};sd.ReadStream=jD;sd.ReadStreamSync=m7;sd.WriteStream=YD;sd.WriteStreamSync=I7});var ld=I((Llt,E7)=>{"use strict";var TNe=Vw(),Flt=require("path"),MNe=Cg(),ONe=require("events"),KNe=Rh(),UNe=1024*1024,HNe=id(),y7=zw(),GNe=fD(),qD=Buffer.from([31,139]),cs=Symbol("state"),Ec=Symbol("writeEntry"),xa=Symbol("readEntry"),JD=Symbol("nextEntry"),w7=Symbol("processEntry"),us=Symbol("extendedHeader"),ad=Symbol("globalExtendedHeader"),TA=Symbol("meta"),B7=Symbol("emitMeta"),Ar=Symbol("buffer"),ka=Symbol("queue"),yc=Symbol("ended"),Q7=Symbol("emittedEnd"),wc=Symbol("emit"),Qn=Symbol("unzip"),hB=Symbol("consumeChunk"),pB=Symbol("consumeChunkSub"),WD=Symbol("consumeBody"),b7=Symbol("consumeMeta"),v7=Symbol("consumeHeader"),dB=Symbol("consuming"),zD=Symbol("bufferConcat"),VD=Symbol("maybeEnd"),Ad=Symbol("writing"),MA=Symbol("aborted"),CB=Symbol("onDone"),Bc=Symbol("sawValidEntry"),mB=Symbol("sawNullBlock"),IB=Symbol("sawEOF"),jNe=t=>!0;E7.exports=TNe(class extends ONe{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Bc]=null,this.on(CB,r=>{(this[cs]==="begin"||this[Bc]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(CB,e.ondone):this.on(CB,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||UNe,this.filter=typeof e.filter=="function"?e.filter:jNe,this.writable=!0,this.readable=!1,this[ka]=new KNe,this[Ar]=null,this[xa]=null,this[Ec]=null,this[cs]="begin",this[TA]="",this[us]=null,this[ad]=null,this[yc]=!1,this[Qn]=null,this[MA]=!1,this[mB]=!1,this[IB]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[v7](e,r){this[Bc]===null&&(this[Bc]=!1);let i;try{i=new MNe(e,r,this[us],this[ad])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[mB]?(this[IB]=!0,this[cs]==="begin"&&(this[cs]="header"),this[wc]("eof")):(this[mB]=!0,this[wc]("nullBlock"));else if(this[mB]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Ec]=new HNe(i,this[us],this[ad]);if(!this[Bc])if(s.remain){let o=()=>{s.invalid||(this[Bc]=!0)};s.on("end",o)}else this[Bc]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[wc]("ignoredEntry",s),this[cs]="ignore",s.resume()):s.size>0&&(this[TA]="",s.on("data",o=>this[TA]+=o),this[cs]="meta"):(this[us]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[wc]("ignoredEntry",s),this[cs]=s.remain?"ignore":"header",s.resume()):(s.remain?this[cs]="body":(this[cs]="header",s.end()),this[xa]?this[ka].push(s):(this[ka].push(s),this[JD]())))}}}[w7](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[xa]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[JD]()),r=!1)):(this[xa]=null,r=!1),r}[JD](){do;while(this[w7](this[ka].shift()));if(!this[ka].length){let e=this[xa];!e||e.flowing||e.size===e.remain?this[Ad]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[WD](e,r){let i=this[Ec],n=i.blockRemain,s=n>=e.length&&r===0?e:e.slice(r,r+n);return i.write(s),i.blockRemain||(this[cs]="header",this[Ec]=null,i.end()),s.length}[b7](e,r){let i=this[Ec],n=this[WD](e,r);return this[Ec]||this[B7](i),n}[wc](e,r,i){!this[ka].length&&!this[xa]?this.emit(e,r,i):this[ka].push([e,r,i])}[B7](e){switch(this[wc]("meta",this[TA]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[us]=y7.parse(this[TA],this[us],!1);break;case"GlobalExtendedHeader":this[ad]=y7.parse(this[TA],this[ad],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[us]=this[us]||Object.create(null),this[us].path=this[TA].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[us]=this[us]||Object.create(null),this[us].linkpath=this[TA].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[MA]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[MA])return;if(this[Qn]===null&&e){if(this[Ar]&&(e=Buffer.concat([this[Ar],e]),this[Ar]=null),e.lengththis[hB](s)),this[Qn].on("error",s=>this.abort(s)),this[Qn].on("end",s=>{this[yc]=!0,this[hB]()}),this[Ad]=!0;let n=this[Qn][i?"end":"write"](e);return this[Ad]=!1,n}}this[Ad]=!0,this[Qn]?this[Qn].write(e):this[hB](e),this[Ad]=!1;let r=this[ka].length?!1:this[xa]?this[xa].flowing:!0;return!r&&!this[ka].length&&this[xa].once("drain",i=>this.emit("drain")),r}[zD](e){e&&!this[MA]&&(this[Ar]=this[Ar]?Buffer.concat([this[Ar],e]):e)}[VD](){if(this[yc]&&!this[Q7]&&!this[MA]&&!this[dB]){this[Q7]=!0;let e=this[Ec];if(e&&e.blockRemain){let r=this[Ar]?this[Ar].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Ar]&&e.write(this[Ar]),e.end()}this[wc](CB)}}[hB](e){if(this[dB])this[zD](e);else if(!e&&!this[Ar])this[VD]();else{if(this[dB]=!0,this[Ar]){this[zD](e);let r=this[Ar];this[Ar]=null,this[pB](r)}else this[pB](e);for(;this[Ar]&&this[Ar].length>=512&&!this[MA]&&!this[IB];){let r=this[Ar];this[Ar]=null,this[pB](r)}this[dB]=!1}(!this[Ar]||this[yc])&&this[VD]()}[pB](e){let r=0,i=e.length;for(;r+512<=i&&!this[MA]&&!this[IB];)switch(this[cs]){case"begin":case"header":this[v7](e,r),r+=512;break;case"ignore":case"body":r+=this[WD](e,r);break;case"meta":r+=this[b7](e,r);break;default:throw new Error("invalid state: "+this[cs])}r{"use strict";var YNe=fg(),x7=ld(),vg=require("fs"),qNe=bg(),k7=require("path"),Tlt=S7.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=YNe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&WNe(i,e),i.noResume||JNe(i),i.file&&i.sync?zNe(i):i.file?VNe(i,r):P7(i)},JNe=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},WNe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||k7.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(k7.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},zNe=t=>{let e=P7(t),r=t.file,i=!0,n;try{let s=vg.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new x7(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),vg.stat(n,(l,c)=>{if(l)a(l);else{let u=new qNe.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},P7=t=>new x7(t)});var T7=I((Ult,D7)=>{"use strict";var _Ne=fg(),yB=AB(),Olt=require("fs"),R7=bg(),F7=EB(),N7=require("path"),Klt=D7.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=_Ne(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?XNe(i,e):i.file?ZNe(i,e,r):i.sync?$Ne(i,e):eLe(i,e)},XNe=(t,e)=>{let r=new yB.Sync(t),i=new R7.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(i),L7(r,e)},ZNe=(t,e,r)=>{let i=new yB(t),n=new R7.WriteStream(t.file,{mode:t.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return _D(i,e),r?s.then(r,r):s},L7=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?F7({file:N7.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},_D=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return F7({file:N7.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>_D(t,e));t.add(r)}t.end()},$Ne=(t,e)=>{let r=new yB.Sync(t);return L7(r,e),r},eLe=(t,e)=>{let r=new yB(t);return _D(r,e),r}});var XD=I((jlt,M7)=>{"use strict";var tLe=fg(),O7=AB(),Hlt=ld(),gs=require("fs"),K7=bg(),U7=EB(),H7=require("path"),G7=Cg(),Glt=M7.exports=(t,e,r)=>{let i=tLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?rLe(i,e):iLe(i,e,r)},rLe=(t,e)=>{let r=new O7.Sync(t),i=!0,n,s;try{try{n=gs.openSync(t.file,"r+")}catch(l){if(l.code==="ENOENT")n=gs.openSync(t.file,"w+");else throw l}let o=gs.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(l.path,l.mtime)}i=!1,nLe(t,r,s,n,e)}finally{if(i)try{gs.closeSync(n)}catch(o){}}},nLe=(t,e,r,i,n)=>{let s=new K7.WriteStreamSync(t.file,{fd:i,start:r});e.pipe(s),sLe(e,n)},iLe=(t,e,r)=>{e=Array.from(e);let i=new O7(t),n=(o,a,l)=>{let c=(p,d)=>{p?gs.close(o,m=>l(p)):l(null,d)},u=0;if(a===0)return c(null,0);let g=0,f=Buffer.alloc(512),h=(p,d)=>{if(p)return c(p);if(g+=d,g<512&&d)return gs.read(o,f,g,f.length-g,u+g,h);if(u===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(g<512)return c(null,u);let m=new G7(f);if(!m.cksumValid)return c(null,u);let E=512*Math.ceil(m.size/512);if(u+E+512>a||(u+=E+512,u>=a))return c(null,u);t.mtimeCache&&t.mtimeCache.set(m.path,m.mtime),g=0,gs.read(o,f,0,512,u,h)};gs.read(o,f,0,512,u,h)},s=new Promise((o,a)=>{i.on("error",a);let l="r+",c=(u,g)=>{if(u&&u.code==="ENOENT"&&l==="r+")return l="w+",gs.open(t.file,l,c);if(u)return a(u);gs.fstat(g,(f,h)=>{if(f)return a(f);n(g,h.size,(p,d)=>{if(p)return a(p);let m=new K7.WriteStream(t.file,{fd:g,start:d});i.pipe(m),m.on("error",a),m.on("close",o),j7(i,e)})})};gs.open(t.file,l,c)});return r?s.then(r,r):s},sLe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?U7({file:H7.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},j7=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return U7({file:H7.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>j7(t,e));t.add(r)}t.end()}});var q7=I((qlt,Y7)=>{"use strict";var oLe=fg(),aLe=XD(),Ylt=Y7.exports=(t,e,r)=>{let i=oLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),ALe(i),aLe(i,e,r)},ALe=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,i)=>e(r,i)&&!(t.mtimeCache.get(r)>i.mtime):(r,i)=>!(t.mtimeCache.get(r)>i.mtime)}});var z7=I((Jlt,J7)=>{var{promisify:W7}=require("util"),OA=require("fs"),lLe=t=>{if(!t)t={mode:511,fs:OA};else if(typeof t=="object")t=P({mode:511,fs:OA},t);else if(typeof t=="number")t={mode:t,fs:OA};else if(typeof t=="string")t={mode:parseInt(t,8),fs:OA};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||OA.mkdir,t.mkdirAsync=W7(t.mkdir),t.stat=t.stat||t.fs.stat||OA.stat,t.statAsync=W7(t.stat),t.statSync=t.statSync||t.fs.statSync||OA.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||OA.mkdirSync,t};J7.exports=lLe});var _7=I((Wlt,V7)=>{var cLe=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:uLe,parse:gLe}=require("path"),fLe=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=uLe(t),cLe==="win32"){let e=/[*|"<>?:]/,{root:r}=gLe(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};V7.exports=fLe});var tV=I((zlt,X7)=>{var{dirname:Z7}=require("path"),$7=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?$7(t,Z7(e),e):void 0),eV=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?eV(t,Z7(e),e):void 0}};X7.exports={findMade:$7,findMadeSync:eV}});var eR=I((Vlt,rV)=>{var{dirname:iV}=require("path"),ZD=(t,e,r)=>{e.recursive=!1;let i=iV(t);return i===t?e.mkdirAsync(t,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(t,e).then(()=>r||t,n=>{if(n.code==="ENOENT")return ZD(i,e).then(s=>ZD(t,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},$D=(t,e,r)=>{let i=iV(t);if(e.recursive=!1,i===t)try{return e.mkdirSync(t,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(t,e),r||t}catch(n){if(n.code==="ENOENT")return $D(t,e,$D(i,e,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(t).isDirectory())throw n}catch(s){throw n}}};rV.exports={mkdirpManual:ZD,mkdirpManualSync:$D}});var oV=I((_lt,nV)=>{var{dirname:sV}=require("path"),{findMade:hLe,findMadeSync:pLe}=tV(),{mkdirpManual:dLe,mkdirpManualSync:CLe}=eR(),mLe=(t,e)=>(e.recursive=!0,sV(t)===t?e.mkdirAsync(t,e):hLe(e,t).then(i=>e.mkdirAsync(t,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return dLe(t,e);throw n}))),ILe=(t,e)=>{if(e.recursive=!0,sV(t)===t)return e.mkdirSync(t,e);let i=pLe(e,t);try{return e.mkdirSync(t,e),i}catch(n){if(n.code==="ENOENT")return CLe(t,e);throw n}};nV.exports={mkdirpNative:mLe,mkdirpNativeSync:ILe}});var cV=I((Xlt,aV)=>{var AV=require("fs"),ELe=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,tR=ELe.replace(/^v/,"").split("."),lV=+tR[0]>10||+tR[0]==10&&+tR[1]>=12,yLe=lV?t=>t.mkdir===AV.mkdir:()=>!1,wLe=lV?t=>t.mkdirSync===AV.mkdirSync:()=>!1;aV.exports={useNative:yLe,useNativeSync:wLe}});var dV=I((Zlt,uV)=>{var Sg=z7(),xg=_7(),{mkdirpNative:gV,mkdirpNativeSync:fV}=oV(),{mkdirpManual:hV,mkdirpManualSync:pV}=eR(),{useNative:BLe,useNativeSync:QLe}=cV(),kg=(t,e)=>(t=xg(t),e=Sg(e),BLe(e)?gV(t,e):hV(t,e)),bLe=(t,e)=>(t=xg(t),e=Sg(e),QLe(e)?fV(t,e):pV(t,e));kg.sync=bLe;kg.native=(t,e)=>gV(xg(t),Sg(e));kg.manual=(t,e)=>hV(xg(t),Sg(e));kg.nativeSync=(t,e)=>fV(xg(t),Sg(e));kg.manualSync=(t,e)=>pV(xg(t),Sg(e));uV.exports=kg});var BV=I(($lt,CV)=>{"use strict";var fs=require("fs"),Qc=require("path"),vLe=fs.lchown?"lchown":"chown",SLe=fs.lchownSync?"lchownSync":"chownSync",mV=fs.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),IV=(t,e,r)=>{try{return fs[SLe](t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},xLe=(t,e,r)=>{try{return fs.chownSync(t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},kLe=mV?(t,e,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):fs.chown(t,e,r,i)}:(t,e,r,i)=>i,rR=mV?(t,e,r)=>{try{return IV(t,e,r)}catch(i){if(i.code!=="EISDIR")throw i;xLe(t,e,r)}}:(t,e,r)=>IV(t,e,r),PLe=process.version,EV=(t,e,r)=>fs.readdir(t,e,r),DLe=(t,e)=>fs.readdirSync(t,e);/^v4\./.test(PLe)&&(EV=(t,e,r)=>fs.readdir(t,r));var wB=(t,e,r,i)=>{fs[vLe](t,e,r,kLe(t,e,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},yV=(t,e,r,i,n)=>{if(typeof e=="string")return fs.lstat(Qc.resolve(t,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,yV(t,o,r,i,n)});if(e.isDirectory())iR(Qc.resolve(t,e.name),r,i,s=>{if(s)return n(s);let o=Qc.resolve(t,e.name);wB(o,r,i,n)});else{let s=Qc.resolve(t,e.name);wB(s,r,i,n)}},iR=(t,e,r,i)=>{EV(t,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return wB(t,e,r,i);let o=s.length,a=null,l=c=>{if(!a){if(c)return i(a=c);if(--o==0)return wB(t,e,r,i)}};s.forEach(c=>yV(t,c,e,r,l))})},RLe=(t,e,r,i)=>{if(typeof e=="string")try{let n=fs.lstatSync(Qc.resolve(t,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&wV(Qc.resolve(t,e.name),r,i),rR(Qc.resolve(t,e.name),r,i)},wV=(t,e,r)=>{let i;try{i=DLe(t,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return rR(t,e,r);throw n}return i&&i.length&&i.forEach(n=>RLe(t,n,e,r)),rR(t,e,r)};CV.exports=iR;iR.sync=wV});var SV=I((rct,nR)=>{"use strict";var QV=dV(),hs=require("fs"),BB=require("path"),bV=BV(),sR=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},cd=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}},ect=nR.exports=(t,e,r)=>{let i=e.umask,n=e.mode|448,s=(n&i)!=0,o=e.uid,a=e.gid,l=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,u=e.unlink,g=e.cache,f=e.cwd,h=(m,E)=>{m?r(m):(g.set(t,!0),E&&l?bV(E,o,a,B=>h(B)):s?hs.chmod(t,n,r):r())};if(g&&g.get(t)===!0)return h();if(t===f)return hs.stat(t,(m,E)=>{(m||!E.isDirectory())&&(m=new cd(t,m&&m.code||"ENOTDIR")),h(m)});if(c)return QV(t,{mode:n}).then(m=>h(null,m),h);let d=BB.relative(f,t).split(/\/|\\/);QB(f,d,n,g,u,f,null,h)},QB=(t,e,r,i,n,s,o,a)=>{if(!e.length)return a(null,o);let l=e.shift(),c=t+"/"+l;if(i.get(c))return QB(c,e,r,i,n,s,o,a);hs.mkdir(c,r,vV(c,e,r,i,n,s,o,a))},vV=(t,e,r,i,n,s,o,a)=>l=>{if(l){if(l.path&&BB.dirname(l.path)===s&&(l.code==="ENOTDIR"||l.code==="ENOENT"))return a(new cd(s,l.code));hs.lstat(t,(c,u)=>{if(c)a(c);else if(u.isDirectory())QB(t,e,r,i,n,s,o,a);else if(n)hs.unlink(t,g=>{if(g)return a(g);hs.mkdir(t,r,vV(t,e,r,i,n,s,o,a))});else{if(u.isSymbolicLink())return a(new sR(t,t+"/"+e.join("/")));a(l)}})}else o=o||t,QB(t,e,r,i,n,s,o,a)},tct=nR.exports.sync=(t,e)=>{let r=e.umask,i=e.mode|448,n=(i&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),l=e.preserve,c=e.unlink,u=e.cache,g=e.cwd,f=m=>{u.set(t,!0),m&&a&&bV.sync(m,s,o),n&&hs.chmodSync(t,i)};if(u&&u.get(t)===!0)return f();if(t===g){let m=!1,E="ENOTDIR";try{m=hs.statSync(t).isDirectory()}catch(B){E=B.code}finally{if(!m)throw new cd(t,E)}f();return}if(l)return f(QV.sync(t,i));let p=BB.relative(g,t).split(/\/|\\/),d=null;for(let m=p.shift(),E=g;m&&(E+="/"+m);m=p.shift())if(!u.get(E))try{hs.mkdirSync(E,i),d=d||E,u.set(E,!0)}catch(B){if(B.path&&BB.dirname(B.path)===g&&(B.code==="ENOTDIR"||B.code==="ENOENT"))return new cd(g,B.code);let b=hs.lstatSync(E);if(b.isDirectory()){u.set(E,!0);continue}else if(c){hs.unlinkSync(E),hs.mkdirSync(E,i),d=d||E,u.set(E,!0);continue}else if(b.isSymbolicLink())return new sR(E,E+"/"+p.join("/"))}return f(d)}});var PV=I((ict,xV)=>{var kV=require("assert");xV.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\\/]/).slice(0,-1).reduce((g,f)=>g.length?g.concat(r(g[g.length-1],f)):[f],[]),n=new Set,s=u=>{let g=e.get(u);if(!g)throw new Error("function does not have any path reservations");return{paths:g.paths.map(f=>t.get(f)),dirs:[...g.dirs].map(f=>t.get(f))}},o=u=>{let{paths:g,dirs:f}=s(u);return g.every(h=>h[0]===u)&&f.every(h=>h[0]instanceof Set&&h[0].has(u))},a=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>l(u)),!0),l=u=>{if(!n.has(u))return!1;let{paths:g,dirs:f}=e.get(u),h=new Set;return g.forEach(p=>{let d=t.get(p);kV.equal(d[0],u),d.length===1?t.delete(p):(d.shift(),typeof d[0]=="function"?h.add(d[0]):d[0].forEach(m=>h.add(m)))}),f.forEach(p=>{let d=t.get(p);kV(d[0]instanceof Set),d[0].size===1&&d.length===1?t.delete(p):d[0].size===1?(d.shift(),h.add(d[0])):d[0].delete(u)}),n.delete(u),h.forEach(p=>a(p)),!0};return{check:o,reserve:(u,g)=>{let f=new Set(u.map(h=>i(h)).reduce((h,p)=>h.concat(p)));return e.set(g,{dirs:f,paths:u}),u.forEach(h=>{let p=t.get(h);p?p.push(g):t.set(h,[g])}),f.forEach(h=>{let p=t.get(h);p?p[p.length-1]instanceof Set?p[p.length-1].add(g):p.push(new Set([g])):t.set(h,[new Set([g])])}),a(g)}}}});var FV=I((nct,DV)=>{var FLe=process.env.__FAKE_PLATFORM__||process.platform,NLe=FLe==="win32",LLe=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:TLe,O_TRUNC:MLe,O_WRONLY:OLe,UV_FS_O_FILEMAP:RV=0}=LLe.constants,KLe=NLe&&!!RV,ULe=512*1024,HLe=RV|MLe|TLe|OLe;DV.exports=KLe?t=>t"w"});var hR=I((Act,NV)=>{"use strict";var GLe=require("assert"),sct=require("events").EventEmitter,jLe=ld(),Ut=require("fs"),YLe=bg(),Pa=require("path"),oR=SV(),oct=oR.sync,LV=yD(),qLe=PV(),TV=Symbol("onEntry"),aR=Symbol("checkFs"),MV=Symbol("checkFs2"),AR=Symbol("isReusable"),Da=Symbol("makeFs"),lR=Symbol("file"),cR=Symbol("directory"),bB=Symbol("link"),OV=Symbol("symlink"),KV=Symbol("hardlink"),UV=Symbol("unsupported"),act=Symbol("unknown"),HV=Symbol("checkPath"),Pg=Symbol("mkdir"),nn=Symbol("onError"),vB=Symbol("pending"),GV=Symbol("pend"),Dg=Symbol("unpend"),uR=Symbol("ended"),gR=Symbol("maybeClose"),fR=Symbol("skip"),ud=Symbol("doChown"),gd=Symbol("uid"),fd=Symbol("gid"),jV=require("crypto"),YV=FV(),SB=()=>{throw new Error("sync function called cb somehow?!?")},JLe=(t,e)=>{if(process.platform!=="win32")return Ut.unlink(t,e);let r=t+".DELETE."+jV.randomBytes(16).toString("hex");Ut.rename(t,r,i=>{if(i)return e(i);Ut.unlink(r,e)})},WLe=t=>{if(process.platform!=="win32")return Ut.unlinkSync(t);let e=t+".DELETE."+jV.randomBytes(16).toString("hex");Ut.renameSync(t,e),Ut.unlinkSync(e)},qV=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,xB=class extends jLe{constructor(e){if(e||(e={}),e.ondone=r=>{this[uR]=!0,this[gR]()},super(e),this.reservations=qLe(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[vB]=0,this[uR]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Pa.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[TV](r))}warn(e,r,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,r,i)}[gR](){this[uR]&&this[vB]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[HV](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Pa.win32.isAbsolute(r)){let i=Pa.win32.parse(r);e.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Pa.win32.parse(e.path);e.path=r.root===""?LV.encode(e.path):r.root+LV.encode(e.path.substr(r.root.length))}return Pa.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Pa.resolve(this.cwd,e.path),!0}[TV](e){if(!this[HV](e))return e.resume();switch(GLe.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[aR](e);case"CharacterDevice":case"BlockDevice":case"FIFO":return this[UV](e)}}[nn](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[Dg](),r.resume())}[Pg](e,r,i){oR(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r},i)}[ud](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[gd](e){return qV(this.uid,e.uid,this.processUid)}[fd](e){return qV(this.gid,e.gid,this.processGid)}[lR](e,r){let i=e.mode&4095||this.fmode,n=new YLe.WriteStream(e.absolute,{flags:YV(e.size),mode:i,autoClose:!1});n.on("error",l=>this[nn](l,e));let s=1,o=l=>{if(l)return this[nn](l,e);--s==0&&Ut.close(n.fd,c=>{r(),c?this[nn](c,e):this[Dg]()})};n.on("finish",l=>{let c=e.absolute,u=n.fd;if(e.mtime&&!this.noMtime){s++;let g=e.atime||new Date,f=e.mtime;Ut.futimes(u,g,f,h=>h?Ut.utimes(c,g,f,p=>o(p&&h)):o())}if(this[ud](e)){s++;let g=this[gd](e),f=this[fd](e);Ut.fchown(u,g,f,h=>h?Ut.chown(c,g,f,p=>o(p&&h)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.pipe(n)}[cR](e,r){let i=e.mode&4095||this.dmode;this[Pg](e.absolute,i,n=>{if(n)return r(),this[nn](n,e);let s=1,o=a=>{--s==0&&(r(),this[Dg](),e.resume())};e.mtime&&!this.noMtime&&(s++,Ut.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[ud](e)&&(s++,Ut.chown(e.absolute,this[gd](e),this[fd](e),o)),o()})}[UV](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[OV](e,r){this[bB](e,e.linkpath,"symlink",r)}[KV](e,r){this[bB](e,Pa.resolve(this.cwd,e.linkpath),"link",r)}[GV](){this[vB]++}[Dg](){this[vB]--,this[gR]()}[fR](e){this[Dg](),e.resume()}[AR](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[aR](e){this[GV]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,i=>this[MV](e,i))}[MV](e,r){this[Pg](Pa.dirname(e.absolute),this.dmode,i=>{if(i)return r(),this[nn](i,e);Ut.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[fR](e),r()):n||this[AR](e,s)?this[Da](null,e,r):s.isDirectory()?e.type==="Directory"?!e.mode||(s.mode&4095)===e.mode?this[Da](null,e,r):Ut.chmod(e.absolute,e.mode,o=>this[Da](o,e,r)):Ut.rmdir(e.absolute,o=>this[Da](o,e,r)):JLe(e.absolute,o=>this[Da](o,e,r))})})}[Da](e,r,i){if(e)return this[nn](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[lR](r,i);case"Link":return this[KV](r,i);case"SymbolicLink":return this[OV](r,i);case"Directory":case"GNUDumpDir":return this[cR](r,i)}}[bB](e,r,i,n){Ut[i](r,e.absolute,s=>{if(s)return this[nn](s,e);n(),this[Dg](),e.resume()})}},JV=class extends xB{constructor(e){super(e)}[aR](e){let r=this[Pg](Pa.dirname(e.absolute),this.dmode,SB);if(r)return this[nn](r,e);try{let i=Ut.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[fR](e);if(this[AR](e,i))return this[Da](null,e,SB);try{return i.isDirectory()?e.type==="Directory"?e.mode&&(i.mode&4095)!==e.mode&&Ut.chmodSync(e.absolute,e.mode):Ut.rmdirSync(e.absolute):WLe(e.absolute),this[Da](null,e,SB)}catch(n){return this[nn](n,e)}}catch(i){return this[Da](null,e,SB)}}[lR](e,r){let i=e.mode&4095||this.fmode,n=l=>{let c;try{Ut.closeSync(o)}catch(u){c=u}(l||c)&&this[nn](l||c,e)},s,o;try{o=Ut.openSync(e.absolute,YV(e.size),i)}catch(l){return n(l)}let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.on("data",l=>{try{Ut.writeSync(o,l,0,l.length)}catch(c){n(c)}}),a.on("end",l=>{let c=null;if(e.mtime&&!this.noMtime){let u=e.atime||new Date,g=e.mtime;try{Ut.futimesSync(o,u,g)}catch(f){try{Ut.utimesSync(e.absolute,u,g)}catch(h){c=f}}}if(this[ud](e)){let u=this[gd](e),g=this[fd](e);try{Ut.fchownSync(o,u,g)}catch(f){try{Ut.chownSync(e.absolute,u,g)}catch(h){c=c||f}}}n(c)})}[cR](e,r){let i=e.mode&4095||this.dmode,n=this[Pg](e.absolute,i);if(n)return this[nn](n,e);if(e.mtime&&!this.noMtime)try{Ut.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[ud](e))try{Ut.chownSync(e.absolute,this[gd](e),this[fd](e))}catch(s){}e.resume()}[Pg](e,r){try{return oR.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[bB](e,r,i,n){try{Ut[i+"Sync"](r,e.absolute),e.resume()}catch(s){return this[nn](s,e)}}};xB.Sync=JV;NV.exports=xB});var XV=I((cct,WV)=>{"use strict";var zLe=fg(),kB=hR(),zV=require("fs"),VV=bg(),_V=require("path"),lct=WV.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=zLe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&VLe(i,e),i.file&&i.sync?_Le(i):i.file?XLe(i,r):i.sync?ZLe(i):$Le(i)},VLe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||_V.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(_V.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},_Le=t=>{let e=new kB.Sync(t),r=t.file,i=!0,n,s=zV.statSync(r),o=t.maxReadSize||16*1024*1024;new VV.ReadStreamSync(r,{readSize:o,size:s.size}).pipe(e)},XLe=(t,e)=>{let r=new kB(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),zV.stat(n,(l,c)=>{if(l)a(l);else{let u=new VV.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},ZLe=t=>new kB.Sync(t),$Le=t=>new kB(t)});var ZV=I($r=>{"use strict";$r.c=$r.create=T7();$r.r=$r.replace=XD();$r.t=$r.list=EB();$r.u=$r.update=q7();$r.x=$r.extract=XV();$r.Pack=AB();$r.Unpack=hR();$r.Parse=ld();$r.ReadEntry=id();$r.WriteEntry=xD();$r.Header=Cg();$r.Pax=zw();$r.types=rd()});var e_=I((gct,pR)=>{"use strict";var eTe=Object.prototype.hasOwnProperty,sn="~";function hd(){}Object.create&&(hd.prototype=Object.create(null),new hd().__proto__||(sn=!1));function tTe(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function $V(t,e,r,i,n){if(typeof r!="function")throw new TypeError("The listener must be a function");var s=new tTe(r,i||t,n),o=sn?sn+e:e;return t._events[o]?t._events[o].fn?t._events[o]=[t._events[o],s]:t._events[o].push(s):(t._events[o]=s,t._eventsCount++),t}function PB(t,e){--t._eventsCount==0?t._events=new hd:delete t._events[e]}function Ti(){this._events=new hd,this._eventsCount=0}Ti.prototype.eventNames=function(){var e=[],r,i;if(this._eventsCount===0)return e;for(i in r=this._events)eTe.call(r,i)&&e.push(sn?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(r)):e};Ti.prototype.listeners=function(e){var r=sn?sn+e:e,i=this._events[r];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,s=i.length,o=new Array(s);n{"use strict";t_.exports=(t,e)=>(e=e||(()=>{}),t.then(r=>new Promise(i=>{i(e())}).then(()=>r),r=>new Promise(i=>{i(e())}).then(()=>{throw r})))});var n_=I((hct,DB)=>{"use strict";var rTe=r_(),dR=class extends Error{constructor(e){super(e);this.name="TimeoutError"}},i_=(t,e,r)=>new Promise((i,n)=>{if(typeof e!="number"||e<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(e===Infinity){i(t);return}let s=setTimeout(()=>{if(typeof r=="function"){try{i(r())}catch(l){n(l)}return}let o=typeof r=="string"?r:`Promise timed out after ${e} milliseconds`,a=r instanceof Error?r:new dR(o);typeof t.cancel=="function"&&t.cancel(),n(a)},e);rTe(t.then(i,n),()=>{clearTimeout(s)})});DB.exports=i_;DB.exports.default=i_;DB.exports.TimeoutError=dR});var s_=I(CR=>{"use strict";Object.defineProperty(CR,"__esModule",{value:!0});function iTe(t,e,r){let i=0,n=t.length;for(;n>0;){let s=n/2|0,o=i+s;r(t[o],e)<=0?(i=++o,n-=s+1):n=s}return i}CR.default=iTe});var a_=I(mR=>{"use strict";Object.defineProperty(mR,"__esModule",{value:!0});var nTe=s_(),o_=class{constructor(){this._queue=[]}enqueue(e,r){r=Object.assign({priority:0},r);let i={priority:r.priority,run:e};if(this.size&&this._queue[this.size-1].priority>=r.priority){this._queue.push(i);return}let n=nTe.default(this._queue,i,(s,o)=>o.priority-s.priority);this._queue.splice(n,0,i)}dequeue(){let e=this._queue.shift();return e==null?void 0:e.run}filter(e){return this._queue.filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return this._queue.length}};mR.default=o_});var c_=I(IR=>{"use strict";Object.defineProperty(IR,"__esModule",{value:!0});var sTe=e_(),A_=n_(),oTe=a_(),RB=()=>{},aTe=new A_.TimeoutError,l_=class extends sTe{constructor(e){var r,i,n,s;super();if(this._intervalCount=0,this._intervalEnd=0,this._pendingCount=0,this._resolveEmpty=RB,this._resolveIdle=RB,e=Object.assign({carryoverConcurrencyCount:!1,intervalCap:Infinity,interval:0,concurrency:Infinity,autoStart:!0,queueClass:oTe.default},e),!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(i=(r=e.intervalCap)===null||r===void 0?void 0:r.toString())!==null&&i!==void 0?i:""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(s=(n=e.interval)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""}\` (${typeof e.interval})`);this._carryoverConcurrencyCount=e.carryoverConcurrencyCount,this._isIntervalIgnored=e.intervalCap===Infinity||e.interval===0,this._intervalCap=e.intervalCap,this._interval=e.interval,this._queue=new e.queueClass,this._queueClass=e.queueClass,this.concurrency=e.concurrency,this._timeout=e.timeout,this._throwOnTimeout=e.throwOnTimeout===!0,this._isPaused=e.autoStart===!1}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},r)),!0}return!1}_tryToStartAnother(){if(this._queue.size===0)return this._intervalId&&clearInterval(this._intervalId),this._intervalId=void 0,this._resolvePromises(),!1;if(!this._isPaused){let e=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){let r=this._queue.dequeue();return r?(this.emit("active"),r(),e&&this._initializeIntervalIfNeeded(),!0):!1}}return!1}_initializeIntervalIfNeeded(){this._isIntervalIgnored||this._intervalId!==void 0||(this._intervalId=setInterval(()=>{this._onInterval()},this._interval),this._intervalEnd=Date.now()+this._interval)}_onInterval(){this._intervalCount===0&&this._pendingCount===0&&this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0),this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0,this._processQueue()}_processQueue(){for(;this._tryToStartAnother(););}get concurrency(){return this._concurrency}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this._concurrency=e,this._processQueue()}async add(e,r={}){return new Promise((i,n)=>{let s=async()=>{this._pendingCount++,this._intervalCount++;try{let o=this._timeout===void 0&&r.timeout===void 0?e():A_.default(Promise.resolve(e()),r.timeout===void 0?this._timeout:r.timeout,()=>{(r.throwOnTimeout===void 0?this._throwOnTimeout:r.throwOnTimeout)&&n(aTe)});i(await o)}catch(o){n(o)}this._next()};this._queue.enqueue(s,r),this._tryToStartAnother(),this.emit("add")})}async addAll(e,r){return Promise.all(e.map(async i=>this.add(i,r)))}start(){return this._isPaused?(this._isPaused=!1,this._processQueue(),this):this}pause(){this._isPaused=!0}clear(){this._queue=new this._queueClass}async onEmpty(){if(this._queue.size!==0)return new Promise(e=>{let r=this._resolveEmpty;this._resolveEmpty=()=>{r(),e()}})}async onIdle(){if(!(this._pendingCount===0&&this._queue.size===0))return new Promise(e=>{let r=this._resolveIdle;this._resolveIdle=()=>{r(),e()}})}get size(){return this._queue.size}sizeBy(e){return this._queue.filter(e).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(e){this._timeout=e}};IR.default=l_});var p_=I((Ict,h_)=>{var yR;h_.exports.getContent=()=>(typeof yR=="undefined"&&(yR=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),yR)});var y_=I((wR,E_)=>{(function(t,e){typeof wR=="object"?E_.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(wR,function(){function t(n,s){var o=s?"\u2514":"\u251C";return n?o+="\u2500 ":o+="\u2500\u2500\u2510",o}function e(n,s){var o=[];for(var a in n)!n.hasOwnProperty(a)||s&&typeof n[a]=="function"||o.push(a);return o}function r(n,s,o,a,l,c,u){var g="",f=0,h,p,d=a.slice(0);if(d.push([s,o])&&a.length>0&&(a.forEach(function(E,B){B>0&&(g+=(E[1]?" ":"\u2502")+" "),!p&&E[0]===s&&(p=!0)}),g+=t(n,o)+n,l&&(typeof s!="object"||s instanceof Date)&&(g+=": "+s),p&&(g+=" (circular ref.)"),u(g)),!p&&typeof s=="object"){var m=e(s,c);m.forEach(function(E){h=++f===m.length,r(E,s[E],h,d,l,c,u)})}}var i={};return i.asLines=function(n,s,o,a){var l=typeof o!="function"?o:!1;r(".",n,!1,[],s,l,a||o)},i.asTree=function(n,s,o){var a="";return r(".",n,!1,[],s,o,function(l){a+=l+` +`}),a},i})});var x_=I((Uct,bR)=>{"use strict";var pTe=t=>{let e=!1,r=!1,i=!1;for(let n=0;n{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(t)?t=t.map(n=>n.trim()).filter(n=>n.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=pTe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),r(t))};bR.exports=S_;bR.exports.default=S_});var Na=I(TR=>{"use strict";Object.defineProperty(TR,"__esModule",{value:!0});TR.default=L_;function L_(){}L_.prototype={diff:function(e,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(d){return n?(setTimeout(function(){n(void 0,d)},0),!0):d}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var a=r.length,l=e.length,c=1,u=a+l,g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],r,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(r),count:r.length}]);function h(){for(var d=-1*c;d<=c;d+=2){var m=void 0,E=g[d-1],B=g[d+1],b=(B?B.newPos:0)-d;E&&(g[d-1]=void 0);var R=E&&E.newPos+1=a&&b+1>=l)return o(yTe(s,m.components,r,e,s.useLongestToken));g[d]=m}c++}if(n)(function d(){setTimeout(function(){if(c>u)return n();h()||d()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,r,i){var n=e[e.length-1];n&&n.added===r&&n.removed===i?e[e.length-1]={count:n.count+1,added:r,removed:i}:e.push({count:1,added:r,removed:i})},extractCommon:function(e,r,i,n){for(var s=r.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1h.length?d:h}),c.value=t.join(u)}else c.value=t.join(r.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&t.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function wTe(t){return{newPos:t.newPos,components:t.components.slice(0)}}});var M_=I(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});Cd.diffChars=BTe;Cd.characterDiff=void 0;var bTe=QTe(Na());function QTe(t){return t&&t.__esModule?t:{default:t}}var T_=new bTe.default;Cd.characterDiff=T_;function BTe(t,e,r){return T_.diff(t,e,r)}});var OR=I(MR=>{"use strict";Object.defineProperty(MR,"__esModule",{value:!0});MR.generateOptions=vTe;function vTe(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}});var U_=I(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});Ng.diffWords=STe;Ng.diffWordsWithSpace=xTe;Ng.wordDiff=void 0;var PTe=kTe(Na()),DTe=OR();function kTe(t){return t&&t.__esModule?t:{default:t}}var O_=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,K_=/\S/,md=new PTe.default;Ng.wordDiff=md;md.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!K_.test(t)&&!K_.test(e)};md.tokenize=function(t){for(var e=t.split(/(\s+|[()[\]{}'"]|\b)/),r=0;r{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});Lg.diffLines=RTe;Lg.diffTrimmedLines=FTe;Lg.lineDiff=void 0;var LTe=NTe(Na()),TTe=OR();function NTe(t){return t&&t.__esModule?t:{default:t}}var OB=new LTe.default;Lg.lineDiff=OB;OB.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var i=0;i{"use strict";Object.defineProperty(Id,"__esModule",{value:!0});Id.diffSentences=MTe;Id.sentenceDiff=void 0;var KTe=OTe(Na());function OTe(t){return t&&t.__esModule?t:{default:t}}var KR=new KTe.default;Id.sentenceDiff=KR;KR.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};function MTe(t,e,r){return KR.diff(t,e,r)}});var G_=I(Ed=>{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});Ed.diffCss=UTe;Ed.cssDiff=void 0;var GTe=HTe(Na());function HTe(t){return t&&t.__esModule?t:{default:t}}var UR=new GTe.default;Ed.cssDiff=UR;UR.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};function UTe(t,e,r){return UR.diff(t,e,r)}});var Y_=I(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.diffJson=jTe;Tg.canonicalize=UB;Tg.jsonDiff=void 0;var j_=YTe(Na()),qTe=KB();function YTe(t){return t&&t.__esModule?t:{default:t}}function HB(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?HB=function(r){return typeof r}:HB=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},HB(t)}var JTe=Object.prototype.toString,bc=new j_.default;Tg.jsonDiff=bc;bc.useLongestToken=!0;bc.tokenize=qTe.lineDiff.tokenize;bc.castInput=function(t){var e=this.options,r=e.undefinedReplacement,i=e.stringifyReplacer,n=i===void 0?function(s,o){return typeof o=="undefined"?r:o}:i;return typeof t=="string"?t:JSON.stringify(UB(t,null,null,n),n," ")};bc.equals=function(t,e){return j_.default.prototype.equals.call(bc,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function jTe(t,e,r){return bc.diff(t,e,r)}function UB(t,e,r,i,n){e=e||[],r=r||[],i&&(t=i(n,t));var s;for(s=0;s{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});yd.diffArrays=WTe;yd.arrayDiff=void 0;var VTe=zTe(Na());function zTe(t){return t&&t.__esModule?t:{default:t}}var wd=new VTe.default;yd.arrayDiff=wd;wd.tokenize=function(t){return t.slice()};wd.join=wd.removeEmpty=function(t){return t};function WTe(t,e,r){return wd.diff(t,e,r)}});var GB=I(HR=>{"use strict";Object.defineProperty(HR,"__esModule",{value:!0});HR.parsePatch=_Te;function _Te(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.split(/\r\n|[\n\v\f\r\x85]/),i=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],n=[],s=0;function o(){var c={};for(n.push(c);s{"use strict";Object.defineProperty(GR,"__esModule",{value:!0});GR.default=XTe;function XTe(t,e,r){var i=!0,n=!1,s=!1,o=1;return function a(){if(i&&!s){if(n?o++:i=!1,t+o<=r)return o;s=!0}if(!n)return s||(i=!0),e<=t-o?-o++:(n=!0,a())}}});var V_=I(jB=>{"use strict";Object.defineProperty(jB,"__esModule",{value:!0});jB.applyPatch=W_;jB.applyPatches=ZTe;var z_=GB(),eMe=$Te(J_());function $Te(t){return t&&t.__esModule?t:{default:t}}function W_(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string"&&(e=(0,z_.parsePatch)(e)),Array.isArray(e)){if(e.length>1)throw new Error("applyPatch only works with a single input.");e=e[0]}var i=t.split(/\r\n|[\n\v\f\r\x85]/),n=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],s=e.hunks,o=r.compareLine||function(F,D,he,pe){return D===pe},a=0,l=r.fuzzFactor||0,c=0,u=0,g,f;function h(F,D){for(var he=0;he0?pe[0]:" ",Pe=pe.length>0?pe.substr(1):pe;if(Ne===" "||Ne==="-"){if(!o(D+1,i[D],Ne,Pe)&&(a++,a>l))return!1;D++}}return!0}for(var p=0;p0?ne[0]:" ",A=ne.length>0?ne.substr(1):ne,V=L.linedelimiters[J];if(q===" ")K++;else if(q==="-")i.splice(K,1),n.splice(K,1);else if(q==="+")i.splice(K,0,A),n.splice(K,0,V),K++;else if(q==="\\"){var W=L.lines[J-1]?L.lines[J-1][0]:null;W==="+"?g=!0:W==="-"&&(f=!0)}}}if(g)for(;!i[i.length-1];)i.pop(),n.pop();else f&&(i.push(""),n.push(` +`));for(var X=0;X{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.structuredPatch=__;Bd.createTwoFilesPatch=X_;Bd.createPatch=tMe;var rMe=KB();function jR(t){return sMe(t)||nMe(t)||iMe()}function iMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function nMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function sMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e0?l(L.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(H=f).push.apply(H,jR(R.map(function(X){return(b.added?"+":"-")+X}))),b.added?p+=R.length:h+=R.length}else{if(u)if(R.length<=o.context*2&&B=a.length-2&&R.length<=o.context){var A=/\n$/.test(r),V=/\n$/.test(i),W=R.length==0&&f.length>q.oldLines;!A&&W&&f.splice(q.oldLines,0,"\\ No newline at end of file"),(!A&&!W||!V)&&f.push("\\ No newline at end of file")}c.push(q),u=0,g=0,f=[]}h+=R.length,p+=R.length}},m=0;m{"use strict";Object.defineProperty(YB,"__esModule",{value:!0});YB.arrayEqual=oMe;YB.arrayStartsWith=Z_;function oMe(t,e){return t.length!==e.length?!1:Z_(t,e)}function Z_(t,e){if(e.length>t.length)return!1;for(var r=0;r{"use strict";Object.defineProperty(qB,"__esModule",{value:!0});qB.calcLineCount=eX;qB.merge=aMe;var AMe=YR(),lMe=GB(),qR=$_();function Mg(t){return gMe(t)||uMe(t)||cMe()}function cMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function uMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function gMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{"use strict";Object.defineProperty(zR,"__esModule",{value:!0});zR.convertChangesToDMP=dMe;function dMe(t){for(var e=[],r,i,n=0;n{"use strict";Object.defineProperty(VR,"__esModule",{value:!0});VR.convertChangesToXML=CMe;function CMe(t){for(var e=[],r=0;r"):i.removed&&e.push(""),e.push(mMe(i.value)),i.added?e.push(""):i.removed&&e.push("")}return e.join("")}function mMe(t){var e=t;return e=e.replace(/&/g,"&"),e=e.replace(//g,">"),e=e.replace(/"/g,"""),e}});var CX=I(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});Object.defineProperty(br,"Diff",{enumerable:!0,get:function(){return IMe.default}});Object.defineProperty(br,"diffChars",{enumerable:!0,get:function(){return EMe.diffChars}});Object.defineProperty(br,"diffWords",{enumerable:!0,get:function(){return fX.diffWords}});Object.defineProperty(br,"diffWordsWithSpace",{enumerable:!0,get:function(){return fX.diffWordsWithSpace}});Object.defineProperty(br,"diffLines",{enumerable:!0,get:function(){return hX.diffLines}});Object.defineProperty(br,"diffTrimmedLines",{enumerable:!0,get:function(){return hX.diffTrimmedLines}});Object.defineProperty(br,"diffSentences",{enumerable:!0,get:function(){return yMe.diffSentences}});Object.defineProperty(br,"diffCss",{enumerable:!0,get:function(){return wMe.diffCss}});Object.defineProperty(br,"diffJson",{enumerable:!0,get:function(){return pX.diffJson}});Object.defineProperty(br,"canonicalize",{enumerable:!0,get:function(){return pX.canonicalize}});Object.defineProperty(br,"diffArrays",{enumerable:!0,get:function(){return BMe.diffArrays}});Object.defineProperty(br,"applyPatch",{enumerable:!0,get:function(){return dX.applyPatch}});Object.defineProperty(br,"applyPatches",{enumerable:!0,get:function(){return dX.applyPatches}});Object.defineProperty(br,"parsePatch",{enumerable:!0,get:function(){return QMe.parsePatch}});Object.defineProperty(br,"merge",{enumerable:!0,get:function(){return bMe.merge}});Object.defineProperty(br,"structuredPatch",{enumerable:!0,get:function(){return _R.structuredPatch}});Object.defineProperty(br,"createTwoFilesPatch",{enumerable:!0,get:function(){return _R.createTwoFilesPatch}});Object.defineProperty(br,"createPatch",{enumerable:!0,get:function(){return _R.createPatch}});Object.defineProperty(br,"convertChangesToDMP",{enumerable:!0,get:function(){return vMe.convertChangesToDMP}});Object.defineProperty(br,"convertChangesToXML",{enumerable:!0,get:function(){return SMe.convertChangesToXML}});var IMe=xMe(Na()),EMe=M_(),fX=U_(),hX=KB(),yMe=H_(),wMe=G_(),pX=Y_(),BMe=q_(),dX=V_(),QMe=GB(),bMe=cX(),_R=YR(),vMe=uX(),SMe=gX();function xMe(t){return t&&t.__esModule?t:{default:t}}});var WB=I((agt,mX)=>{var kMe=As(),PMe=Nw(),DMe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,RMe=/^\w*$/;function FMe(t,e){if(kMe(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||PMe(t)?!0:RMe.test(t)||!DMe.test(t)||e!=null&&t in Object(e)}mX.exports=FMe});var Gs=I((Agt,IX)=>{function NMe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}IX.exports=NMe});var zB=I((lgt,EX)=>{var LMe=Ac(),TMe=Gs(),MMe="[object AsyncFunction]",OMe="[object Function]",KMe="[object GeneratorFunction]",UMe="[object Proxy]";function HMe(t){if(!TMe(t))return!1;var e=LMe(t);return e==OMe||e==KMe||e==MMe||e==UMe}EX.exports=HMe});var wX=I((cgt,yX)=>{var GMe=Ks(),jMe=GMe["__core-js_shared__"];yX.exports=jMe});var bX=I((ugt,BX)=>{var XR=wX(),QX=function(){var t=/[^.]+$/.exec(XR&&XR.keys&&XR.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function YMe(t){return!!QX&&QX in t}BX.exports=YMe});var ZR=I((ggt,vX)=>{var qMe=Function.prototype,JMe=qMe.toString;function WMe(t){if(t!=null){try{return JMe.call(t)}catch(e){}try{return t+""}catch(e){}}return""}vX.exports=WMe});var xX=I((fgt,SX)=>{var zMe=zB(),VMe=bX(),_Me=Gs(),XMe=ZR(),ZMe=/[\\^$.*+?()[\]{}|]/g,$Me=/^\[object .+?Constructor\]$/,eOe=Function.prototype,tOe=Object.prototype,rOe=eOe.toString,iOe=tOe.hasOwnProperty,nOe=RegExp("^"+rOe.call(iOe).replace(ZMe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function sOe(t){if(!_Me(t)||VMe(t))return!1;var e=zMe(t)?nOe:$Me;return e.test(XMe(t))}SX.exports=sOe});var PX=I((hgt,kX)=>{function oOe(t,e){return t==null?void 0:t[e]}kX.exports=oOe});var UA=I((pgt,DX)=>{var aOe=xX(),AOe=PX();function lOe(t,e){var r=AOe(t,e);return aOe(r)?r:void 0}DX.exports=lOe});var Qd=I((dgt,RX)=>{var cOe=UA(),uOe=cOe(Object,"create");RX.exports=uOe});var LX=I((Cgt,FX)=>{var NX=Qd();function gOe(){this.__data__=NX?NX(null):{},this.size=0}FX.exports=gOe});var MX=I((mgt,TX)=>{function fOe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}TX.exports=fOe});var KX=I((Igt,OX)=>{var hOe=Qd(),pOe="__lodash_hash_undefined__",dOe=Object.prototype,COe=dOe.hasOwnProperty;function mOe(t){var e=this.__data__;if(hOe){var r=e[t];return r===pOe?void 0:r}return COe.call(e,t)?e[t]:void 0}OX.exports=mOe});var HX=I((Egt,UX)=>{var IOe=Qd(),EOe=Object.prototype,yOe=EOe.hasOwnProperty;function wOe(t){var e=this.__data__;return IOe?e[t]!==void 0:yOe.call(e,t)}UX.exports=wOe});var jX=I((ygt,GX)=>{var BOe=Qd(),QOe="__lodash_hash_undefined__";function bOe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=BOe&&e===void 0?QOe:e,this}GX.exports=bOe});var qX=I((wgt,YX)=>{var vOe=LX(),SOe=MX(),xOe=KX(),kOe=HX(),POe=jX();function Og(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{function DOe(){this.__data__=[],this.size=0}JX.exports=DOe});var Kg=I((Qgt,zX)=>{function ROe(t,e){return t===e||t!==t&&e!==e}zX.exports=ROe});var bd=I((bgt,VX)=>{var FOe=Kg();function NOe(t,e){for(var r=t.length;r--;)if(FOe(t[r][0],e))return r;return-1}VX.exports=NOe});var XX=I((vgt,_X)=>{var LOe=bd(),TOe=Array.prototype,MOe=TOe.splice;function OOe(t){var e=this.__data__,r=LOe(e,t);if(r<0)return!1;var i=e.length-1;return r==i?e.pop():MOe.call(e,r,1),--this.size,!0}_X.exports=OOe});var $X=I((Sgt,ZX)=>{var KOe=bd();function UOe(t){var e=this.__data__,r=KOe(e,t);return r<0?void 0:e[r][1]}ZX.exports=UOe});var tZ=I((xgt,eZ)=>{var HOe=bd();function GOe(t){return HOe(this.__data__,t)>-1}eZ.exports=GOe});var iZ=I((kgt,rZ)=>{var jOe=bd();function YOe(t,e){var r=this.__data__,i=jOe(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}rZ.exports=YOe});var vd=I((Pgt,nZ)=>{var qOe=WX(),JOe=XX(),WOe=$X(),zOe=tZ(),VOe=iZ();function Ug(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var _Oe=UA(),XOe=Ks(),ZOe=_Oe(XOe,"Map");sZ.exports=ZOe});var AZ=I((Rgt,oZ)=>{var aZ=qX(),$Oe=vd(),eKe=VB();function tKe(){this.size=0,this.__data__={hash:new aZ,map:new(eKe||$Oe),string:new aZ}}oZ.exports=tKe});var cZ=I((Fgt,lZ)=>{function rKe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}lZ.exports=rKe});var Sd=I((Ngt,uZ)=>{var iKe=cZ();function nKe(t,e){var r=t.__data__;return iKe(e)?r[typeof e=="string"?"string":"hash"]:r.map}uZ.exports=nKe});var fZ=I((Lgt,gZ)=>{var sKe=Sd();function oKe(t){var e=sKe(this,t).delete(t);return this.size-=e?1:0,e}gZ.exports=oKe});var pZ=I((Tgt,hZ)=>{var aKe=Sd();function AKe(t){return aKe(this,t).get(t)}hZ.exports=AKe});var CZ=I((Mgt,dZ)=>{var lKe=Sd();function cKe(t){return lKe(this,t).has(t)}dZ.exports=cKe});var IZ=I((Ogt,mZ)=>{var uKe=Sd();function gKe(t,e){var r=uKe(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}mZ.exports=gKe});var _B=I((Kgt,EZ)=>{var fKe=AZ(),hKe=fZ(),pKe=pZ(),dKe=CZ(),CKe=IZ();function Hg(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var wZ=_B(),mKe="Expected a function";function $R(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(mKe);var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],s=r.cache;if(s.has(n))return s.get(n);var o=t.apply(this,i);return r.cache=s.set(n,o)||s,o};return r.cache=new($R.Cache||wZ),r}$R.Cache=wZ;yZ.exports=$R});var bZ=I((Hgt,QZ)=>{var IKe=BZ(),EKe=500;function yKe(t){var e=IKe(t,function(i){return r.size===EKe&&r.clear(),i}),r=e.cache;return e}QZ.exports=yKe});var SZ=I((Ggt,vZ)=>{var wKe=bZ(),BKe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,QKe=/\\(\\)?/g,bKe=wKe(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(BKe,function(r,i,n,s){e.push(n?s.replace(QKe,"$1"):i||r)}),e});vZ.exports=bKe});var Gg=I((jgt,xZ)=>{var vKe=As(),SKe=WB(),xKe=SZ(),kKe=gg();function PKe(t,e){return vKe(t)?t:SKe(t,e)?[t]:xKe(kKe(t))}xZ.exports=PKe});var Sc=I((Ygt,kZ)=>{var DKe=Nw(),RKe=1/0;function FKe(t){if(typeof t=="string"||DKe(t))return t;var e=t+"";return e=="0"&&1/t==-RKe?"-0":e}kZ.exports=FKe});var xd=I((qgt,PZ)=>{var NKe=Gg(),LKe=Sc();function TKe(t,e){e=NKe(e,t);for(var r=0,i=e.length;t!=null&&r{var MKe=UA(),OKe=function(){try{var t=MKe(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();DZ.exports=OKe});var jg=I((Wgt,RZ)=>{var FZ=eF();function KKe(t,e,r){e=="__proto__"&&FZ?FZ(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}RZ.exports=KKe});var XB=I((zgt,NZ)=>{var UKe=jg(),HKe=Kg(),GKe=Object.prototype,jKe=GKe.hasOwnProperty;function YKe(t,e,r){var i=t[e];(!(jKe.call(t,e)&&HKe(i,r))||r===void 0&&!(e in t))&&UKe(t,e,r)}NZ.exports=YKe});var kd=I((Vgt,LZ)=>{var qKe=9007199254740991,JKe=/^(?:0|[1-9]\d*)$/;function WKe(t,e){var r=typeof t;return e=e==null?qKe:e,!!e&&(r=="number"||r!="symbol"&&JKe.test(t))&&t>-1&&t%1==0&&t{var zKe=XB(),VKe=Gg(),_Ke=kd(),MZ=Gs(),XKe=Sc();function ZKe(t,e,r,i){if(!MZ(t))return t;e=VKe(e,t);for(var n=-1,s=e.length,o=s-1,a=t;a!=null&&++n{var $Ke=xd(),e1e=tF(),t1e=Gg();function r1e(t,e,r){for(var i=-1,n=e.length,s={};++i{function i1e(t,e){return t!=null&&e in Object(t)}UZ.exports=i1e});var jZ=I(($gt,GZ)=>{var n1e=Ac(),s1e=Qo(),o1e="[object Arguments]";function a1e(t){return s1e(t)&&n1e(t)==o1e}GZ.exports=a1e});var Pd=I((eft,YZ)=>{var qZ=jZ(),A1e=Qo(),JZ=Object.prototype,l1e=JZ.hasOwnProperty,c1e=JZ.propertyIsEnumerable,u1e=qZ(function(){return arguments}())?qZ:function(t){return A1e(t)&&l1e.call(t,"callee")&&!c1e.call(t,"callee")};YZ.exports=u1e});var ZB=I((tft,WZ)=>{var g1e=9007199254740991;function f1e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=g1e}WZ.exports=f1e});var rF=I((rft,zZ)=>{var h1e=Gg(),p1e=Pd(),d1e=As(),C1e=kd(),m1e=ZB(),I1e=Sc();function E1e(t,e,r){e=h1e(e,t);for(var i=-1,n=e.length,s=!1;++i{var y1e=HZ(),w1e=rF();function B1e(t,e){return t!=null&&w1e(t,e,y1e)}VZ.exports=B1e});var XZ=I((nft,_Z)=>{var Q1e=KZ(),b1e=iF();function v1e(t,e){return Q1e(t,e,function(r,i){return b1e(t,i)})}_Z.exports=v1e});var $B=I((sft,ZZ)=>{function S1e(t,e){for(var r=-1,i=e.length,n=t.length;++r{var e$=ac(),x1e=Pd(),k1e=As(),t$=e$?e$.isConcatSpreadable:void 0;function P1e(t){return k1e(t)||x1e(t)||!!(t$&&t&&t[t$])}$Z.exports=P1e});var s$=I((aft,i$)=>{var D1e=$B(),R1e=r$();function n$(t,e,r,i,n){var s=-1,o=t.length;for(r||(r=R1e),n||(n=[]);++s0&&r(a)?e>1?n$(a,e-1,r,i,n):D1e(n,a):i||(n[n.length]=a)}return n}i$.exports=n$});var a$=I((Aft,o$)=>{var F1e=s$();function N1e(t){var e=t==null?0:t.length;return e?F1e(t,1):[]}o$.exports=N1e});var l$=I((lft,A$)=>{function L1e(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}A$.exports=L1e});var nF=I((cft,c$)=>{var T1e=l$(),u$=Math.max;function M1e(t,e,r){return e=u$(e===void 0?t.length-1:e,0),function(){for(var i=arguments,n=-1,s=u$(i.length-e,0),o=Array(s);++n{function O1e(t){return function(){return t}}g$.exports=O1e});var e0=I((gft,h$)=>{function K1e(t){return t}h$.exports=K1e});var C$=I((fft,p$)=>{var U1e=f$(),d$=eF(),H1e=e0(),G1e=d$?function(t,e){return d$(t,"toString",{configurable:!0,enumerable:!1,value:U1e(e),writable:!0})}:H1e;p$.exports=G1e});var I$=I((hft,m$)=>{var j1e=800,Y1e=16,q1e=Date.now;function J1e(t){var e=0,r=0;return function(){var i=q1e(),n=Y1e-(i-r);if(r=i,n>0){if(++e>=j1e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}m$.exports=J1e});var sF=I((pft,E$)=>{var W1e=C$(),z1e=I$(),V1e=z1e(W1e);E$.exports=V1e});var w$=I((dft,y$)=>{var _1e=a$(),X1e=nF(),Z1e=sF();function $1e(t){return Z1e(X1e(t,void 0,_1e),t+"")}y$.exports=$1e});var Q$=I((Cft,B$)=>{var eUe=XZ(),tUe=w$(),rUe=tUe(function(t,e){return t==null?{}:eUe(t,e)});B$.exports=rUe});var M$=I((lpt,N$)=>{"use strict";var pF;try{pF=Map}catch(t){}var dF;try{dF=Set}catch(t){}function L$(t,e,r){if(!t||typeof t!="object"||typeof t=="function")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t);if(Array.isArray(t))return t.map(T$);if(pF&&t instanceof pF)return new Map(Array.from(t.entries()));if(dF&&t instanceof dF)return new Set(Array.from(t.values()));if(t instanceof Object){e.push(t);var i=Object.create(t);r.push(i);for(var n in t){var s=e.findIndex(function(o){return o===t[n]});i[n]=s>-1?r[s]:L$(t[n],e,r)}return i}return t}function T$(t){return L$(t,[],[])}N$.exports=T$});var Nd=I(CF=>{"use strict";Object.defineProperty(CF,"__esModule",{value:!0});CF.default=uUe;var gUe=Object.prototype.toString,fUe=Error.prototype.toString,hUe=RegExp.prototype.toString,pUe=typeof Symbol!="undefined"?Symbol.prototype.toString:()=>"",dUe=/^Symbol\((.*)\)(.*)$/;function CUe(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function O$(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return CUe(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return pUe.call(t).replace(dUe,"Symbol($1)");let i=gUe.call(t).slice(8,-1);return i==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):i==="Error"||t instanceof Error?"["+fUe.call(t)+"]":i==="RegExp"?hUe.call(t):null}function uUe(t,e){let r=O$(t,e);return r!==null?r:JSON.stringify(t,function(i,n){let s=O$(this[i],e);return s!==null?s:n},2)}});var La=I(ci=>{"use strict";Object.defineProperty(ci,"__esModule",{value:!0});ci.default=ci.array=ci.object=ci.boolean=ci.date=ci.number=ci.string=ci.mixed=void 0;var K$=mUe(Nd());function mUe(t){return t&&t.__esModule?t:{default:t}}var U$={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:r,originalValue:i})=>{let n=i!=null&&i!==r,s=`${t} must be a \`${e}\` type, but the final value was: \`${(0,K$.default)(r,!0)}\``+(n?` (cast from the value \`${(0,K$.default)(i,!0)}\`).`:".");return r===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};ci.mixed=U$;var H$={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};ci.string=H$;var G$={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};ci.number=G$;var j$={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};ci.date=j$;var Y$={isValue:"${path} field must be ${value}"};ci.boolean=Y$;var q$={noUnknown:"${path} field has unspecified keys: ${unknown}"};ci.object=q$;var J$={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};ci.array=J$;var IUe=Object.assign(Object.create(null),{mixed:U$,string:H$,number:G$,date:j$,object:q$,array:J$,boolean:Y$});ci.default=IUe});var z$=I((gpt,W$)=>{var EUe=Object.prototype,yUe=EUe.hasOwnProperty;function wUe(t,e){return t!=null&&yUe.call(t,e)}W$.exports=wUe});var Ld=I((fpt,V$)=>{var BUe=z$(),QUe=rF();function bUe(t,e){return t!=null&&QUe(t,e,BUe)}V$.exports=bUe});var qg=I(n0=>{"use strict";Object.defineProperty(n0,"__esModule",{value:!0});n0.default=void 0;var vUe=t=>t&&t.__isYupSchema__;n0.default=vUe});var Z$=I(s0=>{"use strict";Object.defineProperty(s0,"__esModule",{value:!0});s0.default=void 0;var SUe=_$(Ld()),xUe=_$(qg());function _$(t){return t&&t.__esModule?t:{default:t}}var X$=class{constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,SUe.default)(r,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!r.then&&!r.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:i,then:n,otherwise:s}=r,o=typeof i=="function"?i:(...a)=>a.every(l=>l===i);this.fn=function(...a){let l=a.pop(),c=a.pop(),u=o(...a)?n:s;if(!!u)return typeof u=="function"?u(c):c.concat(u.resolve(l))}}resolve(e,r){let i=this.refs.map(s=>s.getValue(r==null?void 0:r.value,r==null?void 0:r.parent,r==null?void 0:r.context)),n=this.fn.apply(e,i.concat(e,r));if(n===void 0||n===e)return e;if(!(0,xUe.default)(n))throw new TypeError("conditions must return a schema object");return n.resolve(r)}},kUe=X$;s0.default=kUe});var IF=I(mF=>{"use strict";Object.defineProperty(mF,"__esModule",{value:!0});mF.default=PUe;function PUe(t){return t==null?[]:[].concat(t)}});var xc=I(o0=>{"use strict";Object.defineProperty(o0,"__esModule",{value:!0});o0.default=void 0;var DUe=$$(Nd()),RUe=$$(IF());function $$(t){return t&&t.__esModule?t:{default:t}}function EF(){return EF=Object.assign||function(t){for(var e=1;e(0,DUe.default)(r[s])):typeof e=="function"?e(r):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,r,i,n){super();this.name="ValidationError",this.value=r,this.path=i,this.type=n,this.errors=[],this.inner=[],(0,RUe.default)(e).forEach(s=>{Td.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,Td)}};o0.default=Td});var a0=I(yF=>{"use strict";Object.defineProperty(yF,"__esModule",{value:!0});yF.default=NUe;var wF=LUe(xc());function LUe(t){return t&&t.__esModule?t:{default:t}}var TUe=t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}};function NUe(t,e){let{endEarly:r,tests:i,args:n,value:s,errors:o,sort:a,path:l}=t,c=TUe(e),u=i.length,g=[];if(o=o||[],!u)return o.length?c(new wF.default(o,s,l)):c(null,s);for(let f=0;f{function MUe(t){return function(e,r,i){for(var n=-1,s=Object(e),o=i(e),a=o.length;a--;){var l=o[t?a:++n];if(r(s[l],l,s)===!1)break}return e}}eee.exports=MUe});var BF=I((Ept,ree)=>{var OUe=tee(),KUe=OUe();ree.exports=KUe});var nee=I((ypt,iee)=>{function UUe(t,e){for(var r=-1,i=Array(t);++r{function HUe(){return!1}see.exports=HUe});var Od=I((Md,Jg)=>{var GUe=Ks(),jUe=oee(),aee=typeof Md=="object"&&Md&&!Md.nodeType&&Md,Aee=aee&&typeof Jg=="object"&&Jg&&!Jg.nodeType&&Jg,YUe=Aee&&Aee.exports===aee,lee=YUe?GUe.Buffer:void 0,qUe=lee?lee.isBuffer:void 0,JUe=qUe||jUe;Jg.exports=JUe});var uee=I((Bpt,cee)=>{var WUe=Ac(),zUe=ZB(),VUe=Qo(),_Ue="[object Arguments]",XUe="[object Array]",ZUe="[object Boolean]",$Ue="[object Date]",e2e="[object Error]",t2e="[object Function]",r2e="[object Map]",i2e="[object Number]",n2e="[object Object]",s2e="[object RegExp]",o2e="[object Set]",a2e="[object String]",A2e="[object WeakMap]",l2e="[object ArrayBuffer]",c2e="[object DataView]",u2e="[object Float32Array]",g2e="[object Float64Array]",f2e="[object Int8Array]",h2e="[object Int16Array]",p2e="[object Int32Array]",d2e="[object Uint8Array]",C2e="[object Uint8ClampedArray]",m2e="[object Uint16Array]",I2e="[object Uint32Array]",lr={};lr[u2e]=lr[g2e]=lr[f2e]=lr[h2e]=lr[p2e]=lr[d2e]=lr[C2e]=lr[m2e]=lr[I2e]=!0;lr[_Ue]=lr[XUe]=lr[l2e]=lr[ZUe]=lr[c2e]=lr[$Ue]=lr[e2e]=lr[t2e]=lr[r2e]=lr[i2e]=lr[n2e]=lr[s2e]=lr[o2e]=lr[a2e]=lr[A2e]=!1;function E2e(t){return VUe(t)&&zUe(t.length)&&!!lr[WUe(t)]}cee.exports=E2e});var A0=I((Qpt,gee)=>{function y2e(t){return function(e){return t(e)}}gee.exports=y2e});var l0=I((Kd,Wg)=>{var w2e=WP(),fee=typeof Kd=="object"&&Kd&&!Kd.nodeType&&Kd,Ud=fee&&typeof Wg=="object"&&Wg&&!Wg.nodeType&&Wg,B2e=Ud&&Ud.exports===fee,QF=B2e&&w2e.process,Q2e=function(){try{var t=Ud&&Ud.require&&Ud.require("util").types;return t||QF&&QF.binding&&QF.binding("util")}catch(e){}}();Wg.exports=Q2e});var c0=I((bpt,hee)=>{var b2e=uee(),v2e=A0(),pee=l0(),dee=pee&&pee.isTypedArray,S2e=dee?v2e(dee):b2e;hee.exports=S2e});var bF=I((vpt,Cee)=>{var x2e=nee(),k2e=Pd(),P2e=As(),D2e=Od(),R2e=kd(),F2e=c0(),N2e=Object.prototype,L2e=N2e.hasOwnProperty;function T2e(t,e){var r=P2e(t),i=!r&&k2e(t),n=!r&&!i&&D2e(t),s=!r&&!i&&!n&&F2e(t),o=r||i||n||s,a=o?x2e(t.length,String):[],l=a.length;for(var c in t)(e||L2e.call(t,c))&&!(o&&(c=="length"||n&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||R2e(c,l)))&&a.push(c);return a}Cee.exports=T2e});var u0=I((Spt,mee)=>{var M2e=Object.prototype;function O2e(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||M2e;return t===r}mee.exports=O2e});var vF=I((xpt,Iee)=>{function K2e(t,e){return function(r){return t(e(r))}}Iee.exports=K2e});var yee=I((kpt,Eee)=>{var U2e=vF(),H2e=U2e(Object.keys,Object);Eee.exports=H2e});var Bee=I((Ppt,wee)=>{var G2e=u0(),j2e=yee(),Y2e=Object.prototype,q2e=Y2e.hasOwnProperty;function J2e(t){if(!G2e(t))return j2e(t);var e=[];for(var r in Object(t))q2e.call(t,r)&&r!="constructor"&&e.push(r);return e}wee.exports=J2e});var Hd=I((Dpt,Qee)=>{var W2e=zB(),z2e=ZB();function V2e(t){return t!=null&&z2e(t.length)&&!W2e(t)}Qee.exports=V2e});var zg=I((Rpt,bee)=>{var _2e=bF(),X2e=Bee(),Z2e=Hd();function $2e(t){return Z2e(t)?_2e(t):X2e(t)}bee.exports=$2e});var SF=I((Fpt,vee)=>{var eHe=BF(),tHe=zg();function rHe(t,e){return t&&eHe(t,e,tHe)}vee.exports=rHe});var xee=I((Npt,See)=>{var iHe=vd();function nHe(){this.__data__=new iHe,this.size=0}See.exports=nHe});var Pee=I((Lpt,kee)=>{function sHe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}kee.exports=sHe});var Ree=I((Tpt,Dee)=>{function oHe(t){return this.__data__.get(t)}Dee.exports=oHe});var Nee=I((Mpt,Fee)=>{function aHe(t){return this.__data__.has(t)}Fee.exports=aHe});var Tee=I((Opt,Lee)=>{var AHe=vd(),lHe=VB(),cHe=_B(),uHe=200;function gHe(t,e){var r=this.__data__;if(r instanceof AHe){var i=r.__data__;if(!lHe||i.length{var fHe=vd(),hHe=xee(),pHe=Pee(),dHe=Ree(),CHe=Nee(),mHe=Tee();function Vg(t){var e=this.__data__=new fHe(t);this.size=e.size}Vg.prototype.clear=hHe;Vg.prototype.delete=pHe;Vg.prototype.get=dHe;Vg.prototype.has=CHe;Vg.prototype.set=mHe;Mee.exports=Vg});var Kee=I((Upt,Oee)=>{var IHe="__lodash_hash_undefined__";function EHe(t){return this.__data__.set(t,IHe),this}Oee.exports=EHe});var Hee=I((Hpt,Uee)=>{function yHe(t){return this.__data__.has(t)}Uee.exports=yHe});var jee=I((Gpt,Gee)=>{var wHe=_B(),BHe=Kee(),QHe=Hee();function g0(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new wHe;++e{function bHe(t,e){for(var r=-1,i=t==null?0:t.length;++r{function vHe(t,e){return t.has(e)}Jee.exports=vHe});var xF=I((qpt,zee)=>{var SHe=jee(),xHe=qee(),kHe=Wee(),PHe=1,DHe=2;function RHe(t,e,r,i,n,s){var o=r&PHe,a=t.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(t),u=s.get(e);if(c&&u)return c==e&&u==t;var g=-1,f=!0,h=r&DHe?new SHe:void 0;for(s.set(t,e),s.set(e,t);++g{var FHe=Ks(),NHe=FHe.Uint8Array;Vee.exports=NHe});var Xee=I((Wpt,_ee)=>{function LHe(t){var e=-1,r=Array(t.size);return t.forEach(function(i,n){r[++e]=[n,i]}),r}_ee.exports=LHe});var $ee=I((zpt,Zee)=>{function THe(t){var e=-1,r=Array(t.size);return t.forEach(function(i){r[++e]=i}),r}Zee.exports=THe});var nte=I((Vpt,ete)=>{var tte=ac(),rte=kF(),MHe=Kg(),OHe=xF(),KHe=Xee(),UHe=$ee(),HHe=1,GHe=2,jHe="[object Boolean]",YHe="[object Date]",qHe="[object Error]",JHe="[object Map]",WHe="[object Number]",zHe="[object RegExp]",VHe="[object Set]",_He="[object String]",XHe="[object Symbol]",ZHe="[object ArrayBuffer]",$He="[object DataView]",ite=tte?tte.prototype:void 0,PF=ite?ite.valueOf:void 0;function eGe(t,e,r,i,n,s,o){switch(r){case $He:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case ZHe:return!(t.byteLength!=e.byteLength||!s(new rte(t),new rte(e)));case jHe:case YHe:case WHe:return MHe(+t,+e);case qHe:return t.name==e.name&&t.message==e.message;case zHe:case _He:return t==e+"";case JHe:var a=KHe;case VHe:var l=i&HHe;if(a||(a=UHe),t.size!=e.size&&!l)return!1;var c=o.get(t);if(c)return c==e;i|=GHe,o.set(t,e);var u=OHe(a(t),a(e),i,n,s,o);return o.delete(t),u;case XHe:if(PF)return PF.call(t)==PF.call(e)}return!1}ete.exports=eGe});var DF=I((_pt,ste)=>{var tGe=$B(),rGe=As();function iGe(t,e,r){var i=e(t);return rGe(t)?i:tGe(i,r(t))}ste.exports=iGe});var ate=I((Xpt,ote)=>{function nGe(t,e){for(var r=-1,i=t==null?0:t.length,n=0,s=[];++r{function sGe(){return[]}Ate.exports=sGe});var f0=I(($pt,lte)=>{var oGe=ate(),aGe=RF(),AGe=Object.prototype,lGe=AGe.propertyIsEnumerable,cte=Object.getOwnPropertySymbols,cGe=cte?function(t){return t==null?[]:(t=Object(t),oGe(cte(t),function(e){return lGe.call(t,e)}))}:aGe;lte.exports=cGe});var FF=I((edt,ute)=>{var uGe=DF(),gGe=f0(),fGe=zg();function hGe(t){return uGe(t,fGe,gGe)}ute.exports=hGe});var hte=I((tdt,gte)=>{var fte=FF(),pGe=1,dGe=Object.prototype,CGe=dGe.hasOwnProperty;function mGe(t,e,r,i,n,s){var o=r&pGe,a=fte(t),l=a.length,c=fte(e),u=c.length;if(l!=u&&!o)return!1;for(var g=l;g--;){var f=a[g];if(!(o?f in e:CGe.call(e,f)))return!1}var h=s.get(t),p=s.get(e);if(h&&p)return h==e&&p==t;var d=!0;s.set(t,e),s.set(e,t);for(var m=o;++g{var IGe=UA(),EGe=Ks(),yGe=IGe(EGe,"DataView");pte.exports=yGe});var mte=I((idt,Cte)=>{var wGe=UA(),BGe=Ks(),QGe=wGe(BGe,"Promise");Cte.exports=QGe});var Ete=I((ndt,Ite)=>{var bGe=UA(),vGe=Ks(),SGe=bGe(vGe,"Set");Ite.exports=SGe});var wte=I((sdt,yte)=>{var xGe=UA(),kGe=Ks(),PGe=xGe(kGe,"WeakMap");yte.exports=PGe});var jd=I((odt,Bte)=>{var NF=dte(),LF=VB(),TF=mte(),MF=Ete(),OF=wte(),Qte=Ac(),_g=ZR(),bte="[object Map]",DGe="[object Object]",vte="[object Promise]",Ste="[object Set]",xte="[object WeakMap]",kte="[object DataView]",RGe=_g(NF),FGe=_g(LF),NGe=_g(TF),LGe=_g(MF),TGe=_g(OF),kc=Qte;(NF&&kc(new NF(new ArrayBuffer(1)))!=kte||LF&&kc(new LF)!=bte||TF&&kc(TF.resolve())!=vte||MF&&kc(new MF)!=Ste||OF&&kc(new OF)!=xte)&&(kc=function(t){var e=Qte(t),r=e==DGe?t.constructor:void 0,i=r?_g(r):"";if(i)switch(i){case RGe:return kte;case FGe:return bte;case NGe:return vte;case LGe:return Ste;case TGe:return xte}return e});Bte.exports=kc});var Mte=I((adt,Pte)=>{var KF=Gd(),MGe=xF(),OGe=nte(),KGe=hte(),Dte=jd(),Rte=As(),Fte=Od(),UGe=c0(),HGe=1,Nte="[object Arguments]",Lte="[object Array]",h0="[object Object]",GGe=Object.prototype,Tte=GGe.hasOwnProperty;function jGe(t,e,r,i,n,s){var o=Rte(t),a=Rte(e),l=o?Lte:Dte(t),c=a?Lte:Dte(e);l=l==Nte?h0:l,c=c==Nte?h0:c;var u=l==h0,g=c==h0,f=l==c;if(f&&Fte(t)){if(!Fte(e))return!1;o=!0,u=!1}if(f&&!u)return s||(s=new KF),o||UGe(t)?MGe(t,e,r,i,n,s):OGe(t,e,l,r,i,n,s);if(!(r&HGe)){var h=u&&Tte.call(t,"__wrapped__"),p=g&&Tte.call(e,"__wrapped__");if(h||p){var d=h?t.value():t,m=p?e.value():e;return s||(s=new KF),n(d,m,r,i,s)}}return f?(s||(s=new KF),KGe(t,e,r,i,n,s)):!1}Pte.exports=jGe});var UF=I((Adt,Ote)=>{var YGe=Mte(),Kte=Qo();function Ute(t,e,r,i,n){return t===e?!0:t==null||e==null||!Kte(t)&&!Kte(e)?t!==t&&e!==e:YGe(t,e,r,i,Ute,n)}Ote.exports=Ute});var Gte=I((ldt,Hte)=>{var qGe=Gd(),JGe=UF(),WGe=1,zGe=2;function VGe(t,e,r,i){var n=r.length,s=n,o=!i;if(t==null)return!s;for(t=Object(t);n--;){var a=r[n];if(o&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++n{var _Ge=Gs();function XGe(t){return t===t&&!_Ge(t)}jte.exports=XGe});var qte=I((udt,Yte)=>{var ZGe=HF(),$Ge=zg();function eje(t){for(var e=$Ge(t),r=e.length;r--;){var i=e[r],n=t[i];e[r]=[i,n,ZGe(n)]}return e}Yte.exports=eje});var GF=I((gdt,Jte)=>{function tje(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}Jte.exports=tje});var zte=I((fdt,Wte)=>{var rje=Gte(),ije=qte(),nje=GF();function sje(t){var e=ije(t);return e.length==1&&e[0][2]?nje(e[0][0],e[0][1]):function(r){return r===t||rje(r,t,e)}}Wte.exports=sje});var p0=I((hdt,Vte)=>{var oje=xd();function aje(t,e,r){var i=t==null?void 0:oje(t,e);return i===void 0?r:i}Vte.exports=aje});var Xte=I((pdt,_te)=>{var Aje=UF(),lje=p0(),cje=iF(),uje=WB(),gje=HF(),fje=GF(),hje=Sc(),pje=1,dje=2;function Cje(t,e){return uje(t)&&gje(e)?fje(hje(t),e):function(r){var i=lje(r,t);return i===void 0&&i===e?cje(r,t):Aje(e,i,pje|dje)}}_te.exports=Cje});var $te=I((ddt,Zte)=>{function mje(t){return function(e){return e==null?void 0:e[t]}}Zte.exports=mje});var tre=I((Cdt,ere)=>{var Ije=xd();function Eje(t){return function(e){return Ije(e,t)}}ere.exports=Eje});var ire=I((mdt,rre)=>{var yje=$te(),wje=tre(),Bje=WB(),Qje=Sc();function bje(t){return Bje(t)?yje(Qje(t)):wje(t)}rre.exports=bje});var jF=I((Idt,nre)=>{var vje=zte(),Sje=Xte(),xje=e0(),kje=As(),Pje=ire();function Dje(t){return typeof t=="function"?t:t==null?xje:typeof t=="object"?kje(t)?Sje(t[0],t[1]):vje(t):Pje(t)}nre.exports=Dje});var YF=I((Edt,sre)=>{var Rje=jg(),Fje=SF(),Nje=jF();function Lje(t,e){var r={};return e=Nje(e,3),Fje(t,function(i,n,s){Rje(r,n,e(i,n,s))}),r}sre.exports=Lje});var Yd=I((ydt,ore)=>{"use strict";function Pc(t){this._maxSize=t,this.clear()}Pc.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Pc.prototype.get=function(t){return this._values[t]};Pc.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var Tje=/[^.^\]^[]+|(?=\[\]|\.\.)/g,are=/^\d+$/,Mje=/^\d/,Oje=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,Kje=/^\s*(['"]?)(.*?)(\1)\s*$/,qF=512,Are=new Pc(qF),lre=new Pc(qF),cre=new Pc(qF);ore.exports={Cache:Pc,split:WF,normalizePath:JF,setter:function(t){var e=JF(t);return lre.get(t)||lre.set(t,function(i,n){for(var s=0,o=e.length,a=i;s{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});qd.create=Yje;qd.default=void 0;var qje=Yd(),d0={context:"$",value:"."};function Yje(t,e){return new C0(t,e)}var C0=class{constructor(e,r={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===d0.context,this.isValue=this.key[0]===d0.value,this.isSibling=!this.isContext&&!this.isValue;let i=this.isContext?d0.context:this.isValue?d0.value:"";this.path=this.key.slice(i.length),this.getter=this.path&&(0,qje.getter)(this.path,!0),this.map=r.map}getValue(e,r,i){let n=this.isContext?i:this.isValue?e:r;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,r){return this.getValue(e,r==null?void 0:r.parent,r==null?void 0:r.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};qd.default=C0;C0.prototype.__isYupRef=!0});var ure=I(VF=>{"use strict";Object.defineProperty(VF,"__esModule",{value:!0});VF.default=Jje;var Wje=_F(YF()),m0=_F(xc()),zje=_F(Dc());function _F(t){return t&&t.__esModule?t:{default:t}}function I0(){return I0=Object.assign||function(t){for(var e=1;e=0)&&(r[n]=t[n]);return r}function Jje(t){function e(r,i){let{value:n,path:s="",label:o,options:a,originalValue:l,sync:c}=r,u=Vje(r,["value","path","label","options","originalValue","sync"]),{name:g,test:f,params:h,message:p}=t,{parent:d,context:m}=a;function E(L){return zje.default.isRef(L)?L.getValue(n,d,m):L}function B(L={}){let K=(0,Wje.default)(I0({value:n,originalValue:l,label:o,path:L.path||s},h,L.params),E),J=new m0.default(m0.default.formatError(L.message||p,K),n,K.path,L.type||g);return J.params=K,J}let b=I0({path:s,parent:d,type:g,createError:B,resolve:E,options:a,originalValue:l},u);if(!c){try{Promise.resolve(f.call(b,n,b)).then(L=>{m0.default.isError(L)?i(L):L?i(null,L):i(B())})}catch(L){i(L)}return}let R;try{var H;if(R=f.call(b,n,b),typeof((H=R)==null?void 0:H.then)=="function")throw new Error(`Validation test of type: "${b.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(L){i(L);return}m0.default.isError(R)?i(R):R?i(null,R):i(B())}return e.OPTIONS=t,e}});var XF=I(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.getIn=gre;Jd.default=void 0;var _je=Yd(),Xje=t=>t.substr(0,t.length-1).substr(1);function gre(t,e,r,i=r){let n,s,o;return e?((0,_je.forEach)(e,(a,l,c)=>{let u=l?Xje(a):a;if(t=t.resolve({context:i,parent:n,value:r}),t.innerType){let g=c?parseInt(u,10):0;if(r&&g>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);n=r,r=r&&r[g],t=t.innerType}if(!c){if(!t.fields||!t.fields[u])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t._type}")`);n=r,r=r&&r[u],t=t.fields[u]}s=u,o=l?"["+a+"]":"."+a}),{schema:t,parent:n,parentPath:s}):{parent:n,parentPath:e,schema:t}}var Zje=(t,e,r,i)=>gre(t,e,r,i).schema,$je=Zje;Jd.default=$je});var hre=I(E0=>{"use strict";Object.defineProperty(E0,"__esModule",{value:!0});E0.default=void 0;var fre=eYe(Dc());function eYe(t){return t&&t.__esModule?t:{default:t}}var y0=class{constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let r of this.list)e.push(r);for(let[,r]of this.refs)e.push(r.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){fre.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){fre.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,r){if(this.list.has(e))return!0;let i,n=this.refs.values();for(;i=n.next(),!i.done;)if(r(i.value)===e)return!0;return!1}clone(){let e=new y0;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,r){let i=this.clone();return e.list.forEach(n=>i.add(n)),e.refs.forEach(n=>i.add(n)),r.list.forEach(n=>i.delete(n)),r.refs.forEach(n=>i.delete(n)),i}};E0.default=y0});var Ma=I(w0=>{"use strict";Object.defineProperty(w0,"__esModule",{value:!0});w0.default=void 0;var pre=Ta(M$()),Xg=La(),tYe=Ta(Z$()),dre=Ta(a0()),B0=Ta(ure()),Cre=Ta(Nd()),rYe=Ta(Dc()),iYe=XF(),nYe=Ta(IF()),mre=Ta(xc()),Ire=Ta(hre());function Ta(t){return t&&t.__esModule?t:{default:t}}function ds(){return ds=Object.assign||function(t){for(var e=1;e{this.typeError(Xg.mixed.notType)}),this.type=(e==null?void 0:e.type)||"mixed",this.spec=ds({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e==null?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let r=Object.create(Object.getPrototypeOf(this));return r.type=this.type,r._typeError=this._typeError,r._whitelistError=this._whitelistError,r._blacklistError=this._blacklistError,r._whitelist=this._whitelist.clone(),r._blacklist=this._blacklist.clone(),r.exclusiveTests=ds({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,pre.default)(ds({},this.spec,e)),r}label(e){var r=this.clone();return r.spec.label=e,r}meta(...e){if(e.length===0)return this.spec.meta;let r=this.clone();return r.spec.meta=Object.assign(r.spec.meta||{},e[0]),r}withMutation(e){let r=this._mutate;this._mutate=!0;let i=e(this);return this._mutate=r,i}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let r=this,i=e.clone(),n=ds({},r.spec,i.spec);return i.spec=n,i._typeError||(i._typeError=r._typeError),i._whitelistError||(i._whitelistError=r._whitelistError),i._blacklistError||(i._blacklistError=r._blacklistError),i._whitelist=r._whitelist.merge(e._whitelist,e._blacklist),i._blacklist=r._blacklist.merge(e._blacklist,e._whitelist),i.tests=r.tests,i.exclusiveTests=r.exclusiveTests,i.withMutation(s=>{e.tests.forEach(o=>{s.test(o.OPTIONS)})}),i}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let r=this;if(r.conditions.length){let i=r.conditions;r=r.clone(),r.conditions=[],r=i.reduce((n,s)=>s.resolve(n,e),r),r=r.resolve(e)}return r}cast(e,r={}){let i=this.resolve(ds({value:e},r)),n=i._cast(e,r);if(e!==void 0&&r.assert!==!1&&i.isType(n)!==!0){let s=(0,Cre.default)(e),o=(0,Cre.default)(n);throw new TypeError(`The value of ${r.path||"field"} could not be cast to a value that satisfies the schema type: "${i._type}". + +attempted value: ${s} +`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,r){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,r={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=r,u=e;l||(u=this._cast(u,ds({assert:!1},r)));let g={value:u,path:s,options:r,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,dre.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,dre.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,r,i){let n=this.resolve(ds({},r,{value:e}));return typeof i=="function"?n._validate(e,r,i):new Promise((s,o)=>n._validate(e,r,(a,l)=>{a?o(a):s(l)}))}validateSync(e,r){let i=this.resolve(ds({},r,{value:e})),n;return i._validate(e,ds({},r,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,r){return this.validate(e,r).then(()=>!0,i=>{if(mre.default.isError(i))return!1;throw i})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(i){if(mre.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,pre.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=Xg.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Xg.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=Xg.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,B0.default)(r),s=r.exclusive||r.name&&i.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(i.exclusiveTests[r.name]=!!r.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===r.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let i=this.clone(),n=(0,nYe.default)(e).map(s=>new rYe.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new tYe.default(n,r)),i}typeError(e){var r=this.clone();return r._typeError=(0,B0.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=Xg.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,B0.default)({message:r,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,r=Xg.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,B0.default)({message:r,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:i}=e.spec;return{meta:i,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};w0.default=Do;Do.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])Do.prototype[`${t}At`]=function(e,r,i={}){let{parent:n,parentPath:s,schema:o}=(0,iYe.getIn)(this,e,r,i.context);return o[t](n&&n[s],ds({},i,{parent:n,path:e}))};for(let t of["equals","is"])Do.prototype[t]=Do.prototype.oneOf;for(let t of["not","nope"])Do.prototype[t]=Do.prototype.notOneOf;Do.prototype.optional=Do.prototype.notRequired});var yre=I(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});Wd.create=Ere;Wd.default=void 0;var oYe=sYe(Ma());function sYe(t){return t&&t.__esModule?t:{default:t}}var ZF=oYe.default,aYe=ZF;Wd.default=aYe;function Ere(){return new ZF}Ere.prototype=ZF.prototype});var Zg=I(Q0=>{"use strict";Object.defineProperty(Q0,"__esModule",{value:!0});Q0.default=void 0;var AYe=t=>t==null;Q0.default=AYe});var vre=I(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});zd.create=wre;zd.default=void 0;var lYe=Bre(Ma()),Qre=La(),bre=Bre(Zg());function Bre(t){return t&&t.__esModule?t:{default:t}}function wre(){return new b0}var b0=class extends lYe.default{constructor(){super({type:"boolean"});this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,bre.default)(r)||r===!0}})}isFalse(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,bre.default)(r)||r===!1}})}};zd.default=b0;wre.prototype=b0.prototype});var kre=I(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});Vd.create=Sre;Vd.default=void 0;var Ro=La(),Oa=xre(Zg()),cYe=xre(Ma());function xre(t){return t&&t.__esModule?t:{default:t}}var uYe=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,gYe=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,fYe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,hYe=t=>(0,Oa.default)(t)||t===t.trim(),pYe={}.toString();function Sre(){return new v0}var v0=class extends cYe.default{constructor(){super({type:"string"});this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===pYe?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=Ro.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,Oa.default)(i)||i.length===this.resolve(e)}})}min(e,r=Ro.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Oa.default)(i)||i.length>=this.resolve(e)}})}max(e,r=Ro.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(i){return(0,Oa.default)(i)||i.length<=this.resolve(e)}})}matches(e,r){let i=!1,n,s;return r&&(typeof r=="object"?{excludeEmptyString:i=!1,message:n,name:s}=r:n=r),this.test({name:s||"matches",message:n||Ro.string.matches,params:{regex:e},test:o=>(0,Oa.default)(o)||o===""&&i||o.search(e)!==-1})}email(e=Ro.string.email){return this.matches(uYe,{name:"email",message:e,excludeEmptyString:!0})}url(e=Ro.string.url){return this.matches(gYe,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Ro.string.uuid){return this.matches(fYe,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Ro.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:hYe})}lowercase(e=Ro.string.lowercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toLowerCase()})}uppercase(e=Ro.string.uppercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toUpperCase()})}};Vd.default=v0;Sre.prototype=v0.prototype});var Rre=I(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});_d.create=Pre;_d.default=void 0;var Rc=La(),Fc=Dre(Zg()),dYe=Dre(Ma());function Dre(t){return t&&t.__esModule?t:{default:t}}var CYe=t=>t!=+t;function Pre(){return new S0}var S0=class extends dYe.default{constructor(){super({type:"number"});this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!CYe(e)}min(e,r=Rc.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Fc.default)(i)||i>=this.resolve(e)}})}max(e,r=Rc.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Fc.default)(i)||i<=this.resolve(e)}})}lessThan(e,r=Rc.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(i){return(0,Fc.default)(i)||ithis.resolve(e)}})}positive(e=Rc.number.positive){return this.moreThan(0,e)}negative(e=Rc.number.negative){return this.lessThan(0,e)}integer(e=Rc.number.integer){return this.test({name:"integer",message:e,test:r=>(0,Fc.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Fc.default)(e)?e:e|0)}round(e){var r,i=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(i.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+i.join(", "));return this.transform(n=>(0,Fc.default)(n)?n:Math[e](n))}};_d.default=S0;Pre.prototype=S0.prototype});var Fre=I($F=>{"use strict";Object.defineProperty($F,"__esModule",{value:!0});$F.default=mYe;var IYe=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function mYe(t){var e=[1,4,5,6,7,10,11],r=0,i,n;if(n=IYe.exec(t)){for(var s=0,o;o=e[s];++s)n[o]=+n[o]||0;n[2]=(+n[2]||1)-1,n[3]=+n[3]||1,n[7]=n[7]?String(n[7]).substr(0,3):0,(n[8]===void 0||n[8]==="")&&(n[9]===void 0||n[9]==="")?i=+new Date(n[1],n[2],n[3],n[4],n[5],n[6],n[7]):(n[8]!=="Z"&&n[9]!==void 0&&(r=n[10]*60+n[11],n[9]==="+"&&(r=0-r)),i=Date.UTC(n[1],n[2],n[3],n[4],n[5]+r,n[6],n[7]))}else i=Date.parse?Date.parse(t):NaN;return i}});var Tre=I(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});Xd.create=eN;Xd.default=void 0;var EYe=x0(Fre()),Nre=La(),Lre=x0(Zg()),yYe=x0(Dc()),wYe=x0(Ma());function x0(t){return t&&t.__esModule?t:{default:t}}var tN=new Date(""),BYe=t=>Object.prototype.toString.call(t)==="[object Date]";function eN(){return new Zd}var Zd=class extends wYe.default{constructor(){super({type:"date"});this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,EYe.default)(e),isNaN(e)?tN:new Date(e))})})}_typeCheck(e){return BYe(e)&&!isNaN(e.getTime())}prepareParam(e,r){let i;if(yYe.default.isRef(e))i=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);i=n}return i}min(e,r=Nre.date.min){let i=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Lre.default)(n)||n>=this.resolve(i)}})}max(e,r=Nre.date.max){var i=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Lre.default)(n)||n<=this.resolve(i)}})}};Xd.default=Zd;Zd.INVALID_DATE=tN;eN.prototype=Zd.prototype;eN.INVALID_DATE=tN});var Ore=I((Ndt,Mre)=>{function QYe(t,e,r,i){var n=-1,s=t==null?0:t.length;for(i&&s&&(r=t[++n]);++n{function bYe(t){return function(e){return t==null?void 0:t[e]}}Kre.exports=bYe});var Gre=I((Tdt,Hre)=>{var vYe=Ure(),SYe={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},xYe=vYe(SYe);Hre.exports=xYe});var Yre=I((Mdt,jre)=>{var kYe=Gre(),PYe=gg(),DYe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,RYe="\\u0300-\\u036f",FYe="\\ufe20-\\ufe2f",NYe="\\u20d0-\\u20ff",LYe=RYe+FYe+NYe,TYe="["+LYe+"]",MYe=RegExp(TYe,"g");function OYe(t){return t=PYe(t),t&&t.replace(DYe,kYe).replace(MYe,"")}jre.exports=OYe});var Jre=I((Odt,qre)=>{var KYe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function UYe(t){return t.match(KYe)||[]}qre.exports=UYe});var zre=I((Kdt,Wre)=>{var HYe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function GYe(t){return HYe.test(t)}Wre.exports=GYe});var fie=I((Udt,Vre)=>{var _re="\\ud800-\\udfff",jYe="\\u0300-\\u036f",YYe="\\ufe20-\\ufe2f",qYe="\\u20d0-\\u20ff",JYe=jYe+YYe+qYe,Xre="\\u2700-\\u27bf",Zre="a-z\\xdf-\\xf6\\xf8-\\xff",WYe="\\xac\\xb1\\xd7\\xf7",zYe="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",VYe="\\u2000-\\u206f",_Ye=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",$re="A-Z\\xc0-\\xd6\\xd8-\\xde",XYe="\\ufe0e\\ufe0f",eie=WYe+zYe+VYe+_Ye,tie="['\u2019]",rie="["+eie+"]",ZYe="["+JYe+"]",iie="\\d+",$Ye="["+Xre+"]",nie="["+Zre+"]",sie="[^"+_re+eie+iie+Xre+Zre+$re+"]",eqe="\\ud83c[\\udffb-\\udfff]",tqe="(?:"+ZYe+"|"+eqe+")",rqe="[^"+_re+"]",oie="(?:\\ud83c[\\udde6-\\uddff]){2}",aie="[\\ud800-\\udbff][\\udc00-\\udfff]",$g="["+$re+"]",iqe="\\u200d",Aie="(?:"+nie+"|"+sie+")",nqe="(?:"+$g+"|"+sie+")",lie="(?:"+tie+"(?:d|ll|m|re|s|t|ve))?",cie="(?:"+tie+"(?:D|LL|M|RE|S|T|VE))?",uie=tqe+"?",gie="["+XYe+"]?",sqe="(?:"+iqe+"(?:"+[rqe,oie,aie].join("|")+")"+gie+uie+")*",oqe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",aqe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Aqe=gie+uie+sqe,lqe="(?:"+[$Ye,oie,aie].join("|")+")"+Aqe,cqe=RegExp([$g+"?"+nie+"+"+lie+"(?="+[rie,$g,"$"].join("|")+")",nqe+"+"+cie+"(?="+[rie,$g+Aie,"$"].join("|")+")",$g+"?"+Aie+"+"+lie,$g+"+"+cie,aqe,oqe,iie,lqe].join("|"),"g");function uqe(t){return t.match(cqe)||[]}Vre.exports=uqe});var pie=I((Hdt,hie)=>{var gqe=Jre(),fqe=zre(),hqe=gg(),pqe=fie();function dqe(t,e,r){return t=hqe(t),e=r?void 0:e,e===void 0?fqe(t)?pqe(t):gqe(t):t.match(e)||[]}hie.exports=dqe});var rN=I((Gdt,die)=>{var Cqe=Ore(),mqe=Yre(),Iqe=pie(),Eqe="['\u2019]",yqe=RegExp(Eqe,"g");function wqe(t){return function(e){return Cqe(Iqe(mqe(e).replace(yqe,"")),t,"")}}die.exports=wqe});var mie=I((jdt,Cie)=>{var Bqe=rN(),Qqe=Bqe(function(t,e,r){return t+(r?"_":"")+e.toLowerCase()});Cie.exports=Qqe});var Eie=I((Ydt,Iie)=>{var bqe=ZP(),vqe=rN(),Sqe=vqe(function(t,e,r){return e=e.toLowerCase(),t+(r?bqe(e):e)});Iie.exports=Sqe});var wie=I((qdt,yie)=>{var xqe=jg(),kqe=SF(),Pqe=jF();function Dqe(t,e){var r={};return e=Pqe(e,3),kqe(t,function(i,n,s){xqe(r,e(i,n,s),i)}),r}yie.exports=Dqe});var Qie=I((Jdt,iN)=>{iN.exports=function(t){return Bie(Rqe(t),t)};iN.exports.array=Bie;function Bie(t,e){var r=t.length,i=new Array(r),n={},s=r,o=Fqe(e),a=Nqe(t);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)n[s]||l(t[s],s,new Set);return i;function l(c,u,g){if(g.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch(d){f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!n[u]){n[u]=!0;var h=o.get(c)||new Set;if(h=Array.from(h),u=h.length){g.add(c);do{var p=h[--u];l(p,a.get(p),g)}while(u);g.delete(c)}i[--r]=c}}}function Rqe(t){for(var e=new Set,r=0,i=t.length;r{"use strict";Object.defineProperty(nN,"__esModule",{value:!0});nN.default=Lqe;var Tqe=k0(Ld()),Mqe=k0(Qie()),Oqe=Yd(),Kqe=k0(Dc()),Uqe=k0(qg());function k0(t){return t&&t.__esModule?t:{default:t}}function Lqe(t,e=[]){let r=[],i=[];function n(s,o){var a=(0,Oqe.split)(s)[0];~i.indexOf(a)||i.push(a),~e.indexOf(`${o}-${a}`)||r.push([o,a])}for(let s in t)if((0,Tqe.default)(t,s)){let o=t[s];~i.indexOf(s)||i.push(s),Kqe.default.isRef(o)&&o.isSibling?n(o.path,s):(0,Uqe.default)(o)&&"deps"in o&&o.deps.forEach(a=>n(a,s))}return Mqe.default.array(i,r).reverse()}});var Sie=I(sN=>{"use strict";Object.defineProperty(sN,"__esModule",{value:!0});sN.default=Hqe;function vie(t,e){let r=Infinity;return t.some((i,n)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(i))!==-1)return r=n,!0}),r}function Hqe(t){return(e,r)=>vie(t,e)-vie(t,r)}});var Nie=I($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});$d.create=xie;$d.default=void 0;var kie=Fo(Ld()),Pie=Fo(mie()),Gqe=Fo(Eie()),jqe=Fo(wie()),Yqe=Fo(YF()),qqe=Yd(),Die=La(),Jqe=Fo(bie()),Rie=Fo(Sie()),Wqe=Fo(a0()),zqe=Fo(xc()),oN=Fo(Ma());function Fo(t){return t&&t.__esModule?t:{default:t}}function ef(){return ef=Object.assign||function(t){for(var e=1;eObject.prototype.toString.call(t)==="[object Object]";function Vqe(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(i=>r.indexOf(i)===-1)}var _qe=(0,Rie.default)([]),P0=class extends oN.default{constructor(e){super({type:"object"});this.fields=Object.create(null),this._sortErrors=_qe,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch(n){i=null}return this.isType(i)?i:null}),e&&this.shape(e)})}_typeCheck(e){return Fie(e)||typeof e=="function"}_cast(e,r={}){var i;let n=super._cast(e,r);if(n===void 0)return this.getDefault();if(!this._typeCheck(n))return n;let s=this.fields,o=(i=r.stripUnknown)!=null?i:this.spec.noUnknown,a=this._nodes.concat(Object.keys(n).filter(g=>this._nodes.indexOf(g)===-1)),l={},c=ef({},r,{parent:l,__validating:r.__validating||!1}),u=!1;for(let g of a){let f=s[g],h=(0,kie.default)(n,g);if(f){let p,d=n[g];c.path=(r.path?`${r.path}.`:"")+g,f=f.resolve({value:d,context:r.context,parent:l});let m="spec"in f?f.spec:void 0,E=m==null?void 0:m.strict;if(m==null?void 0:m.strip){u=u||g in n;continue}p=!r.__validating||!E?f.cast(n[g],c):n[g],p!==void 0&&(l[g]=p)}else h&&!o&&(l[g]=n[g]);l[g]!==n[g]&&(u=!0)}return u?l:n}_validate(e,r={},i){let n=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:l=this.spec.abortEarly,recursive:c=this.spec.recursive}=r;o=[{schema:this,value:a},...o],r.__validating=!0,r.originalValue=a,r.from=o,super._validate(e,r,(u,g)=>{if(u){if(!zqe.default.isError(u)||l)return void i(u,g);n.push(u)}if(!c||!Fie(g)){i(n[0]||null,g);return}a=a||g;let f=this._nodes.map(h=>(p,d)=>{let m=h.indexOf(".")===-1?(r.path?`${r.path}.`:"")+h:`${r.path||""}["${h}"]`,E=this.fields[h];if(E&&"validate"in E){E.validate(g[h],ef({},r,{path:m,from:o,strict:!0,parent:g,originalValue:a[h]}),d);return}d(null)});(0,Wqe.default)({sync:s,tests:f,value:g,errors:n,endEarly:l,sort:this._sortErrors,path:r.path},i)})}clone(e){let r=super.clone(e);return r.fields=ef({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),i=r.fields;for(let[n,s]of Object.entries(this.fields)){let o=i[n];o===void 0?i[n]=s:o instanceof oN.default&&s instanceof oN.default&&(i[n]=s.concat(o))}return r.withMutation(()=>r.shape(i))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let i=this.fields[r];e[r]="default"in i?i.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(!!this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let i=this.clone(),n=Object.assign(i.fields,e);if(i.fields=n,i._sortErrors=(0,Rie.default)(Object.keys(n)),r.length){Array.isArray(r[0])||(r=[r]);let s=r.map(([o,a])=>`${o}-${a}`);i._excludedEdges=i._excludedEdges.concat(s)}return i._nodes=(0,Jqe.default)(n,i._excludedEdges),i}pick(e){let r={};for(let i of e)this.fields[i]&&(r[i]=this.fields[i]);return this.clone().withMutation(i=>(i.fields={},i.shape(r)))}omit(e){let r=this.clone(),i=r.fields;r.fields={};for(let n of e)delete i[n];return r.withMutation(()=>r.shape(i))}from(e,r,i){let n=(0,qqe.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,kie.default)(s,e)&&(o=ef({},s),i||delete o[e],o[r]=n(s)),o})}noUnknown(e=!0,r=Die.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let i=this.test({name:"noUnknown",exclusive:!0,message:r,test(n){if(n==null)return!0;let s=Vqe(this.schema,n);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return i.spec.noUnknown=e,i}unknown(e=!0,r=Die.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,jqe.default)(r,(i,n)=>e(n)))}camelCase(){return this.transformKeys(Gqe.default)}snakeCase(){return this.transformKeys(Pie.default)}constantCase(){return this.transformKeys(e=>(0,Pie.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,Yqe.default)(this.fields,r=>r.describe()),e}};$d.default=P0;function xie(t){return new P0(t)}xie.prototype=P0.prototype});var Tie=I(eC=>{"use strict";Object.defineProperty(eC,"__esModule",{value:!0});eC.create=Lie;eC.default=void 0;var aN=tf(Zg()),Xqe=tf(qg()),Zqe=tf(Nd()),AN=La(),$qe=tf(a0()),eJe=tf(xc()),tJe=tf(Ma());function tf(t){return t&&t.__esModule?t:{default:t}}function D0(){return D0=Object.assign||function(t){for(var e=1;e{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch(i){r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let i=super._cast(e,r);if(!this._typeCheck(i)||!this.innerType)return i;let n=!1,s=i.map((o,a)=>{let l=this.innerType.cast(o,D0({},r,{path:`${r.path||""}[${a}]`}));return l!==o&&(n=!0),l});return n?s:i}_validate(e,r={},i){var n,s;let o=[],a=r.sync,l=r.path,c=this.innerType,u=(n=r.abortEarly)!=null?n:this.spec.abortEarly,g=(s=r.recursive)!=null?s:this.spec.recursive,f=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(h,p)=>{if(h){if(!eJe.default.isError(h)||u)return void i(h,p);o.push(h)}if(!g||!c||!this._typeCheck(p)){i(o[0]||null,p);return}f=f||p;let d=new Array(p.length);for(let m=0;mc.validate(E,b,H)}(0,$qe.default)({sync:a,path:l,value:p,errors:o,endEarly:u,tests:d},i)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,Xqe.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,Zqe.default)(e));return r.innerType=e,r}length(e,r=AN.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,aN.default)(i)||i.length===this.resolve(e)}})}min(e,r){return r=r||AN.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,aN.default)(i)||i.length>=this.resolve(e)}})}max(e,r){return r=r||AN.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,aN.default)(i)||i.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(i,n,s)=>!e(i,n,s):i=>!!i;return this.transform(i=>i!=null?i.filter(r):i)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};eC.default=R0;Lie.prototype=R0.prototype});var Mie=I(tC=>{"use strict";Object.defineProperty(tC,"__esModule",{value:!0});tC.create=rJe;tC.default=void 0;var nJe=iJe(qg());function iJe(t){return t&&t.__esModule?t:{default:t}}function rJe(t){return new lN(t)}var lN=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,i={})=>{let n=this.builder(r,i);if(!(0,nJe.default)(n))throw new TypeError("lazy() functions must return a valid schema");return n.resolve(i)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,i){return this._resolve(e,r).validate(e,r,i)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,i){return this._resolve(r,i).validateAt(e,r,i)}validateSyncAt(e,r,i){return this._resolve(r,i).validateSyncAt(e,r,i)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},sJe=lN;tC.default=sJe});var Oie=I(cN=>{"use strict";Object.defineProperty(cN,"__esModule",{value:!0});cN.default=oJe;var AJe=aJe(La());function aJe(t){return t&&t.__esModule?t:{default:t}}function oJe(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{AJe.default[e][r]=t[e][r]})})}});var gN=I(cr=>{"use strict";Object.defineProperty(cr,"__esModule",{value:!0});cr.addMethod=lJe;Object.defineProperty(cr,"MixedSchema",{enumerable:!0,get:function(){return Kie.default}});Object.defineProperty(cr,"mixed",{enumerable:!0,get:function(){return Kie.create}});Object.defineProperty(cr,"BooleanSchema",{enumerable:!0,get:function(){return uN.default}});Object.defineProperty(cr,"bool",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"boolean",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"StringSchema",{enumerable:!0,get:function(){return Uie.default}});Object.defineProperty(cr,"string",{enumerable:!0,get:function(){return Uie.create}});Object.defineProperty(cr,"NumberSchema",{enumerable:!0,get:function(){return Hie.default}});Object.defineProperty(cr,"number",{enumerable:!0,get:function(){return Hie.create}});Object.defineProperty(cr,"DateSchema",{enumerable:!0,get:function(){return Gie.default}});Object.defineProperty(cr,"date",{enumerable:!0,get:function(){return Gie.create}});Object.defineProperty(cr,"ObjectSchema",{enumerable:!0,get:function(){return jie.default}});Object.defineProperty(cr,"object",{enumerable:!0,get:function(){return jie.create}});Object.defineProperty(cr,"ArraySchema",{enumerable:!0,get:function(){return Yie.default}});Object.defineProperty(cr,"array",{enumerable:!0,get:function(){return Yie.create}});Object.defineProperty(cr,"ref",{enumerable:!0,get:function(){return cJe.create}});Object.defineProperty(cr,"lazy",{enumerable:!0,get:function(){return uJe.create}});Object.defineProperty(cr,"ValidationError",{enumerable:!0,get:function(){return gJe.default}});Object.defineProperty(cr,"reach",{enumerable:!0,get:function(){return fJe.default}});Object.defineProperty(cr,"isSchema",{enumerable:!0,get:function(){return qie.default}});Object.defineProperty(cr,"setLocale",{enumerable:!0,get:function(){return hJe.default}});Object.defineProperty(cr,"BaseSchema",{enumerable:!0,get:function(){return pJe.default}});var Kie=Nc(yre()),uN=Nc(vre()),Uie=Nc(kre()),Hie=Nc(Rre()),Gie=Nc(Tre()),jie=Nc(Nie()),Yie=Nc(Tie()),cJe=Dc(),uJe=Mie(),gJe=rC(xc()),fJe=rC(XF()),qie=rC(qg()),hJe=rC(Oie()),pJe=rC(Ma());function rC(t){return t&&t.__esModule?t:{default:t}}function Jie(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Jie=function(){return t},t}function Nc(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Jie();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=i?Object.getOwnPropertyDescriptor(t,n):null;s&&(s.get||s.set)?Object.defineProperty(r,n,s):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}function lJe(t,e,r){if(!t||!(0,qie.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}});var Xie=I((gCt,nC)=>{"use strict";var mJe=process.env.TERM_PROGRAM==="Hyper",IJe=process.platform==="win32",zie=process.platform==="linux",fN={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},Vie=Object.assign({},fN,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),_ie=Object.assign({},fN,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:zie?"\u25B8":"\u276F",pointerSmall:zie?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});nC.exports=IJe&&!mJe?Vie:_ie;Reflect.defineProperty(nC.exports,"common",{enumerable:!1,value:fN});Reflect.defineProperty(nC.exports,"windows",{enumerable:!1,value:Vie});Reflect.defineProperty(nC.exports,"other",{enumerable:!1,value:_ie})});var js=I((fCt,hN)=>{"use strict";var EJe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),yJe=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Zie=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=s=>{let o=s.open=`[${s.codes[0]}m`,a=s.close=`[${s.codes[1]}m`,l=s.regex=new RegExp(`\\u001b\\[${s.codes[1]}m`,"g");return s.wrap=(c,u)=>{c.includes(a)&&(c=c.replace(l,a+o));let g=o+c+a;return u?g.replace(/\r*\n/g,`${a}$&${o}`):g},s},r=(s,o,a)=>typeof s=="function"?s(o):s.wrap(o,a),i=(s,o)=>{if(s===""||s==null)return"";if(t.enabled===!1)return s;if(t.visible===!1)return"";let a=""+s,l=a.includes(` +`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=r(t.styles[o[c]],a,l);return a},n=(s,o,a)=>{t.styles[s]=e({name:s,codes:o}),(t.keys[a]||(t.keys[a]=[])).push(s),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(c){t.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,t),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=yJe,t.hasColor=t.hasAnsi=s=>(t.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&t.ansiRegex.test(s)),t.alias=(s,o)=>{let a=typeof o=="string"?t[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),t.styles[s]=a,a.stack=[s]),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(l){t.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,t),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},t.theme=s=>{if(!EJe(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))t.alias(o,s[o]);return t},t.alias("unstyle",s=>typeof s=="string"&&s!==""?(t.ansiRegex.lastIndex=0,s.replace(t.ansiRegex,"")):""),t.alias("noop",s=>s),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=Xie(),t.define=n,t};hN.exports=Zie();hN.exports.create=Zie});var Mi=I(bt=>{"use strict";var wJe=Object.prototype.toString,Cs=js(),$ie=!1,pN=[],ene={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};bt.longest=(t,e)=>t.reduce((r,i)=>Math.max(r,e?i[e].length:i.length),0);bt.hasColor=t=>!!t&&Cs.hasColor(t);var N0=bt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);bt.nativeType=t=>wJe.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");bt.isAsyncFn=t=>bt.nativeType(t)==="asyncfunction";bt.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";bt.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;bt.scrollDown=(t=[])=>[...t.slice(1),t[0]];bt.scrollUp=(t=[])=>[t.pop(),...t];bt.reorder=(t=[])=>{let e=t.slice();return e.sort((r,i)=>r.index>i.index?1:r.index{let i=t.length,n=r===i?0:r<0?i-1:r,s=t[e];t[e]=t[n],t[n]=s};bt.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};bt.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};bt.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:i=` +`+r,width:n=80}=e;n-=((i+r).match(/[^\S\n]/g)||[]).length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=t.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),r+c.join(i)};bt.unmute=t=>{let e=t.stack.find(i=>Cs.keys.color.includes(i));return e?Cs[e]:t.stack.find(i=>i.slice(2)==="bg")?Cs[e.slice(2)]:i=>i};bt.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";bt.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i));if(e){let i=Cs["bg"+bt.pascal(e)];return i?i.black:t}let r=t.stack.find(i=>i.slice(0,2)==="bg");return r?Cs[r.slice(2).toLowerCase()]||t:Cs.none};bt.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i)),r=t.stack.find(i=>i.slice(0,2)==="bg");if(e&&!r)return Cs[ene[e]||e];if(r){let i=r.slice(2).toLowerCase(),n=ene[i];return n&&Cs["bg"+bt.pascal(n)]||t}return Cs.none};bt.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=r<10?"0"+r:r;return n+":"+s+" "+i};bt.set=(t={},e="",r)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:r;return!bt.isObject(a)&&s{let i=t[e]==null?e.split(".").reduce((n,s)=>n&&n[s],t):t[e];return i==null?r:i};bt.mixin=(t,e)=>{if(!N0(t))return e;if(!N0(e))return t;for(let r of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,r);if(i.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&N0(i.value)){let n=Object.getOwnPropertyDescriptor(t,r);N0(n.value)?t[r]=bt.merge({},t[r],e[r]):Reflect.defineProperty(t,r,i)}else Reflect.defineProperty(t,r,i);else Reflect.defineProperty(t,r,i)}return t};bt.merge=(...t)=>{let e={};for(let r of t)bt.mixin(e,r);return e};bt.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let i of Object.keys(r)){let n=r[i];typeof n=="function"?bt.define(t,i,n.bind(e)):bt.define(t,i,n)}};bt.onExit=t=>{let e=(r,i)=>{$ie||($ie=!0,pN.forEach(n=>n()),r===!0&&process.exit(128+i))};pN.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),pN.push(t)};bt.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};bt.defineExport=(t,e,r)=>{let i;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():r()}})}});var tne=I(nf=>{"use strict";nf.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};nf.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};nf.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};nf.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};nf.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var nne=I((dCt,rne)=>{"use strict";var ine=require("readline"),BJe=tne(),QJe=/^(?:\x1b)([a-zA-Z0-9])$/,bJe=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,vJe={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function SJe(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function xJe(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var L0=(t="",e={})=>{let r,i=P({name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t},e);if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=""+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=i.sequence||""),i.sequence=i.sequence||t||i.name,t==="\r")i.raw=void 0,i.name="return";else if(t===` +`)i.name="enter";else if(t===" ")i.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x7F"||t==="\b")i.name="backspace",i.meta=t.charAt(0)==="";else if(t===""||t==="")i.name="escape",i.meta=t.length===2;else if(t===" "||t===" ")i.name="space",i.meta=t.length===2;else if(t<="")i.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")i.name="number";else if(t.length===1&&t>="a"&&t<="z")i.name=t;else if(t.length===1&&t>="A"&&t<="Z")i.name=t.toLowerCase(),i.shift=!0;else if(r=QJe.exec(t))i.meta=!0,i.shift=/^[A-Z]$/.test(r[1]);else if(r=bJe.exec(t)){let n=[...t];n[0]===""&&n[1]===""&&(i.option=!0);let s=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),o=(r[3]||r[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=vJe[s],i.shift=SJe(s)||i.shift,i.ctrl=xJe(s)||i.ctrl}return i};L0.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let i=ine.createInterface({terminal:!0,input:r});ine.emitKeypressEvents(r,i);let n=(a,l)=>e(a,L0(a,l),i),s=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",n),i.resume(),()=>{r.isTTY&&r.setRawMode(s),r.removeListener("keypress",n),i.pause(),i.close()}};L0.action=(t,e,r)=>{let i=P(P({},BJe),r);return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};rne.exports=L0});var one=I((CCt,sne)=>{"use strict";sne.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let i=e[r];typeof i=="number"&&(i={interval:i}),kJe(t,r,i)}};function kJe(t,e,r={}){let i=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=r.interval||120;i.frames=r.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,t.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),t.once("close",()=>i.stop()),i.stop}});var lne=I((mCt,ane)=>{"use strict";var{define:PJe,width:DJe}=Mi(),Ane=class{constructor(e){let r=e.options;PJe(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=DJe(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e=P({},this);return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};ane.exports=Ane});var une=I((ICt,cne)=>{"use strict";var dN=Mi(),yi=js(),CN={default:yi.noop,noop:yi.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||dN.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||dN.complement(this.primary)},primary:yi.cyan,success:yi.green,danger:yi.magenta,strong:yi.bold,warning:yi.yellow,muted:yi.dim,disabled:yi.gray,dark:yi.dim.gray,underline:yi.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};CN.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(yi.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(yi.visible=t.styles.visible);let e=dN.merge({},CN,t.styles);delete e.merge;for(let r of Object.keys(yi))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});for(let r of Object.keys(yi.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});return e};cne.exports=CN});var fne=I((ECt,gne)=>{"use strict";var mN=process.platform==="win32",Ka=js(),RJe=Mi(),IN=_(P({},Ka.symbols),{upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Ka.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Ka.symbols.question,submitted:Ka.symbols.check,cancelled:Ka.symbols.cross},separator:{pending:Ka.symbols.pointerSmall,submitted:Ka.symbols.middot,cancelled:Ka.symbols.middot},radio:{off:mN?"( )":"\u25EF",on:mN?"(*)":"\u25C9",disabled:mN?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]});IN.merge=t=>{let e=RJe.merge({},Ka.symbols,IN,t.symbols);return delete e.merge,e};gne.exports=IN});var pne=I((yCt,hne)=>{"use strict";var FJe=une(),NJe=fne(),LJe=Mi();hne.exports=t=>{t.options=LJe.merge({},t.options.theme,t.options),t.symbols=NJe.merge(t.options),t.styles=FJe.merge(t.options)}});var Ene=I((dne,Cne)=>{"use strict";var mne=process.env.TERM_PROGRAM==="Apple_Terminal",TJe=js(),EN=Mi(),Ys=Cne.exports=dne,Er="[",Ine="\x07",yN=!1,HA=Ys.code={bell:Ine,beep:Ine,beginning:`${Er}G`,down:`${Er}J`,esc:Er,getPosition:`${Er}6n`,hide:`${Er}?25l`,line:`${Er}2K`,lineEnd:`${Er}K`,lineStart:`${Er}1K`,restorePosition:Er+(mne?"8":"u"),savePosition:Er+(mne?"7":"s"),screen:`${Er}2J`,show:`${Er}?25h`,up:`${Er}1J`},Lc=Ys.cursor={get hidden(){return yN},hide(){return yN=!0,HA.hide},show(){return yN=!1,HA.show},forward:(t=1)=>`${Er}${t}C`,backward:(t=1)=>`${Er}${t}D`,nextLine:(t=1)=>`${Er}E`.repeat(t),prevLine:(t=1)=>`${Er}F`.repeat(t),up:(t=1)=>t?`${Er}${t}A`:"",down:(t=1)=>t?`${Er}${t}B`:"",right:(t=1)=>t?`${Er}${t}C`:"",left:(t=1)=>t?`${Er}${t}D`:"",to(t,e){return e?`${Er}${e+1};${t+1}H`:`${Er}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Lc.left(-t):t>0?Lc.right(t):"",r+=e<0?Lc.up(-e):e>0?Lc.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:i,input:n,prompt:s,size:o,value:a}=t;if(i=EN.isPrimitive(i)?String(i):"",n=EN.isPrimitive(n)?String(n):"",a=EN.isPrimitive(a)?String(a):"",o){let l=Ys.cursor.up(o)+Ys.cursor.to(s.length),c=n.length-r;return c>0&&(l+=Ys.cursor.left(c)),l}if(a||e){let l=!n&&!!i?-i.length:-n.length+r;return e&&(l-=e.length),n===""&&i&&!s.includes(i)&&(l+=i.length),Ys.cursor.move(l)}}},wN=Ys.erase={screen:HA.screen,up:HA.up,down:HA.down,line:HA.line,lineEnd:HA.lineEnd,lineStart:HA.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return wN.line+Lc.to(0);let r=s=>[...TJe.unstyle(s)].length,i=t.split(/\r?\n/),n=0;for(let s of i)n+=1+Math.floor(Math.max(r(s)-1,0)/e);return(wN.line+Lc.prevLine()).repeat(n-1)+wN.line+Lc.to(0)}});var sf=I((wCt,yne)=>{"use strict";var MJe=require("events"),wne=js(),BN=nne(),OJe=one(),KJe=lne(),UJe=pne(),bn=Mi(),Tc=Ene(),T0=class extends MJe{constructor(e={}){super();this.name=e.name,this.type=e.type,this.options=e,UJe(this),OJe(this),this.state=new KJe(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=GJe(this.options.margin),this.setMaxListeners(0),HJe(this)}async keypress(e,r={}){this.keypressed=!0;let i=BN.action(e,BN(e,r),this.options.actions);this.state.keypress=i,this.emit("keypress",e,i),this.emit("state",this.state.clone());let n=this.options[i.action]||this[i.action]||this.dispatch;if(typeof n=="function")return await n.call(this,e,i);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Tc.code.beep)}cursorHide(){this.stdout.write(Tc.cursor.hide()),bn.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Tc.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Tc.cursor.down(e)+Tc.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:i}=this.sections(),{cursor:n,initial:s="",input:o="",value:a=""}=this,l=this.state.size=i.length,c={after:r,cursor:n,initial:s,input:o,prompt:e,size:l,value:a},u=Tc.cursor.restore(c);u&&this.stdout.write(u)}sections(){let{buffer:e,input:r,prompt:i}=this.state;i=wne.unstyle(i);let n=wne.unstyle(e),s=n.indexOf(i),o=n.slice(0,s),l=n.slice(s).split(` +`),c=l[0],u=l[l.length-1],f=(i+(r?" "+r:"")).length,h=fe.call(this,this.value),this.result=()=>i.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let n=r.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=r&&r[e]!=null?r[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,r,i);return!g&&r&&r[e]?this.resolve(c,s,r,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,i=this.state;return i.timer=r,bn.isObject(e)&&(e=e[i.status]||e.pending),bn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return bn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,i=this.state;i.timer=r;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return bn.isObject(s)&&(s=s[i.status]||s.pending),bn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,r){let i=await this.element("pointer",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===r,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=bn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,r){let i=await this.element("indicator",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return bn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return bn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return bn.resolve(this,e,...r)}get base(){return T0.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||bn.height(this.stdout,25)}get width(){return this.options.columns||bn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,i=[r,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function HJe(t){let e=n=>t[n]===void 0||typeof t[n]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(t.options)){if(r.includes(n)||/^on[A-Z]/.test(n))continue;let s=t.options[n];typeof s=="function"&&e(n)?i.includes(n)||(t[n]=s.bind(t)):typeof t[n]!="function"&&(t[n]=s)}}function GJe(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=n=>n%2==0?` +`:" ",i=[];for(let n=0;n<4;n++){let s=r(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}yne.exports=T0});var bne=I((BCt,Bne)=>{"use strict";var jJe=Mi(),Qne={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return Qne.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};Bne.exports=(t,e={})=>{let r=jJe.merge({},Qne,e.roles);return r[t]||r.default}});var sC=I((QCt,vne)=>{"use strict";var YJe=js(),qJe=sf(),JJe=bne(),M0=Mi(),{reorder:QN,scrollUp:WJe,scrollDown:zJe,isObject:Sne,swap:VJe}=M0,xne=class extends qJe{constructor(e){super(e);this.cursorHide(),this.maxSelected=e.maxSelected||Infinity,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Sne(r)&&(r=Object.keys(r)),Array.isArray(r)?(i!=null&&(this.index=this.findIndex(i)),r.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(r=i),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l(this.state.loadingChoices=!1,o))}async toChoice(e,r,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=JJe(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,M0.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,YJe.unstyle(e.message).length));let o=P({},e);return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,i){let n=await this.toChoice(e,r,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,r,i){let n=P({name:"New choice name?",editable:!0,newChoice:!0},e),s=await this.addChoice(n,r,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(n=>this.toggle(n,r));let i=e.parent;for(;i;){let n=i.choices.filter(s=>this.isDisabled(s));i.enabled=n.every(s=>s.enabled===!0),i=i.parent}return kne(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=i=>{let n=Number(i);if(n>this.choices.length-1)return this.alert();let s=this.focused,o=this.choices.find(a=>n===a.index);if(!o.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(o)===-1){let a=QN(this.choices),l=a.indexOf(o);if(s.index>l){let c=a.slice(l,l+this.limit),u=a.filter(g=>!c.includes(g));this.choices=c.concat(u)}else{let c=l-this.limit+1;this.choices=a.slice(c).concat(a.slice(0,c))}}return this.index=this.choices.indexOf(o),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(i=>{let n=this.choices.length,s=this.num,o=(a=!1,l)=>{clearTimeout(this.numberTimeout),a&&(l=r(s)),this.num="",i(l)};if(s==="0"||s.length===1&&Number(s+"0")>n)return o(!0);if(Number(s)>n)return o(!1,this.alert());this.numberTimeout=setTimeout(()=>o(!0),this.delay)})}home(){return this.choices=QN(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=QN(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===0?this.alert():e>r&&i===0?this.scrollUp():(this.index=(i-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===r-1?this.alert():e>r&&i===r-1?this.scrollDown():(this.index=(i+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=WJe(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=zJe(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){VJe(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(i=>e[i]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(i=>!this.isDisabled(i));return e.enabled&&r.every(i=>this.isEnabled(i))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((i,n)=>(i[n]=this.find(n,r),i),{})}filter(e,r){let i=(a,l)=>[a.name,l].includes(e),n=typeof e=="function"?e:i,o=(this.options.multiple?this.state._choices:this.choices).filter(n);return r?o.map(a=>a[r]):o}find(e,r){if(Sne(e))return r?e[r]:e;let i=(o,a)=>[o.name,a].includes(e),n=typeof e=="function"?e:i,s=this.choices.find(n);if(s)return r?s[r]:s}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(o=>o.newChoice))return this.alert();let{reorder:r,sort:i}=this.options,n=this.multiple===!0,s=this.selected;return s===void 0?this.alert():(Array.isArray(s)&&r!==!1&&i!==!0&&(s=M0.reorder(s)),this.value=n?s.map(o=>o.name):s.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(i=>i.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let i=this.find(r);i&&(this.initial=i.index,this.focus(i,!0))}}}get choices(){return kne(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:i}=this,n=e.limit||this._limit||r.limit||i.length;return Math.min(n,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function kne(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(M0.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let i=r.choices.filter(n=>!t.isDisabled(n));r.enabled=i.every(n=>n.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}vne.exports=xne});var GA=I((bCt,Pne)=>{"use strict";var _Je=sC(),bN=Mi(),Dne=class extends _Je{constructor(e){super(e);this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let i=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!bN.hasColor(i)&&(i=this.styles.strong(i)),this.resolve(i,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await this.indicator(e,r)+(e.pad||""),o=await this.resolve(e.hint,this.state,e,r);o&&!bN.hasColor(o)&&(o=this.styles.muted(o));let a=this.indent(e),l=await this.choiceMessage(e,r),c=()=>[this.margin[3],a+n+s,l,this.margin[1],o].filter(Boolean).join(" ");return e.role==="heading"?c():e.disabled?(bN.hasColor(l)||(l=this.styles.disabled(l)),c()):(i&&(l=this.styles.em(l)),c())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(s,o)=>await this.renderChoice(s,o)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let i=this.margin[0]+r.join(` +`),n;return this.options.choicesHeader&&(n=await this.resolve(this.options.choicesHeader,this.state)),[n,i].filter(Boolean).join(` +`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,i="",n=await this.header(),s=await this.prefix(),o=await this.separator(),a=await this.message();this.options.promptLine!==!1&&(i=[s,a,o,""].join(" "),this.state.prompt=i);let l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();l&&(i+=l),c&&!i.includes(c)&&(i+=" "+c),e&&!l&&!u.trim()&&this.multiple&&this.emptyError!=null&&(i+=this.styles.danger(this.emptyError)),this.clear(r),this.write([n,i,u,g].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};Pne.exports=Dne});var Nne=I((vCt,Rne)=>{"use strict";var XJe=GA(),ZJe=(t,e)=>{let r=t.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(r),o=e(i.slice(s,s+r.length));return s>=0?i.slice(0,s)+o+i.slice(s+r.length):i}},Fne=class extends XJe{constructor(e){super(e);this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:i}=this.state;return this.input=i.slice(0,r)+e+i.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let i=e.toLowerCase();return r.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=ZJe(this.input,e),i=this.choices;this.choices=i.map(n=>_(P({},n),{message:r(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Rne.exports=Fne});var SN=I((SCt,Lne)=>{"use strict";var vN=Mi();Lne.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||t.styles.placeholder,l=vN.inverse(t.styles.primary),c=d=>l(t.styles.black(d)),u=r,g=" ",f=c(g);if(t.blink&&t.blink.off===!0&&(c=d=>d,f=""),s&&n===0&&i===""&&r==="")return c(g);if(s&&n===0&&(r===i||r===""))return c(i[0])+a(i.slice(1));i=vN.isPrimitive(i)?`${i}`:"",r=vN.isPrimitive(r)?`${r}`:"";let h=i&&i.startsWith(r)&&i!==r,p=h?c(i[r.length]):f;if(n!==r.length&&s===!0&&(u=r.slice(0,n)+c(r[n])+r.slice(n+1),p=""),s===!1&&(p=""),h){let d=t.styles.unstyle(u+p);return u+p+a(i.slice(d.length))}return u+p}});var O0=I((xCt,Tne)=>{"use strict";var $Je=js(),e3e=GA(),t3e=SN(),Mne=class extends e3e{constructor(e){super(_(P({},e),{multiple:!0}));this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:i,input:n}=r;return r.value=r.input=n.slice(0,i)+e+n.slice(i),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:i}=e;return e.value=e.input=i.slice(0,r-1)+i.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:i}=e;if(i[r]===void 0)return this.alert();let n=`${i}`.slice(0,r)+`${i}`.slice(r+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:i}=e;return r&&r.startsWith(i)&&i!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let i=await this.resolve(e.separator,this.state,e,r)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,d=this.index===r,m=e.validate||(()=>!0),E=await this.choiceSeparator(e,r),B=e.message;this.align==="right"&&(B=B.padStart(this.longest+1," ")),this.align==="left"&&(B=B.padEnd(this.longest+1," "));let b=this.values[a]=c||o,R=c?"success":"dark";await m.call(e,b,this.state)!==!0&&(R="danger");let L=n[R](await this.indicator(e,r))+(e.pad||""),K=this.indent(e),J=()=>[K,L,B+E,c,p].filter(Boolean).join(" ");if(i.submitted)return B=$Je.unstyle(B),c=g(c),p="",J();if(e.format)c=await e.format.call(this,c,e,r);else{let ne=this.styles.muted;c=t3e(this,{input:c,initial:o,pos:s,showCursor:d,color:ne})}return this.isValue(c)||(c=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,b,e,r)),d&&(B=f(B)),e.error?c+=(c?" ":"")+h(e.error.trim()):e.hint&&(c+=(c?" ":"")+u(e.hint.trim())),J()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Tne.exports=Mne});var xN=I((kCt,One)=>{"use strict";var r3e=O0(),i3e=()=>{throw new Error("expected prompt to have a custom authenticate method")},Kne=(t=i3e)=>{class e extends r3e{constructor(i){super(i)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(i){return Kne(i)}}return e};One.exports=Kne()});var Gne=I((PCt,Une)=>{"use strict";var n3e=xN();function s3e(t,e){return t.username===this.options.username&&t.password===this.options.password}var Hne=(t=s3e)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(i){return this.options.showPassword?i:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(i.length))}}];class r extends n3e.create(t){constructor(n){super(_(P({},n),{choices:e}))}static create(n){return Hne(n)}}return r};Une.exports=Hne()});var K0=I((DCt,jne)=>{"use strict";var o3e=sf(),{isPrimitive:a3e,hasColor:A3e}=Mi(),Yne=class extends o3e{constructor(e){super(e);this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:i}=this;return i.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return a3e(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return A3e(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=this.styles.muted(this.default),a=[i,s,o,n].filter(Boolean).join(" ");this.state.prompt=a;let l=await this.header(),c=this.value=this.cast(e),u=await this.format(c),g=await this.error()||await this.hint(),f=await this.footer();g&&!a.includes(g)&&(u+=" "+g),a+=" "+u,this.clear(r),this.write([l,a,f].filter(Boolean).join(` +`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};jne.exports=Yne});var Wne=I((RCt,qne)=>{"use strict";var l3e=K0(),Jne=class extends l3e{constructor(e){super(e);this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};qne.exports=Jne});var _ne=I((FCt,zne)=>{"use strict";var c3e=GA(),u3e=O0(),of=u3e.prototype,Vne=class extends c3e{constructor(e){super(_(P({},e),{multiple:!0}));this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():of.dispatch.call(this,e,r)}append(e,r){return of.append.call(this,e,r)}delete(e,r){return of.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?of.next.call(this):super.next()}prev(){return this.focused.editable?of.prev.call(this):super.prev()}async indicator(e,r){let i=e.indicator||"",n=e.editable?i:super.indicator(e,r);return await this.resolve(n,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?of.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let i=r.parent?this.value[r.parent.name]:this.value;if(r.editable?i=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(i=r.enabled===!0),e=await r.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};zne.exports=Vne});var Mc=I((NCt,Xne)=>{"use strict";var g3e=sf(),f3e=SN(),{isPrimitive:h3e}=Mi(),Zne=class extends g3e{constructor(e){super(e);this.initial=h3e(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let i=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!i||i.name!=="return")?this.append(` +`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:i}=this.state;this.input=`${i}`.slice(0,r)+e+`${i}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),i=this.input.slice(e),n=r.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):f3e(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),i=await this.separator(),n=await this.message(),s=[r,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(` +`)),this.restore()}};Xne.exports=Zne});var ese=I((LCt,$ne)=>{"use strict";var p3e=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),U0=t=>p3e(t).filter(Boolean);$ne.exports=(t,e={},r="")=>{let{past:i=[],present:n=""}=e,s,o;switch(t){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:U0([r,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:U0([...s,r]),present:o};case"save":return{past:U0([...i,r]),present:""};case"remove":return o=U0(i.filter(a=>a!==r)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${t}"`)}}});var kN=I((TCt,tse)=>{"use strict";var d3e=Mc(),rse=ese(),ise=class extends d3e{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let i=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=rse(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=rse("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};tse.exports=ise});var ose=I((MCt,nse)=>{"use strict";var C3e=Mc(),sse=class extends C3e{format(){return""}};nse.exports=sse});var lse=I((OCt,ase)=>{"use strict";var m3e=Mc(),Ase=class extends m3e{constructor(e={}){super(e);this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};ase.exports=Ase});var gse=I((KCt,cse)=>{"use strict";var I3e=GA(),use=class extends I3e{constructor(e){super(_(P({},e),{multiple:!0}))}};cse.exports=use});var PN=I((UCt,fse)=>{"use strict";var E3e=Mc(),hse=class extends E3e{constructor(e={}){super(P({style:"number"},e));this.min=this.isValue(e.min)?this.toNumber(e.min):-Infinity,this.max=this.isValue(e.max)?this.toNumber(e.max):Infinity,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,i=this.toNumber(this.input);return i>this.max+r?this.alert():(this.input=`${i+r}`,this.render())}down(e){let r=e||this.minor,i=this.toNumber(this.input);return ithis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};fse.exports=hse});var dse=I((HCt,pse)=>{pse.exports=PN()});var Ise=I((GCt,Cse)=>{"use strict";var y3e=Mc(),mse=class extends y3e{constructor(e){super(e);this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Cse.exports=mse});var Bse=I((jCt,Ese)=>{"use strict";var w3e=js(),B3e=sC(),yse=Mi(),wse=class extends B3e{constructor(e={}){super(e);this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` + `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let i=0;i=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){if(this.scaleKey===!1||this.state.submitted)return"";let e=this.scale.map(i=>` ${i.name} - ${i.message}`);return["",...e].map(i=>this.styles.muted(i)).join(` +`)}renderScaleHeading(e){let r=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-r.join("").length,n=Math.round(i/(r.length-1)),o=r.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,r,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,i);let n=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let i=e.scale.map(s=>this.scaleIndicator(e,s,r)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await e.hint;s&&!yse.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,r),u=await this.renderScale(e,r),g=this.margin[1]+this.margin[3];this.scaleLength=w3e.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=yse.wordWrap(c,{width:this.widths[0],newline:a}).split(` +`).map(p=>o(p)+this.margin[1]);return i&&(u=this.styles.info(u),h=h.map(p=>this.styles.info(p))),h[0]+=u,this.linebreak&&h.push(""),[l+n,h.join(` +`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(n,s)=>await this.renderChoice(n,s)),r=await Promise.all(e),i=await this.renderScaleHeading();return this.margin[0]+[i,...r.map(n=>n.join(" "))].join(` +`)}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o="";this.options.promptLine!==!1&&(o=[i,s,n,""].join(" "),this.state.prompt=o);let a=await this.header(),l=await this.format(),c=await this.renderScaleKey(),u=await this.error()||await this.hint(),g=await this.renderChoices(),f=await this.footer(),h=this.emptyError;l&&(o+=l),u&&!o.includes(u)&&(o+=" "+u),e&&!l&&!g.trim()&&this.multiple&&h!=null&&(o+=this.styles.danger(h)),this.clear(r),this.write([a,o,c,g,f].filter(Boolean).join(` +`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};Ese.exports=wse});var Sse=I((YCt,Qse)=>{"use strict";var bse=js(),Q3e=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",vse=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Q3e(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},b3e=async(t={},e={},r=i=>i)=>{let i=new Set,n=t.fields||[],s=t.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});uR.name===E.key);E.field=n.find(R=>R.name===E.key),b||(b=new vse(E),a.push(b)),b.lines.push(E.line-1);continue}let d=o[o.length-1];d.type==="text"&&d.line===c?d.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};Qse.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),i=P(P({},e.values),e.initial),{tabstops:n,items:s,keys:o}=await b3e(e,i),a=DN("result",t,e),l=DN("format",t,e),c=DN("validate",t,e,!0),u=t.isValue.bind(t);return async(g={},f=!1)=>{let h=0;g.required=r,g.items=s,g.keys=o,g.output="";let p=async(B,b,R,H)=>{let L=await c(B,b,R,H);return L===!1?"Invalid field "+R.name:L};for(let B of n){let b=B.value,R=B.key;if(B.type!=="template"){b&&(g.output+=b);continue}if(B.type==="template"){let H=s.find(q=>q.name===R);e.required===!0&&g.required.add(H.name);let L=[H.input,g.values[H.value],H.value,b].find(u),J=(H.field||{}).message||B.inner;if(f){let q=await p(g.values[R],g,H,h);if(q&&typeof q=="string"||q===!1){g.invalid.set(R,q);continue}g.invalid.delete(R);let A=await a(g.values[R],g,H,h);g.output+=bse.unstyle(A);continue}H.placeholder=!1;let ne=b;b=await l(b,g,H,h),L!==b?(g.values[R]=L,b=t.styles.typing(L),g.missing.delete(J)):(g.values[R]=void 0,L=`<${J}>`,b=t.styles.primary(L),H.placeholder=!0,g.required.has(R)&&g.missing.add(J)),g.missing.has(J)&&g.validating&&(b=t.styles.warning(L)),g.invalid.has(R)&&g.validating&&(b=t.styles.danger(L)),h===g.index&&(ne!==b?b=t.styles.underline(b):b=t.styles.heading(bse.unstyle(b))),h++}b&&(g.output+=b)}let d=g.output.split(` +`).map(B=>" "+B),m=s.length,E=0;for(let B of s)g.invalid.has(B.name)&&B.lines.forEach(b=>{d[b][0]===" "&&(d[b]=g.styles.danger(g.symbols.bullet)+d[b].slice(1))}),t.isValue(g.values[B.name])&&E++;return g.completed=(E/m*100).toFixed(0),g.output=d.join(` +`),g.output}};function DN(t,e,r,i){return(n,s,o,a)=>typeof o.field[t]=="function"?o.field[t].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var Pse=I((qCt,xse)=>{"use strict";var v3e=js(),S3e=Sse(),x3e=sf(),kse=class extends x3e{constructor(e){super(e);this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await S3e(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:i,size:n}=this.state,s=[this.options.newline,` +`].find(B=>B!=null),o=await this.prefix(),a=await this.separator(),l=await this.message(),c=[o,l,a].filter(Boolean).join(" ");this.state.prompt=c;let u=await this.header(),g=await this.error()||"",f=await this.hint()||"",h=i?"":await this.interpolate(this.state),p=this.state.key=r[e]||"",d=await this.format(p),m=await this.footer();d&&(c+=" "+d),f&&!d&&this.state.completed===0&&(c+=" "+f),this.clear(n);let E=[u,c,h,m,g.trim()];this.write(E.filter(Boolean).join(s)),this.restore()}getItem(e){let{items:r,keys:i,index:n}=this.state,s=r.find(o=>o.name===i[n]);return s&&s.input!=null&&(this.input=s.input,this.cursor=s.cursor),s}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:i,values:n}=this.state;if(e.size){let a="";for(let[l,c]of e)a+=`Invalid ${l}: ${c} +`;return this.state.error=a,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let o=v3e.unstyle(i).split(` +`).map(a=>a.slice(1)).join(` +`);return this.value={values:n,result:o},super.submit()}};xse.exports=kse});var Fse=I((JCt,Dse)=>{"use strict";var k3e="(Use + to sort)",P3e=GA(),Rse=class extends P3e{constructor(e){super(_(P({},e),{reorder:!1,sort:!0,multiple:!0}));this.state.hint=[this.options.hint,k3e].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let i=await super.renderChoice(e,r),n=this.symbols.identicalTo+" ",s=this.index===r&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${r+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Dse.exports=Rse});var Tse=I((WCt,Nse)=>{"use strict";var D3e=sC(),Lse=class extends D3e{constructor(e={}){super(e);if(this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(i=>this.styles.muted(i)),this.state.header=r.join(` + `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let i of r)i.scale=R3e(5,this.options),i.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],i=r.selected;return e.scale.forEach(n=>n.selected=!1),r.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=b=>(b?this.styles.success("\u25C9"):"\u25EF")+o,u=r+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,r),h=this.indent(e),p=h+e.scale.map((b,R)=>c(R===e.scaleIdx)).join(a),d=b=>b===e.scaleIdx?g(b):b,m=h+e.scale.map((b,R)=>d(R)).join(l),E=()=>[u,f].filter(Boolean).join(" "),B=()=>[E(),p,m," "].filter(Boolean).join(` +`);return i&&(p=this.styles.cyan(p),m=this.styles.cyan(m)),B()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(i,n)=>await this.renderChoice(i,n)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` +`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=[i,s,n].filter(Boolean).join(" ");this.state.prompt=o;let a=await this.header(),l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();(l||!c)&&(o+=" "+l),c&&!o.includes(c)&&(o+=" "+c),e&&!l&&!u&&this.multiple&&this.type!=="form"&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([o,a,u,g].filter(Boolean).join(` +`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function R3e(t,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>P({},i));let r=[];for(let i=1;i{Mse.exports=kN()});var Hse=I((VCt,Kse)=>{"use strict";var F3e=K0(),Use=class extends F3e{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([r,c,l].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};Kse.exports=Use});var Yse=I((_Ct,Gse)=>{"use strict";var N3e=GA(),jse=class extends N3e{constructor(e){super(e);if(typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let i=await super.toChoices(e,r);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Gse.exports=jse});var Jse=I(RN=>{"use strict";var qse=Mi(),ti=(t,e)=>{qse.defineExport(RN,t,e),qse.defineExport(RN,t.toLowerCase(),e)};ti("AutoComplete",()=>Nne());ti("BasicAuth",()=>Gne());ti("Confirm",()=>Wne());ti("Editable",()=>_ne());ti("Form",()=>O0());ti("Input",()=>kN());ti("Invisible",()=>ose());ti("List",()=>lse());ti("MultiSelect",()=>gse());ti("Numeral",()=>dse());ti("Password",()=>Ise());ti("Scale",()=>Bse());ti("Select",()=>GA());ti("Snippet",()=>Pse());ti("Sort",()=>Fse());ti("Survey",()=>Tse());ti("Text",()=>Ose());ti("Toggle",()=>Hse());ti("Quiz",()=>Yse())});var zse=I((ZCt,Wse)=>{Wse.exports={ArrayPrompt:sC(),AuthPrompt:xN(),BooleanPrompt:K0(),NumberPrompt:PN(),StringPrompt:Mc()}});var aC=I(($Ct,Vse)=>{"use strict";var _se=require("assert"),FN=require("events"),jA=Mi(),No=class extends FN{constructor(e,r){super();this.options=jA.merge({},e),this.answers=P({},r)}register(e,r){if(jA.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}_se.equal(typeof r,"function","expected a function");let i=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[i]=r:this.prompts[i]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(jA.merge({},this.options,r))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=jA.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=jA;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];_se(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](r),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),r.autofill&&l!=null?(a.value=a.input=l,r.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||sf()}static get prompts(){return Jse()}static get types(){return zse()}static get prompt(){let e=(r,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(r)};return jA.mixinEmitter(e,new FN),e}};jA.mixinEmitter(No,new FN);var NN=No.prompts;for(let t of Object.keys(NN)){let e=t.toLowerCase(),r=i=>new NN[t](i).run();No.prompt[e]=r,No[e]=r,No[t]||Reflect.defineProperty(No,t,{get:()=>NN[t]})}var oC=t=>{jA.defineExport(No,t,()=>No.types[t])};oC("ArrayPrompt");oC("AuthPrompt");oC("BooleanPrompt");oC("NumberPrompt");oC("StringPrompt");Vse.exports=No});var loe=I((Gmt,Aoe)=>{function K3e(t,e){for(var r=-1,i=t==null?0:t.length;++r{var U3e=XB(),H3e=jg();function G3e(t,e,r,i){var n=!r;r||(r={});for(var s=-1,o=e.length;++s{var j3e=Af(),Y3e=zg();function q3e(t,e){return t&&j3e(e,Y3e(e),t)}uoe.exports=q3e});var hoe=I((qmt,foe)=>{function J3e(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}foe.exports=J3e});var doe=I((Jmt,poe)=>{var W3e=Gs(),z3e=u0(),V3e=hoe(),_3e=Object.prototype,X3e=_3e.hasOwnProperty;function Z3e(t){if(!W3e(t))return V3e(t);var e=z3e(t),r=[];for(var i in t)i=="constructor"&&(e||!X3e.call(t,i))||r.push(i);return r}poe.exports=Z3e});var lf=I((Wmt,Coe)=>{var $3e=bF(),eWe=doe(),tWe=Hd();function rWe(t){return tWe(t)?$3e(t,!0):eWe(t)}Coe.exports=rWe});var Ioe=I((zmt,moe)=>{var iWe=Af(),nWe=lf();function sWe(t,e){return t&&iWe(e,nWe(e),t)}moe.exports=sWe});var UN=I((hC,cf)=>{var oWe=Ks(),Eoe=typeof hC=="object"&&hC&&!hC.nodeType&&hC,yoe=Eoe&&typeof cf=="object"&&cf&&!cf.nodeType&&cf,aWe=yoe&&yoe.exports===Eoe,woe=aWe?oWe.Buffer:void 0,Boe=woe?woe.allocUnsafe:void 0;function AWe(t,e){if(e)return t.slice();var r=t.length,i=Boe?Boe(r):new t.constructor(r);return t.copy(i),i}cf.exports=AWe});var HN=I((Vmt,Qoe)=>{function lWe(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{var cWe=Af(),uWe=f0();function gWe(t,e){return cWe(t,uWe(t),e)}boe.exports=gWe});var H0=I((Xmt,Soe)=>{var fWe=vF(),hWe=fWe(Object.getPrototypeOf,Object);Soe.exports=hWe});var GN=I((Zmt,xoe)=>{var pWe=$B(),dWe=H0(),CWe=f0(),mWe=RF(),IWe=Object.getOwnPropertySymbols,EWe=IWe?function(t){for(var e=[];t;)pWe(e,CWe(t)),t=dWe(t);return e}:mWe;xoe.exports=EWe});var Poe=I(($mt,koe)=>{var yWe=Af(),wWe=GN();function BWe(t,e){return yWe(t,wWe(t),e)}koe.exports=BWe});var Roe=I((eIt,Doe)=>{var QWe=DF(),bWe=GN(),vWe=lf();function SWe(t){return QWe(t,vWe,bWe)}Doe.exports=SWe});var Noe=I((tIt,Foe)=>{var xWe=Object.prototype,kWe=xWe.hasOwnProperty;function PWe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&kWe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}Foe.exports=PWe});var G0=I((rIt,Loe)=>{var Toe=kF();function DWe(t){var e=new t.constructor(t.byteLength);return new Toe(e).set(new Toe(t)),e}Loe.exports=DWe});var Ooe=I((iIt,Moe)=>{var RWe=G0();function FWe(t,e){var r=e?RWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}Moe.exports=FWe});var Uoe=I((nIt,Koe)=>{var NWe=/\w*$/;function LWe(t){var e=new t.constructor(t.source,NWe.exec(t));return e.lastIndex=t.lastIndex,e}Koe.exports=LWe});var qoe=I((sIt,Hoe)=>{var Goe=ac(),joe=Goe?Goe.prototype:void 0,Yoe=joe?joe.valueOf:void 0;function TWe(t){return Yoe?Object(Yoe.call(t)):{}}Hoe.exports=TWe});var jN=I((oIt,Joe)=>{var MWe=G0();function OWe(t,e){var r=e?MWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Joe.exports=OWe});var zoe=I((aIt,Woe)=>{var KWe=G0(),UWe=Ooe(),HWe=Uoe(),GWe=qoe(),jWe=jN(),YWe="[object Boolean]",qWe="[object Date]",JWe="[object Map]",WWe="[object Number]",zWe="[object RegExp]",VWe="[object Set]",_We="[object String]",XWe="[object Symbol]",ZWe="[object ArrayBuffer]",$We="[object DataView]",e8e="[object Float32Array]",t8e="[object Float64Array]",r8e="[object Int8Array]",i8e="[object Int16Array]",n8e="[object Int32Array]",s8e="[object Uint8Array]",o8e="[object Uint8ClampedArray]",a8e="[object Uint16Array]",A8e="[object Uint32Array]";function l8e(t,e,r){var i=t.constructor;switch(e){case ZWe:return KWe(t);case YWe:case qWe:return new i(+t);case $We:return UWe(t,r);case e8e:case t8e:case r8e:case i8e:case n8e:case s8e:case o8e:case a8e:case A8e:return jWe(t,r);case JWe:return new i;case WWe:case _We:return new i(t);case zWe:return HWe(t);case VWe:return new i;case XWe:return GWe(t)}}Woe.exports=l8e});var Xoe=I((AIt,Voe)=>{var c8e=Gs(),_oe=Object.create,u8e=function(){function t(){}return function(e){if(!c8e(e))return{};if(_oe)return _oe(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();Voe.exports=u8e});var YN=I((lIt,Zoe)=>{var g8e=Xoe(),f8e=H0(),h8e=u0();function p8e(t){return typeof t.constructor=="function"&&!h8e(t)?g8e(f8e(t)):{}}Zoe.exports=p8e});var eae=I((cIt,$oe)=>{var d8e=jd(),C8e=Qo(),m8e="[object Map]";function I8e(t){return C8e(t)&&d8e(t)==m8e}$oe.exports=I8e});var nae=I((uIt,tae)=>{var E8e=eae(),y8e=A0(),rae=l0(),iae=rae&&rae.isMap,w8e=iae?y8e(iae):E8e;tae.exports=w8e});var oae=I((gIt,sae)=>{var B8e=jd(),Q8e=Qo(),b8e="[object Set]";function v8e(t){return Q8e(t)&&B8e(t)==b8e}sae.exports=v8e});var cae=I((fIt,aae)=>{var S8e=oae(),x8e=A0(),Aae=l0(),lae=Aae&&Aae.isSet,k8e=lae?x8e(lae):S8e;aae.exports=k8e});var pae=I((hIt,uae)=>{var P8e=Gd(),D8e=loe(),R8e=XB(),F8e=goe(),N8e=Ioe(),L8e=UN(),T8e=HN(),M8e=voe(),O8e=Poe(),K8e=FF(),U8e=Roe(),H8e=jd(),G8e=Noe(),j8e=zoe(),Y8e=YN(),q8e=As(),J8e=Od(),W8e=nae(),z8e=Gs(),V8e=cae(),_8e=zg(),X8e=lf(),Z8e=1,$8e=2,eze=4,gae="[object Arguments]",tze="[object Array]",rze="[object Boolean]",ize="[object Date]",nze="[object Error]",fae="[object Function]",sze="[object GeneratorFunction]",oze="[object Map]",aze="[object Number]",hae="[object Object]",Aze="[object RegExp]",lze="[object Set]",cze="[object String]",uze="[object Symbol]",gze="[object WeakMap]",fze="[object ArrayBuffer]",hze="[object DataView]",pze="[object Float32Array]",dze="[object Float64Array]",Cze="[object Int8Array]",mze="[object Int16Array]",Ize="[object Int32Array]",Eze="[object Uint8Array]",yze="[object Uint8ClampedArray]",wze="[object Uint16Array]",Bze="[object Uint32Array]",rr={};rr[gae]=rr[tze]=rr[fze]=rr[hze]=rr[rze]=rr[ize]=rr[pze]=rr[dze]=rr[Cze]=rr[mze]=rr[Ize]=rr[oze]=rr[aze]=rr[hae]=rr[Aze]=rr[lze]=rr[cze]=rr[uze]=rr[Eze]=rr[yze]=rr[wze]=rr[Bze]=!0;rr[nze]=rr[fae]=rr[gze]=!1;function j0(t,e,r,i,n,s){var o,a=e&Z8e,l=e&$8e,c=e&eze;if(r&&(o=n?r(t,i,n,s):r(t)),o!==void 0)return o;if(!z8e(t))return t;var u=q8e(t);if(u){if(o=G8e(t),!a)return T8e(t,o)}else{var g=H8e(t),f=g==fae||g==sze;if(J8e(t))return L8e(t,a);if(g==hae||g==gae||f&&!n){if(o=l||f?{}:Y8e(t),!a)return l?O8e(t,N8e(o,t)):M8e(t,F8e(o,t))}else{if(!rr[g])return n?t:{};o=j8e(t,g,a)}}s||(s=new P8e);var h=s.get(t);if(h)return h;s.set(t,o),V8e(t)?t.forEach(function(m){o.add(j0(m,e,r,m,t,s))}):W8e(t)&&t.forEach(function(m,E){o.set(E,j0(m,e,r,E,t,s))});var p=c?l?U8e:K8e:l?X8e:_8e,d=u?void 0:p(t);return D8e(d||t,function(m,E){d&&(E=m,m=t[E]),R8e(o,E,j0(m,e,r,E,t,s))}),o}uae.exports=j0});var qN=I((pIt,dae)=>{var Qze=pae(),bze=1,vze=4;function Sze(t){return Qze(t,bze|vze)}dae.exports=Sze});var mae=I((dIt,Cae)=>{var xze=tF();function kze(t,e,r){return t==null?t:xze(t,e,r)}Cae.exports=kze});var Qae=I((wIt,Bae)=>{function Pze(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Bae.exports=Pze});var vae=I((BIt,bae)=>{var Dze=xd(),Rze=zP();function Fze(t,e){return e.length<2?t:Dze(t,Rze(e,0,-1))}bae.exports=Fze});var xae=I((QIt,Sae)=>{var Nze=Gg(),Lze=Qae(),Tze=vae(),Mze=Sc();function Oze(t,e){return e=Nze(e,t),t=Tze(t,e),t==null||delete t[Mze(Lze(e))]}Sae.exports=Oze});var Pae=I((bIt,kae)=>{var Kze=xae();function Uze(t,e){return t==null?!0:Kze(t,e)}kae.exports=Uze});var Kae=I((tEt,Oae)=>{Oae.exports={name:"@yarnpkg/cli",version:"3.1.0",license:"BSD-2-Clause",main:"./sources/index.ts",dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/shell":"workspace:^",chalk:"^3.0.0","ci-info":"^3.2.0",clipanion:"^3.0.1",semver:"^7.1.2",tslib:"^1.13.0",typanion:"^3.3.0",yup:"^0.32.9"},devDependencies:{"@types/semver":"^7.1.0","@types/yup":"^0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2",typescript:"^4.4.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",types:"./lib/index.d.ts",bin:null},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=12 <14 || 14.2 - 14.9 || >14.10.0"}}});var iL=I((SBt,QAe)=>{"use strict";QAe.exports=function(e,r){r===!0&&(r=0);var i=e.indexOf("://"),n=e.substring(0,i).split("+").filter(Boolean);return typeof r=="number"?n[r]:n}});var nL=I((xBt,bAe)=>{"use strict";var s4e=iL();function vAe(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=s4e(t);return t=t.substring(t.indexOf("://")+3),vAe(e)?!0:t.indexOf("@"){"use strict";var o4e=iL(),a4e=nL(),A4e=require("querystring");function l4e(t){t=(t||"").trim();var e={protocols:o4e(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),i=-1,n=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(a4e(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split("/"),e.protocol!=="file"?e.resource=s.shift():e.resource="",n=e.resource.split("@"),n.length===2&&(e.user=n[0],e.resource=n[1]),n=e.resource.split(":"),n.length===2&&(e.resource=n[0],n[1]?(e.port=Number(n[1]),isNaN(e.port)&&(e.port=null,s.unshift(n[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),n=e.pathname.split("#"),n.length===2&&(e.pathname=n[0],e.hash=n[1]),n=e.pathname.split("?"),n.length===2&&(e.pathname=n[0],e.search=n[1]),e.query=A4e.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}SAe.exports=l4e});var DAe=I((PBt,kAe)=>{"use strict";var c4e=typeof URL=="undefined"?require("url").URL:URL,PAe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);kAe.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new c4e(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];PAe(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])PAe(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var FAe=I((DBt,RAe)=>{"use strict";var u4e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},g4e=xAe(),f4e=DAe();function h4e(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":u4e(e))!=="object"&&(e={stripFragment:!1}),t=f4e(t,e));var r=g4e(t);return r}RAe.exports=h4e});var TAe=I((RBt,NAe)=>{"use strict";var p4e=FAe(),LAe=nL();function d4e(t){var e=p4e(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),LAe(e.protocols)||LAe(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}NAe.exports=d4e});var OAe=I((FBt,MAe)=>{"use strict";var C4e=TAe();function sL(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=C4e(t),r=e.resource.split("."),i=null;switch(e.toString=function(l){return sL.stringify(this,l)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}else{i=e.name.split("/"),i.length===2?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}else{i=e.name.split("/"),i.length===5?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}default:i=e.name.split("/");var n=i.length-1;if(i.length>=2){var s=i.indexOf("blob",2),o=i.indexOf("tree",2),a=i.indexOf("commit",2);n=s>0?s-1:o>0?o-1:a>0?a-1:n,e.owner=i.slice(0,n).join("/"),e.name=i[n],a&&(e.commit=i[n+2])}e.ref="",e.filepathtype="",e.filepath="",i.length>n+2&&["blob","tree"].indexOf(i[n+1])>=0&&(e.filepathtype=i[n+1],e.ref=i[n+2],i.length>n+3&&(e.filepath=i.slice(n+3).join("/"))),e.organization=e.owner;break}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}sL.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",i=t.user||"git",n=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+i+"@"+t.resource+r+"/"+t.full_name+n:i+"@"+t.resource+":"+t.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+t.resource+r+"/"+t.full_name+n;case"http":case"https":var s=t.token?m4e(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+t.full_name+n;default:return t.href}};function m4e(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}MAe.exports=sL});var NL=I((Obt,ole)=>{var M4e=jg(),O4e=Kg();function K4e(t,e,r){(r!==void 0&&!O4e(t[e],r)||r===void 0&&!(e in t))&&M4e(t,e,r)}ole.exports=K4e});var Ale=I((Kbt,ale)=>{var U4e=Hd(),H4e=Qo();function G4e(t){return H4e(t)&&U4e(t)}ale.exports=G4e});var ule=I((Ubt,lle)=>{var j4e=Ac(),Y4e=H0(),q4e=Qo(),J4e="[object Object]",W4e=Function.prototype,z4e=Object.prototype,cle=W4e.toString,V4e=z4e.hasOwnProperty,_4e=cle.call(Object);function X4e(t){if(!q4e(t)||j4e(t)!=J4e)return!1;var e=Y4e(t);if(e===null)return!0;var r=V4e.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&cle.call(r)==_4e}lle.exports=X4e});var LL=I((Hbt,gle)=>{function Z4e(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}gle.exports=Z4e});var hle=I((Gbt,fle)=>{var $4e=Af(),e5e=lf();function t5e(t){return $4e(t,e5e(t))}fle.exports=t5e});var Ele=I((jbt,ple)=>{var dle=NL(),r5e=UN(),i5e=jN(),n5e=HN(),s5e=YN(),Cle=Pd(),mle=As(),o5e=Ale(),a5e=Od(),A5e=zB(),l5e=Gs(),c5e=ule(),u5e=c0(),Ile=LL(),g5e=hle();function f5e(t,e,r,i,n,s,o){var a=Ile(t,r),l=Ile(e,r),c=o.get(l);if(c){dle(t,r,c);return}var u=s?s(a,l,r+"",t,e,o):void 0,g=u===void 0;if(g){var f=mle(l),h=!f&&a5e(l),p=!f&&!h&&u5e(l);u=l,f||h||p?mle(a)?u=a:o5e(a)?u=n5e(a):h?(g=!1,u=r5e(l,!0)):p?(g=!1,u=i5e(l,!0)):u=[]:c5e(l)||Cle(l)?(u=a,Cle(a)?u=g5e(a):(!l5e(a)||A5e(a))&&(u=s5e(l))):g=!1}g&&(o.set(l,u),n(u,l,i,s,o),o.delete(l)),dle(t,r,u)}ple.exports=f5e});var Ble=I((Ybt,yle)=>{var h5e=Gd(),p5e=NL(),d5e=BF(),C5e=Ele(),m5e=Gs(),I5e=lf(),E5e=LL();function wle(t,e,r,i,n){t!==e&&d5e(e,function(s,o){if(n||(n=new h5e),m5e(s))C5e(t,e,o,r,wle,i,n);else{var a=i?i(E5e(t,o),s,o+"",t,e,n):void 0;a===void 0&&(a=s),p5e(t,o,a)}},I5e)}yle.exports=wle});var ble=I((qbt,Qle)=>{var y5e=e0(),w5e=nF(),B5e=sF();function Q5e(t,e){return B5e(w5e(t,e,y5e),t+"")}Qle.exports=Q5e});var Sle=I((Jbt,vle)=>{var b5e=Kg(),v5e=Hd(),S5e=kd(),x5e=Gs();function k5e(t,e,r){if(!x5e(r))return!1;var i=typeof e;return(i=="number"?v5e(r)&&S5e(e,r.length):i=="string"&&e in r)?b5e(r[e],t):!1}vle.exports=k5e});var kle=I((Wbt,xle)=>{var P5e=ble(),D5e=Sle();function R5e(t){return P5e(function(e,r){var i=-1,n=r.length,s=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(s=t.length>3&&typeof s=="function"?(n--,s):void 0,o&&D5e(r[0],r[1],o)&&(s=n<3?void 0:s,n=1),e=Object(e);++i{var F5e=Ble(),N5e=kle(),L5e=N5e(function(t,e,r){F5e(t,e,r)});Ple.exports=L5e});var Wle=I(($vt,Jle)=>{var VL;Jle.exports=()=>(typeof VL=="undefined"&&(VL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),VL)});var $le=I(XL=>{function pf(t,e){if(typeof t=="string")return t;if(t){let r,i;if(Array.isArray(t)){for(r=0;r0)return(f=pf(n[g],u))?f.replace("*",c.substring(g.length-1)):Gc(i,c,1)}return Gc(i,c)}}function l6e(t,e={}){let r=0,i,n=e.browser,s=e.fields||["module","main"];for(n&&!s.includes("browser")&&s.unshift("browser");r{var eT;nce.exports=()=>(typeof eT=="undefined"&&(eT=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),eT)});var gce=I((aT,AT)=>{(function(t){aT&&typeof aT=="object"&&typeof AT!="undefined"?AT.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window!="undefined"?window.isWindows=t():typeof global!="undefined"?global.isWindows=t():typeof self!="undefined"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var dce=I((Dxt,fce)=>{"use strict";lT.ifExists=I6e;var mf=require("util"),Is=require("path"),hce=gce(),E6e=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,y6e={createPwshFile:!0,createCmdFile:hce(),fs:require("fs")},w6e=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function pce(t){let e=P(P({},y6e),t),r=e.fs;return e.fs_={chmod:r.chmod?mf.promisify(r.chmod):async()=>{},mkdir:mf.promisify(r.mkdir),readFile:mf.promisify(r.readFile),stat:mf.promisify(r.stat),unlink:mf.promisify(r.unlink),writeFile:mf.promisify(r.writeFile)},e}async function lT(t,e,r){let i=pce(r);await i.fs_.stat(t),await B6e(t,e,i)}function I6e(t,e,r){return lT(t,e,r).catch(()=>{})}function Q6e(t,e){return e.fs_.unlink(t).catch(()=>{})}async function B6e(t,e,r){let i=await S6e(t,r);return await b6e(e,r),v6e(t,e,i,r)}function b6e(t,e){return e.fs_.mkdir(Is.dirname(t),{recursive:!0})}function v6e(t,e,r,i){let n=pce(i),s=[{generator:P6e,extension:""}];return n.createCmdFile&&s.push({generator:k6e,extension:".cmd"}),n.createPwshFile&&s.push({generator:D6e,extension:".ps1"}),Promise.all(s.map(o=>x6e(t,e+o.extension,r,o.generator,n)))}function R6e(t,e){return Q6e(t,e)}function N6e(t,e){return F6e(t,e)}async function S6e(t,e){let n=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(E6e);if(!n){let s=Is.extname(t).toLowerCase();return{program:w6e.get(s)||null,additionalArgs:""}}return{program:n[1],additionalArgs:n[2]}}async function x6e(t,e,r,i,n){let s=n.preserveSymlinks?"--preserve-symlinks":"",o=[r.additionalArgs,s].filter(a=>a).join(" ");return n=Object.assign({},n,{prog:r.program,args:o}),await R6e(e,n),await n.fs_.writeFile(e,i(t,e,n),"utf8"),N6e(e,n)}function k6e(t,e,r){let n=Is.relative(Is.dirname(e),t).split("/").join("\\"),s=Is.isAbsolute(n)?`"${n}"`:`"%~dp0\\${n}"`,o,a=r.prog,l=r.args||"",c=cT(r.nodePath).win32;a?(o=`"%~dp0\\${a}.exe"`,n=s):(a=s,l="",n="");let u=r.progArgs?`${r.progArgs.join(" ")} `:"",g=c?`@SET NODE_PATH=${c}\r +`:"";return o?g+=`@IF EXIST ${o} (\r + ${o} ${l} ${n} ${u}%*\r +) ELSE (\r + @SETLOCAL\r + @SET PATHEXT=%PATHEXT:;.JS;=;%\r + ${a} ${l} ${n} ${u}%*\r +)\r +`:g+=`@${a} ${l} ${n} ${u}%*\r +`,g}function P6e(t,e,r){let i=Is.relative(Is.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=Is.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=r.args||"",l=cT(r.nodePath).posix;n?(s=`"$basedir/${r.prog}"`,i=o):(n=o,a="",i="");let c=r.progArgs?`${r.progArgs.join(" ")} `:"",u=`#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") + +case \`uname\` in + *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; +esac + +`,g=r.nodePath?`export NODE_PATH="${l}" +`:"";return s?u+=`${g}if [ -x ${s} ]; then + exec ${s} ${a} ${i} ${c}"$@" +else + exec ${n} ${a} ${i} ${c}"$@" +fi +`:u+=`${g}${n} ${a} ${i} ${c}"$@" +exit $? +`,u}function D6e(t,e,r){let i=Is.relative(Is.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=Is.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=r.args||"",c=cT(r.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${r.prog}$exe"`,i=a):(s=a,l="",i="");let f=r.progArgs?`${r.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +${r.nodePath?`$env_node_path=$env:NODE_PATH +$env:NODE_PATH="${u}" +`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +}`;return r.nodePath&&(h+=` else { + $env:NODE_PATH="${g}" +}`),o?h+=` +$ret=0 +if (Test-Path ${o}) { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${o} ${l} ${i} ${f}$args + } else { + & ${o} ${l} ${i} ${f}$args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${s} ${l} ${i} ${f}$args + } else { + & ${s} ${l} ${i} ${f}$args + } + $ret=$LASTEXITCODE +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $ret +`:h+=` +# Support pipeline input +if ($MyInvocation.ExpectingInput) { + $input | & ${s} ${l} ${i} ${f}$args +} else { + & ${s} ${l} ${i} ${f}$args +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $LASTEXITCODE +`,h}function F6e(t,e){return e.fs_.chmod(t,493)}function cT(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Is.delimiter):Array.from(t),r={};for(let i=0;i`/mnt/${a.toLowerCase()}`):e[i];r.win32=r.win32?`${r.win32};${n}`:n,r.posix=r.posix?`${r.posix}:${s}`:s,r[i]={win32:n,posix:s}}return r}fce.exports=lT});var PT=I((fPt,Nce)=>{Nce.exports=require("stream")});var Oce=I((hPt,Lce)=>{"use strict";function Tce(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function e9e(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return iQ.alloc(0);for(var i=iQ.allocUnsafe(r>>>0),n=this.head,s=0;n;)o9e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(a===o.length?s+=o:s+=o.slice(0,r),r-=a,r===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(r){var i=iQ.allocUnsafe(r),n=this.head,s=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,a=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,a),r-=a,r===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:s9e,value:function(r,i){return DT(this,e9e({},i,{depth:0,customInspect:!1}))}}]),t}()});var FT=I((pPt,Kce)=>{"use strict";function a9e(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(RT,this,t)):process.nextTick(RT,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(s){!e&&s?r._writableState?r._writableState.errorEmitted?process.nextTick(nQ,r):(r._writableState.errorEmitted=!0,process.nextTick(Uce,r,s)):process.nextTick(Uce,r,s):e?(process.nextTick(nQ,r),e(s)):process.nextTick(nQ,r)}),this)}function Uce(t,e){RT(t,e),nQ(t)}function nQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function A9e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function RT(t,e){t.emit("error",e)}function l9e(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}Kce.exports={destroy:a9e,undestroy:A9e,errorOrDestroy:l9e}});var VA=I((dPt,Hce)=>{"use strict";var Gce={};function Es(t,e,r){r||(r=Error);function i(s,o,a){return typeof e=="string"?e:e(s,o,a)}class n extends r{constructor(o,a,l){super(i(o,a,l))}}n.prototype.name=r.name,n.prototype.code=t,Gce[t]=n}function jce(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(i=>String(i)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function c9e(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function u9e(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function g9e(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Es("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Es("ERR_INVALID_ARG_TYPE",function(t,e,r){let i;typeof e=="string"&&c9e(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";let n;if(u9e(t," argument"))n=`The ${t} ${i} ${jce(e,"type")}`;else{let s=g9e(t,".")?"property":"argument";n=`The "${t}" ${s} ${i} ${jce(e,"type")}`}return n+=`. Received type ${typeof r}`,n},TypeError);Es("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Es("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Es("ERR_STREAM_PREMATURE_CLOSE","Premature close");Es("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Es("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Es("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Es("ERR_STREAM_WRITE_AFTER_END","write after end");Es("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Es("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Es("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Hce.exports.codes=Gce});var NT=I((CPt,Yce)=>{"use strict";var f9e=VA().codes.ERR_INVALID_OPT_VALUE;function h9e(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function p9e(t,e,r,i){var n=h9e(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var s=i?r:"highWaterMark";throw new f9e(s,n)}return Math.floor(n)}return t.objectMode?16:16*1024}Yce.exports={getHighWaterMark:p9e}});var qce=I((mPt,LT)=>{typeof Object.create=="function"?LT.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:LT.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var _A=I((IPt,TT)=>{try{if(MT=require("util"),typeof MT.inherits!="function")throw"";TT.exports=MT.inherits}catch(t){TT.exports=qce()}var MT});var Wce=I((EPt,Jce)=>{Jce.exports=require("util").deprecate});var UT=I((yPt,zce)=>{"use strict";zce.exports=Sr;function Vce(t){var e=this;this.next=null,this.entry=null,this.finish=function(){d9e(e,t)}}var Ef;Sr.WritableState=em;var C9e={deprecate:Wce()},_ce=PT(),sQ=require("buffer").Buffer,m9e=global.Uint8Array||function(){};function I9e(t){return sQ.from(t)}function E9e(t){return sQ.isBuffer(t)||t instanceof m9e}var OT=FT(),y9e=NT(),w9e=y9e.getHighWaterMark,XA=VA().codes,B9e=XA.ERR_INVALID_ARG_TYPE,Q9e=XA.ERR_METHOD_NOT_IMPLEMENTED,b9e=XA.ERR_MULTIPLE_CALLBACK,v9e=XA.ERR_STREAM_CANNOT_PIPE,S9e=XA.ERR_STREAM_DESTROYED,x9e=XA.ERR_STREAM_NULL_VALUES,k9e=XA.ERR_STREAM_WRITE_AFTER_END,P9e=XA.ERR_UNKNOWN_ENCODING,yf=OT.errorOrDestroy;_A()(Sr,_ce);function D9e(){}function em(t,e,r){Ef=Ef||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof Ef),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=w9e(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){R9e(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Vce(this)}em.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(em.prototype,"buffer",{get:C9e.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}})();var oQ;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(oQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Sr,Symbol.hasInstance,{value:function(e){return oQ.call(this,e)?!0:this!==Sr?!1:e&&e._writableState instanceof em}})):oQ=function(e){return e instanceof this};function Sr(t){Ef=Ef||Yc();var e=this instanceof Ef;if(!e&&!oQ.call(Sr,this))return new Sr(t);this._writableState=new em(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),_ce.call(this)}Sr.prototype.pipe=function(){yf(this,new v9e)};function F9e(t,e){var r=new k9e;yf(t,r),process.nextTick(e,r)}function N9e(t,e,r,i){var n;return r===null?n=new x9e:typeof r!="string"&&!e.objectMode&&(n=new B9e("chunk",["string","Buffer"],r)),n?(yf(t,n),process.nextTick(i,n),!1):!0}Sr.prototype.write=function(t,e,r){var i=this._writableState,n=!1,s=!i.objectMode&&E9e(t);return s&&!sQ.isBuffer(t)&&(t=I9e(t)),typeof e=="function"&&(r=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=D9e),i.ending?F9e(this,r):(s||N9e(this,i,t,r))&&(i.pendingcb++,n=L9e(this,i,s,t,e,r)),n};Sr.prototype.cork=function(){this._writableState.corked++};Sr.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Xce(this,t))};Sr.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new P9e(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Sr.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function T9e(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=sQ.from(e,r)),e}Object.defineProperty(Sr.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L9e(t,e,r,i,n,s){if(!r){var o=T9e(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length{"use strict";var j9e=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};eue.exports=Mo;var tue=HT(),GT=UT();_A()(Mo,tue);for(jT=j9e(GT.prototype),aQ=0;aQ{var lQ=require("buffer"),qa=lQ.Buffer;function iue(t,e){for(var r in t)e[r]=t[r]}qa.from&&qa.alloc&&qa.allocUnsafe&&qa.allocUnsafeSlow?rue.exports=lQ:(iue(lQ,YT),YT.Buffer=wf);function wf(t,e,r){return qa(t,e,r)}iue(qa,wf);wf.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return qa(t,e,r)};wf.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=qa(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};wf.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return qa(t)};wf.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return lQ.SlowBuffer(t)}});var WT=I(sue=>{"use strict";var qT=nue().Buffer,oue=qT.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function J9e(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function W9e(t){var e=J9e(t);if(typeof e!="string"&&(qT.isEncoding===oue||!oue(t)))throw new Error("Unknown encoding: "+t);return e||t}sue.StringDecoder=rm;function rm(t){this.encoding=W9e(t);var e;switch(this.encoding){case"utf16le":this.text=V9e,this.end=_9e,e=4;break;case"utf8":this.fillLast=z9e,e=4;break;case"base64":this.text=X9e,this.end=Z9e,e=3;break;default:this.write=$9e,this.end=e7e;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=qT.allocUnsafe(e)}rm.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function i7e(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function n7e(t,e,r){if((e[0]&192)!=128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!=128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!=128)return t.lastNeed=2,"\uFFFD"}}function z9e(t){var e=this.lastTotal-this.lastNeed,r=n7e(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function r7e(t,e){var r=i7e(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function t7e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function V9e(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function _9e(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function X9e(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Z9e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function $9e(t){return t.toString(this.encoding)}function e7e(t){return t&&t.length?this.write(t):""}});var cQ=I((QPt,aue)=>{"use strict";var Aue=VA().codes.ERR_STREAM_PREMATURE_CLOSE;function s7e(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";var uQ;function ZA(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var A7e=cQ(),$A=Symbol("lastResolve"),qc=Symbol("lastReject"),im=Symbol("error"),gQ=Symbol("ended"),Jc=Symbol("lastPromise"),zT=Symbol("handlePromise"),Wc=Symbol("stream");function el(t,e){return{value:t,done:e}}function l7e(t){var e=t[$A];if(e!==null){var r=t[Wc].read();r!==null&&(t[Jc]=null,t[$A]=null,t[qc]=null,e(el(r,!1)))}}function c7e(t){process.nextTick(l7e,t)}function u7e(t,e){return function(r,i){t.then(function(){if(e[gQ]){r(el(void 0,!0));return}e[zT](r,i)},i)}}var g7e=Object.getPrototypeOf(function(){}),f7e=Object.setPrototypeOf((uQ={get stream(){return this[Wc]},next:function(){var e=this,r=this[im];if(r!==null)return Promise.reject(r);if(this[gQ])return Promise.resolve(el(void 0,!0));if(this[Wc].destroyed)return new Promise(function(o,a){process.nextTick(function(){e[im]?a(e[im]):o(el(void 0,!0))})});var i=this[Jc],n;if(i)n=new Promise(u7e(i,this));else{var s=this[Wc].read();if(s!==null)return Promise.resolve(el(s,!1));n=new Promise(this[zT])}return this[Jc]=n,n}},ZA(uQ,Symbol.asyncIterator,function(){return this}),ZA(uQ,"return",function(){var e=this;return new Promise(function(r,i){e[Wc].destroy(null,function(n){if(n){i(n);return}r(el(void 0,!0))})})}),uQ),g7e),h7e=function(e){var r,i=Object.create(f7e,(r={},ZA(r,Wc,{value:e,writable:!0}),ZA(r,$A,{value:null,writable:!0}),ZA(r,qc,{value:null,writable:!0}),ZA(r,im,{value:null,writable:!0}),ZA(r,gQ,{value:e._readableState.endEmitted,writable:!0}),ZA(r,zT,{value:function(s,o){var a=i[Wc].read();a?(i[Jc]=null,i[$A]=null,i[qc]=null,s(el(a,!1))):(i[$A]=s,i[qc]=o)},writable:!0}),r));return i[Jc]=null,A7e(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var s=i[qc];s!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,s(n)),i[im]=n;return}var o=i[$A];o!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,o(el(void 0,!0))),i[gQ]=!0}),e.on("readable",c7e.bind(null,i)),i};cue.exports=h7e});var pue=I((vPt,gue)=>{"use strict";function fue(t,e,r,i,n,s,o){try{var a=t[s](o),l=a.value}catch(c){r(c);return}a.done?e(l):Promise.resolve(l).then(i,n)}function p7e(t){return function(){var e=this,r=arguments;return new Promise(function(i,n){var s=t.apply(e,r);function o(l){fue(s,i,n,o,a,"next",l)}function a(l){fue(s,i,n,o,a,"throw",l)}o(void 0)})}}function hue(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function C7e(t){for(var e=1;e{"use strict";due.exports=kt;var Bf;kt.ReadableState=Cue;var SPt=require("events").EventEmitter,mue=function(e,r){return e.listeners(r).length},nm=PT(),fQ=require("buffer").Buffer,E7e=global.Uint8Array||function(){};function y7e(t){return fQ.from(t)}function w7e(t){return fQ.isBuffer(t)||t instanceof E7e}var VT=require("util"),It;VT&&VT.debuglog?It=VT.debuglog("stream"):It=function(){};var B7e=Oce(),_T=FT(),Q7e=NT(),b7e=Q7e.getHighWaterMark,hQ=VA().codes,v7e=hQ.ERR_INVALID_ARG_TYPE,S7e=hQ.ERR_STREAM_PUSH_AFTER_EOF,x7e=hQ.ERR_METHOD_NOT_IMPLEMENTED,k7e=hQ.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Qf,XT,ZT;_A()(kt,nm);var sm=_T.errorOrDestroy,$T=["error","close","destroy","pause","resume"];function P7e(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function Cue(t,e,r){Bf=Bf||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof Bf),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=b7e(this,t,"readableHighWaterMark",r),this.buffer=new B7e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Qf||(Qf=WT().StringDecoder),this.decoder=new Qf(t.encoding),this.encoding=t.encoding)}function kt(t){if(Bf=Bf||Yc(),!(this instanceof kt))return new kt(t);var e=this instanceof Bf;this._readableState=new Cue(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),nm.call(this)}Object.defineProperty(kt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});kt.prototype.destroy=_T.destroy;kt.prototype._undestroy=_T.undestroy;kt.prototype._destroy=function(t,e){e(t)};kt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=fQ.from(t,e),e=""),i=!0),Iue(this,t,e,!1,i)};kt.prototype.unshift=function(t){return Iue(this,t,null,!0,!1)};function Iue(t,e,r,i,n){It("readableAddChunk",e);var s=t._readableState;if(e===null)s.reading=!1,R7e(t,s);else{var o;if(n||(o=D7e(s,e)),o)sm(t,o);else if(s.objectMode||e&&e.length>0)if(typeof e!="string"&&!s.objectMode&&Object.getPrototypeOf(e)!==fQ.prototype&&(e=y7e(e)),i)s.endEmitted?sm(t,new k7e):eM(t,s,e,!0);else if(s.ended)sm(t,new S7e);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||e.length!==0?eM(t,s,e,!1):tM(t,s)):eM(t,s,e,!1)}else i||(s.reading=!1,tM(t,s))}return!s.ended&&(s.length=Eue?t=Eue:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function yue(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=F7e(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}kt.prototype.read=function(t){It("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return It("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?rM(this):pQ(this),null;if(t=yue(t,e),t===0&&e.ended)return e.length===0&&rM(this),null;var i=e.needReadable;It("need readable",i),(e.length===0||e.length-t0?n=wue(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&rM(this)),n!==null&&this.emit("data",n),n};function R7e(t,e){if(It("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?pQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,Bue(t)))}}function pQ(t){var e=t._readableState;It("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(It("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(Bue,t))}function Bue(t){var e=t._readableState;It("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,iM(t)}function tM(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(N7e,t,e))}function N7e(t,e){for(;!e.reading&&!e.ended&&(e.length1&&Que(i.pipes,t)!==-1)&&!c&&(It("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(m){It("onerror",m),d(),t.removeListener("error",f),mue(t,"error")===0&&sm(t,m)}P7e(t,"error",f);function h(){t.removeListener("finish",p),d()}t.once("close",h);function p(){It("onfinish"),t.removeListener("close",h),d()}t.once("finish",p);function d(){It("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(It("pipe resume"),r.resume()),t};function L7e(t){return function(){var r=t._readableState;It("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&mue(t,"data")&&(r.flowing=!0,iM(t))}}kt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var s=0;s0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,It("on readable",i.length,i.reading),i.length?pQ(this):i.reading||process.nextTick(T7e,this)),r};kt.prototype.addListener=kt.prototype.on;kt.prototype.removeListener=function(t,e){var r=nm.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(bue,this),r};kt.prototype.removeAllListeners=function(t){var e=nm.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(bue,this),e};function bue(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T7e(t){It("readable nexttick read 0"),t.read(0)}kt.prototype.resume=function(){var t=this._readableState;return t.flowing||(It("resume"),t.flowing=!t.readableListening,M7e(this,t)),t.paused=!1,this};function M7e(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(O7e,t,e))}function O7e(t,e){It("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),iM(t),e.flowing&&!e.reading&&t.read(0)}kt.prototype.pause=function(){return It("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(It("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function iM(t){var e=t._readableState;for(It("flow",e.flowing);e.flowing&&t.read()!==null;);}kt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(It("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(It("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var a=e.push(o);a||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(a){return function(){return t[a].apply(t,arguments)}}(n));for(var s=0;s<$T.length;s++)t.on($T[s],this.emit.bind(this,$T[s]));return this._read=function(o){It("wrapped _read",o),i&&(i=!1,t.resume())},this};typeof Symbol=="function"&&(kt.prototype[Symbol.asyncIterator]=function(){return XT===void 0&&(XT=uue()),XT(this)});Object.defineProperty(kt.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(kt.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(kt.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});kt._fromList=wue;Object.defineProperty(kt.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function wue(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function rM(t){var e=t._readableState;It("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(K7e,e,t))}function K7e(t,e){if(It("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(kt.from=function(t,e){return ZT===void 0&&(ZT=pue()),ZT(kt,t,e)});function Que(t,e){for(var r=0,i=t.length;r{"use strict";vue.exports=Ja;var dQ=VA().codes,U7e=dQ.ERR_METHOD_NOT_IMPLEMENTED,H7e=dQ.ERR_MULTIPLE_CALLBACK,G7e=dQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,j7e=dQ.ERR_TRANSFORM_WITH_LENGTH_0,CQ=Yc();_A()(Ja,CQ);function Y7e(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new H7e);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";xue.exports=om;var kue=nM();_A()(om,kue);function om(t){if(!(this instanceof om))return new om(t);kue.call(this,t)}om.prototype._transform=function(t,e,r){r(null,t)}});var Lue=I((DPt,Due)=>{"use strict";var sM;function J7e(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var Rue=VA().codes,W7e=Rue.ERR_MISSING_ARGS,z7e=Rue.ERR_STREAM_DESTROYED;function Fue(t){if(t)throw t}function V7e(t){return t.setHeader&&typeof t.abort=="function"}function _7e(t,e,r,i){i=J7e(i);var n=!1;t.on("close",function(){n=!0}),sM===void 0&&(sM=cQ()),sM(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,V7e(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new z7e("pipe"))}}}function Nue(t){t()}function X7e(t,e){return t.pipe(e)}function Z7e(t){return!t.length||typeof t[t.length-1]!="function"?Fue:t.pop()}function $7e(){for(var t=arguments.length,e=new Array(t),r=0;r0;return _7e(o,l,c,function(u){n||(n=u),u&&s.forEach(Nue),!l&&(s.forEach(Nue),i(n))})});return e.reduce(X7e)}Due.exports=$7e});var bf=I((ys,am)=>{var Am=require("stream");process.env.READABLE_STREAM==="disable"&&Am?(am.exports=Am.Readable,Object.assign(am.exports,Am),am.exports.Stream=Am):(ys=am.exports=HT(),ys.Stream=Am||ys,ys.Readable=ys,ys.Writable=UT(),ys.Duplex=Yc(),ys.Transform=nM(),ys.PassThrough=Pue(),ys.finished=cQ(),ys.pipeline=Lue())});var Oue=I((RPt,Tue)=>{"use strict";var{Buffer:_s}=require("buffer"),Mue=Symbol.for("BufferList");function nr(t){if(!(this instanceof nr))return new nr(t);nr._init.call(this,t)}nr._init=function(e){Object.defineProperty(this,Mue,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};nr.prototype._new=function(e){return new nr(e)};nr.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let i=0;ithis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};nr.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};nr.prototype.copy=function(e,r,i,n){if((typeof i!="number"||i<0)&&(i=0),(typeof n!="number"||n>this.length)&&(n=this.length),i>=this.length||n<=0)return e||_s.alloc(0);let s=!!e,o=this._offset(i),a=n-i,l=a,c=s&&r||0,u=o[1];if(i===0&&n===this.length){if(!s)return this._bufs.length===1?this._bufs[0]:_s.concat(this._bufs,this.length);for(let g=0;gf)this._bufs[g].copy(e,c,u),c+=f;else{this._bufs[g].copy(e,c,u,u+l),c+=f;break}l-=f,u&&(u=0)}return e.length>c?e.slice(0,c):e};nr.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let i=this._offset(e),n=this._offset(r),s=this._bufs.slice(i[0],n[0]+1);return n[1]===0?s.pop():s[s.length-1]=s[s.length-1].slice(0,n[1]),i[1]!==0&&(s[0]=s[0].slice(i[1])),this._new(s)};nr.prototype.toString=function(e,r,i){return this.slice(r,i).toString(e)};nr.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};nr.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let i=this._offset(e),n=i[0],s=i[1];for(;n=t.length){let l=o.indexOf(t,s);if(l!==-1)return this._reverseOffset([n,l]);s=o.length-t.length+1}else{let l=this._reverseOffset([n,s]);if(this._match(l,t))return l;s++}s=0}return-1};nr.prototype._match=function(t,e){if(this.length-t{"use strict";var oM=bf().Duplex,eVe=_A(),lm=Oue();function Oi(t){if(!(this instanceof Oi))return new Oi(t);if(typeof t=="function"){this._callback=t;let e=function(i){this._callback&&(this._callback(i),this._callback=null)}.bind(this);this.on("pipe",function(i){i.on("error",e)}),this.on("unpipe",function(i){i.removeListener("error",e)}),t=null}lm._init.call(this,t),oM.call(this)}eVe(Oi,oM);Object.assign(Oi.prototype,lm.prototype);Oi.prototype._new=function(e){return new Oi(e)};Oi.prototype._write=function(e,r,i){this._appendBuffer(e),typeof i=="function"&&i()};Oi.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Oi.prototype.end=function(e){oM.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Oi.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Oi.prototype._isBufferList=function(e){return e instanceof Oi||e instanceof lm||Oi.isBufferList(e)};Oi.isBufferList=lm.isBufferList;mQ.exports=Oi;mQ.exports.BufferListStream=Oi;mQ.exports.BufferList=lm});var lM=I(vf=>{var tVe=Buffer.alloc,rVe="0000000000000000000",iVe="7777777777777777777",Uue="0".charCodeAt(0),Hue=Buffer.from("ustar\0","binary"),nVe=Buffer.from("00","binary"),sVe=Buffer.from("ustar ","binary"),oVe=Buffer.from(" \0","binary"),aVe=parseInt("7777",8),cm=257,aM=263,AVe=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},lVe=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},cVe=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},Gue=function(t,e,r,i){for(;re?iVe.slice(0,e)+" ":rVe.slice(0,e-t.length)+t+" "};function uVe(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],i=t.length-1;i>0;i--){var n=t[i];e?r.push(n):r.push(255-n)}var s=0,o=r.length;for(i=0;i=Math.pow(10,r)&&r++,e+r+t};vf.decodeLongPath=function(t,e){return Sf(t,0,t.length,e)};vf.encodePax=function(t){var e="";t.name&&(e+=AM(" path="+t.name+` +`)),t.linkname&&(e+=AM(" linkpath="+t.linkname+` +`));var r=t.pax;if(r)for(var i in r)e+=AM(" "+i+"="+r[i]+` +`);return Buffer.from(e)};vf.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var n=r.indexOf("/");if(n===-1)return null;i+=i?"/"+r.slice(0,n):r.slice(0,n),r=r.slice(n+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(i)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(tl(t.mode&aVe,6),100),e.write(tl(t.uid,6),108),e.write(tl(t.gid,6),116),e.write(tl(t.size,11),124),e.write(tl(t.mtime.getTime()/1e3|0,11),136),e[156]=Uue+cVe(t.type),t.linkname&&e.write(t.linkname,157),Hue.copy(e,cm),nVe.copy(e,aM),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(tl(t.devmajor||0,6),329),e.write(tl(t.devminor||0,6),337),i&&e.write(i,345),e.write(tl(jue(e),6),148),e)};vf.decode=function(t,e,r){var i=t[156]===0?0:t[156]-Uue,n=Sf(t,0,100,e),s=rl(t,100,8),o=rl(t,108,8),a=rl(t,116,8),l=rl(t,124,12),c=rl(t,136,12),u=lVe(i),g=t[157]===0?null:Sf(t,157,100,e),f=Sf(t,265,32),h=Sf(t,297,32),p=rl(t,329,8),d=rl(t,337,8),m=jue(t);if(m===8*32)return null;if(m!==rl(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(Hue.compare(t,cm,cm+6)===0)t[345]&&(n=Sf(t,345,155,e)+"/"+n);else if(!(sVe.compare(t,cm,cm+6)===0&&oVe.compare(t,aM,aM+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:d}}});var _ue=I((LPt,Yue)=>{var que=require("util"),gVe=Kue(),um=lM(),Jue=bf().Writable,Wue=bf().PassThrough,zue=function(){},Vue=function(t){return t&=511,t&&512-t},fVe=function(t,e){var r=new IQ(t,e);return r.end(),r},hVe=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},IQ=function(t,e){this._parent=t,this.offset=e,Wue.call(this,{autoDestroy:!1})};que.inherits(IQ,Wue);IQ.prototype.destroy=function(t){this._parent.destroy(t)};var Wa=function(t){if(!(this instanceof Wa))return new Wa(t);Jue.call(this,t),t=t||{},this._offset=0,this._buffer=gVe(),this._missing=0,this._partial=!1,this._onparse=zue,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=Vue(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(Vue(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=um.decodePax(r.slice(0,f)),r.consume(f),s()},l=function(){var f=e._header.size;e._pax=um.decodePax(r.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=um.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(p){e.emit("error",p)}if(r.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=hVe(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,fVe(e,f),n);return}e._stream=new IQ(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};que.inherits(Wa,Jue);Wa.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};Wa.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};Wa.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=zue,this._overflow?this._write(this._overflow,void 0,t):t()}};Wa.prototype._write=function(t,e,r){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(t.length&&(this._partial=!0),t.lengths&&(o=t.slice(s),t=t.slice(0,s)),i?i.end(t):n.append(t),this._overflow=o,this._onparse()}};Wa.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};Yue.exports=Wa});var Zue=I((TPt,Xue)=>{Xue.exports=require("fs").constants||require("constants")});var ige=I((MPt,$ue)=>{var xf=Zue(),ege=tk(),EQ=_A(),pVe=Buffer.alloc,tge=bf().Readable,kf=bf().Writable,dVe=require("string_decoder").StringDecoder,yQ=lM(),CVe=parseInt("755",8),mVe=parseInt("644",8),rge=pVe(1024),cM=function(){},uM=function(t,e){e&=511,e&&t.push(rge.slice(0,512-e))};function IVe(t){switch(t&xf.S_IFMT){case xf.S_IFBLK:return"block-device";case xf.S_IFCHR:return"character-device";case xf.S_IFDIR:return"directory";case xf.S_IFIFO:return"fifo";case xf.S_IFLNK:return"symlink"}return"file"}var wQ=function(t){kf.call(this),this.written=0,this._to=t,this._destroyed=!1};EQ(wQ,kf);wQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};wQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var BQ=function(){kf.call(this),this.linkname="",this._decoder=new dVe("utf-8"),this._destroyed=!1};EQ(BQ,kf);BQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};BQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var gm=function(){kf.call(this),this._destroyed=!1};EQ(gm,kf);gm.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};gm.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Oo=function(t){if(!(this instanceof Oo))return new Oo(t);tge.call(this,t),this._drain=cM,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};EQ(Oo,tge);Oo.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=cM);var i=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=IVe(t.mode)),t.mode||(t.mode=t.type==="directory"?CVe:mVe),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var n=this.push(e);return uM(i,t.size),n?process.nextTick(r):this._drain=r,new gm}if(t.type==="symlink"&&!t.linkname){var s=new BQ;return ege(s,function(a){if(a)return i.destroy(),r(a);t.linkname=s.linkname,i._encode(t),r()}),s}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new gm;var o=new wQ(this);return this._stream=o,ege(o,function(a){if(i._stream=null,a)return i.destroy(),r(a);if(o.written!==t.size)return i.destroy(),r(new Error("size mismatch"));uM(i,t.size),i._finalizing&&i.finalize(),r()}),o}};Oo.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(rge),this.push(null))};Oo.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};Oo.prototype._encode=function(t){if(!t.pax){var e=yQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};Oo.prototype._encodePax=function(t){var e=yQ.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(yQ.encode(r)),this.push(e),uM(this,e.length),r.size=t.size,r.type=t.type,this.push(yQ.encode(r))};Oo.prototype._read=function(t){var e=this._drain;this._drain=cM,e()};$ue.exports=Oo});var nge=I(gM=>{gM.extract=_ue();gM.pack=ige()});var Cge=I((oDt,fge)=>{"use strict";var Pf=class{constructor(e,r,i){this.__specs=e||{},Object.keys(this.__specs).forEach(n=>{if(typeof this.__specs[n]=="string"){let s=this.__specs[n],o=this.__specs[s];if(o){let a=o.aliases||[];a.push(n,s),o.aliases=[...new Set(a)],this.__specs[n]=o}else throw new Error(`Alias refers to invalid key: ${s} -> ${n}`)}}),this.__opts=r||{},this.__providers=pge(i.filter(n=>n!=null&&typeof n=="object")),this.__isFiggyPudding=!0}get(e){return mM(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[i,n]of this.entries())e.call(r,n,i,this)}toJSON(){let e={};return this.forEach((r,i)=>{e[i]=r}),e}*entries(e){for(let i of Object.keys(this.__specs))yield[i,this.get(i)];let r=e||this.__opts.other;if(r){let i=new Set;for(let n of this.__providers){let s=n.entries?n.entries(r):RVe(n);for(let[o,a]of s)r(o)&&!i.has(o)&&(i.add(o),yield[o,a])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Pf(this.__specs,this.__opts,pge(this.__providers).concat(e)),hge)}};try{let t=require("util");Pf.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch(t){}function FVe(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function mM(t,e,r){let i=t.__specs[e];if(r&&!i&&(!t.__opts.other||!t.__opts.other(e)))FVe(e);else{i||(i={});let n;for(let s of t.__providers){if(n=dge(e,s),n===void 0&&i.aliases&&i.aliases.length){for(let o of i.aliases)if(o!==e&&(n=dge(o,s),n!==void 0))break}if(n!==void 0)break}return n===void 0&&i.default!==void 0?typeof i.default=="function"?i.default(t):i.default:n}}function dge(t,e){let r;return e.__isFiggyPudding?r=mM(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var hge={has(t,e){return e in t.__specs&&mM(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Pf.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};fge.exports=NVe;function NVe(t,e){function r(...i){return new Proxy(new Pf(t,e,i),hge)}return r}function pge(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function RVe(t){return Object.keys(t).map(e=>[e,t[e]])}});var Ege=I((aDt,Ko)=>{"use strict";var hm=require("crypto"),LVe=Cge(),TVe=require("stream").Transform,mge=["sha256","sha384","sha512"],MVe=/^[a-z0-9+/]+(?:=?=?)$/i,OVe=/^([^-]+)-([^?]+)([?\S*]*)$/,KVe=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,UVe=/^[\x21-\x7E]+$/,on=LVe({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>HVe},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),zc=class{get isHash(){return!0}constructor(e,r){r=on(r);let i=!!r.strict;this.source=e.trim();let n=this.source.match(i?KVe:OVe);if(!n||i&&!mge.some(o=>o===n[1]))return;this.algorithm=n[1],this.digest=n[2];let s=n[3];this.options=s?s.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=on(e),e.strict&&!(mge.some(i=>i===this.algorithm)&&this.digest.match(MVe)&&(this.options||[]).every(i=>i.match(UVe))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Df=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=on(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(i=>this[i].map(n=>zc.prototype.toString.call(n,e)).filter(n=>n.length).join(r)).filter(i=>i.length).join(r)}concat(e,r){r=on(r);let i=typeof e=="string"?e:pm(e,r);return Uo(`${this.toString(r)} ${i}`,r)}hexDigest(){return Uo(this,{single:!0}).hexDigest()}match(e,r){r=on(r);let i=Uo(e,r),n=i.pickAlgorithm(r);return this[n]&&i[n]&&this[n].find(s=>i[n].find(o=>s.digest===o.digest))||!1}pickAlgorithm(e){e=on(e);let r=e.pickAlgorithm,i=Object.keys(this);if(!i.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return i.reduce((n,s)=>r(n,s)||n)}};Ko.exports.parse=Uo;function Uo(t,e){if(e=on(e),typeof t=="string")return IM(t,e);if(t.algorithm&&t.digest){let r=new Df;return r[t.algorithm]=[t],IM(pm(r,e),e)}else return IM(pm(t,e),e)}function IM(t,e){return e.single?new zc(t,e):t.trim().split(/\s+/).reduce((r,i)=>{let n=new zc(i,e);if(n.algorithm&&n.digest){let s=n.algorithm;r[s]||(r[s]=[]),r[s].push(n)}return r},new Df)}Ko.exports.stringify=pm;function pm(t,e){return e=on(e),t.algorithm&&t.digest?zc.prototype.toString.call(t,e):typeof t=="string"?pm(Uo(t,e),e):Df.prototype.toString.call(t,e)}Ko.exports.fromHex=GVe;function GVe(t,e,r){r=on(r);let i=r.options&&r.options.length?`?${r.options.join("?")}`:"";return Uo(`${e}-${Buffer.from(t,"hex").toString("base64")}${i}`,r)}Ko.exports.fromData=jVe;function jVe(t,e){e=on(e);let r=e.algorithms,i=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((n,s)=>{let o=hm.createHash(s).update(t).digest("base64"),a=new zc(`${s}-${o}${i}`,e);if(a.algorithm&&a.digest){let l=a.algorithm;n[l]||(n[l]=[]),n[l].push(a)}return n},new Df)}Ko.exports.fromStream=YVe;function YVe(t,e){e=on(e);let r=e.Promise||Promise,i=EM(e);return new r((n,s)=>{t.pipe(i),t.on("error",s),i.on("error",s);let o;i.on("integrity",a=>{o=a}),i.on("end",()=>n(o)),i.on("data",()=>{})})}Ko.exports.checkData=qVe;function qVe(t,e,r){if(r=on(r),e=Uo(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let i=e.pickAlgorithm(r),n=hm.createHash(i).update(t).digest("base64"),s=Uo({algorithm:i,digest:n}),o=s.match(e,r);if(o||!r.error)return o;if(typeof r.size=="number"&&t.length!==r.size){let a=new Error(`data size mismatch when checking ${e}. + Wanted: ${r.size} + Found: ${t.length}`);throw a.code="EBADSIZE",a.found=t.length,a.expected=r.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${t.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}Ko.exports.checkStream=JVe;function JVe(t,e,r){r=on(r);let i=r.Promise||Promise,n=EM(r.concat({integrity:e}));return new i((s,o)=>{t.pipe(n),t.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}Ko.exports.integrityStream=EM;function EM(t){t=on(t);let e=t.integrity&&Uo(t.integrity,t),r=e&&Object.keys(e).length,i=r&&e.pickAlgorithm(t),n=r&&e[i],s=Array.from(new Set(t.algorithms.concat(i?[i]:[]))),o=s.map(hm.createHash),a=0,l=new TVe({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=t.options&&t.options.length?`?${t.options.join("?")}`:"",u=Uo(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),t),g=r&&u.match(e,t);if(typeof t.size=="number"&&a!==t.size){let f=new Error(`stream size mismatch when checking ${e}. + Wanted: ${t.size} + Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=t.size,f.sri=e,l.emit("error",f)}else if(t.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}Ko.exports.create=WVe;function WVe(t){t=on(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",i=e.map(hm.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new zc(`${a}-${l}${r}`,t);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Df)}}}var zVe=new Set(hm.getHashes()),Ige=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>zVe.has(t));function HVe(t,e){return Ige.indexOf(t.toLowerCase())>=Ige.indexOf(e.toLowerCase())?t:e}});var Fd={};it(Fd,{BuildType:()=>Gn,Cache:()=>Qt,Configuration:()=>fe,DEFAULT_LOCK_FILENAME:()=>DR,DEFAULT_RC_FILENAME:()=>PR,FormatType:()=>ps,InstallMode:()=>li,LightReport:()=>Fa,LinkType:()=>gt,Manifest:()=>Ze,MessageName:()=>z,PackageExtensionStatus:()=>ki,PackageExtensionType:()=>oi,Project:()=>Ke,ProjectLookup:()=>KA,Report:()=>Xi,ReportError:()=>nt,SettingsType:()=>ge,StreamReport:()=>Fe,TAG_REGEXP:()=>Rg,TelemetryManager:()=>Rd,ThrowReport:()=>ei,VirtualFetcher:()=>dd,Workspace:()=>Dd,WorkspaceResolver:()=>Yr,YarnVersion:()=>Zr,execUtils:()=>hr,folderUtils:()=>Pb,formatUtils:()=>ue,hashUtils:()=>mn,httpUtils:()=>Zt,miscUtils:()=>de,scriptUtils:()=>Kt,semverUtils:()=>qt,structUtils:()=>S,tgzUtils:()=>Ai,treeUtils:()=>Hs});var hr={};it(hr,{EndStrategy:()=>Pn,execvp:()=>Nhe,pipevp:()=>to});var ch={};it(ch,{AliasFS:()=>Xo,CwdFS:()=>Ft,DEFAULT_COMPRESSION_LEVEL:()=>pl,FakeFS:()=>eA,Filename:()=>wt,JailFS:()=>Zo,LazyFS:()=>oh,LinkStrategy:()=>eh,NoFS:()=>bI,NodeFS:()=>Wt,PortablePath:()=>Se,PosixFS:()=>ah,ProxiedFS:()=>fi,VirtualFS:()=>Pr,ZipFS:()=>Jr,ZipOpenFS:()=>Jn,constants:()=>mr,extendFs:()=>SI,normalizeLineEndings:()=>ul,npath:()=>M,opendir:()=>wI,patchFs:()=>pb,ppath:()=>v,statUtils:()=>rb,toFilename:()=>kr,xfs:()=>T});var mr={};it(mr,{SAFE_TIME:()=>tb,S_IFDIR:()=>zo,S_IFLNK:()=>_o,S_IFMT:()=>kn,S_IFREG:()=>Vo});var kn=61440,zo=16384,Vo=32768,_o=40960,tb=456789e3;var rb={};it(rb,{BigIntStatsEntry:()=>Xf,DEFAULT_MODE:()=>_f,DirEntry:()=>uO,StatEntry:()=>Za,areStatsEqual:()=>nb,clearStats:()=>pI,convertToBigIntStats:()=>dI,makeDefaultStats:()=>Zf,makeEmptyStats:()=>Jfe});var ib=ie(require("util"));var _f=Vo|420,uO=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Za=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=_f;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Xf=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(_f);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(kn))===BigInt(zo)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(kn))===BigInt(Vo)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(kn))===BigInt(_o)}};function Zf(){return new Za}function Jfe(){return pI(Zf())}function pI(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):ib.types.isDate(r)&&(t[e]=new Date(0))}return t}function dI(t){let e=new Xf;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let i=t[r];typeof i=="number"?e[r]=BigInt(i):ib.types.isDate(i)&&(e[r]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function nb(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,i=e;return!(r.atimeNs!==i.atimeNs||r.mtimeNs!==i.mtimeNs||r.ctimeNs!==i.ctimeNs||r.birthtimeNs!==i.birthtimeNs)}var mI=ie(require("fs"));var $f=ie(require("path")),gO;(function(i){i[i.File=0]="File",i[i.Portable=1]="Portable",i[i.Native=2]="Native"})(gO||(gO={}));var Se={root:"/",dot:"."},wt={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",rc:".yarnrc.yml"},M=Object.create($f.default),v=Object.create($f.default.posix);M.cwd=()=>process.cwd();v.cwd=()=>sb(process.cwd());v.resolve=(...t)=>t.length>0&&v.isAbsolute(t[0])?$f.default.posix.resolve(...t):$f.default.posix.resolve(v.cwd(),...t);var fO=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};M.fromPortablePath=hO;M.toPortablePath=sb;M.contains=(t,e)=>fO(M,t,e);v.contains=(t,e)=>fO(v,t,e);var Wfe=/^([a-zA-Z]:.*)$/,zfe=/^\\\\(\.\\)?(.*)$/,Vfe=/^\/([a-zA-Z]:.*)$/,_fe=/^\/unc\/(\.dot\/)?(.*)$/;function hO(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(Vfe))t=e[1];else if(r=t.match(_fe))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function sb(t){if(process.platform!=="win32")return t;let e,r;return(e=t.match(Wfe))?t=`/${e[1]}`:(r=t.match(zfe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t.replace(/\\/g,"/")}function CI(t,e){return t===M?hO(e):sb(e)}function kr(t){if(M.parse(t).dir!==""||v.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var II=new Date(tb*1e3),eh;(function(r){r.Allow="allow",r.ReadOnly="readOnly"})(eh||(eh={}));async function pO(t,e,r,i,n){let s=t.pathUtils.normalize(e),o=r.pathUtils.normalize(i),a=[],l=[],c=n.stableTime?{mtime:II,atime:II}:await r.lstatPromise(o);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[c.atime,c.mtime]});let u=typeof t.lutimesPromise=="function"?t.lutimesPromise.bind(t):t.utimesPromise.bind(t);await ob(a,l,u,t,s,r,o,n);for(let g of a)await g();await Promise.all(l.map(g=>g()))}async function ob(t,e,r,i,n,s,o,a){var f,h;let l=await Xfe(i,n),c=await s.lstatPromise(o),u=a.stableTime?{mtime:II,atime:II}:c,g;switch(!0){case c.isDirectory():g=await Zfe(t,e,r,i,n,l,s,o,c,a);break;case c.isFile():g=await $fe(t,e,r,i,n,l,s,o,c,a);break;case c.isSymbolicLink():g=await ehe(t,e,r,i,n,l,s,o,c,a);break;default:throw new Error(`Unsupported file type (${c.mode})`)}return(g||((f=l==null?void 0:l.mtime)==null?void 0:f.getTime())!==u.mtime.getTime()||((h=l==null?void 0:l.atime)==null?void 0:h.getTime())!==u.atime.getTime())&&(e.push(()=>r(n,u.atime,u.mtime)),g=!0),(l===null||(l.mode&511)!=(c.mode&511))&&(e.push(()=>i.chmodPromise(n,c.mode&511)),g=!0),g}async function Xfe(t,e){try{return await t.lstatPromise(e)}catch(r){return null}}async function Zfe(t,e,r,i,n,s,o,a,l,c){if(s!==null&&!s.isDirectory())if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=!1;s===null&&(t.push(async()=>{try{await i.mkdirPromise(n,{mode:l.mode})}catch(f){if(f.code!=="EEXIST")throw f}}),u=!0);let g=await o.readdirPromise(a);if(c.stableSort)for(let f of g.sort())await ob(t,e,r,i,i.pathUtils.join(n,f),o,o.pathUtils.join(a,f),c)&&(u=!0);else(await Promise.all(g.map(async h=>{await ob(t,e,r,i,i.pathUtils.join(n,h),o,o.pathUtils.join(a,h),c)}))).some(h=>h)&&(u=!0);return u}var ab=new WeakMap;function Ab(t,e,r,i,n){return async()=>{await t.linkPromise(r,e),n===eh.ReadOnly&&(i.mode&=~146,await t.chmodPromise(e,i.mode))}}function the(t,e,r,i,n){let s=ab.get(t);return typeof s=="undefined"?async()=>{try{await t.copyFilePromise(r,e,mI.default.constants.COPYFILE_FICLONE_FORCE),ab.set(t,!0)}catch(o){if(o.code==="ENOSYS"||o.code==="ENOTSUP")ab.set(t,!1),await Ab(t,e,r,i,n)();else throw o}}:s?async()=>t.copyFilePromise(r,e,mI.default.constants.COPYFILE_FICLONE_FORCE):Ab(t,e,r,i,n)}async function $fe(t,e,r,i,n,s,o,a,l,c){var f;if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=(f=c.linkStrategy)!=null?f:null,g=i===o?u!==null?the(i,n,a,l,u):async()=>i.copyFilePromise(a,n,mI.default.constants.COPYFILE_FICLONE):u!==null?Ab(i,n,a,l,u):async()=>i.writeFilePromise(n,await o.readFilePromise(a));return t.push(async()=>g()),!0}async function ehe(t,e,r,i,n,s,o,a,l,c){if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;return t.push(async()=>{await i.symlinkPromise(CI(i.pathUtils,await o.readlinkPromise(a)),n)}),!0}function qn(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function EI(t){return qn("EBUSY",t)}function th(t,e){return qn("ENOSYS",`${t}, ${e}`)}function $a(t){return qn("EINVAL",`invalid argument, ${t}`)}function Hi(t){return qn("EBADF",`bad file descriptor, ${t}`)}function bs(t){return qn("ENOENT",`no such file or directory, ${t}`)}function eo(t){return qn("ENOTDIR",`not a directory, ${t}`)}function rh(t){return qn("EISDIR",`illegal operation on a directory, ${t}`)}function yI(t){return qn("EEXIST",`file already exists, ${t}`)}function ln(t){return qn("EROFS",`read-only filesystem, ${t}`)}function dO(t){return qn("ENOTEMPTY",`directory not empty, ${t}`)}function CO(t){return qn("EOPNOTSUPP",`operation not supported, ${t}`)}function mO(){return qn("ERR_DIR_CLOSED","Directory handle was closed")}var lb=class extends Error{constructor(e,r){super(e);this.name="Libzip Error",this.code=r}};var IO=class{constructor(e,r,i={}){this.path=e;this.nextDirent=r;this.opts=i;this.closed=!1}throwIfClosed(){if(this.closed)throw mO()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e!="undefined"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e!="undefined"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}};function wI(t,e,r,i){let n=()=>{let s=r.shift();return typeof s=="undefined"?null:Object.assign(t.statSync(t.pathUtils.join(e,s)),{name:s})};return new IO(e,n,i)}var EO=ie(require("os"));var eA=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let i=[e];for(;i.length>0;){let n=i.shift();if((await this.lstatPromise(n)).isDirectory()){let o=await this.readdirPromise(n);if(r)for(let a of o.sort())i.push(this.pathUtils.join(n,a));else throw new Error("Not supported")}else yield n}}async removePromise(e,{recursive:r=!0,maxRetries:i=5}={}){let n;try{n=await this.lstatPromise(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(r){let o=await this.readdirPromise(e);await Promise.all(o.map(a=>this.removePromise(this.pathUtils.resolve(e,a))))}let s=0;do try{await this.rmdirPromise(e);break}catch(o){if(o.code==="EBUSY"||o.code==="ENOTEMPTY"){if(i===0)break;await new Promise(a=>setTimeout(a,s*100));continue}else throw o}while(s++{let l;try{[l]=await this.readJsonPromise(i)}catch(c){return Date.now()-s<500}try{return process.kill(l,0),!0}catch(c){return!1}};for(;o===null;)try{o=await this.openPromise(i,"wx")}catch(l){if(l.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(i);continue}catch(c){}if(Date.now()-s<60*1e3)await new Promise(c=>setTimeout(c,n));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${i})`)}else throw l}await this.writePromise(o,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(o),await this.unlinkPromise(i)}catch(l){}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} +`)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} +`)}async preserveTimePromise(e,r){let i=await this.lstatPromise(e),n=await r();typeof n!="undefined"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,r){let i=this.lstatSync(e),n=r();typeof n!="undefined"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},gl=class extends eA{constructor(){super(v)}};function rhe(t){let e=t.match(/\r?\n/g);if(e===null)return EO.EOL;let r=e.filter(n=>n===`\r +`).length,i=e.length-r;return r>i?`\r +`:` +`}function ul(t,e){return e.replace(/\r?\n/g,rhe(t))}var $c=ie(require("fs")),cb=ie(require("stream")),QO=ie(require("util")),ub=ie(require("zlib"));var yO=ie(require("fs"));var Wt=class extends gl{constructor(e=yO.default){super();this.realFs=e,typeof this.realFs.lutimes!="undefined"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Se.root}resolve(e){return v.resolve(e)}async openPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.open(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}openSync(e,r,i){return this.realFs.openSync(M.fromPortablePath(e),r,i)}async opendirPromise(e,r){return await new Promise((i,n)=>{typeof r!="undefined"?this.realFs.opendir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.opendir(M.fromPortablePath(e),this.makeCallback(i,n))}).then(i=>Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,r){let i=typeof r!="undefined"?this.realFs.opendirSync(M.fromPortablePath(e),r):this.realFs.opendirSync(M.fromPortablePath(e));return Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,r,i=0,n=0,s=-1){return await new Promise((o,a)=>{this.realFs.read(e,r,i,n,s,(l,c)=>{l?a(l):o(c)})})}readSync(e,r,i,n,s){return this.realFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return await new Promise((o,a)=>typeof r=="string"?this.realFs.write(e,r,i,this.makeCallback(o,a)):this.realFs.write(e,r,i,n,s,this.makeCallback(o,a)))}writeSync(e,r,i,n,s){return typeof r=="string"?this.realFs.writeSync(e,r,i):this.realFs.writeSync(e,r,i,n,s)}async closePromise(e){await new Promise((r,i)=>{this.realFs.close(e,this.makeCallback(r,i))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createReadStream(i,r)}createWriteStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createWriteStream(i,r)}async realpathPromise(e){return await new Promise((r,i)=>{this.realFs.realpath(M.fromPortablePath(e),{},this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}realpathSync(e){return M.toPortablePath(this.realFs.realpathSync(M.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(M.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(M.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((i,n)=>{this.realFs.access(M.fromPortablePath(e),r,this.makeCallback(i,n))})}existsSync(e){return this.realFs.existsSync(M.fromPortablePath(e))}async statPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.stat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.stat(M.fromPortablePath(e),this.makeCallback(i,n))})}statSync(e,r){return r?this.realFs.statSync(M.fromPortablePath(e),r):this.realFs.statSync(M.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.fstat(e,r,this.makeCallback(i,n)):this.realFs.fstat(e,this.makeCallback(i,n))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.lstat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.lstat(M.fromPortablePath(e),this.makeCallback(i,n))})}lstatSync(e,r){return r?this.realFs.lstatSync(M.fromPortablePath(e),r):this.realFs.lstatSync(M.fromPortablePath(e))}async chmodPromise(e,r){return await new Promise((i,n)=>{this.realFs.chmod(M.fromPortablePath(e),r,this.makeCallback(i,n))})}chmodSync(e,r){return this.realFs.chmodSync(M.fromPortablePath(e),r)}async chownPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.chown(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}chownSync(e,r,i){return this.realFs.chownSync(M.fromPortablePath(e),r,i)}async renamePromise(e,r){return await new Promise((i,n)=>{this.realFs.rename(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}renameSync(e,r){return this.realFs.renameSync(M.fromPortablePath(e),M.fromPortablePath(r))}async copyFilePromise(e,r,i=0){return await new Promise((n,s)=>{this.realFs.copyFile(M.fromPortablePath(e),M.fromPortablePath(r),i,this.makeCallback(n,s))})}copyFileSync(e,r,i=0){return this.realFs.copyFileSync(M.fromPortablePath(e),M.fromPortablePath(r),i)}async appendFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFile(o,r,i,this.makeCallback(n,s)):this.realFs.appendFile(o,r,this.makeCallback(n,s))})}appendFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFileSync(n,r,i):this.realFs.appendFileSync(n,r)}async writeFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFile(o,r,i,this.makeCallback(n,s)):this.realFs.writeFile(o,r,this.makeCallback(n,s))})}writeFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFileSync(n,r,i):this.realFs.writeFileSync(n,r)}async unlinkPromise(e){return await new Promise((r,i)=>{this.realFs.unlink(M.fromPortablePath(e),this.makeCallback(r,i))})}unlinkSync(e){return this.realFs.unlinkSync(M.fromPortablePath(e))}async utimesPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.utimes(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}utimesSync(e,r,i){this.realFs.utimesSync(M.fromPortablePath(e),r,i)}async lutimesPromiseImpl(e,r,i){let n=this.realFs.lutimes;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);return await new Promise((s,o)=>{n.call(this.realFs,M.fromPortablePath(e),r,i,this.makeCallback(s,o))})}lutimesSyncImpl(e,r,i){let n=this.realFs.lutimesSync;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);n.call(this.realFs,M.fromPortablePath(e),r,i)}async mkdirPromise(e,r){return await new Promise((i,n)=>{this.realFs.mkdir(M.fromPortablePath(e),r,this.makeCallback(i,n))})}mkdirSync(e,r){return this.realFs.mkdirSync(M.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.rmdir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.rmdir(M.fromPortablePath(e),this.makeCallback(i,n))})}rmdirSync(e,r){return this.realFs.rmdirSync(M.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((i,n)=>{this.realFs.link(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}linkSync(e,r){return this.realFs.linkSync(M.fromPortablePath(e),M.fromPortablePath(r))}async symlinkPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.symlink(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i,this.makeCallback(n,s))})}symlinkSync(e,r,i){return this.realFs.symlinkSync(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i)}async readFilePromise(e,r){return await new Promise((i,n)=>{let s=typeof e=="string"?M.fromPortablePath(e):e;this.realFs.readFile(s,r,this.makeCallback(i,n))})}readFileSync(e,r){let i=typeof e=="string"?M.fromPortablePath(e):e;return this.realFs.readFileSync(i,r)}async readdirPromise(e,r){return await new Promise((i,n)=>{(r==null?void 0:r.withFileTypes)?this.realFs.readdir(M.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(i,n)):this.realFs.readdir(M.fromPortablePath(e),this.makeCallback(s=>i(s),n))})}readdirSync(e,r){return(r==null?void 0:r.withFileTypes)?this.realFs.readdirSync(M.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(M.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,i)=>{this.realFs.readlink(M.fromPortablePath(e),this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}readlinkSync(e){return M.toPortablePath(this.realFs.readlinkSync(M.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((i,n)=>{this.realFs.truncate(M.fromPortablePath(e),r,this.makeCallback(i,n))})}truncateSync(e,r){return this.realFs.truncateSync(M.fromPortablePath(e),r)}watch(e,r,i){return this.realFs.watch(M.fromPortablePath(e),r,i)}watchFile(e,r,i){return this.realFs.watchFile(M.fromPortablePath(e),r,i)}unwatchFile(e,r){return this.realFs.unwatchFile(M.fromPortablePath(e),r)}makeCallback(e,r){return(i,n)=>{i?r(i):e(n)}}};var wO=ie(require("events"));var fl;(function(r){r.Change="change",r.Stop="stop"})(fl||(fl={}));var hl;(function(i){i.Ready="ready",i.Running="running",i.Stopped="stopped"})(hl||(hl={}));function BO(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var ih=class extends wO.EventEmitter{constructor(e,r,{bigint:i=!1}={}){super();this.status=hl.Ready;this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=e,this.path=r,this.bigint=i,this.lastStats=this.stat()}static create(e,r,i){let n=new ih(e,r,i);return n.start(),n}start(){BO(this.status,hl.Ready),this.status=hl.Running,this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(fl.Change,this.lastStats,this.lastStats)},3)}stop(){BO(this.status,hl.Running),this.status=hl.Stopped,this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(fl.Stop)}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch(e){let r=this.bigint?new Xf:new Za;return pI(r)}}makeInterval(e){let r=setInterval(()=>{let i=this.stat(),n=this.lastStats;nb(i,n)||(this.lastStats=i,this.emit(fl.Change,i,n))},e.interval);return e.persistent?r:r.unref()}registerChangeListener(e,r){this.addListener(fl.Change,e),this.changeListeners.set(e,this.makeInterval(r))}unregisterChangeListener(e){this.removeListener(fl.Change,e);let r=this.changeListeners.get(e);typeof r!="undefined"&&clearInterval(r),this.changeListeners.delete(e)}unregisterAllChangeListeners(){for(let e of this.changeListeners.keys())this.unregisterChangeListener(e)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let e of this.changeListeners.values())e.ref();return this}unref(){for(let e of this.changeListeners.values())e.unref();return this}};var BI=new WeakMap;function QI(t,e,r,i){let n,s,o,a;switch(typeof r){case"function":n=!1,s=!0,o=5007,a=r;break;default:({bigint:n=!1,persistent:s=!0,interval:o=5007}=r),a=i;break}let l=BI.get(t);typeof l=="undefined"&&BI.set(t,l=new Map);let c=l.get(e);return typeof c=="undefined"&&(c=ih.create(t,e,{bigint:n}),l.set(e,c)),c.registerChangeListener(a,{persistent:s,interval:o}),c}function nh(t,e,r){let i=BI.get(t);if(typeof i=="undefined")return;let n=i.get(e);typeof n!="undefined"&&(typeof r=="undefined"?n.unregisterAllChangeListeners():n.unregisterChangeListener(r),n.hasChangeListeners()||(n.stop(),i.delete(e)))}function sh(t){let e=BI.get(t);if(typeof e!="undefined")for(let r of e.keys())nh(t,r)}var pl="mixed";function ihe(t){if(typeof t=="string"&&String(+t)===t)return+t;if(Number.isFinite(t))return t<0?Date.now()/1e3:t;if((0,QO.isDate)(t))return t.getTime()/1e3;throw new Error("Invalid time")}function bO(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Jr=class extends gl{constructor(e,r){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;this.libzip=r.libzip;let i=r;if(this.level=typeof i.level!="undefined"?i.level:pl,e!=null||(e=bO()),typeof e=="string"){let{baseFs:o=new Wt}=i;this.baseFs=o,this.path=e}else this.path=null,this.baseFs=null;if(r.stats)this.stats=r.stats;else if(typeof e=="string")try{this.stats=this.baseFs.statSync(e)}catch(o){if(o.code==="ENOENT"&&i.create)this.stats=Zf();else throw o}else this.stats=Zf();let n=this.libzip.malloc(4);try{let o=0;if(typeof e=="string"&&i.create&&(o|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),r.readOnly&&(o|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof e=="string")this.zip=this.libzip.open(M.fromPortablePath(e),o,n);else{let a=this.allocateUnattachedSource(e);try{this.zip=this.libzip.openFromSource(a,o,n),this.lzSource=a}catch(l){throw this.libzip.source.free(a),l}}if(this.zip===0){let a=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(a,this.libzip.getValue(n,"i32")),this.makeLibzipError(a)}}finally{this.libzip.free(n)}this.listings.set(Se.root,new Set);let s=this.libzip.getNumEntries(this.zip,0);for(let o=0;oe)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(r,r+e);return Buffer.from(n)}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw EI("archive closed, close");sh(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let e=this.baseFs.existsSync(this.path)||this.stats.mode===_f?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,bO(),{mode:e});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof e!="undefined"&&this.baseFs.chmodSync(this.path,e)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(e){return v.resolve(Se.root,e)}async openPromise(e,r,i){return this.openSync(e,r,i)}openSync(e,r,i){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:e}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(e,r){return this.opendirSync(e,r)}opendirSync(e,r={}){let i=this.resolveFilename(`opendir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`opendir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`opendir '${e}'`);let s=[...n],o=this.openSync(i,"r");return wI(this,i,s,{onClose:()=>{this.closeSync(o)}})}async readPromise(e,r,i,n,s){return this.readSync(e,r,i,n,s)}readSync(e,r,i=0,n=r.byteLength,s=-1){let o=this.fds.get(e);if(typeof o=="undefined")throw Hi("read");let a;s===-1||s===null?a=o.cursor:a=s;let l=this.readFileSync(o.p);l.copy(r,i,a,a+n);let c=Math.max(0,Math.min(l.length-a,n));return(s===-1||s===null)&&(o.cursor+=c),c}async writePromise(e,r,i,n,s){return typeof r=="string"?this.writeSync(e,r,s):this.writeSync(e,r,i,n,s)}writeSync(e,r,i,n,s){throw typeof this.fds.get(e)=="undefined"?Hi("read"):new Error("Unimplemented")}async closePromise(e){return this.closeSync(e)}closeSync(e){if(typeof this.fds.get(e)=="undefined")throw Hi("read");this.fds.delete(e)}createReadStream(e,{encoding:r}={}){if(e===null)throw new Error("Unimplemented");let i=this.openSync(e,"r"),n=Object.assign(new cb.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(o,a)=>{clearImmediate(s),this.closeSync(i),a(o)}}),{close(){n.destroy()},bytesRead:0,path:e}),s=setImmediate(async()=>{try{let o=await this.readFilePromise(e,r);n.bytesRead=o.length,n.end(o)}catch(o){n.destroy(o)}});return n}createWriteStream(e,{encoding:r}={}){if(this.readOnly)throw ln(`open '${e}'`);if(e===null)throw new Error("Unimplemented");let i=[],n=this.openSync(e,"w"),s=Object.assign(new cb.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(o,a)=>{try{o?a(o):(this.writeFileSync(e,Buffer.concat(i),r),a(null))}catch(l){a(l)}finally{this.closeSync(n)}}}),{bytesWritten:0,path:e,close(){s.destroy()}});return s.on("data",o=>{let a=Buffer.from(o);s.bytesWritten+=a.length,i.push(a)}),s}async realpathPromise(e){return this.realpathSync(e)}realpathSync(e){let r=this.resolveFilename(`lstat '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`lstat '${e}'`);return r}async existsPromise(e){return this.existsSync(e)}existsSync(e){if(!this.ready)throw EI(`archive closed, existsSync '${e}'`);if(this.symlinkCount===0){let i=v.resolve(Se.root,e);return this.entries.has(i)||this.listings.has(i)}let r;try{r=this.resolveFilename(`stat '${e}'`,e)}catch(i){return!1}return this.entries.has(r)||this.listings.has(r)}async accessPromise(e,r){return this.accessSync(e,r)}accessSync(e,r=$c.constants.F_OK){let i=this.resolveFilename(`access '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`access '${e}'`);if(this.readOnly&&r&$c.constants.W_OK)throw ln(`access '${e}'`)}async statPromise(e,r){return this.statSync(e,r)}statSync(e,r){let i=this.resolveFilename(`stat '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`stat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`stat '${e}'`);return this.statImpl(`stat '${e}'`,i,r)}async fstatPromise(e,r){return this.fstatSync(e,r)}fstatSync(e,r){let i=this.fds.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let{p:n}=i,s=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(s)&&!this.listings.has(s))throw bs(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(s))throw eo(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,s,r)}async lstatPromise(e,r){return this.lstatSync(e,r)}lstatSync(e,r){let i=this.resolveFilename(`lstat '${e}'`,e,!1);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`lstat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`lstat '${e}'`);return this.statImpl(`lstat '${e}'`,i,r)}statImpl(e,r,i={}){let n=this.entries.get(r);if(typeof n!="undefined"){let s=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.stats.uid,l=this.stats.gid,c=this.libzip.struct.statSize(s)>>>0,u=512,g=Math.ceil(c/u),f=(this.libzip.struct.statMtime(s)>>>0)*1e3,h=f,p=f,d=f,m=new Date(h),E=new Date(p),B=new Date(d),b=new Date(f),R=this.listings.has(r)?zo:this.isSymbolicLink(n)?_o:Vo,H=R===zo?493:420,L=R|this.getUnixMode(n,H)&511,K=this.libzip.struct.statCrc(s),J=Object.assign(new Za,{uid:a,gid:l,size:c,blksize:u,blocks:g,atime:m,birthtime:E,ctime:B,mtime:b,atimeMs:h,birthtimeMs:p,ctimeMs:d,mtimeMs:f,mode:L,crc:K});return i.bigint===!0?dI(J):J}if(this.listings.has(r)){let s=this.stats.uid,o=this.stats.gid,a=0,l=512,c=0,u=this.stats.mtimeMs,g=this.stats.mtimeMs,f=this.stats.mtimeMs,h=this.stats.mtimeMs,p=new Date(u),d=new Date(g),m=new Date(f),E=new Date(h),B=zo|493,b=0,R=Object.assign(new Za,{uid:s,gid:o,size:a,blksize:l,blocks:c,atime:p,birthtime:d,ctime:m,mtime:E,atimeMs:u,birthtimeMs:g,ctimeMs:f,mtimeMs:h,mode:B,crc:b});return i.bigint===!0?dI(R):R}throw new Error("Unreachable")}getUnixMode(e,r){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?r:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(e){let r=this.listings.get(e);if(r)return r;let i=this.registerListing(v.dirname(e));return r=new Set,i.add(v.basename(e)),this.listings.set(e,r),r}registerEntry(e,r){this.registerListing(v.dirname(e)).add(v.basename(e)),this.entries.set(e,r)}unregisterListing(e){this.listings.delete(e);let r=this.listings.get(v.dirname(e));r==null||r.delete(v.basename(e))}unregisterEntry(e){this.unregisterListing(e);let r=this.entries.get(e);this.entries.delete(e),typeof r!="undefined"&&(this.fileSources.delete(r),this.isSymbolicLink(r)&&this.symlinkCount--)}deleteEntry(e,r){if(this.unregisterEntry(e),this.libzip.delete(this.zip,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(e,r,i=!0){if(!this.ready)throw EI(`archive closed, ${e}`);let n=v.resolve(Se.root,r);if(n==="/")return Se.root;let s=this.entries.get(n);if(i&&s!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(s)){let o=this.getFileSource(s).toString();return this.resolveFilename(e,v.resolve(v.dirname(n),o),!0)}else return n;for(;;){let o=this.resolveFilename(e,v.dirname(n),!0),a=this.listings.has(o),l=this.entries.has(o);if(!a&&!l)throw bs(e);if(!a)throw eo(e);if(n=v.resolve(o,v.basename(n)),!i||this.symlinkCount===0)break;let c=this.libzip.name.locate(this.zip,n.slice(1));if(c===-1)break;if(this.isSymbolicLink(c)){let u=this.getFileSource(c).toString();n=v.resolve(v.dirname(n),u)}else break}return n}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:i,byteLength:n}=this.allocateBuffer(e),s=this.libzip.source.fromUnattachedBuffer(i,n,0,!0,r);if(s===0)throw this.libzip.free(r),this.makeLibzipError(r);return s}allocateSource(e){let{buffer:r,byteLength:i}=this.allocateBuffer(e),n=this.libzip.source.fromBuffer(this.zip,r,i,0,!0);if(n===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(e,r){let i=Buffer.isBuffer(r)?r:Buffer.from(r),n=v.relative(Se.root,e),s=this.allocateSource(r);try{let o=this.libzip.file.add(this.zip,n,s,this.libzip.ZIP_FL_OVERWRITE);if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let a;if(this.level===0?a=this.libzip.ZIP_CM_STORE:a=this.libzip.ZIP_CM_DEFLATE,this.libzip.file.setCompression(this.zip,o,0,a,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(o,i),o}catch(o){throw this.libzip.source.free(s),o}}isSymbolicLink(e){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&kn)===_o}getFileSource(e,r={asyncDecompress:!1}){let i=this.fileSources.get(e);if(typeof i!="undefined")return i;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let o=this.libzip.struct.statCompSize(n),a=this.libzip.struct.statCompMethod(n),l=this.libzip.malloc(o);try{let c=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(c===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let u=this.libzip.fread(c,l,o,0);if(u===-1)throw this.makeLibzipError(this.libzip.file.getError(c));if(uo)throw new Error("Overread");let g=this.libzip.HEAPU8.subarray(l,l+o),f=Buffer.from(g);if(a===0)return this.fileSources.set(e,f),f;if(r.asyncDecompress)return new Promise((h,p)=>{ub.default.inflateRaw(f,(d,m)=>{d?p(d):(this.fileSources.set(e,m),h(m))})});{let h=ub.default.inflateRawSync(f);return this.fileSources.set(e,h),h}}finally{this.libzip.fclose(c)}}finally{this.libzip.free(l)}}async chmodPromise(e,r){return this.chmodSync(e,r)}chmodSync(e,r){if(this.readOnly)throw ln(`chmod '${e}'`);r&=493;let i=this.resolveFilename(`chmod '${e}'`,e,!1),n=this.entries.get(i);if(typeof n=="undefined")throw new Error(`Assertion failed: The entry should have been registered (${i})`);let o=this.getUnixMode(n,Vo|0)&~511|r;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,o<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async chownPromise(e,r,i){return this.chownSync(e,r,i)}chownSync(e,r,i){throw new Error("Unimplemented")}async renamePromise(e,r){return this.renameSync(e,r)}renameSync(e,r){throw new Error("Unimplemented")}async copyFilePromise(e,r,i){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=await this.getFileSource(n,{asyncDecompress:!0}),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}copyFileSync(e,r,i=0){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=this.getFileSource(n),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}prepareCopyFile(e,r,i=0){if(this.readOnly)throw ln(`copyfile '${e} -> '${r}'`);if((i&$c.constants.COPYFILE_FICLONE_FORCE)!=0)throw th("unsupported clone operation",`copyfile '${e}' -> ${r}'`);let n=this.resolveFilename(`copyfile '${e} -> ${r}'`,e),s=this.entries.get(n);if(typeof s=="undefined")throw $a(`copyfile '${e}' -> '${r}'`);let o=this.resolveFilename(`copyfile '${e}' -> ${r}'`,r),a=this.entries.get(o);if((i&($c.constants.COPYFILE_EXCL|$c.constants.COPYFILE_FICLONE_FORCE))!=0&&typeof a!="undefined")throw yI(`copyfile '${e}' -> '${r}'`);return{indexSource:s,resolvedDestP:o,indexDest:a}}async appendFilePromise(e,r,i){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFilePromise(e,r,i)}appendFileSync(e,r,i={}){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFileSync(e,r,i)}fdToPath(e,r){var n;let i=(n=this.fds.get(e))==null?void 0:n.p;if(typeof i=="undefined")throw Hi(r);return i}async writeFilePromise(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([await this.getFileSource(o,{asyncDecompress:!0}),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&await this.chmodPromise(a,s)}writeFileSync(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([this.getFileSource(o),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&this.chmodSync(a,s)}prepareWriteFile(e,r){if(typeof e=="number"&&(e=this.fdToPath(e,"read")),this.readOnly)throw ln(`open '${e}'`);let i=this.resolveFilename(`open '${e}'`,e);if(this.listings.has(i))throw rh(`open '${e}'`);let n=null,s=null;typeof r=="string"?n=r:typeof r=="object"&&({encoding:n=null,mode:s=null}=r);let o=this.entries.get(i);return{encoding:n,mode:s,resolvedP:i,index:o}}async unlinkPromise(e){return this.unlinkSync(e)}unlinkSync(e){if(this.readOnly)throw ln(`unlink '${e}'`);let r=this.resolveFilename(`unlink '${e}'`,e);if(this.listings.has(r))throw rh(`unlink '${e}'`);let i=this.entries.get(r);if(typeof i=="undefined")throw $a(`unlink '${e}'`);this.deleteEntry(r,i)}async utimesPromise(e,r,i){return this.utimesSync(e,r,i)}utimesSync(e,r,i){if(this.readOnly)throw ln(`utimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e);this.utimesImpl(n,i)}async lutimesPromise(e,r,i){return this.lutimesSync(e,r,i)}lutimesSync(e,r,i){if(this.readOnly)throw ln(`lutimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e,!1);this.utimesImpl(n,i)}utimesImpl(e,r){this.listings.has(e)&&(this.entries.has(e)||this.hydrateDirectory(e));let i=this.entries.get(e);if(i===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,i,0,ihe(r),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(e,r){return this.mkdirSync(e,r)}mkdirSync(e,{mode:r=493,recursive:i=!1}={}){if(i){this.mkdirpSync(e,{chmod:r});return}if(this.readOnly)throw ln(`mkdir '${e}'`);let n=this.resolveFilename(`mkdir '${e}'`,e);if(this.entries.has(n)||this.listings.has(n))throw yI(`mkdir '${e}'`);this.hydrateDirectory(n),this.chmodSync(n,r)}async rmdirPromise(e,r){return this.rmdirSync(e,r)}rmdirSync(e,{recursive:r=!1}={}){if(this.readOnly)throw ln(`rmdir '${e}'`);if(r){this.removeSync(e);return}let i=this.resolveFilename(`rmdir '${e}'`,e),n=this.listings.get(i);if(!n)throw eo(`rmdir '${e}'`);if(n.size>0)throw dO(`rmdir '${e}'`);let s=this.entries.get(i);if(typeof s=="undefined")throw $a(`rmdir '${e}'`);this.deleteEntry(e,s)}hydrateDirectory(e){let r=this.libzip.dir.add(this.zip,v.relative(Se.root,e));if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(e),this.registerEntry(e,r),r}async linkPromise(e,r){return this.linkSync(e,r)}linkSync(e,r){throw CO(`link '${e}' -> '${r}'`)}async symlinkPromise(e,r){return this.symlinkSync(e,r)}symlinkSync(e,r){if(this.readOnly)throw ln(`symlink '${e}' -> '${r}'`);let i=this.resolveFilename(`symlink '${e}' -> '${r}'`,r);if(this.listings.has(i))throw rh(`symlink '${e}' -> '${r}'`);if(this.entries.has(i))throw yI(`symlink '${e}' -> '${r}'`);let n=this.setFileSource(i,e);if(this.registerEntry(i,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(_o|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=await this.readFileBuffer(e,{asyncDecompress:!0});return r?i.toString(r):i}readFileSync(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=this.readFileBuffer(e);return r?i.toString(r):i}readFileBuffer(e,r={asyncDecompress:!1}){typeof e=="number"&&(e=this.fdToPath(e,"read"));let i=this.resolveFilename(`open '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`open '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`open '${e}'`);if(this.listings.has(i))throw rh("read");let n=this.entries.get(i);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,r)}async readdirPromise(e,r){return this.readdirSync(e,r)}readdirSync(e,r){let i=this.resolveFilename(`scandir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`scandir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`scandir '${e}'`);let s=[...n];return(r==null?void 0:r.withFileTypes)?s.map(o=>Object.assign(this.statImpl("lstat",v.join(e,o)),{name:o})):s}async readlinkPromise(e){let r=this.prepareReadlink(e);return(await this.getFileSource(r,{asyncDecompress:!0})).toString()}readlinkSync(e){let r=this.prepareReadlink(e);return this.getFileSource(r).toString()}prepareReadlink(e){let r=this.resolveFilename(`readlink '${e}'`,e,!1);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`readlink '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(r))throw eo(`open '${e}'`);if(this.listings.has(r))throw $a(`readlink '${e}'`);let i=this.entries.get(r);if(i===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(i))throw $a(`readlink '${e}'`);return i}async truncatePromise(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=await this.getFileSource(n,{asyncDecompress:!0}),o=Buffer.alloc(r,0);return s.copy(o),await this.writeFilePromise(e,o)}truncateSync(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=this.getFileSource(n),o=Buffer.alloc(r,0);return s.copy(o),this.writeFileSync(e,o)}watch(e,r,i){let n;switch(typeof r){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=r);break}if(!n)return{on:()=>{},close:()=>{}};let s=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(s)}}}watchFile(e,r,i){let n=v.resolve(Se.root,e);return QI(this,n,r,i)}unwatchFile(e,r){let i=v.resolve(Se.root,e);return nh(this,i,r)}};var fi=class extends eA{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,i){return this.baseFs.openPromise(this.mapToBase(e),r,i)}openSync(e,r,i){return this.baseFs.openSync(this.mapToBase(e),r,i)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,i,n,s){return await this.baseFs.readPromise(e,r,i,n,s)}readSync(e,r,i,n,s){return this.baseFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s)}writeSync(e,r,i,n,s){return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}async lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async chownPromise(e,r,i){return this.baseFs.chownPromise(this.mapToBase(e),r,i)}chownSync(e,r,i){return this.baseFs.chownSync(this.mapToBase(e),r,i)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,i=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),i)}copyFileSync(e,r,i=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),i)}async appendFilePromise(e,r,i){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,i)}appendFileSync(e,r,i){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,i)}async writeFilePromise(e,r,i){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,i)}writeFileSync(e,r,i){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,i)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,i){return this.baseFs.utimesPromise(this.mapToBase(e),r,i)}utimesSync(e,r,i){return this.baseFs.utimesSync(this.mapToBase(e),r,i)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkPromise(o,n,i)}symlinkSync(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkSync(o,n,i)}async readFilePromise(e,r){return r==="utf8"?this.baseFs.readFilePromise(this.fsMapToBase(e),r):this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return r==="utf8"?this.baseFs.readFileSync(this.fsMapToBase(e),r):this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}watch(e,r,i){return this.baseFs.watch(this.mapToBase(e),r,i)}watchFile(e,r,i){return this.baseFs.watchFile(this.mapToBase(e),r,i)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};var Xo=class extends fi{constructor(e,{baseFs:r,pathUtils:i}){super(i);this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}};var Ft=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?v.normalize(e):this.baseFs.resolve(v.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}};var vO=Se.root,Zo=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.resolve(Se.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Se.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(vO,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(vO,this.pathUtils.relative(this.target,e))}};var oh=class extends fi{constructor(e,r){super(r);this.instance=null;this.factory=e}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(e){this.instance=e}mapFromBase(e){return e}mapToBase(e){return e}};var ze=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),gb=class extends eA{constructor(){super(v)}getExtractHint(){throw ze()}getRealPath(){throw ze()}resolve(){throw ze()}async openPromise(){throw ze()}openSync(){throw ze()}async opendirPromise(){throw ze()}opendirSync(){throw ze()}async readPromise(){throw ze()}readSync(){throw ze()}async writePromise(){throw ze()}writeSync(){throw ze()}async closePromise(){throw ze()}closeSync(){throw ze()}createWriteStream(){throw ze()}createReadStream(){throw ze()}async realpathPromise(){throw ze()}realpathSync(){throw ze()}async readdirPromise(){throw ze()}readdirSync(){throw ze()}async existsPromise(e){throw ze()}existsSync(e){throw ze()}async accessPromise(){throw ze()}accessSync(){throw ze()}async statPromise(){throw ze()}statSync(){throw ze()}async fstatPromise(e){throw ze()}fstatSync(e){throw ze()}async lstatPromise(e){throw ze()}lstatSync(e){throw ze()}async chmodPromise(){throw ze()}chmodSync(){throw ze()}async chownPromise(){throw ze()}chownSync(){throw ze()}async mkdirPromise(){throw ze()}mkdirSync(){throw ze()}async rmdirPromise(){throw ze()}rmdirSync(){throw ze()}async linkPromise(){throw ze()}linkSync(){throw ze()}async symlinkPromise(){throw ze()}symlinkSync(){throw ze()}async renamePromise(){throw ze()}renameSync(){throw ze()}async copyFilePromise(){throw ze()}copyFileSync(){throw ze()}async appendFilePromise(){throw ze()}appendFileSync(){throw ze()}async writeFilePromise(){throw ze()}writeFileSync(){throw ze()}async unlinkPromise(){throw ze()}unlinkSync(){throw ze()}async utimesPromise(){throw ze()}utimesSync(){throw ze()}async readFilePromise(){throw ze()}readFileSync(){throw ze()}async readlinkPromise(){throw ze()}readlinkSync(){throw ze()}async truncatePromise(){throw ze()}truncateSync(){throw ze()}watch(){throw ze()}watchFile(){throw ze()}unwatchFile(){throw ze()}},bI=gb;bI.instance=new gb;var ah=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return M.fromPortablePath(e)}mapToBase(e){return M.toPortablePath(e)}};var nhe=/^[0-9]+$/,fb=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,she=/^([^/]+-)?[a-f0-9]+$/,Pr=class extends fi{static makeVirtualPath(e,r,i){if(v.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!v.basename(r).match(she))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let s=v.relative(v.dirname(e),i).split("/"),o=0;for(;o{let r=t.indexOf(e);if(r<=0)return null;let i=r;for(;r>=0&&(i=r+e.length,t[i]!==v.sep);){if(t[r-1]===v.sep)return null;r=t.indexOf(e,i)}return t.length>i&&t[i]!==v.sep?null:t.slice(0,i)},Jn=class extends gl{constructor({libzip:e,baseFs:r=new Wt,filter:i=null,maxOpenFiles:n=Infinity,readOnlyArchives:s=!1,useCache:o=!0,maxAge:a=5e3,fileExtensions:l=null}){super();this.fdMap=new Map;this.nextFd=3;this.isZip=new Set;this.notZip=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.libzipFactory=typeof e!="function"?()=>e:e,this.baseFs=r,this.zipInstances=o?new Map:null,this.filter=i,this.maxOpenFiles=n,this.readOnlyArchives=s,this.maxAge=a,this.fileExtensions=l}static async openPromise(e,r){let i=new Jn(r);try{return await e(i)}finally{i.saveAndClose()}}get libzip(){return typeof this.libzipInstance=="undefined"&&(this.libzipInstance=this.libzipFactory()),this.libzipInstance}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.saveAndClose(),this.zipInstances.delete(e)}discardAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.discardAndClose(),this.zipInstances.delete(e)}resolve(e){return this.baseFs.resolve(e)}remapFd(e,r){let i=this.nextFd++|$o;return this.fdMap.set(i,[e,r]),i}async openPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.openPromise(e,r,i),async(n,{subPath:s})=>this.remapFd(n,await n.openPromise(s,r,i)))}openSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.openSync(e,r,i),(n,{subPath:s})=>this.remapFd(n,n.openSync(s,r,i)))}async opendirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.opendirPromise(e,r),async(i,{subPath:n})=>await i.opendirPromise(n,r),{requireSubpath:!1})}opendirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.opendirSync(e,r),(i,{subPath:n})=>i.opendirSync(n,r),{requireSubpath:!1})}async readPromise(e,r,i,n,s){if((e&$o)==0)return await this.baseFs.readPromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("read");let[a,l]=o;return await a.readPromise(l,r,i,n,s)}readSync(e,r,i,n,s){if((e&$o)==0)return this.baseFs.readSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("readSync");let[a,l]=o;return a.readSync(l,r,i,n,s)}async writePromise(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("write");let[a,l]=o;return typeof r=="string"?await a.writePromise(l,r,i):await a.writePromise(l,r,i,n,s)}writeSync(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("writeSync");let[a,l]=o;return typeof r=="string"?a.writeSync(l,r,i):a.writeSync(l,r,i,n,s)}async closePromise(e){if((e&$o)==0)return await this.baseFs.closePromise(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("close");this.fdMap.delete(e);let[i,n]=r;return await i.closePromise(n)}closeSync(e){if((e&$o)==0)return this.baseFs.closeSync(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("closeSync");this.fdMap.delete(e);let[i,n]=r;return i.closeSync(n)}createReadStream(e,r){return e===null?this.baseFs.createReadStream(e,r):this.makeCallSync(e,()=>this.baseFs.createReadStream(e,r),(i,{subPath:n})=>i.createReadStream(n,r))}createWriteStream(e,r){return e===null?this.baseFs.createWriteStream(e,r):this.makeCallSync(e,()=>this.baseFs.createWriteStream(e,r),(i,{subPath:n})=>i.createWriteStream(n,r))}async realpathPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.realpathPromise(e),async(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=await this.baseFs.realpathPromise(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,await r.realpathPromise(n)))})}realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSync(e),(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=this.baseFs.realpathSync(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,r.realpathSync(n)))})}async existsPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.existsPromise(e),async(r,{subPath:i})=>await r.existsPromise(i))}existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e),(r,{subPath:i})=>r.existsSync(i))}async accessPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.accessPromise(e,r),async(i,{subPath:n})=>await i.accessPromise(n,r))}accessSync(e,r){return this.makeCallSync(e,()=>this.baseFs.accessSync(e,r),(i,{subPath:n})=>i.accessSync(n,r))}async statPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.statPromise(e,r),async(i,{subPath:n})=>await i.statPromise(n,r))}statSync(e,r){return this.makeCallSync(e,()=>this.baseFs.statSync(e,r),(i,{subPath:n})=>i.statSync(n,r))}async fstatPromise(e,r){if((e&$o)==0)return this.baseFs.fstatPromise(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstat");let[n,s]=i;return n.fstatPromise(s,r)}fstatSync(e,r){if((e&$o)==0)return this.baseFs.fstatSync(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let[n,s]=i;return n.fstatSync(s,r)}async lstatPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.lstatPromise(e,r),async(i,{subPath:n})=>await i.lstatPromise(n,r))}lstatSync(e,r){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e,r),(i,{subPath:n})=>i.lstatSync(n,r))}async chmodPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.chmodPromise(e,r),async(i,{subPath:n})=>await i.chmodPromise(n,r))}chmodSync(e,r){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,r),(i,{subPath:n})=>i.chmodSync(n,r))}async chownPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.chownPromise(e,r,i),async(n,{subPath:s})=>await n.chownPromise(s,r,i))}chownSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.chownSync(e,r,i),(n,{subPath:s})=>n.chownSync(s,r,i))}async renamePromise(e,r){return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.renamePromise(e,r),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(i,{subPath:n})=>await this.makeCallPromise(r,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await i.renamePromise(n,o)}))}renameSync(e,r){return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.renameSync(e,r),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(i,{subPath:n})=>this.makeCallSync(r,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return i.renameSync(n,o)}))}async copyFilePromise(e,r,i=0){let n=async(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&await this.existsPromise(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=await s.readFilePromise(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}await a.writeFilePromise(l,c)};return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.copyFilePromise(e,r,i),async(s,{subPath:o})=>await n(this.baseFs,e,s,o)),async(s,{subPath:o})=>await this.makeCallPromise(r,async()=>await n(s,o,this.baseFs,r),async(a,{subPath:l})=>s!==a?await n(s,o,a,l):await s.copyFilePromise(o,l,i)))}copyFileSync(e,r,i=0){let n=(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&this.existsSync(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=s.readFileSync(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}a.writeFileSync(l,c)};return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.copyFileSync(e,r,i),(s,{subPath:o})=>n(this.baseFs,e,s,o)),(s,{subPath:o})=>this.makeCallSync(r,()=>n(s,o,this.baseFs,r),(a,{subPath:l})=>s!==a?n(s,o,a,l):s.copyFileSync(o,l,i)))}async appendFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.appendFilePromise(e,r,i),async(n,{subPath:s})=>await n.appendFilePromise(s,r,i))}appendFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.appendFileSync(e,r,i),(n,{subPath:s})=>n.appendFileSync(s,r,i))}async writeFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.writeFilePromise(e,r,i),async(n,{subPath:s})=>await n.writeFilePromise(s,r,i))}writeFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.writeFileSync(e,r,i),(n,{subPath:s})=>n.writeFileSync(s,r,i))}async unlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.unlinkPromise(e),async(r,{subPath:i})=>await r.unlinkPromise(i))}unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e),(r,{subPath:i})=>r.unlinkSync(i))}async utimesPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.utimesPromise(e,r,i),async(n,{subPath:s})=>await n.utimesPromise(s,r,i))}utimesSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.utimesSync(e,r,i),(n,{subPath:s})=>n.utimesSync(s,r,i))}async mkdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.mkdirPromise(e,r),async(i,{subPath:n})=>await i.mkdirPromise(n,r))}mkdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,r),(i,{subPath:n})=>i.mkdirSync(n,r))}async rmdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.rmdirPromise(e,r),async(i,{subPath:n})=>await i.rmdirPromise(n,r))}rmdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e,r),(i,{subPath:n})=>i.rmdirSync(n,r))}async linkPromise(e,r){return await this.makeCallPromise(r,async()=>await this.baseFs.linkPromise(e,r),async(i,{subPath:n})=>await i.linkPromise(e,n))}linkSync(e,r){return this.makeCallSync(r,()=>this.baseFs.linkSync(e,r),(i,{subPath:n})=>i.linkSync(e,n))}async symlinkPromise(e,r,i){return await this.makeCallPromise(r,async()=>await this.baseFs.symlinkPromise(e,r,i),async(n,{subPath:s})=>await n.symlinkPromise(e,s))}symlinkSync(e,r,i){return this.makeCallSync(r,()=>this.baseFs.symlinkSync(e,r,i),(n,{subPath:s})=>n.symlinkSync(e,s))}async readFilePromise(e,r){return this.makeCallPromise(e,async()=>{switch(r){case"utf8":return await this.baseFs.readFilePromise(e,r);default:return await this.baseFs.readFilePromise(e,r)}},async(i,{subPath:n})=>await i.readFilePromise(n,r))}readFileSync(e,r){return this.makeCallSync(e,()=>{switch(r){case"utf8":return this.baseFs.readFileSync(e,r);default:return this.baseFs.readFileSync(e,r)}},(i,{subPath:n})=>i.readFileSync(n,r))}async readdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.readdirPromise(e,r),async(i,{subPath:n})=>await i.readdirPromise(n,r),{requireSubpath:!1})}readdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.readdirSync(e,r),(i,{subPath:n})=>i.readdirSync(n,r),{requireSubpath:!1})}async readlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.readlinkPromise(e),async(r,{subPath:i})=>await r.readlinkPromise(i))}readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSync(e),(r,{subPath:i})=>r.readlinkSync(i))}async truncatePromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.truncatePromise(e,r),async(i,{subPath:n})=>await i.truncatePromise(n,r))}truncateSync(e,r){return this.makeCallSync(e,()=>this.baseFs.truncateSync(e,r),(i,{subPath:n})=>i.truncateSync(n,r))}watch(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watch(e,r,i),(n,{subPath:s})=>n.watch(s,r,i))}watchFile(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watchFile(e,r,i),()=>QI(this,e,r,i))}unwatchFile(e,r){return this.makeCallSync(e,()=>this.baseFs.unwatchFile(e,r),()=>nh(this,e,r))}async makeCallPromise(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return await r();let s=this.resolve(e),o=this.findZip(s);return o?n&&o.subPath==="/"?await r():await this.getZipPromise(o.archivePath,async a=>await i(a,o)):await r()}makeCallSync(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return r();let s=this.resolve(e),o=this.findZip(s);return!o||n&&o.subPath==="/"?r():this.getZipSync(o.archivePath,a=>i(a,o))}findZip(e){if(this.filter&&!this.filter.test(e))return null;let r="";for(;;){let i=e.substr(r.length),n;if(!this.fileExtensions)n=SO(i,".zip");else for(let s of this.fileExtensions)if(n=SO(i,s),n)break;if(!n)return null;if(r=this.pathUtils.join(r,n),this.isZip.has(r)===!1){if(this.notZip.has(r))continue;try{if(!this.baseFs.lstatSync(r).isFile()){this.notZip.add(r);continue}}catch{return null}this.isZip.add(r)}return{archivePath:r,subPath:this.pathUtils.join(Se.root,e.substr(r.length))}}}limitOpenFiles(e){if(this.zipInstances===null)return;let r=Date.now(),i=r+this.maxAge,n=e===null?0:this.zipInstances.size-e;for(let[s,{zipFs:o,expiresAt:a,refCount:l}]of this.zipInstances.entries())if(!(l!==0||o.hasOpenFileHandles())){if(r>=a){o.saveAndClose(),this.zipInstances.delete(s),n-=1;continue}else if(e===null||n<=0){i=a;break}o.saveAndClose(),this.zipInstances.delete(s),n-=1}this.limitOpenFilesTimeout===null&&(e===null&&this.zipInstances.size>0||e!==null)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},i-r).unref())}async getZipPromise(e,r){let i=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(e)});if(this.zipInstances){let n=this.zipInstances.get(e);if(!n){let s=await i();n=this.zipInstances.get(e),n||(n={zipFs:new Jr(e,s),expiresAt:0,refCount:0})}this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await r(n.zipFs)}finally{n.refCount-=1}}else{let n=new Jr(e,await i());try{return await r(n)}finally{n.saveAndClose()}}}getZipSync(e,r){let i=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(e)});if(this.zipInstances){let n=this.zipInstances.get(e);return n||(n={zipFs:new Jr(e,i()),expiresAt:0,refCount:0}),this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,r(n.zipFs)}else{let n=new Jr(e,i());try{return r(n)}finally{n.saveAndClose()}}}};var lh=ie(require("util"));var vI=ie(require("url"));var hb=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return e}mapToBase(e){return e instanceof vI.URL?(0,vI.fileURLToPath)(e):e}};var ohe=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","chownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),xO=new Set(["accessPromise","appendFilePromise","chmodPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]),ahe=new Set(["appendFilePromise","chmodPromise","chownPromise","closePromise","readPromise","readFilePromise","statPromise","truncatePromise","utimesPromise","writePromise","writeFilePromise"]);function pb(t,e){e=new hb(e);let r=(i,n,s)=>{let o=i[n];i[n]=s,typeof(o==null?void 0:o[lh.promisify.custom])!="undefined"&&(s[lh.promisify.custom]=o[lh.promisify.custom])};{r(t,"exists",(i,...n)=>{let o=typeof n[n.length-1]=="function"?n.pop():()=>{};process.nextTick(()=>{e.existsPromise(i).then(a=>{o(a)},()=>{o(!1)})})}),r(t,"read",(i,n,...s)=>{let a=typeof s[s.length-1]=="function"?s.pop():()=>{};process.nextTick(()=>{e.readPromise(i,n,...s).then(l=>{a(null,l,n)},l=>{a(l,0,n)})})});for(let i of xO){let n=i.replace(/Promise$/,"");if(typeof t[n]=="undefined")continue;let s=e[i];if(typeof s=="undefined")continue;r(t,n,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{s.apply(e,a).then(u=>{c(null,u)},u=>{c(u)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",i=>{try{return e.existsSync(i)}catch(n){return!1}});for(let i of ohe){let n=i;if(typeof t[n]=="undefined")continue;let s=e[i];typeof s!="undefined"&&r(t,n,s.bind(e))}t.realpathSync.native=t.realpathSync}{let i=process.emitWarning;process.emitWarning=()=>{};let n;try{n=t.promises}finally{process.emitWarning=i}if(typeof n!="undefined"){for(let o of xO){let a=o.replace(/Promise$/,"");if(typeof n[a]=="undefined")continue;let l=e[o];typeof l!="undefined"&&o!=="open"&&r(n,a,l.bind(e))}class s{constructor(a){this.fd=a}}for(let o of ahe){let a=o.replace(/Promise$/,""),l=e[o];typeof l!="undefined"&&r(s.prototype,a,function(...c){return l.call(e,this.fd,...c)})}r(n,"open",async(...o)=>{let a=await e.openPromise(...o);return new s(a)})}}t.read[lh.promisify.custom]=async(i,n,...s)=>({bytesRead:await e.readPromise(i,n,...s),buffer:n})}function SI(t,e){let r=Object.create(t);return pb(r,e),r}var kO=ie(require("os"));function PO(t){let e=M.toPortablePath(kO.default.tmpdir()),r=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return v.join(e,`${t}${r}`)}var vs=new Set,DO=!1;function RO(){DO||(DO=!0,process.once("exit",()=>{T.rmtempSync()}))}var T=Object.assign(new Wt,{detachTemp(t){vs.delete(t)},mktempSync(t){for(RO();;){let e=PO("xfs-");try{this.mkdirSync(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=this.realpathSync(e);if(vs.add(r),typeof t!="undefined")try{return t(r)}finally{if(vs.has(r)){vs.delete(r);try{this.removeSync(r)}catch{}}}else return r}},async mktempPromise(t){for(RO();;){let e=PO("xfs-");try{await this.mkdirPromise(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=await this.realpathPromise(e);if(vs.add(r),typeof t!="undefined")try{return await t(r)}finally{if(vs.has(r)){vs.delete(r);try{await this.removePromise(r)}catch{}}}else return r}},async rmtempPromise(){await Promise.all(Array.from(vs.values()).map(async t=>{try{await T.removePromise(t,{maxRetries:0}),vs.delete(t)}catch{}}))},rmtempSync(){for(let t of vs)try{T.removeSync(t),vs.delete(t)}catch{}}});var vb=ie(bb()),Pn;(function(i){i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always"})(Pn||(Pn={}));function dl(t){return t!==null&&typeof t.fd=="number"}var Cl=new Set;function Sb(){}function xb(){for(let t of Cl)t.kill()}async function to(t,e,{cwd:r,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":dl(s)&&(c[0]=s),dl(o)&&(c[1]=o),dl(a)&&(c[2]=a);let u=(0,vb.default)(t,e,{cwd:M.fromPortablePath(r),env:_(P({},i),{PWD:M.fromPortablePath(r)}),stdio:c});Cl.add(u),Cl.size===1&&(process.on("SIGINT",Sb),process.on("SIGTERM",xb)),!dl(s)&&s!==null&&s.pipe(u.stdin),dl(o)||u.stdout.pipe(o,{end:!1}),dl(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))dl(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,d)=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1&&p>0)&&g(),p===0||!n?f({code:kb(p,d)}):h(p!==null?new Error(`Child "${t}" exited with exit code ${p}`):new Error(`Child "${t}" exited with signal ${d}`))})})}async function Nhe(t,e,{cwd:r,env:i=process.env,encoding:n="utf8",strict:s=!1}){let o=["ignore","pipe","pipe"],a=[],l=[],c=M.fromPortablePath(r);typeof i.PWD!="undefined"&&(i=_(P({},i),{PWD:c}));let u=(0,vb.default)(t,e,{cwd:c,env:i,stdio:o});return u.stdout.on("data",g=>{a.push(g)}),u.stderr.on("data",g=>{l.push(g)}),await new Promise((g,f)=>{u.on("error",()=>{f()}),u.on("close",(h,p)=>{let d=n==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(n),m=n==="buffer"?Buffer.concat(l):Buffer.concat(l).toString(n);h===0||!s?g({code:kb(h,p),stdout:d,stderr:m}):f(Object.assign(new Error(`Child "${t}" exited with exit code ${h} + +${m}`),{code:kb(h,p),stdout:d,stderr:m}))})})}var Lhe=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function kb(t,e){let r=Lhe.get(e);return typeof r!="undefined"?128+r:t!=null?t:1}var Pb={};it(Pb,{getDefaultGlobalFolder:()=>Rb,getHomeFolder:()=>uh,isFolderInside:()=>Fb});var Db=ie(require("os"));function Rb(){if(process.platform==="win32"){let t=M.toPortablePath(process.env.LOCALAPPDATA||M.join((0,Db.homedir)(),"AppData","Local"));return v.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=M.toPortablePath(process.env.XDG_DATA_HOME);return v.resolve(t,"yarn/berry")}return v.resolve(uh(),".yarn/berry")}function uh(){return M.toPortablePath((0,Db.homedir)()||"/usr/local/share")}function Fb(t,e){let r=v.relative(e,t);return r&&!r.startsWith("..")&&!v.isAbsolute(r)}var ue={};it(ue,{LogLevel:()=>Ts,Style:()=>Gl,Type:()=>Le,addLogFilterSupport:()=>Cp,applyColor:()=>On,applyHyperlink:()=>Ku,applyStyle:()=>Py,json:()=>Uu,mark:()=>xx,pretty:()=>Ve,prettyField:()=>Yl,prettyList:()=>Kx,supportsColor:()=>xy,supportsHyperlinks:()=>Mx,tuple:()=>jl});var pp=ie(jb()),dp=ie(ml()),o3=ie(Nn()),a3=ie(gU());var z;(function(te){te[te.UNNAMED=0]="UNNAMED",te[te.EXCEPTION=1]="EXCEPTION",te[te.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",te[te.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",te[te.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",te[te.BUILD_DISABLED=5]="BUILD_DISABLED",te[te.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",te[te.MUST_BUILD=7]="MUST_BUILD",te[te.MUST_REBUILD=8]="MUST_REBUILD",te[te.BUILD_FAILED=9]="BUILD_FAILED",te[te.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",te[te.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",te[te.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",te[te.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",te[te.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",te[te.REMOTE_INVALID=15]="REMOTE_INVALID",te[te.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",te[te.RESOLUTION_PACK=17]="RESOLUTION_PACK",te[te.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",te[te.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",te[te.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",te[te.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",te[te.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",te[te.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",te[te.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",te[te.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",te[te.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",te[te.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",te[te.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",te[te.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",te[te.FETCH_FAILED=30]="FETCH_FAILED",te[te.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",te[te.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",te[te.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",te[te.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",te[te.NETWORK_ERROR=35]="NETWORK_ERROR",te[te.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",te[te.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",te[te.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",te[te.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",te[te.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",te[te.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",te[te.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",te[te.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",te[te.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",te[te.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",te[te.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",te[te.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",te[te.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",te[te.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",te[te.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",te[te.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",te[te.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",te[te.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",te[te.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",te[te.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",te[te.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",te[te.INVALID_MANIFEST=57]="INVALID_MANIFEST",te[te.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",te[te.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",te[te.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",te[te.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",te[te.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",te[te.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",te[te.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",te[te.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",te[te.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",te[te.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",te[te.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",te[te.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",te[te.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",te[te.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",te[te.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",te[te.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",te[te.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",te[te.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",te[te.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",te[te.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE"})(z||(z={}));function KI(t){return`YN${t.toString(10).padStart(4,"0")}`}var de={};it(de,{BufferStream:()=>OH,CachingStrategy:()=>Dl,DefaultStream:()=>KH,assertNever:()=>Lv,bufferStream:()=>Cu,buildIgnorePattern:()=>DIe,convertMapsToIndexableObjects:()=>aE,dynamicRequire:()=>mu,escapeRegExp:()=>SIe,getArrayWithDefault:()=>hu,getFactoryWithDefault:()=>na,getMapWithDefault:()=>pu,getSetWithDefault:()=>Pl,isIndexableObject:()=>Tv,isPathLike:()=>RIe,isTaggedYarnVersion:()=>vIe,mapAndFilter:()=>kl,mapAndFind:()=>MH,overrideType:()=>Nv,parseBoolean:()=>Hh,parseOptionalBoolean:()=>jH,prettifyAsyncErrors:()=>du,prettifySyncErrors:()=>Mv,releaseAfterUseAsync:()=>kIe,replaceEnvVariables:()=>Ov,sortMap:()=>gn,tryParseOptionalBoolean:()=>Kv,validateEnum:()=>xIe});var vh={};it(vh,{Builtins:()=>Ev,Cli:()=>oo,Command:()=>ye,Option:()=>Y,UsageError:()=>me});var yl=0,Ih=1,Gi=2,sv="",hi="\0",Au=-1,ov=/^(-h|--help)(?:=([0-9]+))?$/,UI=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,fU=/^-[a-zA-Z]{2,}$/,av=/^([^=]+)=([\s\S]*)$/,Av=process.env.DEBUG_CLI==="1";var me=class extends Error{constructor(e){super(e);this.clipanion={type:"usage"},this.name="UsageError"}},Eh=class extends Error{constructor(e,r){super();if(this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===r[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} + +${this.candidates.map(({usage:n})=>`$ ${n}`).join(` +`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: + +$ ${i} +${lv(e)}`}else this.message=`Command not found; did you mean one of: + +${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` +`)} + +${lv(e)}`}},cv=class extends Error{constructor(e,r){super();this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: + +${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` +`)} + +${lv(e)}`}},lv=t=>`While running ${t.filter(e=>e!==hi).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`;var yh=Symbol("clipanion/isOption");function ji(t){return _(P({},t),{[yh]:!0})}function so(t,e){return typeof t=="undefined"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function HI(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function wh(t,e){return e.length===1?new me(`${t}: ${HI(e[0],!0)}`):new me(`${t}: +${e.map(r=>` +- ${HI(r)}`).join("")}`)}function Bh(t,e,r){if(typeof r=="undefined")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!r(e,{errors:i,coercions:n,coercion:s}))throw wh(`Invalid value for ${t}`,i);for(let[,a]of n)a();return e}var ye=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(typeof r!="undefined"){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(Ss(),lu)),a=o(n(s()),r),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw wh("Invalid option schema",l);for(let[,g]of c)g()}let i=await this.execute();return typeof i!="undefined"?i:0}};ye.isOption=yh;ye.Default=[];function un(t){Av&&console.log(t)}var BU={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Au};function QU(){return{nodes:[qi(),qi(),qi()]}}function nCe(t){let e=QU(),r=[],i=e.nodes.length;for(let n of t){r.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=t.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)r(a);for(let[,{to:o}]of n.dynamics)r(o);for(let{to:o}of n.shortcuts)r(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=t.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};r(yl)}function oCe(t,{prefix:e=""}={}){if(Av){un(`${e}Nodes are:`);for(let r=0;rl!==Gi).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===Gi))throw new Eh(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=aCe(a)}if(i.length>0){un(" Results:");for(let s of i)un(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else un(" No results");return i}function ACe(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,hi)){for(let{to:r}of t.statics[hi])if(r===Ih)return!0}return!1}function cCe(t,e,r){let i=r&&e.length>0?[""]:[],n=vU(t,e,r),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let d=t.nodes[p],m=Object.keys(d.statics);for(let E of Object.keys(d.statics)){let B=m[0];for(let{to:b,reducer:R}of d.statics[B])R==="pushPath"&&(u||l.push(B),g.push(b))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=t.nodes[l],g=ACe(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==hi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===Gi)continue;let p=lCe(f,c);if(p!==null)for(let d of p)a([...i,d],l)}}return[...s].sort()}function gCe(t,e){let r=vU(t,[...e,hi]);return uCe(e,r.map(({state:i})=>i))}function aCe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function uCe(t,e){let r=e.filter(g=>g.selectedIndex!==null);if(r.length===0)throw new Error;let i=r.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new Eh(t,r.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=fCe(c);if(u.length>1)throw new cv(t,u.map(g=>g.candidateUsage));return u[0]}function fCe(t){let e=[],r=[];for(let i of t)i.selectedIndex===Au?r.push(i):e.push(i);return r.length>0&&e.push(_(P({},BU),{path:SU(...r.map(i=>i.path)),options:r.reduce((i,n)=>i.concat(n.options),[])})),e}function SU(t,e,...r){return e===void 0?Array.from(t):SU(t.filter((i,n)=>i===e[n]),...r)}function qi(){return{dynamics:[],shortcuts:[],statics:{}}}function bU(t){return t===Ih||t===Gi}function Cv(t,e=0){return{to:bU(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function iCe(t,e=0){let r=qi();for(let[i,n]of t.dynamics)r.dynamics.push([i,Cv(n,e)]);for(let i of t.shortcuts)r.shortcuts.push(Cv(i,e));for(let[i,n]of Object.entries(t.statics))r.statics[i]=n.map(s=>Cv(s,e));return r}function pi(t,e,r,i,n){t.nodes[e].dynamics.push([r,{to:i,reducer:n}])}function cu(t,e,r,i){t.nodes[e].shortcuts.push({to:r,reducer:i})}function ta(t,e,r,i,n){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:i,reducer:n})}function jI(t,e,r,i){if(Array.isArray(e)){let[n,...s]=e;return t[n](r,i,...s)}else return t[e](r,i)}function lCe(t,e){let r=Array.isArray(t)?YI[t[0]]:YI[t];if(typeof r.suggest=="undefined")return null;let i=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...i)}var YI={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,i)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&fU.test(e)&&[...e.slice(1)].every(i=>r.includes(`-${i}`)),isBoundOption:(t,e,r,i)=>{let n=e.match(av);return!t.ignoreOptions&&!!n&&UI.test(n[1])&&r.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&ov.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&UI.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!UI.test(e)};YI.isOption.suggest=(t,e,r=!0)=>r?null:[e];var dv={setCandidateState:(t,e,r)=>P(P({},t),r),setSelectedIndex:(t,e,r)=>_(P({},t),{selectedIndex:r}),pushBatch:(t,e)=>_(P({},t),{options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,i]=e.match(av);return _(P({},t),{options:t.options.concat({name:r,value:i})})},pushPath:(t,e)=>_(P({},t),{path:t.path.concat(e)}),pushPositional:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:Ln})}),pushTrue:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>_(P({},t),{options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let i=_(P({},t),{options:[...t.options]}),n=t.options[t.options.length-1];return n.value=((r=n.value)!==null&&r!==void 0?r:[]).concat([e]),i},setStringValue:(t,e)=>{let r=_(P({},t),{options:[...t.options]}),i=t.options[t.options.length-1];return i.value=e,r},inhibateOptions:t=>_(P({},t),{ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,i]=e.match(ov);return typeof i!="undefined"?_(P({},t),{options:[{name:"-c",value:String(r)},{name:"-i",value:i}]}):_(P({},t),{options:[{name:"-c",value:String(r)}]})},setError:(t,e,r)=>e===hi?_(P({},t),{errorMessage:`${r}.`}):_(P({},t),{errorMessage:`${r} ("${e}").`}),setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return _(P({},t),{errorMessage:`Not enough arguments to option ${r.name}.`})}},Ln=Symbol(),xU=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:i,proxy:n})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===Ln)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Ln?this.arity.extra.push(e):this.arity.extra!==Ln&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Ln)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Ln?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context=="undefined")throw new Error("Assertion failed: No context attached");let e=QU(),r=yl,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);r=xs(e,qi()),ta(e,yl,sv,r,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=r;if(a.length>0){let f=xs(e,qi());cu(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=xs(e,qi());pi(e,l,"isHelp",f,["useHelp",this.cliIndex]),ta(e,f,hi,Ih,["setSelectedIndex",Au]),this.registerOptions(e,l)}this.arity.leading.length>0&&ta(e,l,hi,Gi,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&ta(e,h,hi,Gi,["setError","Not enough positional arguments"]),pi(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Ln||this.arity.extra.length>0){let f=xs(e,qi());if(cu(e,c,f),this.arity.extra===Ln){let h=xs(e,qi());this.arity.proxy||this.registerOptions(e,h),pi(e,c,s,h,"pushExtraNoLimits"),pi(e,h,s,h,"pushExtraNoLimits"),cu(e,h,f)}else for(let h=0;h0&&ta(e,u,hi,Gi,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)pi(e,r,["isOption",s,i.hidden||s!==n],r,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&pi(e,r,["isNegatedOption",s],r,["pushFalse",s]);else{let s=xs(e,qi());for(let o of i.names)pi(e,r,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&egCe(i,n),suggest:(n,s)=>cCe(i,n,s)}}};var kU=80,mv=Array(kU).fill("\u2501");for(let t=0;t<=24;++t)mv[mv.length-t]=`[38;5;${232+t}m\u2501`;var Iv={header:t=>`\u2501\u2501\u2501 ${t}${t.length`${t}`,error:t=>`${t}`,code:t=>`${t}`},PU={header:t=>t,bold:t=>t,error:t=>t,code:t=>t};function hCe(t){let e=t.split(` +`),r=e.filter(n=>n.match(/\S/)),i=r.length>0?r.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` +`)}function Vn(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` +`),t=hCe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 + +`),t=t.replace(/\n(\n)?\n*/g,"$1"),r&&(t=t.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` +`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` +`)}).join(` + +`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),t?`${t} +`:""}var bh=class extends ye{constructor(e){super();this.contexts=e,this.commands=[]}static from(e,r){let i=new bh(r);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index!="undefined"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: +`),this.context.stdout.write(` +`);let r=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` +`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. +`)}}};var DU=Symbol("clipanion/errorCommand");function pCe(){return process.env.FORCE_COLOR==="0"?!1:!!(process.env.FORCE_COLOR==="1"||typeof process.stdout!="undefined"&&process.stdout.isTTY)}var oo=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:i,enableColors:n=pCe()}={}){this.registrations=new Map,this.builder=new Qh({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=i,this.enableColors=n}static from(e,r={}){let i=new oo(r);for(let n of e)i.register(n);return i}register(e){var r;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[ye.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(r=e.paths)!==null&&r!==void 0?r:n.paths;if(typeof a!="undefined")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:r,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case Au:return bh.from(n,r);default:{let{commandClass:s}=r[n.selectedIndex],o=this.registrations.get(s);if(typeof o=="undefined")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[DU]=a,l}}break}}async run(e,r){let i;if(!Array.isArray(e))i=e;else try{i=this.process(e)}catch(s){return r.stdout.write(this.error(s)),1}if(i.help)return r.stdout.write(this.usage(i,{detailed:!0})),0;i.context=r,i.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(s,o)=>this.error(s,o),process:s=>this.process(s),run:(s,o)=>this.run(s,P(P({},r),o)),usage:(s,o)=>this.usage(s,o)};let n;try{n=await i.validateAndExecute().catch(s=>i.catch(s).then(()=>0))}catch(s){return r.stdout.write(this.error(s,{command:i})),1}return n}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:i}=this.builder.compile();return i(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage=="undefined")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category!="undefined"?Vn(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description!="undefined"?Vn(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details!="undefined"?Vn(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples!="undefined"?i.usage.examples.map(([f,h])=>[Vn(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return r}usage(e=null,{colored:r,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage!="undefined";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof ye?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Vn(l,{format:this.format(r),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` +`),(c!==""||u.length>0)&&(a+=`${this.format(r).header("Usage")} +`,a+=` +`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(r).bold(n)}${g} +`,f.length>0){a+=` +`,a+=`${Iv.header("Options")} +`;let h=f.reduce((p,d)=>Math.max(p,d.definition.length),0);a+=` +`;for(let{definition:p,description:d}of f)a+=` ${this.format(r).bold(p.padEnd(h))} ${Vn(d,{format:this.format(r),paragraphs:!1})}`}if(c!==""&&(a+=` +`,a+=`${this.format(r).header("Details")} +`,a+=` +`,a+=Vn(c,{format:this.format(r),paragraphs:!0})),u.length>0){a+=` +`,a+=`${this.format(r).header("Examples")} +`;for(let[h,p]of u)a+=` +`,a+=Vn(h,{format:this.format(r),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(r).bold(n)}`).replace(/\$0/g,this.binaryName)} +`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(r).bold(n)}${l} +`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage=="undefined")continue;let p=typeof f.usage.category!="undefined"?Vn(f.usage.category,{format:this.format(r),paragraphs:!1}):null,d=l.get(p);typeof d=="undefined"&&l.set(p,d=[]);let{usage:m}=this.getUsageByIndex(h);d.push({commandClass:f,usage:m})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel!="undefined",g=typeof this.binaryVersion!="undefined";u||g?(u&&g?a+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} + +`:u?a+=`${this.format(r).header(`${this.binaryLabel}`)} +`:a+=`${this.format(r).header(`${this.binaryVersion}`)} +`,a+=` ${this.format(r).bold(n)}${this.binaryName} +`):a+=`${this.format(r).bold(n)}${this.binaryName} +`;for(let f of c){let h=l.get(f).slice().sort((d,m)=>d.usage.localeCompare(m.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` +`,a+=`${this.format(r).header(`${p}`)} +`;for(let{commandClass:d,usage:m}of h){let E=d.usage.description||"undocumented";a+=` +`,a+=` ${this.format(r).bold(m)} +`,a+=` ${Vn(E,{format:this.format(r),paragraphs:!1})}`}}a+=` +`,a+=Vn("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return a}error(e,r){var i,{colored:n,command:s=(i=e[DU])!==null&&i!==void 0?i:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} +`;let l=e.clipanion;return typeof l!="undefined"?l.type==="usage"&&(o+=` +`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} +`),o}getUsageByRegistration(e,r){let i=this.registrations.get(e);if(typeof i=="undefined")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}format(e=this.enableColors){return e?Iv:PU}};oo.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr};var Ev={};it(Ev,{DefinitionsCommand:()=>qI,HelpCommand:()=>JI,VersionCommand:()=>WI});var qI=class extends ye{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};qI.paths=[["--clipanion=definitions"]];var JI=class extends ye{async execute(){this.context.stdout.write(this.cli.usage())}};JI.paths=[["-h"],["--help"]];var WI=class extends ye{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} +`)}};WI.paths=[["-v"],["--version"]];var Y={};it(Y,{Array:()=>RU,Boolean:()=>FU,Counter:()=>NU,Proxy:()=>LU,Rest:()=>TU,String:()=>MU,applyValidator:()=>Bh,cleanValidationError:()=>HI,formatError:()=>wh,isOptionSymbol:()=>yh,makeCommandOption:()=>ji,rerouteArguments:()=>so});function RU(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i!="undefined"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function FU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function NU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function LU(t={}){return ji({definition(e,r){var i;e.addProxy({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){return i.positionals.map(({value:n})=>n)}})}function TU(t={}){return ji({definition(e,r){var i;e.addRest({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){let n=o=>{let a=i.positionals[o];return a.extra===Ln||a.extra===!1&&oo)}})}function dCe(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Bh(g!=null?g:c,f,n.validator):f}})}function CCe(t={}){let{required:e=!0}=t;return ji({definition(r,i){var n;r.addPositional({name:(n=t.name)!==null&&n!==void 0?n:i,required:t.required})},transformer(r,i,n){var s;for(let o=0;oJSON.stringify(i)).join(", ")})`);return e}function kl(t,e){let r=[];for(let i of t){let n=e(i);n!==LH&&r.push(n)}return r}var LH=Symbol();kl.skip=LH;function MH(t,e){for(let r of t){let i=e(r);if(i!==TH)return i}}var TH=Symbol();MH.skip=TH;function Tv(t){return typeof t=="object"&&t!==null}function aE(t){if(t instanceof Map&&(t=Object.fromEntries(t)),Tv(t))for(let e of Object.keys(t)){let r=t[e];Tv(r)&&(t[e]=aE(r))}return t}function na(t,e,r){let i=t.get(e);return typeof i=="undefined"&&t.set(e,i=r()),i}function hu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=[]),r}function Pl(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Set),r}function pu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Map),r}async function kIe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function du(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function Mv(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Cu(t){return await new Promise((e,r)=>{let i=[];t.on("error",n=>{r(n)}),t.on("data",n=>{i.push(n)}),t.on("end",()=>{e(Buffer.concat(i))})})}var OH=class extends Fv.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(e),i(null,null)}_flush(e){e(null,Buffer.concat(this.chunks))}},KH=class extends Fv.Transform{constructor(e=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=e}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,i(null,e)}_flush(e){this.active&&this.ifEmpty.length>0?e(null,this.ifEmpty):e(null)}},Uh=eval("require");function UH(t){return Uh(M.fromPortablePath(t))}function HH(path){let physicalPath=M.fromPortablePath(path),currentCacheEntry=Uh.cache[physicalPath];delete Uh.cache[physicalPath];let result;try{result=UH(physicalPath);let freshCacheEntry=Uh.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{Uh.cache[physicalPath]=currentCacheEntry}return result}var GH=new Map;function PIe(t){let e=GH.get(t),r=T.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let i=HH(t);return GH.set(t,{mtime:r.mtimeMs,instance:i}),i}var Dl;(function(i){i[i.NoCache=0]="NoCache",i[i.FsTime=1]="FsTime",i[i.Node=2]="Node"})(Dl||(Dl={}));function mu(t,{cachingStrategy:e=2}={}){switch(e){case 0:return HH(t);case 1:return PIe(t);case 2:return UH(t);default:throw new Error("Unsupported caching strategy")}}function gn(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(r.map(o=>s(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function DIe(t){return t.length===0?null:t.map(e=>`(${FH.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Ov(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...i)=>{let{variableName:n,colon:s,fallback:o}=i[i.length-1],a=Object.prototype.hasOwnProperty.call(e,n),l=e[n];if(l||a&&!s)return l;if(o!=null)return o;throw new me(`Environment variable not found (${n})`)})}function Hh(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function jH(t){return typeof t=="undefined"?t:Hh(t)}function Kv(t){try{return jH(t)}catch{return null}}function RIe(t){return!!(M.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}var S={};it(S,{areDescriptorsEqual:()=>i3,areIdentsEqual:()=>cp,areLocatorsEqual:()=>up,areVirtualPackagesEquivalent:()=>XQe,bindDescriptor:()=>VQe,bindLocator:()=>_Qe,convertDescriptorToLocator:()=>By,convertLocatorToDescriptor:()=>WQe,convertPackageToLocator:()=>zQe,convertToIdent:()=>JQe,convertToManifestRange:()=>ebe,copyPackage:()=>ap,devirtualizeDescriptor:()=>Ap,devirtualizeLocator:()=>lp,getIdentVendorPath:()=>Lx,isPackageCompatible:()=>Sy,isVirtualDescriptor:()=>hA,isVirtualLocator:()=>Eo,makeDescriptor:()=>Yt,makeIdent:()=>Io,makeLocator:()=>Vi,makeRange:()=>by,parseDescriptor:()=>pA,parseFileStyleRange:()=>ZQe,parseIdent:()=>In,parseLocator:()=>Hl,parseRange:()=>Tu,prettyDependent:()=>Nx,prettyDescriptor:()=>Xt,prettyIdent:()=>Vr,prettyLocator:()=>lt,prettyLocatorNoColors:()=>Rx,prettyRange:()=>yy,prettyReference:()=>fp,prettyResolution:()=>Fx,prettyWorkspace:()=>hp,renamePackage:()=>op,slugifyIdent:()=>Dx,slugifyLocator:()=>Mu,sortDescriptors:()=>Ou,stringifyDescriptor:()=>En,stringifyIdent:()=>St,stringifyLocator:()=>is,tryParseDescriptor:()=>gp,tryParseIdent:()=>n3,tryParseLocator:()=>Qy,virtualizeDescriptor:()=>kx,virtualizePackage:()=>Px});var Lu=ie(require("querystring")),e3=ie(Or()),t3=ie(wY());var mn={};it(mn,{checksumFile:()=>Iy,checksumPattern:()=>Ey,makeHash:()=>zi});var my=ie(require("crypto")),Sx=ie(vx());function zi(...t){let e=(0,my.createHash)("sha512"),r="";for(let i of t)typeof i=="string"?r+=i:i&&(r&&(e.update(r),r=""),e.update(i));return r&&e.update(r),e.digest("hex")}async function Iy(t,{baseFs:e,algorithm:r}={baseFs:T,algorithm:"sha512"}){let i=await e.openPromise(t,"r");try{let n=65536,s=Buffer.allocUnsafeSlow(n),o=(0,my.createHash)(r),a=0;for(;(a=await e.readPromise(i,s,0,n))!==0;)o.update(a===n?s:s.slice(0,a));return o.digest("hex")}finally{await e.closePromise(i)}}async function Ey(t,{cwd:e}){let i=(await(0,Sx.default)(t,{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),n=await(0,Sx.default)([t,...i],{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});n.sort();let s=await Promise.all(n.map(async a=>{let l=[Buffer.from(a)],c=M.toPortablePath(a),u=await T.lstatPromise(c);return u.isSymbolicLink()?l.push(Buffer.from(await T.readlinkPromise(c))):u.isFile()&&l.push(await T.readFilePromise(c)),l.join("\0")})),o=(0,my.createHash)("sha512");for(let a of s)o.update(a);return o.digest("hex")}var wy="virtual:",YQe=5,r3=/(os|cpu)=([a-z0-9_-]+)/,qQe=(0,t3.makeParser)(r3);function Io(t,e){if(t==null?void 0:t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:zi(t,e),scope:t,name:e}}function Yt(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zi(t.identHash,e),range:e}}function Vi(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zi(t.identHash,e),reference:e}}function JQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function By(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function WQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function zQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function op(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function ap(t){return op(t,t)}function kx(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return Yt(t,`virtual:${e}#${t.range}`)}function Px(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return op(t,Vi(t,`virtual:${e}#${t.reference}`))}function hA(t){return t.range.startsWith(wy)}function Eo(t){return t.reference.startsWith(wy)}function Ap(t){if(!hA(t))throw new Error("Not a virtual descriptor");return Yt(t,t.range.replace(/^[^#]*#/,""))}function lp(t){if(!Eo(t))throw new Error("Not a virtual descriptor");return Vi(t,t.reference.replace(/^[^#]*#/,""))}function VQe(t,e){return t.range.includes("::")?t:Yt(t,`${t.range}::${Lu.default.stringify(e)}`)}function _Qe(t,e){return t.reference.includes("::")?t:Vi(t,`${t.reference}::${Lu.default.stringify(e)}`)}function cp(t,e){return t.identHash===e.identHash}function i3(t,e){return t.descriptorHash===e.descriptorHash}function up(t,e){return t.locatorHash===e.locatorHash}function XQe(t,e){if(!Eo(t))throw new Error("Invalid package type");if(!Eo(e))throw new Error("Invalid package type");if(!cp(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let i=e.dependencies.get(r.identHash);if(!i||!i3(r,i))return!1}return!0}function In(t){let e=n3(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function n3(t){let e=t.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,r,i]=e,n=typeof r!="undefined"?r:null;return Io(n,i)}function pA(t,e=!1){let r=gp(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function gp(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid range (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Yt(Io(o,n),a)}function Hl(t,e=!1){let r=Qy(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function Qy(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid reference (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Vi(Io(o,n),a)}function Tu(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let i=typeof r[1]!="undefined"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&i!==e.requireProtocol)throw new Error(`Invalid protocol (${i})`);if((e==null?void 0:e.requireProtocol)&&i===null)throw new Error(`Missing protocol (${i})`);let n=typeof r[3]!="undefined"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&n===null)throw new Error(`Missing source (${t})`);let s=typeof r[3]!="undefined"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),o=(e==null?void 0:e.parseSelector)?Lu.default.parse(s):s,a=typeof r[4]!="undefined"?Lu.default.parse(r[4]):null;return{protocol:i,source:n,selector:o,params:a}}function ZQe(t,{protocol:e}){let{selector:r,params:i}=Tu(t,{requireProtocol:e,requireBindings:!0});if(typeof i.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Hl(i.locator,!0),path:r}}function s3(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function $Qe(t){return t===null?!1:Object.entries(t).length>0}function by({protocol:t,source:e,selector:r,params:i}){let n="";return t!==null&&(n+=`${t}`),e!==null&&(n+=`${s3(e)}#`),n+=s3(r),$Qe(i)&&(n+=`::${Lu.default.stringify(i)}`),n}function ebe(t){let{params:e,protocol:r,source:i,selector:n}=Tu(t);for(let s in e)s.startsWith("__")&&delete e[s];return by({protocol:r,source:i,params:e,selector:n})}function St(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function En(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function is(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function Dx(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function Mu(t){let{protocol:e,selector:r}=Tu(t.reference),i=e!==null?e.replace(/:$/,""):"exotic",n=e3.default.valid(r),s=n!==null?`${i}-${n}`:`${i}`,o=10,a=t.scope?`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`:`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`;return kr(a)}function Vr(t,e){return e.scope?`${Ve(t,`@${e.scope}/`,Le.SCOPE)}${Ve(t,e.name,Le.NAME)}`:`${Ve(t,e.name,Le.NAME)}`}function vy(t){if(t.startsWith(wy)){let e=vy(t.substr(t.indexOf("#")+1)),r=t.substr(wy.length,YQe);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function yy(t,e){return`${Ve(t,vy(e),Le.RANGE)}`}function Xt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.RANGE)}${yy(t,e.range)}`}function fp(t,e){return`${Ve(t,vy(e),Le.REFERENCE)}`}function lt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.REFERENCE)}${fp(t,e.reference)}`}function Rx(t){return`${St(t)}@${vy(t.reference)}`}function Ou(t){return gn(t,[e=>St(e),e=>e.range])}function hp(t,e){return Vr(t,e.locator)}function Fx(t,e,r){let i=hA(e)?Ap(e):e;return r===null?`${Xt(t,i)} \u2192 ${xx(t).Cross}`:i.identHash===r.identHash?`${Xt(t,i)} \u2192 ${fp(t,r.reference)}`:`${Xt(t,i)} \u2192 ${lt(t,r)}`}function Nx(t,e,r){return r===null?`${lt(t,e)}`:`${lt(t,e)} (via ${yy(t,r.range)})`}function Lx(t){return`node_modules/${St(t)}`}function Sy(t,e){return t.conditions?qQe(t.conditions,r=>{let[,i,n]=r.match(r3),s=e[i];return s?s.includes(n):!0}):!0}var gt;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(gt||(gt={}));var oi;(function(i){i.Dependency="Dependency",i.PeerDependency="PeerDependency",i.PeerDependencyMeta="PeerDependencyMeta"})(oi||(oi={}));var ki;(function(i){i.Inactive="inactive",i.Redundant="redundant",i.Active="active"})(ki||(ki={}));var Le={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING"},Gl;(function(e){e[e.BOLD=2]="BOLD"})(Gl||(Gl={}));var Tx=dp.default.GITHUB_ACTIONS?{level:2}:pp.default.supportsColor?{level:pp.default.supportsColor.level}:{level:0},xy=Tx.level!==0,Mx=xy&&!dp.default.GITHUB_ACTIONS&&!dp.default.CIRCLE&&!dp.default.GITLAB,Ox=new pp.default.Instance(Tx),tbe=new Map([[Le.NO_HINT,null],[Le.NULL,["#a853b5",129]],[Le.SCOPE,["#d75f00",166]],[Le.NAME,["#d7875f",173]],[Le.RANGE,["#00afaf",37]],[Le.REFERENCE,["#87afff",111]],[Le.NUMBER,["#ffd700",220]],[Le.PATH,["#d75fd7",170]],[Le.URL,["#d75fd7",170]],[Le.ADDED,["#5faf00",70]],[Le.REMOVED,["#d70000",160]],[Le.CODE,["#87afff",111]],[Le.SIZE,["#ffd700",220]]]),Ls=t=>t,ky={[Le.NUMBER]:Ls({pretty:(t,e)=>`${e}`,json:t=>t}),[Le.IDENT]:Ls({pretty:(t,e)=>Vr(t,e),json:t=>St(t)}),[Le.LOCATOR]:Ls({pretty:(t,e)=>lt(t,e),json:t=>is(t)}),[Le.DESCRIPTOR]:Ls({pretty:(t,e)=>Xt(t,e),json:t=>En(t)}),[Le.RESOLUTION]:Ls({pretty:(t,{descriptor:e,locator:r})=>Fx(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:En(t),locator:e!==null?is(e):null})}),[Le.DEPENDENT]:Ls({pretty:(t,{locator:e,descriptor:r})=>Nx(t,e,r),json:({locator:t,descriptor:e})=>({locator:is(t),descriptor:En(e)})}),[Le.PACKAGE_EXTENSION]:Ls({pretty:(t,e)=>{switch(e.type){case oi.Dependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"dependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependencyMeta:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependenciesMeta",Le.CODE)} \u27A4 ${Vr(t,In(e.selector))} \u27A4 ${On(t,e.key,Le.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case oi.Dependency:return`${St(t.parentDescriptor)} > ${St(t.descriptor)}`;case oi.PeerDependency:return`${St(t.parentDescriptor)} >> ${St(t.descriptor)}`;case oi.PeerDependencyMeta:return`${St(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Le.SETTING]:Ls({pretty:(t,e)=>(t.get(e),Ku(t,On(t,e,Le.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Le.DURATION]:Ls({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),i=Math.ceil((e-r*60*1e3)/1e3);return i===0?`${r}m`:`${r}m ${i}s`}else{let r=Math.floor(e/1e3),i=e-r*1e3;return i===0?`${r}s`:`${r}s ${i}ms`}},json:t=>t}),[Le.SIZE]:Ls({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],i=r.length;for(;i>1&&e<1024**i;)i-=1;let n=1024**i,s=Math.floor(e*100/n)/100;return On(t,`${s} ${r[i-1]}`,Le.NUMBER)},json:t=>t}),[Le.PATH]:Ls({pretty:(t,e)=>On(t,M.fromPortablePath(e),Le.PATH),json:t=>M.fromPortablePath(t)})};function jl(t,e){return[e,t]}function Py(t,e,r){return t.get("enableColors")&&r&2&&(e=pp.default.bold(e)),e}function On(t,e,r){if(!t.get("enableColors"))return e;let i=tbe.get(r);if(i===null)return e;let n=typeof i=="undefined"?r:Tx.level>=3?i[0]:i[1],s=typeof n=="number"?Ox.ansi256(n):n.startsWith("#")?Ox.hex(n):Ox[n];if(typeof s!="function")throw new Error(`Invalid format type ${n}`);return s(e)}var rbe=!!process.env.KONSOLE_VERSION;function Ku(t,e,r){return t.get("enableHyperlinks")?rbe?`]8;;${r}\\${e}]8;;\\`:`]8;;${r}\x07${e}]8;;\x07`:e}function Ve(t,e,r){if(e===null)return On(t,"null",Le.NULL);if(Object.prototype.hasOwnProperty.call(ky,r))return ky[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return On(t,e,r)}function Kx(t,e,r,{separator:i=", "}={}){return[...e].map(n=>Ve(t,n,r)).join(i)}function Uu(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(ky,e))return Nv(e),ky[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function xx(t){return{Check:On(t,"\u2713","green"),Cross:On(t,"\u2718","red"),Question:On(t,"?","cyan")}}function Yl(t,{label:e,value:[r,i]}){return`${Ve(t,e,Le.CODE)}: ${Ve(t,r,i)}`}var Ts;(function(n){n.Error="error",n.Warning="warning",n.Info="info",n.Discard="discard"})(Ts||(Ts={}));function Cp(t,{configuration:e}){let r=e.get("logFilters"),i=new Map,n=new Map,s=[];for(let g of r){let f=g.get("level");if(typeof f=="undefined")continue;let h=g.get("code");typeof h!="undefined"&&i.set(h,f);let p=g.get("text");typeof p!="undefined"&&n.set(p,f);let d=g.get("pattern");typeof d!="undefined"&&s.push([o3.default.matcher(d,{contains:!0}),f])}s.reverse();let o=(g,f,h)=>{if(g===null||g===z.UNNAMED)return h;let p=n.size>0||s.length>0?(0,a3.default)(f):f;if(n.size>0){let d=n.get(p);if(typeof d!="undefined")return d!=null?d:h}if(s.length>0){for(let[d,m]of s)if(d(p))return m!=null?m:h}if(i.size>0){let d=i.get(KI(g));if(typeof d!="undefined")return d!=null?d:h}return h},a=t.reportInfo,l=t.reportWarning,c=t.reportError,u=function(g,f,h,p){switch(o(f,h,p)){case Ts.Info:a.call(g,f,h);break;case Ts.Warning:l.call(g,f!=null?f:z.UNNAMED,h);break;case Ts.Error:c.call(g,f!=null?f:z.UNNAMED,h);break}};t.reportInfo=function(...g){return u(this,...g,Ts.Info)},t.reportWarning=function(...g){return u(this,...g,Ts.Warning)},t.reportError=function(...g){return u(this,...g,Ts.Error)}}var Zt={};it(Zt,{Method:()=>Jl,RequestError:()=>z8.RequestError,del:()=>pxe,get:()=>fxe,getNetworkSettings:()=>Z8,post:()=>iP,put:()=>hxe,request:()=>xp});var q8=ie(zy()),J8=ie(require("https")),W8=ie(require("http")),tP=ie(Nn()),rP=ie(G8()),Vy=ie(require("url"));var j8=ie(require("stream")),Y8=ie(require("string_decoder"));var nt=class extends Error{constructor(e,r,i){super(r);this.reportExtra=i;this.reportCode=e}};function Axe(t){return typeof t.reportCode!="undefined"}var Xi=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,i,n=new Promise(l=>{i=l}),s=l=>{let c=i;n=new Promise(u=>{i=u}),r=l,c()},o=(l=0)=>{s(r+1)},a=async function*(){for(;r{let o=i.write(s),a;do if(a=o.indexOf(` +`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),r}};var z8=ie(zy()),V8=new Map,_8=new Map,lxe=new W8.Agent({keepAlive:!0}),cxe=new J8.Agent({keepAlive:!0});function X8(t){let e=new Vy.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),{proxy:r}}async function uxe(t){return na(_8,t,()=>T.readFilePromise(t).then(e=>(_8.set(t,e),e)))}function gxe({statusCode:t,statusMessage:e},r){let i=Ve(r,t,Le.NUMBER),n=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Ku(r,`${i}${e?` (${e})`:""}`,n)}async function _y(t,{configuration:e,customErrorMessage:r}){var i,n;try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let o=(n=r==null?void 0:r(s))!=null?n:(i=s.response.body)==null?void 0:i.error;o==null&&(s.message.startsWith("Response code")?o="The remote server failed to provide the requested resource":o=s.message),s instanceof q8.TimeoutError&&s.event==="socket"&&(o+=`(can be increased via ${Ve(e,"httpTimeout",Le.SETTING)})`);let a=new nt(z.NETWORK_ERROR,o,l=>{s.response&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Response Code",value:jl(Le.NO_HINT,gxe(s.response,e))})}`),s.request&&(l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Method",value:jl(Le.NO_HINT,s.request.options.method)})}`),l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request URL",value:jl(Le.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Redirects",value:jl(Le.NO_HINT,Kx(e,s.request.redirects,Le.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Retry Count",value:jl(Le.NO_HINT,`${Ve(e,s.request.retryCount,Le.NUMBER)} (can be increased via ${Ve(e,"httpRetry",Le.SETTING)})`)})}`)});throw a.originalError=s,a}}function Z8(t,e){let r=[...e.configuration.get("networkSettings")].sort(([o],[a])=>a.length-o.length),i={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0},n=Object.keys(i),s=typeof t=="string"?new Vy.URL(t):t;for(let[o,a]of r)if(tP.default.isMatch(s.hostname,o))for(let l of n){let c=a.get(l);c!==null&&typeof i[l]=="undefined"&&(i[l]=c)}for(let o of n)typeof i[o]=="undefined"&&(i[o]=e.configuration.get(o));return i}var Jl;(function(n){n.GET="GET",n.PUT="PUT",n.POST="POST",n.DELETE="DELETE"})(Jl||(Jl={}));async function xp(t,e,{configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o=Jl.GET}){let a=typeof t=="string"?new Vy.URL(t):t,l=Z8(a,{configuration:r});if(l.enableNetwork===!1)throw new Error(`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!tP.default.isMatch(a.hostname,r.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let u={agent:{http:l.httpProxy?rP.default.httpOverHttp(X8(l.httpProxy)):lxe,https:l.httpsProxy?rP.default.httpsOverHttp(X8(l.httpsProxy)):cxe},headers:i,method:o};u.responseType=s?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!n&&typeof e=="string"?u.body=e:u.json=e);let g=r.get("httpTimeout"),f=r.get("httpRetry"),h=r.get("enableStrictSsl"),p=l.caFilePath,{default:d}=await Promise.resolve().then(()=>ie(zy())),m=p?await uxe(p):void 0,E=d.extend(P({timeout:{socket:g},retry:f,https:{rejectUnauthorized:h,certificateAuthority:m}},u));return r.getLimit("networkConcurrency")(()=>E(a))}async function fxe(t,n){var s=n,{configuration:e,jsonResponse:r}=s,i=qr(s,["configuration","jsonResponse"]);let o=na(V8,t,()=>_y(xp(t,null,P({configuration:e},i)),{configuration:e}).then(a=>(V8.set(t,a.body),a.body)));return Buffer.isBuffer(o)===!1&&(o=await o),r?JSON.parse(o.toString()):o}async function hxe(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.PUT})),i)).body}async function iP(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.POST})),i)).body}async function pxe(t,i){var n=i,{customErrorMessage:e}=n,r=qr(n,["customErrorMessage"]);return(await _y(xp(t,null,_(P({},r),{method:Jl.DELETE})),r)).body}var Kt={};it(Kt,{PackageManager:()=>tn,detectPackageManager:()=>a9,executePackageAccessibleBinary:()=>g9,executePackageScript:()=>Uw,executePackageShellcode:()=>rD,executeWorkspaceAccessibleBinary:()=>qFe,executeWorkspaceLifecycleScript:()=>u9,executeWorkspaceScript:()=>c9,getPackageAccessibleBinaries:()=>Hw,getWorkspaceAccessibleBinaries:()=>l9,hasPackageScript:()=>GFe,hasWorkspaceScript:()=>tD,makeScriptEnv:()=>Vp,maybeExecuteWorkspaceLifecycleScript:()=>YFe,prepareExternalProject:()=>HFe});var Fp={};it(Fp,{getLibzipPromise:()=>$i,getLibzipSync:()=>vz});var yA=["number","number"],nP;(function(D){D[D.ZIP_ER_OK=0]="ZIP_ER_OK",D[D.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",D[D.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",D[D.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",D[D.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",D[D.ZIP_ER_READ=5]="ZIP_ER_READ",D[D.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",D[D.ZIP_ER_CRC=7]="ZIP_ER_CRC",D[D.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",D[D.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",D[D.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",D[D.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",D[D.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",D[D.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",D[D.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",D[D.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",D[D.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",D[D.ZIP_ER_EOF=17]="ZIP_ER_EOF",D[D.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",D[D.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",D[D.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",D[D.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",D[D.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",D[D.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",D[D.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",D[D.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",D[D.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",D[D.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",D[D.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",D[D.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",D[D.ZIP_ER_TELL=30]="ZIP_ER_TELL",D[D.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA"})(nP||(nP={}));var $8=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:nP,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,open:t.cwrap("zip_open","number",["string","number","number"]),openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...yA,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...yA,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...yA,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...yA,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...yA,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...yA,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number","number","number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...yA,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...yA,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}});var BP=null;function vz(){return BP===null&&(BP=$8(bz())),BP}async function $i(){return vz()}var jp={};it(jp,{ShellError:()=>as,execute:()=>Fw,globUtils:()=>bw});var Hp={};it(Hp,{parseResolution:()=>gw,parseShell:()=>Aw,parseSyml:()=>Ei,stringifyArgument:()=>SP,stringifyArgumentSegment:()=>xP,stringifyArithmeticExpression:()=>uw,stringifyCommand:()=>vP,stringifyCommandChain:()=>rg,stringifyCommandChainThen:()=>bP,stringifyCommandLine:()=>lw,stringifyCommandLineThen:()=>QP,stringifyEnvSegment:()=>cw,stringifyRedirectArgument:()=>Np,stringifyResolution:()=>fw,stringifyShell:()=>tg,stringifyShellLine:()=>tg,stringifySyml:()=>Qa,stringifyValueArgument:()=>ig});var kz=ie(xz());function Aw(t,e={isGlobPattern:()=>!1}){try{return(0,kz.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function tg(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:i},n)=>`${lw(r)}${i===";"?n!==t.length-1||e?";":"":" &"}`).join(" ")}function lw(t){return`${rg(t.chain)}${t.then?` ${QP(t.then)}`:""}`}function QP(t){return`${t.type} ${lw(t.line)}`}function rg(t){return`${vP(t)}${t.then?` ${bP(t.then)}`:""}`}function bP(t){return`${t.type} ${rg(t.chain)}`}function vP(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>cw(e)).join(" ")} `:""}${t.args.map(e=>SP(e)).join(" ")}`;case"subshell":return`(${tg(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"group":return`{ ${tg(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>cw(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function cw(t){return`${t.name}=${t.args[0]?ig(t.args[0]):""}`}function SP(t){switch(t.type){case"redirection":return Np(t);case"argument":return ig(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function Np(t){return`${t.subtype} ${t.args.map(e=>ig(e)).join(" ")}`}function ig(t){return t.segments.map(e=>xP(e)).join("")}function xP(t){let e=(i,n)=>n?`"${i}"`:i,r=i=>i===""?'""':i.match(/[(){}<>$|&; \t"']/)?`$'${i.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:i;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${tg(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue=="undefined"?`\${${t.name}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(i=>ig(i)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${uw(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function uw(t){let e=n=>{switch(n){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${n}"`)}},r=(n,s)=>s?`( ${n} )`:n,i=n=>r(uw(n),!["number","variable"].includes(n.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${i(t.left)} ${e(t.type)} ${i(t.right)}`}}var Rz=ie(Dz());function gw(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,Rz.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fw(t){let e="";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+="/"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var Qw=ie(w5()),b5=ie(Q5()),$De=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,v5=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],HP=class{constructor(e){this.data=e}};function S5(t){return t.match($De)?t:JSON.stringify(t)}function x5(t){return typeof t=="undefined"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>x5(t[e])):!1}function GP(t,e,r){if(t===null)return`null +`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} +`;if(typeof t=="string")return`${S5(t)} +`;if(Array.isArray(t)){if(t.length===0)return`[] +`;let i=" ".repeat(e);return` +${t.map(s=>`${i}- ${GP(s,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let i,n;t instanceof HP?(i=t.data,n=!1):(i=t,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=v5.indexOf(l),g=v5.indexOf(c);return u===-1&&g===-1?lc?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!x5(i[l])).map((l,c)=>{let u=i[l],g=S5(l),f=GP(u,e+1,!0),h=c>0||r?s:"";return f.startsWith(` +`)?`${h}${g}:${f}`:`${h}${g}: ${f}`}).join(e===0?` +`:"")||` +`;return r?` +${a}`:`${a}`}throw new Error(`Unsupported value type (${t})`)}function Qa(t){try{let e=GP(t,0,!1);return e!==` +`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}Qa.PreserveOrdering=HP;function eRe(t){return t.endsWith(` +`)||(t+=` +`),(0,b5.parse)(t)}var tRe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function rRe(t){if(tRe.test(t))return eRe(t);let e=(0,Qw.safeLoad)(t,{schema:Qw.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Ei(t){return rRe(t)}var U5=ie(jb()),H5=ie(require("os")),Kn=ie(require("stream")),G5=ie(require("util"));var as=class extends Error{constructor(e){super(e);this.name="ShellError"}};var bw={};it(bw,{fastGlobOptions:()=>D5,isBraceExpansion:()=>R5,isGlobPattern:()=>iRe,match:()=>nRe,micromatchOptions:()=>Sw});var k5=ie(gy()),P5=ie(require("fs")),vw=ie(Nn()),Sw={strictBrackets:!0},D5={onlyDirectories:!1,onlyFiles:!1};function iRe(t){if(!vw.default.scan(t,Sw).isGlob)return!1;try{vw.default.parse(t,Sw)}catch{return!1}return!0}function nRe(t,{cwd:e,baseFs:r}){return(0,k5.default)(t,_(P({},D5),{cwd:M.fromPortablePath(e),fs:SI(P5.default,new ah(r))}))}function R5(t){return vw.default.scan(t,Sw).isBrace}var F5=ie(bb()),Bo=ie(require("stream")),N5=ie(require("string_decoder")),wn;(function(i){i[i.STDIN=0]="STDIN",i[i.STDOUT=1]="STDOUT",i[i.STDERR=2]="STDERR"})(wn||(wn={}));var sc=new Set;function jP(){}function YP(){for(let t of sc)t.kill()}function L5(t,e,r,i){return n=>{let s=n[0]instanceof Bo.Transform?"pipe":n[0],o=n[1]instanceof Bo.Transform?"pipe":n[1],a=n[2]instanceof Bo.Transform?"pipe":n[2],l=(0,F5.default)(t,e,_(P({},i),{stdio:[s,o,a]}));return sc.add(l),sc.size===1&&(process.on("SIGINT",jP),process.on("SIGTERM",YP)),n[0]instanceof Bo.Transform&&n[0].pipe(l.stdin),n[1]instanceof Bo.Transform&&l.stdout.pipe(n[1],{end:!1}),n[2]instanceof Bo.Transform&&l.stderr.pipe(n[2],{end:!1}),{stdin:l.stdin,promise:new Promise(c=>{l.on("error",u=>{switch(sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),u.code){case"ENOENT":n[2].write(`command not found: ${t} +`),c(127);break;case"EACCES":n[2].write(`permission denied: ${t} +`),c(128);break;default:n[2].write(`uncaught error: ${u.message} +`),c(1);break}}),l.on("exit",u=>{sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),c(u!==null?u:129)})})}}}function T5(t){return e=>{let r=e[0]==="pipe"?new Bo.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}var Os=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},M5=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Gp=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:i,stderr:n}){let s=new Gp(null,e);return s.stdin=r,s.stdout=i,s.stderr=n,s}pipeTo(e,r=1){let i=new Gp(this,e),n=new M5;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(r&1)==1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)==2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(r.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function xw(t,e){return Gp.start(t,e)}function O5(t,e=null){let r=new Bo.PassThrough,i=new N5.StringDecoder,n="";return r.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` +`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",t(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&t(e!==null?`${e} ${s}`:s)}),r}function K5(t,{prefix:e}){return{stdout:O5(r=>t.stdout.write(`${r} +`),t.stdout.isTTY?e:null),stderr:O5(r=>t.stderr.write(`${r} +`),t.stderr.isTTY?e:null)}}var sRe=(0,G5.promisify)(setTimeout);var Fi;(function(r){r[r.Readable=1]="Readable",r[r.Writable=2]="Writable"})(Fi||(Fi={}));function j5(t,e,r){let i=new Kn.PassThrough({autoDestroy:!0});switch(t){case wn.STDIN:(e&1)==1&&r.stdin.pipe(i,{end:!1}),(e&2)==2&&r.stdin instanceof Kn.Writable&&i.pipe(r.stdin,{end:!1});break;case wn.STDOUT:(e&1)==1&&r.stdout.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stdout,{end:!1});break;case wn.STDERR:(e&1)==1&&r.stderr.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stderr,{end:!1});break;default:throw new as(`Bad file descriptor: "${t}"`)}return i}function kw(t,e={}){let r=P(P({},t),e);return r.environment=P(P({},t.environment),e.environment),r.variables=P(P({},t.variables),e.variables),r}var oRe=new Map([["cd",async([t=(0,H5.homedir)(),...e],r,i)=>{let n=v.resolve(i.cwd,M.toPortablePath(t));if(!(await r.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new as(`cd: no such file or directory: ${t}`):o})).isDirectory())throw new as(`cd: not a directory: ${t}`);return i.cwd=n,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${M.fromPortablePath(r.cwd)} +`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,i)=>i.exitCode=parseInt(t!=null?t:i.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} +`),0)],["sleep",async([t],e,r)=>{if(typeof t=="undefined")throw new as("sleep: missing operand");let i=Number(t);if(Number.isNaN(i))throw new as(`sleep: invalid time interval '${t}'`);return await sRe(1e3*i,0)}],["__ysh_run_procedure",async(t,e,r)=>{let i=r.procedures[t[0]];return await xw(i,{stdin:new Os(r.stdin),stdout:new Os(r.stdout),stderr:new Os(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let i=r.stdin,n=r.stdout,s=r.stderr,o=[],a=[],l=[],c=0;for(;t[c]!=="--";){let g=t[c++],{type:f,fd:h}=JSON.parse(g),p=B=>{switch(h){case null:case 0:o.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},d=B=>{switch(h){case null:case 1:a.push(B);break;case 2:l.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},m=Number(t[c++]),E=c+m;for(let B=c;Be.baseFs.createReadStream(v.resolve(r.cwd,M.toPortablePath(t[B]))));break;case"<<<":p(()=>{let b=new Kn.PassThrough;return process.nextTick(()=>{b.write(`${t[B]} +`),b.end()}),b});break;case"<&":p(()=>j5(Number(t[B]),1,r));break;case">":case">>":{let b=v.resolve(r.cwd,M.toPortablePath(t[B]));d(b==="/dev/null"?new Kn.Writable({autoDestroy:!0,emitClose:!0,write(R,H,L){setImmediate(L)}}):e.baseFs.createWriteStream(b,f===">>"?{flags:"a"}:void 0))}break;case">&":d(j5(Number(t[B]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new Kn.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new Kn.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new Kn.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await xw(Yp(t.slice(c+1),e,r),{stdin:new Os(i),stdout:new Os(n),stderr:new Os(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function aRe(t,e,r){let i=[],n=new Kn.PassThrough;return n.on("data",s=>i.push(s)),await Pw(t,e,kw(r,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function Y5(t,e,r){let i=t.map(async s=>{let o=await oc(s.args,e,r);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function Dw(t){return t.match(/[^ \r\n\t]+/g)||[]}async function q5(t,e,r,i,n=i){switch(t.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(t.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=Dw(s);for(let a=0;a=0&&st+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)};async function qp(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let i=[];await q5(_(P({},t),{quoted:!0}),e,r,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?qp({type:"variable",name:i.join(" ")},e,r):qp({type:"number",value:n},e,r)}else return ARe[t.type](await qp(t.left,e,r),await qp(t.right,e,r))}async function oc(t,e,r){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p=="undefined"&&i.set(h,p=[]),p.push(f)};for(let u of t){let g=!1;switch(u.type){case"redirection":{let f=await oc(u.args,e,r);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await aRe(f.shell,e,r);if(f.quoted)o(h);else{let p=Dw(h);for(let d=0;d0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function Yp(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let i=M.fromPortablePath(r.cwd),n=r.environment;typeof n.PWD!="undefined"&&(n=_(P({},n),{PWD:i}));let[s,...o]=t;if(s==="command")return L5(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a=="undefined")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return T5(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=r;r.stdin=l,r.stdout=c,r.stderr=u;try{return await a(o,e,r)}finally{r.stdin=g,r.stdout=f,r.stderr=h}})}function lRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,kw(r,{stdin:n}));return{stdin:n,promise:s}}}function cRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,r);return{stdin:n,promise:s}}}function J5(t,e,r,i){if(e.length===0)return t;{let n;do n=String(Math.random());while(Object.prototype.hasOwnProperty.call(i.procedures,n));return i.procedures=P({},i.procedures),i.procedures[n]=t,Yp([...e,"__ysh_run_procedure",n],r,i)}}async function W5(t,e,r){let i=t,n=null,s=null;for(;i;){let o=i.then?P({},r):r,a;switch(i.type){case"command":{let l=await oc(i.args,e,r),c=await Y5(i.envs,e,r);a=i.envs.length?Yp(l,e,kw(o,{environment:c})):Yp(l,e,o)}break;case"subshell":{let l=await oc(i.args,e,r),c=lRe(i.subshell,e,o);a=J5(c,l,e,o)}break;case"group":{let l=await oc(i.args,e,r),c=cRe(i.group,e,o);a=J5(c,l,e,o)}break;case"envs":{let l=await Y5(i.envs,e,r);o.environment=P(P({},o.environment),l),a=Yp(["true"],e,o)}break}if(typeof a=="undefined")throw new Error("Assertion failed: An action should have been generated");if(n===null)s=xw(a,{stdin:new Os(o.stdin),stdout:new Os(o.stdout),stderr:new Os(o.stderr)});else{if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":s=s.pipeTo(a,wn.STDOUT);break;case"|&":s=s.pipeTo(a,wn.STDOUT|wn.STDERR);break}}i.then?(n=i.then.type,i=i.then.chain):i=null}if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await s.run()}async function uRe(t,e,r,{background:i=!1}={}){function n(s){let o=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=o[s%o.length];return U5.default.hex(a)}if(i){let s=r.nextBackgroundJobIndex++,o=n(s),a=`[${s}]`,l=o(a),{stdout:c,stderr:u}=K5(r,{prefix:l});return r.backgroundJobs.push(W5(t,e,kw(r,{stdout:c,stderr:u})).catch(g=>u.write(`${g.message} +`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${l}, '${o(rg(t))}' has ended +`)})),0}return await W5(t,e,r)}async function gRe(t,e,r,{background:i=!1}={}){let n,s=a=>{n=a,r.variables["?"]=String(a)},o=async a=>{try{return await uRe(a.chain,e,r,{background:i&&typeof a.then=="undefined"})}catch(l){if(!(l instanceof as))throw l;return r.stderr.write(`${l.message} +`),1}};for(s(await o(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":n===0&&s(await o(t.then.line));break;case"||":n!==0&&s(await o(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return n}async function Pw(t,e,r){let i=r.backgroundJobs;r.backgroundJobs=[];let n=0;for(let{command:s,type:o}of t){if(n=await gRe(s,e,r,{background:o==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(n)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=i,n}function z5(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>Rw(e));case"arithmetic":return qP(t.arithmetic);case"shell":return JP(t.shell);default:return!1}}function Rw(t){switch(t.type){case"redirection":return t.args.some(e=>Rw(e));case"argument":return t.segments.some(e=>z5(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function qP(t){switch(t.type){case"variable":return z5(t);case"number":return!1;default:return qP(t.left)||qP(t.right)}}function JP(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let i;switch(r.type){case"subshell":i=JP(r.subshell);break;case"command":i=r.envs.some(n=>n.args.some(s=>Rw(s)))||r.args.some(n=>Rw(n));break}if(i)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function Fw(t,e=[],{baseFs:r=new Wt,builtins:i={},cwd:n=M.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=bw}={}){let g={};for(let[p,d]of Object.entries(s))typeof d!="undefined"&&(g[p]=d);let f=new Map(oRe);for(let[p,d]of Object.entries(i))f.set(p,d);o===null&&(o=new Kn.PassThrough,o.end());let h=Aw(t,u);if(!JP(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let d=p.chain;for(;d.then;)d=d.then.chain;d.type==="command"&&(d.args=d.args.concat(e.map(m=>({type:"argument",segments:[{type:"text",text:m}]}))))}return await Pw(h,{args:e,baseFs:r,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var s9=ie(ZP()),o9=ie(Wp()),cc=ie(require("stream"));var J6=ie(Or());var zp=class{supportsDescriptor(e,r){return!!(e.range.startsWith(zp.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(zp.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[i.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.getWorkspaceByCwd(e.reference.slice(zp.protocol.length));return _(P({},e),{version:i.manifest.version||"0.0.0",languageName:"unknown",linkType:gt.SOFT,conditions:null,dependencies:new Map([...i.manifest.dependencies,...i.manifest.devDependencies]),peerDependencies:new Map([...i.manifest.peerDependencies]),dependenciesMeta:i.manifest.dependenciesMeta,peerDependenciesMeta:i.manifest.peerDependenciesMeta,bin:i.manifest.bin})}},Yr=zp;Yr.protocol="workspace:";var qt={};it(qt,{SemVer:()=>j6.SemVer,satisfiesWithPrereleases:()=>lc,validRange:()=>Us});var Lw=ie(Or()),j6=ie(Or()),Y6=new Map;function lc(t,e,r=!1){if(!t)return!1;let i=`${e}${r}`,n=Y6.get(i);if(typeof n=="undefined")try{n=new Lw.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{Y6.set(i,n||null)}else if(n===null)return!1;let s;try{s=new Lw.default.SemVer(t,n)}catch(o){return!1}return n.test(s)?!0:(s.prerelease&&(s.prerelease=[]),n.set.some(o=>{for(let a of o)a.semver.prerelease&&(a.semver.prerelease=[]);return o.every(a=>a.test(s))}))}var q6=new Map;function Us(t){if(t.indexOf(":")!==-1)return null;let e=q6.get(t);if(typeof e!="undefined")return e;try{e=new Lw.default.Range(t)}catch{e=null}return q6.set(t,e),e}var vA=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new Wt}={}){let i=v.join(e,"package.json");return await r.existsPromise(i)?await vA.fromFile(i,{baseFs:r}):null}static async find(e,{baseFs:r}={}){let i=await vA.tryFind(e,{baseFs:r});if(i===null)throw new Error("Manifest not found");return i}static async fromFile(e,{baseFs:r=new Wt}={}){let i=new vA;return await i.loadFile(e,{baseFs:r}),i}static fromText(e){let r=new vA;return r.loadFromText(e),r}static isManifestFieldCompatible(e,r){if(e===null)return!0;let i=!0,n=!1;for(let s of e)if(s[0]==="!"){if(n=!0,r===s.slice(1))return!1}else if(i=!1,s===r)return!0;return n&&i}loadFromText(e){let r;try{r=JSON.parse(z6(e)||"{}")}catch(i){throw i.message+=` (when parsing ${e})`,i}this.load(r),this.indent=W6(e)}async loadFile(e,{baseFs:r=new Wt}){let i=await r.readFilePromise(e,"utf8"),n;try{n=JSON.parse(z6(i)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(n),this.indent=W6(i)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let i=[];if(this.name=null,typeof e.name=="string")try{this.name=In(e.name)}catch(s){i.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let s=[];this.os=s;for(let o of e.os)typeof o!="string"?i.push(new Error("Parsing failed for the 'os' field")):s.push(o)}else this.os=null;if(Array.isArray(e.cpu)){let s=[];this.cpu=s;for(let o of e.cpu)typeof o!="string"?i.push(new Error("Parsing failed for the 'cpu' field")):s.push(o)}else this.cpu=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=en(e.main):this.main=null,typeof e.module=="string"?this.module=en(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=en(e.browser);else{this.browser=new Map;for(let[s,o]of Object.entries(e.browser))this.browser.set(en(s),typeof o=="string"?en(o):o)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,en(e.bin)):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[s,o]of Object.entries(e.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.bin.set(s,en(o))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[s,o]of Object.entries(e.scripts)){if(typeof o!="string"){i.push(new Error(`Invalid script definition for '${s}'`));continue}this.scripts.set(s,o)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[s,o]of Object.entries(e.dependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=In(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[s,o]of Object.entries(e.devDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=In(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.devDependencies.set(l.identHash,l)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[s,o]of Object.entries(e.peerDependencies)){let a;try{a=In(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}(typeof o!="string"||!o.startsWith(Yr.protocol)&&!Us(o))&&(i.push(new Error(`Invalid dependency range for '${s}'`)),o="*");let l=Yt(a,o);this.peerDependencies.set(l.identHash,l)}typeof e.workspaces=="object"&&e.workspaces.nohoist&&i.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let n=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let s of n){if(typeof s!="string"){i.push(new Error(`Invalid workspace definition for '${s}'`));continue}this.workspaceDefinitions.push({pattern:s})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[s,o]of Object.entries(e.dependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}`));continue}let a=pA(s),l=this.ensureDependencyMeta(a),c=Tw(o.built,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid built meta field for '${s}'`));continue}let u=Tw(o.optional,{yamlCompatibilityMode:r});if(u===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}let g=Tw(o.unplugged,{yamlCompatibilityMode:r});if(g===null){i.push(new Error(`Invalid unplugged meta field for '${s}'`));continue}Object.assign(l,{built:c,optional:u,unplugged:g})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[s,o]of Object.entries(e.peerDependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}'`));continue}let a=pA(s),l=this.ensurePeerDependencyMeta(a),c=Tw(o.optional,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}Object.assign(l,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[s,o]of Object.entries(e.resolutions)){if(typeof o!="string"){i.push(new Error(`Invalid resolution entry for '${s}'`));continue}try{this.resolutions.push({pattern:gw(s),reference:o})}catch(a){i.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let s of e.files){if(typeof s!="string"){i.push(new Error(`Invalid files entry for '${s}'`));continue}this.files.add(s)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=en(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=en(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=en(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[s,o]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(en(s),typeof o=="string"?en(o):o)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,en(e.publishConfig.bin)]]):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[s,o]of Object.entries(e.publishConfig.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.publishConfig.bin.set(s,en(o))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let s of e.publishConfig.executableFiles){if(typeof s!="string"){i.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(en(s))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let s of Object.keys(e.installConfig))s==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:i.push(new Error("Invalid hoisting limits definition")):s=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:i.push(new Error("Invalid selfReferences definition, must be a boolean value")):i.push(new Error(`Unrecognized installConfig key: ${s}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[s,o]of Object.entries(e.optionalDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=In(s)}catch(g){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l);let c=Yt(a,"unknown"),u=this.ensureDependencyMeta(c);Object.assign(u,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=i}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(V6("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(V6("cpu",this.cpu)),e.length>0?e.join(" & "):null}isCompatibleWithOS(e){return vA.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return vA.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if(e.range!=="unknown"&&!J6.default.valid(e.range))throw new Error(`Invalid meta field range for '${En(e)}'`);let r=St(e),i=e.range!=="unknown"?e.range:null,n=this.dependenciesMeta.get(r);n||this.dependenciesMeta.set(r,n=new Map);let s=n.get(i);return s||n.set(i,s={}),s}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${En(e)}'`);let r=St(e),i=this.peerDependenciesMeta.get(r);return i||this.peerDependenciesMeta.set(r,i={}),i}setRawField(e,r,{after:i=[]}={}){let n=new Set(i.filter(s=>Object.prototype.hasOwnProperty.call(this.raw,s)));if(n.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let s=this.raw,o=this.raw={},a=!1;for(let l of Object.keys(s))o[l]=s[l],a||(n.delete(l),n.size===0&&(o[e]=r,a=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){var s;if(Object.assign(e,this.raw),this.name!==null?e.name=St(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let o=this.browser;typeof o=="string"?e.browser=o:o instanceof Map&&(e.browser=Object.assign({},...Array.from(o.keys()).sort().map(a=>({[a]:o.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(o=>({[o]:this.bin.get(o)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces=_(P({},this.raw.workspaces),{packages:this.workspaceDefinitions.map(({pattern:o})=>o)}):e.workspaces=this.workspaceDefinitions.map(({pattern:o})=>o):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let o of this.dependencies.values()){let a=this.dependenciesMeta.get(St(o)),l=!1;if(r&&a){let c=a.get(null);c&&c.optional&&(l=!0)}l?n.push(o):i.push(o)}i.length>0?e.dependencies=Object.assign({},...Ou(i).map(o=>({[St(o)]:o.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...Ou(n).map(o=>({[St(o)]:o.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...Ou(this.devDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...Ou(this.peerDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[o,a]of gn(this.dependenciesMeta.entries(),([l,c])=>l))for(let[l,c]of gn(a.entries(),([u,g])=>u!==null?`0${u}`:"1")){let u=l!==null?En(Yt(In(o),l)):o,g=P({},c);r&&l===null&&delete g.optional,Object.keys(g).length!==0&&(e.dependenciesMeta[u]=g)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...gn(this.peerDependenciesMeta.entries(),([o,a])=>o).map(([o,a])=>({[o]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:o,reference:a})=>({[fw(o)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(s=e.scripts)!=null||(e.scripts={});for(let o of Object.keys(e.scripts))this.scripts.has(o)||delete e.scripts[o];for(let[o,a]of this.scripts.entries())e.scripts[o]=a}else delete e.scripts;return e}},Ze=vA;Ze.fileName="package.json",Ze.allDependencies=["dependencies","devDependencies","peerDependencies"],Ze.hardDependencies=["dependencies","devDependencies"];function W6(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function z6(t){return t.charCodeAt(0)===65279?t.slice(1):t}function en(t){return t.replace(/\\/g,"/")}function Tw(t,{yamlCompatibilityMode:e}){return e?Kv(t):typeof t=="undefined"||typeof t=="boolean"?t:null}function _6(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let i=r%2==0?"":"!",n=e.slice(r);return`${i}${t}=${n}`}function V6(t,e){return e.length===1?_6(t,e[0]):`(${e.map(r=>_6(t,r)).join(" | ")})`}var e9=ie($6()),Ow=ie(ml());var t9=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],r9=80,NFe=new Set([z.FETCH_NOT_CACHED,z.UNUSED_CACHE_ENTRY]),LFe=5,SA=Ow.default.GITHUB_ACTIONS?{start:t=>`::group::${t} +`,end:t=>`::endgroup:: +`}:Ow.default.TRAVIS?{start:t=>`travis_fold:start:${t} +`,end:t=>`travis_fold:end:${t} +`}:Ow.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r${t} +`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r`}:null,i9=new Date,TFe=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,MFe=t=>t,Kw=MFe({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),OFe=TFe&&Object.keys(Kw).find(t=>{let e=Kw[t];return!(e.date&&(e.date[0]!==i9.getDate()||e.date[1]!==i9.getMonth()+1))})||"default";function n9(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let n=KI(t===null?0:t);return!r&&t===null?Ve(e,n,"grey"):n}function eD(t,{configuration:e,json:r}){let i=n9(t,{configuration:e,json:r});if(!i||t===null||t===z.UNNAMED)return i;let n=z[t],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return Ku(e,i,s)}var Fe=class extends Xi{constructor({configuration:e,stdout:r,json:i=!1,includeFooter:n=!0,includeLogs:s=!i,includeInfos:o=s,includeWarnings:a=s,forgettableBufferSize:l=LFe,forgettableNames:c=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.forgettableLines=[];Cp(this,{configuration:e}),this.configuration=e,this.forgettableBufferSize=l,this.forgettableNames=new Set([...c,...NFe]),this.includeFooter=n,this.includeInfos=o,this.includeWarnings=a,this.json=i,this.stdout=r;let u=this.configuration.get("progressBarStyle")||OFe;if(!Object.prototype.hasOwnProperty.call(Kw,u))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=Kw[u];let g="\u27A4 YN0000: \u250C ".length,f=Math.max(0,Math.min(process.stdout.columns-g,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*f/80)}static async start(e,r){let i=new this(e),n=process.emitWarning;process.emitWarning=(s,o)=>{if(typeof s!="string"){let l=s;s=l.message,o=o!=null?o:l.name}let a=typeof o!="undefined"?`${o}: ${s}`:s;i.reportWarning(z.UNNAMED,a)};try{await r(i)}catch(s){i.reportExceptionOnce(s)}finally{await i.finalize(),process.emitWarning=n}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){this.cacheHitCount+=1}reportCacheMiss(e,r){this.lastCacheMiss=e,this.cacheMissCount+=1,typeof r!="undefined"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(z.FETCH_NOT_CACHED,r)}startTimerSync(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startTimerPromise(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return await s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startCacheReport(e){let r=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await e()}catch(i){throw this.reportExceptionOnce(i),i}finally{r!==null&&this.reportCacheChanges(r)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(e,r){if(!this.includeInfos)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"",s=`${Ve(this.configuration,"\u27A4","blueBright")} ${n}${this.formatIndent()}${r}`;if(this.json)this.reportJson({type:"info",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r});else if(this.forgettableNames.has(e))if(this.forgettableLines.push(s),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(s,{truncate:!0});else this.writeLineWithForgettableReset(s)}reportWarning(e,r){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"warning",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","yellowBright")} ${n}${this.formatIndent()}${r}`)}reportError(e,r){this.errorCount+=1,this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"error",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","redBright")} ${n}${this.formatIndent()}${r}`,{truncate:!1})}reportProgress(e){let r=!1,i=Promise.resolve().then(async()=>{let s={progress:0,title:void 0};this.progress.set(e,{definition:s,lastScaledSize:-1}),this.refreshProgress(-1);for await(let{progress:o,title:a}of e)r||s.progress===o&&s.title===a||(s.progress=o,s.title=a,this.refreshProgress());n()}),n=()=>{r||(r=!0,this.progress.delete(e),this.refreshProgress(1))};return _(P({},i),{stop:n})}reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(e)}`)}async finalize(){if(!this.includeFooter)return;let e="";this.errorCount>0?e="Failed with errors":this.warningCount>0?e="Done with warnings":e="Done";let r=Ve(this.configuration,Date.now()-this.startTime,Le.DURATION),i=this.configuration.get("enableTimers")?`${e} in ${r}`:e;this.errorCount>0?this.reportError(z.UNNAMED,i):this.warningCount>0?this.reportWarning(z.UNNAMED,i):this.reportInfo(z.UNNAMED,i)}writeLine(e,{truncate:r}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(e,{truncate:r})} +`),this.writeProgress()}writeLineWithForgettableReset(e,{truncate:r}={}){this.forgettableLines=[],this.writeLine(e,{truncate:r})}writeLines(e,{truncate:r}={}){this.clearProgress({delta:e.length});for(let i of e)this.stdout.write(`${this.truncate(i,{truncate:r})} +`);this.writeProgress()}reportCacheChanges({cacheHitCount:e,cacheMissCount:r}){let i=this.cacheHitCount-e,n=this.cacheMissCount-r;if(i===0&&n===0)return;let s="";this.cacheHitCount>1?s+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?s+=" - one package was already cached":s+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?s+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(s+=`, one had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?s+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(s+=` - one package had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`),this.reportInfo(z.FETCH_NOT_CACHED,s)}commit(){let e=this.uncommitted;this.uncommitted=new Set;for(let r of e)r.committed=!0,r.action()}clearProgress({delta:e=0,clear:r=!1}){!this.configuration.get("enableProgressBars")||this.json||this.progress.size+e>0&&(this.stdout.write(`[${this.progress.size+e}A`),(e>0||r)&&this.stdout.write(""))}writeProgress(){if(!this.configuration.get("enableProgressBars")||this.json||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let e=Date.now();e-this.progressTime>r9&&(this.progressFrame=(this.progressFrame+1)%t9.length,this.progressTime=e);let r=t9[this.progressFrame];for(let i of this.progress.values()){let n=this.progressStyle.chars[0].repeat(i.lastScaledSize),s=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-i.lastScaledSize),o=this.formatName(null),a=o?`${o}: `:"";this.stdout.write(`${Ve(this.configuration,"\u27A4","blueBright")} ${a}${r} ${n}${s} +`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress()},r9)}refreshProgress(e=0){let r=!1;if(this.progress.size===0)r=!0;else for(let i of this.progress.values()){let n=Math.trunc(this.progressMaxScaledSize*i.definition.progress),s=i.lastScaledSize;if(i.lastScaledSize=n,n!==s){r=!0;break}}r&&(this.clearProgress({delta:e}),this.writeProgress())}truncate(e,{truncate:r}={}){return this.configuration.get("enableProgressBars")||(r=!1),typeof r=="undefined"&&(r=this.configuration.get("preferTruncatedLines")),r&&(e=(0,e9.default)(e,0,process.stdout.columns-1)),e}formatName(e){return n9(e,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Zr="3.1.0";var tn;(function(n){n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm"})(tn||(tn={}));async function ba(t,e,r,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await T.writeFilePromise(v.format({dir:t,name:e,ext:".cmd"}),n)}await T.writeFilePromise(v.join(t,e),`#!/bin/sh +exec "${r}" ${i.map(n=>`'${n.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" +`,{mode:493})}async function a9(t){let e=await Ze.tryFind(t);if(e==null?void 0:e.packageManager){let i=Qy(e.packageManager);if(i==null?void 0:i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":return{packageManager:Number(s)===1?tn.Yarn1:tn.Yarn2,reason:n};case"npm":return{packageManager:tn.Npm,reason:n};case"pnpm":return{packageManager:tn.Pnpm,reason:n}}}}let r;try{r=await T.readFilePromise(v.join(t,wt.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:tn.Yarn2,reason:'"__metadata" key found in yarn.lock'}:{packageManager:tn.Yarn1,reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:T.existsSync(v.join(t,"package-lock.json"))?{packageManager:tn.Npm,reason:`found npm's "package-lock.json" lockfile`}:T.existsSync(v.join(t,"pnpm-lock.yaml"))?{packageManager:tn.Pnpm,reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Vp({project:t,locator:e,binFolder:r,lifecycleScript:i}){var l,c;let n={};for(let[u,g]of Object.entries(process.env))typeof g!="undefined"&&(n[u.toLowerCase()!=="path"?u:"PATH"]=g);let s=M.fromPortablePath(r);n.BERRY_BIN_FOLDER=M.fromPortablePath(s);let o=process.env.COREPACK_ROOT?M.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([ba(r,"node",process.execPath),...Zr!==null?[ba(r,"run",process.execPath,[o,"run"]),ba(r,"yarn",process.execPath,[o]),ba(r,"yarnpkg",process.execPath,[o]),ba(r,"node-gyp",process.execPath,[o,"run","--top-level","node-gyp"])]:[]]),t&&(n.INIT_CWD=M.fromPortablePath(t.configuration.startingCwd),n.PROJECT_CWD=M.fromPortablePath(t.cwd)),n.PATH=n.PATH?`${s}${M.delimiter}${n.PATH}`:`${s}`,n.npm_execpath=`${s}${M.sep}yarn`,n.npm_node_execpath=`${s}${M.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let u=t.tryWorkspaceByLocator(e),g=u?(l=u.manifest.version)!=null?l:"":(c=t.storedPackages.get(e.locatorHash).version)!=null?c:"";n.npm_package_name=St(e),n.npm_package_version=g}let a=Zr!==null?`yarn/${Zr}`:`yarn/${mu("@yarnpkg/core").version}-core`;return n.npm_config_user_agent=`${a} npm/? node/${process.versions.node} ${process.platform} ${process.arch}`,i&&(n.npm_lifecycle_event=i),t&&await t.configuration.triggerHook(u=>u.setupScriptEnvironment,t,n,async(u,g,f)=>await ba(r,kr(u),g,f)),n}var KFe=2,UFe=(0,o9.default)(KFe);async function HFe(t,e,{configuration:r,report:i,workspace:n=null,locator:s=null}){await UFe(async()=>{await T.mktempPromise(async o=>{let a=v.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=r.getSubprocessStreams(a,{prefix:M.fromPortablePath(t),report:i}),g=s&&Eo(s)?lp(s):s,f=g?is(g):"an external project";c.write(`Packing ${f} from sources +`);let h=await a9(t),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason} + +`),p=h.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn + +`),p=tn.Yarn2),await T.mktempPromise(async d=>{let m=await Vp({binFolder:d}),B=new Map([[tn.Yarn1,async()=>{let R=n!==null?["workspace",n]:[],H=await to("yarn",["set","version","classic","--only-if-needed"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;await T.appendFilePromise(v.join(t,".npmignore"),`/.yarn +`),c.write(` +`);let L=await to("yarn",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(L.code!==0)return L.code;c.write(` +`);let K=await to("yarn",[...R,"pack","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return K.code!==0?K.code:0}],[tn.Yarn2,async()=>{let R=n!==null?["workspace",n]:[];m.YARN_ENABLE_INLINE_BUILDS="1";let H=v.join(t,wt.lockfile);await T.existsPromise(H)||await T.writeFilePromise(H,"");let L=await to("yarn",[...R,"pack","--install-if-needed","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return L.code!==0?L.code:0}],[tn.Npm,async()=>{if(n!==null){let A=new cc.PassThrough,V=Cu(A);A.pipe(c,{end:!1});let W=await to("npm",["--version"],{cwd:t,env:m,stdin:l,stdout:A,stderr:u,end:Pn.Never});if(A.end(),W.code!==0)return c.end(),u.end(),W.code;let X=(await V).toString().trim();if(!lc(X,">=7.x")){let F=Io(null,"npm"),D=Yt(F,X),he=Yt(F,">=7.x");throw new Error(`Workspaces aren't supported by ${Xt(r,D)}; please upgrade to ${Xt(r,he)} (npm has been detected as the primary package manager for ${Ve(r,t,Le.PATH)})`)}}let R=n!==null?["--workspace",n]:[];delete m.npm_config_user_agent;let H=await to("npm",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;let L=new cc.PassThrough,K=Cu(L);L.pipe(c);let J=await to("npm",["pack","--silent",...R],{cwd:t,env:m,stdin:l,stdout:L,stderr:u});if(J.code!==0)return J.code;let ne=(await K).toString().trim().replace(/^.*\n/s,""),q=v.resolve(t,M.toPortablePath(ne));return await T.renamePromise(q,e),0}]]).get(p);if(typeof B=="undefined")throw new Error("Assertion failed: Unsupported workflow");let b=await B();if(!(b===0||typeof b=="undefined"))throw T.detachTemp(o),new nt(z.PACKAGE_PREPARATION_FAILED,`Packing the package failed (exit code ${b}, logs can be found here: ${Ve(r,a,Le.PATH)})`)})})})}async function GFe(t,e,{project:r}){let i=r.tryWorkspaceByLocator(t);if(i!==null)return tD(i,e);let n=r.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r.configuration,t)} not found in the project`);return await Jn.openPromise(async s=>{let o=r.configuration,a=r.configuration.getLinkers(),l={project:r,report:new Fe({stdout:new cc.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${lt(r.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new Ft(u,{baseFs:s});return(await Ze.find(Se.dot,{baseFs:g})).scripts.has(e)},{libzip:await $i()})}async function Uw(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await A9(t,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f=="undefined")return 1;let h=async()=>await Fw(f,r,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(d=>d.wrapScriptExecution,h,n,t,e,{script:f,args:r,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function rD(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{env:c,cwd:u}=await A9(t,{project:n,binFolder:l,cwd:i});return await Fw(e,r,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function jFe(t,{binFolder:e,cwd:r,lifecycleScript:i}){let n=await Vp({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:i});return await Promise.all(Array.from(await l9(t),([s,[,o]])=>ba(e,kr(s),process.execPath,[o]))),typeof r=="undefined"&&(r=v.dirname(await T.realpathPromise(v.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:n,cwd:r}}async function A9(t,{project:e,binFolder:r,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(t);if(s!==null)return jFe(s,{binFolder:r,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(t.locatorHash);if(!o)throw new Error(`Package for ${lt(e.configuration,t)} not found in the project`);return await Jn.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Fe({stdout:new cc.PassThrough,configuration:l})},g=c.find(m=>m.supportsPackage(o,u));if(!g)throw new Error(`The package ${lt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await Vp({project:e,locator:t,binFolder:r,lifecycleScript:n});await Promise.all(Array.from(await Hw(t,{project:e}),([m,[,E]])=>ba(r,kr(m),process.execPath,[E])));let h=await g.findPackageLocation(o,u),p=new Ft(h,{baseFs:a}),d=await Ze.find(Se.dot,{baseFs:p});return typeof i=="undefined"&&(i=h),{manifest:d,binFolder:r,env:f,cwd:i}},{libzip:await $i()})}async function c9(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o}){return await Uw(t.anchoredLocator,e,r,{cwd:i,project:t.project,stdin:n,stdout:s,stderr:o})}function tD(t,e){return t.manifest.scripts.has(e)}async function u9(t,e,{cwd:r,report:i}){let{configuration:n}=t.project,s=null;await T.mktempPromise(async o=>{let a=v.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${M.fromPortablePath(t.cwd)}") +`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:lt(n,t.anchoredLocator),header:l});i.reportInfo(z.LIFECYCLE_SCRIPT,`Calling the "${e}" lifecycle script`);let g=await c9(t,e,[],{cwd:r,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw T.detachTemp(o),new nt(z.LIFECYCLE_SCRIPT,`${(0,s9.default)(e)} script failed (exit code ${Ve(n,g,Le.NUMBER)}, logs can be found here: ${Ve(n,a,Le.PATH)}); run ${Ve(n,`yarn ${e}`,Le.CODE)} to investigate`)})}async function YFe(t,e,r){tD(t,e)&&await u9(t,e,r)}async function Hw(t,{project:e}){let r=e.configuration,i=new Map,n=e.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r,t)} not found in the project`);let s=new cc.Writable,o=r.getLinkers(),a={project:e,report:new Fe({configuration:r,stdout:s})},l=new Set([t.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${Xt(r,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return kl.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return kl.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return kl.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===kl.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin)i.set(h,[g,M.fromPortablePath(v.resolve(f,p))])}return i}async function l9(t){return await Hw(t.anchoredLocator,{project:t.project})}async function g9(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await Hw(t,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${lt(n.configuration,t)}`);return await T.mktempPromise(async g=>{let[,f]=u,h=await Vp({project:n,locator:t,binFolder:g});await Promise.all(Array.from(c,([d,[,m]])=>ba(h.BERRY_BIN_FOLDER,kr(d),process.execPath,[m])));let p;try{p=await to(process.execPath,[...l,f,...r],{cwd:i,env:h,stdin:s,stdout:o,stderr:a})}finally{await T.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function qFe(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await g9(t.anchoredLocator,e,r,{project:t.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var Ai={};it(Ai,{convertToZip:()=>lTe,extractArchiveTo:()=>uTe,makeArchiveFromDirectory:()=>ATe});var d_=ie(require("stream")),C_=ie(ZV());var u_=ie(require("os")),g_=ie(c_()),f_=ie(require("worker_threads")),ER=class{constructor(e){this.source=e;this.pool=[];this.queue=new g_.default({concurrency:Math.max(1,(0,u_.cpus)().length)});let r=setTimeout(()=>{if(!(this.queue.size!==0||this.queue.pending!==0)){for(let i of this.pool)i.terminate();this.pool=[]}},1e3).unref();this.queue.on("idle",()=>{r.refresh()})}run(e){return this.queue.add(()=>{var i;let r=(i=this.pool.pop())!=null?i:new f_.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return r.ref(),new Promise((n,s)=>{let o=a=>{a!==0&&s(new Error(`Worker exited with code ${a}`))};r.once("message",a=>{this.pool.push(r),r.unref(),r.off("error",s),r.off("exit",o),n(a)}),r.once("error",s),r.once("exit",o),r.postMessage(e)})})}};var m_=ie(p_());async function ATe(t,{baseFs:e=new Wt,prefixPath:r=Se.root,compressionLevel:i,inMemory:n=!1}={}){let s=await $i(),o;if(n)o=new Jr(null,{libzip:s,level:i});else{let l=await T.mktempPromise(),c=v.join(l,"archive.zip");o=new Jr(c,{create:!0,libzip:s,level:i})}let a=v.resolve(Se.root,r);return await o.copyPromise(a,t,{baseFs:e,stableTime:!0,stableSort:!0}),o}var I_;async function lTe(t,e){let r=await T.mktempPromise(),i=v.join(r,"archive.zip");return I_||(I_=new ER((0,m_.getContent)())),await I_.run({tmpFile:i,tgz:t,opts:e}),new Jr(i,{libzip:await $i(),level:e.compressionLevel})}async function*cTe(t){let e=new C_.default.Parse,r=new d_.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{r.write(i)}),e.on("error",i=>{r.destroy(i)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let i of r){let n=i;yield n,n.resume()}}async function uTe(t,e,{stripComponents:r=0,prefixPath:i=Se.dot}={}){var s,o;function n(a){if(a.path[0]==="/")return!0;let l=a.path.split(/\//g);return!!(l.some(c=>c==="..")||l.length<=r)}for await(let a of cTe(t)){if(n(a))continue;let l=v.normalize(M.toPortablePath(a.path)).replace(/\/$/,"").split(/\//g);if(l.length<=r)continue;let c=l.slice(r).join("/"),u=v.join(i,c),g=420;switch((a.type==="Directory"||(((s=a.mode)!=null?s:0)&73)!=0)&&(g|=73),a.type){case"Directory":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.mkdirSync(u,{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.writeFileSync(u,await Cu(a),{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.symlinkSync(a.linkpath,u),(o=e.lutimesSync)==null||o.call(e,u,mr.SAFE_TIME,mr.SAFE_TIME);break}}return e}var Hs={};it(Hs,{emitList:()=>gTe,emitTree:()=>b_,treeNodeToJson:()=>Q_,treeNodeToTreeify:()=>B_});var w_=ie(y_());function B_(t,{configuration:e}){let r={},i=(n,s)=>{let o=Array.isArray(n)?n.entries():Object.entries(n);for(let[a,{label:l,value:c,children:u}]of o){let g=[];typeof l!="undefined"&&g.push(Py(e,l,Gl.BOLD)),typeof c!="undefined"&&g.push(Ve(e,c[0],c[1])),g.length===0&&g.push(Py(e,`${a}`,Gl.BOLD));let f=g.join(": "),h=s[f]={};typeof u!="undefined"&&i(u,h)}};if(typeof t.children=="undefined")throw new Error("The root node must only contain children");return i(t.children,r),r}function Q_(t){let e=r=>{var s;if(typeof r.children=="undefined"){if(typeof r.value=="undefined")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Uu(r.value[0],r.value[1])}let i=Array.isArray(r.children)?r.children.entries():Object.entries((s=r.children)!=null?s:{}),n=Array.isArray(r.children)?[]:{};for(let[o,a]of i)n[o]=e(a);return typeof r.value=="undefined"?n:{value:Uu(r.value[0],r.value[1]),children:n}};return e(t)}function gTe(t,{configuration:e,stdout:r,json:i}){let n=t.map(s=>({value:s}));b_({children:n},{configuration:e,stdout:r,json:i})}function b_(t,{configuration:e,stdout:r,json:i,separators:n=0}){var o;if(i){let a=Array.isArray(t.children)?t.children.values():Object.values((o=t.children)!=null?o:{});for(let l of a)r.write(`${JSON.stringify(Q_(l))} +`);return}let s=(0,w_.asTree)(B_(t,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 +$1`).replace(/^│\n/,"")),n>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 +$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(s)}var v_=ie(require("crypto")),BR=ie(require("fs"));var fTe=8,Qt=class{constructor(e,{configuration:r,immutable:i=r.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,v_.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=i,this.check=n;let s=r.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=r.get("compressionLevel"),a=o!==pl?`c${o}`:"";this.cacheKey=[fTe,a].join("")}}static async find(e,{immutable:r,check:i}={}){let n=new Qt(e.get("cacheFolder"),{configuration:e,immutable:r,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${Mu(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let n=hTe(r).slice(0,10);return`${Mu(e)}-${n}.zip`}getLocatorPath(e,r,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?v.resolve(this.cwd,this.getVersionFilename(e)):r===null||QR(r)!==this.cacheKey?null:v.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?v.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await T.existsPromise(this.cwd))throw new nt(z.IMMUTABLE_CACHE,"Cache path does not exist.")}else{await T.mkdirPromise(this.cwd,{recursive:!0});let e=v.resolve(this.cwd,".gitignore");await T.changeFilePromise(e,`/.gitignore +*.flock +*.tmp +`)}(this.mirrorCwd||!this.immutable)&&await T.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,a){var l=a,{onHit:i,onMiss:n,loader:s}=l,o=qr(l,["onHit","onMiss","loader"]);var A;let c=this.getLocatorMirrorPath(e),u=new Wt,g=()=>{let V=new Jr(null,{libzip:H}),W=v.join(Se.root,Lx(e));return V.mkdirSync(W,{recursive:!0}),V.writeJsonSync(v.join(W,wt.manifest),{name:St(e),mocked:!0}),V},f=async(V,W=null)=>{let X=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Iy(V)}`:r;if(W!==null){let F=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Iy(W)}`:r;if(X!==F)throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&X!==r){let F;switch(this.check?F="throw":QR(r)!==QR(X)?F="update":F=this.configuration.get("checksumBehavior"),F){case"ignore":return r;case"update":return X;default:case"throw":throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the expected checksum")}}return X},h=async V=>{if(!s)throw new Error(`Cache check required but no loader configured for ${lt(this.configuration,e)}`);let W=await s(),X=W.getRealPath();return W.saveAndClose(),await T.chmodPromise(X,420),await f(V,X)},p=async()=>{if(c===null||!await T.existsPromise(c)){let V=await s(),W=V.getRealPath();return V.saveAndClose(),{source:"loader",path:W}}return{source:"mirror",path:c}},d=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${lt(this.configuration,e)}`);if(this.immutable)throw new nt(z.IMMUTABLE_CACHE,`Cache entry required but missing for ${lt(this.configuration,e)}`);let{path:V,source:W}=await p(),X=await f(V),F=this.getLocatorPath(e,X,o);if(!F)throw new Error("Assertion failed: Expected the cache path to be available");let D=[];W!=="mirror"&&c!==null&&D.push(async()=>{let pe=`${c}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,c)}),(!o.mirrorWriteOnly||c===null)&&D.push(async()=>{let pe=`${F}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,F)});let he=o.mirrorWriteOnly&&c!=null?c:F;return await Promise.all(D.map(pe=>pe())),[!1,he,X]},m=async()=>{let W=(async()=>{var Ne;let X=this.getLocatorPath(e,r,o),F=X!==null?await u.existsPromise(X):!1,D=!!((Ne=o.mockedPackages)==null?void 0:Ne.has(e.locatorHash))&&(!this.check||!F),he=D||F,pe=he?i:n;if(pe&&pe(),he){let Pe=null,qe=X;return D||(Pe=this.check?await h(qe):await f(qe)),[D,qe,Pe]}else return d()})();this.mutexes.set(e.locatorHash,W);try{return await W}finally{this.mutexes.delete(e.locatorHash)}};for(let V;V=this.mutexes.get(e.locatorHash);)await V;let[E,B,b]=await m();this.markedFiles.add(B);let R,H=await $i(),L=E?()=>g():()=>new Jr(B,{baseFs:u,libzip:H,readOnly:!0}),K=new oh(()=>Mv(()=>R=L(),V=>`Failed to open the cache entry for ${lt(this.configuration,e)}: ${V}`),v),J=new Xo(B,{baseFs:K,pathUtils:v}),ne=()=>{R==null||R.discardAndClose()},q=((A=o.unstablePackages)==null?void 0:A.has(e.locatorHash))?null:b;return[J,ne,q]}};function QR(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function hTe(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var F_=ie(x_()),NB=ie(ml());var N_=ie(Wp()),kR=ie(require("stream"));var k_={hooks:{reduceDependency:(t,e,r,i,{resolver:n,resolveOptions:s})=>{for(let{pattern:o,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(o.from&&o.from.fullName!==St(r)||o.from&&o.from.description&&o.from.description!==r.reference||o.descriptor.fullName!==St(t)||o.descriptor.description&&o.descriptor.description!==t.range)continue;return n.bindDescriptor(Yt(t,a),e.topLevelWorkspace.anchoredLocator,s)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let i=hp(t.configuration,r);await t.configuration.triggerHook(n=>n.validateWorkspace,r,{reportWarning:(n,s)=>e.reportWarning(n,`${i}: ${s}`),reportError:(n,s)=>e.reportError(n,`${i}: ${s}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let i of r.errors)e.reportWarning(z.INVALID_MANIFEST,i.message)}}};var vR=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));return i||null}getFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));if(!i)throw new nt(z.FETCHER_NOT_FOUND,`${lt(r.project.configuration,e)} isn't supported by any available fetcher`);return i}};var pd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,r,i)}async getSatisfying(e,r,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,r,i)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));return i||null}getResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));if(!i)throw new Error(`${Xt(r.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));return i||null}getResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));if(!i)throw new Error(`${lt(r.project.configuration,e)} isn't supported by any available resolver`);return i}};var P_=ie(Or());var Rg=/^(?!v)[a-z0-9._-]+$/i,SR=class{supportsDescriptor(e,r){return!!(Us(e.range)||Rg.test(e.range))}supportsLocator(e,r){return!!(P_.default.valid(e.reference)||Rg.test(e.reference))}shouldPersistResolution(e,r){return r.resolver.shouldPersistResolution(this.forwardLocator(e,r),r)}bindDescriptor(e,r,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),r,i)}getResolutionDependencies(e,r){return r.resolver.getResolutionDependencies(this.forwardDescriptor(e,r),r)}async getCandidates(e,r,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),r,i)}async getSatisfying(e,r,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),r,i)}async resolve(e,r){let i=await r.resolver.resolve(this.forwardLocator(e,r),r);return op(i,e)}forwardDescriptor(e,r){return Yt(e,`${r.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,r){return Vi(e,`${r.project.configuration.get("defaultProtocol")}${e.reference}`)}};var dd=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n);return r.fetcher.getLocalPath(s,r)}async fetch(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n),o=await r.fetcher.fetch(s,r);return await this.ensureVirtualLink(e,o,r)}getLocatorFilename(e){return Mu(e)}async ensureVirtualLink(e,r,i){let n=r.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Pr.makeVirtualPath(s,o,n),l=new Xo(a,{baseFs:r.packageFs,pathUtils:v});return _(P({},r),{packageFs:l})}};var Fg=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Fg.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Fg.protocol)}supportsDescriptor(e,r){return Fg.isVirtualDescriptor(e)}supportsLocator(e,r){return Fg.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},FB=Fg;FB.protocol="virtual:";var xR=class{supports(e){return!!e.reference.startsWith(Yr.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let i=this.getWorkspace(e,r).cwd;return{packageFs:new Ft(i),prefixPath:Se.dot,localPath:i}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Yr.protocol.length))}};var D_=ie(require("module"));function R_(){return new Set(D_.default.builtinModules||Object.keys(process.binding("natives")))}var dTe=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),LB="yarn_",PR=".yarnrc.yml",DR="yarn.lock",CTe="********",ge;(function(u){u.ANY="ANY",u.BOOLEAN="BOOLEAN",u.ABSOLUTE_PATH="ABSOLUTE_PATH",u.LOCATOR="LOCATOR",u.LOCATOR_LOOSE="LOCATOR_LOOSE",u.NUMBER="NUMBER",u.STRING="STRING",u.SECRET="SECRET",u.SHAPE="SHAPE",u.MAP="MAP"})(ge||(ge={}));var ps=Le,RR={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:ge.STRING,default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:ge.ABSOLUTE_PATH,default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:ge.BOOLEAN,default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:ge.BOOLEAN,default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:ge.STRING,default:null},globalFolder:{description:"Folder where are stored the system-wide settings",type:ge.ABSOLUTE_PATH,default:Rb()},cacheFolder:{description:"Folder where the cache files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:ge.NUMBER,values:["mixed",0,1,2,3,4,5,6,7,8,9],default:pl},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:ge.ABSOLUTE_PATH,default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:ge.STRING,default:DR},installStatePath:{description:"Path of the file where the install state will be persisted",type:ge.ABSOLUTE_PATH,default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:ge.STRING,default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:ge.STRING,default:TB()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:ge.BOOLEAN,default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:ge.BOOLEAN,default:xy,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:ge.BOOLEAN,default:Mx,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:ge.BOOLEAN,default:NB.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:ge.BOOLEAN,default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:ge.BOOLEAN,default:!NB.isCI&&process.stdout.isTTY&&process.stdout.columns>22,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:ge.BOOLEAN,default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:ge.BOOLEAN,default:NB.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:ge.BOOLEAN,default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:ge.BOOLEAN,default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:ge.STRING,default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:ge.STRING,default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:ge.STRING,default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:ge.BOOLEAN,default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:ge.SHAPE,properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:ge.BOOLEAN,default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:ge.STRING,default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:ge.NUMBER,default:6e4},httpRetry:{description:"Retry times on http failure",type:ge.NUMBER,default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:ge.NUMBER,default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:ge.BOOLEAN,default:!0},logFilters:{description:"Overrides for log levels",type:ge.SHAPE,isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:ge.STRING,default:void 0},text:{description:"Code of the texts covered by this override",type:ge.STRING,default:void 0},pattern:{description:"Code of the patterns covered by this override",type:ge.STRING,default:void 0},level:{description:"Log level override, set to null to remove override",type:ge.STRING,values:Object.values(Ts),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:ge.BOOLEAN,default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:ge.NUMBER,default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:ge.STRING,default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:ge.BOOLEAN,default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:ge.BOOLEAN,default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:ge.BOOLEAN,default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:ge.STRING,default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:ge.MAP,valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:ge.SHAPE,properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:ge.MAP,valueDefinition:{description:"A range",type:ge.STRING}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:ge.MAP,valueDefinition:{description:"A semver range",type:ge.STRING}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:ge.MAP,valueDefinition:{description:"The peerDependency meta",type:ge.SHAPE,properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:ge.BOOLEAN,default:!1}}}}}}}};function NR(t,e,r,i,n){if(i.isArray||i.type===ge.ANY&&Array.isArray(r))return Array.isArray(r)?r.map((s,o)=>FR(t,`${e}[${o}]`,s,i,n)):String(r).split(/,/).map(s=>FR(t,e,s,i,n));if(Array.isArray(r))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return FR(t,e,r,i,n)}function FR(t,e,r,i,n){var a;switch(i.type){case ge.ANY:return r;case ge.SHAPE:return mTe(t,e,r,i,n);case ge.MAP:return ITe(t,e,r,i,n)}if(r===null&&!i.isNullable&&i.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((a=i.values)==null?void 0:a.includes(r))return r;let o=(()=>{if(i.type===ge.BOOLEAN&&typeof r!="string")return Hh(r);if(typeof r!="string")throw new Error(`Expected value (${r}) to be a string`);let l=Ov(r,{env:process.env});switch(i.type){case ge.ABSOLUTE_PATH:return v.resolve(n,M.toPortablePath(l));case ge.LOCATOR_LOOSE:return Hl(l,!1);case ge.NUMBER:return parseInt(l);case ge.LOCATOR:return Hl(l);case ge.BOOLEAN:return Hh(l);default:return l}})();if(i.values&&!i.values.includes(o))throw new Error(`Invalid value, expected one of ${i.values.join(", ")}`);return o}function mTe(t,e,r,i,n){if(typeof r!="object"||Array.isArray(r))throw new me(`Object configuration settings "${e}" must be an object`);let s=LR(t,i,{ignoreArrays:!0});if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=`${e}.${o}`;if(!i.properties[o])throw new me(`Unrecognized configuration settings found: ${e}.${o} - run "yarn config -v" to see the list of settings supported in Yarn`);s.set(o,NR(t,l,a,i.properties[o],n))}return s}function ITe(t,e,r,i,n){let s=new Map;if(typeof r!="object"||Array.isArray(r))throw new me(`Map configuration settings "${e}" must be an object`);if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=i.normalizeKeys?i.normalizeKeys(o):o,c=`${e}['${l}']`,u=i.valueDefinition;s.set(l,NR(t,c,a,u,n))}return s}function LR(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case ge.SHAPE:{if(e.isArray&&!r)return[];let i=new Map;for(let[n,s]of Object.entries(e.properties))i.set(n,LR(t,s));return i}break;case ge.MAP:return e.isArray&&!r?[]:new Map;case ge.ABSOLUTE_PATH:return e.default===null?null:t.projectCwd===null?v.isAbsolute(e.default)?v.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(i=>v.resolve(t.projectCwd,i)):v.resolve(t.projectCwd,e.default);default:return e.default}}function MB(t,e,r){if(e.type===ge.SECRET&&typeof t=="string"&&r.hideSecrets)return CTe;if(e.type===ge.ABSOLUTE_PATH&&typeof t=="string"&&r.getNativePaths)return M.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let i=[];for(let n of t)i.push(MB(n,e,r));return i}if(e.type===ge.MAP&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries())i.set(n,MB(s,e.valueDefinition,r));return i}if(e.type===ge.SHAPE&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries()){let o=e.properties[n];i.set(n,MB(s,o,r))}return i}return t}function ETe(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),!!e.startsWith(LB)&&(e=(0,F_.default)(e.slice(LB.length)),t[e]=r);return t}function TB(){let t=`${LB}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return PR}var KA;(function(i){i[i.LOCKFILE=0]="LOCKFILE",i[i.MANIFEST=1]="MANIFEST",i[i.NONE=2]="NONE"})(KA||(KA={}));var Ra=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,i){let n=new Ra(e);typeof r!="undefined"&&!(r instanceof Map)&&(n.projectCwd=r),n.importSettings(RR);let s=typeof i!="undefined"?i:r instanceof Map?r:new Map;for(let[o,a]of s)n.activatePlugin(o,a);return n}static async find(e,r,{lookup:i=0,strict:n=!0,usePath:s=!1,useRc:o=!0}={}){let a=ETe();delete a.rcFilename;let l=await Ra.findRcFiles(e),c=await Ra.findHomeRcFile();if(c){let E=l.find(B=>B.path===c.path);E?E.strict=!1:l.push(_(P({},c),{strict:!1}))}let u=({ignoreCwd:E,yarnPath:B,ignorePath:b,lockfileFilename:R})=>({ignoreCwd:E,yarnPath:B,ignorePath:b,lockfileFilename:R}),g=L=>{var K=L,{ignoreCwd:E,yarnPath:B,ignorePath:b,lockfileFilename:R}=K,H=qr(K,["ignoreCwd","yarnPath","ignorePath","lockfileFilename"]);return H},f=new Ra(e);f.importSettings(u(RR)),f.useWithSource("",u(a),e,{strict:!1});for(let{path:E,cwd:B,data:b}of l)f.useWithSource(E,u(b),B,{strict:!1});if(s){let E=f.get("yarnPath"),B=f.get("ignorePath");if(E!==null&&!B)return f}let h=f.get("lockfileFilename"),p;switch(i){case 0:p=await Ra.findProjectCwd(e,h);break;case 1:p=await Ra.findProjectCwd(e,null);break;case 2:T.existsSync(v.join(e,"package.json"))?p=v.resolve(e):p=null;break}f.startingCwd=e,f.projectCwd=p,f.importSettings(g(RR));let d=new Map([["@@core",k_]]),m=E=>"default"in E?E.default:E;if(r!==null){for(let R of r.plugins.keys())d.set(R,m(r.modules.get(R)));let E=new Map;for(let R of R_())E.set(R,()=>mu(R));for(let[R,H]of r.modules)E.set(R,()=>H);let B=new Set,b=async(R,H)=>{let{factory:L,name:K}=mu(R);if(B.has(K))return;let J=new Map(E),ne=A=>{if(J.has(A))return J.get(A)();throw new me(`This plugin cannot access the package referenced via ${A} which is neither a builtin, nor an exposed entry`)},q=await du(async()=>m(await L(ne)),A=>`${A} (when initializing ${K}, defined in ${H})`);E.set(K,()=>q),B.add(K),d.set(K,q)};if(a.plugins)for(let R of a.plugins.split(";")){let H=v.resolve(e,M.toPortablePath(R));await b(H,"")}for(let{path:R,cwd:H,data:L}of l)if(!!o&&!!Array.isArray(L.plugins))for(let K of L.plugins){let J=typeof K!="string"?K.path:K,ne=v.resolve(H,M.toPortablePath(J));await b(ne,R)}}for(let[E,B]of d)f.activatePlugin(E,B);f.useWithSource("",g(a),e,{strict:n});for(let{path:E,cwd:B,data:b,strict:R}of l)f.useWithSource(E,g(b),B,{strict:R!=null?R:n});return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),await f.refreshPackageExtensions(),f}static async findRcFiles(e){let r=TB(),i=[],n=e,s=null;for(;n!==s;){s=n;let o=v.join(s,r);if(T.existsSync(o)){let a=await T.readFilePromise(o,"utf8"),l;try{l=Ei(a)}catch(c){let u="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(u=" (in particular, make sure you list the colons after each key name)"),new me(`Parse error when loading ${o}; please check it's proper Yaml${u}`)}i.push({path:o,cwd:s,data:l})}n=v.dirname(s)}return i}static async findHomeRcFile(){let e=TB(),r=uh(),i=v.join(r,e);if(T.existsSync(i)){let n=await T.readFilePromise(i,"utf8"),s=Ei(n);return{path:i,cwd:r,data:s}}return null}static async findProjectCwd(e,r){let i=null,n=e,s=null;for(;n!==s;){if(s=n,T.existsSync(v.join(s,"package.json"))&&(i=s),r!==null){if(T.existsSync(v.join(s,r))){i=s;break}}else if(i!==null)break;n=v.dirname(s)}return i}static async updateConfiguration(e,r){let i=TB(),n=v.join(e,i),s=T.existsSync(n)?Ei(await T.readFilePromise(n,"utf8")):{},o=!1,a;if(typeof r=="function"){try{a=r(s)}catch{a=r({})}if(a===s)return}else{a=s;for(let l of Object.keys(r)){let c=s[l],u=r[l],g;if(typeof u=="function")try{g=u(c)}catch{g=u(void 0)}else g=u;c!==g&&(a[l]=g,o=!0)}if(!o)return}await T.changeFilePromise(n,Qa(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let r=uh();return await Ra.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration!="undefined"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,i]of Object.entries(e))if(i!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,i),this.values.set(r,LR(this,i))}}useWithSource(e,r,i,n){try{this.use(e,r,i,n)}catch(s){throw s.message+=` (in ${Ve(this,e,Le.PATH)})`,s}}use(e,r,i,{strict:n=!0,overwrite:s=!1}={}){n=n&&this.get("enableStrictSettings");for(let o of["enableStrictSettings",...Object.keys(r)]){if(typeof r[o]=="undefined"||o==="plugins"||e===""&&dTe.has(o))continue;if(o==="rcFilename")throw new me(`The rcFilename settings can only be set via ${`${LB}RC_FILENAME`.toUpperCase()}, not via a rc file`);let l=this.settings.get(o);if(!l){if(n)throw new me(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(s||l.type===ge.MAP||l.isArray&&l.concatenateValues))continue;let c;try{c=NR(this,o,r[o],l,i)}catch(u){throw u.message+=` in ${Ve(this,e,Le.PATH)}`,u}if(o==="enableStrictSettings"&&e!==""){n=c;continue}if(l.type===ge.MAP){let u=this.values.get(o);this.values.set(o,new Map(s?[...u,...c]:[...c,...u])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(l.isArray&&l.concatenateValues){let u=this.values.get(o);this.values.set(o,s?[...u,...c]:[...c,...u]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,c),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:i=!1}){let n=this.get(e),s=this.settings.get(e);if(typeof s=="undefined")throw new me(`Couldn't find a configuration settings named "${e}"`);return MB(n,s,{hideSecrets:r,getNativePaths:i})}getSubprocessStreams(e,{header:r,prefix:i,report:n}){let s,o,a=T.createWriteStream(e);if(this.get("enableInlineBuilds")){let l=n.createStreamReporter(`${i} ${Ve(this,"STDOUT","green")}`),c=n.createStreamReporter(`${i} ${Ve(this,"STDERR","red")}`);s=new kR.PassThrough,s.pipe(l),s.pipe(a),o=new kR.PassThrough,o.pipe(c),o.pipe(a)}else s=a,o=a,typeof r!="undefined"&&s.write(`${r} +`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let i of r.resolvers||[])e.push(new i);return new pd([new FB,new Yr,new SR,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let i of r.fetchers||[])e.push(new i);return new vR([new dd,new xR,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let i of r.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=this.get("supportedArchitectures"),r=e.get("os");r!==null&&(r=r.map(n=>n==="current"?process.platform:n));let i=e.get("cpu");return i!==null&&(i=i.map(n=>n==="current"?process.arch:n)),{os:r,cpu:i}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(i,n,{userProvided:s=!1}={})=>{if(!Us(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new Ze;o.load(n,{yamlCompatibilityMode:!0});let a=hu(e,i.identHash),l=[];a.push([i.range,l]);let c={status:ki.Inactive,userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push(_(P({},c),{type:oi.Dependency,descriptor:u}));for(let u of o.peerDependencies.values())l.push(_(P({},c),{type:oi.PeerDependency,descriptor:u}));for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push(_(P({},c),{type:oi.PeerDependencyMeta,selector:u,key:f,value:h}))};await this.triggerHook(i=>i.registerPackageExtensions,this,r);for(let[i,n]of this.get("packageExtensions"))r(pA(i,!0),aE(n),{userProvided:!0})}normalizePackage(e){let r=ap(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i!="undefined"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!lc(s,o))for(let l of a)switch(l.status===ki.Inactive&&(l.status=ki.Redundant),l.type){case oi.Dependency:typeof r.dependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.dependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependency:typeof r.peerDependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependencyMeta:{let c=r.peerDependenciesMeta.get(l.selector);(typeof c=="undefined"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status=ki.Active,na(r.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:Lv(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of r.peerDependenciesMeta.keys()){let o=In(s);r.peerDependencies.has(o.identHash)||r.peerDependencies.set(o.identHash,Yt(o,"*"))}for(let s of r.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=Io("types",o),l=St(a);r.peerDependencies.has(a.identHash)||r.peerDependenciesMeta.has(l)||(r.peerDependencies.set(a.identHash,Yt(a,"*")),r.peerDependenciesMeta.set(l,{optional:!0}))}return r.dependencies=new Map(gn(r.dependencies,([,s])=>En(s))),r.peerDependencies=new Map(gn(r.peerDependencies,([,s])=>En(s))),r}getLimit(e){return na(this.limits,e,()=>(0,N_.default)(this.get(e)))}async triggerHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...r)}}async triggerMultipleHooks(e,r){for(let i of r)await this.triggerHook(e,...i)}async reduceHook(e,r,...i){let n=r;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...r);if(typeof o!="undefined")return o}return null}},fe=Ra;fe.telemetry=null;var Gn;(function(r){r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE"})(Gn||(Gn={}));var Fa=class extends Xi{constructor({configuration:e,stdout:r,suggestInstall:i=!0}){super();this.errorCount=0;Cp(this,{configuration:e}),this.configuration=e,this.stdout=r,this.suggestInstall=i}static async start(e,r){let i=new this(e);try{await r(i)}catch(n){i.reportExceptionOnce(n)}finally{await i.finalize()}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){this.errorCount+=1,this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(e)}: ${r} +`)}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){this.errorCount>0&&(this.stdout.write(` +`),this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. +`),this.suggestInstall&&this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. +`))}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:!1})}};var t0=ie(require("crypto")),v$=ie(CX()),r0=ie(Q$()),S$=ie(Wp()),x$=ie(Or()),lF=ie(require("util")),cF=ie(require("v8")),uF=ie(require("zlib"));var iUe=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,i)=>`${r}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/(?:[^\\.]+)\.jfrog\.io\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>by({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oF=class{constructor(){this.resolutions=null}async setup(e,{report:r}){let i=v.join(e.cwd,e.configuration.get("lockfileFilename"));if(!T.existsSync(i))return;let n=await T.readFilePromise(i,"utf8"),s=Ei(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=gp(a);if(!l){r.reportWarning(z.YARN_IMPORT_FAILED,`Failed to parse the string "${a}" into a proper descriptor`);continue}Us(l.range)&&(l=Yt(l,`npm:${l.range}`));let{version:c,resolved:u}=s[a];if(!u)continue;let g;for(let[h,p]of iUe){let d=u.match(h);if(d){g=p(c,...d);break}}if(!g){r.reportWarning(z.YARN_IMPORT_FAILED,`${Xt(e.configuration,l)}: Only some patterns can be imported from legacy lockfiles (not "${u}")`);continue}let f=l;try{let h=Tu(l.range),p=gp(h.selector,!0);p&&(f=p)}catch{}o.set(l.descriptorHash,Vi(f,g))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var aF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(By(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){let n=i.project.originalPackages.get(By(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var AF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.resolver.bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};var ei=class extends Xi{reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){}};var b$=ie(vx());var Dd=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.dependencies=new Map;this.project=r,this.cwd=e}async setup(){this.manifest=T.existsSync(v.join(this.cwd,Ze.fileName))?await Ze.find(this.cwd):new Ze,this.relativeCwd=v.relative(this.project.cwd,this.cwd)||Se.dot;let e=this.manifest.name?this.manifest.name:Io(null,`${this.computeCandidateName()}-${zi(this.relativeCwd).substr(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=Vi(e,r),this.anchoredDescriptor=Yt(this.locator,`${Yr.protocol}${this.relativeCwd}`),this.anchoredLocator=Vi(this.locator,`${Yr.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:s})=>s),n=await(0,b$.default)(i,{cwd:M.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort();for(let s of n){let o=v.resolve(this.cwd,M.toPortablePath(s));T.existsSync(v.join(o,"package.json"))&&this.workspacesCwds.add(o)}}accepts(e){var o;let r=e.indexOf(":"),i=r!==-1?e.slice(0,r+1):null,n=r!==-1?e.slice(r+1):e;if(i===Yr.protocol&&v.normalize(n)===this.relativeCwd||i===Yr.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=Us(n);return s?i===Yr.protocol?s.test((o=this.manifest.version)!=null?o:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${v.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of e)for(let o of n.manifest[s].values()){let a=this.project.tryWorkspaceByDescriptor(o);a===null||r.has(a)||(r.add(a),i(a))}};return i(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of this.project.workspaces)e.some(a=>[...s.manifest[a].values()].some(l=>{let c=this.project.tryWorkspaceByDescriptor(l);return c!==null&&up(c.anchoredLocator,n.anchoredLocator)}))&&!r.has(s)&&(r.add(s),i(s))};return i(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let i=this.project.workspacesByCwd.get(r);i&&e.push(i,...i.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=v.join(this.cwd,Ze.fileName),i=`${JSON.stringify(e,null,this.manifest.indent)} +`;await T.changeFilePromise(r,i,{automaticNewlines:!0}),this.manifest.raw=e}};var k$=5,nUe=1,sUe=/ *, */g,P$=/\/$/,oUe=32,aUe=(0,lF.promisify)(uF.default.gzip),AUe=(0,lF.promisify)(uF.default.gunzip),li;(function(r){r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build"})(li||(li={}));var gF={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},D$=t=>zi(`${nUe}`,t),Ke=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var c,u,g;if(!e.projectCwd)throw new me(`No project found in ${r}`);let i=e.projectCwd,n=r,s=null;for(;s!==e.projectCwd;){if(s=n,T.existsSync(v.join(s,wt.manifest))){i=s;break}n=v.dirname(s)}let o=new Ke(e.projectCwd,{configuration:e});(c=fe.telemetry)==null||c.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(u=fe.telemetry)==null||u.reportWorkspaceCount(o.workspaces.length),(g=fe.telemetry)==null||g.reportDependencyCount(o.workspaces.reduce((f,h)=>f+h.manifest.dependencies.size+h.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};throw new me(`The nearest package directory (${Ve(e,i,Le.PATH)}) doesn't seem to be part of the project declared in ${Ve(e,o.cwd,Le.PATH)}. + +- If the project directory is right, it might be that you forgot to list ${Ve(e,v.relative(o.cwd,i),Le.PATH)} as a workspace. +- If it isn't, it's likely because you have a yarn.lock or package.json file there, confusing the project root detection.`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(T.existsSync(e)){let n=await T.readFilePromise(e,"utf8");this.lockFileChecksum=D$(n);let s=Ei(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o0;){let r=e;e=[];for(let i of r){if(this.workspacesByCwd.has(i))continue;let n=await this.addWorkspace(i),s=this.storedPackages.get(n.anchoredLocator.locatorHash);s&&(n.dependencies=s.dependencies);for(let o of n.workspacesCwds)e.push(o)}}}async addWorkspace(e){let r=new Dd(e,{project:this});await r.setup();let i=this.workspacesByIdent.get(r.locator.identHash);if(typeof i!="undefined")throw new Error(`Duplicate workspace name ${Vr(this.configuration,r.locator)}: ${M.fromPortablePath(e)} conflicts with ${M.fromPortablePath(i.cwd)}`);return this.workspaces.push(r),this.workspacesByCwd.set(e,r),this.workspacesByIdent.set(r.locator.identHash,r),r}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){v.isAbsolute(e)||(e=v.resolve(this.cwd,e)),e=v.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let i of this.workspaces)v.relative(i.cwd,e).startsWith("../")||r&&r.cwd.length>=i.cwd.length||(r=i);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r=="undefined"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${Vr(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){let r=this.tryWorkspaceByIdent(e);return r===null||(hA(e)&&(e=Ap(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${Xt(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Eo(e)&&(e=lp(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${lt(this.configuration,e)})`);return r}refreshWorkspaceDependencies(){for(let e of this.workspaces){let r=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!r)throw new Error(`Assertion failed: Expected workspace ${hp(this.configuration,e)} (${Ve(this.configuration,v.join(e.cwd,wt.manifest),Le.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(r.dependencies)}}forgetResolution(e){let r=n=>{this.storedResolutions.delete(n),this.storedDescriptors.delete(n)},i=n=>{this.originalPackages.delete(n),this.storedPackages.delete(n),this.accessibleLocators.delete(n)};if("descriptorHash"in e){let n=this.storedResolutions.get(e.descriptorHash);r(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof n!="undefined"&&!s.has(n)&&i(n)}if("locatorHash"in e){i(e.locatorHash);for(let[n,s]of this.storedResolutions)s===e.locatorHash&&r(n)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let r of this.originalPackages.values()){let i;try{i=e.shouldPersistResolution(r,{project:this,resolver:e})}catch{i=!1}i||this.forgetResolution(r)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,i]of e.dependencies)hA(i)&&e.dependencies.set(r,Ap(i))}getDependencyMeta(e,r){let i={},s=this.topLevelWorkspace.manifest.dependenciesMeta.get(St(e));if(!s)return i;let o=s.get(null);if(o&&Object.assign(i,o),r===null||!x$.default.valid(r))return i;for(let[a,l]of s)a!==null&&a===r&&Object.assign(i,l);return i}async findLocatorForLocation(e,{strict:r=!1}={}){let i=new ei,n=this.configuration.getLinkers(),s={project:this,report:i};for(let o of n){let a=await o.findPackageLocator(e,s);if(a){if(r&&(await o.findPackageLocation(a,s)).replace(P$,"")!==e.replace(P$,""))continue;return a}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),i=new oF;await i.setup(this,{report:e.report});let n=e.lockfileOnly?[new AF(r)]:[i,r],s=new pd([new aF(r),...n]),o=this.configuration.makeFetcher(),a=e.lockfileOnly?{project:this,report:e.report,resolver:s}:{project:this,report:e.report,resolver:s,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:o,cacheOptions:{mirrorWriteOnly:!0}}},l=new Map,c=new Map,u=new Map,g=new Map,f=new Map,h=new Map,p=this.topLevelWorkspace.anchoredLocator,d=new Set,m=[],E=async W=>{let X=await du(async()=>await s.resolve(W,a),D=>`${lt(this.configuration,W)}: ${D}`);if(!up(W,X))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${lt(this.configuration,W)} to ${lt(this.configuration,X)})`);g.set(X.locatorHash,X);let F=this.configuration.normalizePackage(X);for(let[D,he]of F.dependencies){let pe=await this.configuration.reduceHook(Pe=>Pe.reduceDependency,he,this,F,he,{resolver:s,resolveOptions:a});if(!cp(he,pe))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let Ne=s.bindDescriptor(pe,W,a);F.dependencies.set(D,Ne)}return m.push(Promise.all([...F.dependencies.values()].map(D=>H(D)))),c.set(F.locatorHash,F),F},B=async W=>{let X=f.get(W.locatorHash);if(typeof X!="undefined")return X;let F=Promise.resolve().then(()=>E(W));return f.set(W.locatorHash,F),F},b=async(W,X)=>{let F=await H(X);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,F.locatorHash),F},R=async W=>{let X=this.resolutionAliases.get(W.descriptorHash);if(typeof X!="undefined")return b(W,this.storedDescriptors.get(X));let F=s.getResolutionDependencies(W,a),D=new Map(await Promise.all(F.map(async Ne=>{let Pe=s.bindDescriptor(Ne,p,a),qe=await H(Pe);return d.add(qe.locatorHash),[Ne.descriptorHash,qe]}))),pe=(await du(async()=>await s.getCandidates(W,D,a),Ne=>`${Xt(this.configuration,W)}: ${Ne}`))[0];if(typeof pe=="undefined")throw new Error(`${Xt(this.configuration,W)}: No candidates found`);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,pe.locatorHash),B(pe)},H=W=>{let X=h.get(W.descriptorHash);if(typeof X!="undefined")return X;l.set(W.descriptorHash,W);let F=Promise.resolve().then(()=>R(W));return h.set(W.descriptorHash,F),F};for(let W of this.workspaces){let X=W.anchoredDescriptor;m.push(H(X))}for(;m.length>0;){let W=[...m];m.length=0,await Promise.all(W)}let L=new Set(this.resolutionAliases.values()),K=new Set(c.keys()),J=new Set,ne=new Map;lUe({project:this,report:e.report,accessibleLocators:J,volatileDescriptors:L,optionalBuilds:K,peerRequirements:ne,allDescriptors:l,allResolutions:u,allPackages:c});for(let W of d)K.delete(W);for(let W of L)l.delete(W),u.delete(W);let q=this.configuration.getSupportedArchitectures(),A=new Set,V=new Set;for(let W of c.values())W.conditions!=null&&(!K.has(W.locatorHash)||(Sy(W,q)||(Sy(W,{os:[process.platform],cpu:[process.arch]})&&e.report.reportWarningOnce(z.GHOST_ARCHITECTURE,`${lt(this.configuration,W)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ve(this.configuration,"supportedArchitectures",ps.SETTING)} setting`),V.add(W.locatorHash)),A.add(W.locatorHash)));this.storedResolutions=u,this.storedDescriptors=l,this.storedPackages=c,this.accessibleLocators=J,this.conditionalLocators=A,this.disabledLocators=V,this.originalPackages=g,this.optionalBuilds=K,this.peerRequirements=ne,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:r,fetcher:i,mode:n}){let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,cacheOptions:s},l=Array.from(new Set(gn(this.storedResolutions.values(),[f=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");return is(h)}])));n===li.UpdateLockfile&&(l=l.filter(f=>!this.storedChecksums.has(f)));let c=!1,u=Xi.progressViaCounter(l.length);r.reportProgress(u);let g=(0,S$.default)(oUe);if(await r.startCacheReport(async()=>{await Promise.all(l.map(f=>g(async()=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");if(Eo(h))return;let p;try{p=await o.fetch(h,a)}catch(d){d.message=`${lt(this.configuration,h)}: ${d.message}`,r.reportExceptionOnce(d),c=d;return}p.checksum!=null?this.storedChecksums.set(h.locatorHash,p.checksum):this.storedChecksums.delete(h.locatorHash),p.releaseFs&&p.releaseFs()}).finally(()=>{u.tick()})))}),c)throw c}async linkEverything({cache:e,report:r,fetcher:i,mode:n}){var A,V,W;let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,skipIntegrityCheck:!0,cacheOptions:s},l=this.configuration.getLinkers(),c={project:this,report:r},u=new Map(l.map(X=>{let F=X.makeInstaller(c),D=F.getCustomDataKey(),he=this.installersCustomData.get(D);return typeof he!="undefined"&&F.attachCustomData(he),[X,F]})),g=new Map,f=new Map,h=new Map,p=new Map(await Promise.all([...this.accessibleLocators].map(async X=>{let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");return[X,await o.fetch(F,a)]}))),d=[];for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(typeof F=="undefined")throw new Error("Assertion failed: The locator should have been registered");let D=p.get(F.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The fetch result should have been registered");let he=[],pe=Pe=>{he.push(Pe)},Ne=this.tryWorkspaceByLocator(F);if(Ne!==null){let Pe=[],{scripts:qe}=Ne.manifest;for(let se of["preinstall","install","postinstall"])qe.has(se)&&Pe.push([Gn.SCRIPT,se]);try{for(let[se,be]of u)if(se.supportsPackage(F,c)&&(await be.installPackage(F,D,{holdFetchResult:pe})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{he.length===0?(A=D.releaseFs)==null||A.call(D):d.push(Promise.all(he).catch(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}let re=v.join(D.packageFs.getRealPath(),D.prefixPath);f.set(F.locatorHash,re),!Eo(F)&&Pe.length>0&&h.set(F.locatorHash,{directives:Pe,buildLocations:[re]})}else{let Pe=l.find(se=>se.supportsPackage(F,c));if(!Pe)throw new nt(z.LINKER_NOT_FOUND,`${lt(this.configuration,F)} isn't supported by any available linker`);let qe=u.get(Pe);if(!qe)throw new Error("Assertion failed: The installer should have been registered");let re;try{re=await qe.installPackage(F,D,{holdFetchResult:pe})}finally{he.length===0?(V=D.releaseFs)==null||V.call(D):d.push(Promise.all(he).then(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}g.set(F.locatorHash,Pe),f.set(F.locatorHash,re.packageLocation),re.buildDirective&&re.buildDirective.length>0&&re.packageLocation&&h.set(F.locatorHash,{directives:re.buildDirective,buildLocations:[re.packageLocation]})}}let m=new Map;for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");let D=this.tryWorkspaceByLocator(F)!==null,he=async(pe,Ne)=>{let Pe=f.get(F.locatorHash);if(typeof Pe=="undefined")throw new Error(`Assertion failed: The package (${lt(this.configuration,F)}) should have been registered`);let qe=[];for(let re of F.dependencies.values()){let se=this.storedResolutions.get(re.descriptorHash);if(typeof se=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,re)}, from ${lt(this.configuration,F)})should have been registered`);let be=this.storedPackages.get(se);if(typeof be=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);let ae=this.tryWorkspaceByLocator(be)===null?g.get(se):null;if(typeof ae=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);ae===pe||ae===null?f.get(be.locatorHash)!==null&&qe.push([re,be]):!D&&Pe!==null&&hu(m,se).push(Pe)}Pe!==null&&await Ne.attachInternalDependencies(F,qe)};if(D)for(let[pe,Ne]of u)pe.supportsPackage(F,c)&&await he(pe,Ne);else{let pe=g.get(F.locatorHash);if(!pe)throw new Error("Assertion failed: The linker should have been found");let Ne=u.get(pe);if(!Ne)throw new Error("Assertion failed: The installer should have been registered");await he(pe,Ne)}}for(let[X,F]of m){let D=this.storedPackages.get(X);if(!D)throw new Error("Assertion failed: The package should have been registered");let he=g.get(D.locatorHash);if(!he)throw new Error("Assertion failed: The linker should have been found");let pe=u.get(he);if(!pe)throw new Error("Assertion failed: The installer should have been registered");await pe.attachExternalDependents(D,F)}let E=new Map;for(let X of u.values()){let F=await X.finalizeInstall();for(let D of(W=F==null?void 0:F.records)!=null?W:[])h.set(D.locatorHash,{directives:D.buildDirective,buildLocations:D.buildLocations});typeof(F==null?void 0:F.customData)!="undefined"&&E.set(X.getCustomDataKey(),F.customData)}if(this.installersCustomData=E,await Promise.all(d),n===li.SkipBuild)return;let B=new Set(this.storedPackages.keys()),b=new Set(h.keys());for(let X of b)B.delete(X);let R=(0,t0.createHash)("sha512");R.update(process.versions.node),await this.configuration.triggerHook(X=>X.globalHashGeneration,this,X=>{R.update("\0"),R.update(X)});let H=R.digest("hex"),L=new Map,K=X=>{let F=L.get(X.locatorHash);if(typeof F!="undefined")return F;let D=this.storedPackages.get(X.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The package should have been registered");let he=(0,t0.createHash)("sha512");he.update(X.locatorHash),L.set(X.locatorHash,"");for(let pe of D.dependencies.values()){let Ne=this.storedResolutions.get(pe.descriptorHash);if(typeof Ne=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,pe)}) should have been registered`);let Pe=this.storedPackages.get(Ne);if(typeof Pe=="undefined")throw new Error("Assertion failed: The package should have been registered");he.update(K(Pe))}return F=he.digest("hex"),L.set(X.locatorHash,F),F},J=(X,F)=>{let D=(0,t0.createHash)("sha512");D.update(H),D.update(K(X));for(let he of F)D.update(he);return D.digest("hex")},ne=new Map,q=!1;for(;b.size>0;){let X=b.size,F=[];for(let D of b){let he=this.storedPackages.get(D);if(!he)throw new Error("Assertion failed: The package should have been registered");let pe=!0;for(let qe of he.dependencies.values()){let re=this.storedResolutions.get(qe.descriptorHash);if(!re)throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,qe)}) should have been registered`);if(b.has(re)){pe=!1;break}}if(!pe)continue;b.delete(D);let Ne=h.get(he.locatorHash);if(!Ne)throw new Error("Assertion failed: The build directive should have been registered");let Pe=J(he,Ne.buildLocations);if(this.storedBuildState.get(he.locatorHash)===Pe){ne.set(he.locatorHash,Pe);continue}q||(await this.persistInstallStateFile(),q=!0),this.storedBuildState.has(he.locatorHash)?r.reportInfo(z.MUST_REBUILD,`${lt(this.configuration,he)} must be rebuilt because its dependency tree changed`):r.reportInfo(z.MUST_BUILD,`${lt(this.configuration,he)} must be built because it never has been before or the last one failed`);for(let qe of Ne.buildLocations){if(!v.isAbsolute(qe))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${qe})`);F.push((async()=>{for(let[re,se]of Ne.directives){let be=`# This file contains the result of Yarn building a package (${is(he)}) +`;switch(re){case Gn.SCRIPT:be+=`# Script name: ${se} +`;break;case Gn.SHELLCODE:be+=`# Script code: ${se} +`;break}let ae=null;if(!await T.mktempPromise(async De=>{let $=v.join(De,"build.log"),{stdout:G,stderr:Ce}=this.configuration.getSubprocessStreams($,{header:be,prefix:lt(this.configuration,he),report:r}),ee;try{switch(re){case Gn.SCRIPT:ee=await Uw(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break;case Gn.SHELLCODE:ee=await rD(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break}}catch(Oe){Ce.write(Oe.stack),ee=1}if(G.end(),Ce.end(),ee===0)return ne.set(he.locatorHash,Pe),!0;T.detachTemp(De);let Ue=`${lt(this.configuration,he)} couldn't be built successfully (exit code ${Ve(this.configuration,ee,Le.NUMBER)}, logs can be found here: ${Ve(this.configuration,$,Le.PATH)})`;return this.optionalBuilds.has(he.locatorHash)?(r.reportInfo(z.BUILD_FAILED,Ue),ne.set(he.locatorHash,Pe),!0):(r.reportError(z.BUILD_FAILED,Ue),!1)}))return}})())}}if(await Promise.all(F),X===b.size){let D=Array.from(b).map(he=>{let pe=this.storedPackages.get(he);if(!pe)throw new Error("Assertion failed: The package should have been registered");return lt(this.configuration,pe)}).join(", ");r.reportError(z.CYCLIC_DEPENDENCIES,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${D})`);break}}this.storedBuildState=ne}async install(e){var a,l;let r=this.configuration.get("nodeLinker");(a=fe.telemetry)==null||a.reportInstall(r),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status=ki.Inactive;let i=v.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await T.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=Ve(this.configuration,g,Le.PACKAGE_EXTENSION);switch(g.status){case ki.Inactive:e.report.reportWarning(z.UNUSED_PACKAGE_EXTENSION,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case ki.Redundant:e.report.reportWarning(z.REDUNDANT_PACKAGE_EXTENSION,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=ul(n,this.generateLockfile());if(c!==n){let u=(0,v$.structuredPatch)(i,i,n,c);e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.ADDED)):f.startsWith("-")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.REMOVED)):e.report.reportInfo(null,Ve(this.configuration,f,"grey"))}throw e.report.reportSeparator(),new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status===ki.Active&&((l=fe.telemetry)==null||l.reportPackageExtension(Uu(g,Le.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject=="undefined"||e.persistProject)&&e.mode!==li.UpdateLockfile&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>Ey(c,{cwd:this.cwd})));(typeof e.persistProject=="undefined"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode===li.UpdateLockfile){e.report.reportWarning(z.UPDATE_LOCKFILE_ONLY_SKIP_LINK,`Skipped due to ${Ve(this.configuration,"mode=update-lockfile",Le.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>Ey(u,{cwd:this.cwd})));for(let u=0;uc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let r={};r.__metadata={version:k$,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>En(f)).sort().join(", "),c=new Ze;c.version=o.linkType===gt.HARD?o.version:"0.0.0-use.local",c.languageName=o.languageName,c.dependencies=new Map(o.dependencies),c.peerDependencies=new Map(o.peerDependencies),c.dependenciesMeta=new Map(o.dependenciesMeta),c.peerDependenciesMeta=new Map(o.peerDependenciesMeta),c.bin=new Map(o.bin);let u,g=this.storedChecksums.get(o.locatorHash);if(typeof g!="undefined"){let f=g.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let h=g.slice(0,f),p=g.slice(f+1);typeof r.__metadata.cacheKey=="undefined"&&(r.__metadata.cacheKey=h),h===r.__metadata.cacheKey?u=p:u=g}r[l]=_(P({},c.exportTo({},{compatibilityMode:!1})),{linkType:o.linkType.toLowerCase(),resolution:is(o),checksum:u,conditions:o.conditions||void 0})}return`${[`# This file is generated by running "yarn install" inside your project. +`,`# Manual changes might be lost - proceed with caution! +`].join("")} +`+Qa(r)}async persistLockfile(){let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await T.readFilePromise(e,"utf8")}catch(s){}let i=this.generateLockfile(),n=ul(r,i);n!==r&&(await T.writeFilePromise(e,n),this.lockFileChecksum=D$(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(gF))e.push(...o);let r=(0,r0.default)(this,e),i=cF.default.serialize(r),n=zi(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await T.mkdirPromise(v.dirname(s),{recursive:!0}),await T.writeFilePromise(s,await aUe(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath");if(!T.existsSync(n)){r&&await this.applyLightResolution();return}let s=await AUe(await T.readFilePromise(n));this.installStateChecksum=zi(s);let o=cF.default.deserialize(s);e&&typeof o.installersCustomData!="undefined"&&(this.installersCustomData=o.installersCustomData),i&&Object.assign(this,(0,r0.default)(o,gF.restoreBuildState)),r&&(o.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,r0.default)(o,gF.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ei}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:r}){let i=new Set([".gitignore"]);if(!Fb(e.cwd,this.cwd)||!await T.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await T.readdirPromise(e.cwd)){if(i.has(a))continue;let l=v.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?r.reportError(z.IMMUTABLE_CACHE,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:r.reportInfo(z.UNUSED_CACHE_ENTRY,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused - removing`),await T.removePromise(l)))}n&&s!==0&&r.reportInfo(z.UNUSED_CACHE_ENTRY,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function lUe({project:t,allDescriptors:e,allResolutions:r,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,volatileDescriptors:o=new Set,peerRequirements:a=new Map,report:l,tolerateMissingPackages:c=!1}){var ne;let u=new Map,g=[],f=new Map,h=new Map,p=new Map,d=new Map,m=new Map,E=new Map(t.workspaces.map(q=>{let A=q.anchoredLocator.locatorHash,V=i.get(A);if(typeof V=="undefined"){if(c)return[A,null];throw new Error("Assertion failed: The workspace should have an associated package")}return[A,ap(V)]})),B=()=>{let q=T.mktempSync(),A=v.join(q,"stacktrace.log"),V=String(g.length+1).length,W=g.map((X,F)=>`${`${F+1}.`.padStart(V," ")} ${is(X)} +`).join("");throw T.writeFileSync(A,W),T.detachTemp(q),new nt(z.STACK_OVERFLOW_RESOLUTION,`Encountered a stack overflow when resolving peer dependencies; cf ${M.fromPortablePath(A)}`)},b=q=>{let A=r.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: The resolution should have been registered");let V=i.get(A);if(!V)throw new Error("Assertion failed: The package could not be found");return V},R=(q,A,V,{top:W,optional:X})=>{g.length>1e3&&B(),g.push(A);let F=H(q,A,V,{top:W,optional:X});return g.pop(),F},H=(q,A,V,{top:W,optional:X})=>{if(n.has(A.locatorHash))return;n.add(A.locatorHash),X||s.delete(A.locatorHash);let F=i.get(A.locatorHash);if(!F){if(c)return;throw new Error(`Assertion failed: The package (${lt(t.configuration,A)}) should have been registered`)}let D=[],he=[],pe=[],Ne=[],Pe=[];for(let re of Array.from(F.dependencies.values())){if(F.peerDependencies.has(re.identHash)&&F.locatorHash!==W)continue;if(hA(re))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");o.delete(re.descriptorHash);let se=X;if(!se){let ee=F.dependenciesMeta.get(St(re));if(typeof ee!="undefined"){let Ue=ee.get(null);typeof Ue!="undefined"&&Ue.optional&&(se=!0)}}let be=r.get(re.descriptorHash);if(!be){if(c)continue;throw new Error(`Assertion failed: The resolution (${Xt(t.configuration,re)}) should have been registered`)}let ae=E.get(be)||i.get(be);if(!ae)throw new Error(`Assertion failed: The package (${be}, resolved from ${Xt(t.configuration,re)}) should have been registered`);if(ae.peerDependencies.size===0){R(re,ae,new Map,{top:W,optional:se});continue}let Ae=u.get(ae.locatorHash);typeof Ae=="number"&&Ae>=2&&B();let De,$,G=new Set,Ce;he.push(()=>{De=kx(re,A.locatorHash),$=Px(ae,A.locatorHash),F.dependencies.delete(re.identHash),F.dependencies.set(De.identHash,De),r.set(De.descriptorHash,$.locatorHash),e.set(De.descriptorHash,De),i.set($.locatorHash,$),D.push([ae,De,$])}),pe.push(()=>{var ee;Ce=new Map;for(let Ue of $.peerDependencies.values()){let Oe=F.dependencies.get(Ue.identHash);if(!Oe&&cp(A,Ue)&&(Oe=q),(!Oe||Oe.range==="missing:")&&$.dependencies.has(Ue.identHash)){$.peerDependencies.delete(Ue.identHash);continue}Oe||(Oe=Yt(Ue,"missing:")),$.dependencies.set(Oe.identHash,Oe),hA(Oe)&&Pl(p,Oe.descriptorHash).add($.locatorHash),f.set(Oe.identHash,Oe),Oe.range==="missing:"&&G.add(Oe.identHash),Ce.set(Ue.identHash,(ee=V.get(Ue.identHash))!=null?ee:$.locatorHash)}$.dependencies=new Map(gn($.dependencies,([Ue,Oe])=>St(Oe)))}),Ne.push(()=>{if(!i.has($.locatorHash))return;let ee=u.get(ae.locatorHash),Ue=typeof ee!="undefined"?ee+1:1;u.set(ae.locatorHash,Ue),R(De,$,Ce,{top:W,optional:se}),u.set(ae.locatorHash,Ue-1)}),Pe.push(()=>{let ee=F.dependencies.get(re.identHash);if(typeof ee=="undefined")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let Ue=r.get(ee.descriptorHash);if(typeof Ue=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");if(Pl(m,Ue).add(A.locatorHash),!!i.has($.locatorHash)){for(let Oe of $.peerDependencies.values()){let vt=Ce.get(Oe.identHash);if(typeof vt=="undefined")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");hu(pu(d,vt),St(Oe)).push($.locatorHash)}for(let Oe of G)$.dependencies.delete(Oe)}})}for(let re of[...he,...pe])re();let qe;do{qe=!0;for(let[re,se,be]of D){if(!i.has(be.locatorHash))continue;let ae=pu(h,re.locatorHash),Ae=zi(...[...be.dependencies.values()].map(Ce=>{let ee=Ce.range!=="missing:"?r.get(Ce.descriptorHash):"missing:";if(typeof ee=="undefined")throw new Error(`Assertion failed: Expected the resolution for ${Xt(t.configuration,Ce)} to have been registered`);return ee===W?`${ee} (top)`:ee}),se.identHash),De=ae.get(Ae);if(typeof De=="undefined"){ae.set(Ae,se);continue}if(De===se)continue;qe=!1,i.delete(be.locatorHash),e.delete(se.descriptorHash),r.delete(se.descriptorHash),n.delete(be.locatorHash);let $=p.get(se.descriptorHash)||[],G=[F.locatorHash,...$];p.delete(se.descriptorHash);for(let Ce of G){let ee=i.get(Ce);typeof ee!="undefined"&&ee.dependencies.set(se.identHash,De)}}}while(!qe);for(let re of[...Ne,...Pe])re()};for(let q of t.workspaces){let A=q.anchoredLocator;o.delete(q.anchoredDescriptor.descriptorHash),R(q.anchoredDescriptor,A,new Map,{top:A.locatorHash,optional:!1})}var L;(function(V){V[V.NotProvided=0]="NotProvided",V[V.NotCompatible=1]="NotCompatible"})(L||(L={}));let K=[];for(let[q,A]of m){let V=i.get(q);if(typeof V=="undefined")throw new Error("Assertion failed: Expected the root to be registered");let W=d.get(q);if(typeof W!="undefined")for(let X of A){let F=i.get(X);if(typeof F!="undefined")for(let[D,he]of W){let pe=In(D);if(F.peerDependencies.has(pe.identHash))continue;let Ne=`p${zi(X,D,q).slice(0,5)}`;a.set(Ne,{subject:X,requested:pe,rootRequester:q,allRequesters:he});let Pe=V.dependencies.get(pe.identHash);if(typeof Pe!="undefined"){let qe=b(Pe),re=(ne=qe.version)!=null?ne:"0.0.0",se=new Set;for(let ae of he){let Ae=i.get(ae);if(typeof Ae=="undefined")throw new Error("Assertion failed: Expected the link to be registered");let De=Ae.peerDependencies.get(pe.identHash);if(typeof De=="undefined")throw new Error("Assertion failed: Expected the ident to be registered");se.add(De.range)}[...se].every(ae=>{if(ae.startsWith(Yr.protocol)){if(!t.tryWorkspaceByLocator(qe))return!1;ae=ae.slice(Yr.protocol.length),(ae==="^"||ae==="~")&&(ae="*")}return lc(re,ae)})||K.push({type:1,subject:F,requested:pe,requester:V,version:re,hash:Ne,requirementCount:he.length})}else{let qe=V.peerDependenciesMeta.get(D);(qe==null?void 0:qe.optional)||K.push({type:0,subject:F,requested:pe,requester:V,hash:Ne})}}}}let J=[q=>Rx(q.subject),q=>St(q.requested),q=>`${q.type}`];for(let q of gn(K,J))switch(q.type){case 0:l==null||l.reportWarning(z.MISSING_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} doesn't provide ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}), requested by ${Vr(t.configuration,q.requester)}`);break;case 1:{let A=q.requirementCount>1?"and some of its descendants request":"requests";l==null||l.reportWarning(z.INCOMPATIBLE_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} provides ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}) with version ${fp(t.configuration,q.version)}, which doesn't satisfy what ${Vr(t.configuration,q.requester)} ${A}`)}break}K.length>0&&(l==null||l.reportWarning(z.UNNAMED,`Some peer dependencies are incorrectly met; run ${Ve(t.configuration,"yarn explain peer-requirements ",Le.CODE)} for details, where ${Ve(t.configuration,"",Le.CODE)} is the six-letter p-prefixed code`))}var Po;(function(l){l.VERSION="version",l.COMMAND_NAME="commandName",l.PLUGIN_NAME="pluginName",l.INSTALL_COUNT="installCount",l.PROJECT_COUNT="projectCount",l.WORKSPACE_COUNT="workspaceCount",l.DEPENDENCY_COUNT="dependencyCount",l.EXTENSION="packageExtension"})(Po||(Po={}));var Rd=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let i=this.getRegistryPath();this.isNew=!T.existsSync(i),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue(Po.VERSION,e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue(Po.COMMAND_NAME,e||"")}reportPluginName(e){this.reportValue(Po.PLUGIN_NAME,e)}reportProject(e){this.reportEnumerator(Po.PROJECT_COUNT,e)}reportInstall(e){this.reportHit(Po.INSTALL_COUNT,e)}reportPackageExtension(e){this.reportValue(Po.EXTENSION,e)}reportWorkspaceCount(e){this.reportValue(Po.WORKSPACE_COUNT,String(e))}reportDependencyCount(e){this.reportValue(Po.DEPENDENCY_COUNT,String(e))}reportValue(e,r){Pl(this.values,e).add(r)}reportEnumerator(e,r){Pl(this.enumerators,e).add(zi(r))}reportHit(e,r="*"){let i=pu(this.hits,e),n=na(i,r,()=>0);i.set(r,n+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return v.join(e,"telemetry.json")}sendReport(e){var u,g,f;let r=this.getRegistryPath(),i;try{i=T.readJsonSync(r)}catch{i={}}let n=Date.now(),s=this.configuration.get("telemetryInterval")*24*60*60*1e3,a=((u=i.lastUpdate)!=null?u:n+s+Math.floor(s*Math.random()))+s;if(a>n&&i.lastUpdate!=null)return;try{T.mkdirSync(v.dirname(r),{recursive:!0}),T.writeJsonSync(r,{lastUpdate:n})}catch{return}if(a>n||!i.blocks)return;let l=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,c=h=>iP(l,h,{configuration:this.configuration}).catch(()=>{});for(let[h,p]of Object.entries((g=i.blocks)!=null?g:{})){if(Object.keys(p).length===0)continue;let d=p;d.userId=h,d.reportType="primary";for(let B of Object.keys((f=d.enumerators)!=null?f:{}))d.enumerators[B]=d.enumerators[B].length;c(d);let m=new Map,E=20;for(let[B,b]of Object.entries(d.values))b.length>0&&m.set(B,b.slice(0,E));for(;m.size>0;){let B={};B.userId=h,B.reportType="secondary",B.metrics={};for(let[b,R]of m)B.metrics[b]=R.shift(),R.length===0&&m.delete(b);c(B)}}}applyChanges(){var o,a,l,c,u,g,f,h,p;let e=this.getRegistryPath(),r;try{r=T.readJsonSync(e)}catch{r={}}let i=(o=this.configuration.get("telemetryUserId"))!=null?o:"*",n=r.blocks=(a=r.blocks)!=null?a:{},s=n[i]=(l=n[i])!=null?l:{};for(let d of this.hits.keys()){let m=s.hits=(c=s.hits)!=null?c:{},E=m[d]=(u=m[d])!=null?u:{};for(let[B,b]of this.hits.get(d))E[B]=((g=E[B])!=null?g:0)+b}for(let d of["values","enumerators"])for(let m of this[d].keys()){let E=s[d]=(f=s[d])!=null?f:{};E[m]=[...new Set([...(h=E[m])!=null?h:[],...(p=this[d].get(m))!=null?p:[]])]}T.mkdirSync(v.dirname(e),{recursive:!0}),T.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};var fF=ie(require("child_process")),R$=ie(ml());var hF=ie(require("fs"));var Yg=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);function cUe(t){let e=M.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,fF.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})}):(0,fF.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})})}async function i0({binaryVersion:t,pluginConfiguration:e}){async function r(){let n=new oo({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await i(n)}catch(s){process.stdout.write(n.error(s)),process.exitCode=1}}async function i(n){var p,d,m,E,B;let s=process.versions.node,o=">=12 <14 || 14.2 - 14.9 || >14.10.0";if(process.env.YARN_IGNORE_NODE!=="1"&&!qt.satisfiesWithPrereleases(s,o))throw new me(`This tool requires a Node version compatible with ${o} (got ${s}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let a=await fe.find(M.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),l=a.get("yarnPath"),c=a.get("ignorePath"),u=a.get("ignoreCwd"),g=M.toPortablePath(M.resolve(process.argv[1])),f=b=>T.readFilePromise(b).catch(()=>Buffer.of());if(!c&&!u&&await(async()=>l===g||Buffer.compare(...await Promise.all([f(l),f(g)]))===0)()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await i(n);return}else if(l!==null&&!c)if(!T.existsSync(l))process.stdout.write(n.error(new Error(`The "yarn-path" option has been set (in ${a.sources.get("yarnPath")}), but the specified location doesn't exist (${l}).`))),process.exitCode=1;else try{cUe(l)}catch(b){process.exitCode=b.code||1}else{c&&delete process.env.YARN_IGNORE_PATH,a.get("enableTelemetry")&&!R$.isCI&&process.stdout.isTTY&&(fe.telemetry=new Rd(a,"puba9cdc10ec5790a2cf4969dd413a47270")),(p=fe.telemetry)==null||p.reportVersion(t);for(let[L,K]of a.plugins.entries()){Yg.has((m=(d=L.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:d[1])!=null?m:"")&&((E=fe.telemetry)==null||E.reportPluginName(L));for(let J of K.commands||[])n.register(J)}let R=n.process(process.argv.slice(2));R.help||(B=fe.telemetry)==null||B.reportCommandName(R.path.join(" "));let H=R.cwd;if(typeof H!="undefined"&&!u){let L=(0,hF.realpathSync)(process.cwd()),K=(0,hF.realpathSync)(H);if(L!==K){process.chdir(H),await r();return}}await n.runExit(R,{cwd:M.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}}return r().catch(n=>{process.stdout.write(n.stack||n.message),process.exitCode=1}).finally(()=>T.rmtempPromise())}function F$(t){t.Command.Path=(...e)=>r=>{r.paths=r.paths||[],r.paths.push(e)};for(let e of["Array","Boolean","String","Proxy","Rest","Counter"])t.Command[e]=(...r)=>(i,n)=>{let s=t.Option[e](...r);Object.defineProperty(i,`__${n}`,{configurable:!1,enumerable:!0,get(){return s},set(o){this[n]=o}})};return t}var iC={};it(iC,{BaseCommand:()=>Be,WorkspaceRequiredError:()=>rt,getDynamicLibs:()=>Wie,getPluginConfiguration:()=>F0,main:()=>i0,openWorkspace:()=>rf,pluginCommands:()=>Yg});var Be=class extends ye{constructor(){super(...arguments);this.cwd=Y.String("--cwd",{hidden:!0})}};var rt=class extends me{constructor(e,r){let i=v.relative(e,r),n=v.join(e,Ze.fileName);super(`This command can only be run from within a workspace of your project (${i} isn't a workspace of ${n}).`)}};var dJe=ie(Or());Ss();var CJe=ie(gN()),Wie=()=>new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",vh],["semver",dJe],["typanion",lu],["yup",CJe]]);async function rf(t,e){let{project:r,workspace:i}=await Ke.find(t,e);if(!i)throw new rt(r.cwd,e);return i}var x_e=ie(Or());Ss();var k_e=ie(gN());var hL={};it(hL,{dedupeUtils:()=>zN,default:()=>Q4e,suggestUtils:()=>LN});var WAe=ie(ml());var roe=ie(aC());Ss();var LN={};it(LN,{Modifier:()=>Lo,Strategy:()=>Fr,Target:()=>vr,WorkspaceModifier:()=>af,applyModifier:()=>Zse,extractDescriptorFromPath:()=>ON,extractRangeModifier:()=>Xse,fetchDescriptorFrom:()=>MN,findProjectDescriptors:()=>toe,getModifier:()=>AC,getSuggestedDescriptors:()=>lC,makeWorkspaceDescriptor:()=>eoe,toWorkspaceModifier:()=>$se});var TN=ie(Or()),L3e="workspace:",vr;(function(i){i.REGULAR="dependencies",i.DEVELOPMENT="devDependencies",i.PEER="peerDependencies"})(vr||(vr={}));var Lo;(function(i){i.CARET="^",i.TILDE="~",i.EXACT=""})(Lo||(Lo={}));var af;(function(i){i.CARET="^",i.TILDE="~",i.EXACT="*"})(af||(af={}));var Fr;(function(s){s.KEEP="keep",s.REUSE="reuse",s.PROJECT="project",s.LATEST="latest",s.CACHE="cache"})(Fr||(Fr={}));function AC(t,e){return t.exact?Lo.EXACT:t.caret?Lo.CARET:t.tilde?Lo.TILDE:e.configuration.get("defaultSemverRangePrefix")}var T3e=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Xse(t,{project:e}){let r=t.match(T3e);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function Zse(t,e){let{protocol:r,source:i,params:n,selector:s}=S.parseRange(t.range);return TN.default.valid(s)&&(s=`${e}${t.range}`),S.makeDescriptor(t,S.makeRange({protocol:r,source:i,params:n,selector:s}))}function $se(t){switch(t){case Lo.CARET:return af.CARET;case Lo.TILDE:return af.TILDE;case Lo.EXACT:return af.EXACT;default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function eoe(t,e){return S.makeDescriptor(t.anchoredDescriptor,`${L3e}${$se(e)}`)}async function toe(t,{project:e,target:r}){let i=new Map,n=s=>{let o=i.get(s.descriptorHash);return o||i.set(s.descriptorHash,o={descriptor:s,locators:[]}),o};for(let s of e.workspaces)if(r===vr.PEER){let o=s.manifest.peerDependencies.get(t.identHash);o!==void 0&&n(o).locators.push(s.locator)}else{let o=s.manifest.dependencies.get(t.identHash),a=s.manifest.devDependencies.get(t.identHash);r===vr.DEVELOPMENT?a!==void 0?n(a).locators.push(s.locator):o!==void 0&&n(o).locators.push(s.locator):o!==void 0?n(o).locators.push(s.locator):a!==void 0&&n(a).locators.push(s.locator)}return i}async function ON(t,{cwd:e,workspace:r}){return await M3e(async i=>{v.isAbsolute(t)||(t=v.relative(r.cwd,v.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:n}=r,s=await MN(S.makeIdent(null,"archive"),t,{project:r.project,cache:i,workspace:r});if(!s)throw new Error("Assertion failed: The descriptor should have been found");let o=new ei,a=n.configuration.makeResolver(),l=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:i,fetcher:l,report:o,resolver:a},u=a.bindDescriptor(s,r.anchoredLocator,c),g=S.convertDescriptorToLocator(u),f=await l.fetch(g,c),h=await Ze.find(f.prefixPath,{baseFs:f.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return S.makeDescriptor(h.name,t)})}async function lC(t,{project:e,workspace:r,cache:i,target:n,modifier:s,strategies:o,maxResults:a=Infinity}){if(!(a>=0))throw new Error(`Invalid maxResults (${a})`);if(t.range!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${S.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let l=typeof r!="undefined"&&r!==null&&r.manifest[n].get(t.identHash)||null,c=[],u=[],g=async f=>{try{await f()}catch(h){u.push(h)}};for(let f of o){if(c.length>=a)break;switch(f){case Fr.KEEP:await g(async()=>{l&&c.push({descriptor:l,name:`Keep ${S.prettyDescriptor(e.configuration,l)}`,reason:"(no changes)"})});break;case Fr.REUSE:await g(async()=>{for(let{descriptor:h,locators:p}of(await toe(t,{project:e,target:n})).values()){if(p.length===1&&p[0].locatorHash===r.anchoredLocator.locatorHash&&o.includes(Fr.KEEP))continue;let d=`(originally used by ${S.prettyLocator(e.configuration,p[0])}`;d+=p.length>1?` and ${p.length-1} other${p.length>2?"s":""})`:")",c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:d})}});break;case Fr.CACHE:await g(async()=>{for(let h of e.storedDescriptors.values())h.identHash===t.identHash&&c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:"(already used somewhere in the lockfile)"})});break;case Fr.PROJECT:await g(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let h=e.tryWorkspaceByIdent(t);if(h===null)return;let p=eoe(h,s);c.push({descriptor:p,name:`Attach ${S.prettyDescriptor(e.configuration,p)}`,reason:`(local workspace at ${ue.pretty(e.configuration,h.relativeCwd,ue.Type.PATH)})`})});break;case Fr.LATEST:await g(async()=>{if(t.range!=="unknown")c.push({descriptor:t,name:`Use ${S.prettyRange(e.configuration,t.range)}`,reason:"(explicit range requested)"});else if(n===vr.PEER)c.push({descriptor:S.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))c.push({descriptor:null,name:"Resolve from latest",reason:ue.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let h=await MN(t,"latest",{project:e,cache:i,workspace:r,preserveModifier:!1});h&&(h=Zse(h,s),c.push({descriptor:h,name:`Use ${S.prettyDescriptor(e.configuration,h)}`,reason:"(resolved from latest)"}))}});break}}return{suggestions:c.slice(0,a),rejections:u.slice(0,a)}}async function MN(t,e,{project:r,cache:i,workspace:n,preserveModifier:s=!0}){let o=S.makeDescriptor(t,e),a=new ei,l=r.configuration.makeFetcher(),c=r.configuration.makeResolver(),u={project:r,fetcher:l,cache:i,checksums:r.storedChecksums,report:a,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},g=_(P({},u),{resolver:c,fetchOptions:u}),f=c.bindDescriptor(o,n.anchoredLocator,g),h=await c.getCandidates(f,new Map,g);if(h.length===0)return null;let p=h[0],{protocol:d,source:m,params:E,selector:B}=S.parseRange(S.convertToManifestRange(p.reference));if(d===r.configuration.get("defaultProtocol")&&(d=null),TN.default.valid(B)&&s!==!1){let b=typeof s=="string"?s:o.range;B=Xse(b,{project:r})+B}return S.makeDescriptor(p,S.makeRange({protocol:d,source:m,params:E,selector:B}))}async function M3e(t){return await T.mktempPromise(async e=>{let r=fe.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Qt(e,{configuration:r,check:!1,immutable:!1}))})}var cC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=Y.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=Y.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=Y.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=Y.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=Y.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=Y.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.silent=Y.Boolean("--silent",{hidden:!0});this.packages=Y.Rest()}async execute(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=[...s?[Fr.REUSE]:[],Fr.PROJECT,...this.cached?[Fr.CACHE]:[],Fr.LATEST],l=s?Infinity:1,c=await Promise.all(this.packages.map(async m=>{let E=m.match(/^\.{0,2}\//)?await ON(m,{cwd:this.context.cwd,workspace:i}):S.parseDescriptor(m),B=O3e(i,E,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional}),b=await lC(E,{project:r,workspace:i,cache:n,target:B,modifier:o,strategies:a,maxResults:l});return[E,b,B]})),u=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[E,{suggestions:B,rejections:b}]of c)if(B.filter(H=>H.descriptor!==null).length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),m.reportSeparator(),m.reportExceptionOnce(H)}});if(u.hasErrors())return u.exitCode();let g=!1,f=[],h=[];for(let[,{suggestions:m},E]of c){let B,b=m.filter(K=>K.descriptor!==null),R=b[0].descriptor,H=b.every(K=>S.areDescriptorsEqual(K.descriptor,R));b.length===1||H?B=R:(g=!0,{answer:B}=await(0,roe.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:m.map(({descriptor:K,name:J,reason:ne})=>K?{name:J,hint:ne,descriptor:K}:{name:J,hint:ne,disabled:!0}),onCancel:()=>process.exit(130),result(K){return this.find(K,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let L=i.manifest[E].get(B.identHash);(typeof L=="undefined"||L.descriptorHash!==B.descriptorHash)&&(i.manifest[E].set(B.identHash,B),this.optional&&(E==="dependencies"?i.manifest.ensureDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0:E==="peerDependencies"&&(i.manifest.ensurePeerDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0)),typeof L=="undefined"?f.push([i,E,B,a]):h.push([i,E,L,B]))}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyAddition,f),await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),g&&this.context.stdout.write(` +`),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};cC.paths=[["add"]],cC.usage=ye.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});var ioe=cC;function O3e(t,e,{dev:r,peer:i,preferDev:n,optional:s}){let o=t.manifest[vr.REGULAR].has(e.identHash),a=t.manifest[vr.DEVELOPMENT].has(e.identHash),l=t.manifest[vr.PEER].has(e.identHash);if((r||i)&&o)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(s&&a)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(s&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||n)&&s)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);return i?vr.PEER:r||n?vr.DEVELOPMENT:o?vr.REGULAR:a?vr.DEVELOPMENT:vr.REGULAR}var uC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);if(await r.restoreInstallState(),this.name){let o=(await Kt.getPackageAccessibleBinaries(i,{project:r})).get(this.name);if(!o)throw new me(`Couldn't find a binary named "${this.name}" for package "${S.prettyLocator(e,i)}"`);let[,a]=o;return this.context.stdout.write(`${a} +`),0}return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async s=>{let o=await Kt.getPackageAccessibleBinaries(i,{project:r}),l=Array.from(o.keys()).reduce((c,u)=>Math.max(c,u.length),0);for(let[c,[u,g]]of o)s.reportJson({name:c,source:S.stringifyIdent(u),path:g});if(this.verbose)for(let[c,[u]]of o)s.reportInfo(null,`${c.padEnd(l," ")} ${S.prettyLocator(e,u)}`);else for(let c of o.keys())s.reportInfo(null,c)})).exitCode()}};uC.paths=[["bin"]],uC.usage=ye.Usage({description:"get the path to a binary script",details:` + When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. + + When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. + `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var noe=uC;var gC=class extends Be{constructor(){super(...arguments);this.mirror=Y.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=Y.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await Qt.find(e);return(await Fe.start({configuration:e,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&r.mirrorCwd!==null,s=!this.mirror;n&&(await T.removePromise(r.mirrorCwd),await e.triggerHook(o=>o.cleanGlobalArtifacts,e)),s&&await T.removePromise(r.cwd)})).exitCode()}};gC.paths=[["cache","clean"],["cache","clear"]],gC.usage=ye.Usage({description:"remove the shared cache files",details:` + This command will remove all the files from the cache. + `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var soe=gC;var ooe=ie(p0()),KN=ie(require("util")),fC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=Y.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=this.name.replace(/[.[].*$/,""),i=this.name.replace(/^[^.[]*/,"");if(typeof e.settings.get(r)=="undefined")throw new me(`Couldn't find a configuration settings named "${r}"`);let s=e.getSpecial(r,{hideSecrets:!this.unsafe,getNativePaths:!0}),o=de.convertMapsToIndexableObjects(s),a=i?(0,ooe.default)(o,i):o,l=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async c=>{c.reportJson(a)});if(!this.json){if(typeof a=="string")return this.context.stdout.write(`${a} +`),l.exitCode();KN.inspect.styles.name="cyan",this.context.stdout.write(`${(0,KN.inspect)(a,{depth:Infinity,colors:e.get("enableColors"),compact:!1})} +`)}return l.exitCode()}};fC.paths=[["config","get"]],fC.usage=ye.Usage({description:"read a configuration settings",details:` + This command will print a configuration setting. + + Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. + `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var aoe=fC;var Iae=ie(qN()),Eae=ie(p0()),yae=ie(mae()),JN=ie(require("util")),pC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String();this.value=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);if(i==="enableStrictSettings")throw new me("This setting only affects the file it's in, and thus cannot be set from the CLI");let o=this.json?JSON.parse(this.value):this.value;await(this.home?h=>fe.updateHomeConfiguration(h):h=>fe.updateConfiguration(r(),h))(h=>{if(n){let p=(0,Iae.default)(h);return(0,yae.default)(p,this.name,o),p}else return _(P({},h),{[i]:o})});let c=(await fe.find(this.context.cwd,this.context.plugins)).getSpecial(i,{hideSecrets:!0,getNativePaths:!0}),u=de.convertMapsToIndexableObjects(c),g=n?(0,Eae.default)(u,n):u;return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async h=>{JN.inspect.styles.name="cyan",h.reportInfo(z.UNNAMED,`Successfully set ${this.name} to ${(0,JN.inspect)(g,{depth:Infinity,colors:e.get("enableColors"),compact:!1})}`)})).exitCode()}};pC.paths=[["config","set"]],pC.usage=ye.Usage({description:"change a configuration settings",details:` + This command will set a configuration setting. + + When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). + + When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. + `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var wae=pC;var Dae=ie(qN()),Rae=ie(Ld()),Fae=ie(Pae()),dC=class extends Be{constructor(){super(...arguments);this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);let o=this.home?l=>fe.updateHomeConfiguration(l):l=>fe.updateConfiguration(r(),l);return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async l=>{let c=!1;await o(u=>{if(!(0,Rae.default)(u,this.name))return l.reportWarning(z.UNNAMED,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),c=!0,u;let g=n?(0,Dae.default)(u):P({},u);return(0,Fae.default)(g,this.name),g}),c||l.reportInfo(z.UNNAMED,`Successfully unset ${this.name}`)})).exitCode()}};dC.paths=[["config","unset"]],dC.usage=ye.Usage({description:"unset a configuration setting",details:` + This command will unset a configuration setting. + `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var Nae=dC;var WN=ie(require("util")),CC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=Y.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{if(e.invalid.size>0&&!this.json){for(let[n,s]of e.invalid)i.reportError(z.INVALID_CONFIGURATION_KEY,`Invalid configuration key "${n}" in ${s}`);i.reportSeparator()}if(this.json){let n=de.sortMap(e.settings.keys(),s=>s);for(let s of n){let o=e.settings.get(s),a=e.getSpecial(s,{hideSecrets:!0,getNativePaths:!0}),l=e.sources.get(s);this.verbose?i.reportJson({key:s,effective:a,source:l}):i.reportJson(P({key:s,effective:a,source:l},o))}}else{let n=de.sortMap(e.settings.keys(),a=>a),s=n.reduce((a,l)=>Math.max(a,l.length),0),o={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let a=n.map(c=>{let u=e.settings.get(c);if(!u)throw new Error(`Assertion failed: This settings ("${c}") should have been registered`);let g=this.why?e.sources.get(c)||"":u.description;return[c,g]}),l=a.reduce((c,[,u])=>Math.max(c,u.length),0);for(let[c,u]of a)i.reportInfo(null,`${c.padEnd(s," ")} ${u.padEnd(l," ")} ${(0,WN.inspect)(e.getSpecial(c,{hideSecrets:!0,getNativePaths:!0}),o)}`)}else for(let a of n)i.reportInfo(null,`${a.padEnd(s," ")} ${(0,WN.inspect)(e.getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),o)}`)}})).exitCode()}};CC.paths=[["config"]],CC.usage=ye.Usage({description:"display the current configuration",details:` + This command prints the current active configuration settings. + `,examples:[["Print the active configuration settings","$0 config"]]});var Lae=CC;Ss();var zN={};it(zN,{Strategy:()=>Oc,acceptedStrategies:()=>Hze,dedupe:()=>VN});var Tae=ie(Nn()),Oc;(function(e){e.HIGHEST="highest"})(Oc||(Oc={}));var Hze=new Set(Object.values(Oc)),Gze={highest:async(t,e,{resolver:r,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of t.storedResolutions){let c=t.storedDescriptors.get(a);if(typeof c=="undefined")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);de.getSetWithDefault(o,c.identHash).add(l)}return Array.from(t.storedDescriptors.values(),async a=>{if(e.length&&!Tae.default.isMatch(S.stringifyIdent(a),e))return null;let l=t.storedResolutions.get(a.descriptorHash);if(typeof l=="undefined")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=t.originalPackages.get(l);if(typeof c=="undefined"||!r.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u=="undefined")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(m=>{let E=t.originalPackages.get(m);if(typeof E=="undefined")throw new Error(`Assertion failed: The package (${m}) should have been registered`);return E.reference}),f=await r.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h=="undefined")return null;let p=h.locatorHash,d=t.originalPackages.get(p);if(typeof d=="undefined")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:d}})}};async function VN(t,{strategy:e,patterns:r,cache:i,report:n}){let{configuration:s}=t,o=new ei,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:t.storedChecksums,fetcher:l,project:t,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:t,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let f=await Gze[e](t,r,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=Xi.progressViaCounter(f.length);n.reportProgress(h);let p=0;await Promise.all(f.map(E=>E.then(B=>{if(B===null)return;p++;let{descriptor:b,currentPackage:R,updatedPackage:H}=B;n.reportInfo(z.UNNAMED,`${S.prettyDescriptor(s,b)} can be deduped from ${S.prettyLocator(s,R)} to ${S.prettyLocator(s,H)}`),n.reportJson({descriptor:S.stringifyDescriptor(b),currentResolution:S.stringifyLocator(R),updatedResolution:S.stringifyLocator(H)}),t.storedResolutions.set(b.descriptorHash,H.locatorHash)}).finally(()=>h.tick())));let d;switch(p){case 0:d="No packages";break;case 1:d="One package";break;default:d=`${p} packages`}let m=ue.pretty(s,e,ue.Type.CODE);return n.reportInfo(z.UNNAMED,`${d} can be deduped using the ${m} strategy`),p})}var mC=class extends Be{constructor(){super(...arguments);this.strategy=Y.String("-s,--strategy",Oc.HIGHEST,{description:"The strategy to use when deduping dependencies",validator:Yi(Oc)});this.check=Y.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=await Qt.find(e);await r.restoreInstallState({restoreResolutions:!1});let n=0,s=await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout,json:this.json},async o=>{n=await VN(r,{strategy:this.strategy,patterns:this.patterns,cache:i,report:o})});return s.hasErrors()?s.exitCode():this.check?n?1:0:(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async a=>{await r.install({cache:i,report:a,mode:this.mode})})).exitCode()}};mC.paths=[["dedupe"]],mC.usage=ye.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});var Mae=mC;var Y0=class extends Be{async execute(){let{plugins:e}=await fe.find(this.context.cwd,this.context.plugins),r=[];for(let o of e){let{commands:a}=o[1];if(a){let c=oo.from(a).definitions();r.push([o[0],c])}}let i=this.cli.definitions(),n=(o,a)=>o.split(" ").slice(1).join()===a.split(" ").slice(1).join(),s=Kae()["@yarnpkg/builder"].bundles.standard;for(let o of r){let a=o[1];for(let l of a)i.find(c=>n(c.path,l.path)).plugin={name:o[0],isDefault:s.includes(o[0])}}this.context.stdout.write(`${JSON.stringify(i,null,2)} +`)}};Y0.paths=[["--clipanion=definitions"]];var Uae=Y0;var q0=class extends Be{async execute(){this.context.stdout.write(this.cli.usage(null))}};q0.paths=[["help"],["--help"],["-h"]];var Hae=q0;var _N=class extends Be{constructor(){super(...arguments);this.leadingArgument=Y.String();this.args=Y.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!S.tryParseIdent(this.leadingArgument)){let e=v.resolve(this.context.cwd,M.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:e})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}},Gae=_N;var J0=class extends Be{async execute(){this.context.stdout.write(`${Zr||""} +`)}};J0.paths=[["-v"],["--version"]];var jae=J0;var IC=class extends Be{constructor(){super(...arguments);this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState(),await Kt.executePackageShellcode(i,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:r})}};IC.paths=[["exec"]],IC.usage=ye.Usage({description:"execute a shell script",details:` + This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. + + It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). + `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});var Yae=IC;Ss();var EC=class extends Be{constructor(){super(...arguments);this.hash=Y.String({required:!1,validator:fv(gv(),[hv(/^p[0-9a-f]{5}$/)])})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState({restoreResolutions:!1}),await r.applyLightResolution(),typeof this.hash!="undefined"?await jze(this.hash,r,{stdout:this.context.stdout}):(await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async n=>{var o;let s=[([,a])=>S.stringifyLocator(r.storedPackages.get(a.subject)),([,a])=>S.stringifyIdent(a.requested)];for(let[a,l]of de.sortMap(r.peerRequirements,s)){let c=r.storedPackages.get(l.subject);if(typeof c=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let u=r.storedPackages.get(l.rootRequester);if(typeof u=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let g=(o=c.dependencies.get(l.requested.identHash))!=null?o:null,f=ue.pretty(e,a,ue.Type.CODE),h=S.prettyLocator(e,c),p=S.prettyIdent(e,l.requested),d=S.prettyIdent(e,u),m=l.allRequesters.length-1,E=`descendant${m===1?"":"s"}`,B=m>0?` and ${m} ${E}`:"",b=g!==null?"provides":"doesn't provide";n.reportInfo(null,`${f} \u2192 ${h} ${b} ${p} to ${d}${B}`)}})).exitCode()}};EC.paths=[["explain","peer-requirements"]],EC.usage=ye.Usage({description:"explain a set of peer requirements",details:` + A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. + + When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. + + When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. + + **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). + `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});var qae=EC;async function jze(t,e,r){let{configuration:i}=e,n=e.peerRequirements.get(t);if(typeof n=="undefined")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Fe.start({configuration:i,stdout:r.stdout,includeFooter:!1},async o=>{var E,B;let a=e.storedPackages.get(n.subject);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(E=a.dependencies.get(n.requested.identHash))!=null?E:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g=="undefined")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(b=>{let R=e.storedPackages.get(b);if(typeof R=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let H=S.devirtualizeLocator(R),L=e.storedPackages.get(H.locatorHash);if(typeof L=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let K=L.peerDependencies.get(n.requested.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:R,peerDependency:K}});if(g!==null){let b=f.every(({peerDependency:R})=>qt.satisfiesWithPrereleases(g.version,R.range));o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} provides ${S.prettyLocator(i,g)} with version ${S.prettyReference(i,(B=g.version)!=null?B:"")}, which ${b?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} doesn't provide ${S.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ue.mark(i),p=[];for(let{pkg:b,peerDependency:R}of de.sortMap(f,H=>S.stringifyLocator(H.pkg))){let L=(g!==null?qt.satisfiesWithPrereleases(g.version,R.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:S.stringifyLocator(b),prettyLocator:S.prettyLocator(i,b),prettyRange:S.prettyRange(i,R.range),mark:L})}let d=Math.max(...p.map(({stringifiedLocator:b})=>b.length)),m=Math.max(...p.map(({prettyRange:b})=>b.length));for(let{stringifiedLocator:b,prettyLocator:R,prettyRange:H,mark:L}of de.sortMap(p,({stringifiedLocator:K})=>K))o.reportInfo(null,`${R.padEnd(d+(R.length-b.length)," ")} \u2192 ${H.padEnd(m," ")} ${L}`);p.length>1&&(o.reportSeparator(),o.reportInfo(z.UNNAMED,`Note: these requirements start with ${S.prettyLocator(e.configuration,l)}`))})).exitCode()}var Jae=ie(Nn()),yC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=Y.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=Y.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=Y.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=Y.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=Y.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=Y.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i&&!this.all)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=new Set(this.extra);this.cache&&s.add("cache"),this.dependents&&s.add("dependents"),this.manifest&&s.add("manifest");let o=(b,{recursive:R})=>{let H=b.anchoredLocator.locatorHash,L=new Map,K=[H];for(;K.length>0;){let J=K.shift();if(L.has(J))continue;let ne=r.storedPackages.get(J);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the package to be registered");if(L.set(J,ne),S.isVirtualLocator(ne)&&K.push(S.devirtualizeLocator(ne).locatorHash),!(!R&&J!==H))for(let q of ne.dependencies.values()){let A=r.storedResolutions.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");K.push(A)}}return L.values()},a=({recursive:b})=>{let R=new Map;for(let H of r.workspaces)for(let L of o(H,{recursive:b}))R.set(L.locatorHash,L);return R.values()},l=({all:b,recursive:R})=>b&&R?r.storedPackages.values():b?a({recursive:R}):o(i,{recursive:R}),c=({all:b,recursive:R})=>{let H=l({all:b,recursive:R}),L=this.patterns.map(ne=>{let q=S.parseLocator(ne),A=Jae.default.makeRe(S.stringifyIdent(q)),V=S.isVirtualLocator(q),W=V?S.devirtualizeLocator(q):q;return X=>{let F=S.stringifyIdent(X);if(!A.test(F))return!1;if(q.reference==="unknown")return!0;let D=S.isVirtualLocator(X),he=D?S.devirtualizeLocator(X):X;return!(V&&D&&q.reference!==X.reference||W.reference!==he.reference)}}),K=de.sortMap([...H],ne=>S.stringifyLocator(ne));return{selection:K.filter(ne=>L.length===0||L.some(q=>q(ne))),sortedLookup:K}},{selection:u,sortedLookup:g}=c({all:this.all,recursive:this.recursive});if(u.length===0)throw new me("No package matched your request");let f=new Map;if(this.dependents)for(let b of g)for(let R of b.dependencies.values()){let H=r.storedResolutions.get(R.descriptorHash);if(typeof H=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");de.getArrayWithDefault(f,H).push(b)}let h=new Map;for(let b of g){if(!S.isVirtualLocator(b))continue;let R=S.devirtualizeLocator(b);de.getArrayWithDefault(h,R.locatorHash).push(b)}let p={},d={children:p},m=e.makeFetcher(),E={project:r,fetcher:m,cache:n,checksums:r.storedChecksums,report:new ei,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},B=[async(b,R,H)=>{var J,ne;if(!R.has("manifest"))return;let L=await m.fetch(b,E),K;try{K=await Ze.find(L.prefixPath,{baseFs:L.packageFs})}finally{(J=L.releaseFs)==null||J.call(L)}H("Manifest",{License:ue.tuple(ue.Type.NO_HINT,K.license),Homepage:ue.tuple(ue.Type.URL,(ne=K.raw.homepage)!=null?ne:null)})},async(b,R,H)=>{var A;if(!R.has("cache"))return;let L={mockedPackages:r.disabledLocators,unstablePackages:r.conditionalLocators},K=(A=r.storedChecksums.get(b.locatorHash))!=null?A:null,J=n.getLocatorPath(b,K,L),ne;if(J!==null)try{ne=T.statSync(J)}catch{}let q=typeof ne!="undefined"?[ne.size,ue.Type.SIZE]:void 0;H("Cache",{Checksum:ue.tuple(ue.Type.NO_HINT,K),Path:ue.tuple(ue.Type.PATH,J),Size:q})}];for(let b of u){let R=S.isVirtualLocator(b);if(!this.virtuals&&R)continue;let H={},L={value:[b,ue.Type.LOCATOR],children:H};if(p[S.stringifyLocator(b)]=L,this.nameOnly){delete L.children;continue}let K=h.get(b.locatorHash);typeof K!="undefined"&&(H.Instances={label:"Instances",value:ue.tuple(ue.Type.NUMBER,K.length)}),H.Version={label:"Version",value:ue.tuple(ue.Type.NO_HINT,b.version)};let J=(q,A)=>{let V={};if(H[q]=V,Array.isArray(A))V.children=A.map(W=>({value:W}));else{let W={};V.children=W;for(let[X,F]of Object.entries(A))typeof F!="undefined"&&(W[X]={label:X,value:F})}};if(!R){for(let q of B)await q(b,s,J);await e.triggerHook(q=>q.fetchPackageInfo,b,s,J)}b.bin.size>0&&!R&&J("Exported Binaries",[...b.bin.keys()].map(q=>ue.tuple(ue.Type.PATH,q)));let ne=f.get(b.locatorHash);typeof ne!="undefined"&&ne.length>0&&J("Dependents",ne.map(q=>ue.tuple(ue.Type.LOCATOR,q))),b.dependencies.size>0&&!R&&J("Dependencies",[...b.dependencies.values()].map(q=>{var W;let A=r.storedResolutions.get(q.descriptorHash),V=typeof A!="undefined"&&(W=r.storedPackages.get(A))!=null?W:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:V})})),b.peerDependencies.size>0&&R&&J("Peer dependencies",[...b.peerDependencies.values()].map(q=>{var X,F;let A=b.dependencies.get(q.identHash),V=typeof A!="undefined"&&(X=r.storedResolutions.get(A.descriptorHash))!=null?X:null,W=V!==null&&(F=r.storedPackages.get(V))!=null?F:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:W})}))}Hs.emitTree(d,{configuration:e,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};yC.paths=[["info"]],yC.usage=ye.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});var Wae=yC;var W0=ie(ml());Ss();var wC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=Y.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=Y.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.checkCache=Y.Boolean("--check-cache",!1,{description:"Always refetch the packages and ensure that their checksums are consistent"});this.inlineBuilds=Y.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.cacheFolder=Y.String("--cache-folder",{hidden:!0});this.frozenLockfile=Y.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=Y.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=Y.Boolean("--non-interactive",{hidden:!0});this.preferOffline=Y.Boolean("--prefer-offline",{hidden:!0});this.production=Y.Boolean("--production",{hidden:!0});this.registry=Y.String("--registry",{hidden:!0});this.silent=Y.Boolean("--silent",{hidden:!0});this.networkTimeout=Y.String("--network-timeout",{hidden:!0})}async execute(){var c;let e=await fe.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds!="undefined"&&e.useWithSource("",{enableInlineBuilds:this.inlineBuilds},e.startingCwd,{overwrite:!0});let r=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,i=async(u,{error:g})=>{let f=await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async h=>{g?h.reportError(z.DEPRECATED_CLI_SETTINGS,u):h.reportWarning(z.DEPRECATED_CLI_SETTINGS,u)});return f.hasErrors()?f.exitCode():null};if(typeof this.ignoreEngines!="undefined"){let u=await i("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.registry!="undefined"){let u=await i("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(u!==null)return u}if(typeof this.preferOffline!="undefined"){let u=await i("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.production!="undefined"){let u=await i("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(u!==null)return u}if(typeof this.nonInteractive!="undefined"){let u=await i("The --non-interactive option is deprecated",{error:!r});if(u!==null)return u}if(typeof this.frozenLockfile!="undefined"&&(await i("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder!="undefined"){let u=await i("The cache-folder option has been deprecated; use rc settings instead",{error:!W0.default.NETLIFY});if(u!==null)return u}let n=(c=this.immutable)!=null?c:e.get("enableImmutableInstalls");if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{await Yze(e,n)&&(g.reportInfo(z.AUTOMERGE_SUCCESS,"Automatically fixed merge conflicts \u{1F44D}"),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}if(e.projectCwd!==null&&typeof e.sources.get("nodeLinker")=="undefined"){let u=e.projectCwd,g;try{g=await T.readFilePromise(v.join(u,wt.lockfile),"utf8")}catch{}if(g==null?void 0:g.includes("yarn lockfile v1")){let f=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async h=>{h.reportInfo(z.AUTO_NM_SUCCESS,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),h.reportSeparator(),e.use("",{nodeLinker:"node-modules"},u,{overwrite:!0}),await fe.updateConfiguration(u,{nodeLinker:"node-modules"})});if(f.hasErrors())return f.exitCode()}}if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{var f;((f=fe.telemetry)==null?void 0:f.isNew)&&(g.reportInfo(z.TELEMETRY_NOTICE,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),g.reportInfo(z.TELEMETRY_NOTICE,`Run ${ue.pretty(e,"yarn config set --home enableTelemetry 0",ue.Type.CODE)} to disable`),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}let{project:s,workspace:o}=await Ke.find(e,this.context.cwd),a=await Qt.find(e,{immutable:this.immutableCache,check:this.checkCache});if(!o)throw new rt(s.cwd,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!0},async u=>{await s.install({cache:a,report:u,immutable:n,mode:this.mode})})).exitCode()}};wC.paths=[["install"],ye.Default],wC.usage=ye.Usage({description:"install the project dependencies",details:` + This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics: + + - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ). + + - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of \`cacheFolder\` in \`yarn config\` to see where the cache files are stored). + + - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know). + + - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail. + + Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches. + + If the \`--immutable\` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the \`immutablePatterns\` configuration setting). For backward compatibility we offer an alias under the name of \`--frozen-lockfile\`, but it will be removed in a later release. + + If the \`--immutable-cache\` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed). + + If the \`--check-cache\` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them. + + If the \`--inline-builds\` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments. + + If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: + + - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. + + - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. + `,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var zae=wC,qze="|||||||",Jze=">>>>>>>",Wze="=======",Vae="<<<<<<<";async function Yze(t,e){if(!t.projectCwd)return!1;let r=v.join(t.projectCwd,t.get("lockfileFilename"));if(!await T.existsPromise(r))return!1;let i=await T.readFilePromise(r,"utf8");if(!i.includes(Vae))return!1;if(e)throw new nt(z.AUTOMERGE_IMMUTABLE,"Cannot autofix a lockfile when running an immutable install");let[n,s]=zze(i),o,a;try{o=Ei(n),a=Ei(s)}catch(c){throw new nt(z.AUTOMERGE_FAILED_TO_PARSE,"The individual variants of the lockfile failed to parse")}let l=P(P({},o),a);for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await T.changeFilePromise(r,Qa(l),{automaticNewlines:!0}),!0}function zze(t){let e=[[],[]],r=t.split(/\r?\n/g),i=!1;for(;r.length>0;){let n=r.shift();if(typeof n=="undefined")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(Vae)){for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s===Wze){i=!1;break}else if(i||s.startsWith(qze)){i=!0;continue}else e[0].push(s)}for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(Jze))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(` +`),e[1].join(` +`)]}var BC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=Y.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=Y.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=v.resolve(this.context.cwd,M.toPortablePath(this.destination)),o=await fe.find(s,this.context.plugins,{useRc:!1,strict:!1}),{project:a,workspace:l}=await Ke.find(o,s);if(r.cwd===a.cwd)throw new me("Invalid destination; Can't link the project to itself");if(!l)throw new rt(a.cwd,s);let c=r.topLevelWorkspace,u=[];if(this.all){for(let f of a.workspaces)f.manifest.name&&(!f.manifest.private||this.private)&&u.push(f);if(u.length===0)throw new me("No workspace found to be linked in the target project")}else{if(!l.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be linked");if(l.manifest.private&&!this.private)throw new me("The target workspace is marked private - use the --private flag to link it anyway");u.push(l)}for(let f of u){let h=S.stringifyIdent(f.locator),p=this.relative?v.relative(r.cwd,f.cwd):f.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${p}`})}return(await Fe.start({configuration:e,stdout:this.context.stdout},async f=>{await r.install({cache:n,report:f})})).exitCode()}};BC.paths=[["link"]],BC.usage=ye.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var _ae=BC;var QC=class extends Be{constructor(){super(...arguments);this.args=Y.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};QC.paths=[["node"]],QC.usage=ye.Usage({description:"run node with the hook already setup",details:` + This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). + + The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. + `,examples:[["Run a Node script","$0 node ./my-script.js"]]});var Xae=QC;var lAe=ie(require("os"));var rAe=ie(require("os"));var Vze="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Kc(t){let e=await Zt.get(Vze,{configuration:t});return Ei(e.toString())}var bC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{let n=await Kc(e);for(let s of Object.entries(n)){let[l,o]=s,a=o,{experimental:c}=a,u=qr(a,["experimental"]);let g=l;c&&(g+=" [experimental]"),i.reportJson(P({name:l,experimental:c},u)),i.reportInfo(null,g)}})).exitCode()}};bC.paths=[["plugin","list"]],bC.usage=ye.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var Zae=bC;var $ae=ie(Or()),vC=class extends Be{constructor(){super(...arguments);this.onlyIfNeeded=Y.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);if(e.get("yarnPath")&&this.onlyIfNeeded)return 0;let r=()=>{if(typeof Zr=="undefined")throw new me("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},i;if(this.version==="self")i=r();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")i=`https://repo.yarnpkg.com/${await eAe(e,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")i=`https://repo.yarnpkg.com/${await eAe(e,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")i="https://nightly.yarnpkg.com/latest.js";else if(this.version.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.version))i=`file://${M.resolve(this.version)}`;else if(qt.satisfiesWithPrereleases(this.version,">=2.0.0"))i=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(qt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))i=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(qt.validRange(this.version))i=`https://repo.yarnpkg.com/${await _ze(e,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new me(`Invalid version descriptor "${this.version}"`);return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async s=>{let o="file://",a;i.startsWith(o)?(s.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,i,ps.URL)}`),a=await T.readFilePromise(M.toPortablePath(i.slice(o.length)))):(s.reportInfo(z.UNNAMED,`Retrieving ${ue.pretty(e,i,ps.PATH)}`),a=await Zt.get(i,{configuration:e})),await XN(e,null,a,{report:s})})).exitCode()}};vC.paths=[["set","version"]],vC.usage=ye.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Download the version used to invoke the command","$0 set version self"]]});var tAe=vC;async function _ze(t,e){let i=(await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(n=>qt.satisfiesWithPrereleases(n,e));if(i.length===0)throw new me(`No matching release found for range ${ue.pretty(t,e,ue.Type.RANGE)}.`);return i[0]}async function eAe(t,e){let r=await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new me(`Tag ${ue.pretty(t,e,ue.Type.RANGE)} not found`);return r.latest[e]}async function XN(t,e,r,{report:i}){var g;e===null&&await T.mktempPromise(async f=>{let h=v.join(f,"yarn.cjs");await T.writeFilePromise(h,r);let{stdout:p}=await hr.execvp(process.execPath,[M.fromPortablePath(h),"--version"],{cwd:f,env:_(P({},process.env),{YARN_IGNORE_PATH:"1"})});if(e=p.trim(),!$ae.default.valid(e))throw new Error(`Invalid semver version. ${ue.pretty(t,"yarn --version",ue.Type.CODE)} returned: +${e}`)});let n=(g=t.projectCwd)!=null?g:t.startingCwd,s=v.resolve(n,".yarn/releases"),o=v.resolve(s,`yarn-${e}.cjs`),a=v.relative(t.startingCwd,o),l=v.relative(n,o),c=t.get("yarnPath"),u=c===null||c.startsWith(`${s}/`);if(i.reportInfo(z.UNNAMED,`Saving the new release in ${ue.pretty(t,a,"magenta")}`),await T.removePromise(v.dirname(o)),await T.mkdirPromise(v.dirname(o),{recursive:!0}),await T.writeFilePromise(o,r,{mode:493}),u){await fe.updateConfiguration(n,{yarnPath:l});let f=await Ze.tryFind(n)||new Ze;e&&de.isTaggedYarnVersion(e)&&(f.packageManager=`yarn@${e}`);let h={};f.exportTo(h);let p=v.join(n,Ze.fileName),d=`${JSON.stringify(h,null,f.indent)} +`;await T.changeFilePromise(p,d,{automaticNewlines:!0})}}var Xze=/^[0-9]+$/;function iAe(t){return Xze.test(t)?`pull/${t}/head`:t}var Zze=({repository:t,branch:e},r)=>[["git","init",M.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin",iAe(e)],["git","reset","--hard","FETCH_HEAD"]],$ze=({branch:t})=>[["git","fetch","origin",iAe(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],e4e=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(i=>["--plugin",v.resolve(r,i)])),...e?["--no-minify"]:[],"|"]],SC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=Y.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=Y.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,rAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{await $N(this,{configuration:e,report:s,target:i}),s.reportSeparator(),s.reportInfo(z.UNNAMED,"Building a fresh bundle"),s.reportSeparator(),await xC(e4e(this,i),{configuration:e,context:this.context,target:i}),s.reportSeparator();let o=v.resolve(i,"packages/yarnpkg-cli/bundles/yarn.js"),a=await T.readFilePromise(o);await XN(e,"sources",a,{report:s}),this.skipPlugins||await t4e(this,{project:r,report:s,target:i})})).exitCode()}};SC.paths=[["set","version","from","sources"]],SC.usage=ye.Usage({description:"build Yarn from master",details:` + This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. + + By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. + `,examples:[["Build Yarn from master","$0 set version from sources"]]});var nAe=SC;async function xC(t,{configuration:e,context:r,target:i}){for(let[n,...s]of t){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await hr.pipevp(n,s,{cwd:i,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ue.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")} +`);try{await hr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw r.stdout.write(a.stdout||a.stack),a}}}}async function $N(t,{configuration:e,report:r,target:i}){let n=!1;if(!t.force&&T.existsSync(v.join(i,".git"))){r.reportInfo(z.UNNAMED,"Fetching the latest commits"),r.reportSeparator();try{await xC($ze(t),{configuration:e,context:t.context,target:i}),n=!0}catch(s){r.reportSeparator(),r.reportWarning(z.UNNAMED,"Repository update failed; we'll try to regenerate it")}}n||(r.reportInfo(z.UNNAMED,"Cloning the remote repository"),r.reportSeparator(),await T.removePromise(i),await T.mkdirPromise(i,{recursive:!0}),await xC(Zze(t,i),{configuration:e,context:t.context,target:i}))}async function t4e(t,{project:e,report:r,target:i}){let n=await Kc(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await ZN(o,t,{project:e,report:r,target:i})}var sAe=ie(Or()),oAe=ie(require("url")),aAe=ie(require("vm"));var kC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,stdout:this.context.stdout},async i=>{let{project:n}=await Ke.find(e,this.context.cwd),s,o;if(this.name.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.name)){let a=v.resolve(this.context.cwd,M.toPortablePath(this.name));i.reportInfo(z.UNNAMED,`Reading ${ue.pretty(e,a,ue.Type.PATH)}`),s=v.relative(n.cwd,a),o=await T.readFilePromise(a)}else{let a;if(this.name.match(/^https?:/)){try{new oAe.URL(this.name)}catch{throw new nt(z.INVALID_PLUGIN_REFERENCE,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}s=this.name,a=this.name}else{let l=S.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(l.reference!=="unknown"&&!sAe.default.valid(l.reference))throw new nt(z.UNNAMED,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let c=S.stringifyIdent(l),u=await Kc(e);if(!Object.prototype.hasOwnProperty.call(u,c))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${c}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);s=c,a=u[c].url,l.reference!=="unknown"?a=a.replace(/\/master\//,`/${c}/${l.reference}/`):Zr!==null&&(a=a.replace(/\/master\//,`/@yarnpkg/cli/${Zr}/`))}i.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,a,"green")}`),o=await Zt.get(a,{configuration:e})}await eL(s,o,{project:n,report:i})})).exitCode()}};kC.paths=[["plugin","import"]],kC.usage=ye.Usage({category:"Plugin-related commands",description:"download a plugin",details:` + This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. + + Three types of plugin references are accepted: + + - If the plugin is stored within the Yarn repository, it can be referenced by name. + - Third-party plugins can be referenced directly through their public urls. + - Local plugins can be referenced by their path on the disk. + + Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). + `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});var AAe=kC;async function eL(t,e,{project:r,report:i}){let{configuration:n}=r,s={},o={exports:s};(0,aAe.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=v.resolve(r.cwd,l);i.reportInfo(z.UNNAMED,`Saving the new plugin in ${ue.pretty(n,l,"magenta")}`),await T.mkdirPromise(v.dirname(c),{recursive:!0}),await T.writeFilePromise(c,e);let u={path:l,spec:t};await fe.updateConfiguration(r.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let d=typeof p!="string"?p.path:p,m=v.resolve(r.cwd,M.toPortablePath(d)),{name:E}=de.dynamicRequire(m);E!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),_(P({},g),{plugins:f})})}var r4e=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],PC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,lAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let{project:s}=await Ke.find(e,this.context.cwd),o=S.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),a=S.stringifyIdent(o),l=await Kc(e);if(!Object.prototype.hasOwnProperty.call(l,a))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${a}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let c=a;await $N(this,{configuration:e,report:n,target:r}),await ZN(c,this,{project:s,report:n,target:r})})).exitCode()}};PC.paths=[["plugin","import","from","sources"]],PC.usage=ye.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` + This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. + + The plugins can be referenced by their short name if sourced from the official Yarn repository. + `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});var cAe=PC;async function ZN(t,{context:e,noMinify:r},{project:i,report:n,target:s}){let o=t.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo(z.UNNAMED,`Building a fresh ${o}`),n.reportSeparator(),await xC(r4e({pluginName:o,noMinify:r},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=v.resolve(s,`packages/${o}/bundles/${t}.js`),c=await T.readFilePromise(l);await eL(t,c,{project:i,report:n})}var DC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=this.name,o=S.parseIdent(s);if(!e.plugins.has(s))throw new me(`${S.prettyIdent(e,o)} isn't referenced by the current configuration`);let a=`.yarn/plugins/${s}.cjs`,l=v.resolve(r.cwd,a);T.existsSync(l)&&(n.reportInfo(z.UNNAMED,`Removing ${ue.pretty(e,a,ue.Type.PATH)}...`),await T.removePromise(l)),n.reportInfo(z.UNNAMED,"Updating the configuration..."),await fe.updateConfiguration(r.cwd,c=>{if(!Array.isArray(c.plugins))return c;let u=c.plugins.filter(g=>g.path!==a);return c.plugins.length===u.length?c:_(P({},c),{plugins:u})})})).exitCode()}};DC.paths=[["plugin","remove"]],DC.usage=ye.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` + This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. + + **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. + `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var uAe=DC;var RC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{for(let n of e.plugins.keys()){let s=this.context.plugins.plugins.has(n),o=n;s&&(o+=" [builtin]"),i.reportJson({name:n,builtin:s}),i.reportInfo(null,`${o}`)}})).exitCode()}};RC.paths=[["plugin","runtime"]],RC.usage=ye.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` + This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. + `,examples:[["List the currently active plugins","$0 plugin runtime"]]});var gAe=RC;var FC=class extends Be{constructor(){super(...arguments);this.idents=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=new Set;for(let a of this.idents)s.add(S.parseIdent(a).identHash);if(await r.restoreInstallState({restoreResolutions:!1}),await r.resolveEverything({cache:n,report:new ei}),s.size>0)for(let a of r.storedPackages.values())s.has(a.identHash)&&r.storedBuildState.delete(a.locatorHash);else r.storedBuildState.clear();return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{await r.install({cache:n,report:a})})).exitCode()}};FC.paths=[["rebuild"]],FC.usage=ye.Usage({description:"rebuild the project's native packages",details:` + This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. + + Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). + + By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. + `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var fAe=FC;var tL=ie(Nn());Ss();var NC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=this.all?r.workspaces:[i],o=[vr.REGULAR,vr.DEVELOPMENT,vr.PEER],a=[],l=!1,c=[];for(let h of this.patterns){let p=!1,d=S.parseIdent(h);for(let m of s){let E=[...m.manifest.peerDependenciesMeta.keys()];for(let B of(0,tL.default)(E,h))m.manifest.peerDependenciesMeta.delete(B),l=!0,p=!0;for(let B of o){let b=m.manifest.getForScope(B),R=[...b.values()].map(H=>S.stringifyIdent(H));for(let H of(0,tL.default)(R,S.stringifyIdent(d))){let{identHash:L}=S.parseIdent(H),K=b.get(L);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");m.manifest[B].delete(L),c.push([m,B,K]),l=!0,p=!0}}}p||a.push(h)}let u=a.length>1?"Patterns":"Pattern",g=a.length>1?"don't":"doesn't",f=this.all?"any":"this";if(a.length>0)throw new me(`${u} ${ue.prettyList(e,a,ps.CODE)} ${g} match any packages referenced by ${f} workspace`);return l?(await e.triggerMultipleHooks(p=>p.afterWorkspaceDependencyRemoval,c),(await Fe.start({configuration:e,stdout:this.context.stdout},async p=>{await r.install({cache:n,report:p,mode:this.mode})})).exitCode()):0}};NC.paths=[["remove"]],NC.usage=ye.Usage({description:"remove dependencies from the project",details:` + This command will remove the packages matching the specified patterns from the current workspace. + + If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: + + - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. + + - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. + + This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. + `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var hAe=NC;var pAe=ie(require("util")),z0=class extends Be{async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=de.sortMap(o.keys(),u=>u),l={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,pAe.inspect)(g,l)}`)})).exitCode()}};z0.paths=[["run"]];var dAe=z0;var LC=class extends Be{constructor(){super(...arguments);this.inspect=Y.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=Y.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=Y.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=Y.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=Y.Boolean("--silent",{hidden:!0});this.scriptName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i,locator:n}=await Ke.find(e,this.context.cwd);await r.restoreInstallState();let s=this.topLevel?r.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Kt.hasPackageScript(s,this.scriptName,{project:r}))return await Kt.executePackageScript(s,this.scriptName,this.args,{project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let o=await Kt.getPackageAccessibleBinaries(s,{project:r});if(o.get(this.scriptName)){let l=[];return this.inspect&&(typeof this.inspect=="string"?l.push(`--inspect=${this.inspect}`):l.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?l.push(`--inspect-brk=${this.inspectBrk}`):l.push("--inspect-brk")),await Kt.executePackageAccessibleBinary(s,this.scriptName,this.args,{cwd:this.context.cwd,project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:l,packageAccessibleBinaries:o})}if(!this.topLevel&&!this.binariesOnly&&i&&this.scriptName.includes(":")){let c=(await Promise.all(r.workspaces.map(async u=>u.manifest.scripts.has(this.scriptName)?u:null))).filter(u=>u!==null);if(c.length===1)return await Kt.executeWorkspaceScript(c[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}).`);{if(this.scriptName==="global")throw new me("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let l=[this.scriptName].concat(this.args);for(let[c,u]of Yg)for(let g of u)if(l.length>=g.length&&JSON.stringify(l.slice(0,g.length))===JSON.stringify(g))throw new me(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${c} plugin. You can install it with "yarn plugin import ${c}".`);throw new me(`Couldn't find a script named "${this.scriptName}".`)}}};LC.paths=[["run"]],LC.usage=ye.Usage({description:"run a script defined in the package.json",details:` + This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: + + - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. + + - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. + + - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. + + Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). + `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var CAe=LC;var TC=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=Y.String();this.resolution=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(await r.restoreInstallState({restoreResolutions:!1}),!i)throw new rt(r.cwd,this.context.cwd);let s=S.parseDescriptor(this.descriptor,!0),o=S.makeDescriptor(s,this.resolution);return r.storedDescriptors.set(s.descriptorHash,s),r.storedDescriptors.set(o.descriptorHash,o),r.resolutionAliases.set(s.descriptorHash,o.descriptorHash),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};TC.paths=[["set","resolution"]],TC.usage=ye.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var mAe=TC;var IAe=ie(Nn()),MC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=r.topLevelWorkspace,o=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:l,reference:c}of s.manifest.resolutions)c.startsWith("portal:")&&o.add(l.descriptor.fullName);if(this.leadingArguments.length>0)for(let l of this.leadingArguments){let c=v.resolve(this.context.cwd,M.toPortablePath(l));if(de.isPathLike(l)){let u=await fe.find(c,this.context.plugins,{useRc:!1,strict:!1}),{project:g,workspace:f}=await Ke.find(u,c);if(!f)throw new rt(g.cwd,c);if(this.all){for(let h of g.workspaces)h.manifest.name&&o.add(S.stringifyIdent(h.locator));if(o.size===0)throw new me("No workspace found to be unlinked in the target project")}else{if(!f.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be unlinked");o.add(S.stringifyIdent(f.locator))}}else{let u=[...s.manifest.resolutions.map(({pattern:g})=>g.descriptor.fullName)];for(let g of(0,IAe.default)(u,l))o.add(g)}}return s.manifest.resolutions=s.manifest.resolutions.filter(({pattern:l})=>!o.has(l.descriptor.fullName)),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};MC.paths=[["unlink"]],MC.usage=ye.Usage({description:"disconnect the local project from another one",details:` + This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. + `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var EAe=MC;var yAe=ie(aC()),rL=ie(Nn());Ss();var uf=class extends Be{constructor(){super(...arguments);this.interactive=Y.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=[...r.storedDescriptors.values()],o=s.map(u=>S.stringifyIdent(u)),a=new Set;for(let u of this.patterns){if(S.parseDescriptor(u).range!=="unknown")throw new me("Ranges aren't allowed when using --recursive");for(let g of(0,rL.default)(o,u)){let f=S.parseIdent(g);a.add(f.identHash)}}let l=s.filter(u=>a.has(u.identHash));for(let u of l)r.storedDescriptors.delete(u.descriptorHash),r.storedResolutions.delete(u.descriptorHash);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{await r.install({cache:n,report:u})})).exitCode()}async executeUpClassic(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=s?[Fr.KEEP,Fr.REUSE,Fr.PROJECT,Fr.LATEST]:[Fr.PROJECT,Fr.LATEST],l=[],c=[];for(let m of this.patterns){let E=!1,B=S.parseDescriptor(m);for(let b of r.workspaces)for(let R of[vr.REGULAR,vr.DEVELOPMENT]){let L=[...b.manifest.getForScope(R).values()].map(K=>S.stringifyIdent(K));for(let K of(0,rL.default)(L,S.stringifyIdent(B))){let J=S.parseIdent(K),ne=b.manifest[R].get(J.identHash);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");let q=S.makeDescriptor(J,B.range);l.push(Promise.resolve().then(async()=>[b,R,ne,await lC(q,{project:r,workspace:b,cache:n,target:R,modifier:o,strategies:a})])),E=!0}}E||c.push(m)}if(c.length>1)throw new me(`Patterns ${ue.prettyList(e,c,ps.CODE)} don't match any packages referenced by any workspace`);if(c.length>0)throw new me(`Pattern ${ue.prettyList(e,c,ps.CODE)} doesn't match any packages referenced by any workspace`);let u=await Promise.all(l),g=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[,,E,{suggestions:B,rejections:b}]of u){let R=B.filter(H=>H.descriptor!==null);if(R.length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");let L=this.cli.error(H);r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range + +${L}`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range (note: network resolution has been disabled) + +${L}`)}else R.length>1&&!s&&m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[];for(let[m,E,,{suggestions:B}]of u){let b,R=B.filter(J=>J.descriptor!==null),H=R[0].descriptor,L=R.every(J=>S.areDescriptorsEqual(J.descriptor,H));R.length===1||L?b=H:(f=!0,{answer:b}=await(0,yAe.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${S.prettyWorkspace(e,m)} \u276F ${E}?`,choices:B.map(({descriptor:J,name:ne,reason:q})=>J?{name:ne,hint:q,descriptor:J}:{name:ne,hint:q,disabled:!0}),onCancel:()=>process.exit(130),result(J){return this.find(J,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let K=m.manifest[E].get(b.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: This descriptor should have a matching entry");if(K.descriptorHash!==b.descriptorHash)m.manifest[E].set(b.identHash,b),h.push([m,E,K,b]);else{let J=e.makeResolver(),ne={project:r,resolver:J},q=J.bindDescriptor(K,m.anchoredLocator,ne);r.forgetResolution(q)}}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),f&&this.context.stdout.write(` +`),(await Fe.start({configuration:e,stdout:this.context.stdout},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};uf.paths=[["up"]],uf.usage=ye.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),uf.schema=[pv("recursive",Bl.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var wAe=uf;var OC=class extends Be{constructor(){super(...arguments);this.recursive=Y.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=Y.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=S.parseIdent(this.package).identHash,s=this.recursive?n4e(r,n,{configuration:e,peers:this.peers}):i4e(r,n,{configuration:e,peers:this.peers});Hs.emitTree(s,{configuration:e,stdout:this.context.stdout,json:this.json,separators:1})}};OC.paths=[["why"]],OC.usage=ye.Usage({description:"display the reason why a package is needed",details:` + This command prints the exact reasons why a package appears in the dependency tree. + + If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. + `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});var BAe=OC;function i4e(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.storedPackages.values(),a=>S.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={},c=null;for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=t.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=t.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;if(c===null){let p=S.stringifyLocator(a);s[p]={value:[a,ue.Type.LOCATOR],children:l}}let h=S.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ue.Type.DEPENDENT]}}}return o}function n4e(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.workspaces,f=>S.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let d=t.storedResolutions.get(p.descriptorHash);if(!d)throw new Error("Assertion failed: The resolution should have been registered");let m=t.storedPackages.get(d);if(!m)throw new Error("Assertion failed: The package should have been registered");a(m)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let d=p!==null?ue.tuple(ue.Type.DEPENDENT,{locator:f,descriptor:p}):ue.tuple(ue.Type.LOCATOR,f),m={},E={value:d,children:m},B=S.stringifyLocator(f);if(h[B]=E,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&t.tryWorkspaceByLocator(f))))for(let b of f.dependencies.values()){if(!i&&f.peerDependencies.has(b.identHash))continue;let R=t.storedResolutions.get(b.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let H=t.storedPackages.get(R);if(!H)throw new Error("Assertion failed: The package should have been registered");g(H,m,b)}};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var fL={};it(fL,{default:()=>w4e,gitUtils:()=>Uc});var Uc={};it(Uc,{TreeishProtocols:()=>vn,clone:()=>cL,fetchBase:()=>jAe,fetchChangedFiles:()=>YAe,fetchChangedWorkspaces:()=>E4e,fetchRoot:()=>GAe,isGitUrl:()=>ff,lsRemote:()=>HAe,normalizeLocator:()=>AL,normalizeRepoUrl:()=>KC,resolveUrl:()=>lL,splitRepoUrl:()=>UC});var oL=ie(OAe()),gf=ie(require("querystring")),aL=ie(Or()),KAe=ie(require("url"));function UAe(){return _(P({},process.env),{GIT_SSH_COMMAND:"ssh -o BatchMode=yes"})}var I4e=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],vn;(function(n){n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver"})(vn||(vn={}));function ff(t){return t?I4e.some(e=>!!t.match(e)):!1}function UC(t){t=KC(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:vn.Head,request:"HEAD"},extra:{}};let r=t.slice(0,e),i=t.slice(e+1);if(i.match(/^[a-z]+=/)){let n=gf.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(vn).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s!="undefined"?(o=s,a=n[s]):(o=vn.Head,a="HEAD");for(let l of Object.values(vn))delete n[l];return{repo:r,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:r,treeish:{protocol:s,request:o},extra:{}}}}function KC(t,{git:e=!1}={}){var r;if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){t=t.replace(/^git\+([^:]+):/,"$1:");let i;try{i=KAe.default.parse(t)}catch{i=null}i&&i.protocol==="ssh:"&&((r=i.path)==null?void 0:r.startsWith("/:"))&&(t=t.replace(/^ssh:\/\//,""))}return t}function AL(t){return S.makeLocator(t,KC(t.reference))}async function HAe(t,e){let r=KC(t,{git:!0});if(!Zt.getNetworkSettings(`https://${(0,oL.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Error(`Request to '${r}' has been blocked because of your configuration settings`);let n;try{n=await hr.execvp("git",["ls-remote",r],{cwd:e.startingCwd,env:UAe(),strict:!0})}catch(l){throw l.message=`Listing the refs for ${t} failed`,l}let s=new Map,o=/^([a-f0-9]{40})\t([^\n]+)/gm,a;for(;(a=o.exec(n.stdout))!==null;)s.set(a[2],a[1]);return s}async function lL(t,e){let{repo:r,treeish:{protocol:i,request:n},extra:s}=UC(t),o=await HAe(r,e),a=(c,u)=>{switch(c){case vn.Commit:{if(!u.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return gf.default.stringify(_(P({},s),{commit:u}))}case vn.Head:{let g=o.get(u==="HEAD"?u:`refs/heads/${u}`);if(typeof g=="undefined")throw new Error(`Unknown head ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Tag:{let g=o.get(`refs/tags/${u}`);if(typeof g=="undefined")throw new Error(`Unknown tag ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Semver:{let g=qt.validRange(u);if(!g)throw new Error(`Invalid range ("${u}")`);let f=new Map([...o.entries()].filter(([p])=>p.startsWith("refs/tags/")).map(([p,d])=>[aL.default.parse(p.slice(10)),d]).filter(p=>p[0]!==null)),h=aL.default.maxSatisfying([...f.keys()],g);if(h===null)throw new Error(`No matching range ("${u}")`);return gf.default.stringify(_(P({},s),{commit:f.get(h)}))}case null:{let g;if((g=l(vn.Commit,u))!==null||(g=l(vn.Tag,u))!==null||(g=l(vn.Head,u))!==null)return g;throw u.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${c}")`)}},l=(c,u)=>{try{return a(c,u)}catch(g){return null}};return`${r}#${a(i,n)}`}async function cL(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:i,request:n}}=UC(t);if(i!=="commit")throw new Error("Invalid treeish protocol when cloning");let s=KC(r,{git:!0});if(Zt.getNetworkSettings(`https://${(0,oL.default)(s).resource}`,{configuration:e}).enableNetwork===!1)throw new Error(`Request to '${s}' has been blocked because of your configuration settings`);let o=await T.mktempPromise(),a={cwd:o,env:UAe(),strict:!0};try{await hr.execvp("git",["clone","-c core.autocrlf=false",s,M.fromPortablePath(o)],a),await hr.execvp("git",["checkout",`${n}`],a)}catch(l){throw l.message=`Repository clone failed: ${l.message}`,l}return o})}async function GAe(t){let e=null,r,i=t;do r=i,await T.existsPromise(v.join(r,".git"))&&(e=r),i=v.dirname(r);while(e===null&&i!==r);return e}async function jAe(t,{baseRefs:e}){if(e.length===0)throw new me("Can't run this command with zero base refs specified.");let r=[];for(let a of e){let{code:l}=await hr.execvp("git",["merge-base",a,"HEAD"],{cwd:t});l===0&&r.push(a)}if(r.length===0)throw new me(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:i}=await hr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),n=i.trim(),{stdout:s}=await hr.execvp("git",["show","--quiet","--pretty=format:%s",n],{cwd:t,strict:!0}),o=s.trim();return{hash:n,title:o}}async function YAe(t,{base:e,project:r}){let i=de.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:n}=await hr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),s=n.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),{stdout:o}=await hr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),a=o.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),l=[...new Set([...s,...a].sort())];return i?l.filter(c=>!v.relative(r.cwd,c).match(i)):l}async function E4e({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new me("This command can only be run from within a Yarn project");let r=[v.resolve(e.cwd,e.configuration.get("cacheFolder")),v.resolve(e.cwd,e.configuration.get("installStatePath")),v.resolve(e.cwd,e.configuration.get("lockfileFilename")),v.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(o=>o.populateYarnPaths,e,o=>{o!=null&&r.push(o)});let i=await GAe(e.configuration.projectCwd);if(i==null)throw new me("This command can only be run on Git repositories");let n=await jAe(i,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),s=await YAe(i,{base:n.hash,project:e});return new Set(de.mapAndFilter(s,o=>{let a=e.tryWorkspaceByFilePath(o);return a===null?de.mapAndFilter.skip:r.some(l=>o.startsWith(l))?de.mapAndFilter.skip:a}))}var uL=class{supports(e,r){return ff(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,n=AL(e),s=new Map(r.checksums);s.set(n.locatorHash,i);let o=_(P({},r),{checksums:s}),a=await this.downloadHosted(n,o);if(a!==null)return a;let[l,c,u]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(n,o),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:l,releaseFs:c,prefixPath:S.getIdentVendorPath(e),checksum:u}}async downloadHosted(e,r){return r.project.configuration.reduceHook(i=>i.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let i=await cL(e.reference,r.project.configuration),n=UC(e.reference),s=v.join(i,"package.tgz");await Kt.prepareExternalProject(i,s,{configuration:r.project.configuration,report:r.report,workspace:n.extra.workspace,locator:e});let o=await T.readFilePromise(s);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}))}};var gL=class{supportsDescriptor(e,r){return ff(e.range)}supportsLocator(e,r){return ff(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=await lL(e.range,i.project.configuration);return[S.makeLocator(e,n)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var y4e={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:ge.STRING,isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:ge.STRING,default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:ge.NUMBER,default:2}},fetchers:[uL],resolvers:[gL]};var w4e=y4e;var HC=class extends Be{constructor(){super(...arguments);this.since=Y.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async n=>{let s=this.since?await Uc.fetchChangedWorkspaces({ref:this.since,project:r}):r.workspaces,o=new Set(s);if(this.recursive)for(let a of[...s].map(l=>l.getRecursiveWorkspaceDependents()))for(let l of a)o.add(l);for(let a of o){let{manifest:l}=a,c;if(this.verbose){let u=new Set,g=new Set;for(let f of Ze.hardDependencies)for(let[h,p]of l.getForScope(f)){let d=r.tryWorkspaceByDescriptor(p);d===null?r.workspacesByIdent.has(h)&&g.add(p):u.add(d)}c={workspaceDependencies:Array.from(u).map(f=>f.relativeCwd),mismatchedWorkspaceDependencies:Array.from(g).map(f=>S.stringifyDescriptor(f))}}n.reportInfo(null,`${a.relativeCwd}`),n.reportJson(P({location:a.relativeCwd,name:l.name?S.stringifyIdent(l.name):null},c))}})).exitCode()}};HC.paths=[["workspaces","list"]],HC.usage=ye.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});var qAe=HC;var GC=class extends Be{constructor(){super(...arguments);this.workspaceName=Y.String();this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=r.workspaces,s=new Map(n.map(a=>{let l=S.convertToIdent(a.locator);return[S.stringifyIdent(l),a]})),o=s.get(this.workspaceName);if(o===void 0){let a=Array.from(s.keys()).sort();throw new me(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: + - ${a.join(` + - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:o.cwd})}};GC.paths=[["workspace"]],GC.usage=ye.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` + This command will run a given sub-command on a single workspace. + `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var JAe=GC;var B4e={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:ge.BOOLEAN,default:WAe.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:ge.STRING,values:["^","~",""],default:Lo.CARET}},commands:[soe,aoe,wae,Nae,mAe,nAe,tAe,qAe,Uae,Hae,Gae,jae,ioe,noe,Lae,Mae,Yae,qae,Wae,zae,_ae,EAe,Xae,cAe,AAe,uAe,Zae,gAe,fAe,hAe,dAe,CAe,wAe,BAe,JAe]},Q4e=B4e;var mL={};it(mL,{default:()=>v4e});var Me={optional:!0},zAe=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Me}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Me,["postcss-jsx"]:Me,["postcss-less"]:Me,["postcss-markdown"]:Me,["postcss-scss"]:Me}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Me}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Me}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@*",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Me,"vue-template-compiler":Me}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Me,"utf-8-validate":Me}}],["react-portal@*",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@*",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@*",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me,"vuetify-loader":Me}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Me}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Me}}],["consolidate@*",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Me,tinyliquid:Me,"liquid-node":Me,jade:Me,"then-jade":Me,dust:Me,"dustjs-helpers":Me,"dustjs-linkedin":Me,swig:Me,"swig-templates":Me,"razor-tmpl":Me,atpl:Me,liquor:Me,twig:Me,ejs:Me,eco:Me,jazz:Me,jqtpl:Me,hamljs:Me,hamlet:Me,whiskers:Me,"haml-coffee":Me,"hogan.js":Me,templayed:Me,handlebars:Me,underscore:Me,lodash:Me,pug:Me,"then-pug":Me,qejs:Me,walrus:Me,mustache:Me,just:Me,ect:Me,mote:Me,toffee:Me,dot:Me,"bracket-template":Me,ractive:Me,nunjucks:Me,htmling:Me,"babel-core":Me,plates:Me,"react-dom":Me,react:Me,"arc-templates":Me,vash:Me,slm:Me,marko:Me,teacup:Me,"coffee-script":Me,squirrelly:Me,twing:Me}}],["vue-loader@<=16.3.1",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"}}],["scss-parser@*",{dependencies:{lodash:"^4.17.21"}}],["query-ast@*",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@*",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@*",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@*",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@*",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Me}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Me}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Me,"webpack-command":Me}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Me}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Me}}]];var pL;function VAe(){return typeof pL=="undefined"&&(pL=require("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),pL}var dL;function _Ae(){return typeof dL=="undefined"&&(dL=require("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),dL}var CL;function XAe(){return typeof CL=="undefined"&&(CL=require("zlib").brotliDecompressSync(Buffer.from("mzhaECMDuR1sIeX+TY0icB4Ugl/fiS06kLsdoNSeOm1ArQu4w/gK73BeaBFQx2vZSXXZNLdYxpjuqpmNeJzul8mI4ogHeNsydeh+g4VOVg5d5CbKlG1Q+IpXAXZLfIgNceWQ59qQ3zuLeum4rqAQFmFIJ+OPmSsgLX76avnvn6+X6uHeiM4lXUrTtuor1VjIhSObF5kSZugNdEj+/Kn+5+dLKEuGkIccJ1seHWPZjvo0oDqGOayUXrEapGdGoVp7P/kRtHOoxHnftuSiCaJXOmHh+eZEZWsrVJkTE1f4sIMtD5pFRCdmjksUgXGBbbxv/v/7yz5TdX1A9RBIQxj1TBBp9W8YMlPqjNpLte859/Qv0lgqSeurpB5AOufCK1T/RrslE3MSOUkdhOYsrpJKn7DBQBh5JggS/69qZTunC5G4QPxNgO7do256TNNoivKCm1bcBaCZY3XPXUjdxVS5mkTAIbd21Y5cNJ27WlqSQwdx6QCQDUA5iJRTIGJjyKlCM4XRZz7GqmZu3zcDRFQycspj1mqpwtivpINKJRhpb9EJG02goJxWlbOHdl7IikcDLYjJmFb7cynTRAgybLF/+jJW+dqt+8/prUIMh4AYUUZ8v/nTbYs0LWIGzqq4nnnb+E8G9VadYP11gbnu8un3gq9L/5iZ++e4CXdv8s6yfxLFpge/hTGPmP7xK8/d2VV3RZpi+HImSZJg+UXmc5KOs6Yt4yQ/Xcc9W0iP1/pZrU/Hhcm3b+On30q2ggLfYeb1FRmEaQBW2rMTATnzyn2dOCqbnyK9vl6HYc/8sJWjLpbWbTAkIpDfSjRFdn6B+o2yIRcJaSZdW3obMQSYgkURdTT0VOsYbTT3yLv6PxFfFVf6m/YSCEsYntsrba/GZSt10qX5nOK/lvZJxBbiZxLDtw23/doci7ZE2BBRQ/o3hXAzuImv3CouR28XCecBAZfuP3UwFnw5ux1hDGk6V2Z4KMI9dZbHYGh72z8ksxQ9JuFkdglrUk8g0keYNXFWVmjIZlPfvepLJnTeQSHHycr4F3I+WtmWXCFS/bnODsng4tVHocLRhXBdqiP8GMRCMViz0YbNIUHAQmL8Hu0YVkOEiMSXWw+OgrltpMqrfNMM2FsK7i6udjs9jOrbjYRQoAhpxt/QaVpJQdImikEGEfSsDxOVCTiZ8/On50gJ4EYIG6EqMrJvmtmRCHHh9RgBkhh8dk2QlZGr5r327hKF5MuX7lmSZA7JhCpfL1xI97i5afnVdWqRNbXdZdN2Ezo5mSIZmI8G5gFj1+ckjllDPfA59ckAXIlElghCVJCwholafUwxy3f+vcNuKTUJGEtIX81nJWKQAklOgZJZPFDlJQLmhDsEqOHONrfIj4lFw8UuFeF6GWf9yRltW7UoZVD9V/AUWT/GcrEAyyqIelS3TIZXW1emyEpzAmonJZVPTSl1P5efGgZzjsH0ccUXl8LCRS6w8C5LC/TyDccnIT8JvV4oFRcHlMyqHHEK4ux1bAEi9agkOFRNthH92oKz17+sE1Bhvc2tCShYQXtlj9vcfsOtMd3G6zihjlZAVURrXp9sZqpIXuvNR7NSJyECg7zFfioP4/W6kEA6c+MlIVC6CQNM5rG9wXFicqs0HDXykCun/+3hMycnJOvyPis/71xnjw+b/9XDwFvlKht9d4zOogboH0XmMqMVrILlMfxpZUY8QZ4LbtuF8nlF1GhEPJXQW8ybdIreitTbxEKFZ37n9ssmPyuhNZpz5ZPBCVM5fOMnLfIFucuUDsgt15gLWKMi55fy0582blNvOW7M9z3L6uNKk70pG12NRrnQ5AvJtWaZ87omj58iJRYbzlJOAZViHYuL9evv+NB34edS9osvNDw3X2aFplDRqysn12+OW/JPKH6xQBktxRSFkPD0KOTn3PxcW3QEU9DdbG+4ul+s8KYvSfUhUPscb0GjEEr2jBOmx5hjUXRfo+tDo0vr1a6ba5DZLXz8sju687ufBB1QohdXU8sfOfoofA8ChRBeUbBZvV6VF4/ljvWnu0LGEv3lTO9V+XQRaeKE124ilHVZY7Y6I8NzvQzyqIAbsshqVc5gFgC+veF9V/YXI7I2pCGJgxBlsS8KjP11u0Y/TuVL9448UL5Zbdb5jLX0NDk3iJFp43qmpbThFcY1X9Pl2n4RogRcsjx6hMlgxO22D1yLydaWnjy4xWy3Dncjk0ju4IEXUGbbxQ+JfCpzm4W0WXTM/xkk/d1dShIOXWkZWtqhRW7XiG6oFoB41lFwS9HdnmkoVWkSfkpoWFBkl2eb5DIBAbYRtUjCiAPiW521MCneLh5vrdxhN3wNtzqFoRMLmo7lVSoHNF6H6iVbhvRVcoeWAeMxDC7vCQCJemimhPxTsyYQOsJfG6IooBBkWoOARc+ksKKoxltd+vos9/kJkSMHr5CFJSJOiAGTLxmRWEckRN6LlZJ0SRGxECTJohEXj7SZ89tmgN4DTGhwCNe4Mku8neFIcNQ2vWDo7QuNRKoqD9ifdxBhCTF8h0AiBfJIU0F69pz84M/2o8Ovn5Ozmh/8zvQhQxa4x7ahhMm7z8gteRLfcZXv7UB4Sq1CHHteRWLySfgSyETfwfJm46U22yE2B12EAdfXEfJQHWzmJ49BgiDWvIFcjyTxk3OrDOAnWi8vArJIi2jRZYl6l+Hp/0LjHbY7D1fNA+TlvfTlFW0QfF8vWoQoB9zgwwhhXkLfbZUB9/ppAIi1LqZcZMRYKaQzKoUc1kqjwLbqM/dOLcDMpNOqc2HY2iCm3bFLUvX6HxVbQUo0LeMbMm8Q0cuG2d1/Ipatqk6i6aHS8BadvUK6/FSJOJw/iMos2gJUZ1Yo+pzI6CVri1f97RWOlcDuQPaxx3vQ3Zn+BT1PRISzWmESPt3cWhGK+xuJUaZZgHg39TFH8IYWsZ3WZ6mOAKwrbE2OMpw3tZj92+xLXzO1O33fld/NawySc5eofD+6rOPcvOWH9OHw8HwUdWISylPtznAtdp7L8OgZbGJyxUKAMnwY+Eq3EoWli52ssB33vMt3EryXQWoZfzOMH5c1MjCN2KRzq2o6nwwkXgNvyC/3Gd5rjTTNk6bJktjGf6NN7A8GJRtXTIdemAYY0BdTbsQS4GUlc/sezLXoM1W1/bWIv598vDmWgQwQ4zSdlb8aNnJQPP1Ylp3vsTEnMvimRwtw2rcEIHNvhVZJ4xb4ltcD5z35zwkPBrjbCcG0HEDHc4jvPMTxNB2cnI+PvtGOAOZDh16sgYMNMr8++3wEAHHbAtV2E08OR7aSuEyDk5l/KKhyuKWAy7exNoP88hAZd0IfLwgHyQgSjPn8DhKoGR3bcAGAowm3KDxV4dhAsNolE15B2LpGAEBW7tKaSwYmKPOp5gnAzMrb926G3r6BN4YexWTYCbZ8drsEVka4VlwAAGeCGVvYbYKO3c6YoNX2CABwTaKh2XnwctI+gZnZAPqtF3DnwA+mwt+VjOMicHPSTSlYAQA7v/7zz+//nYxecgzmc9smkDNr5ocWMm7XvsT1xzt7DAnv6fzbSE4oacMFABJwdn3hXBOMrfY5wl2LUNcIAJwXq8Ixe1Uku2Y8/ru3Dt/YK/H0fekjaWnmV5UyAAC+Ugnk/8/pv/7s/P9T1Y1Jm+l/tkMIqt1nR1EQ0DVcDx5gPey7r+Ri+3h0L/ApPOmPxCrNryrfAgA8a0JZPlFlY2LXuQl7Wk5TrJCk9vrs6T5ItNmVCQDEKFheiMnDtQiPMz/tdxOVNR4lxIyKrbYAQJGHtjJsHtpCe1WNhQdddwkAtExJzot7FoKm86ntcmg1HIl5M7+qxBYAmJwMutjCEEFSaa+ZmHJBVNcIAJQ6qmjMAv6Aoh8tgmnuPD2Tl/Udy7wKgMnNaqtmvMfvTDM51vJt0J8JestqOp6czPwwy2wBgMKxka4yDB5Ksb2rrLiHUt4IAHihKhmzdHTMnM+sO2Fk7JK3veZtKkNQc/OrShkAADNphxrjnvE/28XXoaqZsd2uITg12N/CbtPDVC9Z3LlYkv3AhJ70J5JKz68q3wIAzFn60xh35Aejhq/HqqCx1e4l3JYItZkAwMnuEM7A57LtKxPcc9OW9XanMaq04QIAFXA6nnBQhLFErbSv4baEmksAYD2I9rx613TJLy70H/b0ZR3/o1IbLgBQIkxb1IrwGcYUKu0x3KZQswkARNYSNl3xu/RqqUnp2Z/q+78UrACY6qzWAyqvhKb7aK4R9pmp/9bdl8ZhuaSvHBcAKDH7QVvDfTzEint4iHWNAEBIHYWKeA61ruwbzVQEzoVLvSSweL5PagSzSfqSBmvyLzyauiVKTt/k/fciw/ckjLEddpKUXAMDrqQjV4Qn27BrEiw6WGjRGWwiftGegxwKnWDxjquBPb9+Y9rH9APdJ2p42hfp53dv1wt7n3jTRcz5LP6OAlnFiZGx7tu29dU++gGoxby2cZV3APENaeyA8wN7/DaK2fWv8flZe7PFzvZVxPp8edZtMn1iiwRppB+R0XaM5BbTEvS9vPqi7cSIvht4c4YLKA8PvIr9Kl2FepBzajMnCZPthVt1Mq5X9Z5z23ze/6hLX3zU+HqaE3IKkD4OeOWmvqIPrHYTHBYoIhRprs3vGyO/I4ygGmnrjDMu4v3uZLm2LTH9PpmDdCq8lyTqatIco0thn7H32lqR7L83C6sOoFQN0ak19l4x0RQoeGgCMS22oqvaMrrpTGTo97AXAwolHZcrLppPnNYGE4gR9VcHrripQsR7E8wIszbgRhPp8oMm/Es6MQsZ5HAfh55cd6z2eotj549YejMlxA6vA14EPN2jo7u+hB16+ate+6L1ISy9ce7JIZK0F3FKezfNQmZXkqg+GaLLZcjOvU/Q8jR9lIZEYECmsuLSfvCCMQHw8TglAhnY4Q85lkXSCisQsmXHMq83rcQ1kbF1iBJvLhwS5SnwqId71J2fj4Tw2l5H6PhhrNabH9f88Ow88s+tc5/jSXDf3+NEmHx8mwDky84eT17NOU0cNvBaKrZAQgCCFrSjZk4CIpz9SPXZWuSlB1U2ShPKxazkZmHWKDEf+JioOzCq03jO/OYGDHYEXjnVx20TOByvHRvnc+SjT5fH3C5yT1ukFdkNTI5nCZTXx16ruP8ncq1mWLhZW1gv2rZbvEFypjZtvvyR6azZ/urn4oGtqPBx9RMZ3JjQXsbEKjZ6dRz13Q+XDwFAGPYJXHuu5leti7prxuXfNjfaed2LW7jsRZM0/ZXGGv4xpn0f908sXPb2a68CIC/bhb01Z3BCQp2e7P2Wr+wz7bosAI8m056q7N2kjr3ZEWB6j9i0M3m+KaJP1ECzcmu6gPOmcQ5SlizbWAM8SVi6kpjOwddB6ciW2dmQ2ZXCQIgvAd0aXVe6/L6MJzS0iJPwpA8s11Wo+odqQi7qcbicDGbI2kWG6mIf8TQ0d8N18Y94Kv4u1lYiU25+oCPQj5ltKPk4E5tYtLSLiM+s8iS92Q/lxFnrNyB+l7f1pUNLYjbvYGLOxfXgCPp1LKC4cu72+OYWVToHCdfsynmnV1QFD94jQJJg13T1CiReXZssIkCqZdP7Pq4AMb2uEERQ4Xw6BhRI7cISLRJbLk/VkTDP59W6RV7WrAZ+uOEa1k2HuF7nHFxVLj0W01GO92zq0/ckxMdPbeNSx3BHHAbhI7vR5x3XVoHVIbFwGzAsO4IZCWIv3RDNZTkUk18T9hBTuN4LdwsTr/3s3Fjs8ZXJi7atb+8bnvvcqIYzK1oRk5M6jkl/B3ozFkVSU1CtLnMm4rVLRrnivvl8tLeSUUIWcftYS1DAsz701b/ujUrwRuGctnfP9A6NcZdGbmy20m2vo0ZNYa6gryv1nmCHpbmXwBjxErc5ATjaUxZwqOjAn8+Tmqk1XMRazdjQaYE6bfjLZkmSYC2d/Jov26kJJiv807G0v6JIpybeskCFK3l/7MJrXuX4qqtgU96CpYtC1Nl/21IOGDW49UsEYErjiyujVjUOrjZr0ZKQNRx2WwgNk6PHHBoa8A7ep2RKc9CETWmuBs6yAjEwGZ+5UWYAQB0amtsLr8rbtVvtnWgCAHbSd7Y8x2TmfAILHklu/ow+rXkEefdnNLlFwUE2OjTUfpvMO0tzoAXazNV1Z1nr2I27MDMAMESFIul2x8ft2tWZfNoLaAIA8sXk5mz5FpPo8wr0cp/4vH0Ru3fP91SkPUHdOjSTM8xvutIcPN0opgJwtpq2BRHu0OQp/tZOS3NwJGenubp0lrXE7uSCzABAFhNquZ3Ciue0s1ReQBMAuHJSc7bcw6RyfgCbovqW5WlZ+/tefn5IwD54gTOhjw7++8PBAtzjEKfmcuV0QTMAYOEUK/MnE+wad+bxuZPkue0kU9z135nPA2mZ1TyW9we25jKQgQ1+a/fAmMCwIrzlputmBxMjo8ayN8beU0LouDgc6DYzu8sf2x1VVFWMz7Te6vgg0+MiFDO05N1kFNR8LLjZPWJR6JRx9kqmZUIEUCmiCl78EkFIi5a+xk7JfcZ4dCYgClkBd1ZHH5kwk8hiahyTRvRF1x3rZAjacDn/bOOEFnSeU/MrODwWPAwTqSCRuTUVAQnVf/dcIC37wP3DAKX0lenDubINJQjXR5eDJV5eeI4zLSXJvbnePB+NmtsOPh3NSyaIpSowQs0Z0SJPVsp+nU7M5kUNd2apfu+aztIHO0kICtIcx7K+ZKxogkVFRr90INr9gT3iq2bt4pX9eQjPMXc8+hUoHZ3QOdsgYTTzaMlI59PLbA8sTNvRgDuSQ60TL62LLgKSSAzisEc7/PWd7V2+W2H4vJtuVuZWXNmF8NGAFZ8A1WtF2BJdPpXGr45ZQhyHm1kztPD6+X5gtJ0jNxcnIb4NnBEQVgkJbBon0JCn9Bgc96ZyW9SjMK8lMJEb1N1suRKpDtIhgxyis2EpvtC41xhtWvFVtrSgpQyCWGAqPWC9e5Gpf5HzEPLA6W1oQbhzVUuOBemrYwYAYsmp7AmfWOjFt+42fXZUIa/NCMXlv8sEAFCCzOtRXPqD5PtxR3Hvwhm/tzBqxCJAHavXdZovkDGn1Bher4xni/WVdXjzusYB19QFwaCBU/AmYD+rSzVzstz4RWLO11jcui9wwyOL+ctL/dJWS+EoHEPbovgfTYDyueF6/2rzepSqV0kXpUmuXli87pOGG1d2owXW1r53i2dzrXu9HY5jqCCh8P/uGIs9CXeq1lKfQ5g59M0jNeMcmg0pwl/vLxAK0LYy/BBj195iodrPjqcYO1ttaUltkZSjYYx2S8loRL3jM/bUEJytxDaBkTUaXKfwqlh71nf1rVNVcGFTMlfyF+4U344RDagsrpwaN7aTrY9nNj7jf7ktn4cxnELv6kM2Nbw/bLy0lhofuRPkK85vH0jDpcM63QznqgL3iqaAkw9RTVlZuKzC1x/z4OXzY9WXACVFaDXcgmHdKjcCSe3MAIBEYFWEPVBKr6N6tNs7BJ42TQDAAZ267lUE3W5GCQDUxbWwOiY3ACJ0NF01KnqXjw1A4Y0tiwfbLyvpLi0ivaVVDkAZEQq7UpMd81/FTl4+grx8xsuM0Gf5lANQhoTafsNlQ/PkvL3Lj/fbTiKVH6HZZ8yW7ny1PyNgrjcyAwBzBniqCE9UFLkgttubBJkWTQCgyfWcmu53eRJuNwkAGFT1ZjW7S/c6Ns9e2jr8fJ7hv08lnjFbunMQJyiZ8rPODACIEcpaMXKKkHHn5ocIXVhRLHaPEZpprjNfdX51UIP+IorCp7CThT9SepSMRsENRkgtwtY+V4Jt8AwXCioUtrtf+Qgh+4VGDYHpDAqA7uUizmOH4Qtw2o1zaYxR+DzYFCdXzZLSmZnCvgBRk18pWzdZFTNE+ofiFiO5EWTIMSj7Od1YIB0A2TMQSXbUSvgAXrRBP6KZp4b/0Y561KaDafkTBa6CdtdJ1n3s1ab8oVeLftZZW1L1jEC1Bwbjuqjw6wo6dFD03QpHUDuLOuf6ryFICa828OqrRWQHXT93uf5k32KH5NhjP8X4uL+ob8v5lH7mhV2bEZQOo0nu67HtI+9Y1za0kfrj5z6yJvFodTeSc18oLXaAKGI9QukwL/SFBTJWIunQlkLgZBtGM7BpBYxpMDC42SSxa/3loXNV19gepgCAr9XOTO6Le6fUWYcwSqevw1ce1ibXtCNDpVralR5kw1N9z+lD3x64yh3hGWFDveH4msF++m7NZzywhCG0yqDzZBpCf6YNRrFfLGyLcSAf7CX9L1UJvKEFQUI6mGTogxqar5Z8EQ8TY/icrw3X6hinxTZIILcGi9NIwxRn3Kc35XgIDx7nt1Z4rn+AuJ+gvJjO2g7A0dkxWYtBauIkLFYGGCkuObKyoHOyFNvPvBSX47DZCoSwe+lmpSFSPIUoqTBw0ET3ldW7arWDVcnN2m0nfWhnZaJBAb8wQacaNocn9N9XU+yO0YWMuXsQ2mCGgwi4RVGlkD0CY8Fc/Ofygx64AGz4E9url2vbndCa8rjP4op1U+xgh2yh7jaq91qr7WWCTbK+YbtQqVogOjEWfGFBTlbM9RNCnOKAGO5tbhVEX7kVTWczNMIGKet4RBmu17M2H1pASqRCWwLedgk3h0omSKegZfcxZaCVOePS+YSXNpby4ipXP5+YGu9Frwg47k/NR5N/F7SKQ95BLjW9hh5MFBIU9SRe5EfHXqzFTuXBWLeEOjQBY9K88M3g+yNkQGwZrDAyyHmxoLddxJdlFowzfneqzg4djH3vpjLOJwr44SGWtB1VtGSM4mYKb8xiN+829pcyVa/Nn69uNTnBtGJSwZlgkNIUKOHnRKhMIv9pY8CQMVARcobqYqC4z3jpeCoFZf2FzvYSbUety+Wo+LyZgCFBAY+Ofp45V+06TSLisDIeEFVPcB9Z8TvfauCzF/Pric91YMZm5cyAsFgWzfFhfag57eJKwovFcHQFDJlb1dfM59dEqYMw7c+ZqtilF112PHh2odGM/qLGSC6o3GhgNK/RYHflt76XlFddg/Jnir8mm6e1IVyx+PAOg2h7q9hqdf3WNuupKmX7ESVo9tsYJkI/RbRBSLFD/rnQgAEbXSiM7qWyeJ+ZyNPQfNCXTMzfouLBV8rrQbSwh/caH4Ro/NSyfn9Ih08jLZ00zwKo4qs848uvBkjzsWquiofwpozqza3bjCKG/KuMGQAYCBKIkVP8v8YVKs4RFiVRKu2sVE02Ba4tEwDg3H0iqlP14GL4qxeCK506/JXvWWAlAK5V0Fq81qVArz6PG4qExH1A1GEgnqMrnqTLecLXQ13H33pCgepyxRyxrWkKwKw6pvI3DcOUZq7Cz0Tjg3cCoz4gwwWrVewwDBFKPEVnMUBJMgtPR+f/KsbXf9PV/ENy+pC2AJBu2Y7NzSUuww0fdAV3jUPPLTjDGWgEka5LGOs9khU72PZsumznNre9BUQai+hNND40Yd8OTKetumPirbQzXA1i7JjrzfhbBZ/GGC1x7PjpwflX10JYD/XfXzu5v+72Saz8Nc5rtmQNbgR92E2bK57vHzTQn+RRaaEEJJ1m/eWscPwB3titPvHuR5GJi42LrsoeUzDJ7VrGQBSJdj0W0T4YxeP/BkzeBOJOn1tUCXbaMwv6PGlYmzZ5cdTqoZz+FIHXb+CwSfNPvFP5cLzzmhli+pPx75YcpU7Tw9HfiTS6O7nw93E8Hr9KPGc1oF0DLWE+X2hBsO6GZe9t8pAG4bJ2A6LNx9ZWsgF8GFd21rVuFQevgsNVcqxLSFnrVKOcafwifyx8YvkfyXCjsc7Q2jyraz10o1lnvJNkGA0XnM2l3QNyLMRD3zzrL5zXy7pFR40dFmzliifNxnB84yPOx1WE/BuuwBTx2F9Ho3pYMclrxCwybFpvfuVQt7YTNivS1TyjwxRhZf3xukaT4S6BaWyIlzfmL7AKpfDAAS87191jq6CbxdyK5glyP01bxtSPOwlnuIZn9uPTx+Y5FcIMWOvaLoWRTaIQLYr8OFtymvHje/2uYGp41imomO5jBQPDRPDzsOeO2MasJQZR6F7JogSuqViJAg/NjTyeNlhcjJZFlt7R+/kTbWMzFJw6E5OVMXsl+vImp043HXXaL5V0n+s52NGQ+K88R398UYfA2jd3TJgqyT3MhMXMGXddpjOdUdCsTgsstMBZe1PpzJvYAKoa1+2TmuJbImyi3e/CvMJaQoIpwPrTMmSbvpDqYhl4K5TCxgy8MRpYdr6bErOruOAJIT/F64vY3DE2Za9QkhyOR6ggzlc1tiO5tuK22cmgr1xRyJVL+JeP+kB8pKdNaGuahzoLu2ycPlv4it+4Wm1QJduUWDqzP6692UzdRgmf04SD4qsJ+Eh6OqPii5RAypalBL4O8Dmx+DLEa9O4CmJeBG99aCN2XuGVGakX3I8ZRzt6yKkxEi6uxGVB0zZvlLwncYXyLHDSCBisuLyL7VoXzzsMGOQiOTFNOkgvhzlpRiR2QwPrDsg/p2107SHSxSrf9OY6Kj3eCcEc8X5xqyrlhjkJK1wDO4YS6SSOWwtMu67UJUxPOY/LMstTPN+bV60m/ozr5dyIRFo6IMQmcONls1fOdRiaCk/2Nxf1D2X0vnC3+pi42K1pcciwjw5QWhQJhxAgYBFi/zXFYfyyWhgesO+Fdlft60BMAWMr5oQvv/ii0sih28gXKvj8hMn8secVmZ/X/DP5kXKxyU/9nLINf2vFbOGHuBL30bquSne73/HOOCeKNLvrvDH4mkw4HkMWggPx0h4mujAwhvodycXwq+yx4Pj7yjoipx6MwdjRCR0rfepeZrsXuXpXajVolDokzmQs7z3812/vOJZ2Kvy9gJfpSq90YAUI8WVMdgmllpslGeSwC5gWcygkNiw34J32oyDJng4L7I1sBfzIzCB9pxT4JL+b/7e68ToC9355alOWJsg25WcNMwBwRsj1irGe0HpTqGAx1wc8dzY7Zxnb4/CeWzMBgJs8IwuwR8/mNkCuOvR2xbVtbeoHAG4EkPahlAHU5/isBjR0xU4Borw/L4BwbILd6mwKEK35vro8Fu5qWJI9gbIKQ0psG/CuM9sAmKWzkA9gtZ+tDUDEfbsHGKqrSDOoGPg2tpZXB9MWsOqwj2A+D+ktNZAASu5fjsVj4hsy+r0YLJnN2MlXu/9On6ULEkARiWqHLZVF6/fucC9AvzKR1KPHmg2vz6heL+owFHGJVMcMALQESYtRDaYRto+czY7ZPHK8j/V1Dx+3aAIAA655z7ZZgFZNels82dXaDwBMgdhWlBfUNH00CGeMLRDL/ktAs5ZBRKBx3j6jalSO2TZn/EGM5xL5Bzs+imnkLXIhnvOQ5cuJokGxas0AAEnQQzGqnzFCpy1Y7GojoHVCY/7Fr9EZ5uCeC8MdlWNyMf+4bjnIlHj2GItjOXMFiEXjSeH5xmXYvIuNBdF7e7ked+PPebt3xjyhXv36fXgZJ8hKcHHGWUk0PDKv7pX6o3Q8/xRrdasO845qXHcevCcaY3McqYiIZvJmjFQkOCcswTdU1GuGNeYxUhnLg0eQOd9XmfP6ZSe4ZO2su5P5OfC7/fv8PrNrem9N6dass5DCTrBsSF8ZMwAQVEuCVYtREZbkqoqrss9iuxjheMttzgQANHfxhZnO/e3XDNVz76eHhN4Eq3Vm/+w4z365WIpli1/XMo7DcXYtdeGDqJtaaDduHJFfVl2WFgMAY3W84mWUvB51N19W3v2nsubhP+mqbt6NXrOcErlKKfyX9bAvZdhAE8svnIf/pAsj3j2CCZQhDKmM943z1533R4LHa2BYUs5ApdmGJGV13DR3ol75H2VCsaAjZVsxIaCjsJc9cUHHVVvvyRpKAUNFTBfqR+iYFW/ny2fxJC9Ipz+jOPR8xop051ayFtqf0OZnkxUt0X49Se+tgUbeclXpusxXGzMA0C3ZdLmJDavDV6yQXB8r7tdqw727H3tXogkAZLKIjoSezZia9wMw3Sknm2uq3lwQABjNflcPLCgomUUcoGT2ZuQAKEM8kgNM235jOSDOKpDlgKQp13rNdR2TBgF3dSgZ5n2hVDozDIGoncWNgXj97BOBHN33bQFpdxVdERXjdMzO3aJsfjG9DD59OYrpZQmCBFB+/3KM1jErGd7zlYxH/XZ58ckoDi9LGiSAghIVb9YhmHhEni5eoJPqZEofIeg7vjbF7fljw8oFVdcxAwC1mOEKQakaTN/H3p6VduSznAs2bZoAABbE2DYskN0o5+Y6zq0GAUAbhFhRIqjK9A1ALWOsBsH2nwcEWgZu0JzxXqBq5I5Zu6fvjvF47F29Ct83yqngCcOMGEBu/NX75ny7WZCyrZHIGhffmhQiR2CzRDIe7EfFMc/2S2ITP/27iFgfI97qryoW1YOuc2T5wk/nvTtng3/8wN2cnTiUedE27R9bcCCPjDGEtIstAZZfPBaAqxxus7s2E1+56tg+vDsOnoqbjwWk+gwB7f01YwGeUMGvPNotKW6I5juKjFGJN2RHIsEfgbkdJxaSSoL5fKJaGNJIlp2xNoUt71+oq7rtlrnOC5kTXIAx7avEIoBxRidNF/Z01xw/OBKUHyI+x/lCz7GRKBdBRGS5M/g4isafTzyZUfxWh/Keg+yWxasXdVr9GNFJ+qwvIisYgdA6WMdpimVMFaBp+UkjLM8KJYX9roebf3d67qrQBhFsfPwh34FNTU5JlKbIhQr0hmQ4jJCc/iNz+QIYSHekz8JiWpzjMZzWDqWjb6Mgj7sy7Kc7uvx5dWMuCKctH7AqftyIyMTARyjqTrPalnwy8HlTYtR5RlgidkXLlMpJjJFv0j2z1yGWMO6t3hG144yQH4aCmJll+gVBjQv0EuwS59vzpOqsdIp3+5CKRHJWU/PfP+5o/ghAJuIilOAcw16z2yU5XP1CZLtndfhJQu7GzJvQBlbmBHHjyY6ssqfYVpX96It1iqm4pTyYKxSK+vgABis4gBPHx097lMKC8VYx89+Y7bHvmWz08X+heJY12C7XffaUKf7NskV1BItmPLZS6XlywlR8gUFoNzKK0Hz5gdlZcDk7/H0KnaKgaZuFexSL46otnerlftH7eC3Zt/5qz25D4DpDOlIwXLwDs9a0H6fe6N/XAQDUt+mmoPMfUKS7zHuFcZtRX9pjhwvP2Jaa0p6Czb9uIssuIcEp6+6FTpk1fudCRz8TlIjVjfYUvPM3w9hKdwQ+m3HuWG8/hfX9bQLcsZvCLv92wlSr2xOfT5bJtkM0L/zpX8ilPMC4Gjy7CnbTV9MPvRrfEYK7dgpnGaHilIyHpbyM6x5tNWMx8TDb8YKWPPB6ztZdI4CN8Y5omltIaH8Ip859Z+/O6GBjh4Xwmqk74m8J3y27BbjBAx+gFKTvC9HEsgTkfVxmcNLInuz79zXL9TNVOpv67ro8lYzDvtVDlb/7l3RWVcTVcI0EVuiYF33JGTyIqvSAOqhlOsS1OUDusLvddkrIjS21wSqCQouXV9ooKF4ZkqelC6MnKqrpxJc0MoCNDoCaDyO9s9dhu9aB0Gb6l+VAPUmYw7v3VxuCKYRoGHHD3MOZl8ID7+mhrO6S/zREp8q1NFaXmbQjAWuU7EgUs5RTIKVpsfynCaSuhvY3q2vApkWvN37XNN4DI3bqjp34GZ+lbhfxA5i3xqi1uGnBcSEfmfNB7fxPrM76b0oy086t9h5x/FJkpcd3p+7R3cu6PTW7Gw6/a7RHvTbaH99Q1d9ugSfS3zILnTQNRX+zhrQFvcEQp49/OSs898I6aqlkN871UxczaRpb86cJcHzv7MCG7e697SSvU4T4GtP9kXwEpNF7IKs1fRDve+zUkMBc/ILUAo9Whl50Xth1gEJZBn/12H2C1DGEa7NMHwq59UARDboTgvrvhr3wdfVTuLWIMbeTuxmY681j2M2ntcwRxENqsmseRTH58BoTkSQ6mJ+DjTynKHod/r8xyKRKVEAmla/3jVYQutT9WErL7WcTuXHrqc5b5VSW66mEjawkS1ULjelFGmsrMd1t+yWesPaJw1PnDUFSf4i8nuejxLR8eXDzrsA/lHqLeq+ipBQ7ZS202UeIsGadUjOm6efxUkONYavNPVScSfhNSnd71wdCSafLG6DiIEG0UatO5qASWpnnMVplC+TGHV6CQt7D3vay8rwAMZzsikW1Qg8wZNqnuLNH/lHeakYle4w4buPyI4wNu506M0C7jpdsWgzfJMjQQz47iW9D/G8uZ+PHqU+0yzNV3aKVq2OzbI5ioPnUfC1DM5mLNgbY3b2pgZSDiz9+w7QV3qXWie5LzMGyJTPDXmwOoAm7yyTP+H0QWfX90Iwz/qd+O7rhzpGuRqtpykiSwPpcuYvEoLQr6hZXOnEjYCzl3SvXi59YStHVQ6yajjbLOu6wRyZrdE7I+5Dv8Wh2+DWZ+N5Wn6gXQ8TAFbuglPlf/J9Uu23lHbaYVL/qi4ffNEPolnneJ1VRMDPwOImOIJkkMJ36DDcROQh9YqY4B9K5jhhwuRjLKgH+A2G0wr1MSxvNboVlpNuSX88GtRDQjDf1uYnFOSH8dfRrFeCezaIlFv/r4te7XK5WsP5v9Tf78HOeDpnlf5rdrGB3MHKUfoL58h7Wz1Yw+us3h0d+gDE7jXejr4GP6ecrBufvMARSeXkLxpjyR9FojCfZmGJKi5kVTNpJIWh94YK/8C67sDYpU30xjV8qfTseChqgTrQtXgyBgHbG+uYXPSCbiZqgCPPa7odw35vLdWK1HypPJZKLN3OynEn25Uye+30Pd+VETj6lGfUSM1Qrt5LhXMHN1P6VXMlWuqLLN22xVW0OHq0v3JPVHBtYgpJNPmy10lQ5E0NAYElApUkvNfI9nGd0+O7w1UNvSNCoMwU0Sabs0bDnOlkREaTrcxMxKjhdBHaW5g+0+hw2VSPl2U3m8HsWn5LpHABDlI/t+SUbZCIY8USSKi1DzPTN6GkRwzd+1kKDVxUSKspEPOwpNjw2nWY2uojAFVI0F//0yEa32QGlXRIcFTFOeCTgKIpBv5AtXnyH0Ts5oeUSrCkvDIFJLS+j2/xKWC/Ek0o4Q12MpXPy3yCCNKF2YdosWFpkyIt5qqnv6EDo0OU8W583jCMUbTE3T1GSbLlRCJ2Lo0w0zkv0xSYoXD0Q1y3pGWaGznITr5FmIXUYr43OIX8XI//HGaGAIXVBWay/xB6t3BWV7Iy825pAvkuayBvWIEbHNV2i/S6q/StuGhFdYeaSZQ8WQeuMx2Mb+oAs2E1YTmPeGxPz09YSXBRfPKIMQarG/uYWlWjn3NO06nHYrvgbAOxWY83p593R8CBGiNi6sdt35xW/iI2RP1xOV5TSe5I64Hf21PDSScDdZGP7gfpQT0h9qkRnsEsNEjPvjk7lm5XZ3409mJzZxZQDmmqcYh4jStFi66FeX3CWFzeRoMlr/W5l1CSKO4hb5v+uGaxciPOUHjw0HreMJJReImBQfDBaKkrjifO4bieLfbVendcUrwyyPk8a/tf+oMM95L++2Br+L3osH8GUZanFrmnK8RVXJFrCpZSKWwrmkc66GenD9VSlv1O+XaWcvTHRH9ZJa0P9vIGDmsBaVUANkfNpCqMAZXtjPeZ9BEJD+rJtRMenKfsaVAFFXEc4JuCGL0sCd7u8rDcn7ZZxUz7PMJBTVr0fbRTGf3PbvgnsGTnoyYSXlJUYGJApTd0lDxq/CVhpSporkY/QtwNbpsYeQK5bDI6VZALKIwqOJqlpOQ10PBVRaL7r4DhSt2Jsmrqe4Zqd1T4O6Ta6A2UzaXCbxBb+MPYSDZvQwhlyLSz/7mx0dQnDz5BC0vzyiljS8rlVfKJ0tRXBF3ALwLTMgo1l4UsPlpKwtE6SeRBTPJF0bXzRtpRzrbLM7TSFUfqCxaIdOoDirjZsDvqnS2qDmCQg4iNY2CS1TfvlyEk/rb5GHWsWLWTUzoRjrJkFIOIHY9UhZVzayTaDUqdqe0njWEFRU/fAQOxILwbxPS0bMEJsxzb8lsXvdXI80i4aEhNmoE7uK/6iMCRRE7+z268nuXVs/MjSbBNrMtWhYFPue5cjX+2cE3Xft1qTEjtJ91w9OctRNFndKy9RkjqnLvjc6pjWFoi0F9FA+cYZeldIAV5zQgm8zPFMM0xxJ9vXCHtzN7jkSI2OuzxVq4KAskoOxK0FWliLKttFRph/8wBtvbIXHdwqeEEGCbMhvLEA8Uu7rY7+MP7C6K/t96uBQi06UDwAu0nzX9WdTIYF6C4d7+qDeidbCwHk/AcfXUqgjBdmgGoeAYxofeYzJwpV84HHR2hKgz9asq63OnNb129PGxaA+wYp5Y+WCN2+nJErZUttdQBgErt3b5HZb/m1P5ff3+S+upvOV3eb21c3nWn+YY3cIWRXTNsDUMyd+W9n3U60WAD7oPIzeo1kP724+SStVPdgUQTXTAG0X8xnbj3YDWehOH3oLFAyzqoE1Udug4OP2jFM760d7yKxMGWL1o6WD2AnaXMH4HznxzXc/Sts5MgWzPP+4wl8+xVW8LMzckVVXi2liZqSVaXex3teLNTgP9mXb4eonN282igs0P7Qfq833rvQzcIhgQnDb4HjopuyX8xD4Ubl2cUBoNZuZUkWPrbpkzDAv2/8ujdxoT3f29CUl0KDgJMYBzI31ueprZQwB35UyslYdwldQbjmi1KWEBbM3f2c7fSDkPpo6XCRq1L4/tA3CVZxqK0gDOAvbK3Fk/VjTsVDloyW5KsC2E4xaFz/Rre9/kO+Qeya6dS/bFUOkLbpF26u/B3CkdnUvMb3iShinTMZDWbU5EUTGnBk3P9br5NMB2rLJGO9OS9HFdo77Ew1uwVIbQf8QjUUb2+RPS/954z6a9KHhv+aH3KMQikPNh4+aTZ+ndjDLzm1MBltMxnHL/u2P+GdL7D0WNDOF1h6Pqe7Rzh8Sy9w3GJdRpNCywfkVdJK3hqvyoTS9rZ04OmtZ2Zl8n3q76lF+rFqa59fAdI6cjUZLLNKQg/Qrm4A4DBVGzE8OEM3DvxIfi7eHmO3WnwLihVGrB6L0FiR9XlWq406quF8hQbxdFsR45V43JXugqtsglQwWlZb2Ez33G0BV7PzHwBADQEfvZ+dBuJzbtcFZNcM36wkt2TYQHfWH3XAd+kVTHOgU42ewLQJLMbxXg7YkT92B/Cq/207AICqWsLz/KMP1bOEl5YrtdmOcXyoHb68OUAPqIGmIwp8dF8lbTNWXTbmAQDTAQK7uNsCaLqZ9AFc+NmZAKr1G+IBuOmACsmFIz71E8yH/+dUrZd+rpWO6zPV/7XQnYD94vR9v0CWBQoFdV1SkWIr1mXu5/GbePAhfr3zGeX0UO61AdRrKXVA+H5K8+H/OTVbZZZT8MlJvXMUdZPa7+mHkiImfMWE2SwrzMgfqwX+uiWOh9y1z4Ma5eGhfGwDmA2z4i2cyycvITx6XX7FfrDe5NYcP9InMGYVA7lCSV9dNwCgIS3ADa7rej9IMz8Xu3Z9530kzWKFEe6mRWisyBjhjhaaJM7iLlsRrdVEwpXuwpxsAlXSW1dbsLd7LhHg253/AEAvDuCe92MYkOncUgK044qDBXT0/sIC59ArwM1CsZVtP06Hqni3ss4/edE+8cTXEzvYI0yHD95a5CDQWvrqugCA8ygr66uR8laM1AuH0P76xsNv4jf+Q6Zpf356R6czwlAnQlX4zDYXZJjpOY9QkHFjRwEAMDYgVzNb/GuQ4wlvy3kkFDj4QbehlHq3DgBAeyDClueiueJItEg06j8jxTRnfbNp/rXIqTqunX8751d67bzbvkiMVs/1gs+8owm9Kb6R9vn/dnwPiGbHFEtpcA00Rlti/tMur//7387O+bT8b3M7U23Tfl6XlA+aNoFvIaN/T9L69ct8p0/qM+LKihf2OJ94hJ9d3qYRpsxwZterU5WlCatqpK+eGwBYCatHhDVDiq3J4ftOYimLvolYXm3tWMEmAK9YYcSugQj3rkg8XAm7KNxL4sSN4uoQAQBLd2p9gmVvOYhWWkqfBue4BcYMtOsfAODKUAn0fmSHsoLKhe2lwiklTq5wOvzLujhRcgWZjl45UhQil/HqwUS1lF+gu2UYiGpd7sTVZJZYV7yO7knX5g009jviMvnmyo/7kUM6/m0/V5Tom90tHZdkfea1Kzefu/Yt+XGplWnXr7Y2/Z4q3m5p24q6tO34XZk2/N4F2++7crv5T7Sb/Bw97SUbDvyVa7OvjBa0tdVXWTt9tbXRV0/7fHX8sF7qdvmmaZOvXLzah/h+uYb3XnUbfOX8LO/71NTt7tXU5t7zz9qQ4j7rf59+0cK9PnMj+z9/zi6Qeqp5FR+9U6LY1lZ3qhJFkAhYRAYJWwzlPrCcHsTUmLopAAA8D5y03Zu22QfOM2g3HfGuilKeKP5ZReUIei3tygMAbiLIxdjCuaqTzTpxa/2PGPey+cDt4kvCxtYZuT0lYwKbYeXEcGUIyljnieJImlF6PvEQGnf6VdlbWMXTR/WeeOCddVxzIxw6w3RJty6PuzpqFQPOevQI5HQ5Zz3wNX9vOGIhf5f6YoRDZaiBUdXsjk1MWH35d90AAAuFGnXhwfrNY4E3t767/fvfooUYsC0MNyQvc4jBbpLARZwVN2sTIgDQFHRV8AnWtVX2Wu0D7F7z3N3CVnSN1xv/AQCVoEpv70crCTk7zZsAi10T3/ZCVoCdM/S3cWjNtFLXnFfg3vV49/vtEjUnKDOM11LdPbcKkJ6uh10xnlm6XcWMZ87emPZ4dtjY1A4AuMR4BDq+jHh2NOi2CwntAnsrDRIY3sY8AEA+4GQDh07nKoez5WRQs5wQcTi3XjZKcnhBrwEVObzVA1BTWvSlc5Ut14eT4uJJi8lnaEeYJgsM9TVSkdVVVlHPkP04Hvr45fHlCNNjGcMGUDej5UmY6kGa9z4K/cTy29en/IxwmCxCzCpYYd5UD0r8bABfEovhp0HeIxweyyI2gFkJK15Bmx7wrnW9IhZKeOMfjnC4JDOIUx0EcneQvrpuACAd4o8b4ze3C+zQ2KV3xEqKFuJCN1eUA5LK4Ro3SdSKu28TIgDQIHRx8QmWtdnqXO0DeNk9l2sgzZ3/AACXAtTj/VgF6NppZgAYY4rjMKWCPI5eWTKtVDu0C3Q7MA/vt5bnGqXMHircTz9nHukZLJk9/OxWelBRulIJo3Uh0UJmrqSv3gYAGI9Wv6VJxlJfueb8UcpmSUslo27HMOJAWxYGxCf683cFIZyhDE4ZQmz3nDlYCInmoZ0AAEgbqasgrJlvhz7p7nEgtrf7w/F6dBXs27ADAHgLEk55ShHFUbnMGOBoHHEscEQcOyMgEYuj0gNu/vflbgW29U4qH6V8psboq5LPVJIgPkFWG/6/d5UQuu9sTuo9qPt2GV42c3cpttRHM/UJyrBSwDlthgDApbchLlJATb5QlybSdesYuqfMmyKJpK3x59uXTvh3iapyuAJFQFCtAQmUBUZnAyIAAIBJl/p494gMSlN7DXTpYEmg9OZ/AKADaA60f7Zimoq2zOY2aMsYb4O2fku3KZaUQHcXqIETXQh+wc4t4DywsPNfNsfjmv6ud//y57795vwpWiXvgY7P/7+YFaoYQFaZVXRRM6GnTHlvwk2LDfzCF9l87anDrljZxzirOZ3xYLKCo/S/JzrP6zuiyFhoU+MPr5M2bdwdr1exrvi3MExuar5VWzErTwKfv4M6+sV8Z7j7vqncP2xlzjubN/uL5gX/Ppc5Fz66HABClsrtyrteJJtA6u2NQSn2IQ19CKUpnwIAAolKZdrxaek+ZLHbTive06zangrLYGJY4KktDwBYr2ZVJx54OQennguqRm1lNDZUPdvL1iyharPXIHZB3dqhKLPMJF04zvLBXdA0lvOr5JYV74/ByzCemBe6vuD6s4iKo7MzdByUS+yhqJmbC98R0h1D1CesnHUvwnnCbrf0lRkCACt9+3yk9lgYB795cOBl7PndjZYGh/toC2NaXJc5xKjrkoAOPCkrgtiaBV/pLqTHJ9peADvNc3OrRpJrmd74DwCEhG732j+LSKKibbO5A1oY4x3Q4pGdQukBSNsEunZNCkC3OXFfZhcpkep1kTCUyA4GkkOoa3e7a6Sh7qremLFk7G7vagcAPFVQA7vlM6cYG+NhO3OOMTlTWXH4Tjm89KY8AGBKq8VUDmi4uFSAaboZuYAZ+NnKAqP1G1wERmiCcq2g6/Ud2BeFz5NnZn+C+MZ6K87daYGhbkIqZN+jcZnf7PknieHPKo3caXmyBlAPoeUJminbb2WV+J49/u7hd95ozphpEWK2uAplCR69FvrOvm2Qqu6jNV6m5c4awGxz1YaqlM1aw+TB2eOj+GGo05+n0idIo0oyYZ0sUhs4AODu2fuv1yYTEpYzSECs7Xb/pKxg4bhvr8limqDYKCESWJWI3kr5X+0uqi0Urba7OJS999yueE65J2tr/wGAkUM9xZ9slaIcl2+KtrjcWLTFccVSEdsy2IBk018L","base64")).toString()),CL}var ZAe=new Map([[S.makeIdent(null,"fsevents").identHash,VAe],[S.makeIdent(null,"resolve").identHash,_Ae],[S.makeIdent(null,"typescript").identHash,XAe]]),b4e={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,i]of zAe)e(S.parseDescriptor(r,!0),i)},getBuiltinPatch:async(t,e)=>{var s;let r="compat/";if(!e.startsWith(r))return;let i=S.parseIdent(e.slice(r.length)),n=(s=ZAe.get(i.identHash))==null?void 0:s();return typeof n!="undefined"?n:null},reduceDependency:async(t,e,r,i)=>typeof ZAe.get(t.identHash)=="undefined"?t:S.makeDescriptor(t,S.makeRange({protocol:"patch:",source:S.stringifyDescriptor(t),selector:`~builtin`,params:null}))}},v4e=b4e;var IL={};it(IL,{default:()=>x4e});var V0=class extends Be{constructor(){super(...arguments);this.pkg=Y.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){let e=[];this.pkg&&e.push("--package",this.pkg),this.quiet&&e.push("--quiet");let r=S.parseIdent(this.command),i=S.makeIdent(r.scope,`create-${r.name}`);return this.cli.run(["dlx",...e,S.stringifyIdent(i),...this.args])}};V0.paths=[["create"]];var $Ae=V0;var jC=class extends Be{constructor(){super(...arguments);this.packages=Y.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){return fe.telemetry=null,await T.mktempPromise(async e=>{var p;let r=v.join(e,`dlx-${process.pid}`);await T.mkdirPromise(r),await T.writeFilePromise(v.join(r,"package.json"),`{} +`),await T.writeFilePromise(v.join(r,"yarn.lock"),"");let i=v.join(r,".yarnrc.yml"),n=await fe.findProjectCwd(this.context.cwd,wt.lockfile),s=!(await fe.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),o=n!==null?v.join(n,".yarnrc.yml"):null;o!==null&&T.existsSync(o)?(await T.copyFilePromise(o,i),await fe.updateConfiguration(r,d=>{let m=_(P({},d),{enableGlobalCache:s,enableTelemetry:!1});return Array.isArray(d.plugins)&&(m.plugins=d.plugins.map(E=>{let B=typeof E=="string"?E:E.path,b=M.isAbsolute(B)?B:M.resolve(M.fromPortablePath(n),B);return typeof E=="string"?b:{path:b,spec:E.spec}})),m})):await T.writeFilePromise(i,`enableGlobalCache: ${s} +enableTelemetry: false +`);let a=(p=this.packages)!=null?p:[this.command],l=S.parseDescriptor(this.command).name,c=await this.cli.run(["add","--",...a],{cwd:r,quiet:this.quiet});if(c!==0)return c;this.quiet||this.context.stdout.write(` +`);let u=await fe.find(r,this.context.plugins),{project:g,workspace:f}=await Ke.find(u,r);if(f===null)throw new rt(g.cwd,r);await g.restoreInstallState();let h=await Kt.getWorkspaceAccessibleBinaries(f);return h.has(l)===!1&&h.size===1&&typeof this.packages=="undefined"&&(l=Array.from(h)[0][0]),await Kt.executeWorkspaceAccessibleBinary(f,l,this.args,{packageAccessibleBinaries:h,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};jC.paths=[["dlx"]],jC.usage=ye.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var ele=jC;var S4e={commands:[$Ae,ele]},x4e=S4e;var xL={};it(xL,{default:()=>D4e,fileUtils:()=>EL});var hf=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,YC=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Nr="file:";var EL={};it(EL,{makeArchiveFromLocator:()=>_0,makeBufferFromLocator:()=>BL,makeLocator:()=>wL,makeSpec:()=>tle,parseSpec:()=>yL});function yL(t){let{params:e,selector:r}=S.parseRange(t),i=M.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?S.parseLocator(e.locator):null,path:i}}function tle({parentLocator:t,path:e,folderHash:r,protocol:i}){let n=t!==null?{locator:S.stringifyLocator(t)}:{},s=typeof r!="undefined"?{hash:r}:{};return S.makeRange({protocol:i,source:e,selector:e,params:P(P({},s),n)})}function wL(t,{parentLocator:e,path:r,folderHash:i,protocol:n}){return S.makeLocator(t,tle({parentLocator:e,path:r,folderHash:i,protocol:n}))}async function _0(t,{protocol:e,fetchOptions:r,inMemory:i=!1}){let{parentLocator:n,path:s}=S.parseFileStyleRange(t.reference,{protocol:e}),o=v.isAbsolute(s)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(n,r),a=o.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=v.join(a.prefixPath,s);return await de.releaseAfterUseAsync(async()=>await Ai.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:S.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function BL(t,{protocol:e,fetchOptions:r}){return(await _0(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var QL=class{supports(e,r){return!!e.reference.startsWith(Nr)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async fetchFromDisk(e,r){return _0(e,{protocol:Nr,fetchOptions:r})}};var k4e=2,bL=class{supportsDescriptor(e,r){return e.range.match(hf)?!0:!!e.range.startsWith(Nr)}supportsLocator(e,r){return!!e.reference.startsWith(Nr)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=yL(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await BL(S.makeLocator(e,S.makeRange({protocol:Nr,source:n,selector:n,params:{locator:S.stringifyLocator(s)}})),{protocol:Nr,fetchOptions:i.fetchOptions}),a=mn.makeHash(`${k4e}`,o).slice(0,6);return[wL(e,{parentLocator:s,path:n,folderHash:a,protocol:Nr})]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var vL=class{supports(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromDisk(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath)}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.join(o.prefixPath,n),c=await a.readFilePromise(l);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(c,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}),o.releaseFs)}};var SL=class{supportsDescriptor(e,r){return YC.test(e.range)?!!(e.range.startsWith(Nr)||hf.test(e.range)):!1}supportsLocator(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range;return n.startsWith(Nr)&&(n=n.slice(Nr.length)),[S.makeLocator(e,`${Nr}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var P4e={fetchers:[vL,QL],resolvers:[SL,bL]},D4e=P4e;var PL={};it(PL,{default:()=>N4e});var rle=ie(require("querystring")),ile=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function nle(t){return t?ile.some(e=>!!t.match(e)):!1}function sle(t){let e;for(let a of ile)if(e=t.match(a),e)break;if(!e)throw new Error(R4e(t));let[,r,i,n,s="master"]=e,{commit:o}=rle.default.parse(s);return s=o||s.replace(/[^:]*:/,""),{auth:r,username:i,reponame:n,treeish:s}}function R4e(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var kL=class{supports(e,r){return!!nle(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await T.mktempPromise(async n=>{let s=new Ft(n);await Ai.extractArchiveTo(i,s,{stripComponents:1});let o=Uc.splitRepoUrl(e.reference),a=v.join(n,"package.tgz");await Kt.prepareExternalProject(n,a,{configuration:r.project.configuration,report:r.report,workspace:o.extra.workspace,locator:e});let l=await T.readFilePromise(a);return await Ai.convertToZip(l,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:i,username:n,reponame:s,treeish:o}=sle(e.reference);return`https://${i?`${i}@`:""}github.com/${n}/${s}/archive/${o}.tar.gz`}};var F4e={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let i=new kL;if(!i.supports(e,r))return null;try{return await i.fetch(e,r)}catch(n){return null}}}},N4e=F4e;var FL={};it(FL,{default:()=>T4e});var qC=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,JC=/^https?:/;var DL=class{supports(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(e.reference,{configuration:r.project.configuration});return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var RL=class{supportsDescriptor(e,r){return qC.test(e.range)?!!JC.test(e.range):!1}supportsLocator(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[S.convertDescriptorToLocator(e)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var L4e={fetchers:[DL],resolvers:[RL]},T4e=L4e;var ML={};it(ML,{default:()=>M5e});var Rle=ie(Dle()),TL=ie(require("util")),WC=class extends Be{constructor(){super(...arguments);this.private=Y.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=Y.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=Y.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=Y.Boolean("-2",!1,{hidden:!0});this.yes=Y.Boolean("-y,--yes",{hidden:!0});this.assumeFreshProject=Y.Boolean("--assume-fresh-project",!1,{hidden:!0})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return r!==null?await this.executeProxy(e,r):await this.executeRegular(e)}async executeProxy(e,r){if(e.projectCwd!==null&&e.projectCwd!==this.context.cwd)throw new me("Cannot use the --install flag from within a project subdirectory");T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=v.join(this.context.cwd,e.get("lockfileFilename"));T.existsSync(i)||await T.writeFilePromise(i,"");let n=await this.cli.run(["set","version",r],{quiet:!0});if(n!==0)return n;let s=[];return this.private&&s.push("-p"),this.workspace&&s.push("-w"),this.yes&&s.push("-y"),await T.mktempPromise(async o=>{let{code:a}=await hr.pipevp("yarn",["init",...s],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Kt.makeScriptEnv({binFolder:o})});return a})}async executeRegular(e){var l;let r=null;try{r=(await Ke.find(e,this.context.cwd)).project}catch{r=null}T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=await Ze.tryFind(this.context.cwd)||new Ze,n=Object.fromEntries(e.get("initFields").entries());i.load(n),i.name=(l=i.name)!=null?l:S.makeIdent(e.get("initScope"),v.basename(this.context.cwd)),i.packageManager=Zr&&de.isTaggedYarnVersion(Zr)?`yarn@${Zr}`:null,typeof i.raw.private=="undefined"&&(this.private||this.workspace&&i.workspaceDefinitions.length===0)&&(i.private=!0),this.workspace&&i.workspaceDefinitions.length===0&&(await T.mkdirPromise(v.join(this.context.cwd,"packages"),{recursive:!0}),i.workspaceDefinitions=[{pattern:"packages/*"}]);let s={};i.exportTo(s),TL.inspect.styles.name="cyan",this.context.stdout.write(`${(0,TL.inspect)(s,{depth:Infinity,colors:!0,compact:!1})} +`);let o=v.join(this.context.cwd,Ze.fileName);await T.changeFilePromise(o,`${JSON.stringify(s,null,2)} +`,{automaticNewlines:!0});let a=v.join(this.context.cwd,"README.md");if(T.existsSync(a)||await T.writeFilePromise(a,`# ${S.stringifyIdent(i.name)} +`),!r||r.cwd===this.context.cwd){let c=v.join(this.context.cwd,wt.lockfile);T.existsSync(c)||await T.writeFilePromise(c,"");let g=["/.yarn/*","!/.yarn/patches","!/.yarn/plugins","!/.yarn/releases","!/.yarn/sdks","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!/.yarn/cache","#/.pnp.*"].map(m=>`${m} +`).join(""),f=v.join(this.context.cwd,".gitignore");T.existsSync(f)||await T.writeFilePromise(f,g);let h={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,Rle.default)(h,e.get("initEditorConfig"));let p=`root = true +`;for(let[m,E]of Object.entries(h)){p+=` +[${m}] +`;for(let[B,b]of Object.entries(E))p+=`${B.replace(/[A-Z]/g,H=>`_${H.toLowerCase()}`)} = ${b} +`}let d=v.join(this.context.cwd,".editorconfig");T.existsSync(d)||await T.writeFilePromise(d,p),T.existsSync(v.join(this.context.cwd,".git"))||await hr.execvp("git",["init"],{cwd:this.context.cwd})}}};WC.paths=[["init"]],WC.usage=ye.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var Fle=WC;var T5e={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:ge.STRING,default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}}},commands:[Fle]},M5e=T5e;var GL={};it(GL,{default:()=>K5e});var Ua="portal:",Ha="link:";var OL=class{supports(e,r){return!!e.reference.startsWith(Ua)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot}}};var KL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ua)}supportsLocator(e,r){return!!e.reference.startsWith(Ua)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ua.length);return[S.makeLocator(e,`${Ua}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var UL=class{supports(e,r){return!!e.reference.startsWith(Ha)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0}}};var HL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ha)}supportsLocator(e,r){return!!e.reference.startsWith(Ha)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ha.length);return[S.makeLocator(e,`${Ha}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){return _(P({},e),{version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map})}};var O5e={fetchers:[UL,OL],resolvers:[HL,KL]},K5e=O5e;var mT={};it(mT,{default:()=>Y6e});var Ga;(function(i){i[i.YES=0]="YES",i[i.NO=1]="NO",i[i.DEPENDS=2]="DEPENDS"})(Ga||(Ga={}));var jL=(t,e)=>`${t}@${e}`,Nle=(t,e)=>{let r=e.indexOf("#"),i=r>=0?e.substring(r+1):e;return jL(t,i)},qs;(function(s){s[s.NONE=-1]="NONE",s[s.PERF=0]="PERF",s[s.CHECK=1]="CHECK",s[s.REASONS=2]="REASONS",s[s.INTENSIVE_CHECK=9]="INTENSIVE_CHECK"})(qs||(qs={}));var Tle=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),i=e.check||r>=9,n=e.hoistingLimits||new Map,s={check:i,debugLevel:r,hoistingLimits:n,fastLookupPossible:!0},o;s.debugLevel>=0&&(o=Date.now());let a=U5e(t,s),l=!1,c=0;do l=YL(a,[a],new Set([a.locator]),new Map,s).anotherRoundNeeded,s.fastLookupPossible=!1,c++;while(l);if(s.debugLevel>=0&&console.log(`hoist time: ${Date.now()-o}ms, rounds: ${c}`),s.debugLevel>=1){let u=zC(a);if(YL(a,[a],new Set([a.locator]),new Map,s).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: +${u}, next tree: +${zC(a)}`);let f=Lle(a);if(f)throw new Error(`${f}, after hoisting finished: +${zC(a)}`)}return s.debugLevel>=2&&console.log(zC(a)),H5e(a)},G5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())r.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),r},j5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of t)u=g.dependencies.get(c.name),u&&r.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),r},Mle=(t,e)=>{if(e.decoupled)return e;let{name:r,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:p,hoistedTo:d}=e,m={name:r,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:new Map(p),hoistedTo:new Map(d)},E=m.dependencies.get(r);return E&&E.ident==m.ident&&m.dependencies.set(r,m),t.dependencies.set(m.name,m),m},Y5e=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let n of t.dependencies.values())t.peerNames.has(n.name)||r.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!t.peerNames.has(s)){let a=r.get(s);a||(a=[],r.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return r},qL=t=>{let e=new Set,r=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!t.peerNames.has(s)){let o=t.dependencies.get(s);o&&!e.has(o)&&r(o,n)}e.add(i)}};for(let i of t.dependencies.values())t.peerNames.has(i.name)||r(i);return e},YL=(t,e,r,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=J5e(o),l=Y5e(o,a),c=t==o?new Map:n.fastLookupPossible?G5e(e):j5e(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([d,m])=>[d,m[0]])),p=new Map;do{let d=q5e(t,e,r,c,h,l,i,p,n);d.isGraphChanged&&(f=!0),d.anotherRoundNeeded&&(g=!0),u=!1;for(let[m,E]of l)E.length>1&&!o.dependencies.has(m)&&(h.delete(m),E.shift(),h.set(m,E[0]),u=!0)}while(u);for(let d of o.dependencies.values())if(!o.peerNames.has(d.name)&&!r.has(d.locator)){r.add(d.locator);let m=YL(t,[...e,d],r,p,n);m.isGraphChanged&&(f=!0),m.anotherRoundNeeded&&(g=!0),r.delete(d.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},W5e=(t,e,r,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(m=>wi(m)).join("\u2192")}`);let h=r[r.length-1],d=!(i.ident===h.ident);if(l&&!d&&(g="- self-reference"),d&&(d=!i.isWorkspace,l&&!d&&(g="- workspace")),d&&(d=!h.isWorkspace||h.hoistedFrom.has(i.name)||e.size===1,l&&!d&&(g=h.reasons.get(i.name))),d&&(d=!t.peerNames.has(i.name),l&&!d&&(g=`- cannot shadow peer: ${wi(t.originalDependencies.get(i.name).locator)} at ${u}`)),d){let m=!1,E=n.get(i.name);if(m=!E||E.ident===i.ident,l&&!m&&(g=`- filled by: ${wi(E.locator)} at ${u}`),m)for(let B=r.length-1;B>=1;B--){let R=r[B].dependencies.get(i.name);if(R&&R.ident!==i.ident){m=!1;let H=a.get(h);H||(H=new Set,a.set(h,H)),H.add(i.name),l&&(g=`- filled by ${wi(R.locator)} at ${r.slice(0,B).map(L=>wi(L.locator)).join("\u2192")}`);break}}d=m}if(d&&(d=s.get(i.name)===i.ident,l&&!d&&(g=`- filled by: ${wi(o.get(i.name)[0])} at ${u}`)),d){let m=!0,E=new Set(i.peerNames);for(let B=r.length-1;B>=1;B--){let b=r[B];for(let R of E){if(b.peerNames.has(R)&&b.originalDependencies.has(R))continue;let H=b.dependencies.get(R);H&&t.dependencies.get(R)!==H&&(B===r.length-1?f.add(H):(f=null,m=!1,l&&(g=`- peer dependency ${wi(H.locator)} from parent ${wi(b.locator)} was not hoisted to ${u}`))),E.delete(R)}if(!m)break}d=m}if(d&&!c)for(let m of i.hoistedDependencies.values()){let E=n.get(m.name);if(!E||m.ident!==E.ident){d=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${wi(m.locator)}, available: ${wi(E==null?void 0:E.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:d?0:1,reason:g}},q5e=(t,e,r,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(m,E,B,b)=>{if(u.has(B))return;let R=[...E,B.locator],H=new Map,L=new Map;for(let q of qL(B)){let A=W5e(c,r,[c,...m,B],q,i,n,s,a,{outputReason:l.debugLevel>=2,fastLookupPossible:l.fastLookupPossible});if(L.set(q,A),A.isHoistable===2)for(let V of A.dependsOn){let W=H.get(V.name)||new Set;W.add(q.name),H.set(V.name,W)}}let K=new Set,J=(q,A,V)=>{if(!K.has(q)){K.add(q),L.set(q,{isHoistable:1,reason:V});for(let W of H.get(q.name)||[])J(B.dependencies.get(W),A,l.debugLevel>=2?`- peer dependency ${wi(q.locator)} from parent ${wi(B.locator)} was not hoisted`:"")}};for(let[q,A]of L)A.isHoistable===1&&J(q,A,A.reason);for(let q of L.keys())if(!K.has(q)){f=!0;let A=o.get(B);A&&A.has(q.name)&&(g=!0),B.dependencies.delete(q.name),B.hoistedDependencies.set(q.name,q),B.reasons.delete(q.name);let V=c.dependencies.get(q.name);if(l.debugLevel>=2){let W=Array.from(E).concat([B.locator]).map(F=>wi(F)).join("\u2192"),X=c.hoistedFrom.get(q.name);X||(X=[],c.hoistedFrom.set(q.name,X)),X.push(W),B.hoistedTo.set(q.name,Array.from(e).map(F=>wi(F.locator)).join("\u2192"))}if(!V)c.ident!==q.ident&&(c.dependencies.set(q.name,q),b.add(q));else for(let W of q.references)V.references.add(W)}if(l.check){let q=Lle(t);if(q)throw new Error(`${q}, after hoisting dependencies of ${[c,...m,B].map(A=>wi(A.locator)).join("\u2192")}: +${zC(t)}`)}let ne=qL(B);for(let q of ne)if(K.has(q)){let A=L.get(q);if((n.get(q.name)===q.ident||!B.reasons.has(q.name))&&A.isHoistable!==0&&B.reasons.set(q.name,A.reason),!q.isHoistBorder&&R.indexOf(q.locator)<0){u.add(B);let W=Mle(B,q);h([...m,B],[...E,B.locator],W,d),u.delete(B)}}},p,d=new Set(qL(c));do{p=d,d=new Set;for(let m of p){if(m.locator===c.locator||m.isHoistBorder)continue;let E=Mle(c,m);h([],Array.from(r),E,d)}}while(d.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},Lle=t=>{let e=[],r=new Set,i=new Set,n=(s,o,a)=>{if(r.has(s)||(r.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>wi(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,d=`${h?` hoisted to ${h}`:""}`,m=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${m} - broken require promise for ${c.name}${d}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${m} - broken require promise: no required dependency ${c.name}${d} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(t,t.dependencies,t),e.join(` +`)},U5e=(t,e)=>{let{identName:r,name:i,reference:n,peerNames:s}=t,o={name:i,references:new Set([n]),locator:jL(r,n),ident:Nle(r,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,isWorkspace:!0,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[t,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:d,peerNames:m,hoistPriority:E,isWorkspace:B}=c,b=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([d]),locator:jL(p,d),ident:Nle(p,d),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(m),reasons:new Map,decoupled:!0,isHoistBorder:b?b.has(h):!1,hoistPriority:E||0,isWorkspace:B||!1,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=d=>{if(!h.has(d)){h.add(d),d.decoupled=!1;for(let m of d.dependencies.values())d.peerNames.has(m.name)||p(m)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of t.dependencies)l(c,o);return o},JL=t=>t.substring(0,t.indexOf("@",1)),H5e=t=>{let e={name:t.name,identName:JL(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),i=(n,s,o)=>{let a=r.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:JL(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){r.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);r.delete(n)}};for(let n of t.dependencies.values())i(n,t,e);return e},J5e=t=>{let e=new Map,r=new Set([t]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!r.has(a);if(n(a).dependents.add(o.ident),!l){r.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||s(t,o);return e},wi=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let i=t.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(r=`v:${r}`),n.startsWith("workspace")&&(r=`w:${r}`,n=""),`${r}${n?`@${n}`:""}`}else return`${r}`},Ole=5e4,zC=t=>{let e=0,r=(n,s,o="")=>{if(e>Ole||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name.localeCompare(u.name)),l="";s.add(n);for(let c=0;c":"")+(f!==u.name?`a:${u.name}:`:"")+wi(u.locator)+(g?` ${g}`:"")+(u!==n&&h.length>0?`, hoisted from: ${h.join(", ")}`:"")} +`,l+=r(u,s,`${o}${cOle?` +Tree is too large, part of the tree has been dunped +`:"")};var Js;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Js||(Js={}));var Sn;(function(i){i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none"})(Sn||(Sn={}));var Kle="node_modules",Hc="$wsroot$";var VC=(t,e)=>{let{packageTree:r,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=z5e(t,e),o=null;if(n.length===0){let a=Tle(r,{hoistingLimits:i});o=V5e(t,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},ms=t=>`${t.name}@${t.reference}`,WL=t=>{let e=new Map;for(let[r,i]of t.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((i,n)=>{let s=i.split(v.delimiter).length,o=n.split(v.delimiter).length;return s!==o?o-s:n.localeCompare(i)});return e},Ule=(t,e)=>{let r=S.isVirtualLocator(t)?S.devirtualizeLocator(t):t,i=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e;return S.areLocatorsEqual(r,i)},zL=(t,e,r,i)=>{if(t.linkType!==Js.SOFT)return!1;let n=M.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return v.contains(i,n)===null},_5e=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=M.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=t.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=ms(f);if(l.has(p))return;l.add(p);let d=t.getPackageInformation(f);if(d){let m=h?ms(h):"";if(ms(f)!==m&&d.linkType===Js.SOFT&&!zL(d,f,t,i)){let E=Hle(d,f,t);(!a.get(E)||f.reference.startsWith("workspace:"))&&a.set(E,f)}for(let[E,B]of d.packageDependencies)B!==null&&(d.packagePeers.has(E)||c(t.getLocator(E,B),f))}};for(let f of o)c(f,null);let u=i.split(v.sep);for(let f of a.values()){let h=t.getPackageInformation(f),d=M.toPortablePath(h.packageLocation.slice(0,-1)).split(v.sep).slice(u.length),m=s;for(let E of d){let B=m.children.get(E);B||(B={children:new Map},m.children.set(E,B)),m=B}m.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=ms(h),d=n.get(p);d||(d=new Set,n.set(p,d)),d.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},z5e=(t,e)=>{let r=[],i=!1,n=new Map,s=_5e(t),o=t.getPackageInformation(t.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=t.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=M.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,isWorkspace:!0},u=new Map,g=(h,p)=>`${ms(p)}:${h}`,f=(h,p,d,m,E,B,b,R)=>{var X,F;let H=g(h,d),L=u.get(H),K=!!L;!K&&d.name===a.name&&d.reference===a.reference&&(L=c,u.set(H,c));let J=zL(p,d,t,l);if(!L){let D=p.linkType===Js.SOFT&&d.name.endsWith(Hc);L={name:h,identName:d.name,reference:d.reference,dependencies:new Set,peerNames:D?new Set:p.packagePeers,isWorkspace:D},u.set(H,L)}let ne;if(J?ne=2:E.linkType===Js.SOFT?ne=1:ne=0,L.hoistPriority=Math.max(L.hoistPriority||0,ne),R&&!J){let D=ms({name:m.identName,reference:m.reference}),he=n.get(D)||new Set;n.set(D,he),he.add(L.name)}let q=new Map(p.packageDependencies);if(e.project){let D=e.project.workspacesByCwd.get(M.toPortablePath(p.packageLocation.slice(0,-1)));if(D){let he=new Set([...Array.from(D.manifest.peerDependencies.values(),pe=>S.stringifyIdent(pe)),...Array.from(D.manifest.peerDependenciesMeta.keys())]);for(let pe of he)q.has(pe)||(q.set(pe,B.get(pe)||null),L.peerNames.add(pe))}}let A=ms({name:d.name.replace(Hc,""),reference:d.reference}),V=s.get(A);if(V)for(let D of V)q.set(`${D.name}${Hc}`,D.reference);(p!==E||p.linkType!==Js.SOFT||!e.selfReferencesByCwd||e.selfReferencesByCwd.get(b))&&m.dependencies.add(L);let W=d!==a&&p.linkType===Js.SOFT&&!d.name.endsWith(Hc)&&!J;if(!K&&!W){let D=new Map;for(let[he,pe]of q)if(pe!==null){let Ne=t.getLocator(he,pe),Pe=t.getLocator(he.replace(Hc,""),pe),qe=t.getPackageInformation(Pe);if(qe===null)throw new Error("Assertion failed: Expected the package to have been registered");let re=zL(qe,Ne,t,l);if(e.validateExternalSoftLinks&&e.project&&re){qe.packageDependencies.size>0&&(i=!0);for(let[De,$]of qe.packageDependencies)if($!==null){let G=S.parseLocator(Array.isArray($)?`${$[0]}@${$[1]}`:`${De}@${$}`);if(ms(G)!==ms(Ne)){let Ce=q.get(De);if(Ce){let ee=S.parseLocator(Array.isArray(Ce)?`${Ce[0]}@${Ce[1]}`:`${De}@${Ce}`);Ule(ee,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with parent dependency ${S.prettyLocator(e.project.configuration,ee)}`})}else{let ee=D.get(De);if(ee){let Ue=ee.target,Oe=S.parseLocator(Array.isArray(Ue)?`${Ue[0]}@${Ue[1]}`:`${De}@${Ue}`);Ule(Oe,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with dependency ${S.prettyLocator(e.project.configuration,Oe)} from sibling portal ${S.prettyIdent(e.project.configuration,S.parseIdent(ee.portal.name))}`})}else D.set(De,{target:G.reference,portal:Ne})}}}}let se=(X=e.hoistingLimitsByCwd)==null?void 0:X.get(b),be=re?b:v.relative(l,M.toPortablePath(qe.packageLocation))||Se.dot,ae=(F=e.hoistingLimitsByCwd)==null?void 0:F.get(be),Ae=se===Sn.DEPENDENCIES||ae===Sn.DEPENDENCIES||ae===Sn.WORKSPACES;f(ms(Ne)===ms(d)?h:he,qe,Ne,L,p,q,be,Ae)}}};return f(a.name,o,a,c,o,o.packageDependencies,Se.dot,!1),{packageTree:c,hoistingLimits:n,errors:r,preserveSymlinksRequired:i}};function Hle(t,e,r){let i=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return M.toPortablePath(i||t.packageLocation)}function X5e(t,e,r){let i=e.getLocator(t.name.replace(Hc,""),t.reference),n=e.getPackageInformation(i);if(n===null)throw new Error("Assertion failed: Expected the package to be registered");let s,o;return r.pnpifyFs?(o=M.toPortablePath(n.packageLocation),s=Js.SOFT):(o=Hle(n,t,e),s=n.linkType),{linkType:s,target:o}}var V5e=(t,e,r)=>{let i=new Map,n=(u,g,f)=>{let{linkType:h,target:p}=X5e(u,t,r);return{locator:ms(u),nodePath:g,target:p,linkType:h,aliases:f}},s=u=>{let[g,f]=u.split("/");return f?{scope:kr(g),name:kr(f)}:{scope:null,name:kr(g)}},o=new Set,a=(u,g,f)=>{if(!o.has(u)){o.add(u);for(let h of u.dependencies){if(h===u)continue;let p=Array.from(h.references).sort(),d={name:h.identName,reference:p[0]},{name:m,scope:E}=s(h.name),B=E?[E,m]:[m],b=v.join(g,Kle),R=v.join(b,...B),H=`${f}/${d.name}`,L=n(d,f,p.slice(1)),K=!1;if(L.linkType===Js.SOFT&&r.project){let J=r.project.workspacesByCwd.get(L.target.slice(0,-1));K=!!(J&&!J.manifest.name)}if(!h.name.endsWith(Hc)&&!K){let J=i.get(R);if(J){if(J.dirList)throw new Error(`Assertion failed: ${R} cannot merge dir node with leaf node`);{let V=S.parseLocator(J.locator),W=S.parseLocator(L.locator);if(J.linkType!==L.linkType)throw new Error(`Assertion failed: ${R} cannot merge nodes with different link types ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/${S.stringifyLocator(W)}`);if(V.identHash!==W.identHash)throw new Error(`Assertion failed: ${R} cannot merge nodes with different idents ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/s${S.stringifyLocator(W)}`);L.aliases=[...L.aliases,...J.aliases,S.parseLocator(J.locator).reference]}}i.set(R,L);let ne=R.split("/"),q=ne.indexOf(Kle),A=ne.length-1;for(;q>=0&&A>q;){let V=M.toPortablePath(ne.slice(0,A).join(v.sep)),W=kr(ne[A]),X=i.get(V);if(!X)i.set(V,{dirList:new Set([W])});else if(X.dirList){if(X.dirList.has(W))break;X.dirList.add(W)}A--}}a(h,L.linkType===Js.SOFT?L.target:R,H)}}},l=n({name:e.name,reference:Array.from(e.references)[0]},"",[]),c=l.target;return i.set(c,l),a(e,c,""),i};var oT={};it(oT,{PnpInstaller:()=>Cf,PnpLinker:()=>jc,default:()=>m6e,getPnpPath:()=>qA,jsInstallUtils:()=>Ws,pnpUtils:()=>nT,quotePathIfNeeded:()=>uce});var lce=ie(Or()),cce=ie(require("url"));var Gle;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Gle||(Gle={}));var Ht;(function(f){f.DEFAULT="DEFAULT",f.TOP_LEVEL="TOP_LEVEL",f.FALLBACK_EXCLUSION_LIST="FALLBACK_EXCLUSION_LIST",f.FALLBACK_EXCLUSION_ENTRIES="FALLBACK_EXCLUSION_ENTRIES",f.FALLBACK_EXCLUSION_DATA="FALLBACK_EXCLUSION_DATA",f.PACKAGE_REGISTRY_DATA="PACKAGE_REGISTRY_DATA",f.PACKAGE_REGISTRY_ENTRIES="PACKAGE_REGISTRY_ENTRIES",f.PACKAGE_STORE_DATA="PACKAGE_STORE_DATA",f.PACKAGE_STORE_ENTRIES="PACKAGE_STORE_ENTRIES",f.PACKAGE_INFORMATION_DATA="PACKAGE_INFORMATION_DATA",f.PACKAGE_DEPENDENCIES="PACKAGE_DEPENDENCIES",f.PACKAGE_DEPENDENCY="PACKAGE_DEPENDENCY"})(Ht||(Ht={}));var jle={[Ht.DEFAULT]:{collapsed:!1,next:{["*"]:Ht.DEFAULT}},[Ht.TOP_LEVEL]:{collapsed:!1,next:{fallbackExclusionList:Ht.FALLBACK_EXCLUSION_LIST,packageRegistryData:Ht.PACKAGE_REGISTRY_DATA,["*"]:Ht.DEFAULT}},[Ht.FALLBACK_EXCLUSION_LIST]:{collapsed:!1,next:{["*"]:Ht.FALLBACK_EXCLUSION_ENTRIES}},[Ht.FALLBACK_EXCLUSION_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.FALLBACK_EXCLUSION_DATA}},[Ht.FALLBACK_EXCLUSION_DATA]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}},[Ht.PACKAGE_REGISTRY_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_REGISTRY_ENTRIES}},[Ht.PACKAGE_REGISTRY_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_STORE_DATA}},[Ht.PACKAGE_STORE_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_STORE_ENTRIES}},[Ht.PACKAGE_STORE_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_INFORMATION_DATA}},[Ht.PACKAGE_INFORMATION_DATA]:{collapsed:!1,next:{packageDependencies:Ht.PACKAGE_DEPENDENCIES,["*"]:Ht.DEFAULT}},[Ht.PACKAGE_DEPENDENCIES]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_DEPENDENCY}},[Ht.PACKAGE_DEPENDENCY]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}}};function Z5e(t,e,r){let i="";i+="[";for(let n=0,s=t.length;ns(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function r6e(t){let e=new Map,r=_C(t.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of r){let s=e.get(i);typeof s=="undefined"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function i6e(t){return _C(t.fallbackPool||[],([e])=>e)}function n6e(t){let e=[];for(let[r,i]of _C(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([r,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of _C(i,([g])=>g===null?"0":`1${g}`)){let g=[];r!==null&&s!==null&&!a.has(r)&&g.push([r,s]);for(let[p,d]of _C(a.entries(),([m])=>m))g.push([p,d]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function XC(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:r6e(t),fallbackPool:i6e(t),packageRegistryData:n6e(t)}}var zle=ie(Wle());function Vle(t,e){return[t?`${t} +`:"",`/* eslint-disable */ + +`,`try { +`,` Object.freeze({}).detectStrictMode = true; +`,`} catch (error) { +`," throw new Error(`The whole PnP file got strict-mode-ified, which is known to break (Emscripten libraries aren't strict mode). This usually happens when the file goes through Babel.`);\n",`} +`,` +`,`var __non_webpack_module__ = module; +`,` +`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,e.replace(/^/gm," "),`} +`,` +`,(0,zle.default)()].join("")}function s6e(t){return JSON.stringify(t,null,2)}function o6e(t){return[`return hydrateRuntimeState(${qle(t)}, {basePath: basePath || __dirname}); +`].join("")}function a6e(t){return[`var path = require('path'); +`,`var dataLocation = path.resolve(__dirname, ${JSON.stringify(t)}); +`,`return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)}); +`].join("")}function _le(t){let e=XC(t),r=o6e(e);return Vle(t.shebang,r)}function Xle(t){let e=XC(t),r=a6e(t.dataLocation),i=Vle(t.shebang,r);return{dataFile:s6e(e),loaderFile:i}}var tce=ie(require("fs")),u6e=ie(require("path")),rce=ie(require("util"));function _L(t,{basePath:e}){let r=M.toPortablePath(e),i=v.resolve(r),n=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,s=new Map,o=new Map(t.packageRegistryData.map(([g,f])=>[g,new Map(f.map(([h,p])=>{var b;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let d=(b=p.discardFromLookup)!=null?b:!1,m={name:g,reference:h},E=s.get(p.packageLocation);E?(E.discardFromLookup=E.discardFromLookup&&d,d||(E.locator=m)):s.set(p.packageLocation,{locator:m,discardFromLookup:d});let B=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:d,get packageLocation(){return B||(B=v.join(i,p.packageLocation))}}]}))])),a=new Map(t.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(t.fallbackPool),c=t.dependencyTreeRoots,u=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var df=ie(require("module")),ece=ie($le()),ZL=ie(require("util"));var ur;(function(l){l.API_ERROR="API_ERROR",l.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",l.MISSING_DEPENDENCY="MISSING_DEPENDENCY",l.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",l.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",l.INTERNAL="INTERNAL",l.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",l.UNSUPPORTED="UNSUPPORTED"})(ur||(ur={}));var c6e=new Set([ur.BUILTIN_NODE_RESOLUTION_FAILED,ur.MISSING_DEPENDENCY,ur.MISSING_PEER_DEPENDENCY,ur.QUALIFIED_PATH_RESOLUTION_FAILED,ur.UNDECLARED_DEPENDENCY]);function ui(t,e,r={}){let i=c6e.has(t)?"MODULE_NOT_FOUND":t,n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:_(P({},n),{value:i}),pnpCode:_(P({},n),{value:t}),data:_(P({},n),{value:r})})}function YA(t){return M.normalize(M.fromPortablePath(t))}function $L(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=new Set(df.Module.builtinModules||Object.keys(process.binding("natives"))),s=re=>n.has(re)||re.startsWith("node:"),o=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,a=/^(\/|\.{1,2}(\/|$))/,l=/\/$/,c=/^\.{0,2}\//,u={name:null,reference:null},g=[],f=new Set;if(t.enableTopLevelFallback===!0&&g.push(u),e.compatibilityMode!==!1)for(let re of["react-scripts","gatsby"]){let se=t.packageRegistry.get(re);if(se)for(let be of se.keys()){if(be===null)throw new Error("Assertion failed: This reference shouldn't be null");g.push({name:re,reference:be})}}let{ignorePattern:h,packageRegistry:p,packageLocatorsByLocations:d}=t;function m(re,se){return{fn:re,args:se,error:null,result:null}}function E(re){var De,$,G,Ce,ee,Ue;let se=(G=($=(De=process.stderr)==null?void 0:De.hasColors)==null?void 0:$.call(De))!=null?G:process.stdout.isTTY,be=(Oe,vt)=>`[${Oe}m${vt}`,ae=re.error;console.error(ae?be("31;1",`\u2716 ${(Ce=re.error)==null?void 0:Ce.message.replace(/\n.*/s,"")}`):be("33;1","\u203C Resolution")),re.args.length>0&&console.error();for(let Oe of re.args)console.error(` ${be("37;1","In \u2190")} ${(0,ZL.inspect)(Oe,{colors:se,compact:!0})}`);re.result&&(console.error(),console.error(` ${be("37;1","Out \u2192")} ${(0,ZL.inspect)(re.result,{colors:se,compact:!0})}`));let Ae=(Ue=(ee=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:ee.slice(2))!=null?Ue:[];if(Ae.length>0){console.error();for(let Oe of Ae)console.error(` ${be("38;5;244",Oe)}`)}console.error()}function B(re,se){if(e.allowDebug===!1)return se;if(Number.isFinite(i)){if(i>=2)return(...be)=>{let ae=m(re,be);try{return ae.result=se(...be)}catch(Ae){throw ae.error=Ae}finally{E(ae)}};if(i>=1)return(...be)=>{try{return se(...be)}catch(ae){let Ae=m(re,be);throw Ae.error=ae,E(Ae),ae}}}return se}function b(re){let se=W(re);if(!se)throw ui(ur.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return se}function R(re){if(re.name===null)return!0;for(let se of t.dependencyTreeRoots)if(se.name===re.name&&se.reference===re.reference)return!0;return!1}let H=new Set(["default","node","require"]);function L(re,se=H){let be=D(v.join(re,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(be===null)throw ui(ur.INTERNAL,`The locator that owns the "${re}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ae}=b(be),Ae=v.join(ae,wt.manifest);if(!e.fakeFs.existsSync(Ae))return null;let De=JSON.parse(e.fakeFs.readFileSync(Ae,"utf8")),$=v.contains(ae,re);if($===null)throw ui(ur.INTERNAL,"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");c.test($)||($=`./${$}`);let G=(0,ece.resolve)(De,v.normalize($),{conditions:se,unsafe:!0});return typeof G=="string"?v.join(ae,G):null}function K(re,se,{extensions:be}){let ae;try{se.push(re),ae=e.fakeFs.statSync(re)}catch(Ae){}if(ae&&!ae.isDirectory())return e.fakeFs.realpathSync(re);if(ae&&ae.isDirectory()){let Ae;try{Ae=JSON.parse(e.fakeFs.readFileSync(v.join(re,wt.manifest),"utf8"))}catch($){}let De;if(Ae&&Ae.main&&(De=v.resolve(re,Ae.main)),De&&De!==re){let $=K(De,se,{extensions:be});if($!==null)return $}}for(let Ae=0,De=be.length;Ae{let G=JSON.stringify($.name);if(ae.has(G))return;ae.add(G);let Ce=X($);for(let ee of Ce)if(b(ee).packagePeers.has(re))Ae(ee);else{let Oe=be.get(ee.name);typeof Oe=="undefined"&&be.set(ee.name,Oe=new Set),Oe.add(ee.reference)}};Ae(se);let De=[];for(let $ of[...be.keys()].sort())for(let G of[...be.get($)].sort())De.push({name:$,reference:G});return De}function D(re,{resolveIgnored:se=!1,includeDiscardFromLookup:be=!1}={}){if(q(re)&&!se)return null;let ae=v.relative(t.basePath,re);ae.match(a)||(ae=`./${ae}`),ae.endsWith("/")||(ae=`${ae}/`);do{let Ae=d.get(ae);if(typeof Ae=="undefined"||Ae.discardFromLookup&&!be){ae=ae.substring(0,ae.lastIndexOf("/",ae.length-2)+1);continue}return Ae.locator}while(ae!=="");return null}function he(re,se,{considerBuiltins:be=!0}={}){if(re==="pnpapi")return M.toPortablePath(e.pnpapiResolution);if(be&&s(re))return null;let ae=YA(re),Ae=se&&YA(se);if(se&&q(se)&&(!v.isAbsolute(re)||D(re)===null)){let G=ne(re,se);if(G===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) + +Require request: "${ae}" +Required by: ${Ae} +`,{request:ae,issuer:Ae});return M.toPortablePath(G)}let De,$=re.match(o);if($){if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let[,G,Ce]=$,ee=D(se);if(!ee){let yr=ne(re,se);if(yr===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). + +Require path: "${ae}" +Required by: ${Ae} +`,{request:ae,issuer:Ae});return M.toPortablePath(yr)}let Oe=b(ee).packageDependencies.get(G),vt=null;if(Oe==null&&ee.name!==null){let yr=t.fallbackExclusionList.get(ee.name);if(!yr||!yr.has(ee.reference)){for(let Qi=0,Go=g.length;QiR(Ki))?dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. + +Required package: ${G}${G!==ae?` (via "${ae}")`:""} +Required by: ${ee.name}@${ee.reference} (via ${Ae}) +${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} +`).join("")} +`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr}):dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. + +Required package: ${G}${G!==ae?` (via "${ae}")`:""} +Required by: ${ee.name}@${ee.reference} (via ${Ae}) + +${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} +`).join("")} +`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr})}else Oe===void 0&&(!be&&s(re)?R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. + +Required package: ${G}${G!==ae?` (via "${ae}")`:""} +Required by: ${Ae} +`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in ${ee.name}'s dependencies, this makes the require call ambiguous and unsound. + +Required package: ${G}${G!==ae?` (via "${ae}")`:""} +Required by: ${Ae} +`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}):R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. + +Required package: ${G}${G!==ae?` (via "${ae}")`:""} +Required by: ${Ae} +`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. + +Required package: ${G}${G!==ae?` (via "${ae}")`:""} +Required by: ${ee.name}@${ee.reference} (via ${Ae}) +`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}));if(Oe==null){if(vt===null||dt===null)throw dt||new Error("Assertion failed: Expected an error to have been set");Oe=vt;let yr=dt.message.replace(/\n.*/g,"");dt.message=yr,!f.has(yr)&&i!==0&&(f.add(yr),process.emitWarning(dt))}let ri=Array.isArray(Oe)?{name:Oe[0],reference:Oe[1]}:{name:G,reference:Oe},ii=b(ri);if(!ii.packageLocation)throw ui(ur.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. + +Required package: ${ri.name}@${ri.reference}${ri.name!==ae?` (via "${ae}")`:""} +Required by: ${ee.name}@${ee.reference} (via ${Ae}) +`,{request:ae,issuer:Ae,dependencyLocator:Object.assign({},ri)});let an=ii.packageLocation;Ce?De=v.join(an,Ce):De=an}else if(v.isAbsolute(re))De=v.normalize(re);else{if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let G=v.resolve(se);se.match(l)?De=v.normalize(v.join(G,re)):De=v.normalize(v.join(v.dirname(G),re))}return v.normalize(De)}function pe(re,se,be=H){if(a.test(re))return se;let ae=L(se,be);return ae?v.normalize(ae):se}function Ne(re,{extensions:se=Object.keys(df.Module._extensions)}={}){let be=[],ae=K(re,be,{extensions:se});if(ae)return v.normalize(ae);{let Ae=YA(re),De=D(re);if(De){let{packageLocation:$}=b(De);if(!e.fakeFs.existsSync($)){let G=$.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`${G} + +Missing package: ${De.name}@${De.reference} +Expected package location: ${YA($)} +`,{unqualifiedPath:Ae})}}throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`Qualified path resolution failed - none of those files can be found on the disk. + +Source path: ${Ae} +${be.map($=>`Not found: ${YA($)} +`).join("")}`,{unqualifiedPath:Ae})}}function Pe(re,se,{considerBuiltins:be,extensions:ae,conditions:Ae}={}){let De=he(re,se,{considerBuiltins:be});if(re==="pnpapi")return De;if(De===null)return null;let $=()=>se!==null?q(se):!1,G=(!be||!s(re))&&!$()?pe(re,De,Ae):De;try{return Ne(G,{extensions:ae})}catch(Ce){throw Ce.pnpCode==="QUALIFIED_PATH_RESOLUTION_FAILED"&&Object.assign(Ce.data,{request:YA(re),issuer:se&&YA(se)}),Ce}}function qe(re){let se=v.normalize(re),be=Pr.resolveVirtual(se);return be!==se?be:null}return{VERSIONS:A,topLevel:V,getLocator:(re,se)=>Array.isArray(se)?{name:se[0],reference:se[1]}:{name:re,reference:se},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let re=[];for(let[se,be]of p)for(let ae of be.keys())se!==null&&ae!==null&&re.push({name:se,reference:ae});return re},getPackageInformation:re=>{let se=W(re);if(se===null)return null;let be=M.fromPortablePath(se.packageLocation);return _(P({},se),{packageLocation:be})},findPackageLocator:re=>D(M.toPortablePath(re)),resolveToUnqualified:B("resolveToUnqualified",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=he(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveUnqualified:B("resolveUnqualified",(re,se)=>M.fromPortablePath(Ne(M.toPortablePath(re),se))),resolveRequest:B("resolveRequest",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=Pe(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveVirtual:B("resolveVirtual",re=>{let se=qe(M.toPortablePath(re));return se!==null?M.fromPortablePath(se):null})}}var ESt=(0,rce.promisify)(tce.readFile);var ice=(t,e,r)=>{let i=XC(t),n=_L(i,{basePath:e}),s=M.join(e,wt.pnpCjs);return $L(n,{fakeFs:r,pnpapiResolution:s})};var tT=ie(sce());var Ws={};it(Ws,{checkAndReportManifestCompatibility:()=>oce,extractBuildScripts:()=>Z0,getExtractHint:()=>rT,hasBindingGyp:()=>iT});function oce(t,e,{configuration:r,report:i}){return S.isPackageCompatible(t,{os:[process.platform],cpu:[process.arch]})?!0:(i==null||i.reportWarningOnce(z.INCOMPATIBLE_ARCHITECTURE,`${S.prettyLocator(r,t)} The ${process.platform}-${process.arch} architecture is incompatible with this module, ${e} skipped.`),!1)}function Z0(t,e,r,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([Gn.SCRIPT,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([Gn.SHELLCODE,"node-gyp rebuild"]),s.length===0?[]:t.linkType!==gt.HARD?(n==null||n.reportWarningOnce(z.SOFT_LINK_BUILD,`${S.prettyLocator(i,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(n==null||n.reportInfoOnce(z.BUILD_DISABLED,`${S.prettyLocator(i,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!r.built?(n==null||n.reportWarningOnce(z.DISABLED_BUILD_SCRIPTS,`${S.prettyLocator(i,t)} lists build scripts, but all build scripts have been disabled.`),[]):oce(t,"build",{configuration:i,report:n})?s:[]}var g6e=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function rT(t){return t.packageFs.getExtractHint({relevantExtensions:g6e})}function iT(t){let e=v.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var nT={};it(nT,{getUnpluggedPath:()=>ZC});function ZC(t,{configuration:e}){return v.resolve(e.get("pnpUnpluggedFolder"),S.slugifyLocator(t))}var f6e=new Set([S.makeIdent(null,"nan").identHash,S.makeIdent(null,"node-gyp").identHash,S.makeIdent(null,"node-pre-gyp").identHash,S.makeIdent(null,"node-addon-api").identHash,S.makeIdent(null,"fsevents").identHash]),jc=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,r){return!(r.project.configuration.get("nodeLinker")!=="pnp"||r.project.configuration.get("pnpMode")!==this.mode)}async findPackageLocation(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})),s={name:S.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return M.toPortablePath(o.packageLocation)}async findPackageLocator(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))return null;let s=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})).findPackageLocator(M.fromPortablePath(e));return s?S.makeLocator(S.parseIdent(s.name),s.reference):null}makeInstaller(e){return new Cf(e)}},Cf=class{constructor(e){this.opts=e;this.mode="strict";this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,r){let i=S.stringifyIdent(e),n=e.reference,s=!!this.opts.project.tryWorkspaceByLocator(e),o=S.isVirtualLocator(e),a=e.peerDependencies.size>0&&!o,l=!a&&!s,c=!a&&e.linkType!==gt.SOFT,u,g;if(l||c){let B=o?S.devirtualizeLocator(e):e;u=this.customData.store.get(B.locatorHash),typeof u=="undefined"&&(u=await h6e(r),e.linkType===gt.HARD&&this.customData.store.set(B.locatorHash,u)),u.manifest.type==="module"&&(this.isESMLoaderRequired=!0),g=this.opts.project.getDependencyMeta(B,e.version)}let f=l?Z0(e,u,g,{configuration:this.opts.project.configuration,report:this.opts.report}):[],h=c?await this.unplugPackageIfNeeded(e,u,r,g):r.packageFs;if(v.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let p=v.resolve(h.getRealPath(),r.prefixPath),d=sT(this.opts.project.cwd,p),m=new Map,E=new Set;if(o){for(let B of e.peerDependencies.values())m.set(S.stringifyIdent(B),null),E.add(S.stringifyIdent(B));if(!s){let B=S.devirtualizeLocator(e);this.virtualTemplates.set(B.locatorHash,{location:sT(this.opts.project.cwd,Pr.resolveVirtual(p)),locator:B})}}return de.getMapWithDefault(this.packageRegistry,i).set(n,{packageLocation:d,packageDependencies:m,packagePeers:E,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:p,buildDirective:f.length>0?f:null}}async attachInternalDependencies(e,r){let i=this.getPackageInformation(e);for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){for(let i of r)this.getDiskInformation(i).packageDependencies.set(S.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=qA(this.opts.project);if(T.existsSync(e.cjsLegacy)&&(this.opts.report.reportWarning(z.UNNAMED,`Removing the old ${ue.pretty(this.opts.project.configuration,wt.pnpJs,ue.Type.PATH)} file. You might need to manually update existing references to reference the new ${ue.pretty(this.opts.project.configuration,wt.pnpCjs,ue.Type.PATH)} file. If you use Editor SDKs, you'll have to rerun ${ue.pretty(this.opts.project.configuration,"yarn sdks",ue.Type.CODE)}.`),await T.removePromise(e.cjsLegacy)),this.isEsmEnabled()||await T.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await T.removePromise(e.cjs),await T.removePromise(this.opts.project.configuration.get("pnpDataPath")),await T.removePromise(e.esmLoader);return}for(let{locator:u,location:g}of this.virtualTemplates.values())de.getMapWithDefault(this.packageRegistry,S.stringifyIdent(u)).set(u.reference,{packageLocation:g,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),i=this.opts.project.workspaces.map(({anchoredLocator:u})=>({name:S.stringifyIdent(u),reference:u.reference})),n=r!=="none",s=[],o=new Map,a=de.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),l=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let u of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(u)&&s.push({name:S.stringifyIdent(u),reference:u.reference});return await this.finalizeInstallWithPnp({dependencyTreeRoots:i,enableTopLevelFallback:n,fallbackExclusionList:s,fallbackPool:o,ignorePattern:a,packageRegistry:l,shebang:c}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=qA(this.opts.project),i=this.opts.project.configuration.get("pnpDataPath"),n=await this.locateNodeModules(e.ignorePattern);if(n.length>0){this.opts.report.reportWarning(z.DANGEROUS_NODE_MODULES,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let o of n)await T.removePromise(o)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let o=_le(e);await T.changeFilePromise(r.cjs,o,{automaticNewlines:!0,mode:493}),await T.removePromise(i)}else{let o=v.relative(v.dirname(r.cjs),i),{dataFile:a,loaderFile:l}=Xle(_(P({},e),{dataLocation:o}));await T.changeFilePromise(r.cjs,l,{automaticNewlines:!0,mode:493}),await T.changeFilePromise(i,a,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(z.UNNAMED,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await T.changeFilePromise(r.esmLoader,(0,tT.default)(),{automaticNewlines:!0,mode:420}));let s=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await T.removePromise(s);else for(let o of await T.readdirPromise(s)){let a=v.resolve(s,o);this.unpluggedPaths.has(a)||await T.removePromise(a)}}async locateNodeModules(e){let r=[],i=e?new RegExp(e):null;for(let n of this.opts.project.workspaces){let s=v.join(n.cwd,"node_modules");if(i&&i.test(v.relative(this.opts.project.cwd,n.cwd))||!T.existsSync(s))continue;let o=await T.readdirPromise(s,{withFileTypes:!0}),a=o.filter(l=>!l.isDirectory()||l.name===".bin"||!l.name.startsWith("."));if(a.length===o.length)r.push(s);else for(let l of a)r.push(v.join(s,l.name))}return r}async unplugPackageIfNeeded(e,r,i,n){return this.shouldBeUnplugged(e,r,n)?this.unplugPackage(e,i):i.packageFs}shouldBeUnplugged(e,r,i){return typeof i.unplugged!="undefined"?i.unplugged:f6e.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(Z0(e,r,i,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r){let i=ZC(e,{configuration:this.opts.project.configuration});if(this.opts.project.disabledLocators.has(e.locatorHash))return new Xo(i,{baseFs:r.packageFs,pathUtils:v});this.unpluggedPaths.add(i);let n=v.join(i,r.prefixPath,".ready");return await T.existsPromise(n)?new Ft(i):(this.opts.project.storedBuildState.delete(e.locatorHash),await T.mkdirPromise(i,{recursive:!0}),await T.copyPromise(i,Se.dot,{baseFs:r.packageFs,overwrite:!1}),await T.writeFilePromise(n,""),new Ft(i))}getPackageInformation(e){let r=S.stringifyIdent(e),i=e.reference,n=this.packageRegistry.get(r);if(!n)throw new Error(`Assertion failed: The package information store should have been available (for ${S.prettyIdent(this.opts.project.configuration,e)})`);let s=n.get(i);if(!s)throw new Error(`Assertion failed: The package information should have been available (for ${S.prettyLocator(this.opts.project.configuration,e)})`);return s}getDiskInformation(e){let r=de.getMapWithDefault(this.packageRegistry,"@@disk"),i=sT(this.opts.project.cwd,e);return de.getFactoryWithDefault(r,i,()=>({packageLocation:i,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1}))}};function sT(t,e){let r=v.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function h6e(t){var i;let e=(i=await Ze.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?i:new Ze,r=new Set(["preinstall","install","postinstall"]);for(let n of e.scripts.keys())r.has(n)||e.scripts.delete(n);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:rT(t),hasBindingGyp:iT(t)}}}var ace=ie(Nn());var $C=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);if(e.get("nodeLinker")!=="pnp")throw new me("This command can only be used if the `nodeLinker` option is set to `pnp`");await r.restoreInstallState();let s=new Set(this.patterns),o=this.patterns.map(f=>{let h=S.parseDescriptor(f),p=h.range!=="unknown"?h:S.makeDescriptor(h,"*");if(!qt.validRange(p.range))throw new me(`The range of the descriptor patterns must be a valid semver range (${S.prettyDescriptor(e,p)})`);return d=>{let m=S.stringifyIdent(d);return!ace.default.isMatch(m,S.stringifyIdent(p))||d.version&&!qt.satisfiesWithPrereleases(d.version,p.range)?!1:(s.delete(f),!0)}}),a=()=>{let f=[];for(let h of r.storedPackages.values())!r.tryWorkspaceByLocator(h)&&!S.isVirtualLocator(h)&&o.some(p=>p(h))&&f.push(h);return f},l=f=>{let h=new Set,p=[],d=(m,E)=>{if(!h.has(m.locatorHash)&&(h.add(m.locatorHash),!r.tryWorkspaceByLocator(m)&&o.some(B=>B(m))&&p.push(m),!(E>0&&!this.recursive)))for(let B of m.dependencies.values()){let b=r.storedResolutions.get(B.descriptorHash);if(!b)throw new Error("Assertion failed: The resolution should have been registered");let R=r.storedPackages.get(b);if(!R)throw new Error("Assertion failed: The package should have been registered");d(R,E+1)}};for(let m of f){let E=r.storedPackages.get(m.anchoredLocator.locatorHash);if(!E)throw new Error("Assertion failed: The package should have been registered");d(E,0)}return p},c,u;if(this.all&&this.recursive?(c=a(),u="the project"):this.all?(c=l(r.workspaces),u="any workspace"):(c=l([i]),u="this workspace"),s.size>1)throw new me(`Patterns ${ue.prettyList(e,s,ue.Type.CODE)} don't match any packages referenced by ${u}`);if(s.size>0)throw new me(`Pattern ${ue.prettyList(e,s,ue.Type.CODE)} doesn't match any packages referenced by ${u}`);return c=de.sortMap(c,f=>S.stringifyLocator(f)),(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async f=>{var h;for(let p of c){let d=(h=p.version)!=null?h:"unknown",m=r.topLevelWorkspace.manifest.ensureDependencyMeta(S.makeDescriptor(p,d));m.unplugged=!0,f.reportInfo(z.UNNAMED,`Will unpack ${S.prettyLocator(e,p)} to ${ue.pretty(e,ZC(p,{configuration:e}),ue.Type.PATH)}`),f.reportJson({locator:S.stringifyLocator(p),version:d})}await r.topLevelWorkspace.persistManifest(),f.reportSeparator(),await r.install({cache:n,report:f})})).exitCode()}};$C.paths=[["unplug"]],$C.usage=ye.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Ace=$C;var qA=t=>({cjs:v.join(t.cwd,wt.pnpCjs),cjsLegacy:v.join(t.cwd,wt.pnpJs),esmLoader:v.join(t.cwd,".pnp.loader.mjs")}),uce=t=>/\s/.test(t)?JSON.stringify(t):t;async function p6e(t,e,r){let i=qA(t),n=`--require ${uce(M.fromPortablePath(i.cjs))}`;if(T.existsSync(i.esmLoader)&&(n=`${n} --experimental-loader ${(0,cce.pathToFileURL)(M.fromPortablePath(i.esmLoader)).href}`),i.cjs.includes(" ")&&lce.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(T.existsSync(i.cjs)){let s=e.NODE_OPTIONS||"",o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;s=s.replace(o," ").replace(a," ").trim(),s=s?`${n} ${s}`:n,e.NODE_OPTIONS=s}}async function d6e(t,e){let r=qA(t);e(r.cjs),e(r.esmLoader),e(t.configuration.get("pnpDataPath")),e(t.configuration.get("pnpUnpluggedFolder"))}var C6e={hooks:{populateYarnPaths:d6e,setupScriptEnvironment:p6e},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:ge.STRING,default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:ge.STRING,default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:ge.STRING,default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:ge.STRING,default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:ge.BOOLEAN,default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:ge.BOOLEAN,default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:ge.STRING,default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:ge.ABSOLUTE_PATH,default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:ge.ABSOLUTE_PATH,default:"./.pnp.data.json"}},linkers:[jc],commands:[Ace]},m6e=C6e;var Cce=ie(dce());var uT=ie(require("crypto")),mce=ie(require("fs")),Ice=1,gi="node_modules",gT=".bin",Ece=".yarn-state.yml",Bi;(function(i){i.CLASSIC="classic",i.HARDLINKS_LOCAL="hardlinks-local",i.HARDLINKS_GLOBAL="hardlinks-global"})(Bi||(Bi={}));var fT=class{constructor(){this.installStateCache=new Map}supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="node-modules"}async findPackageLocation(e,r){let i=r.project.tryWorkspaceByLocator(e);if(i)return i.cwd;let n=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(n===null)throw new me("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let s=n.locatorMap.get(S.stringifyLocator(e));if(!s){let a=new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw a.code="LOCATOR_NOT_INSTALLED",a}let o=r.project.configuration.startingCwd;return s.locations.find(a=>v.contains(o,a))||s.locations[0]}async findPackageLocator(e,r){let i=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(i===null)return null;let{locationRoot:n,segments:s}=$0(v.resolve(e),{skipPrefix:r.project.cwd}),o=i.locationTree.get(n);if(!o)return null;let a=o.locator;for(let l of s){if(o=o.children.get(l),!o)break;a=o.locator||a}return S.parseLocator(a)}makeInstaller(e){return new yce(e)}},yce=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:1})}attachCustomData(e){this.customData=e}async installPackage(e,r){var u;let i=v.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.customData.store.get(e.locatorHash);if(typeof n=="undefined"&&(n=await L6e(e,r),e.linkType===gt.HARD&&this.customData.store.set(e.locatorHash,n)),!Ws.checkAndReportManifestCompatibility(e,"link",{configuration:this.opts.project.configuration,report:this.opts.report}))return{packageLocation:null,buildDirective:null};let s=new Map,o=new Set;s.has(S.stringifyIdent(e))||s.set(S.stringifyIdent(e),e.reference);let a=e;if(S.isVirtualLocator(e)){a=S.devirtualizeLocator(e);for(let g of e.peerDependencies.values())s.set(S.stringifyIdent(g),null),o.add(S.stringifyIdent(g))}let l={packageLocation:`${M.fromPortablePath(i)}/`,packageDependencies:s,packagePeers:o,linkType:e.linkType,discardFromLookup:(u=r.discardFromLookup)!=null?u:!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:l});let c=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(a.locatorHash,c),{packageLocation:i,buildDirective:null}}async attachInternalDependencies(e,r){let i=this.localStore.get(e.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected information object to have been registered");for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.pnpNode.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),r=await hT(this.opts.project),i=this.opts.project.configuration.get("nmMode");(r===null||i!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:i});let n=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmHoistingLimits");try{h=de.validateEnum(Sn,(d=(p=f.manifest.installConfig)==null?void 0:p.hoistingLimits)!=null?d:h)}catch(m){let E=S.prettyWorkspace(this.opts.project.configuration,f);this.opts.report.reportWarning(z.INVALID_MANIFEST,`${E}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(Sn).join(", ")}, using default: "${h}"`)}return[f.relativeCwd,h]})),s=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmSelfReferences");return h=(d=(p=f.manifest.installConfig)==null?void 0:p.selfReferences)!=null?d:h,[f.relativeCwd,h]})),o={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(f,h)=>Array.isArray(h)?{name:h[0],reference:h[1]}:{name:f,reference:h},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(f=>{let h=f.anchoredLocator;return{name:S.stringifyIdent(f.locator),reference:h.reference}}),getPackageInformation:f=>{let h=f.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:S.makeLocator(S.parseIdent(f.name),f.reference),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the package reference to have been registered");return p.pnpNode},findPackageLocator:f=>{let h=this.opts.project.tryWorkspaceByCwd(M.toPortablePath(f));if(h!==null){let p=h.anchoredLocator;return{name:S.stringifyIdent(p),reference:p.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:f=>M.fromPortablePath(Pr.resolveVirtual(M.toPortablePath(f)))},{tree:a,errors:l,preserveSymlinksRequired:c}=VC(o,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:n,project:this.opts.project,selfReferencesByCwd:s});if(!a){for(let{messageName:f,text:h}of l)this.opts.report.reportError(f,h);return}let u=WL(a);await T6e(r,u,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async f=>{let h=S.parseLocator(f),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the slot to exist");return p.customPackageData.manifest}});let g=[];for(let[f,h]of u.entries()){if(wce(f))continue;let p=S.parseLocator(f),d=this.localStore.get(p.locatorHash);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(d.pkg))continue;let m=Ws.extractBuildScripts(d.pkg,d.customPackageData,d.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});m.length!==0&&g.push({buildLocations:h.locations,locatorHash:p.locatorHash,buildDirective:m})}return c&&this.opts.report.reportWarning(z.NM_PRESERVE_SYMLINKS_REQUIRED,`The application uses portals and that's why ${ue.pretty(this.opts.project.configuration,"--preserve-symlinks",ue.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:g}}};async function L6e(t,e){var n;let r=(n=await Ze.tryFind(e.prefixPath,{baseFs:e.packageFs}))!=null?n:new Ze,i=new Set(["preinstall","install","postinstall"]);for(let s of r.scripts.keys())i.has(s)||r.scripts.delete(s);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{extractHint:Ws.getExtractHint(e),hasBindingGyp:Ws.hasBindingGyp(e)}}}async function M6e(t,e,r,i){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will +`,n+=`# cause your node_modules installation to become invalidated. +`,n+=` +`,n+=`__metadata: +`,n+=` version: ${Ice} +`,n+=` nmMode: ${i.value} +`;let s=Array.from(e.keys()).sort(),o=S.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let c of s){let u=e.get(c);n+=` +`,n+=`${JSON.stringify(c)}: +`,n+=` locations: +`;for(let g of u.locations){let f=v.contains(t.cwd,g);if(f===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` - ${JSON.stringify(f)} +`}if(u.aliases.length>0){n+=` aliases: +`;for(let g of u.aliases)n+=` - ${JSON.stringify(g)} +`}if(c===o&&r.size>0){n+=` bin: +`;for(let[g,f]of r){let h=v.contains(t.cwd,g);if(h===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` ${JSON.stringify(h)}: +`;for(let[p,d]of f){let m=v.relative(v.join(g,gi),d);n+=` ${JSON.stringify(p)}: ${JSON.stringify(m)} +`}}}}let a=t.cwd,l=v.join(a,gi,Ece);await T.changeFilePromise(l,n,{automaticNewlines:!0})}async function hT(t,{unrollAliases:e=!1}={}){let r=t.cwd,i=v.join(r,gi,Ece);if(!T.existsSync(i))return null;let n=Ei(await T.readFilePromise(i,"utf8"));if(n.__metadata.version>Ice)return null;let s=n.__metadata.nmMode||Bi.CLASSIC,o=new Map,a=new Map;delete n.__metadata;for(let[l,c]of Object.entries(n)){let u=c.locations.map(f=>v.join(r,f)),g=c.bin;if(g)for(let[f,h]of Object.entries(g)){let p=v.join(r,M.toPortablePath(f)),d=de.getMapWithDefault(a,p);for(let[m,E]of Object.entries(h))d.set(kr(m),M.toPortablePath([p,gi,E].join(v.delimiter)))}if(o.set(l,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:c.aliases||[]}),e&&c.aliases)for(let f of c.aliases){let{scope:h,name:p}=S.parseLocator(l),d=S.makeLocator(S.makeIdent(h,p),f),m=S.stringifyLocator(d);o.set(m,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:[]})}}return{locatorMap:o,binSymlinks:a,locationTree:Bce(o,{skipPrefix:t.cwd}),nmMode:s}}var If=async(t,e)=>{if(t.split(v.sep).indexOf(gi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop&&(await T.lstatPromise(t)).isSymbolicLink()){await T.unlinkPromise(t);return}let r=await T.readdirPromise(t,{withFileTypes:!0});for(let i of r){let n=v.join(t,kr(i.name));i.isDirectory()?(i.name!==gi||e&&e.innerLoop)&&await If(n,{innerLoop:!0,contentsOnly:!1}):await T.unlinkPromise(n)}e.contentsOnly||await T.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},Qce=4,$0=(t,{skipPrefix:e})=>{let r=v.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let i=r.split(v.sep).filter(l=>l!==""),n=i.indexOf(gi),s=i.slice(0,n).join(v.sep),o=v.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},Bce=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let i=()=>({children:new Map,linkType:gt.HARD});for(let[n,s]of t.entries()){if(s.linkType===gt.SOFT&&v.contains(e,s.target)!==null){let a=de.getFactoryWithDefault(r,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=$0(o,{skipPrefix:e}),c=de.getFactoryWithDefault(r,a,i);for(let u=0;u{let r;try{process.platform==="win32"&&(r=await T.lstatPromise(t))}catch(i){}process.platform=="win32"&&(!r||r.isDirectory())?await T.symlinkPromise(t,e,"junction"):await T.symlinkPromise(v.relative(v.dirname(e),t),e)};async function bce(t,e,r){let i=v.join(t,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));try{await T.writeFilePromise(i,r);try{await T.linkPromise(i,e)}catch(n){}}finally{await T.unlinkPromise(i)}}async function O6e({srcPath:t,dstPath:e,srcMode:r,globalHardlinksStore:i,baseFs:n,nmMode:s,digest:o}){if(s.value===Bi.HARDLINKS_GLOBAL&&i&&o){let l=v.join(i,o.substring(0,2),`${o.substring(2)}.dat`),c;try{if(await mn.checksumFile(l,{baseFs:T,algorithm:"sha1"})!==o){let g=v.join(i,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));await T.renamePromise(l,g);let f=await n.readFilePromise(t);await T.writeFilePromise(g,f);try{await T.linkPromise(g,l),await T.unlinkPromise(g)}catch(h){}}await T.linkPromise(l,e),c=!0}catch(u){c=!1}if(!c){let u=await n.readFilePromise(t);await bce(i,l,u);try{await T.linkPromise(l,e)}catch(g){g&&g.code&&g.code=="EXDEV"&&(s.value=Bi.HARDLINKS_LOCAL,await n.copyFilePromise(t,e))}}}else await n.copyFilePromise(t,e);let a=r&511;a!==420&&await T.chmodPromise(e,a)}var JA;(function(i){i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink"})(JA||(JA={}));var K6e=async(t,e,{baseFs:r,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await T.mkdirPromise(t,{recursive:!0});let o=async(l=Se.dot)=>{let c=v.join(e,l),u=await r.readdirPromise(c,{withFileTypes:!0}),g=new Map;for(let f of u){let h=v.join(l,f.name),p,d=v.join(c,f.name);if(f.isFile()){if(p={kind:JA.FILE,mode:(await r.lstatPromise(d)).mode},n.value===Bi.HARDLINKS_GLOBAL){let m=await mn.checksumFile(d,{baseFs:r,algorithm:"sha1"});p.digest=m}}else if(f.isDirectory())p={kind:JA.DIRECTORY};else if(f.isSymbolicLink())p={kind:JA.SYMLINK,symlinkTo:await r.readlinkPromise(d)};else throw new Error(`Unsupported file type (file: ${d}, mode: 0o${await r.statSync(d).mode.toString(8).padStart(6,"0")})`);if(g.set(h,p),f.isDirectory()&&h!==gi){let m=await o(h);for(let[E,B]of m)g.set(E,B)}}return g},a;if(n.value===Bi.HARDLINKS_GLOBAL&&i&&s){let l=v.join(i,s.substring(0,2),`${s.substring(2)}.json`);try{a=new Map(Object.entries(JSON.parse(await T.readFilePromise(l,"utf8"))))}catch(c){a=await o(),await bce(i,l,Buffer.from(JSON.stringify(Object.fromEntries(a))))}}else a=await o();for(let[l,c]of a){let u=v.join(e,l),g=v.join(t,l);c.kind===JA.DIRECTORY?await T.mkdirPromise(g,{recursive:!0}):c.kind===JA.FILE?await O6e({srcPath:u,dstPath:g,srcMode:c.mode,digest:c.digest,nmMode:n,baseFs:r,globalHardlinksStore:i}):c.kind===JA.SYMLINK&&await pT(v.resolve(v.dirname(g),c.symlinkTo),g)}};function U6e(t,e){let r=new Map([...t]),i=new Map([...e]);for(let[n,s]of t){let o=v.join(n,gi);if(!T.existsSync(o)){s.children.delete(gi);for(let a of i.keys())v.contains(o,a)!==null&&i.delete(a)}}return{locationTree:r,binSymlinks:i}}function wce(t){let e=S.parseDescriptor(t);return S.isVirtualDescriptor(e)&&(e=S.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function H6e(t,e,r,{loadManifest:i}){let n=new Map;for(let[a,{locations:l}]of t){let c=wce(a)?null:await i(a,l[0]),u=new Map;if(c)for(let[g,f]of c.bin){let h=v.join(l[0],f);f!==""&&T.existsSync(h)&&u.set(g,f)}n.set(a,u)}let s=new Map,o=(a,l,c)=>{let u=new Map,g=v.contains(r,a);if(c.locator&&g!==null){let f=n.get(c.locator);for(let[h,p]of f){let d=v.join(a,M.toPortablePath(p));u.set(kr(h),d)}for(let[h,p]of c.children){let d=v.join(a,h),m=o(d,d,p);m.size>0&&s.set(a,new Map([...s.get(a)||new Map,...m]))}}else for(let[f,h]of c.children){let p=o(v.join(a,f),l,h);for(let[d,m]of p)u.set(d,m)}return u};for(let[a,l]of e){let c=o(a,a,l);c.size>0&&s.set(a,new Map([...s.get(a)||new Map,...c]))}return s}var vce=(t,e)=>{if(!t||!e)return t===e;let r=S.parseLocator(t);S.isVirtualLocator(r)&&(r=S.devirtualizeLocator(r));let i=S.parseLocator(e);return S.isVirtualLocator(i)&&(i=S.devirtualizeLocator(i)),S.areLocatorsEqual(r,i)};function dT(t){return v.join(t.get("globalFolder"),"store")}async function T6e(t,e,{baseFs:r,project:i,report:n,loadManifest:s,realLocatorChecksums:o}){let a=v.join(i.cwd,gi),{locationTree:l,binSymlinks:c}=U6e(t.locationTree,t.binSymlinks),u=Bce(e,{skipPrefix:i.cwd}),g=[],f=async({srcDir:L,dstDir:K,linkType:J,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})=>{let V=(async()=>{try{J===gt.SOFT?(await T.mkdirPromise(v.dirname(K),{recursive:!0}),await pT(v.resolve(L),K)):await K6e(K,L,{baseFs:r,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})}catch(W){throw W.message=`While persisting ${L} -> ${K} ${W.message}`,W}finally{B.tick()}})().then(()=>g.splice(g.indexOf(V),1));g.push(V),g.length>Qce&&await Promise.race(g)},h=async(L,K,J)=>{let ne=(async()=>{let q=async(A,V,W)=>{try{W.innerLoop||await T.mkdirPromise(V,{recursive:!0});let X=await T.readdirPromise(A,{withFileTypes:!0});for(let F of X){if(!W.innerLoop&&F.name===gT)continue;let D=v.join(A,F.name),he=v.join(V,F.name);F.isDirectory()?(F.name!==gi||W&&W.innerLoop)&&(await T.mkdirPromise(he,{recursive:!0}),await q(D,he,_(P({},W),{innerLoop:!0}))):H.value===Bi.HARDLINKS_LOCAL||H.value===Bi.HARDLINKS_GLOBAL?await T.linkPromise(D,he):await T.copyFilePromise(D,he,mce.default.constants.COPYFILE_FICLONE)}}catch(X){throw W.innerLoop||(X.message=`While cloning ${A} -> ${V} ${X.message}`),X}finally{W.innerLoop||B.tick()}};await q(L,K,J)})().then(()=>g.splice(g.indexOf(ne),1));g.push(ne),g.length>Qce&&await Promise.race(g)},p=async(L,K,J)=>{if(!J)K.children.has(gi)&&await If(v.join(L,gi),{contentsOnly:!1}),await If(L,{contentsOnly:L===a});else for(let[ne,q]of K.children){let A=J.children.get(ne);await p(v.join(L,ne),q,A)}};for(let[L,K]of l){let J=u.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await p(v.join(L,ne),q,A)}}let d=async(L,K,J)=>{if(!J)K.children.has(gi)&&await If(v.join(L,gi),{contentsOnly:!0}),await If(L,{contentsOnly:K.linkType===gt.HARD});else{vce(K.locator,J.locator)||await If(L,{contentsOnly:K.linkType===gt.HARD});for(let[ne,q]of K.children){let A=J.children.get(ne);await d(v.join(L,ne),q,A)}}};for(let[L,K]of u){let J=l.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await d(v.join(L,ne),q,A)}}let m=new Map,E=[];for(let[L,{locations:K}]of t.locatorMap.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=u.get(ne),V=ne;if(A){for(let W of q)if(V=v.join(V,W),A=A.children.get(W),!A)break;if(A){let W=vce(A.locator,L),X=e.get(A.locator),F=X.target,D=V,he=X.linkType;if(W)m.has(F)||m.set(F,D);else if(F!==D){let pe=S.parseLocator(A.locator);S.isVirtualLocator(pe)&&(pe=S.devirtualizeLocator(pe)),E.push({srcDir:F,dstDir:D,linkType:he,realLocatorHash:pe.locatorHash})}}}}for(let[L,{locations:K}]of e.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=l.get(ne),V=u.get(ne),W=ne,X=e.get(L),F=S.parseLocator(L);S.isVirtualLocator(F)&&(F=S.devirtualizeLocator(F));let D=F.locatorHash,he=X.target,pe=J;if(he===pe)continue;let Ne=X.linkType;for(let Pe of q)V=V.children.get(Pe);if(!A)E.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});else for(let Pe of q)if(W=v.join(W,Pe),A=A.children.get(Pe),!A){E.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});break}}let B=Xi.progressViaCounter(E.length),b=n.reportProgress(B),R=i.configuration.get("nmMode"),H={value:R};try{let L=H.value===Bi.HARDLINKS_GLOBAL?`${dT(i.configuration)}/v1`:null;if(L&&!await T.existsPromise(L)){await T.mkdirpPromise(L);for(let J=0;J<256;J++)await T.mkdirPromise(v.join(L,J.toString(16).padStart(2,"0")))}for(let J of E)(J.linkType===gt.SOFT||!m.has(J.srcDir))&&(m.set(J.srcDir,J.dstDir),await f(_(P({},J),{globalHardlinksStore:L,nmMode:H,packageChecksum:o.get(J.realLocatorHash)||null})));await Promise.all(g),g.length=0;for(let J of E){let ne=m.get(J.srcDir);J.linkType!==gt.SOFT&&J.dstDir!==ne&&await h(ne,J.dstDir,{nmMode:H})}await Promise.all(g),await T.mkdirPromise(a,{recursive:!0});let K=await H6e(e,u,i.cwd,{loadManifest:s});await G6e(c,K,i.cwd),await M6e(i,e,K,H),R==Bi.HARDLINKS_GLOBAL&&H.value==Bi.HARDLINKS_LOCAL&&n.reportWarningOnce(z.NM_HARDLINKS_MODE_DOWNGRADED,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{b.stop()}}async function G6e(t,e,r){for(let i of t.keys()){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);if(!e.has(i)){let n=v.join(i,gi,gT);await T.removePromise(n)}}for(let[i,n]of e){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);let s=v.join(i,gi,gT),o=t.get(i)||new Map;await T.mkdirPromise(s,{recursive:!0});for(let a of o.keys())n.has(a)||(await T.removePromise(v.join(s,a)),process.platform==="win32"&&await T.removePromise(v.join(s,kr(`${a}.cmd`))));for(let[a,l]of n){let c=o.get(a),u=v.join(s,a);c!==l&&(process.platform==="win32"?await(0,Cce.default)(M.fromPortablePath(l),M.fromPortablePath(u),{createPwshFile:!1}):(await T.removePromise(u),await pT(l,u),v.contains(r,await T.realpathPromise(l))!==null&&await T.chmodPromise(l,493)))}}}var CT=class extends jc{constructor(){super(...arguments);this.mode="loose"}makeInstaller(e){return new Sce(e)}},Sce=class extends Cf{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(e){let r=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),i=ice(e,this.opts.project.cwd,r),{tree:n,errors:s}=VC(i,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:u,text:g}of s)this.opts.report.reportError(u,g);return}let o=new Map;e.fallbackPool=o;let a=(u,g)=>{let f=S.parseLocator(g.locator),h=S.stringifyIdent(f);h===u?o.set(u,f.reference):o.set(u,[h,f.reference])},l=v.join(this.opts.project.cwd,wt.nodeModules),c=n.get(l);if(typeof c!="undefined"){if("target"in c)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let u of c.dirList){let g=v.join(l,u),f=n.get(g);if(typeof f=="undefined")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in f)a(u,f);else for(let h of f.dirList){let p=v.join(g,h),d=n.get(p);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in d)a(`${u}/${h}`,d);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var j6e={hooks:{cleanGlobalArtifacts:async t=>{let e=dT(t);await T.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:ge.STRING,values:[Sn.WORKSPACES,Sn.DEPENDENCIES,Sn.NONE],default:Sn.NONE},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:ge.STRING,values:[Bi.CLASSIC,Bi.HARDLINKS_LOCAL,Bi.HARDLINKS_GLOBAL],default:Bi.CLASSIC},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:ge.BOOLEAN,default:!0}},linkers:[fT,CT]},Y6e=j6e;var yM={};it(yM,{default:()=>ZVe,npmConfigUtils:()=>gr,npmHttpUtils:()=>Lt,npmPublishUtils:()=>Rf});var Rce=ie(Or());var ir="npm:";var Lt={};it(Lt,{AuthType:()=>jn,customPackageError:()=>W6e,del:()=>_6e,get:()=>zs,getIdentUrl:()=>zA,handleInvalidAuthenticationError:()=>WA,post:()=>z6e,put:()=>V6e});var Pce=ie(aC()),Dce=ie(require("url"));var gr={};it(gr,{RegistryType:()=>ja,getAuditRegistry:()=>q6e,getAuthConfiguration:()=>ET,getDefaultRegistry:()=>eQ,getPublishRegistry:()=>xce,getRegistryConfiguration:()=>kce,getScopeConfiguration:()=>IT,getScopeRegistry:()=>Ya,normalizeRegistry:()=>To});var ja;(function(i){i.AUDIT_REGISTRY="npmAuditRegistry",i.FETCH_REGISTRY="npmRegistryServer",i.PUBLISH_REGISTRY="npmPublishRegistry"})(ja||(ja={}));function To(t){return t.replace(/\/$/,"")}function q6e(t,{configuration:e}){let r=e.get(ja.AUDIT_REGISTRY);return r!==null?To(r):xce(t,{configuration:e})}function xce(t,{configuration:e}){var r;return((r=t.publishConfig)==null?void 0:r.registry)?To(t.publishConfig.registry):t.name?Ya(t.name.scope,{configuration:e,type:ja.PUBLISH_REGISTRY}):eQ({configuration:e,type:ja.PUBLISH_REGISTRY})}function Ya(t,{configuration:e,type:r=ja.FETCH_REGISTRY}){let i=IT(t,{configuration:e});if(i===null)return eQ({configuration:e,type:r});let n=i.get(r);return n===null?eQ({configuration:e,type:r}):To(n)}function eQ({configuration:t,type:e=ja.FETCH_REGISTRY}){let r=t.get(e);return To(r!==null?r:t.get(ja.FETCH_REGISTRY))}function kce(t,{configuration:e}){let r=e.get("npmRegistries"),i=To(t),n=r.get(i);if(typeof n!="undefined")return n;let s=r.get(i.replace(/^[a-z]+:/,""));return typeof s!="undefined"?s:null}function IT(t,{configuration:e}){if(t===null)return null;let i=e.get("npmScopes").get(t);return i||null}function ET(t,{configuration:e,ident:r}){let i=r&&IT(r.scope,{configuration:e});return(i==null?void 0:i.get("npmAuthIdent"))||(i==null?void 0:i.get("npmAuthToken"))?i:kce(t,{configuration:e})||e}var jn;(function(n){n[n.NO_AUTH=0]="NO_AUTH",n[n.BEST_EFFORT=1]="BEST_EFFORT",n[n.CONFIGURATION=2]="CONFIGURATION",n[n.ALWAYS_AUTH=3]="ALWAYS_AUTH"})(jn||(jn={}));async function WA(t,{attemptedAs:e,registry:r,headers:i,configuration:n}){var s,o;if(((s=t.originalError)==null?void 0:s.name)==="HTTPError"&&((o=t.originalError)==null?void 0:o.response.statusCode)===401)throw new nt(z.AUTHENTICATION_INVALID,`Invalid authentication (${typeof e!="string"?`as ${await J6e(r,i,{configuration:n})}`:`attempted as ${e}`})`)}function W6e(t){var e;return((e=t.response)==null?void 0:e.statusCode)===404?"Package not found":null}function zA(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function zs(t,a){var l=a,{configuration:e,headers:r,ident:i,authType:n,registry:s}=l,o=qr(l,["configuration","headers","ident","authType","registry"]);if(i&&typeof s=="undefined"&&(s=Ya(i.scope,{configuration:e})),i&&i.scope&&typeof n=="undefined"&&(n=1),typeof s!="string")throw new Error("Assertion failed: The registry should be a string");let c=await tQ(s,{authType:n,configuration:e,ident:i});c&&(r=_(P({},r),{authorization:c}));try{return await Zt.get(t.charAt(0)==="/"?`${s}${t}`:t,P({configuration:e,headers:r},o))}catch(u){throw await WA(u,{registry:s,configuration:e,headers:r}),u}}async function z6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.post(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.post(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function V6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.put(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.put(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function _6e(t,l){var c=l,{attemptedAs:e,configuration:r,headers:i,ident:n,authType:s=3,registry:o}=c,a=qr(c,["attemptedAs","configuration","headers","ident","authType","registry"]);if(n&&typeof o=="undefined"&&(o=Ya(n.scope,{configuration:r})),typeof o!="string")throw new Error("Assertion failed: The registry should be a string");let u=await tQ(o,{authType:s,configuration:r,ident:n});u&&(i=_(P({},i),{authorization:u}));try{return await Zt.del(o+t,P({configuration:r,headers:i},a))}catch(g){if(!wT(g))throw await WA(g,{attemptedAs:e,registry:o,configuration:r,headers:i}),g;let f=await yT(),h=P(P({},i),BT(f));try{return await Zt.del(`${o}${t}`,P({configuration:r,headers:h},a))}catch(p){throw await WA(p,{attemptedAs:e,registry:o,configuration:r,headers:i}),p}}}async function tQ(t,{authType:e=2,configuration:r,ident:i}){let n=ET(t,{configuration:r,ident:i}),s=X6e(n,e);if(!s)return null;let o=await r.reduceHook(a=>a.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:i});if(o)return o;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let a=n.get("npmAuthIdent");return a.includes(":")?`Basic ${Buffer.from(a).toString("base64")}`:`Basic ${a}`}if(s&&e!==1)throw new nt(z.AUTHENTICATION_NOT_FOUND,"No authentication configured for request");return null}function X6e(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function J6e(t,e,{configuration:r}){var i;if(typeof e=="undefined"||typeof e.authorization=="undefined")return"an anonymous user";try{return(i=(await Zt.get(new Dce.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username)!=null?i:"an unknown user"}catch{return"an unknown user"}}async function yT(){if(process.env.TEST_ENV)return process.env.TEST_NPM_2FA_TOKEN||"";let{otp:t}=await(0,Pce.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return t}function wT(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch(i){return!1}}function BT(t){return{["npm-otp"]:t}}var QT=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i,params:n}=S.parseRange(e.reference);return!(!Rce.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let{params:i}=S.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await zs(i.__archiveUrl,{configuration:r.project.configuration,ident:e});return await Ai.convertToZip(n,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var bT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!S.tryParseDescriptor(e.range.slice(ir.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){let i=S.parseDescriptor(e.range.slice(ir.length),!0);return r.resolver.getResolutionDependencies(i,r)}async getCandidates(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return await i.resolver.getCandidates(n,r,i)}async getSatisfying(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return i.resolver.getSatisfying(n,r,i)}resolve(e,r){throw new Error("Unreachable")}};var vT=ie(Or()),Fce=ie(require("url"));var Vs=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let i=new Fce.URL(e.reference);return!(!vT.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i;try{i=await zs(Vs.getLocatorUrl(e),{configuration:r.project.configuration,ident:e})}catch(n){i=await zs(Vs.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:r.project.configuration,ident:e})}return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:i}){let n=Ya(e.scope,{configuration:i}),s=Vs.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===n+s||r===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=vT.default.clean(e.reference.slice(ir.length));if(r===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");return`${zA(e)}/-/${e.name}-${r}.tgz`}};var ST=ie(Or());var rQ=S.makeIdent(null,"node-gyp"),Z6e=/\b(node-gyp|prebuild-install)\b/,xT=class{supportsDescriptor(e,r){return e.range.startsWith(ir)?!!qt.validRange(e.range.slice(ir.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i}=S.parseRange(e.reference);return!!ST.default.valid(i)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);let s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=de.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new qt.SemVer(c);if(n.test(u))return u}catch{}return de.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=S.makeLocator(e,`${ir}${c.raw}`),g=s.versions[c.raw].dist.tarball;return Vs.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:S.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);return de.mapAndFilter(r,s=>{try{let{selector:o}=S.parseRange(s,{requireProtocol:ir}),a=new qt.SemVer(o);if(n.test(a))return{reference:s,version:a}}catch{}return de.mapAndFilter.skip}).sort((s,o)=>-s.version.compare(o.version)).map(({reference:s})=>S.makeLocator(e,s))}async resolve(e,r){let{selector:i}=S.parseRange(e.reference),n=ST.default.clean(i);if(n===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");let s=await zs(zA(e),{configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(s.versions,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return reference "${n}"`);let o=new Ze;if(o.load(s.versions[n]),!o.dependencies.has(rQ.identHash)&&!o.peerDependencies.has(rQ.identHash)){for(let a of o.scripts.values())if(a.match(Z6e)){o.dependencies.set(rQ.identHash,S.makeDescriptor(rQ,"latest")),r.report.reportWarningOnce(z.NODE_GYP_INJECTED,`${S.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}return typeof o.raw.deprecated=="string"&&r.report.reportWarningOnce(z.DEPRECATED_PACKAGE,`${S.prettyLocator(r.project.configuration,e)} is deprecated: ${o.raw.deprecated}`),_(P({},e),{version:n,languageName:"node",linkType:gt.HARD,conditions:o.getConditions(),dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin})}};var kT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!Rg.test(e.range.slice(ir.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(ir.length),s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"dist-tags"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data - missing "dist-tags" field');let o=s["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return tag "${n}"`);let a=o[n],l=S.makeLocator(e,`${ir}${a}`),c=s.versions[a].dist.tarball;return Vs.isConventionalTarballUrl(l,c,{configuration:i.project.configuration})?[l]:[S.bindLocator(l,{__archiveUrl:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Unreachable")}};var Rf={};it(Rf,{getGitHead:()=>_Ve,makePublishBody:()=>VVe});var CM={};it(CM,{default:()=>DVe,packUtils:()=>za});var za={};it(za,{genPackList:()=>QQ,genPackStream:()=>dM,genPackageManifest:()=>age,hasPackScripts:()=>hM,prepareForPack:()=>pM});var fM=ie(Nn()),sge=ie(nge()),oge=ie(require("zlib")),EVe=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],yVe=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function hM(t){return!!(Kt.hasWorkspaceScript(t,"prepack")||Kt.hasWorkspaceScript(t,"postpack"))}async function pM(t,{report:e},r){await Kt.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let i=v.join(t.cwd,Ze.fileName);await T.existsPromise(i)&&await t.manifest.loadFile(i,{baseFs:T}),await r()}finally{await Kt.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function dM(t,e){var s,o;typeof e=="undefined"&&(e=await QQ(t));let r=new Set;for(let a of(o=(s=t.manifest.publishConfig)==null?void 0:s.executableFiles)!=null?o:new Set)r.add(v.normalize(a));for(let a of t.manifest.bin.values())r.add(v.normalize(a));let i=sge.default.pack();process.nextTick(async()=>{for(let a of e){let l=v.normalize(a),c=v.resolve(t.cwd,l),u=v.join("package",l),g=await T.lstatPromise(c),f={name:u,mtime:new Date(mr.SAFE_TIME*1e3)},h=r.has(l)?493:420,p,d,m=new Promise((B,b)=>{p=B,d=b}),E=B=>{B?d(B):p()};if(g.isFile()){let B;l==="package.json"?B=Buffer.from(JSON.stringify(await age(t),null,2)):B=await T.readFilePromise(c),i.entry(_(P({},f),{mode:h,type:"file"}),B,E)}else g.isSymbolicLink()?i.entry(_(P({},f),{mode:h,type:"symlink",linkname:await T.readlinkPromise(c)}),E):E(new Error(`Unsupported file type ${g.mode} for ${M.fromPortablePath(l)}`));await m}i.finalize()});let n=(0,oge.createGzip)();return i.pipe(n),n}async function age(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function QQ(t){var g,f,h,p,d,m,E,B;let e=t.project,r=e.configuration,i={accept:[],reject:[]};for(let b of yVe)i.reject.push(b);for(let b of EVe)i.accept.push(b);i.reject.push(r.get("rcFilename"));let n=b=>{if(b===null||!b.startsWith(`${t.cwd}/`))return;let R=v.relative(t.cwd,b),H=v.resolve(Se.root,R);i.reject.push(H)};n(v.resolve(e.cwd,r.get("lockfileFilename"))),n(r.get("cacheFolder")),n(r.get("globalFolder")),n(r.get("installStatePath")),n(r.get("virtualFolder")),n(r.get("yarnPath")),await r.triggerHook(b=>b.populateYarnPaths,e,b=>{n(b)});for(let b of e.workspaces){let R=v.relative(t.cwd,b.cwd);R!==""&&!R.match(/^(\.\.)?\//)&&i.reject.push(`/${R}`)}let s={accept:[],reject:[]},o=(f=(g=t.manifest.publishConfig)==null?void 0:g.main)!=null?f:t.manifest.main,a=(p=(h=t.manifest.publishConfig)==null?void 0:h.module)!=null?p:t.manifest.module,l=(m=(d=t.manifest.publishConfig)==null?void 0:d.browser)!=null?m:t.manifest.browser,c=(B=(E=t.manifest.publishConfig)==null?void 0:E.bin)!=null?B:t.manifest.bin;o!=null&&s.accept.push(v.resolve(Se.root,o)),a!=null&&s.accept.push(v.resolve(Se.root,a)),typeof l=="string"&&s.accept.push(v.resolve(Se.root,l));for(let b of c.values())s.accept.push(v.resolve(Se.root,b));if(l instanceof Map)for(let[b,R]of l.entries())s.accept.push(v.resolve(Se.root,b)),typeof R=="string"&&s.accept.push(v.resolve(Se.root,R));let u=t.manifest.files!==null;if(u){s.reject.push("/*");for(let b of t.manifest.files)Age(s.accept,b,{cwd:Se.root})}return await wVe(t.cwd,{hasExplicitFileList:u,globalList:i,ignoreList:s})}async function wVe(t,{hasExplicitFileList:e,globalList:r,ignoreList:i}){let n=[],s=new Zo(t),o=[[Se.root,[i]]];for(;o.length>0;){let[a,l]=o.pop(),c=await s.lstatPromise(a);if(!cge(a,{globalList:r,ignoreLists:c.isDirectory()?null:l}))if(c.isDirectory()){let u=await s.readdirPromise(a),g=!1,f=!1;if(!e||a!==Se.root)for(let d of u)g=g||d===".gitignore",f=f||d===".npmignore";let h=f?await lge(s,a,".npmignore"):g?await lge(s,a,".gitignore"):null,p=h!==null?[h].concat(l):l;cge(a,{globalList:r,ignoreLists:l})&&(p=[...l,{accept:[],reject:["**/*"]}]);for(let d of u)o.push([v.resolve(a,d),p])}else(c.isFile()||c.isSymbolicLink())&&n.push(v.relative(Se.root,a))}return n.sort()}async function lge(t,e,r){let i={accept:[],reject:[]},n=await t.readFilePromise(v.join(e,r),"utf8");for(let s of n.split(/\n/g))Age(i.reject,s,{cwd:e});return i}function BVe(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=v.resolve(e,t)),r&&(t=`!${t}`),t}function Age(t,e,{cwd:r}){let i=e.trim();i===""||i[0]==="#"||t.push(BVe(i,{cwd:r}))}function cge(t,{globalList:e,ignoreLists:r}){if(bQ(t,e.accept))return!1;if(bQ(t,e.reject))return!0;if(r!==null)for(let i of r){if(bQ(t,i.accept))return!1;if(bQ(t,i.reject))return!0}return!1}function bQ(t,e){let r=e,i=[];for(let n=0;n{await pM(i,{report:l},async()=>{l.reportJson({base:M.fromPortablePath(i.cwd)});let c=await QQ(i);for(let u of c)l.reportInfo(null,M.fromPortablePath(u)),l.reportJson({location:M.fromPortablePath(u)});if(!this.dryRun){let u=await dM(i,c),g=T.createWriteStream(s);u.pipe(g),await new Promise(f=>{g.on("finish",f)})}}),this.dryRun||(l.reportInfo(z.UNNAMED,`Package archive generated in ${ue.pretty(e,s,ue.Type.PATH)}`),l.reportJson({output:M.fromPortablePath(s)}))})).exitCode()}};fm.paths=[["pack"]],fm.usage=ye.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});var gge=fm;function QVe(t,{workspace:e}){let r=t.replace("%s",bVe(e)).replace("%v",vVe(e));return M.toPortablePath(r)}function bVe(t){return t.manifest.name!==null?S.slugifyIdent(t.manifest.name):"package"}function vVe(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var SVe=["dependencies","devDependencies","peerDependencies"],xVe="workspace:",kVe=(t,e)=>{var i,n;e.publishConfig&&(e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of SVe)for(let o of t.manifest.getForScope(s).values()){let a=r.tryWorkspaceByDescriptor(o),l=S.parseRange(o.range);if(l.protocol===xVe)if(a===null){if(r.tryWorkspaceByIdent(o)===null)throw new nt(z.WORKSPACE_NOT_FOUND,`${S.prettyDescriptor(r.configuration,o)}: No local workspace found for this range`)}else{let c;S.areDescriptorsEqual(o,a.anchoredDescriptor)||l.selector==="*"?c=(i=a.manifest.version)!=null?i:"0.0.0":l.selector==="~"||l.selector==="^"?c=`${l.selector}${(n=a.manifest.version)!=null?n:"0.0.0"}`:c=l.selector,e[s][S.stringifyIdent(o)]=c}}},PVe={hooks:{beforeWorkspacePacking:kVe},commands:[gge]},DVe=PVe;var yge=ie(require("crypto")),wge=ie(Ege()),Bge=ie(require("url"));async function VVe(t,e,{access:r,tag:i,registry:n,gitHead:s}){let o=t.project.configuration,a=t.manifest.name,l=t.manifest.version,c=S.stringifyIdent(a),u=(0,yge.createHash)("sha1").update(e).digest("hex"),g=wge.default.fromData(e).toString();typeof r=="undefined"&&(t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?r=t.manifest.publishConfig.access:o.get("npmPublishAccess")!==null?r=o.get("npmPublishAccess"):a.scope?r="restricted":r="public");let f=await za.genPackageManifest(t),h=`${c}-${l}.tgz`,p=new Bge.URL(`${To(n)}/${c}/-/${h}`);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:c,access:r,["dist-tags"]:{[i]:l},versions:{[l]:_(P({},f),{_id:`${c}@${l}`,name:c,version:l,gitHead:s,dist:{shasum:u,integrity:g,tarball:p.toString()}})}}}async function _Ve(t){try{let{stdout:e}=await hr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}var wM={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.BOOLEAN,default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:ge.SECRET,default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:ge.SECRET,default:null}},Qge={npmAuditRegistry:{description:"Registry to query for audit reports",type:ge.STRING,default:null},npmPublishRegistry:{description:"Registry to push packages to",type:ge.STRING,default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.STRING,default:"https://registry.yarnpkg.com"}},XVe={configuration:_(P(P({},wM),Qge),{npmScopes:{description:"Settings per package scope",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:P(P({},wM),Qge)}},npmRegistries:{description:"Settings per registry",type:ge.MAP,normalizeKeys:To,valueDefinition:{description:"",type:ge.SHAPE,properties:P({},wM)}}}),fetchers:[QT,Vs],resolvers:[bT,xT,kT]},ZVe=XVe;var vM={};it(vM,{default:()=>a_e});Ss();var Ho;(function(i){i.All="all",i.Production="production",i.Development="development"})(Ho||(Ho={}));var Xs;(function(s){s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical"})(Xs||(Xs={}));var vQ=[Xs.Info,Xs.Low,Xs.Moderate,Xs.High,Xs.Critical];function bge(t,e){let r=[],i=new Set,n=o=>{i.has(o)||(i.add(o),r.push(o))};for(let o of e)n(o);let s=new Set;for(;r.length>0;){let o=r.shift(),a=t.storedResolutions.get(o);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=t.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function $Ve(t,e){return new Set([...t].filter(r=>!e.has(r)))}function e_e(t,e,{all:r}){let i=r?t.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=bge(t,l),g=bge(t,c);return $Ve(g,u)}function vge(t){let e={};for(let r of t)e[S.stringifyIdent(r)]=S.parseRange(r.range).selector;return e}function Sge(t){if(typeof t=="undefined")return new Set;let e=vQ.indexOf(t),r=vQ.slice(e);return new Set(r)}function t_e(t,e){let r=Sge(e),i={};for(let n of r)i[n]=t[n];return i}function xge(t,e){var i;let r=t_e(t,e);for(let n of Object.keys(r))if((i=r[n])!=null?i:0>0)return!0;return!1}function kge(t,e){var s;let r={},i={children:r},n=Object.values(t.advisories);if(e!=null){let o=Sge(e);n=n.filter(a=>o.has(a.severity))}for(let o of de.sortMap(n,a=>a.module_name))r[o.module_name]={label:o.module_name,value:ue.tuple(ue.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{Issue:{label:"Issue",value:ue.tuple(ue.Type.NO_HINT,o.title)},URL:{label:"URL",value:ue.tuple(ue.Type.URL,o.url)},Severity:{label:"Severity",value:ue.tuple(ue.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ue.tuple(ue.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ue.tuple(ue.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ue.tuple(ue.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ue.tuple(ue.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function Pge(t,e,{all:r,environment:i}){let n=r?t.workspaces:[e],s=[Ho.All,Ho.Production].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=[Ho.All,Ho.Development].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return vge([...o,...l].filter(c=>S.parseRange(c.range).protocol===null))}function Dge(t,e,{all:r}){var s;let i=e_e(t,e,{all:r}),n={};for(let o of t.storedPackages.values())n[S.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:vge(o.dependencies.values()),dev:i.has(S.convertLocatorToDescriptor(o).descriptorHash)};return n}var dm=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=Y.String("--environment",Ho.All,{description:"Which environments to cover",validator:Yi(Ho)});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=Y.String("--severity",Xs.Info,{description:"Minimal severity requested for packages to be displayed",validator:Yi(Xs)})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=Pge(r,i,{all:this.all,environment:this.environment}),s=Dge(r,i,{all:this.all});if(!this.recursive)for(let f of Object.keys(s))Object.prototype.hasOwnProperty.call(n,f)?s[f].requires={}:delete s[f];let o={requires:n,dependencies:s},a=gr.getAuditRegistry(i.manifest,{configuration:e}),l,c=await Fa.start({configuration:e,stdout:this.context.stdout},async()=>{l=await Lt.post("/-/npm/v1/security/audits/quick",o,{authType:Lt.AuthType.BEST_EFFORT,configuration:e,jsonResponse:!0,registry:a})});if(c.hasErrors())return c.exitCode();let u=xge(l.metadata.vulnerabilities,this.severity);return!this.json&&u?(Hs.emitTree(kge(l,this.severity),{configuration:e,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async f=>{f.reportJson(l),u||f.reportInfo(z.EXCEPTION,"No audit suggestions")})).exitCode()}};dm.paths=[["npm","audit"]],dm.usage=ye.Usage({description:"perform a vulnerability audit against the installed packages",details:` + This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). + + For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. + + Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${vQ.map(e=>`\`${e}\``).join(", ")}. + + If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. + + To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them. + `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"]]});var Rge=dm;var BM=ie(Or()),QM=ie(require("util")),Cm=class extends Be{constructor(){super(...arguments);this.fields=Y.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.fields!="undefined"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],s=!1,o=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async a=>{for(let l of this.packages){let c;if(l==="."){let b=r.topLevelWorkspace;if(!b.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(b.cwd,wt.manifest))}`);c=S.makeDescriptor(b.manifest.name,"unknown")}else c=S.parseDescriptor(l);let u=Lt.getIdentUrl(c),g=bM(await Lt.get(u,{configuration:e,ident:c,jsonResponse:!0,customErrorMessage:Lt.customPackageError})),f=Object.keys(g.versions).sort(BM.default.compareLoose),p=g["dist-tags"].latest||f[f.length-1],d=qt.validRange(c.range);if(d){let b=BM.default.maxSatisfying(f,d);b!==null?p=b:(a.reportWarning(z.UNNAMED,`Unmet range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0)}else c.range!=="unknown"&&(a.reportWarning(z.UNNAMED,`Invalid range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0);let m=g.versions[p],E=_(P(P({},g),m),{version:p,versions:f}),B;if(i!==null){B={};for(let b of i){let R=E[b];if(typeof R!="undefined")B[b]=R;else{a.reportWarning(z.EXCEPTION,`The '${b}' field doesn't exist inside ${S.prettyIdent(e,c)}'s informations`),s=!0;continue}}}else this.json||(delete E.dist,delete E.readme,delete E.users),B=E;a.reportJson(B),this.json||n.push(B)}});QM.inspect.styles.name="cyan";for(let a of n)(a!==n[0]||s)&&this.context.stdout.write(` +`),this.context.stdout.write(`${(0,QM.inspect)(a,{depth:Infinity,colors:!0,compact:!1})} +`);return o.exitCode()}};Cm.paths=[["npm","info"]],Cm.usage=ye.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command will fetch information about a package from the npm registry, and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package informations.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react 16.12.0","yarn npm info react@16.12.0"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});var Fge=Cm;function bM(t){if(Array.isArray(t)){let e=[];for(let r of t)r=bM(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let i=bM(t[r]);i&&(e[r]=i)}return e}else return t||null}var Nge=ie(aC()),mm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=await i_e({registry:r,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),o=`/-/user/org.couchdb.user:${encodeURIComponent(s.name)}`,a=await Lt.put(o,s,{attemptedAs:s.name,configuration:e,registry:r,jsonResponse:!0,authType:Lt.AuthType.NO_AUTH});return await r_e(r,a.token,{configuration:e,scope:this.scope}),n.reportInfo(z.UNNAMED,"Successfully logged in")})).exitCode()}};mm.paths=[["npm","login"]],mm.usage=ye.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});var Lge=mm;async function SQ({scope:t,publish:e,configuration:r,cwd:i}){return t&&e?gr.getScopeRegistry(t,{configuration:r,type:gr.RegistryType.PUBLISH_REGISTRY}):t?gr.getScopeRegistry(t,{configuration:r}):e?gr.getPublishRegistry((await rf(r,i)).manifest,{configuration:r}):gr.getDefaultRegistry({configuration:r})}async function r_e(t,e,{configuration:r,scope:i}){let n=o=>a=>{let l=de.isIndexableObject(a)?a:{},c=l[o],u=de.isIndexableObject(c)?c:{};return _(P({},l),{[o]:_(P({},u),{npmAuthToken:e})})},s=i?{npmScopes:n(i)}:{npmRegistries:n(t)};return await fe.updateHomeConfiguration(s)}async function i_e({registry:t,report:e,stdin:r,stdout:i}){if(process.env.TEST_ENV)return{name:process.env.TEST_NPM_USER||"",password:process.env.TEST_NPM_PASSWORD||""};e.reportInfo(z.UNNAMED,`Logging in to ${t}`);let n=!1;t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(e.reportInfo(z.UNNAMED,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),e.reportSeparator();let{username:s,password:o}=await(0,Nge.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i}]);return e.reportSeparator(),{name:s,password:o}}var Ff=new Set(["npmAuthIdent","npmAuthToken"]),Im=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=Y.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=async()=>{var l;let n=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),s=await fe.find(this.context.cwd,this.context.plugins),o=S.makeIdent((l=this.scope)!=null?l:null,"pkg");return!gr.getAuthConfiguration(n,{configuration:s,ident:o}).get("npmAuthToken")};return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{if(this.all&&(await n_e(),n.reportInfo(z.UNNAMED,"Successfully logged out from everything")),this.scope){await Tge("npmScopes",this.scope),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${this.scope}`):n.reportWarning(z.UNNAMED,"Scope authentication settings removed, but some other ones settings still apply to it");return}let s=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish});await Tge("npmRegistries",s),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${s}`):n.reportWarning(z.UNNAMED,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};Im.paths=[["npm","logout"]],Im.usage=ye.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});var Mge=Im;function s_e(t,e){let r=t[e];if(!de.isIndexableObject(r))return!1;let i=new Set(Object.keys(r));if([...Ff].every(s=>!i.has(s)))return!1;for(let s of Ff)i.delete(s);if(i.size===0)return t[e]=void 0,!0;let n=P({},r);for(let s of Ff)delete n[s];return t[e]=n,!0}async function n_e(){let t=e=>{let r=!1,i=de.isIndexableObject(e)?P({},e):{};i.npmAuthToken&&(delete i.npmAuthToken,r=!0);for(let n of Object.keys(i))s_e(i,n)&&(r=!0);if(Object.keys(i).length!==0)return r?i:e};return await fe.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function Tge(t,e){return await fe.updateHomeConfiguration({[t]:r=>{let i=de.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(i,e))return r;let n=i[e],s=de.isIndexableObject(n)?n:{},o=new Set(Object.keys(s));if([...Ff].every(l=>!o.has(l)))return r;for(let l of Ff)o.delete(l);if(o.size===0)return Object.keys(i).length===1?void 0:_(P({},i),{[e]:void 0});let a={};for(let l of Ff)a[l]=void 0;return _(P({},i),{[e]:P(P({},s),a)})}})}var Em=class extends Be{constructor(){super(...arguments);this.access=Y.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=Y.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=Y.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);if(i.manifest.private)throw new me("Private workspaces cannot be published");if(i.manifest.name===null||i.manifest.version===null)throw new me("Workspaces must have valid names and versions to be published on an external registry");await r.restoreInstallState();let n=i.manifest.name,s=i.manifest.version,o=gr.getPublishRegistry(i.manifest,{configuration:e});return(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{var c,u;if(this.tolerateRepublish)try{let g=await Lt.get(Lt.getIdentUrl(n),{configuration:e,registry:o,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(g,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(g.versions,s)){l.reportWarning(z.UNNAMED,`Registry already knows about version ${s}; skipping.`);return}}catch(g){if(((u=(c=g.originalError)==null?void 0:c.response)==null?void 0:u.statusCode)!==404)throw g}await Kt.maybeExecuteWorkspaceLifecycleScript(i,"prepublish",{report:l}),await za.prepareForPack(i,{report:l},async()=>{let g=await za.genPackList(i);for(let m of g)l.reportInfo(null,m);let f=await za.genPackStream(i,g),h=await de.bufferStream(f),p=await Rf.getGitHead(i.cwd),d=await Rf.makePublishBody(i,h,{access:this.access,tag:this.tag,registry:o,gitHead:p});await Lt.put(Lt.getIdentUrl(n),d,{configuration:e,registry:o,ident:n,jsonResponse:!0})}),l.reportInfo(z.UNNAMED,"Package archive published")})).exitCode()}};Em.paths=[["npm","publish"]],Em.usage=ye.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});var Oge=Em;var Uge=ie(Or());var ym=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n;if(typeof this.package!="undefined")n=S.parseIdent(this.package);else{if(!i)throw new rt(r.cwd,this.context.cwd);if(!i.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(i.cwd,wt.manifest))}`);n=i.manifest.name}let s=await wm(n,e),a={children:de.sortMap(Object.entries(s),([l])=>l).map(([l,c])=>({value:ue.tuple(ue.Type.RESOLUTION,{descriptor:S.makeDescriptor(n,l),locator:S.makeLocator(n,c)})}))};return Hs.emitTree(a,{configuration:e,json:this.json,stdout:this.context.stdout})}};ym.paths=[["npm","tag","list"]],ym.usage=ye.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` + This command will list all tags of a package from the npm registry. + + If the package is not specified, Yarn will default to the current workspace. + `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});var Kge=ym;async function wm(t,e){let r=`/-/package${Lt.getIdentUrl(t)}/dist-tags`;return Lt.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Lt.customPackageError})}var Bm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseDescriptor(this.package,!0),s=n.range;if(!Uge.default.valid(s))throw new me(`The range ${ue.pretty(e,n.range,ue.Type.RANGE)} must be a valid semver version`);let o=gr.getPublishRegistry(i.manifest,{configuration:e}),a=ue.pretty(e,n,ue.Type.IDENT),l=ue.pretty(e,s,ue.Type.RANGE),c=ue.pretty(e,this.tag,ue.Type.CODE);return(await Fe.start({configuration:e,stdout:this.context.stdout},async g=>{let f=await wm(n,e);Object.prototype.hasOwnProperty.call(f,this.tag)&&f[this.tag]===s&&g.reportWarning(z.UNNAMED,`Tag ${c} is already set to version ${l}`);let h=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.put(h,s,{configuration:e,registry:o,ident:n,jsonRequest:!0,jsonResponse:!0}),g.reportInfo(z.UNNAMED,`Tag ${c} added to version ${l} of package ${a}`)})).exitCode()}};Bm.paths=[["npm","tag","add"]],Bm.usage=ye.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` + This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. + `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});var Hge=Bm;var Qm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){if(this.tag==="latest")throw new me("The 'latest' tag cannot be removed.");let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseIdent(this.package),s=gr.getPublishRegistry(i.manifest,{configuration:e}),o=ue.pretty(e,this.tag,ue.Type.CODE),a=ue.pretty(e,n,ue.Type.IDENT),l=await wm(n,e);if(!Object.prototype.hasOwnProperty.call(l,this.tag))throw new me(`${o} is not a tag of package ${a}`);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{let g=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.del(g,{configuration:e,registry:s,ident:n,jsonResponse:!0}),u.reportInfo(z.UNNAMED,`Tag ${o} removed from package ${a}`)})).exitCode()}};Qm.paths=[["npm","tag","remove"]],Qm.usage=ye.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` + This command will remove a tag from a package from the npm registry. + `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var Gge=Qm;var bm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r;return this.scope&&this.publish?r=gr.getScopeRegistry(this.scope,{configuration:e,type:gr.RegistryType.PUBLISH_REGISTRY}):this.scope?r=gr.getScopeRegistry(this.scope,{configuration:e}):this.publish?r=gr.getPublishRegistry((await rf(e,this.context.cwd)).manifest,{configuration:e}):r=gr.getDefaultRegistry({configuration:e}),(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{var o,a;let s;try{s=await Lt.get("/-/whoami",{configuration:e,registry:r,authType:Lt.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?S.makeIdent(this.scope,""):void 0})}catch(l){if(((o=l.response)==null?void 0:o.statusCode)===401||((a=l.response)==null?void 0:a.statusCode)===403){n.reportError(z.AUTHENTICATION_INVALID,"Authentication failed - your credentials may have expired");return}else throw l}n.reportInfo(z.UNNAMED,s.username)})).exitCode()}};bm.paths=[["npm","whoami"]],bm.usage=ye.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var jge=bm;var o_e={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:ge.STRING,default:null}},commands:[Rge,Fge,Lge,Mge,Oge,Hge,Kge,Gge,jge]},a_e=o_e;var NM={};it(NM,{default:()=>B_e,patchUtils:()=>SM});var SM={};it(SM,{applyPatchFile:()=>PQ,diffFolders:()=>DM,extractPackageToDisk:()=>PM,extractPatchFlags:()=>Xge,isParentRequired:()=>kM,loadPatchFiles:()=>km,makeDescriptor:()=>E_e,makeLocator:()=>xM,parseDescriptor:()=>Sm,parseLocator:()=>xm,parsePatchFile:()=>kQ});var vm=class extends Error{constructor(e,r){super(`Cannot apply hunk #${e+1}`);this.hunk=r}};var A_e=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Nf(t){return v.relative(Se.root,v.resolve(Se.root,M.toPortablePath(t)))}function l_e(t){let e=t.trim().match(A_e);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var c_e=420,u_e=493,Lr;(function(i){i.Context="context",i.Insertion="insertion",i.Deletion="deletion"})(Lr||(Lr={}));var Yge=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),g_e=t=>({header:l_e(t),parts:[]}),f_e={["@"]:"header",["-"]:Lr.Deletion,["+"]:Lr.Insertion,[" "]:Lr.Context,["\\"]:"pragma",undefined:Lr.Context};function p_e(t){let e=[],r=Yge(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),r.hunks.push(n),n=null)}function a(){o(),e.push(r),r=Yge()}for(let l=0;l0?"patch":"mode change",B=null;switch(E){case"rename":{if(!u||!g)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:i,fromPath:Nf(u),toPath:Nf(g)}),B=g}break;case"file deletion":{let b=n||p;if(!b)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(l),hash:f})}break;case"file creation":{let b=s||d;if(!b)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(c),hash:h})}break;case"patch":case"mode change":B=d||s;break;default:de.assertNever(E);break}B&&o&&a&&o!==a&&e.push({type:"mode change",semverExclusivity:i,path:Nf(B),oldMode:xQ(o),newMode:xQ(a)}),B&&m&&m.length&&e.push({type:"patch",semverExclusivity:i,path:Nf(B),hunks:m,beforeHash:f,afterHash:h})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function xQ(t){let e=parseInt(t,8)&511;if(e!==c_e&&e!==u_e)throw new Error(`Unexpected file mode string: ${t}`);return e}function kQ(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),d_e(p_e(e))}function h_e(t){let e=0,r=0;for(let{type:i,lines:n}of t.parts)switch(i){case Lr.Context:r+=n.length,e+=n.length;break;case Lr.Deletion:e+=n.length;break;case Lr.Insertion:r+=n.length;break;default:de.assertNever(i);break}if(e!==t.header.original.length||r!==t.header.patched.length){let i=n=>n<0?n:`+${n}`;throw new Error(`hunk header integrity check failed (expected @@ ${i(t.header.original.length)} ${i(t.header.patched.length)} @@, got @@ ${i(e)} ${i(r)} @@)`)}}async function Lf(t,e,r){let i=await t.lstatPromise(e),n=await r();if(typeof n!="undefined"&&(e=n),t.lutimesPromise)await t.lutimesPromise(e,i.atime,i.mtime);else if(!i.isSymbolicLink())await t.utimesPromise(e,i.atime,i.mtime);else throw new Error("Cannot preserve the time values of a symlink")}async function PQ(t,{baseFs:e=new Wt,dryRun:r=!1,version:i=null}={}){for(let n of t)if(!(n.semverExclusivity!==null&&i!==null&&!qt.satisfiesWithPrereleases(i,n.semverExclusivity)))switch(n.type){case"file deletion":if(r){if(!e.existsSync(n.path))throw new Error(`Trying to delete a file that doesn't exist: ${n.path}`)}else await Lf(e,v.dirname(n.path),async()=>{await e.unlinkPromise(n.path)});break;case"rename":if(r){if(!e.existsSync(n.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${n.fromPath}`)}else await Lf(e,v.dirname(n.fromPath),async()=>{await Lf(e,v.dirname(n.toPath),async()=>{await Lf(e,n.fromPath,async()=>(await e.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(r){if(e.existsSync(n.path))throw new Error(`Trying to create a file that already exists: ${n.path}`)}else{let s=n.hunk?n.hunk.parts[0].lines.join(` +`)+(n.hunk.parts[0].noNewlineAtEndOfFile?"":` +`):"";await e.mkdirpPromise(v.dirname(n.path),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,mr.SAFE_TIME,mr.SAFE_TIME)}break;case"patch":await Lf(e,n.path,async()=>{await C_e(n,{baseFs:e,dryRun:r})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(qge(n.newMode)!==qge(o))continue;await Lf(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:de.assertNever(n);break}}function qge(t){return(t&64)>0}function Jge(t){return t.replace(/\s+$/,"")}function m_e(t,e){return Jge(t)===Jge(e)}async function C_e({hunks:t,path:e},{baseFs:r,dryRun:i=!1}){let n=await r.statSync(e).mode,o=(await r.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of t){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),d=Math.max(h,p),m=0,E=0,B=null;for(;m<=d;){if(m<=h&&(E=f-m,B=Wge(g,o,E),B!==null)){m=-m;break}if(m<=p&&(E=f+m,B=Wge(g,o,E),B!==null))break;m+=1}if(B===null)throw new vm(t.indexOf(g),g);a.push(B),l+=m,c=E+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:de.assertNever(f);break}await r.writeFilePromise(e,o.join(` +`),{mode:n})}function Wge(t,e,r){let i=[];for(let n of t.parts)switch(n.type){case Lr.Context:case Lr.Deletion:{for(let s of n.lines){let o=e[r];if(o==null||!m_e(o,s))return null;r+=1}n.type===Lr.Deletion&&(i.push({type:"splice",index:r-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case Lr.Insertion:i.push({type:"splice",index:r,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:de.assertNever(n.type);break}return i}var I_e=/^builtin<([^>]+)>$/;function zge(t,e){let{source:r,selector:i,params:n}=S.parseRange(t);if(r===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>M.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?S.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(r);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function Sm(t){let i=zge(t.range,S.parseDescriptor),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceDescriptor:e})}function xm(t){let i=zge(t.reference,S.parseLocator),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceLocator:e})}function Vge({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:i,patchHash:n},s){let o=t!==null?{locator:S.stringifyLocator(t)}:{},a=typeof i!="undefined"?{version:i}:{},l=typeof n!="undefined"?{hash:n}:{};return S.makeRange({protocol:"patch:",source:s(e),selector:r.join("&"),params:P(P(P({},a),l),o)})}function E_e(t,{parentLocator:e,sourceDescriptor:r,patchPaths:i}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,patchPaths:i},S.stringifyDescriptor))}function xM(t,{parentLocator:e,sourcePackage:r,patchPaths:i,patchHash:n}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:i,patchHash:n},S.stringifyLocator))}function _ge({onAbsolute:t,onRelative:e,onBuiltin:r},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(I_e);return s!==null?r(s[1]):v.isAbsolute(i)?t(i):e(i)}function Xge(t){let e=t.startsWith("~");return e&&(t=t.slice(1)),{optional:e}}function kM(t){return _ge({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},t)}async function km(t,e,r){let i=t!==null?await r.fetcher.fetch(t,r):null,n=i&&i.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await de.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=Xge(o),l=await _ge({onAbsolute:async()=>await T.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(v.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await r.project.configuration.firstHook(u=>u.getBuiltinPatch,r.project,c)},o);return _(P({},a),{source:l})})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,` +`));return s}async function PM(t,{cache:e,project:r}){let i=r.storedPackages.get(t.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let n=r.storedChecksums,s=new ei,o=r.configuration.makeFetcher(),a=await o.fetch(t,{cache:e,project:r,fetcher:o,checksums:n,report:s}),l=await T.mktempPromise(),c=v.join(l,"source"),u=v.join(l,"user"),g=v.join(l,".yarn-patch.json");return await Promise.all([T.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),T.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),T.writeJsonPromise(g,{locator:S.stringifyLocator(t),version:i.version})]),T.detachTemp(l),u}async function DM(t,e){let r=M.fromPortablePath(t).replace(/\\/g,"/"),i=M.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await hr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--text",r,i],{cwd:M.toPortablePath(process.cwd()),env:_(P({},process.env),{GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""})});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. +The following error was reported by 'git': +${s}`);let o=r.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${de.escapeRegExp(`/${o(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${de.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(de.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(de.escapeRegExp(`${i}/`),"g"),"")}function Zge(t,{configuration:e,report:r}){for(let i of t.parts)for(let n of i.lines)switch(i.type){case Lr.Context:r.reportInfo(null,` ${ue.pretty(e,n,"grey")}`);break;case Lr.Deletion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`- ${ue.pretty(e,n,ue.Type.REMOVED)}`);break;case Lr.Insertion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`+ ${ue.pretty(e,n,ue.Type.ADDED)}`);break;default:de.assertNever(i.type)}}var RM=class{supports(e,r){return!!e.reference.startsWith("patch:")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async patchPackage(e,r){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=xm(e),a=await km(i,o,r),l=await T.mktempPromise(),c=v.join(l,"current.zip"),u=await r.fetcher.fetch(n,r),g=S.getIdentVendorPath(e),f=await $i(),h=new Jr(c,{libzip:f,create:!0,level:r.project.configuration.get("compressionLevel")});await de.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:d}of a){if(p===null)continue;let m=new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")}),E=new Ft(v.resolve(Se.root,g),{baseFs:m});try{await PQ(kQ(p),{baseFs:E,version:s})}catch(B){if(!(B instanceof vm))throw B;let b=r.project.configuration.get("enableInlineHunks"),R=!b&&!d?" (set enableInlineHunks for details)":"",H=`${S.prettyLocator(r.project.configuration,e)}: ${B.message}${R}`,L=K=>{!b||Zge(B.hunk,{configuration:r.project.configuration,report:K})};if(m.discardAndClose(),d){r.report.reportWarningOnce(z.PATCH_HUNK_FAILED,H,{reportExtra:L});continue}else throw new nt(z.PATCH_HUNK_FAILED,H,L)}m.saveAndClose()}return new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")})}};var y_e=3,FM=class{supportsDescriptor(e,r){return!!e.range.startsWith("patch:")}supportsLocator(e,r){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){let{patchPaths:n}=Sm(e);return n.every(s=>!kM(s))?e:S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:i}=Sm(e);return[i]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=Sm(e),a=await km(n,o,i.fetchOptions),l=r.get(s.descriptorHash);if(typeof l=="undefined")throw new Error("Assertion failed: The dependency should have been resolved");let c=mn.makeHash(`${y_e}`,...a.map(u=>JSON.stringify(u))).slice(0,6);return[xM(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){let{sourceLocator:i}=xm(e),n=await r.resolver.resolve(i,r);return P(P({},n),e)}};var Pm=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=v.resolve(this.context.cwd,M.toPortablePath(this.patchFolder)),s=v.join(n,"../source"),o=v.join(n,"../.yarn-patch.json");if(!T.existsSync(s))throw new me("The argument folder didn't get created by 'yarn patch'");let a=await DM(s,n),l=await T.readJsonPromise(o),c=S.parseLocator(l.locator,!0);if(!r.storedPackages.has(c.locatorHash))throw new me("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(a);return}let u=e.get("patchFolder"),g=v.join(u,S.slugifyLocator(c));await T.mkdirPromise(u,{recursive:!0}),await T.writeFilePromise(g,a);let f=v.relative(r.cwd,g);r.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:S.stringifyIdent(c),description:l.version}},reference:`patch:${S.stringifyLocator(c)}#${f}`}),await r.persist()}};Pm.paths=[["patch-commit"]],Pm.usage=ye.Usage({description:"generate a patch out of a directory",details:"\n This will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n Only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});var $ge=Pm;var Dm=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=S.parseLocator(this.package);if(s.reference==="unknown"){let o=de.mapAndFilter([...r.storedPackages.values()],a=>a.identHash!==s.identHash?de.mapAndFilter.skip:S.isVirtualLocator(a)?de.mapAndFilter.skip:a);if(o.length===0)throw new me("No package found in the project for the given locator");if(o.length>1)throw new me(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): +${o.map(a=>` +- ${S.prettyLocator(e,a)}`).join("")}`);s=o[0]}if(!r.storedPackages.has(s.locatorHash))throw new me("No package found in the project for the given locator");await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async o=>{let a=await PM(s,{cache:n,project:r});o.reportJson({locator:S.stringifyLocator(s),path:M.fromPortablePath(a)}),o.reportInfo(z.UNNAMED,`Package ${S.prettyLocator(e,s)} got extracted with success!`),o.reportInfo(z.UNNAMED,`You can now edit the following folder: ${ue.pretty(e,M.fromPortablePath(a),"magenta")}`),o.reportInfo(z.UNNAMED,`Once you are done run ${ue.pretty(e,`yarn patch-commit ${process.platform==="win32"?'"':""}${M.fromPortablePath(a)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};Dm.paths=[["patch"]],Dm.usage=ye.Usage({description:"prepare a package for patching",details:'\n This command will cause a package to be extracted in a temporary directory (under a folder named "patch-workdir"). This folder will be editable at will; running `yarn patch` inside it will then cause Yarn to generate a patchfile and register it into your top-level manifest (cf the `patch:` protocol).\n '});var efe=Dm;var w_e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:ge.BOOLEAN,default:!1},patchFolder:{description:"Folder where the patch files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/patches"}},commands:[$ge,efe],fetchers:[RM],resolvers:[FM]},B_e=w_e;var TM={};it(TM,{default:()=>S_e});var tfe=ie(Wp()),LM=class{supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="pnpm"}async findPackageLocation(e,r){return nfe(e,{project:r.project})}async findPackageLocator(e,r){let i=ife(),n=r.project.installersCustomData.get(i);if(!n)throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=v.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new rfe(e)}},rfe=class{constructor(e){this.opts=e;this.asyncActions=new afe;this.packageLocations=new Map;this.customData={locatorByPath:new Map}}getCustomDataKey(){return ife()}attachCustomData(e){this.customData=e}async installPackage(e,r,i){switch(e.linkType){case gt.SOFT:return this.installPackageSoft(e,r,i);case gt.HARD:return this.installPackageHard(e,r,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,i){let n=v.resolve(r.packageFs.getRealPath(),r.prefixPath);return this.packageLocations.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,r,i){var u;let n=nfe(e,{project:this.opts.project});this.customData.locatorByPath.set(n,S.stringifyLocator(e)),this.packageLocations.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await T.mkdirPromise(n,{recursive:!0}),await T.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1})}));let o=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e,a={manifest:(u=await Ze.tryFind(r.prefixPath,{baseFs:r.packageFs}))!=null?u:new Ze,misc:{hasBindingGyp:Ws.hasBindingGyp(r)}},l=this.opts.project.getDependencyMeta(o,e.version),c=Ws.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,r){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!ofe(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.packageLocations.get(e.locatorHash);if(typeof n=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(e)})`);let s=v.join(n,wt.nodeModules);r.length>0&&await T.mkdirpPromise(s);let o=await Q_e(s),a=[];for(let[l,c]of r){let u=c;ofe(c,{project:this.opts.project})||(this.opts.report.reportWarning(z.UNNAMED,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=S.devirtualizeLocator(c));let g=this.packageLocations.get(u.locatorHash);if(typeof g=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(c)})`);let f=S.stringifyIdent(l),h=v.join(s,f),p=v.relative(v.dirname(h),g),d=o.get(f);o.delete(f),a.push(Promise.resolve().then(async()=>{if(d){if(d.isSymbolicLink()&&await T.readlinkPromise(h)===p)return;await T.removePromise(h)}await T.mkdirpPromise(v.dirname(h)),process.platform=="win32"?await T.symlinkPromise(g,h,"junction"):await T.symlinkPromise(p,h)}))}for(let l of o.keys())a.push(T.removePromise(v.join(s,l)));await Promise.all(a)}))}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=sfe(this.opts.project),r=new Set;for(let s of this.packageLocations.values())r.add(v.basename(s));let i;try{i=await T.readdirPromise(e)}catch{i=[]}let n=[];for(let s of i)r.has(s)||n.push(T.removePromise(v.join(e,s)));await Promise.all(n),await this.asyncActions.wait()}};function ife(){return JSON.stringify({name:"PnpmInstaller",version:1})}function sfe(t){return v.join(t.cwd,wt.nodeModules,".store")}function nfe(t,{project:e}){let r=S.slugifyLocator(t);return v.join(sfe(e),r)}function ofe(t,{project:e}){return!S.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function Q_e(t){let e=new Map,r=[];try{r=await T.readdirPromise(t,{withFileTypes:!0})}catch(i){if(i.code!=="ENOENT")throw i}try{for(let i of r)if(!i.name.startsWith("."))if(i.name.startsWith("@"))for(let n of await T.readdirPromise(v.join(t,i.name),{withFileTypes:!0}))e.set(`${i.name}/${n.name}`,n);else e.set(i.name,i)}catch(i){if(i.code!=="ENOENT")throw i}return e}function b_e(){let t,e;return{promise:new Promise((i,n)=>{t=i,e=n}),resolve:t,reject:e}}var afe=class{constructor(){this.deferred=new Map;this.promises=new Map;this.limit=(0,tfe.default)(10)}set(e,r){let i=this.deferred.get(e);typeof i=="undefined"&&this.deferred.set(e,i=b_e());let n=this.limit(()=>r());return this.promises.set(e,n),n.then(()=>{this.promises.get(e)===n&&i.resolve()},s=>{this.promises.get(e)===n&&i.reject(s)}),i.promise}reduce(e,r){var n;let i=(n=this.promises.get(e))!=null?n:Promise.resolve();this.set(e,()=>r(i))}async wait(){await Promise.all(this.promises.values())}};var v_e={linkers:[LM]},S_e=v_e;var F0=()=>({modules:new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",F$(vh)],["semver",x_e],["typanion",lu],["yup",k_e],["@yarnpkg/plugin-essentials",hL],["@yarnpkg/plugin-compat",mL],["@yarnpkg/plugin-dlx",IL],["@yarnpkg/plugin-file",xL],["@yarnpkg/plugin-git",fL],["@yarnpkg/plugin-github",PL],["@yarnpkg/plugin-http",FL],["@yarnpkg/plugin-init",ML],["@yarnpkg/plugin-link",GL],["@yarnpkg/plugin-nm",mT],["@yarnpkg/plugin-npm",yM],["@yarnpkg/plugin-npm-cli",vM],["@yarnpkg/plugin-pack",CM],["@yarnpkg/plugin-patch",NM],["@yarnpkg/plugin-pnp",oT],["@yarnpkg/plugin-pnpm",TM]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"])});i0({binaryVersion:Zr||"",pluginConfiguration:F0()});})(); +/*! + * buildToken + * Builds OAuth token prefix (helper function) + * + * @name buildToken + * @function + * @param {GitUrl} obj The parsed Git url object. + * @return {String} token prefix + */ +/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * is-windows + * + * Copyright © 2015-2018, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */ diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 0000000..d19290a --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1,7 @@ +nodeLinker: pnp + +plugins: + - path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs + spec: "@yarnpkg/plugin-interactive-tools" + +yarnPath: .yarn/releases/yarn-3.1.0.cjs diff --git a/package.json b/package.json index 9c5d6c5..35a12db 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "homepage": "https://beenote.github.io/angular-material-datetimepicker/", "main": "js/angular-material-datetimepicker.js", "scripts": { - "build": "node build", + "build": "yarn node build", "start": "web-dev-server --watch --open" }, "dependencies": { @@ -32,7 +32,8 @@ "url": "https://github.com/beenote/angular-material-datetimepicker" }, "devDependencies": { - "@web/dev-server": "^0.1.25", - "esbuild": "^0.13.7" - } + "@web/dev-server": "^0.1.27", + "esbuild": "^0.13.12" + }, + "packageManager": "yarn@3.1.0" } diff --git a/yarn.lock b/yarn.lock index 1045915..48673f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,1198 +1,2507 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.12.11": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503" - integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/helper-validator-identifier@^7.14.5": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@rollup/plugin-node-resolve@^11.0.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@types/accepts@*": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" - integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== - dependencies: - "@types/node" "*" - -"@types/body-parser@*": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.1.tgz#0c0174c42a7d017b818303d4b5d969cb0b75929c" - integrity sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/command-line-args@^5.0.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" - integrity sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA== - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/content-disposition@*": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.4.tgz#de48cf01c79c9f1560bcfd8ae43217ab028657f8" - integrity sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ== - -"@types/cookies@*": - version "0.7.7" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" - integrity sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA== - dependencies: - "@types/connect" "*" - "@types/express" "*" - "@types/keygrip" "*" - "@types/node" "*" - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/express-serve-static-core@^4.17.18": - version "4.17.24" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz#ea41f93bf7e0d59cd5a76665068ed6aab6815c07" - integrity sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" - integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/http-assert@*": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" - integrity sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA== - -"@types/http-errors@*": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.1.tgz#e81ad28a60bee0328c6d2384e029aec626f1ae67" - integrity sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q== - -"@types/keygrip@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" - integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== - -"@types/koa-compose@*": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" - integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== - dependencies: - "@types/koa" "*" - -"@types/koa@*", "@types/koa@^2.11.6": - version "2.13.4" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.4.tgz#10620b3f24a8027ef5cbae88b393d1b31205726b" - integrity sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw== - dependencies: - "@types/accepts" "*" - "@types/content-disposition" "*" - "@types/cookies" "*" - "@types/http-assert" "*" - "@types/http-errors" "*" - "@types/keygrip" "*" - "@types/koa-compose" "*" - "@types/node" "*" - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/node@*": - version "16.11.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.0.tgz#4b95f2327bacd1ef8f08d8ceda193039c5d7f52e" - integrity sha512-8MLkBIYQMuhRBQzGN9875bYsOhPnf/0rgXGo66S2FemHkhbn9qtsz9ywV1iCG+vbjigE4WUNVvw37Dx+L0qsPg== - -"@types/parse5@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.1.tgz#f8ae4fbcd2b9ba4ff934698e28778961f9cb22ca" - integrity sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA== - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/serve-static@*": - version "1.13.10" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" - integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/ws@^7.4.0": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" - -"@web/config-loader@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@web/config-loader/-/config-loader-0.1.3.tgz#8325ea54f75ef2ee7166783e64e66936db25bff7" - integrity sha512-XVKH79pk4d3EHRhofete8eAnqto1e8mCRAqPV00KLNFzCWSe8sWmLnqKCqkPNARC6nksMaGrATnA5sPDRllMpQ== - dependencies: - semver "^7.3.4" - -"@web/dev-server-core@^0.3.16": - version "0.3.16" - resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.3.16.tgz#7404383d05031f462a29f578dc35948d0af35344" - integrity sha512-nj6liCErIGtpuZYPf6QaxGQ9nlaHd8Cf/NBcRhogskvjOVFkF3FS9xpjRw3WidkmOQnk+D0ZGCeXjtTibgy5CA== - dependencies: - "@types/koa" "^2.11.6" - "@types/ws" "^7.4.0" - "@web/parse5-utils" "^1.2.0" - chokidar "^3.4.3" - clone "^2.1.2" - es-module-lexer "^0.9.0" - get-stream "^6.0.0" - is-stream "^2.0.0" - isbinaryfile "^4.0.6" - koa "^2.13.0" - koa-etag "^4.0.0" - koa-send "^5.0.1" - koa-static "^5.0.0" - lru-cache "^6.0.0" - mime-types "^2.1.27" - parse5 "^6.0.1" - picomatch "^2.2.2" - ws "^7.4.2" - -"@web/dev-server-rollup@^0.3.11": - version "0.3.11" - resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.3.11.tgz#1bd7fc906d028ede33e95a188cb4e8080074f343" - integrity sha512-heDmLrmV5bNap+fkAJdOKDqVG2ZpXu86CfN3dZqaUgjUMNTLsvgWI2CikD9+QV0tSstfXXwYUuTVeNIEvNjTcA== - dependencies: - "@web/dev-server-core" "^0.3.16" - nanocolors "^0.2.1" - parse5 "^6.0.1" - rollup "^2.58.0" - whatwg-url "^9.0.0" - -"@web/dev-server@^0.1.25": - version "0.1.25" - resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.1.25.tgz#e25120041560c9584d6dfd87b77a28d722991ee7" - integrity sha512-9ZMUDDIP3QzciF7aoY5x8plOwx2zCWbX2OfPrryKxQx/tQmHb+Z+Z6nLvGtNZZ2KAfHIxhXJXOduRBHxTgIkzg== - dependencies: - "@babel/code-frame" "^7.12.11" - "@rollup/plugin-node-resolve" "^11.0.1" - "@types/command-line-args" "^5.0.0" - "@web/config-loader" "^0.1.3" - "@web/dev-server-core" "^0.3.16" - "@web/dev-server-rollup" "^0.3.11" - camelcase "^6.2.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.1" - debounce "^1.2.0" - deepmerge "^4.2.2" - ip "^1.1.5" - nanocolors "^0.2.1" - open "^8.0.2" - portfinder "^1.0.28" - -"@web/parse5-utils@^1.2.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.3.0.tgz#e2e9e98b31a4ca948309f74891bda8d77399f6bd" - integrity sha512-Pgkx3ECc8EgXSlS5EyrgzSOoUbM6P8OKS471HLAyvOBcP1NCBn0to4RN/OaKASGq8qa3j+lPX9H14uA5AHEnQg== - dependencies: - "@types/parse5" "^6.0.1" - parse5 "^6.0.1" - -accepts@^1.3.5: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -angular-animate@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.8.2.tgz#a3045e523ffb8d7fcbebd3cb68d1fdd474665ced" - integrity sha512-Jbr9+grNMs9Kj57xuBU3Ju3NOPAjS1+g2UAwwDv7su1lt0/PLDy+9zEwDiu8C8xJceoTbmBNKiWGPJGBdCQLlA== - -angular-aria@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.8.2.tgz#3e5d546e549d8bddcf0b8031c677d3129d82a76d" - integrity sha512-xWT1Lm+Xug2GM6nGNMioBP4hXt3sj2eGaExa4cVCZUYSVWezgyuD1RiLgzJzwTkBGYplHQUzQaz3yDY8jVI6yQ== - -angular-material@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.2.3.tgz#e942468bdccbbe99e1f88d680cd4bff3e4803b80" - integrity sha512-Xx5WC8OLbPmMegnl8Mrex5YtF/fEXwwxnESIeKQvyL6ljDeC41jrSxpYSiM3OUeoNY3ySE1G6M63up3IBsFzNQ== - -angular-messages@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.8.2.tgz#47f0cf913030bc2231423ab9388acc14dd931837" - integrity sha512-M1qNh/30cLJi4yJJ+3YB8saPonRcavz5Dquqz0T/aUySKJhIkUoeCkmF+BcLH4SJ5PBp04yy4CZUUeNRVi7jZA== - -angular@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.2.tgz#5983bbb5a9fa63e213cb7749199e0d352de3a2f1" - integrity sha512-IauMOej2xEe7/7Ennahkbb5qd/HFADiNuLSESz9Q27inmi32zB0lnAsFeLEWcox3Gd1F6YhNd1CP7/9IukJ0Gw== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -cache-content-type@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" - integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== - dependencies: - mime-types "^2.1.18" - ylru "^1.2.0" - -camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@^3.4.3: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -clone@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -command-line-args@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.0.tgz#087b02748272169741f1fd7c785b295df079b9be" - integrity sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.1.tgz#c908e28686108917758a49f45efb4f02f76bc03f" - integrity sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA== - dependencies: - array-back "^4.0.1" - chalk "^2.4.2" - table-layout "^1.0.1" - typical "^5.2.0" - -content-disposition@~0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -cookies@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" - integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow== - dependencies: - depd "~2.0.0" - keygrip "~1.1.0" - -debounce@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - -debug@^3.1.0, debug@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.1, debug@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -deep-equal@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@^2.0.0, depd@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -destroy@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -encodeurl@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -esbuild-android-arm64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.7.tgz#528886c36968aa6ab6496392d419654dda88f092" - integrity sha512-yqCTKzmm3jiUXgi0yeKhvwZCZTqClUXwwMRAntcM9u/xvXhmpw0V0Z4qDEpnkmF2NCMzmJRH+DAAQ5whuf3CYA== - -esbuild-darwin-64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.7.tgz#32cf420d43ca448e7741a90d0d4c6dc5385969da" - integrity sha512-MvsgMUWzq5FxoeJLSavw3rgQbaC55A8QTI1U2/8MWamtAeDKyzWQnglcsF0/TkjGLaKEqS0ZLo8akJ8q34BCtw== - -esbuild-darwin-arm64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.7.tgz#c80f0b62c8ae4710b17090f507037aeae73e9016" - integrity sha512-tuP+dpIzXj17UC17VkHFDAH5nB7MajJK7sF8Fz4iVo8cml8YXj3MeNtjjLmx9YFvPs4XW3hFw1eqZJ06h2ssIA== - -esbuild-freebsd-64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.7.tgz#0b826a9655446c0d0a01a4a996d450e5cb0e033a" - integrity sha512-p07TrpkCJJyAXXCXFm2IpAvyASUTcuT0OF43riEsgjuRJmtaNBOUENecr2B2k/zd9wkGz6UyxxtnFntaBttkDg== - -esbuild-freebsd-arm64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.7.tgz#f9c980ce7e71e6702f82706a6244959eba2b80dc" - integrity sha512-MCtfBRkE1GwAnjVoWPYoZ+S/+zanzWxAJVER1/8jmWobCXJG0w+YM2IXQ2fN4T9U96RusFWQDMJVoACnqhIAzg== - -esbuild-linux-32@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.7.tgz#3d9d704452ed13da20771537bf30f695b9f80327" - integrity sha512-HM4d16XbqToo93LPrgzkiLgX3Xgr9Mw67tEM8vjhHDx18JnaZqPdIsl5ZfCqRGHlLUq+GdFKl6+dH7WlsiWMCA== - -esbuild-linux-64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.7.tgz#ce5c7b964990fdb2713ce816f0a24ffffd96942c" - integrity sha512-krgiIEyqcS0kfTjptGEQzdYwiEmmqpmiZHlKqZILVuU5BaIVWCBMmVx20HH9waJw1yT0Ao4fZTZ9kg8s/pKAYA== - -esbuild-linux-arm64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.7.tgz#53a53f43669ef705c925bf275491d507cb77b06b" - integrity sha512-aM2BUTdbtzEUOuLqDusGCuWQRqc0JazgbA/6+Q9xhUgNLHGUMAsu4C5G0qPnJCTlWGZX+bcQYma6wFVEp9ibBg== - -esbuild-linux-arm@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.7.tgz#3372ea117517aa3194ed1622305ab76bf2550b1d" - integrity sha512-GOAt1brGG14mmQx2sRD3wHi3rih94OzhmDRVyo7JvlSmWOfEczPf7zL7YfmgjuktvvuLTERtTJzaih7nyCwPOg== - -esbuild-linux-mips64le@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.7.tgz#c431291deecb949a4cdbbab0bc01b6b4a962104a" - integrity sha512-+UJq6cxpc2ldaQFdpEDrBhqhluXsqCNlWiHccIjq25r+3YbFg0c/RJEypoVU7tjhGXUGWyWWQ7SLkzHYpf+Nsg== - -esbuild-linux-ppc64le@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.7.tgz#d47b2322ac1ad61669045d5f95181d4f0d9744d2" - integrity sha512-6zwpliO4ZZtodDYM1JJEmSMpkd07I8bnNOKoHe7TOs9VhylXJooHh5ObSbSvk3FxCBs+jL5bxb24p10/Cg4RGw== - -esbuild-netbsd-64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.7.tgz#9c9fed5dfc2f3656de024496f10928368a29ea10" - integrity sha512-CfTHeTfJWlwjgfpApXYvECytLD6BzTWovLE0+28KT7bjU5fM4ieDYzRvjWjFAOB2X6DWpaoQnJAlhJirQBW0EQ== - -esbuild-openbsd-64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.7.tgz#fc039ce363b0ad5617a82dc9d312fccebd950070" - integrity sha512-qfW+f0MQfl72zVwgbV00I1kAP2zty+N031cNnQINcBmzHOSbEbaBQbUM0kawq+wdfgS/Xmppgf7nD1H8GWAvow== - -esbuild-sunos-64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.7.tgz#ad85a2f2cd38b6e920f2ad07ebc134cdba92e26d" - integrity sha512-fVRM9mV0wAYLt92IqzudxACMLJZRQFx1oJsNeU4fPFmUxIkYE4C7G7z9vqI2eu9bpDo1fA+3+5djo/T/28Mckg== - -esbuild-windows-32@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.7.tgz#146b416c5172a2c252ce29f899c0c8f1a20eac50" - integrity sha512-v3csjeQtlHHWS1q/tE9rTRCSSU/fGvJVh1l7gkS93ysAaIMeC0j9Q0h2PxFpQ6yxuwftuDYfQdnkVGcqjkKM8A== - -esbuild-windows-64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.7.tgz#9eaffae2204263a7b35313ea51a6a6e5a5e0bb48" - integrity sha512-vk+yv/vYpHZP0vxSaxaA4EMaicuxy4E435EXkbsgk5UgpcQgSP0CVlIeaqtgfSM3IwGnpbagOirRVqqZqxyMDQ== - -esbuild-windows-arm64@0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.7.tgz#6937647f05528248b1634027d839ae81ffdde8c2" - integrity sha512-0Fp+IeG5qWLCK+U6d8L9/SnXkI6f3JMtauSQ8HHzw3Fl0pZ+VImUAUWZ3g2fhthNqp+t8dB3n238CJD6XBn15w== - -esbuild@^0.13.7: - version "0.13.7" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.7.tgz#ee6e04da3c0ca34f35a05dea649caa48686c92fb" - integrity sha512-Ok3w+Pc9SNdNVEEJUUx9OvNZHwFyoKS0N+ceytfUB3wh/HxhRkOEc9dO8KR9AjfpFI82/Wg258GRDs1/8SFgKQ== - optionalDependencies: - esbuild-android-arm64 "0.13.7" - esbuild-darwin-64 "0.13.7" - esbuild-darwin-arm64 "0.13.7" - esbuild-freebsd-64 "0.13.7" - esbuild-freebsd-arm64 "0.13.7" - esbuild-linux-32 "0.13.7" - esbuild-linux-64 "0.13.7" - esbuild-linux-arm "0.13.7" - esbuild-linux-arm64 "0.13.7" - esbuild-linux-mips64le "0.13.7" - esbuild-linux-ppc64le "0.13.7" - esbuild-netbsd-64 "0.13.7" - esbuild-openbsd-64 "0.13.7" - esbuild-sunos-64 "0.13.7" - esbuild-windows-32 "0.13.7" - esbuild-windows-64 "0.13.7" - esbuild-windows-arm64 "0.13.7" - -escape-html@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -etag@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -fresh@~0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -http-assert@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" - integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== - dependencies: - deep-equal "~1.0.1" - http-errors "~1.8.0" - -http-errors@^1.6.3, http-errors@^1.7.3, http-errors@~1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" - integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -inherits@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== - dependencies: - has "^1.0.3" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isbinaryfile@^4.0.6: - version "4.0.8" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" - integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -keygrip@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" - integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== - dependencies: - tsscmp "1.0.6" - -koa-compose@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" - integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== - -koa-convert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" - integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== - dependencies: - co "^4.6.0" - koa-compose "^4.1.0" - -koa-etag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/koa-etag/-/koa-etag-4.0.0.tgz#2c2bb7ae69ca1ac6ced09ba28dcb78523c810414" - integrity sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg== - dependencies: - etag "^1.8.1" - -koa-send@^5.0.0, koa-send@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/koa-send/-/koa-send-5.0.1.tgz#39dceebfafb395d0d60beaffba3a70b4f543fe79" - integrity sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ== - dependencies: - debug "^4.1.1" - http-errors "^1.7.3" - resolve-path "^1.4.0" - -koa-static@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/koa-static/-/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" - integrity sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ== - dependencies: - debug "^3.1.0" - koa-send "^5.0.0" - -koa@^2.13.0: - version "2.13.3" - resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.3.tgz#a62641ba753ec54bee2c6da1a4f294c5fac35407" - integrity sha512-XhXIoR+ylAwqG3HhXwnMPQAM/4xfywz52OvxZNmxmTWGGHsvmBv4NSIhURha6yMuvEex1WdtplUTHnxnKpQiGw== - dependencies: - accepts "^1.3.5" - cache-content-type "^1.0.0" - content-disposition "~0.5.2" - content-type "^1.0.4" - cookies "~0.8.0" - debug "^4.3.2" - delegates "^1.0.0" - depd "^2.0.0" - destroy "^1.0.4" - encodeurl "^1.0.2" - escape-html "^1.0.3" - fresh "~0.5.2" - http-assert "^1.3.0" - http-errors "^1.6.3" - is-generator-function "^1.0.7" - koa-compose "^4.1.0" - koa-convert "^2.0.0" - on-finished "^2.3.0" - only "~0.0.2" - parseurl "^1.3.2" - statuses "^1.5.0" - type-is "^1.6.16" - vary "^1.1.2" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash@^4.17.14: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mime-db@1.50.0: - version "1.50.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" - integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== - -mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.24: - version "2.1.33" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" - integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== - dependencies: - mime-db "1.50.0" - -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -moment@^2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nanocolors@^0.2.1: - version "0.2.13" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b" - integrity sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA== - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -on-finished@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -only@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" - integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q= - -open@^8.0.2: - version "8.3.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.3.0.tgz#fdef1cdfe405e60dec8ebd18889e7e812f39c59f" - integrity sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-is-absolute@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -portfinder@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -resolve-path@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" - integrity sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc= - dependencies: - http-errors "~1.6.2" - path-is-absolute "1.0.1" - -resolve@^1.19.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -rollup@^2.58.0: - version "2.58.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb" - integrity sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw== - optionalDependencies: - fsevents "~2.3.2" - -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -semver@^7.3.4: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -table-layout@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tsscmp@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== - -type-is@^1.6.16: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -vary@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-url@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-9.1.0.tgz#1b112cf237d72cd64fa7882b9c3f6234a1c3050d" - integrity sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA== - dependencies: - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -ws@^7.4.2: - version "7.5.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" - integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -ylru@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f" - integrity sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ== +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 5 + cacheKey: 8 + +"@babel/code-frame@npm:^7.12.11": + version: 7.15.8 + resolution: "@babel/code-frame@npm:7.15.8" + dependencies: + "@babel/highlight": ^7.14.5 + checksum: d75950f0e0925b33ab5e870079134509c13bcdbf96c8bf4d0dea91606775bc044258c762104ab20882fda3b07cbff24176ed77dfb57af5a901bde33ddfe690bb + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.14.5": + version: 7.15.7 + resolution: "@babel/helper-validator-identifier@npm:7.15.7" + checksum: f041c28c531d1add5cc345b25d5df3c29c62bce3205b4d4a93dcd164ccf630350acba252d374fad8f5d8ea526995a215829f27183ba7ce7ce141843bf23068a6 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/highlight@npm:7.14.5" + dependencies: + "@babel/helper-validator-identifier": ^7.14.5 + chalk: ^2.0.0 + js-tokens: ^4.0.0 + checksum: 4e4b22fb886c939551d73307de16232c186fdb4d8ec8f514541b058feaecdba5234788a0740ca5bcd28777f4108596c39ac4b7463684c63b3812f6071e3fb88f + languageName: node + linkType: hard + +"@gar/promisify@npm:^1.0.1": + version: 1.1.2 + resolution: "@gar/promisify@npm:1.1.2" + checksum: d05081e0887a49c178b75ee3067bd6ee086f73c154d121b854fb2e044e8a89cb1cbb6de3a0dd93a519b80f0531fda68b099dd7256205f7fbb3490324342f2217 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^1.0.0": + version: 1.0.0 + resolution: "@npmcli/fs@npm:1.0.0" + dependencies: + "@gar/promisify": ^1.0.1 + semver: ^7.3.5 + checksum: f2b4990107dd2a5b18794c89aaff6f62f3a67883d49a20602fdfc353cbc7f8c5fd50edeffdc769e454900e01b8b8e43d0b9eb524d00963d69f3c829be1a2e8ac + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^1.0.1": + version: 1.1.2 + resolution: "@npmcli/move-file@npm:1.1.2" + dependencies: + mkdirp: ^1.0.4 + rimraf: ^3.0.2 + checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 + languageName: node + linkType: hard + +"@rollup/plugin-node-resolve@npm:^11.0.1": + version: 11.2.1 + resolution: "@rollup/plugin-node-resolve@npm:11.2.1" + dependencies: + "@rollup/pluginutils": ^3.1.0 + "@types/resolve": 1.17.1 + builtin-modules: ^3.1.0 + deepmerge: ^4.2.2 + is-module: ^1.0.0 + resolve: ^1.19.0 + peerDependencies: + rollup: ^1.20.0||^2.0.0 + checksum: 6f3b3ecf9a0596a5db4212984bdeb13bb7612693602407e9457ada075dea5a5f2e4e124c592352cf27066a88b194de9b9a95390149b52cf335d5b5e17b4e265b + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^3.1.0": + version: 3.1.0 + resolution: "@rollup/pluginutils@npm:3.1.0" + dependencies: + "@types/estree": 0.0.39 + estree-walker: ^1.0.1 + picomatch: ^2.2.2 + peerDependencies: + rollup: ^1.20.0||^2.0.0 + checksum: 8be16e27863c219edbb25a4e6ec2fe0e1e451d9e917b6a43cf2ae5bc025a6b8faaa40f82a6e53b66d0de37b58ff472c6c3d57a83037ae635041f8df959d6d9aa + languageName: node + linkType: hard + +"@tootallnate/once@npm:1": + version: 1.1.2 + resolution: "@tootallnate/once@npm:1.1.2" + checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 + languageName: node + linkType: hard + +"@types/accepts@npm:*": + version: 1.3.5 + resolution: "@types/accepts@npm:1.3.5" + dependencies: + "@types/node": "*" + checksum: 590b7580570534a640510c071e09074cf63b5958b237a728f94322567350aea4d239f8a9d897a12b15c856b992ee4d7907e9812bb079886af2c00714e7fb3f60 + languageName: node + linkType: hard + +"@types/body-parser@npm:*": + version: 1.19.1 + resolution: "@types/body-parser@npm:1.19.1" + dependencies: + "@types/connect": "*" + "@types/node": "*" + checksum: 2990656ea2de81f3529a3359a79a13b67feb4c627caf7a367fdc0017a178e567b0cc410546bdd219104ad7197c5ee5a90b70193f5253839ea43d9cdb2d2dacee + languageName: node + linkType: hard + +"@types/command-line-args@npm:^5.0.0": + version: 5.2.0 + resolution: "@types/command-line-args@npm:5.2.0" + checksum: 423121d2d083765f5b78d090115f3be82d53a39cec9de63719cbd07021e6330fab19b75e2290af1f7dda84efd7964dc498eb10b2b465991de27045db95aa1eef + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.35 + resolution: "@types/connect@npm:3.4.35" + dependencies: + "@types/node": "*" + checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 + languageName: node + linkType: hard + +"@types/content-disposition@npm:*": + version: 0.5.4 + resolution: "@types/content-disposition@npm:0.5.4" + checksum: eee083f930fedb125acf0d658653b7d349cdfe93ef78d5613450c4817e4882eb0c0e59b4ab2bc57997bb59f87db9f734dc234644509bb3df51f8388635daf1e1 + languageName: node + linkType: hard + +"@types/cookies@npm:*": + version: 0.7.7 + resolution: "@types/cookies@npm:0.7.7" + dependencies: + "@types/connect": "*" + "@types/express": "*" + "@types/keygrip": "*" + "@types/node": "*" + checksum: d3759efc1182cb0651808570ae13638677b67b0ea724eef7b174e58ffe6ea044b62c7c2715e532f76f88fce4dd8101ed32ac6fbb73226db654017924e8a2a1e6 + languageName: node + linkType: hard + +"@types/estree@npm:0.0.39": + version: 0.0.39 + resolution: "@types/estree@npm:0.0.39" + checksum: 412fb5b9868f2c418126451821833414189b75cc6bf84361156feed733e3d92ec220b9d74a89e52722e03d5e241b2932732711b7497374a404fad49087adc248 + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:^4.17.18": + version: 4.17.24 + resolution: "@types/express-serve-static-core@npm:4.17.24" + dependencies: + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + checksum: 2f0b4711261d663bf93df4dbd6f0270e84d1624278e2f3722cf050e2e6be521b6d385bb69bd0eac14abbf1119d4b308a731ec746fb2c3848697658e9e49e5676 + languageName: node + linkType: hard + +"@types/express@npm:*": + version: 4.17.13 + resolution: "@types/express@npm:4.17.13" + dependencies: + "@types/body-parser": "*" + "@types/express-serve-static-core": ^4.17.18 + "@types/qs": "*" + "@types/serve-static": "*" + checksum: 12a2a0e6c4b993fc0854bec665906788aea0d8ee4392389d7a98a5de1eefdd33c9e1e40a91f3afd274011119c506f7b4126acb97fae62ae20b654974d44cba12 + languageName: node + linkType: hard + +"@types/http-assert@npm:*": + version: 1.5.3 + resolution: "@types/http-assert@npm:1.5.3" + checksum: 9553e5a0b8bcfdac4b51d3fa3b89a91b5450171861a667a5b4c47204e0f4a1ca865d97396e6ceaf220e87b64d06b7a8bad7bfba15ef97acb41a87507c9940dbc + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 1.8.1 + resolution: "@types/http-errors@npm:1.8.1" + checksum: f0710ea284a7eb5584c5e324b1dc810bc971e1adc94deff63a0c434a8a75adc020487e3e6d511cd82cef101bbcf090b8f56995c143d123e0c374dc0f61be3a61 + languageName: node + linkType: hard + +"@types/keygrip@npm:*": + version: 1.0.2 + resolution: "@types/keygrip@npm:1.0.2" + checksum: 60bc2738a4f107070ee3d96f44709cb38f3a96c7ccabab09f56c1b2b4d85f869fd8fb9f1f2937e863d0e9e781f005c2223b823bf32b859185b4f52370c352669 + languageName: node + linkType: hard + +"@types/koa-compose@npm:*": + version: 3.2.5 + resolution: "@types/koa-compose@npm:3.2.5" + dependencies: + "@types/koa": "*" + checksum: 5d1147c4b057eb158195f442f0384f06503f3e69dba99fb517b30a05261a9f92928945c12bb1cfc17a5b7d60db003f38b455a3a9b125f12e4fc81fffa396b3cf + languageName: node + linkType: hard + +"@types/koa@npm:*, @types/koa@npm:^2.11.6": + version: 2.13.4 + resolution: "@types/koa@npm:2.13.4" + dependencies: + "@types/accepts": "*" + "@types/content-disposition": "*" + "@types/cookies": "*" + "@types/http-assert": "*" + "@types/http-errors": "*" + "@types/keygrip": "*" + "@types/koa-compose": "*" + "@types/node": "*" + checksum: 35a54e68944f74d6763537d55d01f8ed870d0ef816b5f27fce97a317b237540b7c249dc4a54abab44ad0afd0ce010b335122c9efb490b9589affe7929201d707 + languageName: node + linkType: hard + +"@types/mime@npm:^1": + version: 1.3.2 + resolution: "@types/mime@npm:1.3.2" + checksum: 0493368244cced1a69cb791b485a260a422e6fcc857782e1178d1e6f219f1b161793e9f87f5fae1b219af0f50bee24fcbe733a18b4be8fdd07a38a8fb91146fd + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 16.11.0 + resolution: "@types/node@npm:16.11.0" + checksum: 194ae80ec72f664e15e03c33f116be96aa1e85b167a19e31003c53ddfc36dabd65744e9a76c1d46b7ce2e5981d2ccb8e84a85c3ec9ac89f1471daaa885bdcfd0 + languageName: node + linkType: hard + +"@types/parse5@npm:^6.0.1": + version: 6.0.1 + resolution: "@types/parse5@npm:6.0.1" + checksum: 752d4968b03084b783995c50280707f64c149b7e3d59e9fcdaa82c8c54b37dc56023a8b11c7d60dbb359f2277ef165970bfc7d79231863456bf25d102c09b33f + languageName: node + linkType: hard + +"@types/qs@npm:*": + version: 6.9.7 + resolution: "@types/qs@npm:6.9.7" + checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.4 + resolution: "@types/range-parser@npm:1.2.4" + checksum: b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 + languageName: node + linkType: hard + +"@types/resolve@npm:1.17.1": + version: 1.17.1 + resolution: "@types/resolve@npm:1.17.1" + dependencies: + "@types/node": "*" + checksum: dc6a6df507656004e242dcb02c784479deca516d5f4b58a1707e708022b269ae147e1da0521f3e8ad0d63638869d87e0adc023f0bd5454aa6f72ac66c7525cf5 + languageName: node + linkType: hard + +"@types/serve-static@npm:*": + version: 1.13.10 + resolution: "@types/serve-static@npm:1.13.10" + dependencies: + "@types/mime": ^1 + "@types/node": "*" + checksum: eaca858739483e3ded254cad7d7a679dc2c8b3f52c8bb0cd845b3b7eb1984bde0371fdcb0a5c83aa12e6daf61b6beb762545021f520f08a1fe882a3fa4ea5554 + languageName: node + linkType: hard + +"@types/ws@npm:^7.4.0": + version: 7.4.7 + resolution: "@types/ws@npm:7.4.7" + dependencies: + "@types/node": "*" + checksum: b4c9b8ad209620c9b21e78314ce4ff07515c0cadab9af101c1651e7bfb992d7fd933bd8b9c99d110738fd6db523ed15f82f29f50b45510288da72e964dedb1a3 + languageName: node + linkType: hard + +"@web/config-loader@npm:^0.1.3": + version: 0.1.3 + resolution: "@web/config-loader@npm:0.1.3" + dependencies: + semver: ^7.3.4 + checksum: 278554bd00b757eaf296ba904a224c61d4698df1a5d6c04931c40bc6bb308e81e767055cbf283b763cc530aae6b200bb950aa19eb41aa8979a3a2b29e5f0ac7a + languageName: node + linkType: hard + +"@web/dev-server-core@npm:^0.3.16": + version: 0.3.16 + resolution: "@web/dev-server-core@npm:0.3.16" + dependencies: + "@types/koa": ^2.11.6 + "@types/ws": ^7.4.0 + "@web/parse5-utils": ^1.2.0 + chokidar: ^3.4.3 + clone: ^2.1.2 + es-module-lexer: ^0.9.0 + get-stream: ^6.0.0 + is-stream: ^2.0.0 + isbinaryfile: ^4.0.6 + koa: ^2.13.0 + koa-etag: ^4.0.0 + koa-send: ^5.0.1 + koa-static: ^5.0.0 + lru-cache: ^6.0.0 + mime-types: ^2.1.27 + parse5: ^6.0.1 + picomatch: ^2.2.2 + ws: ^7.4.2 + checksum: fb67ad43e4afa628e87a9adaac0c9083b429eebafe7698300a259e3b380724f4aa94d2682af4c1e866b8115fb49af3dab6575bed4bef150c9f3c225e7920d496 + languageName: node + linkType: hard + +"@web/dev-server-core@npm:^0.3.17": + version: 0.3.17 + resolution: "@web/dev-server-core@npm:0.3.17" + dependencies: + "@types/koa": ^2.11.6 + "@types/ws": ^7.4.0 + "@web/parse5-utils": ^1.2.0 + chokidar: ^3.4.3 + clone: ^2.1.2 + es-module-lexer: ^0.9.0 + get-stream: ^6.0.0 + is-stream: ^2.0.0 + isbinaryfile: ^4.0.6 + koa: ^2.13.0 + koa-etag: ^4.0.0 + koa-send: ^5.0.1 + koa-static: ^5.0.0 + lru-cache: ^6.0.0 + mime-types: ^2.1.27 + parse5: ^6.0.1 + picomatch: ^2.2.2 + ws: ^7.4.2 + checksum: 6d920dbbe2b736736d61ae529ffaff31631ffce2319025f63fc783e842654e92fc3b30c92460d1e656ca6650713c74e722c05e6e0d6add5b740be808525d2680 + languageName: node + linkType: hard + +"@web/dev-server-rollup@npm:^0.3.12": + version: 0.3.12 + resolution: "@web/dev-server-rollup@npm:0.3.12" + dependencies: + "@web/dev-server-core": ^0.3.16 + nanocolors: ^0.2.1 + parse5: ^6.0.1 + rollup: ^2.58.0 + whatwg-url: ^11.0.0 + checksum: bdaeae3380b7eaff992ebadd5b95c621e68d3de299302e5fe33bc7cc6e308e8a539197436aacc2d00b726b18e3bf8d6e4b5a22920eff09a1b22ee98b5a239df2 + languageName: node + linkType: hard + +"@web/dev-server@npm:^0.1.27": + version: 0.1.27 + resolution: "@web/dev-server@npm:0.1.27" + dependencies: + "@babel/code-frame": ^7.12.11 + "@rollup/plugin-node-resolve": ^11.0.1 + "@types/command-line-args": ^5.0.0 + "@web/config-loader": ^0.1.3 + "@web/dev-server-core": ^0.3.17 + "@web/dev-server-rollup": ^0.3.12 + camelcase: ^6.2.0 + command-line-args: ^5.1.1 + command-line-usage: ^6.1.1 + debounce: ^1.2.0 + deepmerge: ^4.2.2 + ip: ^1.1.5 + nanocolors: ^0.2.1 + open: ^8.0.2 + portfinder: ^1.0.28 + bin: + wds: dist/bin.js + web-dev-server: dist/bin.js + checksum: e7d077da689b98c0030db4cf15455d41f514c3925cf9970527797138f7e9f4f8867c64c4161a96121c28759f05ad96ad3611b5c3a76ffb5cf28ceaee20a1d8d0 + languageName: node + linkType: hard + +"@web/parse5-utils@npm:^1.2.0": + version: 1.3.0 + resolution: "@web/parse5-utils@npm:1.3.0" + dependencies: + "@types/parse5": ^6.0.1 + parse5: ^6.0.1 + checksum: 379849c1b0a060d50037c7dc90d27231dc68f57b1034d87f89129c3cd87fa27d3a0f8e550e1ab3be00bb1c0d440a8fa95c153a481ed8c2c705fd46fbc8a8433d + languageName: node + linkType: hard + +"abbrev@npm:1": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + languageName: node + linkType: hard + +"accepts@npm:^1.3.5": + version: 1.3.7 + resolution: "accepts@npm:1.3.7" + dependencies: + mime-types: ~2.1.24 + negotiator: 0.6.2 + checksum: 27fc8060ffc69481ff6719cd3ee06387d2b88381cb0ce626f087781bbd02201a645a9febc8e7e7333558354b33b1d2f922ad13560be4ec1b7ba9e76fc1c1241d + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: 4 + checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.1.3": + version: 4.1.4 + resolution: "agentkeepalive@npm:4.1.4" + dependencies: + debug: ^4.1.0 + depd: ^1.1.2 + humanize-ms: ^1.2.1 + checksum: d49c24d4b333e9507119385895a583872f4f53d62764a89be165926e824056a126955bae4a6d3c6f7cd26f4089621a40f7b27675f7868214d82118f744b9e82d + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: ^2.0.0 + indent-string: ^4.0.0 + checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + languageName: node + linkType: hard + +"angular-animate@npm:^1.8.2": + version: 1.8.2 + resolution: "angular-animate@npm:1.8.2" + checksum: 6590940545a05bf678ed8c71cfe19409abe4ca634e73c29f0006bc1ce5bafe645da87bc2f483f09584653881201bac2562c8f39d7aeea2c2aea7f6a1f3a0bbde + languageName: node + linkType: hard + +"angular-aria@npm:^1.8.2": + version: 1.8.2 + resolution: "angular-aria@npm:1.8.2" + checksum: 040fb2ee5d652c164b5f2c6a062b345c6cc3f8a344b2ed785d95dff66a3a50bf45c7113a2b8028a29ef2868ce378819c53aa2a2b8a3f3635d2a499bf7d2f9a26 + languageName: node + linkType: hard + +"angular-material@npm:^1.2.3": + version: 1.2.3 + resolution: "angular-material@npm:1.2.3" + peerDependencies: + angular: ^1.7.2 + angular-animate: ^1.7.2 + angular-aria: ^1.7.2 + angular-messages: ^1.7.2 + checksum: b6ab901912831d0ffb9b82b08fd19a7fb8f83556c8a638d40bddb95695e55ca6afa0a6ead39f671c3cf0c6fdc71d704b818fabc214f4f824cdd7e6c436814eb6 + languageName: node + linkType: hard + +"angular-messages@npm:^1.8.2": + version: 1.8.2 + resolution: "angular-messages@npm:1.8.2" + checksum: 0d20692b3185a72f6f28abec34aa8262dc46785422ce0e7108b9e8aa36d7a6057bc085902b00e9d97a25ebcd09f231369a605b03bc52e05392e2bee6e5b7079e + languageName: node + linkType: hard + +"angular@npm:^1.8.2": + version: 1.8.2 + resolution: "angular@npm:1.8.2" + checksum: 35ea81a23b8c0231a17c90a8aa69f63856bc8ab767c15131089bcc8b55435ed8c2ad803d60ad86f187a9235708d73cc76e1310abae8cad7c87127c19a3e4f932 + languageName: node + linkType: hard + +"ansi-regex@npm:^2.0.0": + version: 2.1.1 + resolution: "ansi-regex@npm:2.1.1" + checksum: 190abd03e4ff86794f338a31795d262c1dfe8c91f7e01d04f13f646f1dcb16c5800818f886047876f1272f065570ab86b24b99089f8b68a0e11ff19aed4ca8f1 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: ^1.9.0 + checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + languageName: node + linkType: hard + +"anymatch@npm:~3.1.2": + version: 3.1.2 + resolution: "anymatch@npm:3.1.2" + dependencies: + normalize-path: ^3.0.0 + picomatch: ^2.0.4 + checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3": + version: 1.2.0 + resolution: "aproba@npm:1.2.0" + checksum: 0fca141966559d195072ed047658b6e6c4fe92428c385dd38e288eacfc55807e7b4989322f030faff32c0f46bb0bc10f1e0ac32ec22d25315a1e5bbc0ebb76dc + languageName: node + linkType: hard + +"are-we-there-yet@npm:~1.1.2": + version: 1.1.7 + resolution: "are-we-there-yet@npm:1.1.7" + dependencies: + delegates: ^1.0.0 + readable-stream: ^2.0.6 + checksum: 70d251719c969b2745bfe5ddf3ebaefa846a636e90a6d5212573676af5d6670e15457761d4725731e19cbebdce42c4ab0cbedf23ab047f2a08274985aa10a3c7 + languageName: node + linkType: hard + +"array-back@npm:^3.0.1, array-back@npm:^3.1.0": + version: 3.1.0 + resolution: "array-back@npm:3.1.0" + checksum: 7205004fcd0f9edd926db921af901b083094608d5b265738d0290092f9822f73accb468e677db74c7c94ef432d39e5ed75a7b1786701e182efb25bbba9734209 + languageName: node + linkType: hard + +"array-back@npm:^4.0.1": + version: 4.0.2 + resolution: "array-back@npm:4.0.2" + checksum: f30603270771eeb54e5aad5f54604c62b3577a18b6db212a7272b2b6c32049121b49431f656654790ed1469411e45f387e7627c0de8fd0515995cc40df9b9294 + languageName: node + linkType: hard + +"async@npm:^2.6.2": + version: 2.6.3 + resolution: "async@npm:2.6.3" + dependencies: + lodash: ^4.17.14 + checksum: 5e5561ff8fca807e88738533d620488ac03a5c43fce6c937451f7e35f943d33ad06c24af3f681a48cca3d2b0002b3118faff0a128dc89438a9bf0226f712c499 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.2.0 + resolution: "binary-extensions@npm:2.2.0" + checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + languageName: node + linkType: hard + +"braces@npm:~3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: ^7.0.1 + checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 + languageName: node + linkType: hard + +"builtin-modules@npm:^3.1.0": + version: 3.2.0 + resolution: "builtin-modules@npm:3.2.0" + checksum: 0265aa1ba78e1a16f4e18668d815cb43fb364e6a6b8aa9189c6f44c7b894a551a43b323c40206959d2d4b2568c1f2805607ad6c88adc306a776ce6904cca6715 + languageName: node + linkType: hard + +"cacache@npm:^15.2.0": + version: 15.3.0 + resolution: "cacache@npm:15.3.0" + dependencies: + "@npmcli/fs": ^1.0.0 + "@npmcli/move-file": ^1.0.1 + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + glob: ^7.1.4 + infer-owner: ^1.0.4 + lru-cache: ^6.0.0 + minipass: ^3.1.1 + minipass-collect: ^1.0.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.2 + mkdirp: ^1.0.3 + p-map: ^4.0.0 + promise-inflight: ^1.0.1 + rimraf: ^3.0.2 + ssri: ^8.0.1 + tar: ^6.0.2 + unique-filename: ^1.1.1 + checksum: a07327c27a4152c04eb0a831c63c00390d90f94d51bb80624a66f4e14a6b6360bbf02a84421267bd4d00ca73ac9773287d8d7169e8d2eafe378d2ce140579db8 + languageName: node + linkType: hard + +"cache-content-type@npm:^1.0.0": + version: 1.0.1 + resolution: "cache-content-type@npm:1.0.1" + dependencies: + mime-types: ^2.1.18 + ylru: ^1.2.0 + checksum: 18db4d59452669ccbfd7146a1510a37eb28e9eccf18ca7a4eb603dff2edc5cccdca7498fc3042a2978f76f11151fba486eb9eb69d9afa3fb124957870aef4fd3 + languageName: node + linkType: hard + +"camelcase@npm:^6.2.0": + version: 6.2.0 + resolution: "camelcase@npm:6.2.0" + checksum: 8335cfd0ecc472eae685896a42afd8c9dacd193a91f569120b931c87deb053a1ba82102031b9b48a4dbc1d18066caeacf2e4ace8c3c7f0d02936d348dc0b5a87 + languageName: node + linkType: hard + +"chalk@npm:^2.0.0, chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: ^3.2.1 + escape-string-regexp: ^1.0.5 + supports-color: ^5.3.0 + checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 + languageName: node + linkType: hard + +"chokidar@npm:^3.4.3": + version: 3.5.2 + resolution: "chokidar@npm:3.5.2" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: d1fda32fcd67d9f6170a8468ad2630a3c6194949c9db3f6a91b16478c328b2800f433fb5d2592511b6cb145a47c013ea1cce60b432b1a001ae3ee978a8bffc2d + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + languageName: node + linkType: hard + +"clone@npm:^2.1.2": + version: 2.1.2 + resolution: "clone@npm:2.1.2" + checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 + languageName: node + linkType: hard + +"code-point-at@npm:^1.0.0": + version: 1.1.0 + resolution: "code-point-at@npm:1.1.0" + checksum: 17d5666611f9b16d64fdf48176d9b7fb1c7d1c1607a189f7e600040a11a6616982876af148230336adb7d8fe728a559f743a4e29db3747e3b1a32fa7f4529681 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: 1.1.3 + checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + languageName: node + linkType: hard + +"command-line-args@npm:^5.1.1": + version: 5.2.0 + resolution: "command-line-args@npm:5.2.0" + dependencies: + array-back: ^3.1.0 + find-replace: ^3.0.0 + lodash.camelcase: ^4.3.0 + typical: ^4.0.0 + checksum: a63dd41541fc98fcef7a5f4f63e626a6c5955fae57247b604077f1d0cfbff58c5830240880903342785a0c40952c4bbd3a977425ba3f4c7d515253296843a566 + languageName: node + linkType: hard + +"command-line-usage@npm:^6.1.1": + version: 6.1.1 + resolution: "command-line-usage@npm:6.1.1" + dependencies: + array-back: ^4.0.1 + chalk: ^2.4.2 + table-layout: ^1.0.1 + typical: ^5.2.0 + checksum: f84268a10449323cc838cec3eeaa962b0e63b93142bbeb9202e3e5406ecbbc91fd018d235a49088430f5b757fa1e9c086c3ca141583cfc3950d3fb366b0b2fed + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + languageName: node + linkType: hard + +"console-control-strings@npm:^1.0.0, console-control-strings@npm:~1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + languageName: node + linkType: hard + +"content-disposition@npm:~0.5.2": + version: 0.5.3 + resolution: "content-disposition@npm:0.5.3" + dependencies: + safe-buffer: 5.1.2 + checksum: 95bf164c0b0b8199d3f44b7631e51b37f683c6a90b9baa4315bd3d405a6d1bc81b7346f0981046aa004331fb3d7a28b629514d01fc209a5251573fc7e4d33380 + languageName: node + linkType: hard + +"content-type@npm:^1.0.4": + version: 1.0.4 + resolution: "content-type@npm:1.0.4" + checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 + languageName: node + linkType: hard + +"cookies@npm:~0.8.0": + version: 0.8.0 + resolution: "cookies@npm:0.8.0" + dependencies: + depd: ~2.0.0 + keygrip: ~1.1.0 + checksum: 806055a44f128705265b1bc6a853058da18bf80dea3654ad99be20985b1fa1b14f86c1eef73644aab8071241f8a78acd57202b54c4c5c70769fc694fbb9c4edc + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 + languageName: node + linkType: hard + +"debounce@npm:^1.2.0": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 682a89506d9e54fb109526f4da255c5546102fbb8e3ae75eef3b04effaf5d4853756aee97475cd4650641869794e44f410eeb20ace2b18ea592287ab2038519e + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2": + version: 4.3.2 + resolution: "debug@npm:4.3.2" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 820ea160e267e23c953c9ed87e7ad93494d8cda2f7349af5e7e3bb236d23707ee3022f477d5a7d2ee86ef2bf7d60aa9ab22d1f58080d7deb9dccd073585e1e43 + languageName: node + linkType: hard + +"debug@npm:^3.1.0, debug@npm:^3.1.1": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: ^2.1.1 + checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + languageName: node + linkType: hard + +"deep-equal@npm:~1.0.1": + version: 1.0.1 + resolution: "deep-equal@npm:1.0.1" + checksum: 5af8cbfcebf190491878a498caccc7dc9592f8ebd1685b976eacc3825619d222b5e929923163b92c4f414494e2b884f7ebf00c022e8198e8292deb70dd9785f4 + languageName: node + linkType: hard + +"deep-extend@npm:~0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2": + version: 4.2.2 + resolution: "deepmerge@npm:4.2.2" + checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + languageName: node + linkType: hard + +"depd@npm:^1.1.2, depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 + languageName: node + linkType: hard + +"depd@npm:^2.0.0, depd@npm:~2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a + languageName: node + linkType: hard + +"destroy@npm:^1.0.4": + version: 1.0.4 + resolution: "destroy@npm:1.0.4" + checksum: da9ab4961dc61677c709da0c25ef01733042614453924d65636a7db37308fef8a24cd1e07172e61173d471ca175371295fbc984b0af5b2b4ff47cd57bd784c03 + languageName: node + linkType: hard + +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + languageName: node + linkType: hard + +"encodeurl@npm:^1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c + languageName: node + linkType: hard + +"encoding@npm:^0.1.12": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: ^0.6.2 + checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + languageName: node + linkType: hard + +"es-module-lexer@npm:^0.9.0": + version: 0.9.3 + resolution: "es-module-lexer@npm:0.9.3" + checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 + languageName: node + linkType: hard + +"esbuild-android-arm64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-android-arm64@npm:0.13.12" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-darwin-64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-darwin-64@npm:0.13.12" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"esbuild-darwin-arm64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-darwin-arm64@npm:0.13.12" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-freebsd-64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-freebsd-64@npm:0.13.12" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"esbuild-freebsd-arm64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-freebsd-arm64@npm:0.13.12" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-linux-32@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-linux-32@npm:0.13.12" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"esbuild-linux-64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-linux-64@npm:0.13.12" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"esbuild-linux-arm64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-linux-arm64@npm:0.13.12" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-linux-arm@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-linux-arm@npm:0.13.12" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"esbuild-linux-mips64le@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-linux-mips64le@npm:0.13.12" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"esbuild-linux-ppc64le@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-linux-ppc64le@npm:0.13.12" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"esbuild-netbsd-64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-netbsd-64@npm:0.13.12" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"esbuild-openbsd-64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-openbsd-64@npm:0.13.12" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"esbuild-sunos-64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-sunos-64@npm:0.13.12" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"esbuild-windows-32@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-windows-32@npm:0.13.12" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"esbuild-windows-64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-windows-64@npm:0.13.12" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"esbuild-windows-arm64@npm:0.13.12": + version: 0.13.12 + resolution: "esbuild-windows-arm64@npm:0.13.12" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"esbuild@npm:^0.13.12": + version: 0.13.12 + resolution: "esbuild@npm:0.13.12" + dependencies: + esbuild-android-arm64: 0.13.12 + esbuild-darwin-64: 0.13.12 + esbuild-darwin-arm64: 0.13.12 + esbuild-freebsd-64: 0.13.12 + esbuild-freebsd-arm64: 0.13.12 + esbuild-linux-32: 0.13.12 + esbuild-linux-64: 0.13.12 + esbuild-linux-arm: 0.13.12 + esbuild-linux-arm64: 0.13.12 + esbuild-linux-mips64le: 0.13.12 + esbuild-linux-ppc64le: 0.13.12 + esbuild-netbsd-64: 0.13.12 + esbuild-openbsd-64: 0.13.12 + esbuild-sunos-64: 0.13.12 + esbuild-windows-32: 0.13.12 + esbuild-windows-64: 0.13.12 + esbuild-windows-arm64: 0.13.12 + dependenciesMeta: + esbuild-android-arm64: + optional: true + esbuild-darwin-64: + optional: true + esbuild-darwin-arm64: + optional: true + esbuild-freebsd-64: + optional: true + esbuild-freebsd-arm64: + optional: true + esbuild-linux-32: + optional: true + esbuild-linux-64: + optional: true + esbuild-linux-arm: + optional: true + esbuild-linux-arm64: + optional: true + esbuild-linux-mips64le: + optional: true + esbuild-linux-ppc64le: + optional: true + esbuild-netbsd-64: + optional: true + esbuild-openbsd-64: + optional: true + esbuild-sunos-64: + optional: true + esbuild-windows-32: + optional: true + esbuild-windows-64: + optional: true + esbuild-windows-arm64: + optional: true + bin: + esbuild: bin/esbuild + checksum: 7ef4ef3e8eec11b832224b8886ccea22f72e89e2d9b59ec45d03bb2a512ca725fdb06e88609884e0721a4b90d1095e3ec898bd6f39a4efa0e2c99770730e0041 + languageName: node + linkType: hard + +"escape-html@npm:^1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + languageName: node + linkType: hard + +"estree-walker@npm:^1.0.1": + version: 1.0.1 + resolution: "estree-walker@npm:1.0.1" + checksum: 7e70da539691f6db03a08e7ce94f394ce2eef4180e136d251af299d41f92fb2d28ebcd9a6e393e3728d7970aeb5358705ddf7209d52fbcb2dd4693f95dcf925f + languageName: node + linkType: hard + +"etag@npm:^1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + languageName: node + linkType: hard + +"find-replace@npm:^3.0.0": + version: 3.0.0 + resolution: "find-replace@npm:3.0.0" + dependencies: + array-back: ^3.0.1 + checksum: 6b04bcfd79027f5b84aa1dfe100e3295da989bdac4b4de6b277f4d063e78f5c9e92ebc8a1fec6dd3b448c924ba404ee051cc759e14a3ee3e825fa1361025df08 + languageName: node + linkType: hard + +"fresh@npm:~0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: ^3.0.0 + checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: latest + checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@~2.3.2#~builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.1": + version: 1.1.1 + resolution: "function-bind@npm:1.1.1" + checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a + languageName: node + linkType: hard + +"gauge@npm:~2.7.3": + version: 2.7.4 + resolution: "gauge@npm:2.7.4" + dependencies: + aproba: ^1.0.3 + console-control-strings: ^1.0.0 + has-unicode: ^2.0.0 + object-assign: ^4.1.0 + signal-exit: ^3.0.0 + string-width: ^1.0.1 + strip-ansi: ^3.0.1 + wide-align: ^1.1.0 + checksum: a89b53cee65579b46832e050b5f3a79a832cc422c190de79c6b8e2e15296ab92faddde6ddf2d376875cbba2b043efa99b9e1ed8124e7365f61b04e3cee9d40ee + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad + languageName: node + linkType: hard + +"glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: ^4.0.1 + checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.0 + resolution: "glob@npm:7.2.0" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.0.4 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.6": + version: 4.2.8 + resolution: "graceful-fs@npm:4.2.8" + checksum: 5d224c8969ad0581d551dfabdb06882706b31af2561bd5e2034b4097e67cc27d05232849b8643866585fd0a41c7af152950f8776f4dd5579e9853733f31461c6 + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2": + version: 1.0.2 + resolution: "has-symbols@npm:1.0.2" + checksum: 2309c426071731be792b5be43b3da6fb4ed7cbe8a9a6bcfca1862587709f01b33d575ce8f5c264c1eaad09fca2f9a8208c0a2be156232629daa2dd0c0740976b + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0": + version: 1.0.0 + resolution: "has-tostringtag@npm:1.0.0" + dependencies: + has-symbols: ^1.0.2 + checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.0": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + languageName: node + linkType: hard + +"has@npm:^1.0.3": + version: 1.0.3 + resolution: "has@npm:1.0.3" + dependencies: + function-bind: ^1.1.1 + checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 + languageName: node + linkType: hard + +"http-assert@npm:^1.3.0": + version: 1.5.0 + resolution: "http-assert@npm:1.5.0" + dependencies: + deep-equal: ~1.0.1 + http-errors: ~1.8.0 + checksum: 69c9b3c14cf8b2822916360a365089ce936c883c49068f91c365eccba5c141a9964d19fdda589150a480013bf503bf37d8936c732e9635819339e730ab0e7527 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.0": + version: 4.1.0 + resolution: "http-cache-semantics@npm:4.1.0" + checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 + languageName: node + linkType: hard + +"http-errors@npm:^1.6.3, http-errors@npm:^1.7.3, http-errors@npm:~1.8.0": + version: 1.8.0 + resolution: "http-errors@npm:1.8.0" + dependencies: + depd: ~1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: ">= 1.5.0 < 2" + toidentifier: 1.0.0 + checksum: 873d997bada0340b31cc69cbe8376e47ee142f60375b81447fa3ad7be512dd4026afb3b46ed2257ee59472d43782a34151994b34264b204bcaad02e67ad836cb + languageName: node + linkType: hard + +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" + dependencies: + depd: ~1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: ">= 1.4.0 < 2" + checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c + languageName: node + linkType: hard + +"http-proxy-agent@npm:^4.0.1": + version: 4.0.1 + resolution: "http-proxy-agent@npm:4.0.1" + dependencies: + "@tootallnate/once": 1 + agent-base: 6 + debug: 4 + checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "https-proxy-agent@npm:5.0.0" + dependencies: + agent-base: 6 + debug: 4 + checksum: 165bfb090bd26d47693597661298006841ab733d0c7383a8cb2f17373387a94c903a3ac687090aa739de05e379ab6f868bae84ab4eac288ad85c328cd1ec9e53 + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: ^2.0.0 + checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: ">= 2.1.2 < 3.0.0" + checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 + languageName: node + linkType: hard + +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + languageName: node + linkType: hard + +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 + languageName: node + linkType: hard + +"ip@npm:^1.1.5": + version: 1.1.5 + resolution: "ip@npm:1.1.5" + checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: ^2.0.0 + checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c + languageName: node + linkType: hard + +"is-core-module@npm:^2.2.0": + version: 2.8.0 + resolution: "is-core-module@npm:2.8.0" + dependencies: + has: ^1.0.3 + checksum: f8b52714891e1a6c6577fcb8d5e057bab064a7a30954aab6beb5092e311473eb8da57afd334de4981dc32409ffca998412efc3a2edceb9e397cef6098d21dd91 + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^1.0.0": + version: 1.0.0 + resolution: "is-fullwidth-code-point@npm:1.0.0" + dependencies: + number-is-nan: ^1.0.0 + checksum: 4d46a7465a66a8aebcc5340d3b63a56602133874af576a9ca42c6f0f4bd787a743605771c5f246db77da96605fefeffb65fc1dbe862dcc7328f4b4d03edf5a57 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.7": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: ^1.0.0 + checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b + languageName: node + linkType: hard + +"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: ^2.1.1 + checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 + languageName: node + linkType: hard + +"is-module@npm:^1.0.0": + version: 1.0.0 + resolution: "is-module@npm:1.0.0" + checksum: 8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: ^2.0.0 + checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 + languageName: node + linkType: hard + +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab + languageName: node + linkType: hard + +"isbinaryfile@npm:^4.0.6": + version: 4.0.8 + resolution: "isbinaryfile@npm:4.0.8" + checksum: 606e3bb648d1a0dee23459d1d937bb2560e66a5281ec7c9ff50e585402d73321ac268d0f34cb7393125b3ebc4c7962d39e50a01cdb8904b52fce08b7ccd2bf9f + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 + languageName: node + linkType: hard + +"keygrip@npm:~1.1.0": + version: 1.1.0 + resolution: "keygrip@npm:1.1.0" + dependencies: + tsscmp: 1.0.6 + checksum: 078cd16a463d187121f0a27c1c9c95c52ad392b620f823431689f345a0501132cee60f6e96914b07d570105af470b96960402accd6c48a0b1f3cd8fac4fa2cae + languageName: node + linkType: hard + +"koa-compose@npm:^4.1.0": + version: 4.1.0 + resolution: "koa-compose@npm:4.1.0" + checksum: 46cb16792d96425e977c2ae4e5cb04930280740e907242ec9c25e3fb8b4a1d7b54451d7432bc24f40ec62255edea71894d2ceeb8238501842b4e48014f2e83db + languageName: node + linkType: hard + +"koa-convert@npm:^2.0.0": + version: 2.0.0 + resolution: "koa-convert@npm:2.0.0" + dependencies: + co: ^4.6.0 + koa-compose: ^4.1.0 + checksum: 7385b3391995f59c1312142e110d5dff677f9850dbfbcf387cd36a7b0af03b5d26e82b811eb9bb008b4f3e661cdab1f8817596e46b1929da2cf6e97a2f7456ed + languageName: node + linkType: hard + +"koa-etag@npm:^4.0.0": + version: 4.0.0 + resolution: "koa-etag@npm:4.0.0" + dependencies: + etag: ^1.8.1 + checksum: b5f413574e1edbd60fbbd0d31720e66565d51bfcb407d1bc3f48d9dd5b45fa5a9e4f69a60e749fad7397348e90de23e943307578d007a69da30faaae432deaf6 + languageName: node + linkType: hard + +"koa-send@npm:^5.0.0, koa-send@npm:^5.0.1": + version: 5.0.1 + resolution: "koa-send@npm:5.0.1" + dependencies: + debug: ^4.1.1 + http-errors: ^1.7.3 + resolve-path: ^1.4.0 + checksum: a9fbaadbe0f50efd157a733df4a1cc2b3b79b0cdf12e67c718641e6038d1792c0bebe40913e6d4ceb707d970301155be3859b98d1ef08b0fd1766f7326b82853 + languageName: node + linkType: hard + +"koa-static@npm:^5.0.0": + version: 5.0.0 + resolution: "koa-static@npm:5.0.0" + dependencies: + debug: ^3.1.0 + koa-send: ^5.0.0 + checksum: 8d9b9c4d2b3b13e8818e804245d784099c4b353b55ddd7dbeeb90f27a2e9f5b6f86bd16a4909e337cb89db4d332d9002e6c0f5056caf75749cab62f93c1f0cc5 + languageName: node + linkType: hard + +"koa@npm:^2.13.0": + version: 2.13.3 + resolution: "koa@npm:2.13.3" + dependencies: + accepts: ^1.3.5 + cache-content-type: ^1.0.0 + content-disposition: ~0.5.2 + content-type: ^1.0.4 + cookies: ~0.8.0 + debug: ^4.3.2 + delegates: ^1.0.0 + depd: ^2.0.0 + destroy: ^1.0.4 + encodeurl: ^1.0.2 + escape-html: ^1.0.3 + fresh: ~0.5.2 + http-assert: ^1.3.0 + http-errors: ^1.6.3 + is-generator-function: ^1.0.7 + koa-compose: ^4.1.0 + koa-convert: ^2.0.0 + on-finished: ^2.3.0 + only: ~0.0.2 + parseurl: ^1.3.2 + statuses: ^1.5.0 + type-is: ^1.6.16 + vary: ^1.1.2 + checksum: 23325dd94606e92774f3822bb3598abf14d9f11b26c7d7267aa54d9dadc6a01f715658aca34ff77e34678431710c128816fd67748646737693bf63c76e8f6707 + languageName: node + linkType: hard + +"lodash.camelcase@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.camelcase@npm:4.3.0" + checksum: cb9227612f71b83e42de93eccf1232feeb25e705bdb19ba26c04f91e885bfd3dd5c517c4a97137658190581d3493ea3973072ca010aab7e301046d90740393d1 + languageName: node + linkType: hard + +"lodash@npm:^4.17.14": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^9.1.0": + version: 9.1.0 + resolution: "make-fetch-happen@npm:9.1.0" + dependencies: + agentkeepalive: ^4.1.3 + cacache: ^15.2.0 + http-cache-semantics: ^4.1.0 + http-proxy-agent: ^4.0.1 + https-proxy-agent: ^5.0.0 + is-lambda: ^1.0.1 + lru-cache: ^6.0.0 + minipass: ^3.1.3 + minipass-collect: ^1.0.2 + minipass-fetch: ^1.3.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.2 + promise-retry: ^2.0.1 + socks-proxy-agent: ^6.0.0 + ssri: ^8.0.0 + checksum: 0eb371c85fdd0b1584fcfdf3dc3c62395761b3c14658be02620c310305a9a7ecf1617a5e6fb30c1d081c5c8aaf177fa133ee225024313afabb7aa6a10f1e3d04 + languageName: node + linkType: hard + +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 + languageName: node + linkType: hard + +"mime-db@npm:1.50.0": + version: 1.50.0 + resolution: "mime-db@npm:1.50.0" + checksum: 95fcc19c3664ae72391c8a7e4015dde7fb6817c98c951493ca3a1d48050feb8ee08810a372ce7d9e16310042d26e5bda168916f600583a9a583655eeea8ff5f5 + languageName: node + linkType: hard + +"mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:~2.1.24": + version: 2.1.33 + resolution: "mime-types@npm:2.1.33" + dependencies: + mime-db: 1.50.0 + checksum: 05f2a0b3f169fbc51d79bdc7674ceb379dd07dbeadb0143059a7def865224686ee9f9051aeb340e98b6c11dbc06794ce0122181db4312cb1ad054fd90b0d510e + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4": + version: 3.0.4 + resolution: "minimatch@npm:3.0.4" + dependencies: + brace-expansion: ^1.1.7 + checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 + languageName: node + linkType: hard + +"minimist@npm:^1.2.5": + version: 1.2.5 + resolution: "minimist@npm:1.2.5" + checksum: 86706ce5b36c16bfc35c5fe3dbb01d5acdc9a22f2b6cc810b6680656a1d2c0e44a0159c9a3ba51fb072bb5c203e49e10b51dcd0eec39c481f4c42086719bae52 + languageName: node + linkType: hard + +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: ^3.0.0 + checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + languageName: node + linkType: hard + +"minipass-fetch@npm:^1.3.2": + version: 1.4.1 + resolution: "minipass-fetch@npm:1.4.1" + dependencies: + encoding: ^0.1.12 + minipass: ^3.1.0 + minipass-sized: ^1.0.3 + minizlib: ^2.0.0 + dependenciesMeta: + encoding: + optional: true + checksum: ec93697bdb62129c4e6c0104138e681e30efef8c15d9429dd172f776f83898471bc76521b539ff913248cc2aa6d2b37b652c993504a51cc53282563640f29216 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: ^3.0.0 + checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: ^3.0.0 + checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: ^3.0.0 + checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 + languageName: node + linkType: hard + +"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3": + version: 3.1.5 + resolution: "minipass@npm:3.1.5" + dependencies: + yallist: ^4.0.0 + checksum: 8b410b9a5bd99ceb9d63c895891d1c30511791fdc7b717da4cf9403ca2419bc57af63b8485ffdaa421ef6cff56f63ae0b2f5135f8df502d21296e8c91460ebf9 + languageName: node + linkType: hard + +"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: ^3.0.0 + yallist: ^4.0.0 + checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 + languageName: node + linkType: hard + +"mkdirp@npm:^0.5.5": + version: 0.5.5 + resolution: "mkdirp@npm:0.5.5" + dependencies: + minimist: ^1.2.5 + bin: + mkdirp: bin/cmd.js + checksum: 3bce20ea525f9477befe458ab85284b0b66c8dc3812f94155af07c827175948cdd8114852ac6c6d82009b13c1048c37f6d98743eb019651ee25c39acc8aabe7d + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f + languageName: node + linkType: hard + +"moment@npm:^2.29.1": + version: 2.29.1 + resolution: "moment@npm:2.29.1" + checksum: 1e14d5f422a2687996be11dd2d50c8de3bd577c4a4ca79ba5d02c397242a933e5b941655de6c8cb90ac18f01cc4127e55b4a12ae3c527a6c0a274e455979345e + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + +"nanocolors@npm:^0.2.1": + version: 0.2.13 + resolution: "nanocolors@npm:0.2.13" + checksum: 01ac5aab77295c66cef83ea5f595e22f5f91518f19fae12f93ca2cba98703f971e32611fea2983f333eb7e60604043005690f61d9759e7c0a32314942fe6ddb8 + languageName: node + linkType: hard + +"negotiator@npm:0.6.2, negotiator@npm:^0.6.2": + version: 0.6.2 + resolution: "negotiator@npm:0.6.2" + checksum: dfddaff6c06792f1c4c3809e29a427b8daef8cd437c83b08dd51d7ee11bbd1c29d9512d66b801144d6c98e910ffd8723f2432e0cbf8b18d41d2a09599c975ab3 + languageName: node + linkType: hard + +"ng-material-datetimepicker@workspace:.": + version: 0.0.0-use.local + resolution: "ng-material-datetimepicker@workspace:." + dependencies: + "@web/dev-server": ^0.1.27 + angular: ^1.8.2 + angular-animate: ^1.8.2 + angular-aria: ^1.8.2 + angular-material: ^1.2.3 + angular-messages: ^1.8.2 + esbuild: ^0.13.12 + moment: ^2.29.1 + languageName: unknown + linkType: soft + +"node-gyp@npm:latest": + version: 8.4.0 + resolution: "node-gyp@npm:8.4.0" + dependencies: + env-paths: ^2.2.0 + glob: ^7.1.4 + graceful-fs: ^4.2.6 + make-fetch-happen: ^9.1.0 + nopt: ^5.0.0 + npmlog: ^4.1.2 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.2 + which: ^2.0.2 + bin: + node-gyp: bin/node-gyp.js + checksum: a5a0045f6a1708a7760cfee2b5e2cd9072dd6a0d5d3376bb96e0bae1f1e43d14a0bd54970e1fbd2632cceb9c23d36a3efabe88c26256693e969566cf977501c2 + languageName: node + linkType: hard + +"nopt@npm:^5.0.0": + version: 5.0.0 + resolution: "nopt@npm:5.0.0" + dependencies: + abbrev: 1 + bin: + nopt: bin/nopt.js + checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + languageName: node + linkType: hard + +"npmlog@npm:^4.1.2": + version: 4.1.2 + resolution: "npmlog@npm:4.1.2" + dependencies: + are-we-there-yet: ~1.1.2 + console-control-strings: ~1.1.0 + gauge: ~2.7.3 + set-blocking: ~2.0.0 + checksum: edbda9f95ec20957a892de1839afc6fb735054c3accf6fbefe767bac9a639fd5cea2baeac6bd2bcd50a85cb54924d57d9886c81c7fbc2332c2ddd19227504192 + languageName: node + linkType: hard + +"number-is-nan@npm:^1.0.0": + version: 1.0.1 + resolution: "number-is-nan@npm:1.0.1" + checksum: 13656bc9aa771b96cef209ffca31c31a03b507ca6862ba7c3f638a283560620d723d52e626d57892c7fff475f4c36ac07f0600f14544692ff595abff214b9ffb + languageName: node + linkType: hard + +"object-assign@npm:^4.1.0": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f + languageName: node + linkType: hard + +"on-finished@npm:^2.3.0": + version: 2.3.0 + resolution: "on-finished@npm:2.3.0" + dependencies: + ee-first: 1.1.1 + checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + +"only@npm:~0.0.2": + version: 0.0.2 + resolution: "only@npm:0.0.2" + checksum: d399710db867a1ef436dd3ce74499c87ece794aa81ab0370b5d153968766ee4aed2f98d3f92fc87c963e45b7a74d400d6f463ef651a5e7cfb861b15e88e9efe6 + languageName: node + linkType: hard + +"open@npm:^8.0.2": + version: 8.3.0 + resolution: "open@npm:8.3.0" + dependencies: + define-lazy-prop: ^2.0.0 + is-docker: ^2.1.1 + is-wsl: ^2.2.0 + checksum: 10fcb7ad453534cc1103ff90e0ebc36e542d67a4ccacf3b3d78c8e6401cec686e2849479cbc4a3386c7a3210064cbcc52e6ac38b788fc5fff1cf1dcbfef3c83b + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c + languageName: node + linkType: hard + +"parse5@npm:^6.0.1": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd + languageName: node + linkType: hard + +"parseurl@npm:^1.3.2": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 + languageName: node + linkType: hard + +"path-is-absolute@npm:1.0.1, path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.6": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2": + version: 2.3.0 + resolution: "picomatch@npm:2.3.0" + checksum: 16818720ea7c5872b6af110760dee856c8e4cd79aed1c7a006d076b1cc09eff3ae41ca5019966694c33fbd2e1cc6ea617ab10e4adac6df06556168f13be3fca2 + languageName: node + linkType: hard + +"portfinder@npm:^1.0.28": + version: 1.0.28 + resolution: "portfinder@npm:1.0.28" + dependencies: + async: ^2.6.2 + debug: ^3.1.1 + mkdirp: ^0.5.5 + checksum: 91fef602f13f8f4c64385d0ad2a36cc9dc6be0b8d10a2628ee2c3c7b9917ab4fefb458815b82cea2abf4b785cd11c9b4e2d917ac6fa06f14b6fa880ca8f8928c + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf + languageName: node + linkType: hard + +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: ^2.0.2 + retry: ^0.12.0 + checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 + languageName: node + linkType: hard + +"punycode@npm:^2.1.1": + version: 2.1.1 + resolution: "punycode@npm:2.1.1" + checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 + languageName: node + linkType: hard + +"readable-stream@npm:^2.0.6": + version: 2.3.7 + resolution: "readable-stream@npm:2.3.7" + dependencies: + core-util-is: ~1.0.0 + inherits: ~2.0.3 + isarray: ~1.0.0 + process-nextick-args: ~2.0.0 + safe-buffer: ~5.1.1 + string_decoder: ~1.1.1 + util-deprecate: ~1.0.1 + checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: ^2.2.1 + checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 + languageName: node + linkType: hard + +"reduce-flatten@npm:^2.0.0": + version: 2.0.0 + resolution: "reduce-flatten@npm:2.0.0" + checksum: 64393ef99a16b20692acfd60982d7fdbd7ff8d9f8f185c6023466444c6dd2abb929d67717a83cec7f7f8fb5f46a25d515b3b2bf2238fdbfcdbfd01d2a9e73cb8 + languageName: node + linkType: hard + +"resolve-path@npm:^1.4.0": + version: 1.4.0 + resolution: "resolve-path@npm:1.4.0" + dependencies: + http-errors: ~1.6.2 + path-is-absolute: 1.0.1 + checksum: 1a39f569ee54dd5f8ee8576ef8671c9724bea65d9f9982fbb5352af9fb4e500e1e459c1bfb1ae3ebfd8d43a709c3a01dfa4f46cf5b831e45e2caed4f1a208300 + languageName: node + linkType: hard + +"resolve@npm:^1.19.0": + version: 1.20.0 + resolution: "resolve@npm:1.20.0" + dependencies: + is-core-module: ^2.2.0 + path-parse: ^1.0.6 + checksum: 40cf70b2cde00ef57f99daf2dc63c6a56d6c14a1b7fc51735d06a6f0a3b97cb67b4fb7ef6c747b4e13a7baba83b0ef625d7c4ce92a483cd5af923c3b65fd16fe + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.19.0#~builtin": + version: 1.20.0 + resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=07638b" + dependencies: + is-core-module: ^2.2.0 + path-parse: ^1.0.6 + checksum: a0dd7d16a8e47af23afa9386df2dff10e3e0debb2c7299a42e581d9d9b04d7ad5d2c53f24f1e043f7b3c250cbdc71150063e53d0b6559683d37f790b7c8c3cd5 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + +"rollup@npm:^2.58.0": + version: 2.58.0 + resolution: "rollup@npm:2.58.0" + dependencies: + fsevents: ~2.3.2 + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: a5e5642f2b1e239e3698eeee93b19d905e55e3012c63978cebc71e76c0a4eb2de5cff06a2a80d68bf87fe6869c57647cccc335daba280a5449a9214abdeca247 + languageName: node + linkType: hard + +"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + languageName: node + linkType: hard + +"semver@npm:^7.3.4, semver@npm:^7.3.5": + version: 7.3.5 + resolution: "semver@npm:7.3.5" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 5eafe6102bea2a7439897c1856362e31cc348ccf96efd455c8b5bc2c61e6f7e7b8250dc26b8828c1d76a56f818a7ee907a36ae9fb37a599d3d24609207001d60 + languageName: node + linkType: hard + +"set-blocking@npm:~2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 + languageName: node + linkType: hard + +"setprototypeof@npm:1.1.0": + version: 1.1.0 + resolution: "setprototypeof@npm:1.1.0" + checksum: 27cb44304d6c9e1a23bc6c706af4acaae1a7aa1054d4ec13c05f01a99fd4887109a83a8042b67ad90dbfcd100d43efc171ee036eb080667172079213242ca36e + languageName: node + linkType: hard + +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.0": + version: 3.0.5 + resolution: "signal-exit@npm:3.0.5" + checksum: a1d3d0d63f581bd298b30ed8f6de21b73a0fe5a0c0f123b2e8ed7168bbff8f4c1a45e681de12a1966a89bb725d8eb727816be1c436e136951f31953e4a201587 + languageName: node + linkType: hard + +"smart-buffer@npm:^4.1.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^6.0.0": + version: 6.1.0 + resolution: "socks-proxy-agent@npm:6.1.0" + dependencies: + agent-base: ^6.0.2 + debug: ^4.3.1 + socks: ^2.6.1 + checksum: 32ea0d62c848b5c246955e8d6c34832fe6cd8c5f3b66f5ace3a9bd7387bafae3e67d96474d41291723ba7135e2da46d65e008a8a35a793dfa5cb0f4ac05429df + languageName: node + linkType: hard + +"socks@npm:^2.6.1": + version: 2.6.1 + resolution: "socks@npm:2.6.1" + dependencies: + ip: ^1.1.5 + smart-buffer: ^4.1.0 + checksum: 2ca9d616e424f645838ebaabb04f85d94ea999e0f8393dc07f86c435af22ed88cb83958feeabd1bb7bc537c635ed47454255635502c6808a6df61af1f41af750 + languageName: node + linkType: hard + +"ssri@npm:^8.0.0, ssri@npm:^8.0.1": + version: 8.0.1 + resolution: "ssri@npm:8.0.1" + dependencies: + minipass: ^3.1.1 + checksum: bc447f5af814fa9713aa201ec2522208ae0f4d8f3bda7a1f445a797c7b929a02720436ff7c478fb5edc4045adb02b1b88d2341b436a80798734e2494f1067b36 + languageName: node + linkType: hard + +"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:^1.5.0": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c + languageName: node + linkType: hard + +"string-width@npm:^1.0.1": + version: 1.0.2 + resolution: "string-width@npm:1.0.2" + dependencies: + code-point-at: ^1.0.0 + is-fullwidth-code-point: ^1.0.0 + strip-ansi: ^3.0.0 + checksum: 5c79439e95bc3bd7233a332c5f5926ab2ee90b23816ed4faa380ce3b2576d7800b0a5bb15ae88ed28737acc7ea06a518c2eef39142dd727adad0e45c776cd37e + languageName: node + linkType: hard + +"string-width@npm:^1.0.2 || 2 || 3 || 4": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: ~5.1.0 + checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b + languageName: node + linkType: hard + +"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": + version: 3.0.1 + resolution: "strip-ansi@npm:3.0.1" + dependencies: + ansi-regex: ^2.0.0 + checksum: 9b974de611ce5075c70629c00fa98c46144043db92ae17748fb780f706f7a789e9989fd10597b7c2053ae8d1513fd707816a91f1879b2f71e6ac0b6a863db465 + languageName: node + linkType: hard + +"strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: ^5.0.1 + checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: ^3.0.0 + checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac + languageName: node + linkType: hard + +"table-layout@npm:^1.0.1": + version: 1.0.2 + resolution: "table-layout@npm:1.0.2" + dependencies: + array-back: ^4.0.1 + deep-extend: ~0.6.0 + typical: ^5.2.0 + wordwrapjs: ^4.0.0 + checksum: 8f41b5671f101a5195747ec1727b1d35ea2cd5bf85addda11cc2f4b36892db9696ce3c2c7334b5b8a122505b34d19135fede50e25678df71b0439e0704fd953f + languageName: node + linkType: hard + +"tar@npm:^6.0.2, tar@npm:^6.1.2": + version: 6.1.11 + resolution: "tar@npm:6.1.11" + dependencies: + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + minipass: ^3.0.0 + minizlib: ^2.1.1 + mkdirp: ^1.0.3 + yallist: ^4.0.0 + checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: ^7.0.0 + checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed + languageName: node + linkType: hard + +"toidentifier@npm:1.0.0": + version: 1.0.0 + resolution: "toidentifier@npm:1.0.0" + checksum: 199e6bfca1531d49b3506cff02353d53ec987c9ee10ee272ca6484ed97f1fc10fb77c6c009079ca16d5c5be4a10378178c3cacdb41ce9ec954c3297c74c6053e + languageName: node + linkType: hard + +"tr46@npm:^3.0.0": + version: 3.0.0 + resolution: "tr46@npm:3.0.0" + dependencies: + punycode: ^2.1.1 + checksum: 44c3cc6767fb800490e6e9fd64fd49041aa4e49e1f6a012b34a75de739cc9ed3a6405296072c1df8b6389ae139c5e7c6496f659cfe13a04a4bff3a1422981270 + languageName: node + linkType: hard + +"tsscmp@npm:1.0.6": + version: 1.0.6 + resolution: "tsscmp@npm:1.0.6" + checksum: 1512384def36bccc9125cabbd4c3b0e68608d7ee08127ceaa0b84a71797263f1a01c7f82fa69be8a3bd3c1396e2965d2f7b52d581d3a5eeaf3967fbc52e3b3bf + languageName: node + linkType: hard + +"type-is@npm:^1.6.16": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: 0.3.0 + mime-types: ~2.1.24 + checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 + languageName: node + linkType: hard + +"typical@npm:^4.0.0": + version: 4.0.0 + resolution: "typical@npm:4.0.0" + checksum: a242081956825328f535e6195a924240b34daf6e7fdb573a1809a42b9f37fb8114fa99c7ab89a695e0cdb419d4149d067f6723e4b95855ffd39c6c4ca378efb3 + languageName: node + linkType: hard + +"typical@npm:^5.2.0": + version: 5.2.0 + resolution: "typical@npm:5.2.0" + checksum: ccaeb151a9a556291b495571ca44c4660f736fb49c29314bbf773c90fad92e9485d3cc2b074c933866c1595abbbc962f2b8bfc6e0f52a8c6b0cdd205442036ac + languageName: node + linkType: hard + +"unique-filename@npm:^1.1.1": + version: 1.1.1 + resolution: "unique-filename@npm:1.1.1" + dependencies: + unique-slug: ^2.0.0 + checksum: cf4998c9228cc7647ba7814e255dec51be43673903897b1786eff2ac2d670f54d4d733357eb08dea969aa5e6875d0e1bd391d668fbdb5a179744e7c7551a6f80 + languageName: node + linkType: hard + +"unique-slug@npm:^2.0.0": + version: 2.0.2 + resolution: "unique-slug@npm:2.0.2" + dependencies: + imurmurhash: ^0.1.4 + checksum: 5b6876a645da08d505dedb970d1571f6cebdf87044cb6b740c8dbb24f0d6e1dc8bdbf46825fd09f994d7cf50760e6f6e063cfa197d51c5902c00a861702eb75a + languageName: node + linkType: hard + +"util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + languageName: node + linkType: hard + +"vary@npm:^1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b + languageName: node + linkType: hard + +"whatwg-url@npm:^11.0.0": + version: 11.0.0 + resolution: "whatwg-url@npm:11.0.0" + dependencies: + tr46: ^3.0.0 + webidl-conversions: ^7.0.0 + checksum: ed4826aaa57e66bb3488a4b25c9cd476c46ba96052747388b5801f137dd740b73fde91ad207d96baf9f17fbcc80fc1a477ad65181b5eb5fa718d27c69501d7af + languageName: node + linkType: hard + +"which@npm:^2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: ^2.0.0 + bin: + node-which: ./bin/node-which + checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + languageName: node + linkType: hard + +"wide-align@npm:^1.1.0": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: ^1.0.2 || 2 || 3 || 4 + checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 + languageName: node + linkType: hard + +"wordwrapjs@npm:^4.0.0": + version: 4.0.1 + resolution: "wordwrapjs@npm:4.0.1" + dependencies: + reduce-flatten: ^2.0.0 + typical: ^5.2.0 + checksum: 3d927f3c95d0ad990968da54c0ad8cde2801d8e91006cd7474c26e6b742cc8557250ce495c9732b2f9db1f903601cb74ec282e0f122ee0d02d7abe81e150eea8 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + languageName: node + linkType: hard + +"ws@npm:^7.4.2": + version: 7.5.5 + resolution: "ws@npm:7.5.5" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: bd2b437256012af526c69c03d6670a132e7ab0fe5853f3b7092826acea4203fad4ee2a8d0d9bd44834b2b968e747bf34f753ab535f4a3edf40d262da4b1d0805 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + languageName: node + linkType: hard + +"ylru@npm:^1.2.0": + version: 1.2.1 + resolution: "ylru@npm:1.2.1" + checksum: 33c45248becece949d4511a13f66b2330852f6226da6c2842bf16f0b0ee45bbbfcdf6b8da3d4c52d6cd5106818eeb3674dd73a17e87c945d1839c470107549e2 + languageName: node + linkType: hard From cb4d9f6010ec17baeedb2d826443b58090767692 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 9 Apr 2022 03:38:14 +0000 Subject: [PATCH 222/226] Bump moment from 2.29.1 to 2.29.2 Bumps [moment](https://github.com/moment/moment) from 2.29.1 to 2.29.2. - [Release notes](https://github.com/moment/moment/releases) - [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - [Commits](https://github.com/moment/moment/compare/2.29.1...2.29.2) --- updated-dependencies: - dependency-name: moment dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- yarn.lock | 3529 ++++++++++++++++------------------------------------- 1 file changed, 1022 insertions(+), 2507 deletions(-) diff --git a/yarn.lock b/yarn.lock index 48673f9..2032841 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,2507 +1,1022 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 5 - cacheKey: 8 - -"@babel/code-frame@npm:^7.12.11": - version: 7.15.8 - resolution: "@babel/code-frame@npm:7.15.8" - dependencies: - "@babel/highlight": ^7.14.5 - checksum: d75950f0e0925b33ab5e870079134509c13bcdbf96c8bf4d0dea91606775bc044258c762104ab20882fda3b07cbff24176ed77dfb57af5a901bde33ddfe690bb - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.14.5": - version: 7.15.7 - resolution: "@babel/helper-validator-identifier@npm:7.15.7" - checksum: f041c28c531d1add5cc345b25d5df3c29c62bce3205b4d4a93dcd164ccf630350acba252d374fad8f5d8ea526995a215829f27183ba7ce7ce141843bf23068a6 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/highlight@npm:7.14.5" - dependencies: - "@babel/helper-validator-identifier": ^7.14.5 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 4e4b22fb886c939551d73307de16232c186fdb4d8ec8f514541b058feaecdba5234788a0740ca5bcd28777f4108596c39ac4b7463684c63b3812f6071e3fb88f - languageName: node - linkType: hard - -"@gar/promisify@npm:^1.0.1": - version: 1.1.2 - resolution: "@gar/promisify@npm:1.1.2" - checksum: d05081e0887a49c178b75ee3067bd6ee086f73c154d121b854fb2e044e8a89cb1cbb6de3a0dd93a519b80f0531fda68b099dd7256205f7fbb3490324342f2217 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^1.0.0": - version: 1.0.0 - resolution: "@npmcli/fs@npm:1.0.0" - dependencies: - "@gar/promisify": ^1.0.1 - semver: ^7.3.5 - checksum: f2b4990107dd2a5b18794c89aaff6f62f3a67883d49a20602fdfc353cbc7f8c5fd50edeffdc769e454900e01b8b8e43d0b9eb524d00963d69f3c829be1a2e8ac - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^1.0.1": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 - languageName: node - linkType: hard - -"@rollup/plugin-node-resolve@npm:^11.0.1": - version: 11.2.1 - resolution: "@rollup/plugin-node-resolve@npm:11.2.1" - dependencies: - "@rollup/pluginutils": ^3.1.0 - "@types/resolve": 1.17.1 - builtin-modules: ^3.1.0 - deepmerge: ^4.2.2 - is-module: ^1.0.0 - resolve: ^1.19.0 - peerDependencies: - rollup: ^1.20.0||^2.0.0 - checksum: 6f3b3ecf9a0596a5db4212984bdeb13bb7612693602407e9457ada075dea5a5f2e4e124c592352cf27066a88b194de9b9a95390149b52cf335d5b5e17b4e265b - languageName: node - linkType: hard - -"@rollup/pluginutils@npm:^3.1.0": - version: 3.1.0 - resolution: "@rollup/pluginutils@npm:3.1.0" - dependencies: - "@types/estree": 0.0.39 - estree-walker: ^1.0.1 - picomatch: ^2.2.2 - peerDependencies: - rollup: ^1.20.0||^2.0.0 - checksum: 8be16e27863c219edbb25a4e6ec2fe0e1e451d9e917b6a43cf2ae5bc025a6b8faaa40f82a6e53b66d0de37b58ff472c6c3d57a83037ae635041f8df959d6d9aa - languageName: node - linkType: hard - -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 - languageName: node - linkType: hard - -"@types/accepts@npm:*": - version: 1.3.5 - resolution: "@types/accepts@npm:1.3.5" - dependencies: - "@types/node": "*" - checksum: 590b7580570534a640510c071e09074cf63b5958b237a728f94322567350aea4d239f8a9d897a12b15c856b992ee4d7907e9812bb079886af2c00714e7fb3f60 - languageName: node - linkType: hard - -"@types/body-parser@npm:*": - version: 1.19.1 - resolution: "@types/body-parser@npm:1.19.1" - dependencies: - "@types/connect": "*" - "@types/node": "*" - checksum: 2990656ea2de81f3529a3359a79a13b67feb4c627caf7a367fdc0017a178e567b0cc410546bdd219104ad7197c5ee5a90b70193f5253839ea43d9cdb2d2dacee - languageName: node - linkType: hard - -"@types/command-line-args@npm:^5.0.0": - version: 5.2.0 - resolution: "@types/command-line-args@npm:5.2.0" - checksum: 423121d2d083765f5b78d090115f3be82d53a39cec9de63719cbd07021e6330fab19b75e2290af1f7dda84efd7964dc498eb10b2b465991de27045db95aa1eef - languageName: node - linkType: hard - -"@types/connect@npm:*": - version: 3.4.35 - resolution: "@types/connect@npm:3.4.35" - dependencies: - "@types/node": "*" - checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 - languageName: node - linkType: hard - -"@types/content-disposition@npm:*": - version: 0.5.4 - resolution: "@types/content-disposition@npm:0.5.4" - checksum: eee083f930fedb125acf0d658653b7d349cdfe93ef78d5613450c4817e4882eb0c0e59b4ab2bc57997bb59f87db9f734dc234644509bb3df51f8388635daf1e1 - languageName: node - linkType: hard - -"@types/cookies@npm:*": - version: 0.7.7 - resolution: "@types/cookies@npm:0.7.7" - dependencies: - "@types/connect": "*" - "@types/express": "*" - "@types/keygrip": "*" - "@types/node": "*" - checksum: d3759efc1182cb0651808570ae13638677b67b0ea724eef7b174e58ffe6ea044b62c7c2715e532f76f88fce4dd8101ed32ac6fbb73226db654017924e8a2a1e6 - languageName: node - linkType: hard - -"@types/estree@npm:0.0.39": - version: 0.0.39 - resolution: "@types/estree@npm:0.0.39" - checksum: 412fb5b9868f2c418126451821833414189b75cc6bf84361156feed733e3d92ec220b9d74a89e52722e03d5e241b2932732711b7497374a404fad49087adc248 - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^4.17.18": - version: 4.17.24 - resolution: "@types/express-serve-static-core@npm:4.17.24" - dependencies: - "@types/node": "*" - "@types/qs": "*" - "@types/range-parser": "*" - checksum: 2f0b4711261d663bf93df4dbd6f0270e84d1624278e2f3722cf050e2e6be521b6d385bb69bd0eac14abbf1119d4b308a731ec746fb2c3848697658e9e49e5676 - languageName: node - linkType: hard - -"@types/express@npm:*": - version: 4.17.13 - resolution: "@types/express@npm:4.17.13" - dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.18 - "@types/qs": "*" - "@types/serve-static": "*" - checksum: 12a2a0e6c4b993fc0854bec665906788aea0d8ee4392389d7a98a5de1eefdd33c9e1e40a91f3afd274011119c506f7b4126acb97fae62ae20b654974d44cba12 - languageName: node - linkType: hard - -"@types/http-assert@npm:*": - version: 1.5.3 - resolution: "@types/http-assert@npm:1.5.3" - checksum: 9553e5a0b8bcfdac4b51d3fa3b89a91b5450171861a667a5b4c47204e0f4a1ca865d97396e6ceaf220e87b64d06b7a8bad7bfba15ef97acb41a87507c9940dbc - languageName: node - linkType: hard - -"@types/http-errors@npm:*": - version: 1.8.1 - resolution: "@types/http-errors@npm:1.8.1" - checksum: f0710ea284a7eb5584c5e324b1dc810bc971e1adc94deff63a0c434a8a75adc020487e3e6d511cd82cef101bbcf090b8f56995c143d123e0c374dc0f61be3a61 - languageName: node - linkType: hard - -"@types/keygrip@npm:*": - version: 1.0.2 - resolution: "@types/keygrip@npm:1.0.2" - checksum: 60bc2738a4f107070ee3d96f44709cb38f3a96c7ccabab09f56c1b2b4d85f869fd8fb9f1f2937e863d0e9e781f005c2223b823bf32b859185b4f52370c352669 - languageName: node - linkType: hard - -"@types/koa-compose@npm:*": - version: 3.2.5 - resolution: "@types/koa-compose@npm:3.2.5" - dependencies: - "@types/koa": "*" - checksum: 5d1147c4b057eb158195f442f0384f06503f3e69dba99fb517b30a05261a9f92928945c12bb1cfc17a5b7d60db003f38b455a3a9b125f12e4fc81fffa396b3cf - languageName: node - linkType: hard - -"@types/koa@npm:*, @types/koa@npm:^2.11.6": - version: 2.13.4 - resolution: "@types/koa@npm:2.13.4" - dependencies: - "@types/accepts": "*" - "@types/content-disposition": "*" - "@types/cookies": "*" - "@types/http-assert": "*" - "@types/http-errors": "*" - "@types/keygrip": "*" - "@types/koa-compose": "*" - "@types/node": "*" - checksum: 35a54e68944f74d6763537d55d01f8ed870d0ef816b5f27fce97a317b237540b7c249dc4a54abab44ad0afd0ce010b335122c9efb490b9589affe7929201d707 - languageName: node - linkType: hard - -"@types/mime@npm:^1": - version: 1.3.2 - resolution: "@types/mime@npm:1.3.2" - checksum: 0493368244cced1a69cb791b485a260a422e6fcc857782e1178d1e6f219f1b161793e9f87f5fae1b219af0f50bee24fcbe733a18b4be8fdd07a38a8fb91146fd - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 16.11.0 - resolution: "@types/node@npm:16.11.0" - checksum: 194ae80ec72f664e15e03c33f116be96aa1e85b167a19e31003c53ddfc36dabd65744e9a76c1d46b7ce2e5981d2ccb8e84a85c3ec9ac89f1471daaa885bdcfd0 - languageName: node - linkType: hard - -"@types/parse5@npm:^6.0.1": - version: 6.0.1 - resolution: "@types/parse5@npm:6.0.1" - checksum: 752d4968b03084b783995c50280707f64c149b7e3d59e9fcdaa82c8c54b37dc56023a8b11c7d60dbb359f2277ef165970bfc7d79231863456bf25d102c09b33f - languageName: node - linkType: hard - -"@types/qs@npm:*": - version: 6.9.7 - resolution: "@types/qs@npm:6.9.7" - checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba - languageName: node - linkType: hard - -"@types/range-parser@npm:*": - version: 1.2.4 - resolution: "@types/range-parser@npm:1.2.4" - checksum: b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 - languageName: node - linkType: hard - -"@types/resolve@npm:1.17.1": - version: 1.17.1 - resolution: "@types/resolve@npm:1.17.1" - dependencies: - "@types/node": "*" - checksum: dc6a6df507656004e242dcb02c784479deca516d5f4b58a1707e708022b269ae147e1da0521f3e8ad0d63638869d87e0adc023f0bd5454aa6f72ac66c7525cf5 - languageName: node - linkType: hard - -"@types/serve-static@npm:*": - version: 1.13.10 - resolution: "@types/serve-static@npm:1.13.10" - dependencies: - "@types/mime": ^1 - "@types/node": "*" - checksum: eaca858739483e3ded254cad7d7a679dc2c8b3f52c8bb0cd845b3b7eb1984bde0371fdcb0a5c83aa12e6daf61b6beb762545021f520f08a1fe882a3fa4ea5554 - languageName: node - linkType: hard - -"@types/ws@npm:^7.4.0": - version: 7.4.7 - resolution: "@types/ws@npm:7.4.7" - dependencies: - "@types/node": "*" - checksum: b4c9b8ad209620c9b21e78314ce4ff07515c0cadab9af101c1651e7bfb992d7fd933bd8b9c99d110738fd6db523ed15f82f29f50b45510288da72e964dedb1a3 - languageName: node - linkType: hard - -"@web/config-loader@npm:^0.1.3": - version: 0.1.3 - resolution: "@web/config-loader@npm:0.1.3" - dependencies: - semver: ^7.3.4 - checksum: 278554bd00b757eaf296ba904a224c61d4698df1a5d6c04931c40bc6bb308e81e767055cbf283b763cc530aae6b200bb950aa19eb41aa8979a3a2b29e5f0ac7a - languageName: node - linkType: hard - -"@web/dev-server-core@npm:^0.3.16": - version: 0.3.16 - resolution: "@web/dev-server-core@npm:0.3.16" - dependencies: - "@types/koa": ^2.11.6 - "@types/ws": ^7.4.0 - "@web/parse5-utils": ^1.2.0 - chokidar: ^3.4.3 - clone: ^2.1.2 - es-module-lexer: ^0.9.0 - get-stream: ^6.0.0 - is-stream: ^2.0.0 - isbinaryfile: ^4.0.6 - koa: ^2.13.0 - koa-etag: ^4.0.0 - koa-send: ^5.0.1 - koa-static: ^5.0.0 - lru-cache: ^6.0.0 - mime-types: ^2.1.27 - parse5: ^6.0.1 - picomatch: ^2.2.2 - ws: ^7.4.2 - checksum: fb67ad43e4afa628e87a9adaac0c9083b429eebafe7698300a259e3b380724f4aa94d2682af4c1e866b8115fb49af3dab6575bed4bef150c9f3c225e7920d496 - languageName: node - linkType: hard - -"@web/dev-server-core@npm:^0.3.17": - version: 0.3.17 - resolution: "@web/dev-server-core@npm:0.3.17" - dependencies: - "@types/koa": ^2.11.6 - "@types/ws": ^7.4.0 - "@web/parse5-utils": ^1.2.0 - chokidar: ^3.4.3 - clone: ^2.1.2 - es-module-lexer: ^0.9.0 - get-stream: ^6.0.0 - is-stream: ^2.0.0 - isbinaryfile: ^4.0.6 - koa: ^2.13.0 - koa-etag: ^4.0.0 - koa-send: ^5.0.1 - koa-static: ^5.0.0 - lru-cache: ^6.0.0 - mime-types: ^2.1.27 - parse5: ^6.0.1 - picomatch: ^2.2.2 - ws: ^7.4.2 - checksum: 6d920dbbe2b736736d61ae529ffaff31631ffce2319025f63fc783e842654e92fc3b30c92460d1e656ca6650713c74e722c05e6e0d6add5b740be808525d2680 - languageName: node - linkType: hard - -"@web/dev-server-rollup@npm:^0.3.12": - version: 0.3.12 - resolution: "@web/dev-server-rollup@npm:0.3.12" - dependencies: - "@web/dev-server-core": ^0.3.16 - nanocolors: ^0.2.1 - parse5: ^6.0.1 - rollup: ^2.58.0 - whatwg-url: ^11.0.0 - checksum: bdaeae3380b7eaff992ebadd5b95c621e68d3de299302e5fe33bc7cc6e308e8a539197436aacc2d00b726b18e3bf8d6e4b5a22920eff09a1b22ee98b5a239df2 - languageName: node - linkType: hard - -"@web/dev-server@npm:^0.1.27": - version: 0.1.27 - resolution: "@web/dev-server@npm:0.1.27" - dependencies: - "@babel/code-frame": ^7.12.11 - "@rollup/plugin-node-resolve": ^11.0.1 - "@types/command-line-args": ^5.0.0 - "@web/config-loader": ^0.1.3 - "@web/dev-server-core": ^0.3.17 - "@web/dev-server-rollup": ^0.3.12 - camelcase: ^6.2.0 - command-line-args: ^5.1.1 - command-line-usage: ^6.1.1 - debounce: ^1.2.0 - deepmerge: ^4.2.2 - ip: ^1.1.5 - nanocolors: ^0.2.1 - open: ^8.0.2 - portfinder: ^1.0.28 - bin: - wds: dist/bin.js - web-dev-server: dist/bin.js - checksum: e7d077da689b98c0030db4cf15455d41f514c3925cf9970527797138f7e9f4f8867c64c4161a96121c28759f05ad96ad3611b5c3a76ffb5cf28ceaee20a1d8d0 - languageName: node - linkType: hard - -"@web/parse5-utils@npm:^1.2.0": - version: 1.3.0 - resolution: "@web/parse5-utils@npm:1.3.0" - dependencies: - "@types/parse5": ^6.0.1 - parse5: ^6.0.1 - checksum: 379849c1b0a060d50037c7dc90d27231dc68f57b1034d87f89129c3cd87fa27d3a0f8e550e1ab3be00bb1c0d440a8fa95c153a481ed8c2c705fd46fbc8a8433d - languageName: node - linkType: hard - -"abbrev@npm:1": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 - languageName: node - linkType: hard - -"accepts@npm:^1.3.5": - version: 1.3.7 - resolution: "accepts@npm:1.3.7" - dependencies: - mime-types: ~2.1.24 - negotiator: 0.6.2 - checksum: 27fc8060ffc69481ff6719cd3ee06387d2b88381cb0ce626f087781bbd02201a645a9febc8e7e7333558354b33b1d2f922ad13560be4ec1b7ba9e76fc1c1241d - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.1.3": - version: 4.1.4 - resolution: "agentkeepalive@npm:4.1.4" - dependencies: - debug: ^4.1.0 - depd: ^1.1.2 - humanize-ms: ^1.2.1 - checksum: d49c24d4b333e9507119385895a583872f4f53d62764a89be165926e824056a126955bae4a6d3c6f7cd26f4089621a40f7b27675f7868214d82118f744b9e82d - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"angular-animate@npm:^1.8.2": - version: 1.8.2 - resolution: "angular-animate@npm:1.8.2" - checksum: 6590940545a05bf678ed8c71cfe19409abe4ca634e73c29f0006bc1ce5bafe645da87bc2f483f09584653881201bac2562c8f39d7aeea2c2aea7f6a1f3a0bbde - languageName: node - linkType: hard - -"angular-aria@npm:^1.8.2": - version: 1.8.2 - resolution: "angular-aria@npm:1.8.2" - checksum: 040fb2ee5d652c164b5f2c6a062b345c6cc3f8a344b2ed785d95dff66a3a50bf45c7113a2b8028a29ef2868ce378819c53aa2a2b8a3f3635d2a499bf7d2f9a26 - languageName: node - linkType: hard - -"angular-material@npm:^1.2.3": - version: 1.2.3 - resolution: "angular-material@npm:1.2.3" - peerDependencies: - angular: ^1.7.2 - angular-animate: ^1.7.2 - angular-aria: ^1.7.2 - angular-messages: ^1.7.2 - checksum: b6ab901912831d0ffb9b82b08fd19a7fb8f83556c8a638d40bddb95695e55ca6afa0a6ead39f671c3cf0c6fdc71d704b818fabc214f4f824cdd7e6c436814eb6 - languageName: node - linkType: hard - -"angular-messages@npm:^1.8.2": - version: 1.8.2 - resolution: "angular-messages@npm:1.8.2" - checksum: 0d20692b3185a72f6f28abec34aa8262dc46785422ce0e7108b9e8aa36d7a6057bc085902b00e9d97a25ebcd09f231369a605b03bc52e05392e2bee6e5b7079e - languageName: node - linkType: hard - -"angular@npm:^1.8.2": - version: 1.8.2 - resolution: "angular@npm:1.8.2" - checksum: 35ea81a23b8c0231a17c90a8aa69f63856bc8ab767c15131089bcc8b55435ed8c2ad803d60ad86f187a9235708d73cc76e1310abae8cad7c87127c19a3e4f932 - languageName: node - linkType: hard - -"ansi-regex@npm:^2.0.0": - version: 2.1.1 - resolution: "ansi-regex@npm:2.1.1" - checksum: 190abd03e4ff86794f338a31795d262c1dfe8c91f7e01d04f13f646f1dcb16c5800818f886047876f1272f065570ab86b24b99089f8b68a0e11ff19aed4ca8f1 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - -"anymatch@npm:~3.1.2": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" - dependencies: - normalize-path: ^3.0.0 - picomatch: ^2.0.4 - checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 - languageName: node - linkType: hard - -"aproba@npm:^1.0.3": - version: 1.2.0 - resolution: "aproba@npm:1.2.0" - checksum: 0fca141966559d195072ed047658b6e6c4fe92428c385dd38e288eacfc55807e7b4989322f030faff32c0f46bb0bc10f1e0ac32ec22d25315a1e5bbc0ebb76dc - languageName: node - linkType: hard - -"are-we-there-yet@npm:~1.1.2": - version: 1.1.7 - resolution: "are-we-there-yet@npm:1.1.7" - dependencies: - delegates: ^1.0.0 - readable-stream: ^2.0.6 - checksum: 70d251719c969b2745bfe5ddf3ebaefa846a636e90a6d5212573676af5d6670e15457761d4725731e19cbebdce42c4ab0cbedf23ab047f2a08274985aa10a3c7 - languageName: node - linkType: hard - -"array-back@npm:^3.0.1, array-back@npm:^3.1.0": - version: 3.1.0 - resolution: "array-back@npm:3.1.0" - checksum: 7205004fcd0f9edd926db921af901b083094608d5b265738d0290092f9822f73accb468e677db74c7c94ef432d39e5ed75a7b1786701e182efb25bbba9734209 - languageName: node - linkType: hard - -"array-back@npm:^4.0.1": - version: 4.0.2 - resolution: "array-back@npm:4.0.2" - checksum: f30603270771eeb54e5aad5f54604c62b3577a18b6db212a7272b2b6c32049121b49431f656654790ed1469411e45f387e7627c0de8fd0515995cc40df9b9294 - languageName: node - linkType: hard - -"async@npm:^2.6.2": - version: 2.6.3 - resolution: "async@npm:2.6.3" - dependencies: - lodash: ^4.17.14 - checksum: 5e5561ff8fca807e88738533d620488ac03a5c43fce6c937451f7e35f943d33ad06c24af3f681a48cca3d2b0002b3118faff0a128dc89438a9bf0226f712c499 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"builtin-modules@npm:^3.1.0": - version: 3.2.0 - resolution: "builtin-modules@npm:3.2.0" - checksum: 0265aa1ba78e1a16f4e18668d815cb43fb364e6a6b8aa9189c6f44c7b894a551a43b323c40206959d2d4b2568c1f2805607ad6c88adc306a776ce6904cca6715 - languageName: node - linkType: hard - -"cacache@npm:^15.2.0": - version: 15.3.0 - resolution: "cacache@npm:15.3.0" - dependencies: - "@npmcli/fs": ^1.0.0 - "@npmcli/move-file": ^1.0.1 - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - glob: ^7.1.4 - infer-owner: ^1.0.4 - lru-cache: ^6.0.0 - minipass: ^3.1.1 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.2 - mkdirp: ^1.0.3 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^8.0.1 - tar: ^6.0.2 - unique-filename: ^1.1.1 - checksum: a07327c27a4152c04eb0a831c63c00390d90f94d51bb80624a66f4e14a6b6360bbf02a84421267bd4d00ca73ac9773287d8d7169e8d2eafe378d2ce140579db8 - languageName: node - linkType: hard - -"cache-content-type@npm:^1.0.0": - version: 1.0.1 - resolution: "cache-content-type@npm:1.0.1" - dependencies: - mime-types: ^2.1.18 - ylru: ^1.2.0 - checksum: 18db4d59452669ccbfd7146a1510a37eb28e9eccf18ca7a4eb603dff2edc5cccdca7498fc3042a2978f76f11151fba486eb9eb69d9afa3fb124957870aef4fd3 - languageName: node - linkType: hard - -"camelcase@npm:^6.2.0": - version: 6.2.0 - resolution: "camelcase@npm:6.2.0" - checksum: 8335cfd0ecc472eae685896a42afd8c9dacd193a91f569120b931c87deb053a1ba82102031b9b48a4dbc1d18066caeacf2e4ace8c3c7f0d02936d348dc0b5a87 - languageName: node - linkType: hard - -"chalk@npm:^2.0.0, chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - -"chokidar@npm:^3.4.3": - version: 3.5.2 - resolution: "chokidar@npm:3.5.2" - dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.2 - glob-parent: ~5.1.2 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.6.0 - dependenciesMeta: - fsevents: - optional: true - checksum: d1fda32fcd67d9f6170a8468ad2630a3c6194949c9db3f6a91b16478c328b2800f433fb5d2592511b6cb145a47c013ea1cce60b432b1a001ae3ee978a8bffc2d - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"clone@npm:^2.1.2": - version: 2.1.2 - resolution: "clone@npm:2.1.2" - checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d - languageName: node - linkType: hard - -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 - languageName: node - linkType: hard - -"code-point-at@npm:^1.0.0": - version: 1.1.0 - resolution: "code-point-at@npm:1.1.0" - checksum: 17d5666611f9b16d64fdf48176d9b7fb1c7d1c1607a189f7e600040a11a6616982876af148230336adb7d8fe728a559f743a4e29db3747e3b1a32fa7f4529681 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - -"command-line-args@npm:^5.1.1": - version: 5.2.0 - resolution: "command-line-args@npm:5.2.0" - dependencies: - array-back: ^3.1.0 - find-replace: ^3.0.0 - lodash.camelcase: ^4.3.0 - typical: ^4.0.0 - checksum: a63dd41541fc98fcef7a5f4f63e626a6c5955fae57247b604077f1d0cfbff58c5830240880903342785a0c40952c4bbd3a977425ba3f4c7d515253296843a566 - languageName: node - linkType: hard - -"command-line-usage@npm:^6.1.1": - version: 6.1.1 - resolution: "command-line-usage@npm:6.1.1" - dependencies: - array-back: ^4.0.1 - chalk: ^2.4.2 - table-layout: ^1.0.1 - typical: ^5.2.0 - checksum: f84268a10449323cc838cec3eeaa962b0e63b93142bbeb9202e3e5406ecbbc91fd018d235a49088430f5b757fa1e9c086c3ca141583cfc3950d3fb366b0b2fed - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af - languageName: node - linkType: hard - -"console-control-strings@npm:^1.0.0, console-control-strings@npm:~1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed - languageName: node - linkType: hard - -"content-disposition@npm:~0.5.2": - version: 0.5.3 - resolution: "content-disposition@npm:0.5.3" - dependencies: - safe-buffer: 5.1.2 - checksum: 95bf164c0b0b8199d3f44b7631e51b37f683c6a90b9baa4315bd3d405a6d1bc81b7346f0981046aa004331fb3d7a28b629514d01fc209a5251573fc7e4d33380 - languageName: node - linkType: hard - -"content-type@npm:^1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 - languageName: node - linkType: hard - -"cookies@npm:~0.8.0": - version: 0.8.0 - resolution: "cookies@npm:0.8.0" - dependencies: - depd: ~2.0.0 - keygrip: ~1.1.0 - checksum: 806055a44f128705265b1bc6a853058da18bf80dea3654ad99be20985b1fa1b14f86c1eef73644aab8071241f8a78acd57202b54c4c5c70769fc694fbb9c4edc - languageName: node - linkType: hard - -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99 - languageName: node - linkType: hard - -"debounce@npm:^1.2.0": - version: 1.2.1 - resolution: "debounce@npm:1.2.1" - checksum: 682a89506d9e54fb109526f4da255c5546102fbb8e3ae75eef3b04effaf5d4853756aee97475cd4650641869794e44f410eeb20ace2b18ea592287ab2038519e - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2": - version: 4.3.2 - resolution: "debug@npm:4.3.2" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 820ea160e267e23c953c9ed87e7ad93494d8cda2f7349af5e7e3bb236d23707ee3022f477d5a7d2ee86ef2bf7d60aa9ab22d1f58080d7deb9dccd073585e1e43 - languageName: node - linkType: hard - -"debug@npm:^3.1.0, debug@npm:^3.1.1": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - -"deep-equal@npm:~1.0.1": - version: 1.0.1 - resolution: "deep-equal@npm:1.0.1" - checksum: 5af8cbfcebf190491878a498caccc7dc9592f8ebd1685b976eacc3825619d222b5e929923163b92c4f414494e2b884f7ebf00c022e8198e8292deb70dd9785f4 - languageName: node - linkType: hard - -"deep-extend@npm:~0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 - languageName: node - linkType: hard - -"deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b - languageName: node - linkType: hard - -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd - languageName: node - linkType: hard - -"depd@npm:^1.1.2, depd@npm:~1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 - languageName: node - linkType: hard - -"depd@npm:^2.0.0, depd@npm:~2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a - languageName: node - linkType: hard - -"destroy@npm:^1.0.4": - version: 1.0.4 - resolution: "destroy@npm:1.0.4" - checksum: da9ab4961dc61677c709da0c25ef01733042614453924d65636a7db37308fef8a24cd1e07172e61173d471ca175371295fbc984b0af5b2b4ff47cd57bd784c03 - languageName: node - linkType: hard - -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 - languageName: node - linkType: hard - -"encodeurl@npm:^1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c - languageName: node - linkType: hard - -"encoding@npm:^0.1.12": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 - languageName: node - linkType: hard - -"es-module-lexer@npm:^0.9.0": - version: 0.9.3 - resolution: "es-module-lexer@npm:0.9.3" - checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 - languageName: node - linkType: hard - -"esbuild-android-arm64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-android-arm64@npm:0.13.12" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-darwin-64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-darwin-64@npm:0.13.12" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"esbuild-darwin-arm64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-darwin-arm64@npm:0.13.12" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-freebsd-64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-freebsd-64@npm:0.13.12" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-freebsd-arm64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-freebsd-arm64@npm:0.13.12" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-32@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-linux-32@npm:0.13.12" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-linux-64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-linux-64@npm:0.13.12" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"esbuild-linux-arm64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-linux-arm64@npm:0.13.12" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-arm@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-linux-arm@npm:0.13.12" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"esbuild-linux-mips64le@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-linux-mips64le@npm:0.13.12" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"esbuild-linux-ppc64le@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-linux-ppc64le@npm:0.13.12" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"esbuild-netbsd-64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-netbsd-64@npm:0.13.12" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-openbsd-64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-openbsd-64@npm:0.13.12" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-sunos-64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-sunos-64@npm:0.13.12" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-32@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-windows-32@npm:0.13.12" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-windows-64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-windows-64@npm:0.13.12" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-arm64@npm:0.13.12": - version: 0.13.12 - resolution: "esbuild-windows-arm64@npm:0.13.12" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"esbuild@npm:^0.13.12": - version: 0.13.12 - resolution: "esbuild@npm:0.13.12" - dependencies: - esbuild-android-arm64: 0.13.12 - esbuild-darwin-64: 0.13.12 - esbuild-darwin-arm64: 0.13.12 - esbuild-freebsd-64: 0.13.12 - esbuild-freebsd-arm64: 0.13.12 - esbuild-linux-32: 0.13.12 - esbuild-linux-64: 0.13.12 - esbuild-linux-arm: 0.13.12 - esbuild-linux-arm64: 0.13.12 - esbuild-linux-mips64le: 0.13.12 - esbuild-linux-ppc64le: 0.13.12 - esbuild-netbsd-64: 0.13.12 - esbuild-openbsd-64: 0.13.12 - esbuild-sunos-64: 0.13.12 - esbuild-windows-32: 0.13.12 - esbuild-windows-64: 0.13.12 - esbuild-windows-arm64: 0.13.12 - dependenciesMeta: - esbuild-android-arm64: - optional: true - esbuild-darwin-64: - optional: true - esbuild-darwin-arm64: - optional: true - esbuild-freebsd-64: - optional: true - esbuild-freebsd-arm64: - optional: true - esbuild-linux-32: - optional: true - esbuild-linux-64: - optional: true - esbuild-linux-arm: - optional: true - esbuild-linux-arm64: - optional: true - esbuild-linux-mips64le: - optional: true - esbuild-linux-ppc64le: - optional: true - esbuild-netbsd-64: - optional: true - esbuild-openbsd-64: - optional: true - esbuild-sunos-64: - optional: true - esbuild-windows-32: - optional: true - esbuild-windows-64: - optional: true - esbuild-windows-arm64: - optional: true - bin: - esbuild: bin/esbuild - checksum: 7ef4ef3e8eec11b832224b8886ccea22f72e89e2d9b59ec45d03bb2a512ca725fdb06e88609884e0721a4b90d1095e3ec898bd6f39a4efa0e2c99770730e0041 - languageName: node - linkType: hard - -"escape-html@npm:^1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"estree-walker@npm:^1.0.1": - version: 1.0.1 - resolution: "estree-walker@npm:1.0.1" - checksum: 7e70da539691f6db03a08e7ce94f394ce2eef4180e136d251af299d41f92fb2d28ebcd9a6e393e3728d7970aeb5358705ddf7209d52fbcb2dd4693f95dcf925f - languageName: node - linkType: hard - -"etag@npm:^1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 - languageName: node - linkType: hard - -"find-replace@npm:^3.0.0": - version: 3.0.0 - resolution: "find-replace@npm:3.0.0" - dependencies: - array-back: ^3.0.1 - checksum: 6b04bcfd79027f5b84aa1dfe100e3295da989bdac4b4de6b277f4d063e78f5c9e92ebc8a1fec6dd3b448c924ba404ee051cc759e14a3ee3e825fa1361025df08 - languageName: node - linkType: hard - -"fresh@npm:~0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@~2.3.2#~builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - -"gauge@npm:~2.7.3": - version: 2.7.4 - resolution: "gauge@npm:2.7.4" - dependencies: - aproba: ^1.0.3 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.0 - object-assign: ^4.1.0 - signal-exit: ^3.0.0 - string-width: ^1.0.1 - strip-ansi: ^3.0.1 - wide-align: ^1.1.0 - checksum: a89b53cee65579b46832e050b5f3a79a832cc422c190de79c6b8e2e15296ab92faddde6ddf2d376875cbba2b043efa99b9e1ed8124e7365f61b04e3cee9d40ee - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad - languageName: node - linkType: hard - -"glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e - languageName: node - linkType: hard - -"glob@npm:^7.1.3, glob@npm:^7.1.4": - version: 7.2.0 - resolution: "glob@npm:7.2.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.6": - version: 4.2.8 - resolution: "graceful-fs@npm:4.2.8" - checksum: 5d224c8969ad0581d551dfabdb06882706b31af2561bd5e2034b4097e67cc27d05232849b8643866585fd0a41c7af152950f8776f4dd5579e9853733f31461c6 - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2": - version: 1.0.2 - resolution: "has-symbols@npm:1.0.2" - checksum: 2309c426071731be792b5be43b3da6fb4ed7cbe8a9a6bcfca1862587709f01b33d575ce8f5c264c1eaad09fca2f9a8208c0a2be156232629daa2dd0c0740976b - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.0": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 - languageName: node - linkType: hard - -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 - languageName: node - linkType: hard - -"http-assert@npm:^1.3.0": - version: 1.5.0 - resolution: "http-assert@npm:1.5.0" - dependencies: - deep-equal: ~1.0.1 - http-errors: ~1.8.0 - checksum: 69c9b3c14cf8b2822916360a365089ce936c883c49068f91c365eccba5c141a9964d19fdda589150a480013bf503bf37d8936c732e9635819339e730ab0e7527 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.0": - version: 4.1.0 - resolution: "http-cache-semantics@npm:4.1.0" - checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 - languageName: node - linkType: hard - -"http-errors@npm:^1.6.3, http-errors@npm:^1.7.3, http-errors@npm:~1.8.0": - version: 1.8.0 - resolution: "http-errors@npm:1.8.0" - dependencies: - depd: ~1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: ">= 1.5.0 < 2" - toidentifier: 1.0.0 - checksum: 873d997bada0340b31cc69cbe8376e47ee142f60375b81447fa3ad7be512dd4026afb3b46ed2257ee59472d43782a34151994b34264b204bcaad02e67ad836cb - languageName: node - linkType: hard - -"http-errors@npm:~1.6.2": - version: 1.6.3 - resolution: "http-errors@npm:1.6.3" - dependencies: - depd: ~1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: ">= 1.4.0 < 2" - checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c - languageName: node - linkType: hard - -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "https-proxy-agent@npm:5.0.0" - dependencies: - agent-base: 6 - debug: 4 - checksum: 165bfb090bd26d47693597661298006841ab733d0c7383a8cb2f17373387a94c903a3ac687090aa739de05e379ab6f868bae84ab4eac288ad85c328cd1ec9e53 - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:~2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 - languageName: node - linkType: hard - -"ip@npm:^1.1.5": - version: 1.1.5 - resolution: "ip@npm:1.1.5" - checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: ^2.0.0 - checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c - languageName: node - linkType: hard - -"is-core-module@npm:^2.2.0": - version: 2.8.0 - resolution: "is-core-module@npm:2.8.0" - dependencies: - has: ^1.0.3 - checksum: f8b52714891e1a6c6577fcb8d5e057bab064a7a30954aab6beb5092e311473eb8da57afd334de4981dc32409ffca998412efc3a2edceb9e397cef6098d21dd91 - languageName: node - linkType: hard - -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^1.0.0": - version: 1.0.0 - resolution: "is-fullwidth-code-point@npm:1.0.0" - dependencies: - number-is-nan: ^1.0.0 - checksum: 4d46a7465a66a8aebcc5340d3b63a56602133874af576a9ca42c6f0f4bd787a743605771c5f246db77da96605fefeffb65fc1dbe862dcc7328f4b4d03edf5a57 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b - languageName: node - linkType: hard - -"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-module@npm:^1.0.0": - version: 1.0.0 - resolution: "is-module@npm:1.0.0" - checksum: 8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 - languageName: node - linkType: hard - -"is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: ^2.0.0 - checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 - languageName: node - linkType: hard - -"isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab - languageName: node - linkType: hard - -"isbinaryfile@npm:^4.0.6": - version: 4.0.8 - resolution: "isbinaryfile@npm:4.0.8" - checksum: 606e3bb648d1a0dee23459d1d937bb2560e66a5281ec7c9ff50e585402d73321ac268d0f34cb7393125b3ebc4c7962d39e50a01cdb8904b52fce08b7ccd2bf9f - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 - languageName: node - linkType: hard - -"keygrip@npm:~1.1.0": - version: 1.1.0 - resolution: "keygrip@npm:1.1.0" - dependencies: - tsscmp: 1.0.6 - checksum: 078cd16a463d187121f0a27c1c9c95c52ad392b620f823431689f345a0501132cee60f6e96914b07d570105af470b96960402accd6c48a0b1f3cd8fac4fa2cae - languageName: node - linkType: hard - -"koa-compose@npm:^4.1.0": - version: 4.1.0 - resolution: "koa-compose@npm:4.1.0" - checksum: 46cb16792d96425e977c2ae4e5cb04930280740e907242ec9c25e3fb8b4a1d7b54451d7432bc24f40ec62255edea71894d2ceeb8238501842b4e48014f2e83db - languageName: node - linkType: hard - -"koa-convert@npm:^2.0.0": - version: 2.0.0 - resolution: "koa-convert@npm:2.0.0" - dependencies: - co: ^4.6.0 - koa-compose: ^4.1.0 - checksum: 7385b3391995f59c1312142e110d5dff677f9850dbfbcf387cd36a7b0af03b5d26e82b811eb9bb008b4f3e661cdab1f8817596e46b1929da2cf6e97a2f7456ed - languageName: node - linkType: hard - -"koa-etag@npm:^4.0.0": - version: 4.0.0 - resolution: "koa-etag@npm:4.0.0" - dependencies: - etag: ^1.8.1 - checksum: b5f413574e1edbd60fbbd0d31720e66565d51bfcb407d1bc3f48d9dd5b45fa5a9e4f69a60e749fad7397348e90de23e943307578d007a69da30faaae432deaf6 - languageName: node - linkType: hard - -"koa-send@npm:^5.0.0, koa-send@npm:^5.0.1": - version: 5.0.1 - resolution: "koa-send@npm:5.0.1" - dependencies: - debug: ^4.1.1 - http-errors: ^1.7.3 - resolve-path: ^1.4.0 - checksum: a9fbaadbe0f50efd157a733df4a1cc2b3b79b0cdf12e67c718641e6038d1792c0bebe40913e6d4ceb707d970301155be3859b98d1ef08b0fd1766f7326b82853 - languageName: node - linkType: hard - -"koa-static@npm:^5.0.0": - version: 5.0.0 - resolution: "koa-static@npm:5.0.0" - dependencies: - debug: ^3.1.0 - koa-send: ^5.0.0 - checksum: 8d9b9c4d2b3b13e8818e804245d784099c4b353b55ddd7dbeeb90f27a2e9f5b6f86bd16a4909e337cb89db4d332d9002e6c0f5056caf75749cab62f93c1f0cc5 - languageName: node - linkType: hard - -"koa@npm:^2.13.0": - version: 2.13.3 - resolution: "koa@npm:2.13.3" - dependencies: - accepts: ^1.3.5 - cache-content-type: ^1.0.0 - content-disposition: ~0.5.2 - content-type: ^1.0.4 - cookies: ~0.8.0 - debug: ^4.3.2 - delegates: ^1.0.0 - depd: ^2.0.0 - destroy: ^1.0.4 - encodeurl: ^1.0.2 - escape-html: ^1.0.3 - fresh: ~0.5.2 - http-assert: ^1.3.0 - http-errors: ^1.6.3 - is-generator-function: ^1.0.7 - koa-compose: ^4.1.0 - koa-convert: ^2.0.0 - on-finished: ^2.3.0 - only: ~0.0.2 - parseurl: ^1.3.2 - statuses: ^1.5.0 - type-is: ^1.6.16 - vary: ^1.1.2 - checksum: 23325dd94606e92774f3822bb3598abf14d9f11b26c7d7267aa54d9dadc6a01f715658aca34ff77e34678431710c128816fd67748646737693bf63c76e8f6707 - languageName: node - linkType: hard - -"lodash.camelcase@npm:^4.3.0": - version: 4.3.0 - resolution: "lodash.camelcase@npm:4.3.0" - checksum: cb9227612f71b83e42de93eccf1232feeb25e705bdb19ba26c04f91e885bfd3dd5c517c4a97137658190581d3493ea3973072ca010aab7e301046d90740393d1 - languageName: node - linkType: hard - -"lodash@npm:^4.17.14": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^9.1.0": - version: 9.1.0 - resolution: "make-fetch-happen@npm:9.1.0" - dependencies: - agentkeepalive: ^4.1.3 - cacache: ^15.2.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^6.0.0 - minipass: ^3.1.3 - minipass-collect: ^1.0.2 - minipass-fetch: ^1.3.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.2 - promise-retry: ^2.0.1 - socks-proxy-agent: ^6.0.0 - ssri: ^8.0.0 - checksum: 0eb371c85fdd0b1584fcfdf3dc3c62395761b3c14658be02620c310305a9a7ecf1617a5e6fb30c1d081c5c8aaf177fa133ee225024313afabb7aa6a10f1e3d04 - languageName: node - linkType: hard - -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 - languageName: node - linkType: hard - -"mime-db@npm:1.50.0": - version: 1.50.0 - resolution: "mime-db@npm:1.50.0" - checksum: 95fcc19c3664ae72391c8a7e4015dde7fb6817c98c951493ca3a1d48050feb8ee08810a372ce7d9e16310042d26e5bda168916f600583a9a583655eeea8ff5f5 - languageName: node - linkType: hard - -"mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:~2.1.24": - version: 2.1.33 - resolution: "mime-types@npm:2.1.33" - dependencies: - mime-db: 1.50.0 - checksum: 05f2a0b3f169fbc51d79bdc7674ceb379dd07dbeadb0143059a7def865224686ee9f9051aeb340e98b6c11dbc06794ce0122181db4312cb1ad054fd90b0d510e - languageName: node - linkType: hard - -"minimatch@npm:^3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" - dependencies: - brace-expansion: ^1.1.7 - checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 - languageName: node - linkType: hard - -"minimist@npm:^1.2.5": - version: 1.2.5 - resolution: "minimist@npm:1.2.5" - checksum: 86706ce5b36c16bfc35c5fe3dbb01d5acdc9a22f2b6cc810b6680656a1d2c0e44a0159c9a3ba51fb072bb5c203e49e10b51dcd0eec39c481f4c42086719bae52 - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 - languageName: node - linkType: hard - -"minipass-fetch@npm:^1.3.2": - version: 1.4.1 - resolution: "minipass-fetch@npm:1.4.1" - dependencies: - encoding: ^0.1.12 - minipass: ^3.1.0 - minipass-sized: ^1.0.3 - minizlib: ^2.0.0 - dependenciesMeta: - encoding: - optional: true - checksum: ec93697bdb62129c4e6c0104138e681e30efef8c15d9429dd172f776f83898471bc76521b539ff913248cc2aa6d2b37b652c993504a51cc53282563640f29216 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3": - version: 3.1.5 - resolution: "minipass@npm:3.1.5" - dependencies: - yallist: ^4.0.0 - checksum: 8b410b9a5bd99ceb9d63c895891d1c30511791fdc7b717da4cf9403ca2419bc57af63b8485ffdaa421ef6cff56f63ae0b2f5135f8df502d21296e8c91460ebf9 - languageName: node - linkType: hard - -"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.5": - version: 0.5.5 - resolution: "mkdirp@npm:0.5.5" - dependencies: - minimist: ^1.2.5 - bin: - mkdirp: bin/cmd.js - checksum: 3bce20ea525f9477befe458ab85284b0b66c8dc3812f94155af07c827175948cdd8114852ac6c6d82009b13c1048c37f6d98743eb019651ee25c39acc8aabe7d - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f - languageName: node - linkType: hard - -"moment@npm:^2.29.1": - version: 2.29.1 - resolution: "moment@npm:2.29.1" - checksum: 1e14d5f422a2687996be11dd2d50c8de3bd577c4a4ca79ba5d02c397242a933e5b941655de6c8cb90ac18f01cc4127e55b4a12ae3c527a6c0a274e455979345e - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:^2.0.0, ms@npm:^2.1.1": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"nanocolors@npm:^0.2.1": - version: 0.2.13 - resolution: "nanocolors@npm:0.2.13" - checksum: 01ac5aab77295c66cef83ea5f595e22f5f91518f19fae12f93ca2cba98703f971e32611fea2983f333eb7e60604043005690f61d9759e7c0a32314942fe6ddb8 - languageName: node - linkType: hard - -"negotiator@npm:0.6.2, negotiator@npm:^0.6.2": - version: 0.6.2 - resolution: "negotiator@npm:0.6.2" - checksum: dfddaff6c06792f1c4c3809e29a427b8daef8cd437c83b08dd51d7ee11bbd1c29d9512d66b801144d6c98e910ffd8723f2432e0cbf8b18d41d2a09599c975ab3 - languageName: node - linkType: hard - -"ng-material-datetimepicker@workspace:.": - version: 0.0.0-use.local - resolution: "ng-material-datetimepicker@workspace:." - dependencies: - "@web/dev-server": ^0.1.27 - angular: ^1.8.2 - angular-animate: ^1.8.2 - angular-aria: ^1.8.2 - angular-material: ^1.2.3 - angular-messages: ^1.8.2 - esbuild: ^0.13.12 - moment: ^2.29.1 - languageName: unknown - linkType: soft - -"node-gyp@npm:latest": - version: 8.4.0 - resolution: "node-gyp@npm:8.4.0" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^9.1.0 - nopt: ^5.0.0 - npmlog: ^4.1.2 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: a5a0045f6a1708a7760cfee2b5e2cd9072dd6a0d5d3376bb96e0bae1f1e43d14a0bd54970e1fbd2632cceb9c23d36a3efabe88c26256693e969566cf977501c2 - languageName: node - linkType: hard - -"nopt@npm:^5.0.0": - version: 5.0.0 - resolution: "nopt@npm:5.0.0" - dependencies: - abbrev: 1 - bin: - nopt: bin/nopt.js - checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - -"npmlog@npm:^4.1.2": - version: 4.1.2 - resolution: "npmlog@npm:4.1.2" - dependencies: - are-we-there-yet: ~1.1.2 - console-control-strings: ~1.1.0 - gauge: ~2.7.3 - set-blocking: ~2.0.0 - checksum: edbda9f95ec20957a892de1839afc6fb735054c3accf6fbefe767bac9a639fd5cea2baeac6bd2bcd50a85cb54924d57d9886c81c7fbc2332c2ddd19227504192 - languageName: node - linkType: hard - -"number-is-nan@npm:^1.0.0": - version: 1.0.1 - resolution: "number-is-nan@npm:1.0.1" - checksum: 13656bc9aa771b96cef209ffca31c31a03b507ca6862ba7c3f638a283560620d723d52e626d57892c7fff475f4c36ac07f0600f14544692ff595abff214b9ffb - languageName: node - linkType: hard - -"object-assign@npm:^4.1.0": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f - languageName: node - linkType: hard - -"on-finished@npm:^2.3.0": - version: 2.3.0 - resolution: "on-finished@npm:2.3.0" - dependencies: - ee-first: 1.1.1 - checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b - languageName: node - linkType: hard - -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"only@npm:~0.0.2": - version: 0.0.2 - resolution: "only@npm:0.0.2" - checksum: d399710db867a1ef436dd3ce74499c87ece794aa81ab0370b5d153968766ee4aed2f98d3f92fc87c963e45b7a74d400d6f463ef651a5e7cfb861b15e88e9efe6 - languageName: node - linkType: hard - -"open@npm:^8.0.2": - version: 8.3.0 - resolution: "open@npm:8.3.0" - dependencies: - define-lazy-prop: ^2.0.0 - is-docker: ^2.1.1 - is-wsl: ^2.2.0 - checksum: 10fcb7ad453534cc1103ff90e0ebc36e542d67a4ccacf3b3d78c8e6401cec686e2849479cbc4a3386c7a3210064cbcc52e6ac38b788fc5fff1cf1dcbfef3c83b - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c - languageName: node - linkType: hard - -"parse5@npm:^6.0.1": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd - languageName: node - linkType: hard - -"parseurl@npm:^1.3.2": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 - languageName: node - linkType: hard - -"path-is-absolute@npm:1.0.1, path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.6": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2": - version: 2.3.0 - resolution: "picomatch@npm:2.3.0" - checksum: 16818720ea7c5872b6af110760dee856c8e4cd79aed1c7a006d076b1cc09eff3ae41ca5019966694c33fbd2e1cc6ea617ab10e4adac6df06556168f13be3fca2 - languageName: node - linkType: hard - -"portfinder@npm:^1.0.28": - version: 1.0.28 - resolution: "portfinder@npm:1.0.28" - dependencies: - async: ^2.6.2 - debug: ^3.1.1 - mkdirp: ^0.5.5 - checksum: 91fef602f13f8f4c64385d0ad2a36cc9dc6be0b8d10a2628ee2c3c7b9917ab4fefb458815b82cea2abf4b785cd11c9b4e2d917ac6fa06f14b6fa880ca8f8928c - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf - languageName: node - linkType: hard - -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 - languageName: node - linkType: hard - -"punycode@npm:^2.1.1": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 - languageName: node - linkType: hard - -"readable-stream@npm:^2.0.6": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.3 - isarray: ~1.0.0 - process-nextick-args: ~2.0.0 - safe-buffer: ~5.1.1 - string_decoder: ~1.1.1 - util-deprecate: ~1.0.1 - checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: ^2.2.1 - checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 - languageName: node - linkType: hard - -"reduce-flatten@npm:^2.0.0": - version: 2.0.0 - resolution: "reduce-flatten@npm:2.0.0" - checksum: 64393ef99a16b20692acfd60982d7fdbd7ff8d9f8f185c6023466444c6dd2abb929d67717a83cec7f7f8fb5f46a25d515b3b2bf2238fdbfcdbfd01d2a9e73cb8 - languageName: node - linkType: hard - -"resolve-path@npm:^1.4.0": - version: 1.4.0 - resolution: "resolve-path@npm:1.4.0" - dependencies: - http-errors: ~1.6.2 - path-is-absolute: 1.0.1 - checksum: 1a39f569ee54dd5f8ee8576ef8671c9724bea65d9f9982fbb5352af9fb4e500e1e459c1bfb1ae3ebfd8d43a709c3a01dfa4f46cf5b831e45e2caed4f1a208300 - languageName: node - linkType: hard - -"resolve@npm:^1.19.0": - version: 1.20.0 - resolution: "resolve@npm:1.20.0" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: 40cf70b2cde00ef57f99daf2dc63c6a56d6c14a1b7fc51735d06a6f0a3b97cb67b4fb7ef6c747b4e13a7baba83b0ef625d7c4ce92a483cd5af923c3b65fd16fe - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.19.0#~builtin": - version: 1.20.0 - resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=07638b" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: a0dd7d16a8e47af23afa9386df2dff10e3e0debb2c7299a42e581d9d9b04d7ad5d2c53f24f1e043f7b3c250cbdc71150063e53d0b6559683d37f790b7c8c3cd5 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c - languageName: node - linkType: hard - -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - -"rollup@npm:^2.58.0": - version: 2.58.0 - resolution: "rollup@npm:2.58.0" - dependencies: - fsevents: ~2.3.2 - dependenciesMeta: - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: a5e5642f2b1e239e3698eeee93b19d905e55e3012c63978cebc71e76c0a4eb2de5cff06a2a80d68bf87fe6869c57647cccc335daba280a5449a9214abdeca247 - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: f2f1f7943ca44a594893a852894055cf619c1fbcb611237fc39e461ae751187e7baf4dc391a72125e0ac4fb2d8c5c0b3c71529622e6a58f46b960211e704903c - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 - languageName: node - linkType: hard - -"semver@npm:^7.3.4, semver@npm:^7.3.5": - version: 7.3.5 - resolution: "semver@npm:7.3.5" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 5eafe6102bea2a7439897c1856362e31cc348ccf96efd455c8b5bc2c61e6f7e7b8250dc26b8828c1d76a56f818a7ee907a36ae9fb37a599d3d24609207001d60 - languageName: node - linkType: hard - -"set-blocking@npm:~2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 - languageName: node - linkType: hard - -"setprototypeof@npm:1.1.0": - version: 1.1.0 - resolution: "setprototypeof@npm:1.1.0" - checksum: 27cb44304d6c9e1a23bc6c706af4acaae1a7aa1054d4ec13c05f01a99fd4887109a83a8042b67ad90dbfcd100d43efc171ee036eb080667172079213242ca36e - languageName: node - linkType: hard - -"setprototypeof@npm:1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.0": - version: 3.0.5 - resolution: "signal-exit@npm:3.0.5" - checksum: a1d3d0d63f581bd298b30ed8f6de21b73a0fe5a0c0f123b2e8ed7168bbff8f4c1a45e681de12a1966a89bb725d8eb727816be1c436e136951f31953e4a201587 - languageName: node - linkType: hard - -"smart-buffer@npm:^4.1.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^6.0.0": - version: 6.1.0 - resolution: "socks-proxy-agent@npm:6.1.0" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.1 - socks: ^2.6.1 - checksum: 32ea0d62c848b5c246955e8d6c34832fe6cd8c5f3b66f5ace3a9bd7387bafae3e67d96474d41291723ba7135e2da46d65e008a8a35a793dfa5cb0f4ac05429df - languageName: node - linkType: hard - -"socks@npm:^2.6.1": - version: 2.6.1 - resolution: "socks@npm:2.6.1" - dependencies: - ip: ^1.1.5 - smart-buffer: ^4.1.0 - checksum: 2ca9d616e424f645838ebaabb04f85d94ea999e0f8393dc07f86c435af22ed88cb83958feeabd1bb7bc537c635ed47454255635502c6808a6df61af1f41af750 - languageName: node - linkType: hard - -"ssri@npm:^8.0.0, ssri@npm:^8.0.1": - version: 8.0.1 - resolution: "ssri@npm:8.0.1" - dependencies: - minipass: ^3.1.1 - checksum: bc447f5af814fa9713aa201ec2522208ae0f4d8f3bda7a1f445a797c7b929a02720436ff7c478fb5edc4045adb02b1b88d2341b436a80798734e2494f1067b36 - languageName: node - linkType: hard - -"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:^1.5.0": - version: 1.5.0 - resolution: "statuses@npm:1.5.0" - checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c - languageName: node - linkType: hard - -"string-width@npm:^1.0.1": - version: 1.0.2 - resolution: "string-width@npm:1.0.2" - dependencies: - code-point-at: ^1.0.0 - is-fullwidth-code-point: ^1.0.0 - strip-ansi: ^3.0.0 - checksum: 5c79439e95bc3bd7233a332c5f5926ab2ee90b23816ed4faa380ce3b2576d7800b0a5bb15ae88ed28737acc7ea06a518c2eef39142dd727adad0e45c776cd37e - languageName: node - linkType: hard - -"string-width@npm:^1.0.2 || 2 || 3 || 4": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: ~5.1.0 - checksum: 9ab7e56f9d60a28f2be697419917c50cac19f3e8e6c28ef26ed5f4852289fe0de5d6997d29becf59028556f2c62983790c1d9ba1e2a3cc401768ca12d5183a5b - languageName: node - linkType: hard - -"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": - version: 3.0.1 - resolution: "strip-ansi@npm:3.0.1" - dependencies: - ansi-regex: ^2.0.0 - checksum: 9b974de611ce5075c70629c00fa98c46144043db92ae17748fb780f706f7a789e9989fd10597b7c2053ae8d1513fd707816a91f1879b2f71e6ac0b6a863db465 - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - -"table-layout@npm:^1.0.1": - version: 1.0.2 - resolution: "table-layout@npm:1.0.2" - dependencies: - array-back: ^4.0.1 - deep-extend: ~0.6.0 - typical: ^5.2.0 - wordwrapjs: ^4.0.0 - checksum: 8f41b5671f101a5195747ec1727b1d35ea2cd5bf85addda11cc2f4b36892db9696ce3c2c7334b5b8a122505b34d19135fede50e25678df71b0439e0704fd953f - languageName: node - linkType: hard - -"tar@npm:^6.0.2, tar@npm:^6.1.2": - version: 6.1.11 - resolution: "tar@npm:6.1.11" - dependencies: - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - minipass: ^3.0.0 - minizlib: ^2.1.1 - mkdirp: ^1.0.3 - yallist: ^4.0.0 - checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"toidentifier@npm:1.0.0": - version: 1.0.0 - resolution: "toidentifier@npm:1.0.0" - checksum: 199e6bfca1531d49b3506cff02353d53ec987c9ee10ee272ca6484ed97f1fc10fb77c6c009079ca16d5c5be4a10378178c3cacdb41ce9ec954c3297c74c6053e - languageName: node - linkType: hard - -"tr46@npm:^3.0.0": - version: 3.0.0 - resolution: "tr46@npm:3.0.0" - dependencies: - punycode: ^2.1.1 - checksum: 44c3cc6767fb800490e6e9fd64fd49041aa4e49e1f6a012b34a75de739cc9ed3a6405296072c1df8b6389ae139c5e7c6496f659cfe13a04a4bff3a1422981270 - languageName: node - linkType: hard - -"tsscmp@npm:1.0.6": - version: 1.0.6 - resolution: "tsscmp@npm:1.0.6" - checksum: 1512384def36bccc9125cabbd4c3b0e68608d7ee08127ceaa0b84a71797263f1a01c7f82fa69be8a3bd3c1396e2965d2f7b52d581d3a5eeaf3967fbc52e3b3bf - languageName: node - linkType: hard - -"type-is@npm:^1.6.16": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: 0.3.0 - mime-types: ~2.1.24 - checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 - languageName: node - linkType: hard - -"typical@npm:^4.0.0": - version: 4.0.0 - resolution: "typical@npm:4.0.0" - checksum: a242081956825328f535e6195a924240b34daf6e7fdb573a1809a42b9f37fb8114fa99c7ab89a695e0cdb419d4149d067f6723e4b95855ffd39c6c4ca378efb3 - languageName: node - linkType: hard - -"typical@npm:^5.2.0": - version: 5.2.0 - resolution: "typical@npm:5.2.0" - checksum: ccaeb151a9a556291b495571ca44c4660f736fb49c29314bbf773c90fad92e9485d3cc2b074c933866c1595abbbc962f2b8bfc6e0f52a8c6b0cdd205442036ac - languageName: node - linkType: hard - -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" - dependencies: - unique-slug: ^2.0.0 - checksum: cf4998c9228cc7647ba7814e255dec51be43673903897b1786eff2ac2d670f54d4d733357eb08dea969aa5e6875d0e1bd391d668fbdb5a179744e7c7551a6f80 - languageName: node - linkType: hard - -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" - dependencies: - imurmurhash: ^0.1.4 - checksum: 5b6876a645da08d505dedb970d1571f6cebdf87044cb6b740c8dbb24f0d6e1dc8bdbf46825fd09f994d7cf50760e6f6e063cfa197d51c5902c00a861702eb75a - languageName: node - linkType: hard - -"util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - -"vary@npm:^1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b - languageName: node - linkType: hard - -"webidl-conversions@npm:^7.0.0": - version: 7.0.0 - resolution: "webidl-conversions@npm:7.0.0" - checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b - languageName: node - linkType: hard - -"whatwg-url@npm:^11.0.0": - version: 11.0.0 - resolution: "whatwg-url@npm:11.0.0" - dependencies: - tr46: ^3.0.0 - webidl-conversions: ^7.0.0 - checksum: ed4826aaa57e66bb3488a4b25c9cd476c46ba96052747388b5801f137dd740b73fde91ad207d96baf9f17fbcc80fc1a477ad65181b5eb5fa718d27c69501d7af - languageName: node - linkType: hard - -"which@npm:^2.0.2": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: ^2.0.0 - bin: - node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 - languageName: node - linkType: hard - -"wide-align@npm:^1.1.0": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 - languageName: node - linkType: hard - -"wordwrapjs@npm:^4.0.0": - version: 4.0.1 - resolution: "wordwrapjs@npm:4.0.1" - dependencies: - reduce-flatten: ^2.0.0 - typical: ^5.2.0 - checksum: 3d927f3c95d0ad990968da54c0ad8cde2801d8e91006cd7474c26e6b742cc8557250ce495c9732b2f9db1f903601cb74ec282e0f122ee0d02d7abe81e150eea8 - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"ws@npm:^7.4.2": - version: 7.5.5 - resolution: "ws@npm:7.5.5" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: bd2b437256012af526c69c03d6670a132e7ab0fe5853f3b7092826acea4203fad4ee2a8d0d9bd44834b2b968e747bf34f753ab535f4a3edf40d262da4b1d0805 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - -"ylru@npm:^1.2.0": - version: 1.2.1 - resolution: "ylru@npm:1.2.1" - checksum: 33c45248becece949d4511a13f66b2330852f6226da6c2842bf16f0b0ee45bbbfcdf6b8da3d4c52d6cd5106818eeb3674dd73a17e87c945d1839c470107549e2 - languageName: node - linkType: hard +"@babel/code-frame@^7.12.11": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + +"@babel/highlight@^7.16.7": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@rollup/plugin-node-resolve@^11.0.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@types/accepts@*": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" + dependencies: + "@types/node" "*" + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/command-line-args@^5.0.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + dependencies: + "@types/node" "*" + +"@types/content-disposition@*": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.4.tgz#de48cf01c79c9f1560bcfd8ae43217ab028657f8" + +"@types/cookies@*": + version "0.7.7" + resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" + dependencies: + "@types/connect" "*" + "@types/express" "*" + "@types/keygrip" "*" + "@types/node" "*" + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + +"@types/express-serve-static-core@^4.17.18": + version "4.17.28" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/http-assert@*": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" + +"@types/http-errors@*": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.2.tgz#7315b4c4c54f82d13fa61c228ec5c2ea5cc9e0e1" + +"@types/keygrip@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" + +"@types/koa-compose@*": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" + dependencies: + "@types/koa" "*" + +"@types/koa@*", "@types/koa@^2.11.6": + version "2.13.4" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.4.tgz#10620b3f24a8027ef5cbae88b393d1b31205726b" + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + +"@types/node@*": + version "17.0.23" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" + +"@types/parse5@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + dependencies: + "@types/node" "*" + +"@types/serve-static@*": + version "1.13.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/ws@^7.4.0": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + dependencies: + "@types/node" "*" + +"@web/config-loader@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@web/config-loader/-/config-loader-0.1.3.tgz#8325ea54f75ef2ee7166783e64e66936db25bff7" + dependencies: + semver "^7.3.4" + +"@web/dev-server-core@^0.3.16", "@web/dev-server-core@^0.3.17": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.3.17.tgz#95e87681b63644a955e29e13ffc6b48fd2c51264" + dependencies: + "@types/koa" "^2.11.6" + "@types/ws" "^7.4.0" + "@web/parse5-utils" "^1.2.0" + chokidar "^3.4.3" + clone "^2.1.2" + es-module-lexer "^0.9.0" + get-stream "^6.0.0" + is-stream "^2.0.0" + isbinaryfile "^4.0.6" + koa "^2.13.0" + koa-etag "^4.0.0" + koa-send "^5.0.1" + koa-static "^5.0.0" + lru-cache "^6.0.0" + mime-types "^2.1.27" + parse5 "^6.0.1" + picomatch "^2.2.2" + ws "^7.4.2" + +"@web/dev-server-rollup@^0.3.13": + version "0.3.15" + resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.3.15.tgz#c0211fef837b9b733c1dd0849f60d4ece1c1dea4" + dependencies: + "@rollup/plugin-node-resolve" "^11.0.1" + "@web/dev-server-core" "^0.3.16" + nanocolors "^0.2.1" + parse5 "^6.0.1" + rollup "^2.66.1" + whatwg-url "^11.0.0" + +"@web/dev-server@^0.1.27": + version "0.1.30" + resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.1.30.tgz#dbc519fafb323da4744f804310b19abeebac9f86" + dependencies: + "@babel/code-frame" "^7.12.11" + "@types/command-line-args" "^5.0.0" + "@web/config-loader" "^0.1.3" + "@web/dev-server-core" "^0.3.17" + "@web/dev-server-rollup" "^0.3.13" + camelcase "^6.2.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.1" + debounce "^1.2.0" + deepmerge "^4.2.2" + ip "^1.1.5" + nanocolors "^0.2.1" + open "^8.0.2" + portfinder "^1.0.28" + +"@web/parse5-utils@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.3.0.tgz#e2e9e98b31a4ca948309f74891bda8d77399f6bd" + dependencies: + "@types/parse5" "^6.0.1" + parse5 "^6.0.1" + +accepts@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +angular-animate@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.8.2.tgz#a3045e523ffb8d7fcbebd3cb68d1fdd474665ced" + +angular-aria@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.8.2.tgz#3e5d546e549d8bddcf0b8031c677d3129d82a76d" + +angular-material@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.2.4.tgz#c8c4212b8895db205530f58f3b7a0ebccff9a64e" + +angular-messages@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.8.2.tgz#47f0cf913030bc2231423ab9388acc14dd931837" + +angular@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.2.tgz#5983bbb5a9fa63e213cb7749199e0d352de3a2f1" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + +array-back@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + dependencies: + lodash "^4.17.14" + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + dependencies: + fill-range "^7.0.1" + +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + +cache-content-type@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" + dependencies: + mime-types "^2.1.18" + ylru "^1.2.0" + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^3.4.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.2.tgz#2b7ccd48a93fb19bd71ca8fe9900feab00e557b0" + dependencies: + array-back "^4.0.1" + chalk "^2.4.2" + table-layout "^1.0.1" + typical "^5.2.0" + +content-disposition@~0.5.2: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + dependencies: + safe-buffer "5.2.1" + +content-type@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + +cookies@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + +debounce@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + +debug@^3.1.0, debug@^3.1.1: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + dependencies: + ms "^2.1.1" + +debug@^4.1.1, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + dependencies: + ms "2.1.2" + +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@^2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + +destroy@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +encodeurl@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + +esbuild-android-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" + +esbuild-darwin-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" + +esbuild-darwin-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" + +esbuild-freebsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" + +esbuild-freebsd-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" + +esbuild-linux-32@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" + +esbuild-linux-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" + +esbuild-linux-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" + +esbuild-linux-arm@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" + +esbuild-linux-mips64le@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" + +esbuild-linux-ppc64le@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" + +esbuild-netbsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" + +esbuild-openbsd-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" + +esbuild-sunos-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" + +esbuild-windows-32@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" + +esbuild-windows-64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" + +esbuild-windows-arm64@0.13.15: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" + +esbuild@^0.13.12: + version "0.13.15" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" + optionalDependencies: + esbuild-android-arm64 "0.13.15" + esbuild-darwin-64 "0.13.15" + esbuild-darwin-arm64 "0.13.15" + esbuild-freebsd-64 "0.13.15" + esbuild-freebsd-arm64 "0.13.15" + esbuild-linux-32 "0.13.15" + esbuild-linux-64 "0.13.15" + esbuild-linux-arm "0.13.15" + esbuild-linux-arm64 "0.13.15" + esbuild-linux-mips64le "0.13.15" + esbuild-linux-ppc64le "0.13.15" + esbuild-netbsd-64 "0.13.15" + esbuild-openbsd-64 "0.13.15" + esbuild-sunos-64 "0.13.15" + esbuild-windows-32 "0.13.15" + esbuild-windows-64 "0.13.15" + esbuild-windows-arm64 "0.13.15" + +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + +etag@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + dependencies: + to-regex-range "^5.0.1" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + dependencies: + array-back "^3.0.1" + +fresh@~0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + dependencies: + is-glob "^4.0.1" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-symbols@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + dependencies: + function-bind "^1.1.1" + +http-assert@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" + dependencies: + deep-equal "~1.0.1" + http-errors "~1.8.0" + +http-errors@^1.6.3, http-errors@^1.7.3, http-errors@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + +ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + dependencies: + has "^1.0.3" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + dependencies: + is-docker "^2.0.0" + +isbinaryfile@^4.0.6: + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + dependencies: + tsscmp "1.0.6" + +koa-compose@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" + +koa-convert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" + dependencies: + co "^4.6.0" + koa-compose "^4.1.0" + +koa-etag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/koa-etag/-/koa-etag-4.0.0.tgz#2c2bb7ae69ca1ac6ced09ba28dcb78523c810414" + dependencies: + etag "^1.8.1" + +koa-send@^5.0.0, koa-send@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/koa-send/-/koa-send-5.0.1.tgz#39dceebfafb395d0d60beaffba3a70b4f543fe79" + dependencies: + debug "^4.1.1" + http-errors "^1.7.3" + resolve-path "^1.4.0" + +koa-static@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/koa-static/-/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" + dependencies: + debug "^3.1.0" + koa-send "^5.0.0" + +koa@^2.13.0: + version "2.13.4" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.4.tgz#ee5b0cb39e0b8069c38d115139c774833d32462e" + dependencies: + accepts "^1.3.5" + cache-content-type "^1.0.0" + content-disposition "~0.5.2" + content-type "^1.0.4" + cookies "~0.8.0" + debug "^4.3.2" + delegates "^1.0.0" + depd "^2.0.0" + destroy "^1.0.4" + encodeurl "^1.0.2" + escape-html "^1.0.3" + fresh "~0.5.2" + http-assert "^1.3.0" + http-errors "^1.6.3" + is-generator-function "^1.0.7" + koa-compose "^4.1.0" + koa-convert "^2.0.0" + on-finished "^2.3.0" + only "~0.0.2" + parseurl "^1.3.2" + statuses "^1.5.0" + type-is "^1.6.16" + vary "^1.1.2" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + +lodash@^4.17.14: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + dependencies: + yallist "^4.0.0" + +lru-cache@^7.4.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.8.0.tgz#649aaeb294a56297b5cbc5d70f198dcc5ebe5747" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + +mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + dependencies: + mime-db "1.52.0" + +minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + +mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + dependencies: + minimist "^1.2.6" + +moment@^2.29.1: + version "2.29.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.2.tgz#00910c60b20843bcba52d37d58c628b47b1f20e4" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + +nanocolors@^0.2.1: + version "0.2.13" + resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b" + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + +on-finished@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + dependencies: + ee-first "1.1.1" + +only@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" + +open@^8.0.2: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + +parseurl@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + +path-is-absolute@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + +portfinder@^1.0.28: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + dependencies: + picomatch "^2.2.1" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + +resolve-path@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" + dependencies: + http-errors "~1.6.2" + path-is-absolute "1.0.1" + +resolve@^1.19.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rollup@^2.66.1: + version "2.70.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.1.tgz#824b1f1f879ea396db30b0fc3ae8d2fead93523e" + optionalDependencies: + fsevents "~2.3.2" + +safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + +semver@^7.3.4: + version "7.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.6.tgz#5d73886fb9c0c6602e79440b97165c29581cbb2b" + dependencies: + lru-cache "^7.4.0" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + dependencies: + has-flag "^3.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + +table-layout@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + dependencies: + punycode "^2.1.1" + +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + +type-is@^1.6.16: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + +vary@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +ws@^7.4.2: + version "7.5.7" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + +ylru@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.3.2.tgz#0de48017473275a4cbdfc83a1eaf67c01af8a785" From efdb93e9aac0e28d3a9466c90ceff57d56e8a531 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Apr 2022 03:49:05 +0000 Subject: [PATCH 223/226] Bump async from 2.6.3 to 2.6.4 Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4. - [Release notes](https://github.com/caolan/async/releases) - [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md) - [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4) --- updated-dependencies: - dependency-name: async dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2032841..6015b71 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,3 +1,7 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + "@babel/code-frame@^7.12.11": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" @@ -277,8 +281,8 @@ array-back@^4.0.1: resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" dependencies: lodash "^4.17.14" From 71b2ef445a04d70c8db6a7eadd24c49a5c033f68 Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 16 Apr 2022 18:47:56 -0400 Subject: [PATCH 224/226] #88 disable dragstart --- README.md | 6 +- dist/angular-material-datetimepicker.min.js | 2 +- ...angular-material-datetimepicker.min.js.map | 4 +- index.html | 10 +- js/angular-material-datetimepicker.js | 3 + package.json | 10 +- yarn.lock | 3502 ++++++++++++----- 7 files changed, 2495 insertions(+), 1042 deletions(-) diff --git a/README.md b/README.md index 665c09e..b1e050e 100644 --- a/README.md +++ b/README.md @@ -56,9 +56,9 @@ Depends on the following library: - - - + + + ``` ## Installing with yarn or npm diff --git a/dist/angular-material-datetimepicker.min.js b/dist/angular-material-datetimepicker.min.js index 8733bc0..65d6d4f 100644 --- a/dist/angular-material-datetimepicker.min.js +++ b/dist/angular-material-datetimepicker.min.js @@ -1,2 +1,2 @@ -(function(){"use strict";function P(o){var N="ngMaterialDatePicker",G="data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+",Q="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",M={DATE:0,HOUR:1,MINUTE:2},V=function(i,n){return i=angular.element(i),"getComputedStyle"in window?window.getComputedStyle(i[0])[n]:i.css(n)},H=`
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
`;angular.module(N,["ngMaterial"]).factory("mdcDefaultParams",function(){var i={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:H,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(n){if(n)for(var a in n)i.hasOwnProperty(a)&&n.hasOwnProperty(a)&&(i[a]=n[a]);return i}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$parse",function(i,n,a,r){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(t,s,f,e){var d=!1;t.format||(t.date&&t.time&&t.seconds?t.format="YYYY-MM-DD HH:mm:ss":t.date&&t.time?t.format="YYYY-MM-DD HH:mm":t.date?t.format="YYYY-MM-DD":t.format="HH:mm");var S=null;t.showTodaysDate!==void 0&&t.showTodaysDate!=="false"&&(S=o()),angular.isString(t.currentDate)&&t.currentDate!==""&&(t.currentDate=o(t.currentDate,t.format));var c;if(e){var u={"*":"$inherit",debounce:500};angular.version.major===1&&angular.version.minor>5?(e.$options=e.$options.createChild(u),e.$options.getOption("timezone")&&(c=e.$options.getOption("timezone"))):(t.ngModelOptions&&t.ngModelOptions.timezone&&(u.timezone=t.ngModelOptions.timezone),e.$options=u,e.$options.timezone&&(c=e.$options.timezone)),(c==="utc"||c==="UTC")&&(c=0),e.$formatters.push(function(D){if(typeof D!="undefined"){var p=o(D);return p.isValid()?p.format(t.format):""}}),e.$parsers.push(function(D){if(typeof D!="undefined"){var p=o(D,t.format);return c!==void 0&&p.utcOffset(c,p._tzm===void 0),t.minDate&&e.$setValidity("min",!p.isBefore(t.minDate)),t.maxDate&&e.$setValidity("max",!p.isAfter(t.maxDate)),e.$setValidity("format",o(D,t.format,!0).isValid()),p.isValid()?p._isUTC?p:p.toDate():""}})}function v(D){if(D.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var p={};for(var T in f)t.hasOwnProperty(T)&&!angular.isUndefined(t[T])&&(p[T]=t[T]);p.currentDate=t.currentDate,p.showTodaysDate=S;var l={controller:C,controllerAs:"picker",locals:{options:p},openFrom:s,closeTo:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:p.clickOutsideToClose||!1,disableParentScroll:p.disableParentScroll||!1,hasBackdrop:p.hasBackdrop===void 0?!0:p.hasBackdrop,skipHide:!0,multiple:!0};p.templateUrl?l.templateUrl=p.templateUrl:l.template=H,i.show(l).then(function(m){c!==void 0&&m.utcOffset(c,!0),t.currentDate=m&&!m._isUTC?m.toDate():m,e.$setValidity("format",!0),e.$setViewValue(t.currentDate),e.$setDirty(),d=!1,o(t.currentDate).isSame(p.currentDate)||n(t.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}}if(t.editInput||(t.showIcon?s.on("click",v):s.on("focus",v)),t.showIcon){s.addClass("dtp-no-msclear dtp-input");var b='',y="";(t.showClear===void 0||t.showClear)&&(y="'),s.after(a(b+y)(t)),t.openCalendarDiag=function(D){v(D)},t.clear=function(){e.$setViewValue(null),t.currentDate=null,e.$render(),n(function(){t.ngChange(),s[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){var a={show:function(r){var t=n.defer();r.showTodaysDate!==void 0&&r.showTodaysDate!=="false"&&(r.showTodaysDate=o());var s={controller:C,controllerAs:"picker",locals:{options:r},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:r.clickOutsideToClose||!1,disableParentScroll:r.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:r.hasBackdrop===void 0?!0:r.hasBackdrop,targetEvent:r.targetEvent,openFrom:r.openFrom,closeTo:r.closeTo};return r.templateUrl?s.templateUrl=r.templateUrl:s.template=H,i.show(s).then(function(f){t.resolve(f&&!f._isUTC?f.toDate():f)},function(){t.reject()}),t.promise}};return a}]);var C=function(i,n){this.currentView=M.DATE,this._dialog=i,this._attachedEvents=[],this.VIEWS=M,this.params=angular.copy(n()),this.meridien="AM"};return C.$inject=["$mdDialog","mdcDefaultParams"],C.prototype={$onInit:function(){this.params=angular.extend(this.params,this.options),this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var i=this.params.minuteSteps;(i<1||i>59)&&(i=1);var n=this.currentDate||o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;return this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,o(n).minutes(a).seconds(r).millisecond(0)},initDates:function(){var i=this,n=function(a,r){var t=null;if(angular.isDefined(a)&&a!==null&&a!=="")if(angular.isString(a))typeof i.params.format!="undefined"&&i.params.format!==null?t=o(a,i.params.format).locale(i.params.lang):t=o(a).locale(i.params.lang);else if(typeof a=="number")t=o(a).locale(i.params.lang);else if(angular.isDate(a)){var s=a.getTime();t=o(s,"x").locale(i.params.lang)}else o.isMoment(a)&&(a.isValid()?t=a:t=r);else t=r;return t};this.currentDate=n(this.params.currentDate,o()),this.currentDate=this.currentNearestMinute(),this.minDate=n(this.params.minDate),this.maxDate=n(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(a){return o(a).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=M.DATE},initHours:function(){this.currentView=M.HOUR},initMinutes:function(){this.currentView=M.MINUTE},initSeconds:function(){this.currentView=M.SECOND},isAfterMinDate:function(i,n,a){var r=!0;if(typeof this.minDate!="undefined"&&this.minDate!==null){var t=o(this.minDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))>=parseInt(t.format("X"))}return r},isBeforeMaxDate:function(i,n,a){var r=!0;if(typeof this.maxDate!="undefined"&&this.maxDate!==null){var t=o(this.maxDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))<=parseInt(t.format("X"))}return r},isInDisableDates:function(i){var n=i.format("MMMM Do YYYY");return!(this.disableDates.indexOf(n)>-1)},isWeekDay:function(i){return this.weekDays?i.isoWeekday()<=5:!0},selectDate:function(i){i&&(this.currentDate=o(i),this.isAfterMinDate(this.currentDate,!0,!0)||(this.currentDate=o(this.minDate)),this.isBeforeMaxDate(this.currentDate,!0,!0)||(this.currentDate=o(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=o(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return this.meridien==="PM"},incrementMonth:function(i){(i===1&&this.isNextMonthVisible()||i===-1&&this.isPreviousMonthVisible())&&this.selectDate(this.currentDate.add(i,"month"))},incrementYear:function(i){(i===1&&this.isNextYearVisible()||i===-1&&this.isPreviousYearVisible())&&this.selectDate(this.currentDate.add(i,"year"))},openMenu:function(i,n){i.open(n)},monthsAvailable:function(){for(var i=[],n=o(this.currentDate),a=0;a<12;a++){var r=n.month(a);this.isAfterMinDate(r.endOf("month"))&&this.isBeforeMaxDate(r.startOf("month"))&&i.push(r.format("MMMM"))}return i},selectMonth:function(i){this.selectDate(this.currentDate.month(i))},yearsAvailable:function(){var i,n,a,r,t=[],s=this.currentDate.year();typeof this.minDate!="undefined"&&this.minDate!==null&&(i=o(this.minDate).year()),typeof this.maxDate!="undefined"&&this.maxDate!==null&&(n=o(this.maxDate).year()),n&&i?(a=n-i,r=i):i?(a=115,r=i):n?(a=30,r=n-a):(a=60,r=s-a/2);for(var f=0;f<=a;f++)t.push(r+f);return t},selectYear:function(i){this.selectDate(this.currentDate.year(i))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(i){var n=o(this.currentDate);return this.params.shortTime?n.hour(this.convertHours(i)).minute(0).second(0):n.hour(i).minute(0).second(0),this.isAfterMinDate(n,!0,!1)&&this.isBeforeMaxDate(n,!0,!1)},isMinuteAvailable:function(i){var n=o(this.currentDate);n.minute(i).second(0);var a=this.params.minuteSteps;if(a>1&&5%a!=0){var r=n.minute(),t=a*Math.round(r/a);if(t>=60&&(t=60-a),t!==r)return!1}return this.isAfterMinDate(n,!0,!0)&&this.isBeforeMaxDate(n,!0,!0)},isSecondAvailable:function(i){return!0},start:function(){this.currentView=M.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var i=this.params.minuteSteps,n=o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,this.selectDate(o(n).minutes(a).seconds(r).millisecond(0))},ok:function(){switch(this.currentView){case M.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case M.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case M.MINUTE:this.params.seconds===!0?this.initSeconds():this.hide(!0);break;case M.SECOND:this.hide(!0);break}},cancel:function(){if(this.params.time)switch(this.currentView){case M.DATE:this.hide();break;case M.HOUR:this.params.date?this.initDate():this.hide();break;case M.MINUTE:this.initHours();break;case M.SECOND:this.initMinutes();break}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(12)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(i){var n=i;return i<12&&this.isPM()&&(n+=12),n},hide:function(i){i?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(N).directive("mdcDatetimePickerCalendar",[function(){for(var i=1920,n=new Date().getFullYear()+30,a=(n-i+1)*12,r=[],t=0;t6&&(u=0),c.push(u.toString());if(e.week=c,!d.maxDate&&!d.minDate)e.months=r;else{var v=d.minDate?s(d.minDate):0,b=d.maxDate?s(d.maxDate)+1:a;e.months=r.slice(v,b)}e.topIndex=s(d.currentDate)-e.months[0]},angular.version.major===1&&angular.version.minor<5&&this.$onInit(),e.getItemAtIndex=function(c){var u=(c+1)%12||12,v=i+Math.floor(c/12),b=o(d.currentDate).year(v).month(u);return S(b)},f.$watch(function(){return d.currentDate?d.currentDate.format("YYYY-MM"):""},function(c,u){if(c!=u){var v=o(c,"YYYY-MM"),b=d.minDate?s(d.minDate):0,y=s(v,b);e.topIndex!=y&&(e.topIndex=y)}});var S=function(c){var u={};if(c!==null){u.name=c.format("MMMM YYYY");var v=o(c).locale(d.params.lang).startOf("month").hour(c.hour()).minute(c.minute()),b=v.format("d");u.days=[];for(var y=v.date();y<=v.daysInMonth();y++){if(y===v.date()){var D=e.week.indexOf(b.toString());if(D>0)for(var p=0;p
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(i){var n=function(a,r){var t=angular.element(a[0].querySelector("tbody")),s=r.cal,f=r.month,e=[];f.days.forEach(function(d,S){e.push(""),d.forEach(function(c,u){if(e.push(""),c)if(s.isInRange(c)){var v="month['days']["+S+"]["+u+"]";e.push(''),e.push(c.format("D")),e.push("")}else e.push(''),e.push(c.format("D")),e.push("");e.push("")}),e.push("")}),t.html(e.join("")),i(t)(r)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,r,t,s){a.cal=s,a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a),a.$watch(function(){return a.idx},function(f,e){f!=e&&(a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a))})}}}]),angular.module(N).directive("mdcDtpNoclick",function(){return{link:function(i,n){n.on("click",function(a){a.preventDefault()})}}}),angular.module(N).directive("mdcDatetimePickerClock",["$timeout",function(i){var n='';return{restrict:"E",template:n,link:function(a,r,t){var s=t.mode==="minutes",f=t.mode==="seconds",e=a.picker,d=document.querySelector("md-dialog.dtp"),S=function(l,m){var h=0;if(l=l>=360?0:l,l!==0){var g=s||f?60:12;h=Math.round(g/360*l)}if(s){var I=e.params.minuteSteps;(I<1||I>59)&&(I=1);var w=I*Math.round(h/I);if(w>=60&&(w=60-I),!a.pointAvailable({value:h}))return;e.currentDate.minute(w)}else if(f){if(h>=60&&(h=0),!a.pointAvailable({value:h}))return;e.currentDate.second(h)}else{if(h===12&&(h=0),e.params.shortTime||(e.meridien=m>84?"AM":"PM"),e.isPM()&&(h+=12),!a.pointAvailable({value:h}))return;e.currentDate.hour(h)}},c="ontouchstart"in window,u={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},v=function(l){l.preventDefault();var m=l.currentTarget.closest("div"),h=m.getClientRects()[0];c&&(l=l.changedTouches[0]);var g=m.offsetWidth/2-(l.pageX-h.left),I=l.pageY-h.top-m.offsetHeight/2,w=Math.sqrt(Math.pow(g,2)+Math.pow(I,2)),x=Math.round(Math.atan2(g,I)*(180/Math.PI));i(function(){S(x+180,w)})};r.on(u.POINTER_DOWN,function(){r.on(u.POINTER_MOVE,v)}),r.on(u.POINTER_UP,function(){r.off(u.POINTER_MOVE)}),a.$on("$destroy",function(){r.off(u.POINTER_MOVE,v)});var b=function(){var l=angular.element(r[0].querySelector(".dtp-picker-clock")),m=angular.element(d.querySelector(".dtp-picker")),h=d.querySelector(".dtp-content").offsetWidth,g=parseInt(V(m,"paddingLeft").replace("px",""))||0,I=parseInt(V(m,"paddingRight").replace("px",""))||0,w=parseInt(V(m,"paddingTop").replace("px",""))||0,x=parseInt(V(l,"marginLeft").replace("px",""))||0,K=parseInt(V(l,"marginRight").replace("px",""))||0,Y=parseInt(V(l,"marginTop").replace("px",""))||0,$=h-(x+K+g+I);l.css("width",$+"px");for(var k=$/2,U=k/1.2,W=[],A=0;A<12;++A){var ee=U*Math.sin(Math.PI*2*(A/12)),te=U*Math.cos(Math.PI*2*(A/12)),B=k+ee+g/2-(g+x),j=k-te-Y/2-(w+Y),E={left:B,top:j,value:s||f?A*5:A,style:{"margin-left":B+"px","margin-top":j+"px"}};s||f?E.display=E.value<10?"0"+E.value:E.value:e.params.shortTime?E.display=A===0?12:A:E.display=A,W.push(E)}if(a.points=W,!e.params.shortTime&&!s&&!f){for(var R=[],z=k/1.8,O=12;O<24;++O){var ae=z*Math.sin(Math.PI*2*(O/12)),ie=z*Math.cos(Math.PI*2*(O/12)),q=k+ae+g/2-(g+x),Z=k-ie-Y/2-(w+Y);R.push({left:q,top:Z,value:O,display:O,style:{"margin-left":q+"px","margin-top":Z+"px"}})}a.points24=R}a.mode=t.mode,p(),l.css("height",$+"px");var L=r[0].querySelector(".dtp-clock-center"),re=L.offsetWidth/2||7.5,ne=L.offsetHeight/2||7.5,_=k/(e.params.shortTime?1.8:2.3),X=k/1.4,F=k;angular.element(r[0].querySelector(".dtp-hour-hand")).css({left:k+x*1.5+"px",height:_+"px",marginTop:k-_-g+"px"}).addClass(!s&&!f?"on":""),angular.element(r[0].querySelector(".dtp-minute-hand")).css({left:k+x*1.5+"px",height:X+"px",marginTop:k-X-g+"px"}).addClass(s?"on":""),angular.element(r[0].querySelector(".dtp-second-hand")).css({left:k+x*1.5+"px",height:F+"px",marginTop:k-F-g+"px"}).addClass(f?"on":""),angular.element(L).css({left:k+g+x-re+"px",marginTop:k-x/2-ne+"px"}),y()},y=function(){var l=e.currentNearestMinute(),m=l.hour(),h=l.minute(),g=l.second();D(angular.element(r[0].querySelector(".dtp-hour-hand")),30*m),D(angular.element(r[0].querySelector(".dtp-minute-hand")),6*h),D(angular.element(r[0].querySelector(".dtp-second-hand")),6*g)},D=function(l,m){angular.element(l).css({WebkitTransform:"rotate("+m+"deg)","-moz-transform":"rotate("+m+"deg)","-ms-transform":"rotate("+m+"deg)",transform:"rotate("+m+"deg)"})},p=function(){var l=e.currentNearestMinute(),m=e.params.shortTime?12:24;s?a.currentValue=l.minute():f?a.currentValue=l.second():a.currentValue=l.hour()%m};a.$watch(function(){var l=e.currentNearestMinute();return l?l.format("HH:mm:ss"):""},function(){p(),y()}),a.setTime=function(l){!s&&!f?(l===a.currentValue&&!e.params.autoOk&&e.ok(),e.params.shortTime?e.currentDate.hour(e.isPM()?l+12:l):(e.currentDate.hour(l),l>=12?e.meridien="PM":e.meridien="AM"),e.params.autoOk&&e.ok()):f?(l===a.currentValue&&e.ok(),e.currentDate.second(l)):(l===a.currentValue&&!e.params.seconds&&e.ok(),e.currentDate.minute(l),e.params.seconds?e.params.autoOk&&e.ok():e.currentDate.second(0))},a.pointAvailable=function(l){return s?e.isMinuteAvailable(l.value):f?e.isSecondAvailable(l.value):e.isHourAvailable(l.value)};var T=a.$watch(function(){return r[0].querySelectorAll("div").length},function(){b(),T()})}}}]),N}var J=window&&window.process&&window.process.type;typeof define=="function"&&define.amd?define(["moment"],P):typeof module!="undefined"&&module&&module.exports&&typeof require=="function"&&!J?module.exports=P(require("moment")):P((typeof global!="undefined"?global:window).moment)})(); +(function(){"use strict";function P(o){var N="ngMaterialDatePicker",G="data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+",Q="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",M={DATE:0,HOUR:1,MINUTE:2},V=function(i,n){return i=angular.element(i),"getComputedStyle"in window?window.getComputedStyle(i[0])[n]:i.css(n)},H=`
{{picker.currentNearestMinute().format("dddd")}}
{{picker.params.shortTime?picker.currentDate.format("A"):" "}}
×
{{picker.currentDate.format("MMM")|uppercase}}
{{itemMonth}}
{{picker.currentDate.format("DD")}}
{{picker.currentDate.format("YYYY")}}
{{itemYear}}
{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}} {{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}} {{picker.currentDate.format("A")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}
{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}:{{picker.currentNearestMinute().format("mm")}}:{{picker.currentNearestMinute().format("ss")}}
{{::picker.params.todayText}} {{::picker.params.cancelText}} {{::picker.params.okText}}
`;angular.module(N,["ngMaterial"]).factory("mdcDefaultParams",function(){var i={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:H,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(n){if(n)for(var a in n)i.hasOwnProperty(a)&&n.hasOwnProperty(a)&&(i[a]=n[a]);return i}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$parse",function(i,n,a,r){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(t,s,f,e){var d=!1;t.format||(t.date&&t.time&&t.seconds?t.format="YYYY-MM-DD HH:mm:ss":t.date&&t.time?t.format="YYYY-MM-DD HH:mm":t.date?t.format="YYYY-MM-DD":t.format="HH:mm");var S=null;t.showTodaysDate!==void 0&&t.showTodaysDate!=="false"&&(S=o()),angular.isString(t.currentDate)&&t.currentDate!==""&&(t.currentDate=o(t.currentDate,t.format));var c;if(e){var u={"*":"$inherit",debounce:500};angular.version.major===1&&angular.version.minor>5?(e.$options=e.$options.createChild(u),e.$options.getOption("timezone")&&(c=e.$options.getOption("timezone"))):(t.ngModelOptions&&t.ngModelOptions.timezone&&(u.timezone=t.ngModelOptions.timezone),e.$options=u,e.$options.timezone&&(c=e.$options.timezone)),(c==="utc"||c==="UTC")&&(c=0),e.$formatters.push(function(D){if(!(typeof D>"u")){var p=o(D);return p.isValid()?p.format(t.format):""}}),e.$parsers.push(function(D){if(!(typeof D>"u")){var p=o(D,t.format);return c!==void 0&&p.utcOffset(c,p._tzm===void 0),t.minDate&&e.$setValidity("min",!p.isBefore(t.minDate)),t.maxDate&&e.$setValidity("max",!p.isAfter(t.maxDate)),e.$setValidity("format",o(D,t.format,!0).isValid()),p.isValid()?p._isUTC?p:p.toDate():""}})}function v(D){if(D.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var p={};for(var T in f)t.hasOwnProperty(T)&&!angular.isUndefined(t[T])&&(p[T]=t[T]);p.currentDate=t.currentDate,p.showTodaysDate=S;var l={controller:C,controllerAs:"picker",locals:{options:p},openFrom:s,closeTo:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:p.clickOutsideToClose||!1,disableParentScroll:p.disableParentScroll||!1,hasBackdrop:p.hasBackdrop===void 0?!0:p.hasBackdrop,skipHide:!0,multiple:!0};p.templateUrl?l.templateUrl=p.templateUrl:l.template=H,i.show(l).then(function(m){c!==void 0&&m.utcOffset(c,!0),t.currentDate=m&&!m._isUTC?m.toDate():m,e.$setValidity("format",!0),e.$setViewValue(t.currentDate),e.$setDirty(),d=!1,o(t.currentDate).isSame(p.currentDate)||n(t.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}}if(t.editInput||(t.showIcon?s.on("click",v):s.on("focus",v)),t.showIcon){s.addClass("dtp-no-msclear dtp-input");var b='',y="";(t.showClear===void 0||t.showClear)&&(y="'),s.after(a(b+y)(t)),t.openCalendarDiag=function(D){v(D)},t.clear=function(){e.$setViewValue(null),t.currentDate=null,e.$render(),n(function(){t.ngChange(),s[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){var a={show:function(r){var t=n.defer();r.showTodaysDate!==void 0&&r.showTodaysDate!=="false"&&(r.showTodaysDate=o());var s={controller:C,controllerAs:"picker",locals:{options:r},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:r.clickOutsideToClose||!1,disableParentScroll:r.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:r.hasBackdrop===void 0?!0:r.hasBackdrop,targetEvent:r.targetEvent,openFrom:r.openFrom,closeTo:r.closeTo};return r.templateUrl?s.templateUrl=r.templateUrl:s.template=H,i.show(s).then(function(f){t.resolve(f&&!f._isUTC?f.toDate():f)},function(){t.reject()}),t.promise}};return a}]);var C=function(i,n){this.currentView=M.DATE,this._dialog=i,this._attachedEvents=[],this.VIEWS=M,this.params=angular.copy(n()),this.meridien="AM"};return C.$inject=["$mdDialog","mdcDefaultParams"],C.prototype={$onInit:function(){this.params=angular.extend(this.params,this.options),this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var i=this.params.minuteSteps;(i<1||i>59)&&(i=1);var n=this.currentDate||o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;return this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,o(n).minutes(a).seconds(r).millisecond(0)},initDates:function(){var i=this,n=function(a,r){var t=null;if(angular.isDefined(a)&&a!==null&&a!=="")if(angular.isString(a))typeof i.params.format<"u"&&i.params.format!==null?t=o(a,i.params.format).locale(i.params.lang):t=o(a).locale(i.params.lang);else if(typeof a=="number")t=o(a).locale(i.params.lang);else if(angular.isDate(a)){var s=a.getTime();t=o(s,"x").locale(i.params.lang)}else o.isMoment(a)&&(a.isValid()?t=a:t=r);else t=r;return t};this.currentDate=n(this.params.currentDate,o()),this.currentDate=this.currentNearestMinute(),this.minDate=n(this.params.minDate),this.maxDate=n(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(a){return o(a).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=M.DATE},initHours:function(){this.currentView=M.HOUR},initMinutes:function(){this.currentView=M.MINUTE},initSeconds:function(){this.currentView=M.SECOND},isAfterMinDate:function(i,n,a){var r=!0;if(typeof this.minDate<"u"&&this.minDate!==null){var t=o(this.minDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))>=parseInt(t.format("X"))}return r},isBeforeMaxDate:function(i,n,a){var r=!0;if(typeof this.maxDate<"u"&&this.maxDate!==null){var t=o(this.maxDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))<=parseInt(t.format("X"))}return r},isInDisableDates:function(i){var n=i.format("MMMM Do YYYY");return!(this.disableDates.indexOf(n)>-1)},isWeekDay:function(i){return this.weekDays?i.isoWeekday()<=5:!0},selectDate:function(i){i&&(this.currentDate=o(i),this.isAfterMinDate(this.currentDate,!0,!0)||(this.currentDate=o(this.minDate)),this.isBeforeMaxDate(this.currentDate,!0,!0)||(this.currentDate=o(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=o(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return this.meridien==="PM"},incrementMonth:function(i){(i===1&&this.isNextMonthVisible()||i===-1&&this.isPreviousMonthVisible())&&this.selectDate(this.currentDate.add(i,"month"))},incrementYear:function(i){(i===1&&this.isNextYearVisible()||i===-1&&this.isPreviousYearVisible())&&this.selectDate(this.currentDate.add(i,"year"))},openMenu:function(i,n){i.open(n)},monthsAvailable:function(){for(var i=[],n=o(this.currentDate),a=0;a<12;a++){var r=n.month(a);this.isAfterMinDate(r.endOf("month"))&&this.isBeforeMaxDate(r.startOf("month"))&&i.push(r.format("MMMM"))}return i},selectMonth:function(i){this.selectDate(this.currentDate.month(i))},yearsAvailable:function(){var i,n,a,r,t=[],s=this.currentDate.year();typeof this.minDate<"u"&&this.minDate!==null&&(i=o(this.minDate).year()),typeof this.maxDate<"u"&&this.maxDate!==null&&(n=o(this.maxDate).year()),n&&i?(a=n-i,r=i):i?(a=115,r=i):n?(a=30,r=n-a):(a=60,r=s-a/2);for(var f=0;f<=a;f++)t.push(r+f);return t},selectYear:function(i){this.selectDate(this.currentDate.year(i))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(i){var n=o(this.currentDate);return this.params.shortTime?n.hour(this.convertHours(i)).minute(0).second(0):n.hour(i).minute(0).second(0),this.isAfterMinDate(n,!0,!1)&&this.isBeforeMaxDate(n,!0,!1)},isMinuteAvailable:function(i){var n=o(this.currentDate);n.minute(i).second(0);var a=this.params.minuteSteps;if(a>1&&5%a!==0){var r=n.minute(),t=a*Math.round(r/a);if(t>=60&&(t=60-a),t!==r)return!1}return this.isAfterMinDate(n,!0,!0)&&this.isBeforeMaxDate(n,!0,!0)},isSecondAvailable:function(i){return!0},start:function(){this.currentView=M.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var i=this.params.minuteSteps,n=o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,this.selectDate(o(n).minutes(a).seconds(r).millisecond(0))},ok:function(){switch(this.currentView){case M.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case M.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case M.MINUTE:this.params.seconds===!0?this.initSeconds():this.hide(!0);break;case M.SECOND:this.hide(!0);break}},cancel:function(){if(this.params.time)switch(this.currentView){case M.DATE:this.hide();break;case M.HOUR:this.params.date?this.initDate():this.hide();break;case M.MINUTE:this.initHours();break;case M.SECOND:this.initMinutes();break}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(12)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(i){var n=i;return i<12&&this.isPM()&&(n+=12),n},hide:function(i){i?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(N).directive("mdcDatetimePickerCalendar",[function(){for(var i=1920,n=new Date().getFullYear()+30,a=(n-i+1)*12,r=[],t=0;t6&&(u=0),c.push(u.toString());if(e.week=c,!d.maxDate&&!d.minDate)e.months=r;else{var v=d.minDate?s(d.minDate):0,b=d.maxDate?s(d.maxDate)+1:a;e.months=r.slice(v,b)}e.topIndex=s(d.currentDate)-e.months[0]},angular.version.major===1&&angular.version.minor<5&&this.$onInit(),e.getItemAtIndex=function(c){var u=(c+1)%12||12,v=i+Math.floor(c/12),b=o(d.currentDate).year(v).month(u);return S(b)},f.$watch(function(){return d.currentDate?d.currentDate.format("YYYY-MM"):""},function(c,u){if(c!=u){var v=o(c,"YYYY-MM"),b=d.minDate?s(d.minDate):0,y=s(v,b);e.topIndex!=y&&(e.topIndex=y)}});var S=function(c){var u={};if(c!==null){u.name=c.format("MMMM YYYY");var v=o(c).locale(d.params.lang).startOf("month").hour(c.hour()).minute(c.minute()),b=v.format("d");u.days=[];for(var y=v.date();y<=v.daysInMonth();y++){if(y===v.date()){var D=e.week.indexOf(b.toString());if(D>0)for(var p=0;p
'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(i){var n=function(a,r){var t=angular.element(a[0].querySelector("tbody")),s=r.cal,f=r.month,e=[];f.days.forEach(function(d,S){e.push(""),d.forEach(function(c,u){if(e.push(""),c)if(s.isInRange(c)){var v="month['days']["+S+"]["+u+"]";e.push(''),e.push(c.format("D")),e.push("")}else e.push(''),e.push(c.format("D")),e.push("");e.push("")}),e.push("")}),t.html(e.join("")),i(t)(r)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'
{{month.name}}
{{cal.toDay(day)}}
',link:function(a,r,t,s){a.cal=s,a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a),a.$watch(function(){return a.idx},function(f,e){f!=e&&(a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a))})}}}]),angular.module(N).directive("mdcDtpNoclick",function(){return{link:function(i,n){n.on("click",function(a){a.preventDefault()}),n.on("dragstart",function(a){a.preventDefault()})}}}),angular.module(N).directive("mdcDatetimePickerClock",["$timeout",function(i){var n='';return{restrict:"E",template:n,link:function(a,r,t){var s=t.mode==="minutes",f=t.mode==="seconds",e=a.picker,d=document.querySelector("md-dialog.dtp"),S=function(l,m){var h=0;if(l=l>=360?0:l,l!==0){var g=s||f?60:12;h=Math.round(g/360*l)}if(s){var I=e.params.minuteSteps;(I<1||I>59)&&(I=1);var w=I*Math.round(h/I);if(w>=60&&(w=60-I),!a.pointAvailable({value:h}))return;e.currentDate.minute(w)}else if(f){if(h>=60&&(h=0),!a.pointAvailable({value:h}))return;e.currentDate.second(h)}else{if(h===12&&(h=0),e.params.shortTime||(e.meridien=m>84?"AM":"PM"),e.isPM()&&(h+=12),!a.pointAvailable({value:h}))return;e.currentDate.hour(h)}},c="ontouchstart"in window,u={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},v=function(l){l.preventDefault();var m=l.currentTarget.closest("div"),h=m.getClientRects()[0];c&&(l=l.changedTouches[0]);var g=m.offsetWidth/2-(l.pageX-h.left),I=l.pageY-h.top-m.offsetHeight/2,w=Math.sqrt(Math.pow(g,2)+Math.pow(I,2)),x=Math.round(Math.atan2(g,I)*(180/Math.PI));i(function(){S(x+180,w)})};r.on(u.POINTER_DOWN,function(){r.on(u.POINTER_MOVE,v)}),r.on(u.POINTER_UP,function(){r.off(u.POINTER_MOVE)}),a.$on("$destroy",function(){r.off(u.POINTER_MOVE,v)});var b=function(){var l=angular.element(r[0].querySelector(".dtp-picker-clock")),m=angular.element(d.querySelector(".dtp-picker")),h=d.querySelector(".dtp-content").offsetWidth,g=parseInt(V(m,"paddingLeft").replace("px",""))||0,I=parseInt(V(m,"paddingRight").replace("px",""))||0,w=parseInt(V(m,"paddingTop").replace("px",""))||0,x=parseInt(V(l,"marginLeft").replace("px",""))||0,K=parseInt(V(l,"marginRight").replace("px",""))||0,Y=parseInt(V(l,"marginTop").replace("px",""))||0,$=h-(x+K+g+I);l.css("width",$+"px");for(var k=$/2,U=k/1.2,W=[],A=0;A<12;++A){var ee=U*Math.sin(Math.PI*2*(A/12)),te=U*Math.cos(Math.PI*2*(A/12)),B=k+ee+g/2-(g+x),j=k-te-Y/2-(w+Y),E={left:B,top:j,value:s||f?A*5:A,style:{"margin-left":B+"px","margin-top":j+"px"}};s||f?E.display=E.value<10?"0"+E.value:E.value:e.params.shortTime?E.display=A===0?12:A:E.display=A,W.push(E)}if(a.points=W,!e.params.shortTime&&!s&&!f){for(var R=[],z=k/1.8,O=12;O<24;++O){var ae=z*Math.sin(Math.PI*2*(O/12)),ie=z*Math.cos(Math.PI*2*(O/12)),q=k+ae+g/2-(g+x),Z=k-ie-Y/2-(w+Y);R.push({left:q,top:Z,value:O,display:O,style:{"margin-left":q+"px","margin-top":Z+"px"}})}a.points24=R}a.mode=t.mode,p(),l.css("height",$+"px");var L=r[0].querySelector(".dtp-clock-center"),re=L.offsetWidth/2||7.5,ne=L.offsetHeight/2||7.5,_=k/(e.params.shortTime?1.8:2.3),X=k/1.4,F=k;angular.element(r[0].querySelector(".dtp-hour-hand")).css({left:k+x*1.5+"px",height:_+"px",marginTop:k-_-g+"px"}).addClass(!s&&!f?"on":""),angular.element(r[0].querySelector(".dtp-minute-hand")).css({left:k+x*1.5+"px",height:X+"px",marginTop:k-X-g+"px"}).addClass(s?"on":""),angular.element(r[0].querySelector(".dtp-second-hand")).css({left:k+x*1.5+"px",height:F+"px",marginTop:k-F-g+"px"}).addClass(f?"on":""),angular.element(L).css({left:k+g+x-re+"px",marginTop:k-x/2-ne+"px"}),y()},y=function(){var l=e.currentNearestMinute(),m=l.hour(),h=l.minute(),g=l.second();D(angular.element(r[0].querySelector(".dtp-hour-hand")),30*m),D(angular.element(r[0].querySelector(".dtp-minute-hand")),6*h),D(angular.element(r[0].querySelector(".dtp-second-hand")),6*g)},D=function(l,m){angular.element(l).css({WebkitTransform:"rotate("+m+"deg)","-moz-transform":"rotate("+m+"deg)","-ms-transform":"rotate("+m+"deg)",transform:"rotate("+m+"deg)"})},p=function(){var l=e.currentNearestMinute(),m=e.params.shortTime?12:24;s?a.currentValue=l.minute():f?a.currentValue=l.second():a.currentValue=l.hour()%m};a.$watch(function(){var l=e.currentNearestMinute();return l?l.format("HH:mm:ss"):""},function(){p(),y()}),a.setTime=function(l){!s&&!f?(l===a.currentValue&&!e.params.autoOk&&e.ok(),e.params.shortTime?e.currentDate.hour(e.isPM()?l+12:l):(e.currentDate.hour(l),l>=12?e.meridien="PM":e.meridien="AM"),e.params.autoOk&&e.ok()):f?(l===a.currentValue&&e.ok(),e.currentDate.second(l)):(l===a.currentValue&&!e.params.seconds&&e.ok(),e.currentDate.minute(l),e.params.seconds?e.params.autoOk&&e.ok():e.currentDate.second(0))},a.pointAvailable=function(l){return s?e.isMinuteAvailable(l.value):f?e.isSecondAvailable(l.value):e.isHourAvailable(l.value)};var T=a.$watch(function(){return r[0].querySelectorAll("div").length},function(){b(),T()})}}}]),N}var J=window&&window.process&&window.process.type;typeof define=="function"&&define.amd?define(["moment"],P):typeof module<"u"&&module&&module.exports&&typeof require=="function"&&!J?module.exports=P(require("moment")):P((typeof global<"u"?global:window).moment)})(); //# sourceMappingURL=angular-material-datetimepicker.min.js.map diff --git a/dist/angular-material-datetimepicker.min.js.map b/dist/angular-material-datetimepicker.min.js.map index f23c889..0726485 100644 --- a/dist/angular-material-datetimepicker.min.js.map +++ b/dist/angular-material-datetimepicker.min.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../js/angular-material-datetimepicker.js"], - "sourcesContent": ["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse',\r\n function ($mdDialog, $timeout, $compile, $parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '', clearButton = '';\r\n\r\n if (scope.showClear === undefined || scope.showClear) {\r\n clearButton = '';\r\n }\r\n \r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n $onInit: function () {\r\n this.params = angular.extend(this.params, this.options);\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"], - "mappings": "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", + "sourcesContent": ["(function () {\r\n 'use strict';\r\n\r\n function ngMaterialDatePicker(moment) {\r\n var moduleName = \"ngMaterialDatePicker\";\r\n var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n var css = function (el, name) {\r\n el = angular.element(el);\r\n return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n };\r\n\r\n var template =\r\n '' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentNearestMinute().format(\"dddd\")}}
' +\r\n '
{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}
' +\r\n '
' +\r\n ' ×' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"MMM\")|uppercase}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemMonth}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
{{picker.currentDate.format(\"DD\")}}
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
{{picker.currentDate.format(\"YYYY\")}}
' +\r\n ' ' +\r\n ' ' +\r\n ' {{itemYear}}' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
'+\r\n '
' + //start time\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}'+\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}'+\r\n ' {{picker.currentDate.format(\"A\")}}'+\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.amText}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}:{{picker.currentNearestMinute().format(\"mm\")}}:{{picker.currentNearestMinute().format(\"ss\")}}' +\r\n '
' +\r\n '
' +\r\n ' {{::picker.params.pmText}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' {{::picker.params.todayText}}' +\r\n ' {{::picker.params.cancelText}}' +\r\n ' {{::picker.params.okText}}' +\r\n ' ' +\r\n '
';\r\n\r\n angular.module(moduleName, ['ngMaterial'])\r\n .factory('mdcDefaultParams', function () {\r\n var default_params = {\r\n date: true,\r\n time: true,\r\n minutes: true,\r\n seconds: false,\r\n format: 'YYYY-MM-DD',\r\n minDate: null,\r\n maxDate: null,\r\n currentDate: null,\r\n lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n weekStart: 0,\r\n shortTime: false,\r\n cancelText: 'Cancel',\r\n okText: 'OK',\r\n amText: 'AM',\r\n pmText: 'PM',\r\n todayBtn: true,\r\n todayText: 'Today',\r\n disableDates: [],\r\n weekDays: false,\r\n disableParentScroll: false,\r\n autoOk: false,\r\n editInput: false,\r\n clickOutsideToClose: false,\r\n minuteSteps: 5,\r\n showIcon: false,\r\n showClear: true,\r\n template: template,\r\n templateUrl: '',\r\n targetEvent: null,\r\n openFrom: null,\r\n closeTo: null,\r\n dayOfWeekLen: 1,\r\n hasBackdrop: true,\r\n };\r\n\r\n return function (params) {\r\n if (params) {\r\n for (var i in params) {\r\n if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n }\r\n }\r\n return default_params;\r\n };\r\n })\r\n .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile', '$parse',\r\n function ($mdDialog, $timeout, $compile, $parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n scope: {\r\n currentDate: '=ngModel',\r\n ngModelOptions: '=',\r\n ngChange: '&',\r\n time: '=',\r\n date: '=',\r\n minutes: '=',\r\n seconds: '=',\r\n minDate: '=',\r\n maxDate: '=',\r\n disableDates: '=',\r\n weekDays: '=',\r\n shortTime: '=',\r\n weekStart: '=',\r\n format: '@',\r\n cancelText: '@',\r\n okText: '@',\r\n lang: '@',\r\n amText: '@',\r\n pmText: '@',\r\n showTodaysDate: '@',\r\n todayBtn: '=',\r\n todayText: '@',\r\n disableParentScroll: '=',\r\n autoOk: '=',\r\n editInput: '=',\r\n clickOutsideToClose: '=',\r\n minuteSteps: '=',\r\n showIcon: '=',\r\n showClear: '=',\r\n templateUrl: '@',\r\n dayOfWeekLen: '=',\r\n hasBackdrop: '='\r\n },\r\n link: function (scope, element, attrs, ngModel) {\r\n var isOn = false;\r\n if (!scope.format) {\r\n if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n else scope.format = 'HH:mm';\r\n }\r\n\r\n var dateOfTheDay = null;\r\n if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n dateOfTheDay = moment();\r\n }\r\n\r\n if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n scope.currentDate = moment(scope.currentDate, scope.format);\r\n }\r\n\r\n var offset;\r\n if (ngModel) {\r\n var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n if (angular.version.major === 1 && angular.version.minor > 5) {\r\n ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n } else {\r\n if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n ngModel.$options = ngModelOptions;\r\n if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n }\r\n if (offset==='utc' || offset==='UTC') offset = 0;\r\n \r\n ngModel.$formatters.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n var m = moment(value);\r\n return m.isValid() ? m.format(scope.format) : '';\r\n });\r\n \r\n ngModel.$parsers.push(function (value) {\r\n if (typeof value === 'undefined') return;\r\n \r\n var m = moment(value, scope.format);\r\n if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n });\r\n \r\n }\r\n\r\n function openCalendar(e) {\r\n e.preventDefault();\r\n element.blur();\r\n element.parent().removeClass('md-input-focused');\r\n if (isOn) {\r\n return;\r\n }\r\n isOn = true;\r\n var options = {};\r\n for (var i in attrs) {\r\n if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n options[i] = scope[i];\r\n }\r\n }\r\n options.currentDate = scope.currentDate;\r\n options.showTodaysDate = dateOfTheDay;\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n openFrom: element,\r\n closeTo: element,\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n skipHide: true,\r\n multiple: true,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n \r\n $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n ngModel.$setValidity('format', true);\r\n ngModel.$setViewValue(scope.currentDate);\r\n ngModel.$setDirty();\r\n isOn = false;\r\n\r\n if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n $timeout(scope.ngChange, 0);\r\n }\r\n\r\n element.parent().removeClass('md-input-focused');\r\n }, function () {\r\n isOn = false;\r\n element.parent().removeClass('md-input-focused');\r\n });\r\n }\r\n\r\n if (!scope.editInput) {\r\n if (scope.showIcon) {\r\n element.on('click', openCalendar);\r\n } else {\r\n element.on('focus', openCalendar);\r\n }\r\n }\r\n \r\n if (scope.showIcon) {\r\n element.addClass('dtp-no-msclear dtp-input');\r\n var calendarButton =\r\n '' +\r\n '' +\r\n '', clearButton = '';\r\n\r\n if (scope.showClear === undefined || scope.showClear) {\r\n clearButton = '';\r\n }\r\n \r\n element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n scope.openCalendarDiag = function(e) {\r\n openCalendar(e);\r\n };\r\n\r\n scope.clear = function() {\r\n ngModel.$setViewValue(null);\r\n scope.currentDate = null;\r\n ngModel.$render();\r\n $timeout(function() {\r\n scope.ngChange();\r\n element[0].focus();\r\n }, 0, false);\r\n };\r\n }\r\n }\r\n };\r\n }])\r\n // Returns a service that opens a dialog when the attribute shown is called\r\n .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", function ($mdDialog, $q) {\r\n var service = {\r\n show: function (options) {\r\n var deferred = $q.defer();\r\n\r\n if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") options.showTodaysDate = moment();\r\n\r\n var dialogOptions = {\r\n controller: PluginController,\r\n controllerAs: 'picker',\r\n locals: {options: options},\r\n parent: angular.element(document.body),\r\n bindToController: true,\r\n clickOutsideToClose: options.clickOutsideToClose || false,\r\n disableParentScroll: options.disableParentScroll || false,\r\n skipHide: true,\r\n multiple: true,\r\n hasBackdrop: options.hasBackdrop === undefined ? true : options.hasBackdrop,\r\n targetEvent: options.targetEvent,\r\n openFrom: options.openFrom,\r\n closeTo: options.closeTo,\r\n };\r\n\r\n if (!options.templateUrl) dialogOptions.template = template;\r\n else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n $mdDialog.show(dialogOptions).then(function (v) {\r\n deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n\r\n return service;\r\n }])\r\n ;\r\n\r\n var PluginController = function ($mdDialog, mdcDefaultParams) {\r\n this.currentView = VIEW_STATES.DATE;\r\n this._dialog = $mdDialog;\r\n\r\n this._attachedEvents = [];\r\n this.VIEWS = VIEW_STATES;\r\n this.params = angular.copy(mdcDefaultParams());\r\n this.meridien = 'AM';\r\n };\r\n\r\n PluginController.$inject = ['$mdDialog', 'mdcDefaultParams'];\r\n PluginController.prototype = {\r\n $onInit: function () {\r\n this.params = angular.extend(this.params, this.options);\r\n this.timeMode = this.params.time && !this.params.date;\r\n this.dateMode = this.params.date;\r\n this.initDates();\r\n this.start();\r\n },\r\n currentNearestMinute: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n var date = this.currentDate || moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n },\r\n initDates: function () {\r\n var that = this;\r\n var _dateParam = function (input, fallback) {\r\n var ret = null;\r\n if (angular.isDefined(input) && input !== null && input !== '') {\r\n if (angular.isString(input)) {\r\n if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n ret = moment(input, that.params.format).locale(that.params.lang);\r\n }\r\n else {\r\n ret = moment(input).locale(that.params.lang);\r\n }\r\n } else if (typeof input === 'number') {\r\n ret = moment(input).locale(that.params.lang);\r\n } else {\r\n if (angular.isDate(input)) {\r\n var x = input.getTime();\r\n ret = moment(x, \"x\").locale(that.params.lang);\r\n } else if (moment.isMoment(input)) {\r\n if (input.isValid()) ret = input;\r\n else ret = fallback;\r\n }\r\n }\r\n } else {\r\n ret = fallback;\r\n }\r\n return ret;\r\n };\r\n\r\n this.currentDate = _dateParam(this.params.currentDate, moment());\r\n this.currentDate = this.currentNearestMinute();\r\n this.minDate = _dateParam(this.params.minDate);\r\n this.maxDate = _dateParam(this.params.maxDate);\r\n this.disableDates = this.params.disableDates.map(function (x) {\r\n return moment(x).format('MMMM Do YYYY');\r\n });\r\n this.selectDate(this.currentDate);\r\n this.weekDays = this.params.weekDays;\r\n },\r\n initDate: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n },\r\n initHours: function () {\r\n this.currentView = VIEW_STATES.HOUR;\r\n },\r\n initMinutes: function () {\r\n this.currentView = VIEW_STATES.MINUTE;\r\n },\r\n initSeconds: function () {\r\n this.currentView = VIEW_STATES.SECOND;\r\n },\r\n isAfterMinDate: function (date, checkHour, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n var _minDate = moment(this.minDate);\r\n var _date = moment(date);\r\n\r\n if (!checkHour && !checkMinute) {\r\n _minDate.hour(0);\r\n _minDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _minDate.second(0);\r\n _date.second(0);\r\n _minDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _minDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n var _return = true;\r\n\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n var _maxDate = moment(this.maxDate);\r\n var _date = moment(date);\r\n\r\n if (!checkTime && !checkMinute) {\r\n _maxDate.hour(0);\r\n _maxDate.minute(0);\r\n\r\n _date.hour(0);\r\n _date.minute(0);\r\n }\r\n\r\n _maxDate.second(0);\r\n _date.second(0);\r\n _maxDate.millisecond(0);\r\n _date.millisecond(0);\r\n\r\n if (!checkMinute) {\r\n _date.minute(0);\r\n _maxDate.minute(0);\r\n\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n else {\r\n _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n }\r\n }\r\n\r\n return _return;\r\n },\r\n isInDisableDates: function (date) {\r\n var dut = date.format('MMMM Do YYYY');\r\n if (this.disableDates.indexOf(dut) > -1) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isWeekDay: function(date) {\r\n if (this.weekDays) {\r\n if (date.isoWeekday() <= 5) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n },\r\n selectDate: function (date) {\r\n if (date) {\r\n this.currentDate = moment(date);\r\n if (!this.isAfterMinDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.minDate);\r\n }\r\n\r\n if (!this.isBeforeMaxDate(this.currentDate, true, true)) {\r\n this.currentDate = moment(this.maxDate);\r\n }\r\n this.currentDate.locale(this.params.lang);\r\n this.calendarStart = moment(this.currentDate);\r\n this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n }\r\n },\r\n isPM: function () {\r\n return this.meridien === 'PM';\r\n },\r\n incrementMonth: function (amount) {\r\n if ((amount === 1 && this.isNextMonthVisible()) || (amount === -1 && this.isPreviousMonthVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'month'));\r\n }\r\n },\r\n incrementYear: function (amount) {\r\n if ((amount === 1 && this.isNextYearVisible()) || (amount === -1 && this.isPreviousYearVisible())) {\r\n this.selectDate(this.currentDate.add(amount, 'year'));\r\n }\r\n },\r\n openMenu: function ($mdMenu, ev) {\r\n $mdMenu.open(ev); \r\n },\r\n monthsAvailable: function () {\r\n var monthsArr = [], _date = moment(this.currentDate);\r\n\r\n for (var m = 0; m < 12; m++) {\r\n var curMonth = _date.month(m);\r\n if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n monthsArr.push(curMonth.format('MMMM'));\r\n }\r\n }\r\n return monthsArr;\r\n },\r\n selectMonth: function (month) {\r\n this.selectDate(this.currentDate.month(month));\r\n },\r\n yearsAvailable: function () {\r\n var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n _date = this.currentDate.year();\r\n\r\n if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n _minDate = moment(this.minDate).year();\r\n }\r\n if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n _maxDate = moment(this.maxDate).year();\r\n }\r\n\r\n if (_maxDate && _minDate) {\r\n len = _maxDate - _minDate;\r\n startYear = _minDate;\r\n } else if (_minDate) {\r\n len = 115;\r\n startYear = _minDate;\r\n } else if (_maxDate) {\r\n len = 30;\r\n startYear = _maxDate - len;\r\n } else {\r\n len = 60;\r\n startYear = _date - len/2;\r\n }\r\n \r\n for (var i=0; i <= len; i++) {\r\n yearsArr.push(startYear+i);\r\n }\r\n return yearsArr;\r\n },\r\n selectYear: function (year) {\r\n this.selectDate(this.currentDate.year(year));\r\n },\r\n isPreviousMonthVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n },\r\n isNextMonthVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n },\r\n isPreviousYearVisible: function () {\r\n return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n },\r\n isNextYearVisible: function () {\r\n return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n },\r\n isHourAvailable: function (hour) {\r\n var _date = moment(this.currentDate);\r\n if (this.params.shortTime) {\r\n _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n } else {\r\n _date.hour(hour).minute(0).second(0);\r\n }\r\n return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n },\r\n isMinuteAvailable: function (minute) {\r\n var _date = moment(this.currentDate);\r\n _date.minute(minute).second(0);\r\n\r\n var nearestMin = this.params.minuteSteps;\r\n if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n var _curmin = _date.minute();\r\n var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (minutes !== _curmin) return false;\r\n }\r\n\r\n return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n },\r\n isSecondAvailable: function (second) {\r\n return true;\r\n },\r\n start: function () {\r\n this.currentView = VIEW_STATES.DATE;\r\n if (this.params.date) {\r\n this.initDate();\r\n } else {\r\n if (this.params.time) {\r\n this.initHours();\r\n }\r\n }\r\n },\r\n today: function () {\r\n var nearestMin = this.params.minuteSteps;\r\n var date = moment();\r\n var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n var seconds;\r\n if (this.params.seconds) {\r\n seconds = date.second();\r\n if (seconds >= 60) seconds = 60 - 1;\r\n } else seconds = 0;\r\n\r\n this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n },\r\n ok: function () {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n if (this.params.time === true) {\r\n this.initHours();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.minutes === true) {\r\n this.initMinutes();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n if (this.params.seconds === true) {\r\n this.initSeconds();\r\n } else {\r\n this.hide(true);\r\n }\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.hide(true);\r\n break;\r\n }\r\n },\r\n cancel: function () {\r\n if (this.params.time) {\r\n switch (this.currentView) {\r\n case VIEW_STATES.DATE:\r\n this.hide();\r\n break;\r\n case VIEW_STATES.HOUR:\r\n if (this.params.date) {\r\n this.initDate();\r\n }\r\n else {\r\n this.hide();\r\n }\r\n break;\r\n case VIEW_STATES.MINUTE:\r\n this.initHours();\r\n break;\r\n case VIEW_STATES.SECOND:\r\n this.initMinutes();\r\n break;\r\n }\r\n }\r\n else {\r\n this.hide();\r\n }\r\n },\r\n selectMonthBefore: function () {\r\n this.calendarStart.subtract(1, 'months');\r\n },\r\n selectMonthAfter: function () {\r\n this.calendarStart.add(1, 'months');\r\n },\r\n selectYearBefore: function () {\r\n this.calendarStart.subtract(1, 'years');\r\n },\r\n selectYearAfter: function () {\r\n this.calendarStart.add(1, 'years');\r\n },\r\n selectAM: function () {\r\n if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n if (this.currentDate.hour() >= 12) {\r\n this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n }\r\n }\r\n },\r\n selectPM: function () {\r\n if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n if (this.currentDate.hour() < 12) {\r\n this.selectDate(this.currentDate.add(12, 'hours'));\r\n }\r\n if (!this.isHourAvailable(this.currentDate.hour())) {\r\n this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n }\r\n if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n }\r\n }\r\n },\r\n convertHours: function (h) {\r\n var _return = h;\r\n if (h < 12 && this.isPM()) _return += 12;\r\n\r\n return _return;\r\n },\r\n hide: function (okBtn) {\r\n if (okBtn) this._dialog.hide(this.currentDate);\r\n else this._dialog.cancel();\r\n }\r\n };\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerCalendar', [\r\n function () {\r\n\r\n var YEAR_MIN = 1920,\r\n YEAR_MAX = new Date().getFullYear() + 30,\r\n MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n MONTHS = [];\r\n for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n MONTHS.push(i);\r\n }\r\n\r\n var currentMonthIndex = function (date, low) {\r\n low = low ? low : 0;\r\n return (((date.year() - YEAR_MIN) * 12) + date.month() - 1) - low;\r\n };\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n picker: '=',\r\n date: '='\r\n },\r\n bindToController: true,\r\n controllerAs: 'cal',\r\n controller: ['$scope', function ($scope) {\r\n var calendar = this, picker;\r\n\r\n this.$onInit = function () {\r\n picker = this.picker;\r\n\r\n var days = [];\r\n for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n if (i > 6) i = 0;\r\n days.push(i.toString());\r\n }\r\n calendar.week = days;\r\n\r\n if (!picker.maxDate && !picker.minDate) {\r\n calendar.months = MONTHS;\r\n } else {\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) +1) : MONTHS_IN_ALL;\r\n calendar.months = MONTHS.slice(low, high);\r\n }\r\n\r\n calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n };\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n \r\n calendar.getItemAtIndex = function (index) {\r\n var month = ((index + 1) % 12) || 12;\r\n var year = YEAR_MIN + Math.floor(index / 12);\r\n var monthObj = moment(picker.currentDate).year(year).month(month);\r\n return generateMonthCalendar(monthObj);\r\n };\r\n\r\n $scope.$watch(function () {\r\n return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n }, function (val2, val1) {\r\n if (val2 != val1) {\r\n var nDate = moment(val2, 'YYYY-MM');\r\n var low = picker.minDate ? currentMonthIndex(picker.minDate): 0;\r\n var index = currentMonthIndex(nDate, low);\r\n if (calendar.topIndex != index) {\r\n calendar.topIndex = index;\r\n }\r\n }\r\n });\r\n\r\n var generateMonthCalendar = function (date) {\r\n var month = {};\r\n if (date !== null) {\r\n month.name = date.format('MMMM YYYY');\r\n var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n .hour(date.hour())\r\n .minute(date.minute());\r\n var iNumDay = startOfMonth.format('d');\r\n month.days = [];\r\n for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n if (i === startOfMonth.date()) {\r\n var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n if (iWeek > 0) {\r\n for (var x = 0; x < iWeek; x++) {\r\n month.days.push(0);\r\n }\r\n }\r\n }\r\n month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n }\r\n\r\n var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n for (var j = 0; j < slices; j++) {\r\n daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n }\r\n month.days = daysTmp;\r\n return month;\r\n }\r\n\r\n };\r\n\r\n calendar.toDay = function (i) {\r\n return moment(parseInt(i), \"d\")\r\n .locale(picker.params.lang)\r\n .format(\"ddd\")\r\n .substring(0, picker.params.dayOfWeekLen);\r\n };\r\n\r\n calendar.isInRange = function (date) {\r\n return picker.isAfterMinDate(moment(date), false, false) &&\r\n picker.isBeforeMaxDate(moment(date), false, false) &&\r\n picker.isWeekDay(moment(date)) &&\r\n picker.isInDisableDates(moment(date));\r\n };\r\n\r\n calendar.selectDate = function (date) {\r\n if (date) {\r\n if (calendar.isSelectedDay(date)) {\r\n return picker.ok();\r\n }\r\n picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n if (picker.params.autoOk) {\r\n picker.ok();\r\n }\r\n }\r\n };\r\n\r\n calendar.isSelectedDay = function (m) {\r\n return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n };\r\n\r\n calendar.isDateOfTheDay = function (m) {\r\n var today = calendar.picker.options.showTodaysDate;\r\n if (!today) {\r\n return false;\r\n }\r\n\r\n return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n };\r\n }],\r\n template: \r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
'\r\n };\r\n }])\r\n .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n function ($compile) {\r\n var buildCalendarContent = function (element, scope) {\r\n var tbody = angular.element(element[0].querySelector('tbody'));\r\n var calendar = scope.cal, month = scope.month;\r\n\r\n var tbodyHtml = [];\r\n\r\n month.days.forEach(function (weekDays, i) {\r\n tbodyHtml.push('');\r\n weekDays.forEach(function (weekDay, j) {\r\n tbodyHtml.push('');\r\n if (weekDay) {\r\n if (calendar.isInRange(weekDay)) {\r\n //build a\r\n var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n } else {\r\n tbodyHtml.push('');\r\n tbodyHtml.push(weekDay.format('D'));\r\n tbodyHtml.push('');\r\n }\r\n }\r\n tbodyHtml.push('');\r\n });\r\n tbodyHtml.push('');\r\n });\r\n\r\n tbody.html(tbodyHtml.join(''));\r\n $compile(tbody)(scope);\r\n };\r\n\r\n return {\r\n scope: {\r\n idx: '='\r\n },\r\n require: '^mdcDatetimePickerCalendar',\r\n restrict: 'AE',\r\n template: \r\n '
{{month.name}}
' +\r\n '' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n '
{{cal.toDay(day)}}
',\r\n link: function (scope, element, attrs, calendar) {\r\n scope.cal = calendar;\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n scope.$watch(function () {\r\n return scope.idx;\r\n }, function (idx, oldIdx) {\r\n if (idx != oldIdx) {\r\n scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n buildCalendarContent(element, scope);\r\n }\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n ;\r\n\r\n angular.module(moduleName)\r\n .directive('mdcDtpNoclick', function () {\r\n return {\r\n link: function (scope, el) {\r\n el.on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n el.on('dragstart', function (e) {\r\n e.preventDefault();\r\n });\r\n }\r\n };\r\n });\r\n angular.module(moduleName)\r\n .directive('mdcDatetimePickerClock', ['$timeout',\r\n function ($timeout) {\r\n\r\n var template = \r\n '
 ' +\r\n '
' +\r\n ' {{point.display}}' +\r\n ' {{point.display}}' +\r\n '
' +\r\n '
' +\r\n ' {{point24.display}}' +\r\n ' {{point24.display}}' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n return {\r\n restrict: 'E',\r\n template: template,\r\n link: function (scope, element, attrs) {\r\n var minuteMode = attrs.mode === 'minutes';\r\n var secondMode = attrs.mode === 'seconds';\r\n var picker = scope.picker;\r\n //banking on the fact that there will only be one at a time\r\n var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n var setTimeDegRay = function(deg, ray) {\r\n var val = 0;\r\n deg = deg >= 360 ? 0 : deg;\r\n if (deg !== 0) {\r\n var divider = minuteMode||secondMode ? 60 : 12;\r\n val = Math.round(divider / 360 * deg);\r\n }\r\n\r\n if (minuteMode) {\r\n var nearestMin = picker.params.minuteSteps;\r\n if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n var minutes = (nearestMin * Math.round(val / nearestMin));\r\n if (minutes >= 60) minutes = 60 - nearestMin;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.minute(minutes);\r\n } else if (!secondMode){\r\n if (val === 12) val = 0;\r\n if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n if (picker.isPM()) val += 12;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.hour(val);\r\n } else {\r\n if (val >= 60) val = 0;\r\n if (!scope.pointAvailable({value: val})) return;\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n EVENTS = {\r\n POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n POINTER_UP : isTouchSupported ? 'touchend' : 'mouseup',\r\n POINTER_MOVE : isTouchSupported ? 'touchmove' : 'mousemove'\r\n };\r\n\r\n var onMoveEvent = function(e) {\r\n e.preventDefault();\r\n\r\n var closestTarget = e.currentTarget.closest('div'),\r\n clientRect = closestTarget.getClientRects()[0];\r\n\r\n if (isTouchSupported) e = e.changedTouches[0];\r\n \r\n var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n\r\n var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)),\r\n deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n $timeout(function() {\r\n setTimeDegRay(deg+180, ray);\r\n });\r\n };\r\n\r\n element.on(EVENTS.POINTER_DOWN, function() {\r\n element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n });\r\n\r\n element.on(EVENTS.POINTER_UP, function() {\r\n element.off(EVENTS.POINTER_MOVE);\r\n });\r\n\r\n scope.$on(\"$destroy\", function() {\r\n element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n });\r\n\r\n var exec = function () {\r\n var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n //set width\r\n var clockWidth = (w - (mL + mR + pL + pR));\r\n clock.css('width', (clockWidth) + 'px');\r\n\r\n var r = (clockWidth / 2);\r\n var j = r / 1.2; // radius for low number\r\n\r\n var points = [];\r\n\r\n for (var h = 0; h < 12; ++h) {\r\n var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n var left = (r + x + pL / 2) - (pL + mL);\r\n var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n var hour = {\r\n left: left,\r\n top: top,\r\n value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n };\r\n\r\n if (minuteMode || secondMode) {\r\n hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n } else {\r\n if (picker.params.shortTime) {\r\n hour.display = h === 0 ? 12 : h;\r\n } else {\r\n hour.display = h;\r\n }\r\n }\r\n\r\n points.push(hour);\r\n }\r\n scope.points = points;\r\n\r\n if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n var points24 = [];\r\n\r\n var j24 = r / 1.8; // radius for high number\r\n for (var h24 = 12; h24 < 24; ++h24) {\r\n var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n points24.push({\r\n left: left24,\r\n top: top24,\r\n value: h24,\r\n display: h24,\r\n style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n });\r\n }\r\n scope.points24 = points24;\r\n }\r\n\r\n scope.mode = attrs.mode;\r\n setCurrentValue();\r\n clock.css('height', clockWidth + 'px');\r\n\r\n var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n var _mL = r / 1.4;\r\n var _sL = r;\r\n\r\n angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _hL + 'px',\r\n marginTop: (r - _hL - pL) + 'px'\r\n }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _mL + 'px',\r\n marginTop: r - _mL - pL + 'px'\r\n }).addClass(minuteMode ? 'on' : '');\r\n\r\n angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n left: r + (mL * 1.5) + 'px',\r\n height: _sL + 'px',\r\n marginTop: r - _sL - pL + 'px'\r\n }).addClass(secondMode ? 'on' : '');\r\n\r\n angular.element(clockCenter).css({\r\n left: r + pL + mL - centerWidth + 'px',\r\n marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n });\r\n animateHands();\r\n };\r\n\r\n var animateHands = function () {\r\n var _date = picker.currentNearestMinute();\r\n var h = _date.hour(), m = _date.minute(), s = _date.second();\r\n\r\n rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n };\r\n\r\n var rotateElement = function (el, deg) {\r\n angular.element(el).css({\r\n WebkitTransform: 'rotate(' + deg + 'deg)',\r\n '-moz-transform': 'rotate(' + deg + 'deg)',\r\n '-ms-transform': 'rotate(' + deg + 'deg)',\r\n 'transform': 'rotate(' + deg + 'deg)'\r\n });\r\n };\r\n\r\n\r\n var setCurrentValue = function () {\r\n var date = picker.currentNearestMinute();\r\n var nbH = picker.params.shortTime ? 12 : 24;\r\n if (minuteMode) scope.currentValue = date.minute();\r\n else if (secondMode) scope.currentValue = date.second();\r\n else scope.currentValue = date.hour() % nbH;\r\n };\r\n\r\n scope.$watch(function () {\r\n var tmp = picker.currentNearestMinute();\r\n return tmp ? tmp.format('HH:mm:ss') : '';\r\n }, function () {\r\n setCurrentValue();\r\n animateHands();\r\n });\r\n\r\n scope.setTime = function (val) {\r\n if (!minuteMode && !secondMode) {\r\n if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n if (picker.params.shortTime) {\r\n picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n } else {\r\n picker.currentDate.hour(val);\r\n if (val >= 12) picker.meridien = 'PM';\r\n else picker.meridien = 'AM';\r\n }\r\n\r\n if (picker.params.autoOk) picker.ok(); // single click\r\n } else if (!secondMode) {\r\n if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n \r\n picker.currentDate.minute(val);\r\n if (!picker.params.seconds) {\r\n picker.currentDate.second(0);\r\n } else if (picker.params.autoOk) picker.ok(); // single click\r\n } else {\r\n if (val === scope.currentValue) picker.ok(); // double click\r\n picker.currentDate.second(val);\r\n }\r\n };\r\n\r\n scope.pointAvailable = function (point) {\r\n if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n else if (secondMode) return picker.isSecondAvailable(point.value);\r\n else return picker.isHourAvailable(point.value);\r\n };\r\n\r\n var unWatcher = scope.$watch(function () {\r\n return element[0].querySelectorAll('div').length;\r\n }, function () {\r\n exec();\r\n unWatcher();\r\n });\r\n }\r\n };\r\n }]);\r\n return moduleName;\r\n }\r\n\r\n var isElectron = window && window.process && window.process.type;\r\n if (typeof define === 'function' && define.amd) {\r\n define(['moment'], ngMaterialDatePicker);\r\n } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n module.exports = ngMaterialDatePicker(require('moment'));\r\n } else {\r\n ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n }\r\n})();\r\n"], + "mappings": "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", "names": [] } diff --git a/index.html b/index.html index cae2a15..d344c93 100644 --- a/index.html +++ b/index.html @@ -12,8 +12,8 @@ - - + + @@ -21,12 +21,12 @@ - - + + - + diff --git a/js/angular-material-datetimepicker.js b/js/angular-material-datetimepicker.js index f96e3a8..aa3ec7f 100644 --- a/js/angular-material-datetimepicker.js +++ b/js/angular-material-datetimepicker.js @@ -1003,6 +1003,9 @@ el.on('click', function (e) { e.preventDefault(); }); + el.on('dragstart', function (e) { + e.preventDefault(); + }); } }; }); diff --git a/package.json b/package.json index 35a12db..f1268f8 100644 --- a/package.json +++ b/package.json @@ -23,17 +23,17 @@ "angular": "^1.8.2", "angular-animate": "^1.8.2", "angular-aria": "^1.8.2", - "angular-material": "^1.2.3", + "angular-material": "^1.2.5", "angular-messages": "^1.8.2", - "moment": "^2.29.1" + "moment": "^2.29.2" }, "repository": { "type": "git", "url": "https://github.com/beenote/angular-material-datetimepicker" }, "devDependencies": { - "@web/dev-server": "^0.1.27", - "esbuild": "^0.13.12" + "@web/dev-server": "^0.1.30", + "esbuild": "^0.14.36" }, - "packageManager": "yarn@3.1.0" + "packageManager": "yarn@3.2.0" } diff --git a/yarn.lock b/yarn.lock index 6015b71..812a9cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,1026 +1,2476 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.12.11": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - -"@babel/highlight@^7.16.7": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@rollup/plugin-node-resolve@^11.0.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@types/accepts@*": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" - dependencies: - "@types/node" "*" - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/command-line-args@^5.0.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - dependencies: - "@types/node" "*" - -"@types/content-disposition@*": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.4.tgz#de48cf01c79c9f1560bcfd8ae43217ab028657f8" - -"@types/cookies@*": - version "0.7.7" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" - dependencies: - "@types/connect" "*" - "@types/express" "*" - "@types/keygrip" "*" - "@types/node" "*" - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - -"@types/express-serve-static-core@^4.17.18": - version "4.17.28" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/http-assert@*": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" - -"@types/http-errors@*": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.2.tgz#7315b4c4c54f82d13fa61c228ec5c2ea5cc9e0e1" - -"@types/keygrip@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" - -"@types/koa-compose@*": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" - dependencies: - "@types/koa" "*" - -"@types/koa@*", "@types/koa@^2.11.6": - version "2.13.4" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.4.tgz#10620b3f24a8027ef5cbae88b393d1b31205726b" - dependencies: - "@types/accepts" "*" - "@types/content-disposition" "*" - "@types/cookies" "*" - "@types/http-assert" "*" - "@types/http-errors" "*" - "@types/keygrip" "*" - "@types/koa-compose" "*" - "@types/node" "*" - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - -"@types/node@*": - version "17.0.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" - -"@types/parse5@^6.0.1": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - dependencies: - "@types/node" "*" - -"@types/serve-static@*": - version "1.13.10" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/ws@^7.4.0": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - dependencies: - "@types/node" "*" - -"@web/config-loader@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@web/config-loader/-/config-loader-0.1.3.tgz#8325ea54f75ef2ee7166783e64e66936db25bff7" - dependencies: - semver "^7.3.4" - -"@web/dev-server-core@^0.3.16", "@web/dev-server-core@^0.3.17": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@web/dev-server-core/-/dev-server-core-0.3.17.tgz#95e87681b63644a955e29e13ffc6b48fd2c51264" - dependencies: - "@types/koa" "^2.11.6" - "@types/ws" "^7.4.0" - "@web/parse5-utils" "^1.2.0" - chokidar "^3.4.3" - clone "^2.1.2" - es-module-lexer "^0.9.0" - get-stream "^6.0.0" - is-stream "^2.0.0" - isbinaryfile "^4.0.6" - koa "^2.13.0" - koa-etag "^4.0.0" - koa-send "^5.0.1" - koa-static "^5.0.0" - lru-cache "^6.0.0" - mime-types "^2.1.27" - parse5 "^6.0.1" - picomatch "^2.2.2" - ws "^7.4.2" - -"@web/dev-server-rollup@^0.3.13": - version "0.3.15" - resolved "https://registry.yarnpkg.com/@web/dev-server-rollup/-/dev-server-rollup-0.3.15.tgz#c0211fef837b9b733c1dd0849f60d4ece1c1dea4" - dependencies: - "@rollup/plugin-node-resolve" "^11.0.1" - "@web/dev-server-core" "^0.3.16" - nanocolors "^0.2.1" - parse5 "^6.0.1" - rollup "^2.66.1" - whatwg-url "^11.0.0" - -"@web/dev-server@^0.1.27": - version "0.1.30" - resolved "https://registry.yarnpkg.com/@web/dev-server/-/dev-server-0.1.30.tgz#dbc519fafb323da4744f804310b19abeebac9f86" - dependencies: - "@babel/code-frame" "^7.12.11" - "@types/command-line-args" "^5.0.0" - "@web/config-loader" "^0.1.3" - "@web/dev-server-core" "^0.3.17" - "@web/dev-server-rollup" "^0.3.13" - camelcase "^6.2.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.1" - debounce "^1.2.0" - deepmerge "^4.2.2" - ip "^1.1.5" - nanocolors "^0.2.1" - open "^8.0.2" - portfinder "^1.0.28" - -"@web/parse5-utils@^1.2.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@web/parse5-utils/-/parse5-utils-1.3.0.tgz#e2e9e98b31a4ca948309f74891bda8d77399f6bd" - dependencies: - "@types/parse5" "^6.0.1" - parse5 "^6.0.1" - -accepts@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -angular-animate@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.8.2.tgz#a3045e523ffb8d7fcbebd3cb68d1fdd474665ced" - -angular-aria@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/angular-aria/-/angular-aria-1.8.2.tgz#3e5d546e549d8bddcf0b8031c677d3129d82a76d" - -angular-material@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/angular-material/-/angular-material-1.2.4.tgz#c8c4212b8895db205530f58f3b7a0ebccff9a64e" - -angular-messages@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/angular-messages/-/angular-messages-1.8.2.tgz#47f0cf913030bc2231423ab9388acc14dd931837" - -angular@^1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.2.tgz#5983bbb5a9fa63e213cb7749199e0d352de3a2f1" - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - dependencies: - color-convert "^1.9.0" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - -array-back@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - -async@^2.6.2: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - dependencies: - lodash "^4.17.14" - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - dependencies: - fill-range "^7.0.1" - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - -cache-content-type@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" - dependencies: - mime-types "^2.1.18" - ylru "^1.2.0" - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@^3.4.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -clone@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.2.tgz#2b7ccd48a93fb19bd71ca8fe9900feab00e557b0" - dependencies: - array-back "^4.0.1" - chalk "^2.4.2" - table-layout "^1.0.1" - typical "^5.2.0" - -content-disposition@~0.5.2: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - dependencies: - safe-buffer "5.2.1" - -content-type@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - -cookies@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" - dependencies: - depd "~2.0.0" - keygrip "~1.1.0" - -debounce@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - -debug@^3.1.0, debug@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - dependencies: - ms "^2.1.1" - -debug@^4.1.1, debug@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - dependencies: - ms "2.1.2" - -deep-equal@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -depd@^2.0.0, depd@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - -destroy@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -encodeurl@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - -esbuild-android-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" - -esbuild-darwin-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" - -esbuild-darwin-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" - -esbuild-freebsd-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" - -esbuild-freebsd-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" - -esbuild-linux-32@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" - -esbuild-linux-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" - -esbuild-linux-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" - -esbuild-linux-arm@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" - -esbuild-linux-mips64le@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" - -esbuild-linux-ppc64le@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" - -esbuild-netbsd-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" - -esbuild-openbsd-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" - -esbuild-sunos-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" - -esbuild-windows-32@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" - -esbuild-windows-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" - -esbuild-windows-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" - -esbuild@^0.13.12: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" - optionalDependencies: - esbuild-android-arm64 "0.13.15" - esbuild-darwin-64 "0.13.15" - esbuild-darwin-arm64 "0.13.15" - esbuild-freebsd-64 "0.13.15" - esbuild-freebsd-arm64 "0.13.15" - esbuild-linux-32 "0.13.15" - esbuild-linux-64 "0.13.15" - esbuild-linux-arm "0.13.15" - esbuild-linux-arm64 "0.13.15" - esbuild-linux-mips64le "0.13.15" - esbuild-linux-ppc64le "0.13.15" - esbuild-netbsd-64 "0.13.15" - esbuild-openbsd-64 "0.13.15" - esbuild-sunos-64 "0.13.15" - esbuild-windows-32 "0.13.15" - esbuild-windows-64 "0.13.15" - esbuild-windows-arm64 "0.13.15" - -escape-html@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - -etag@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - dependencies: - to-regex-range "^5.0.1" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - dependencies: - array-back "^3.0.1" - -fresh@~0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - dependencies: - is-glob "^4.0.1" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - -has-symbols@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - dependencies: - has-symbols "^1.0.2" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - dependencies: - function-bind "^1.1.1" - -http-assert@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" - dependencies: - deep-equal "~1.0.1" - http-errors "~1.8.0" - -http-errors@^1.6.3, http-errors@^1.7.3, http-errors@~1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -inherits@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - -ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - dependencies: - has "^1.0.3" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - dependencies: - is-extglob "^2.1.1" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - dependencies: - is-docker "^2.0.0" - -isbinaryfile@^4.0.6: - version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - -keygrip@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" - dependencies: - tsscmp "1.0.6" - -koa-compose@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" - -koa-convert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" - dependencies: - co "^4.6.0" - koa-compose "^4.1.0" - -koa-etag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/koa-etag/-/koa-etag-4.0.0.tgz#2c2bb7ae69ca1ac6ced09ba28dcb78523c810414" - dependencies: - etag "^1.8.1" - -koa-send@^5.0.0, koa-send@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/koa-send/-/koa-send-5.0.1.tgz#39dceebfafb395d0d60beaffba3a70b4f543fe79" - dependencies: - debug "^4.1.1" - http-errors "^1.7.3" - resolve-path "^1.4.0" - -koa-static@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/koa-static/-/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" - dependencies: - debug "^3.1.0" - koa-send "^5.0.0" - -koa@^2.13.0: - version "2.13.4" - resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.4.tgz#ee5b0cb39e0b8069c38d115139c774833d32462e" - dependencies: - accepts "^1.3.5" - cache-content-type "^1.0.0" - content-disposition "~0.5.2" - content-type "^1.0.4" - cookies "~0.8.0" - debug "^4.3.2" - delegates "^1.0.0" - depd "^2.0.0" - destroy "^1.0.4" - encodeurl "^1.0.2" - escape-html "^1.0.3" - fresh "~0.5.2" - http-assert "^1.3.0" - http-errors "^1.6.3" - is-generator-function "^1.0.7" - koa-compose "^4.1.0" - koa-convert "^2.0.0" - on-finished "^2.3.0" - only "~0.0.2" - parseurl "^1.3.2" - statuses "^1.5.0" - type-is "^1.6.16" - vary "^1.1.2" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - -lodash@^4.17.14: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - dependencies: - yallist "^4.0.0" - -lru-cache@^7.4.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.8.0.tgz#649aaeb294a56297b5cbc5d70f198dcc5ebe5747" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - -mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - dependencies: - mime-db "1.52.0" - -minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - -mkdirp@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - dependencies: - minimist "^1.2.6" - -moment@^2.29.1: - version "2.29.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.2.tgz#00910c60b20843bcba52d37d58c628b47b1f20e4" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - -nanocolors@^0.2.1: - version "0.2.13" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b" - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - -on-finished@^2.3.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - dependencies: - ee-first "1.1.1" - -only@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" - -open@^8.0.2: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - -parseurl@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - -path-is-absolute@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - -portfinder@^1.0.28: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - dependencies: - picomatch "^2.2.1" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - -resolve-path@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" - dependencies: - http-errors "~1.6.2" - path-is-absolute "1.0.1" - -resolve@^1.19.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -rollup@^2.66.1: - version "2.70.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.1.tgz#824b1f1f879ea396db30b0fc3ae8d2fead93523e" - optionalDependencies: - fsevents "~2.3.2" - -safe-buffer@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - -semver@^7.3.4: - version "7.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.6.tgz#5d73886fb9c0c6602e79440b97165c29581cbb2b" - dependencies: - lru-cache "^7.4.0" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - dependencies: - has-flag "^3.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - -table-layout@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - dependencies: - punycode "^2.1.1" - -tsscmp@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - -type-is@^1.6.16: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - -vary@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - -whatwg-url@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -ws@^7.4.2: - version "7.5.7" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - -ylru@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.3.2.tgz#0de48017473275a4cbdfc83a1eaf67c01af8a785" +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 5 + cacheKey: 8 + +"@babel/code-frame@npm:^7.12.11": + version: 7.16.7 + resolution: "@babel/code-frame@npm:7.16.7" + dependencies: + "@babel/highlight": ^7.16.7 + checksum: db2f7faa31bc2c9cf63197b481b30ea57147a5fc1a6fab60e5d6c02cdfbf6de8e17b5121f99917b3dabb5eeb572da078312e70697415940383efc140d4e0808b + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.16.7": + version: 7.16.7 + resolution: "@babel/helper-validator-identifier@npm:7.16.7" + checksum: dbb3db9d184343152520a209b5684f5e0ed416109cde82b428ca9c759c29b10c7450657785a8b5c5256aa74acc6da491c1f0cf6b784939f7931ef82982051b69 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.16.7": + version: 7.17.9 + resolution: "@babel/highlight@npm:7.17.9" + dependencies: + "@babel/helper-validator-identifier": ^7.16.7 + chalk: ^2.0.0 + js-tokens: ^4.0.0 + checksum: 7bdf10228f2e4d18f48f114411ed584380d356e7c168d7582c14abd8df9909b2fc09e0a7cd334f47c3eb0bc17e639e0c8d9688c6afd5d09a2bdbf0ac193b11fd + languageName: node + linkType: hard + +"@gar/promisify@npm:^1.1.3": + version: 1.1.3 + resolution: "@gar/promisify@npm:1.1.3" + checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^2.1.0": + version: 2.1.0 + resolution: "@npmcli/fs@npm:2.1.0" + dependencies: + "@gar/promisify": ^1.1.3 + semver: ^7.3.5 + checksum: 6ec6d678af6da49f9dac50cd882d7f661934dd278972ffbaacde40d9eaa2871292d634000a0cca9510f6fc29855fbd4af433e1adbff90a524ec3eaf140f1219b + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/move-file@npm:2.0.0" + dependencies: + mkdirp: ^1.0.4 + rimraf: ^3.0.2 + checksum: 1388777b507b0c592d53f41b9d182e1a8de7763bc625fc07999b8edbc22325f074e5b3ec90af79c89d6987fdb2325bc66d59f483258543c14a43661621f841b0 + languageName: node + linkType: hard + +"@rollup/plugin-node-resolve@npm:^11.0.1": + version: 11.2.1 + resolution: "@rollup/plugin-node-resolve@npm:11.2.1" + dependencies: + "@rollup/pluginutils": ^3.1.0 + "@types/resolve": 1.17.1 + builtin-modules: ^3.1.0 + deepmerge: ^4.2.2 + is-module: ^1.0.0 + resolve: ^1.19.0 + peerDependencies: + rollup: ^1.20.0||^2.0.0 + checksum: 6f3b3ecf9a0596a5db4212984bdeb13bb7612693602407e9457ada075dea5a5f2e4e124c592352cf27066a88b194de9b9a95390149b52cf335d5b5e17b4e265b + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^3.1.0": + version: 3.1.0 + resolution: "@rollup/pluginutils@npm:3.1.0" + dependencies: + "@types/estree": 0.0.39 + estree-walker: ^1.0.1 + picomatch: ^2.2.2 + peerDependencies: + rollup: ^1.20.0||^2.0.0 + checksum: 8be16e27863c219edbb25a4e6ec2fe0e1e451d9e917b6a43cf2ae5bc025a6b8faaa40f82a6e53b66d0de37b58ff472c6c3d57a83037ae635041f8df959d6d9aa + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + languageName: node + linkType: hard + +"@types/accepts@npm:*": + version: 1.3.5 + resolution: "@types/accepts@npm:1.3.5" + dependencies: + "@types/node": "*" + checksum: 590b7580570534a640510c071e09074cf63b5958b237a728f94322567350aea4d239f8a9d897a12b15c856b992ee4d7907e9812bb079886af2c00714e7fb3f60 + languageName: node + linkType: hard + +"@types/body-parser@npm:*": + version: 1.19.2 + resolution: "@types/body-parser@npm:1.19.2" + dependencies: + "@types/connect": "*" + "@types/node": "*" + checksum: e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 + languageName: node + linkType: hard + +"@types/command-line-args@npm:^5.0.0": + version: 5.2.0 + resolution: "@types/command-line-args@npm:5.2.0" + checksum: 423121d2d083765f5b78d090115f3be82d53a39cec9de63719cbd07021e6330fab19b75e2290af1f7dda84efd7964dc498eb10b2b465991de27045db95aa1eef + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.35 + resolution: "@types/connect@npm:3.4.35" + dependencies: + "@types/node": "*" + checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 + languageName: node + linkType: hard + +"@types/content-disposition@npm:*": + version: 0.5.4 + resolution: "@types/content-disposition@npm:0.5.4" + checksum: eee083f930fedb125acf0d658653b7d349cdfe93ef78d5613450c4817e4882eb0c0e59b4ab2bc57997bb59f87db9f734dc234644509bb3df51f8388635daf1e1 + languageName: node + linkType: hard + +"@types/cookies@npm:*": + version: 0.7.7 + resolution: "@types/cookies@npm:0.7.7" + dependencies: + "@types/connect": "*" + "@types/express": "*" + "@types/keygrip": "*" + "@types/node": "*" + checksum: d3759efc1182cb0651808570ae13638677b67b0ea724eef7b174e58ffe6ea044b62c7c2715e532f76f88fce4dd8101ed32ac6fbb73226db654017924e8a2a1e6 + languageName: node + linkType: hard + +"@types/estree@npm:0.0.39": + version: 0.0.39 + resolution: "@types/estree@npm:0.0.39" + checksum: 412fb5b9868f2c418126451821833414189b75cc6bf84361156feed733e3d92ec220b9d74a89e52722e03d5e241b2932732711b7497374a404fad49087adc248 + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:^4.17.18": + version: 4.17.28 + resolution: "@types/express-serve-static-core@npm:4.17.28" + dependencies: + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + checksum: 826489811a5b371c10f02443b4ca894ffc05813bfdf2b60c224f5c18ac9a30a2e518cb9ef9fdfcaa2a1bb17f8bfa4ed1859ccdb252e879c9276271b4ee2df5a9 + languageName: node + linkType: hard + +"@types/express@npm:*": + version: 4.17.13 + resolution: "@types/express@npm:4.17.13" + dependencies: + "@types/body-parser": "*" + "@types/express-serve-static-core": ^4.17.18 + "@types/qs": "*" + "@types/serve-static": "*" + checksum: 12a2a0e6c4b993fc0854bec665906788aea0d8ee4392389d7a98a5de1eefdd33c9e1e40a91f3afd274011119c506f7b4126acb97fae62ae20b654974d44cba12 + languageName: node + linkType: hard + +"@types/http-assert@npm:*": + version: 1.5.3 + resolution: "@types/http-assert@npm:1.5.3" + checksum: 9553e5a0b8bcfdac4b51d3fa3b89a91b5450171861a667a5b4c47204e0f4a1ca865d97396e6ceaf220e87b64d06b7a8bad7bfba15ef97acb41a87507c9940dbc + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 1.8.2 + resolution: "@types/http-errors@npm:1.8.2" + checksum: ecc365eea98d7eca650d593e742571acc3003742f0dd0fbbb15b8fce286e0f7421644b4140fb9bf701bbb7f1b744aea3967ebe025f0f0811aa5ab2c3d40fe111 + languageName: node + linkType: hard + +"@types/keygrip@npm:*": + version: 1.0.2 + resolution: "@types/keygrip@npm:1.0.2" + checksum: 60bc2738a4f107070ee3d96f44709cb38f3a96c7ccabab09f56c1b2b4d85f869fd8fb9f1f2937e863d0e9e781f005c2223b823bf32b859185b4f52370c352669 + languageName: node + linkType: hard + +"@types/koa-compose@npm:*": + version: 3.2.5 + resolution: "@types/koa-compose@npm:3.2.5" + dependencies: + "@types/koa": "*" + checksum: 5d1147c4b057eb158195f442f0384f06503f3e69dba99fb517b30a05261a9f92928945c12bb1cfc17a5b7d60db003f38b455a3a9b125f12e4fc81fffa396b3cf + languageName: node + linkType: hard + +"@types/koa@npm:*, @types/koa@npm:^2.11.6": + version: 2.13.4 + resolution: "@types/koa@npm:2.13.4" + dependencies: + "@types/accepts": "*" + "@types/content-disposition": "*" + "@types/cookies": "*" + "@types/http-assert": "*" + "@types/http-errors": "*" + "@types/keygrip": "*" + "@types/koa-compose": "*" + "@types/node": "*" + checksum: 35a54e68944f74d6763537d55d01f8ed870d0ef816b5f27fce97a317b237540b7c249dc4a54abab44ad0afd0ce010b335122c9efb490b9589affe7929201d707 + languageName: node + linkType: hard + +"@types/mime@npm:^1": + version: 1.3.2 + resolution: "@types/mime@npm:1.3.2" + checksum: 0493368244cced1a69cb791b485a260a422e6fcc857782e1178d1e6f219f1b161793e9f87f5fae1b219af0f50bee24fcbe733a18b4be8fdd07a38a8fb91146fd + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 17.0.23 + resolution: "@types/node@npm:17.0.23" + checksum: a3517554737cbb042e76c30d0e5482192ac4d9bea0eeb086e2622d9cabf460a0eb52a696b99fcd18e7fcc93c96db6cc7ae507f6608f256ef0b5c1d8c87a5a470 + languageName: node + linkType: hard + +"@types/parse5@npm:^6.0.1": + version: 6.0.3 + resolution: "@types/parse5@npm:6.0.3" + checksum: ddb59ee4144af5dfcc508a8dcf32f37879d11e12559561e65788756b95b33e6f03ea027d88e1f5408f9b7bfb656bf630ace31a2169edf44151daaf8dd58df1b7 + languageName: node + linkType: hard + +"@types/qs@npm:*": + version: 6.9.7 + resolution: "@types/qs@npm:6.9.7" + checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.4 + resolution: "@types/range-parser@npm:1.2.4" + checksum: b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 + languageName: node + linkType: hard + +"@types/resolve@npm:1.17.1": + version: 1.17.1 + resolution: "@types/resolve@npm:1.17.1" + dependencies: + "@types/node": "*" + checksum: dc6a6df507656004e242dcb02c784479deca516d5f4b58a1707e708022b269ae147e1da0521f3e8ad0d63638869d87e0adc023f0bd5454aa6f72ac66c7525cf5 + languageName: node + linkType: hard + +"@types/serve-static@npm:*": + version: 1.13.10 + resolution: "@types/serve-static@npm:1.13.10" + dependencies: + "@types/mime": ^1 + "@types/node": "*" + checksum: eaca858739483e3ded254cad7d7a679dc2c8b3f52c8bb0cd845b3b7eb1984bde0371fdcb0a5c83aa12e6daf61b6beb762545021f520f08a1fe882a3fa4ea5554 + languageName: node + linkType: hard + +"@types/ws@npm:^7.4.0": + version: 7.4.7 + resolution: "@types/ws@npm:7.4.7" + dependencies: + "@types/node": "*" + checksum: b4c9b8ad209620c9b21e78314ce4ff07515c0cadab9af101c1651e7bfb992d7fd933bd8b9c99d110738fd6db523ed15f82f29f50b45510288da72e964dedb1a3 + languageName: node + linkType: hard + +"@web/config-loader@npm:^0.1.3": + version: 0.1.3 + resolution: "@web/config-loader@npm:0.1.3" + dependencies: + semver: ^7.3.4 + checksum: 278554bd00b757eaf296ba904a224c61d4698df1a5d6c04931c40bc6bb308e81e767055cbf283b763cc530aae6b200bb950aa19eb41aa8979a3a2b29e5f0ac7a + languageName: node + linkType: hard + +"@web/dev-server-core@npm:^0.3.16, @web/dev-server-core@npm:^0.3.17": + version: 0.3.17 + resolution: "@web/dev-server-core@npm:0.3.17" + dependencies: + "@types/koa": ^2.11.6 + "@types/ws": ^7.4.0 + "@web/parse5-utils": ^1.2.0 + chokidar: ^3.4.3 + clone: ^2.1.2 + es-module-lexer: ^0.9.0 + get-stream: ^6.0.0 + is-stream: ^2.0.0 + isbinaryfile: ^4.0.6 + koa: ^2.13.0 + koa-etag: ^4.0.0 + koa-send: ^5.0.1 + koa-static: ^5.0.0 + lru-cache: ^6.0.0 + mime-types: ^2.1.27 + parse5: ^6.0.1 + picomatch: ^2.2.2 + ws: ^7.4.2 + checksum: 6d920dbbe2b736736d61ae529ffaff31631ffce2319025f63fc783e842654e92fc3b30c92460d1e656ca6650713c74e722c05e6e0d6add5b740be808525d2680 + languageName: node + linkType: hard + +"@web/dev-server-rollup@npm:^0.3.13": + version: 0.3.15 + resolution: "@web/dev-server-rollup@npm:0.3.15" + dependencies: + "@rollup/plugin-node-resolve": ^11.0.1 + "@web/dev-server-core": ^0.3.16 + nanocolors: ^0.2.1 + parse5: ^6.0.1 + rollup: ^2.66.1 + whatwg-url: ^11.0.0 + checksum: ddf0b3ceb7f0d0852c43a4a300ed88903feeb6980e005116dac5daaa465b7cc6ba55eb1e2a9ad4466df48a65c3272ad9df3d17941269915e328f45c49130b624 + languageName: node + linkType: hard + +"@web/dev-server@npm:^0.1.30": + version: 0.1.30 + resolution: "@web/dev-server@npm:0.1.30" + dependencies: + "@babel/code-frame": ^7.12.11 + "@types/command-line-args": ^5.0.0 + "@web/config-loader": ^0.1.3 + "@web/dev-server-core": ^0.3.17 + "@web/dev-server-rollup": ^0.3.13 + camelcase: ^6.2.0 + command-line-args: ^5.1.1 + command-line-usage: ^6.1.1 + debounce: ^1.2.0 + deepmerge: ^4.2.2 + ip: ^1.1.5 + nanocolors: ^0.2.1 + open: ^8.0.2 + portfinder: ^1.0.28 + bin: + wds: dist/bin.js + web-dev-server: dist/bin.js + checksum: 9ecd88b6933139541806e944257f90ad69dfe6da7a0d2073f59322c72212df636fae9d736769ecd496c5c4d3234a61e74a27aaa7f647594b155b92e99b655d7a + languageName: node + linkType: hard + +"@web/parse5-utils@npm:^1.2.0": + version: 1.3.0 + resolution: "@web/parse5-utils@npm:1.3.0" + dependencies: + "@types/parse5": ^6.0.1 + parse5: ^6.0.1 + checksum: 379849c1b0a060d50037c7dc90d27231dc68f57b1034d87f89129c3cd87fa27d3a0f8e550e1ab3be00bb1c0d440a8fa95c153a481ed8c2c705fd46fbc8a8433d + languageName: node + linkType: hard + +"abbrev@npm:1": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + languageName: node + linkType: hard + +"accepts@npm:^1.3.5": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: ~2.1.34 + negotiator: 0.6.3 + checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + languageName: node + linkType: hard + +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: 4 + checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": + version: 4.2.1 + resolution: "agentkeepalive@npm:4.2.1" + dependencies: + debug: ^4.1.0 + depd: ^1.1.2 + humanize-ms: ^1.2.1 + checksum: 39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: ^2.0.0 + indent-string: ^4.0.0 + checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + languageName: node + linkType: hard + +"angular-animate@npm:^1.8.2": + version: 1.8.2 + resolution: "angular-animate@npm:1.8.2" + checksum: 6590940545a05bf678ed8c71cfe19409abe4ca634e73c29f0006bc1ce5bafe645da87bc2f483f09584653881201bac2562c8f39d7aeea2c2aea7f6a1f3a0bbde + languageName: node + linkType: hard + +"angular-aria@npm:^1.8.2": + version: 1.8.2 + resolution: "angular-aria@npm:1.8.2" + checksum: 040fb2ee5d652c164b5f2c6a062b345c6cc3f8a344b2ed785d95dff66a3a50bf45c7113a2b8028a29ef2868ce378819c53aa2a2b8a3f3635d2a499bf7d2f9a26 + languageName: node + linkType: hard + +"angular-material@npm:^1.2.5": + version: 1.2.5 + resolution: "angular-material@npm:1.2.5" + peerDependencies: + angular: ^1.7.2 + angular-animate: ^1.7.2 + angular-aria: ^1.7.2 + angular-messages: ^1.7.2 + checksum: 9c995da10e555da54cb5b8fab616c8a0211a3ae162de63fca061d9137bc5102968fa70e1345a001f77d6ea3330bb96b798f3bb775ea1b1fe0dbbeeb274ff03b7 + languageName: node + linkType: hard + +"angular-messages@npm:^1.8.2": + version: 1.8.2 + resolution: "angular-messages@npm:1.8.2" + checksum: 0d20692b3185a72f6f28abec34aa8262dc46785422ce0e7108b9e8aa36d7a6057bc085902b00e9d97a25ebcd09f231369a605b03bc52e05392e2bee6e5b7079e + languageName: node + linkType: hard + +"angular@npm:^1.8.2": + version: 1.8.2 + resolution: "angular@npm:1.8.2" + checksum: 35ea81a23b8c0231a17c90a8aa69f63856bc8ab767c15131089bcc8b55435ed8c2ad803d60ad86f187a9235708d73cc76e1310abae8cad7c87127c19a3e4f932 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: ^1.9.0 + checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + languageName: node + linkType: hard + +"anymatch@npm:~3.1.2": + version: 3.1.2 + resolution: "anymatch@npm:3.1.2" + dependencies: + normalize-path: ^3.0.0 + picomatch: ^2.0.4 + checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.0.0 + resolution: "aproba@npm:2.0.0" + checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.0 + resolution: "are-we-there-yet@npm:3.0.0" + dependencies: + delegates: ^1.0.0 + readable-stream: ^3.6.0 + checksum: 348edfdd931b0b50868b55402c01c3f64df1d4c229ab6f063539a5025fd6c5f5bb8a0cab409bbed8d75d34762d22aa91b7c20b4204eb8177063158d9ba792981 + languageName: node + linkType: hard + +"array-back@npm:^3.0.1, array-back@npm:^3.1.0": + version: 3.1.0 + resolution: "array-back@npm:3.1.0" + checksum: 7205004fcd0f9edd926db921af901b083094608d5b265738d0290092f9822f73accb468e677db74c7c94ef432d39e5ed75a7b1786701e182efb25bbba9734209 + languageName: node + linkType: hard + +"array-back@npm:^4.0.1": + version: 4.0.2 + resolution: "array-back@npm:4.0.2" + checksum: f30603270771eeb54e5aad5f54604c62b3577a18b6db212a7272b2b6c32049121b49431f656654790ed1469411e45f387e7627c0de8fd0515995cc40df9b9294 + languageName: node + linkType: hard + +"async@npm:^2.6.2": + version: 2.6.4 + resolution: "async@npm:2.6.4" + dependencies: + lodash: ^4.17.14 + checksum: a52083fb32e1ebe1d63e5c5624038bb30be68ff07a6c8d7dfe35e47c93fc144bd8652cbec869e0ac07d57dde387aa5f1386be3559cdee799cb1f789678d88e19 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.2.0 + resolution: "binary-extensions@npm:2.2.0" + checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + languageName: node + linkType: hard + +"braces@npm:~3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: ^7.0.1 + checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 + languageName: node + linkType: hard + +"builtin-modules@npm:^3.1.0": + version: 3.2.0 + resolution: "builtin-modules@npm:3.2.0" + checksum: 0265aa1ba78e1a16f4e18668d815cb43fb364e6a6b8aa9189c6f44c7b894a551a43b323c40206959d2d4b2568c1f2805607ad6c88adc306a776ce6904cca6715 + languageName: node + linkType: hard + +"cacache@npm:^16.0.2": + version: 16.0.4 + resolution: "cacache@npm:16.0.4" + dependencies: + "@npmcli/fs": ^2.1.0 + "@npmcli/move-file": ^2.0.0 + chownr: ^2.0.0 + fs-minipass: ^2.1.0 + glob: ^7.2.0 + infer-owner: ^1.0.4 + lru-cache: ^7.7.1 + minipass: ^3.1.6 + minipass-collect: ^1.0.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + mkdirp: ^1.0.4 + p-map: ^4.0.0 + promise-inflight: ^1.0.1 + rimraf: ^3.0.2 + ssri: ^9.0.0 + tar: ^6.1.11 + unique-filename: ^1.1.1 + checksum: f5ddd45e5b1ff5001f9d1fcbc95f1dc210e6b04fbaf92782dd16a514e9a8082efba6eac43dac3d881e2ab5829f5ad857d7deda58cbef235e93d075e8f378214a + languageName: node + linkType: hard + +"cache-content-type@npm:^1.0.0": + version: 1.0.1 + resolution: "cache-content-type@npm:1.0.1" + dependencies: + mime-types: ^2.1.18 + ylru: ^1.2.0 + checksum: 18db4d59452669ccbfd7146a1510a37eb28e9eccf18ca7a4eb603dff2edc5cccdca7498fc3042a2978f76f11151fba486eb9eb69d9afa3fb124957870aef4fd3 + languageName: node + linkType: hard + +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + languageName: node + linkType: hard + +"chalk@npm:^2.0.0, chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: ^3.2.1 + escape-string-regexp: ^1.0.5 + supports-color: ^5.3.0 + checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 + languageName: node + linkType: hard + +"chokidar@npm:^3.4.3": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + languageName: node + linkType: hard + +"clone@npm:^2.1.2": + version: 2.1.2 + resolution: "clone@npm:2.1.2" + checksum: aaf106e9bc025b21333e2f4c12da539b568db4925c0501a1bf4070836c9e848c892fa22c35548ce0d1132b08bbbfa17a00144fe58fccdab6fa900fec4250f67d + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: 1.1.3 + checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + languageName: node + linkType: hard + +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + languageName: node + linkType: hard + +"command-line-args@npm:^5.1.1": + version: 5.2.1 + resolution: "command-line-args@npm:5.2.1" + dependencies: + array-back: ^3.1.0 + find-replace: ^3.0.0 + lodash.camelcase: ^4.3.0 + typical: ^4.0.0 + checksum: e759519087be3cf2e86af8b9a97d3058b4910cd11ee852495be881a067b72891f6a32718fb685ee6d41531ab76b2b7bfb6602f79f882cd4b7587ff1e827982c7 + languageName: node + linkType: hard + +"command-line-usage@npm:^6.1.1": + version: 6.1.2 + resolution: "command-line-usage@npm:6.1.2" + dependencies: + array-back: ^4.0.1 + chalk: ^2.4.2 + table-layout: ^1.0.1 + typical: ^5.2.0 + checksum: 2491ec14efff47f0edefa99720cf77c6400666a63a592aba851f25659525387e8ca970ebdfcc89270b1f6490109972d473de58d21932aa27f5dc4eb7420473b4 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + languageName: node + linkType: hard + +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + languageName: node + linkType: hard + +"content-disposition@npm:~0.5.2": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: 5.2.1 + checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 + languageName: node + linkType: hard + +"content-type@npm:^1.0.4": + version: 1.0.4 + resolution: "content-type@npm:1.0.4" + checksum: 3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 + languageName: node + linkType: hard + +"cookies@npm:~0.8.0": + version: 0.8.0 + resolution: "cookies@npm:0.8.0" + dependencies: + depd: ~2.0.0 + keygrip: ~1.1.0 + checksum: 806055a44f128705265b1bc6a853058da18bf80dea3654ad99be20985b1fa1b14f86c1eef73644aab8071241f8a78acd57202b54c4c5c70769fc694fbb9c4edc + languageName: node + linkType: hard + +"debounce@npm:^1.2.0": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 682a89506d9e54fb109526f4da255c5546102fbb8e3ae75eef3b04effaf5d4853756aee97475cd4650641869794e44f410eeb20ace2b18ea592287ab2038519e + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + languageName: node + linkType: hard + +"debug@npm:^3.1.0, debug@npm:^3.1.1": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: ^2.1.1 + checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + languageName: node + linkType: hard + +"deep-equal@npm:~1.0.1": + version: 1.0.1 + resolution: "deep-equal@npm:1.0.1" + checksum: 5af8cbfcebf190491878a498caccc7dc9592f8ebd1685b976eacc3825619d222b5e929923163b92c4f414494e2b884f7ebf00c022e8198e8292deb70dd9785f4 + languageName: node + linkType: hard + +"deep-extend@npm:~0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2": + version: 4.2.2 + resolution: "deepmerge@npm:4.2.2" + checksum: a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + languageName: node + linkType: hard + +"depd@npm:^1.1.2, depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 + languageName: node + linkType: hard + +"depd@npm:^2.0.0, depd@npm:~2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a + languageName: node + linkType: hard + +"destroy@npm:^1.0.4": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 + languageName: node + linkType: hard + +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + languageName: node + linkType: hard + +"encodeurl@npm:^1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: ^0.6.2 + checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + languageName: node + linkType: hard + +"es-module-lexer@npm:^0.9.0": + version: 0.9.3 + resolution: "es-module-lexer@npm:0.9.3" + checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 + languageName: node + linkType: hard + +"esbuild-android-64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-android-64@npm:0.14.36" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"esbuild-android-arm64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-android-arm64@npm:0.14.36" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-darwin-64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-darwin-64@npm:0.14.36" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"esbuild-darwin-arm64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-darwin-arm64@npm:0.14.36" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-freebsd-64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-freebsd-64@npm:0.14.36" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"esbuild-freebsd-arm64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-freebsd-arm64@npm:0.14.36" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-linux-32@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-linux-32@npm:0.14.36" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"esbuild-linux-64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-linux-64@npm:0.14.36" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"esbuild-linux-arm64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-linux-arm64@npm:0.14.36" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"esbuild-linux-arm@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-linux-arm@npm:0.14.36" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"esbuild-linux-mips64le@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-linux-mips64le@npm:0.14.36" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"esbuild-linux-ppc64le@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-linux-ppc64le@npm:0.14.36" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"esbuild-linux-riscv64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-linux-riscv64@npm:0.14.36" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"esbuild-linux-s390x@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-linux-s390x@npm:0.14.36" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"esbuild-netbsd-64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-netbsd-64@npm:0.14.36" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"esbuild-openbsd-64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-openbsd-64@npm:0.14.36" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"esbuild-sunos-64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-sunos-64@npm:0.14.36" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"esbuild-windows-32@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-windows-32@npm:0.14.36" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"esbuild-windows-64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-windows-64@npm:0.14.36" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"esbuild-windows-arm64@npm:0.14.36": + version: 0.14.36 + resolution: "esbuild-windows-arm64@npm:0.14.36" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"esbuild@npm:^0.14.36": + version: 0.14.36 + resolution: "esbuild@npm:0.14.36" + dependencies: + esbuild-android-64: 0.14.36 + esbuild-android-arm64: 0.14.36 + esbuild-darwin-64: 0.14.36 + esbuild-darwin-arm64: 0.14.36 + esbuild-freebsd-64: 0.14.36 + esbuild-freebsd-arm64: 0.14.36 + esbuild-linux-32: 0.14.36 + esbuild-linux-64: 0.14.36 + esbuild-linux-arm: 0.14.36 + esbuild-linux-arm64: 0.14.36 + esbuild-linux-mips64le: 0.14.36 + esbuild-linux-ppc64le: 0.14.36 + esbuild-linux-riscv64: 0.14.36 + esbuild-linux-s390x: 0.14.36 + esbuild-netbsd-64: 0.14.36 + esbuild-openbsd-64: 0.14.36 + esbuild-sunos-64: 0.14.36 + esbuild-windows-32: 0.14.36 + esbuild-windows-64: 0.14.36 + esbuild-windows-arm64: 0.14.36 + dependenciesMeta: + esbuild-android-64: + optional: true + esbuild-android-arm64: + optional: true + esbuild-darwin-64: + optional: true + esbuild-darwin-arm64: + optional: true + esbuild-freebsd-64: + optional: true + esbuild-freebsd-arm64: + optional: true + esbuild-linux-32: + optional: true + esbuild-linux-64: + optional: true + esbuild-linux-arm: + optional: true + esbuild-linux-arm64: + optional: true + esbuild-linux-mips64le: + optional: true + esbuild-linux-ppc64le: + optional: true + esbuild-linux-riscv64: + optional: true + esbuild-linux-s390x: + optional: true + esbuild-netbsd-64: + optional: true + esbuild-openbsd-64: + optional: true + esbuild-sunos-64: + optional: true + esbuild-windows-32: + optional: true + esbuild-windows-64: + optional: true + esbuild-windows-arm64: + optional: true + bin: + esbuild: bin/esbuild + checksum: 18c0caab3350b90d80f5b134e6c04930b8010aac859227bdf226029e04a42fcb6dce6a6cf92b36a9bd4910d1b152b1c33bc56a629aa05f4eb8e10ec5f5a2ee2b + languageName: node + linkType: hard + +"escape-html@npm:^1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + languageName: node + linkType: hard + +"estree-walker@npm:^1.0.1": + version: 1.0.1 + resolution: "estree-walker@npm:1.0.1" + checksum: 7e70da539691f6db03a08e7ce94f394ce2eef4180e136d251af299d41f92fb2d28ebcd9a6e393e3728d7970aeb5358705ddf7209d52fbcb2dd4693f95dcf925f + languageName: node + linkType: hard + +"etag@npm:^1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + languageName: node + linkType: hard + +"find-replace@npm:^3.0.0": + version: 3.0.0 + resolution: "find-replace@npm:3.0.0" + dependencies: + array-back: ^3.0.1 + checksum: 6b04bcfd79027f5b84aa1dfe100e3295da989bdac4b4de6b277f4d063e78f5c9e92ebc8a1fec6dd3b448c924ba404ee051cc759e14a3ee3e825fa1361025df08 + languageName: node + linkType: hard + +"fresh@npm:~0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: ^3.0.0 + checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: latest + checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@~2.3.2#~builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" + dependencies: + node-gyp: latest + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.1": + version: 1.1.1 + resolution: "function-bind@npm:1.1.1" + checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a + languageName: node + linkType: hard + +"gauge@npm:^4.0.0": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: ^1.0.3 || ^2.0.0 + color-support: ^1.1.3 + console-control-strings: ^1.1.0 + has-unicode: ^2.0.1 + signal-exit: ^3.0.7 + string-width: ^4.2.3 + strip-ansi: ^6.0.1 + wide-align: ^1.1.5 + checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad + languageName: node + linkType: hard + +"glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: ^4.0.1 + checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.2.0": + version: 7.2.0 + resolution: "glob@npm:7.2.0" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.0.4 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.6": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0": + version: 1.0.0 + resolution: "has-tostringtag@npm:1.0.0" + dependencies: + has-symbols: ^1.0.2 + checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + languageName: node + linkType: hard + +"has@npm:^1.0.3": + version: 1.0.3 + resolution: "has@npm:1.0.3" + dependencies: + function-bind: ^1.1.1 + checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 + languageName: node + linkType: hard + +"http-assert@npm:^1.3.0": + version: 1.5.0 + resolution: "http-assert@npm:1.5.0" + dependencies: + deep-equal: ~1.0.1 + http-errors: ~1.8.0 + checksum: 69c9b3c14cf8b2822916360a365089ce936c883c49068f91c365eccba5c141a9964d19fdda589150a480013bf503bf37d8936c732e9635819339e730ab0e7527 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.0": + version: 4.1.0 + resolution: "http-cache-semantics@npm:4.1.0" + checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 + languageName: node + linkType: hard + +"http-errors@npm:^1.6.3, http-errors@npm:^1.7.3, http-errors@npm:~1.8.0": + version: 1.8.1 + resolution: "http-errors@npm:1.8.1" + dependencies: + depd: ~1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: ">= 1.5.0 < 2" + toidentifier: 1.0.1 + checksum: d3c7e7e776fd51c0a812baff570bdf06fe49a5dc448b700ab6171b1250e4cf7db8b8f4c0b133e4bfe2451022a5790c1ca6c2cae4094dedd6ac8304a1267f91d2 + languageName: node + linkType: hard + +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" + dependencies: + depd: ~1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: ">= 1.4.0 < 2" + checksum: a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": 2 + agent-base: 6 + debug: 4 + checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: 6 + debug: 4 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: ^2.0.0 + checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: ">= 2.1.2 < 3.0.0" + checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 + languageName: node + linkType: hard + +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + languageName: node + linkType: hard + +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 + languageName: node + linkType: hard + +"ip@npm:^1.1.5": + version: 1.1.5 + resolution: "ip@npm:1.1.5" + checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: ^2.0.0 + checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c + languageName: node + linkType: hard + +"is-core-module@npm:^2.8.1": + version: 2.8.1 + resolution: "is-core-module@npm:2.8.1" + dependencies: + has: ^1.0.3 + checksum: 418b7bc10768a73c41c7ef497e293719604007f88934a6ffc5f7c78702791b8528102fb4c9e56d006d69361549b3d9519440214a74aefc7e0b79e5e4411d377f + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.7": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: ^1.0.0 + checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b + languageName: node + linkType: hard + +"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: ^2.1.1 + checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 + languageName: node + linkType: hard + +"is-module@npm:^1.0.0": + version: 1.0.0 + resolution: "is-module@npm:1.0.0" + checksum: 8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: ^2.0.0 + checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 + languageName: node + linkType: hard + +"isbinaryfile@npm:^4.0.6": + version: 4.0.10 + resolution: "isbinaryfile@npm:4.0.10" + checksum: a6b28db7e23ac7a77d3707567cac81356ea18bd602a4f21f424f862a31d0e7ab4f250759c98a559ece35ffe4d99f0d339f1ab884ffa9795172f632ab8f88e686 + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 + languageName: node + linkType: hard + +"keygrip@npm:~1.1.0": + version: 1.1.0 + resolution: "keygrip@npm:1.1.0" + dependencies: + tsscmp: 1.0.6 + checksum: 078cd16a463d187121f0a27c1c9c95c52ad392b620f823431689f345a0501132cee60f6e96914b07d570105af470b96960402accd6c48a0b1f3cd8fac4fa2cae + languageName: node + linkType: hard + +"koa-compose@npm:^4.1.0": + version: 4.1.0 + resolution: "koa-compose@npm:4.1.0" + checksum: 46cb16792d96425e977c2ae4e5cb04930280740e907242ec9c25e3fb8b4a1d7b54451d7432bc24f40ec62255edea71894d2ceeb8238501842b4e48014f2e83db + languageName: node + linkType: hard + +"koa-convert@npm:^2.0.0": + version: 2.0.0 + resolution: "koa-convert@npm:2.0.0" + dependencies: + co: ^4.6.0 + koa-compose: ^4.1.0 + checksum: 7385b3391995f59c1312142e110d5dff677f9850dbfbcf387cd36a7b0af03b5d26e82b811eb9bb008b4f3e661cdab1f8817596e46b1929da2cf6e97a2f7456ed + languageName: node + linkType: hard + +"koa-etag@npm:^4.0.0": + version: 4.0.0 + resolution: "koa-etag@npm:4.0.0" + dependencies: + etag: ^1.8.1 + checksum: b5f413574e1edbd60fbbd0d31720e66565d51bfcb407d1bc3f48d9dd5b45fa5a9e4f69a60e749fad7397348e90de23e943307578d007a69da30faaae432deaf6 + languageName: node + linkType: hard + +"koa-send@npm:^5.0.0, koa-send@npm:^5.0.1": + version: 5.0.1 + resolution: "koa-send@npm:5.0.1" + dependencies: + debug: ^4.1.1 + http-errors: ^1.7.3 + resolve-path: ^1.4.0 + checksum: a9fbaadbe0f50efd157a733df4a1cc2b3b79b0cdf12e67c718641e6038d1792c0bebe40913e6d4ceb707d970301155be3859b98d1ef08b0fd1766f7326b82853 + languageName: node + linkType: hard + +"koa-static@npm:^5.0.0": + version: 5.0.0 + resolution: "koa-static@npm:5.0.0" + dependencies: + debug: ^3.1.0 + koa-send: ^5.0.0 + checksum: 8d9b9c4d2b3b13e8818e804245d784099c4b353b55ddd7dbeeb90f27a2e9f5b6f86bd16a4909e337cb89db4d332d9002e6c0f5056caf75749cab62f93c1f0cc5 + languageName: node + linkType: hard + +"koa@npm:^2.13.0": + version: 2.13.4 + resolution: "koa@npm:2.13.4" + dependencies: + accepts: ^1.3.5 + cache-content-type: ^1.0.0 + content-disposition: ~0.5.2 + content-type: ^1.0.4 + cookies: ~0.8.0 + debug: ^4.3.2 + delegates: ^1.0.0 + depd: ^2.0.0 + destroy: ^1.0.4 + encodeurl: ^1.0.2 + escape-html: ^1.0.3 + fresh: ~0.5.2 + http-assert: ^1.3.0 + http-errors: ^1.6.3 + is-generator-function: ^1.0.7 + koa-compose: ^4.1.0 + koa-convert: ^2.0.0 + on-finished: ^2.3.0 + only: ~0.0.2 + parseurl: ^1.3.2 + statuses: ^1.5.0 + type-is: ^1.6.16 + vary: ^1.1.2 + checksum: c9a6f9c803433b2d143a0788308048c1432a71c5febcfea2af7f2e8bd732b9bfd75c2c220d553752ee9ab9a3f52490f006cfd521db97cd01d8461d67cc1ccc1f + languageName: node + linkType: hard + +"lodash.camelcase@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.camelcase@npm:4.3.0" + checksum: cb9227612f71b83e42de93eccf1232feeb25e705bdb19ba26c04f91e885bfd3dd5c517c4a97137658190581d3493ea3973072ca010aab7e301046d90740393d1 + languageName: node + linkType: hard + +"lodash@npm:^4.17.14": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 + languageName: node + linkType: hard + +"lru-cache@npm:^7.4.0": + version: 7.8.0 + resolution: "lru-cache@npm:7.8.0" + checksum: 7cc046276b668e7b59c10f7f25049d89315cd22fb5205c0eb476583ba29b8542955189452dc8655a771e1a91f6056ddcb29daf4ac35197f77b3ce9a0041d54c9 + languageName: node + linkType: hard + +"lru-cache@npm:^7.7.1": + version: 7.8.1 + resolution: "lru-cache@npm:7.8.1" + checksum: 31ea67388c9774300331d70f4affd5a433869bcf0fae5405f967d19d7b447930b713b0566a2e95362c9082034a8b496f3671ccf8f0c061d8e8048412663f9432 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^10.0.3": + version: 10.1.2 + resolution: "make-fetch-happen@npm:10.1.2" + dependencies: + agentkeepalive: ^4.2.1 + cacache: ^16.0.2 + http-cache-semantics: ^4.1.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 + is-lambda: ^1.0.1 + lru-cache: ^7.7.1 + minipass: ^3.1.6 + minipass-collect: ^1.0.2 + minipass-fetch: ^2.0.3 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.3 + promise-retry: ^2.0.1 + socks-proxy-agent: ^6.1.1 + ssri: ^9.0.0 + checksum: 42825d119a7e4f5b1a8e7048a86d328cd36bb1ff875d155ce7079d9a0afdd310c198fb310096af358cfa9ecdf643cecf960380686792457dccb36e17efe89eb0 + languageName: node + linkType: hard + +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + languageName: node + linkType: hard + +"mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: 1.52.0 + checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: ^1.1.7 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + languageName: node + linkType: hard + +"minimist@npm:^1.2.6": + version: 1.2.6 + resolution: "minimist@npm:1.2.6" + checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb + languageName: node + linkType: hard + +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: ^3.0.0 + checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + languageName: node + linkType: hard + +"minipass-fetch@npm:^2.0.3": + version: 2.1.0 + resolution: "minipass-fetch@npm:2.1.0" + dependencies: + encoding: ^0.1.13 + minipass: ^3.1.6 + minipass-sized: ^1.0.3 + minizlib: ^2.1.2 + dependenciesMeta: + encoding: + optional: true + checksum: 1334732859a3f7959ed22589bafd9c40384b885aebb5932328071c33f86b3eb181d54c86919675d1825ab5f1c8e4f328878c863873258d113c29d79a4b0c9c9f + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: ^3.0.0 + checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: ^3.0.0 + checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: ^3.0.0 + checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 + languageName: node + linkType: hard + +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": + version: 3.1.6 + resolution: "minipass@npm:3.1.6" + dependencies: + yallist: ^4.0.0 + checksum: 57a04041413a3531a65062452cb5175f93383ef245d6f4a2961d34386eb9aa8ac11ac7f16f791f5e8bbaf1dfb1ef01596870c88e8822215db57aa591a5bb0a77 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: ^3.0.0 + yallist: ^4.0.0 + checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 + languageName: node + linkType: hard + +"mkdirp@npm:^0.5.5": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" + dependencies: + minimist: ^1.2.6 + bin: + mkdirp: bin/cmd.js + checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f + languageName: node + linkType: hard + +"moment@npm:^2.29.2": + version: 2.29.2 + resolution: "moment@npm:2.29.2" + checksum: ee850b5776485e2af0775ceb3cfebaa7d7638f0a750fe0678fcae24c310749f96c1938808384bd422a55e5703834a71fcb09c8a1d36d9cf847f6ed0205d7a3e5 + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + +"nanocolors@npm:^0.2.1": + version: 0.2.13 + resolution: "nanocolors@npm:0.2.13" + checksum: 01ac5aab77295c66cef83ea5f595e22f5f91518f19fae12f93ca2cba98703f971e32611fea2983f333eb7e60604043005690f61d9759e7c0a32314942fe6ddb8 + languageName: node + linkType: hard + +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 + languageName: node + linkType: hard + +"ng-material-datetimepicker@workspace:.": + version: 0.0.0-use.local + resolution: "ng-material-datetimepicker@workspace:." + dependencies: + "@web/dev-server": ^0.1.30 + angular: ^1.8.2 + angular-animate: ^1.8.2 + angular-aria: ^1.8.2 + angular-material: ^1.2.5 + angular-messages: ^1.8.2 + esbuild: ^0.14.36 + moment: ^2.29.2 + languageName: unknown + linkType: soft + +"node-gyp@npm:latest": + version: 9.0.0 + resolution: "node-gyp@npm:9.0.0" + dependencies: + env-paths: ^2.2.0 + glob: ^7.1.4 + graceful-fs: ^4.2.6 + make-fetch-happen: ^10.0.3 + nopt: ^5.0.0 + npmlog: ^6.0.0 + rimraf: ^3.0.2 + semver: ^7.3.5 + tar: ^6.1.2 + which: ^2.0.2 + bin: + node-gyp: bin/node-gyp.js + checksum: 4d8ef8860f7e4f4d86c91db3f519d26ed5cc23b48fe54543e2afd86162b4acbd14f21de42a5db344525efb69a991e021b96a68c70c6e2d5f4a5cb770793da6d3 + languageName: node + linkType: hard + +"nopt@npm:^5.0.0": + version: 5.0.0 + resolution: "nopt@npm:5.0.0" + dependencies: + abbrev: 1 + bin: + nopt: bin/nopt.js + checksum: d35fdec187269503843924e0114c0c6533fb54bbf1620d0f28b4b60ba01712d6687f62565c55cc20a504eff0fbe5c63e22340c3fad549ad40469ffb611b04f2f + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + languageName: node + linkType: hard + +"npmlog@npm:^6.0.0": + version: 6.0.1 + resolution: "npmlog@npm:6.0.1" + dependencies: + are-we-there-yet: ^3.0.0 + console-control-strings: ^1.1.0 + gauge: ^4.0.0 + set-blocking: ^2.0.0 + checksum: f1a4078a73ebc89896a832bbf869f491c32ecb12e0434b9a7499878ce8f29f22e72befe3c53cd8cdc9dbf4b4057297e783ab0b6746a8b067734de6205af4d538 + languageName: node + linkType: hard + +"on-finished@npm:^2.3.0": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: 1.1.1 + checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + +"only@npm:~0.0.2": + version: 0.0.2 + resolution: "only@npm:0.0.2" + checksum: d399710db867a1ef436dd3ce74499c87ece794aa81ab0370b5d153968766ee4aed2f98d3f92fc87c963e45b7a74d400d6f463ef651a5e7cfb861b15e88e9efe6 + languageName: node + linkType: hard + +"open@npm:^8.0.2": + version: 8.4.0 + resolution: "open@npm:8.4.0" + dependencies: + define-lazy-prop: ^2.0.0 + is-docker: ^2.1.1 + is-wsl: ^2.2.0 + checksum: e9545bec64cdbf30a0c35c1bdc310344adf8428a117f7d8df3c0af0a0a24c513b304916a6d9b11db0190ff7225c2d578885080b761ed46a3d5f6f1eebb98b63c + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c + languageName: node + linkType: hard + +"parse5@npm:^6.0.1": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd + languageName: node + linkType: hard + +"parseurl@npm:^1.3.2": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 + languageName: node + linkType: hard + +"path-is-absolute@npm:1.0.1, path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf + languageName: node + linkType: hard + +"portfinder@npm:^1.0.28": + version: 1.0.28 + resolution: "portfinder@npm:1.0.28" + dependencies: + async: ^2.6.2 + debug: ^3.1.1 + mkdirp: ^0.5.5 + checksum: 91fef602f13f8f4c64385d0ad2a36cc9dc6be0b8d10a2628ee2c3c7b9917ab4fefb458815b82cea2abf4b785cd11c9b4e2d917ac6fa06f14b6fa880ca8f8928c + languageName: node + linkType: hard + +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: ^2.0.2 + retry: ^0.12.0 + checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 + languageName: node + linkType: hard + +"punycode@npm:^2.1.1": + version: 2.1.1 + resolution: "punycode@npm:2.1.1" + checksum: 823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 + languageName: node + linkType: hard + +"readable-stream@npm:^3.6.0": + version: 3.6.0 + resolution: "readable-stream@npm:3.6.0" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: ^2.2.1 + checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 + languageName: node + linkType: hard + +"reduce-flatten@npm:^2.0.0": + version: 2.0.0 + resolution: "reduce-flatten@npm:2.0.0" + checksum: 64393ef99a16b20692acfd60982d7fdbd7ff8d9f8f185c6023466444c6dd2abb929d67717a83cec7f7f8fb5f46a25d515b3b2bf2238fdbfcdbfd01d2a9e73cb8 + languageName: node + linkType: hard + +"resolve-path@npm:^1.4.0": + version: 1.4.0 + resolution: "resolve-path@npm:1.4.0" + dependencies: + http-errors: ~1.6.2 + path-is-absolute: 1.0.1 + checksum: 1a39f569ee54dd5f8ee8576ef8671c9724bea65d9f9982fbb5352af9fb4e500e1e459c1bfb1ae3ebfd8d43a709c3a01dfa4f46cf5b831e45e2caed4f1a208300 + languageName: node + linkType: hard + +"resolve@npm:^1.19.0": + version: 1.22.0 + resolution: "resolve@npm:1.22.0" + dependencies: + is-core-module: ^2.8.1 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: a2d14cc437b3a23996f8c7367eee5c7cf8149c586b07ca2ae00e96581ce59455555a1190be9aa92154785cf9f2042646c200d0e00e0bbd2b8a995a93a0ed3e4e + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.19.0#~builtin": + version: 1.22.0 + resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin::version=1.22.0&hash=07638b" + dependencies: + is-core-module: ^2.8.1 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: c79ecaea36c872ee4a79e3db0d3d4160b593f2ca16e031d8283735acd01715a203607e9ded3f91f68899c2937fa0d49390cddbe0fb2852629212f3cda283f4a7 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + +"rollup@npm:^2.66.1": + version: 2.70.1 + resolution: "rollup@npm:2.70.1" + dependencies: + fsevents: ~2.3.2 + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 06c62933e6e81a1c8c684d7d576e507081aabdb63cc0c91bca86b7348b66df03b77827068e4990b8b6c738bd3ef66dcc8c7ed7e0ea40b736068e7618f693133e + languageName: node + linkType: hard + +"safe-buffer@npm:5.2.1, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + languageName: node + linkType: hard + +"semver@npm:^7.3.4": + version: 7.3.6 + resolution: "semver@npm:7.3.6" + dependencies: + lru-cache: ^7.4.0 + bin: + semver: bin/semver.js + checksum: 9845f96b22268190b30025e02feca391451f2bd49b2c51920c27cc56744f64cbe397df089018fdb347d4b4fd800eabbd85661870eb63eb28055d2b72e457f759 + languageName: node + linkType: hard + +"semver@npm:^7.3.5": + version: 7.3.7 + resolution: "semver@npm:7.3.7" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 2fa3e877568cd6ce769c75c211beaed1f9fce80b28338cadd9d0b6c40f2e2862bafd62c19a6cff42f3d54292b7c623277bcab8816a2b5521cf15210d43e75232 + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 + languageName: node + linkType: hard + +"setprototypeof@npm:1.1.0": + version: 1.1.0 + resolution: "setprototypeof@npm:1.1.0" + checksum: 27cb44304d6c9e1a23bc6c706af4acaae1a7aa1054d4ec13c05f01a99fd4887109a83a8042b67ad90dbfcd100d43efc171ee036eb080667172079213242ca36e + languageName: node + linkType: hard + +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^6.1.1": + version: 6.1.1 + resolution: "socks-proxy-agent@npm:6.1.1" + dependencies: + agent-base: ^6.0.2 + debug: ^4.3.1 + socks: ^2.6.1 + checksum: 9a8a4f791bba0060315cf7291ca6f9db37d6fc280fd0860d73d8887d3efe4c22e823aa25a8d5375f6079279f8dc91b50c075345179bf832bfe3c7c26d3582e3c + languageName: node + linkType: hard + +"socks@npm:^2.6.1": + version: 2.6.2 + resolution: "socks@npm:2.6.2" + dependencies: + ip: ^1.1.5 + smart-buffer: ^4.2.0 + checksum: dd9194293059d737759d5c69273850ad4149f448426249325c4bea0e340d1cf3d266c3b022694b0dcf5d31f759de23657244c481fc1e8322add80b7985c36b5e + languageName: node + linkType: hard + +"ssri@npm:^9.0.0": + version: 9.0.0 + resolution: "ssri@npm:9.0.0" + dependencies: + minipass: ^3.1.1 + checksum: bf33174232d07cc64e77ab1c51b55d28352273380c503d35642a19627e88a2c5f160039bb0a28608a353485075dda084dbf0390c7070f9f284559eb71d01b84b + languageName: node + linkType: hard + +"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:^1.5.0": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c + languageName: node + linkType: hard + +"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: ~5.2.0 + checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 + languageName: node + linkType: hard + +"strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: ^5.0.1 + checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: ^3.0.0 + checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae + languageName: node + linkType: hard + +"table-layout@npm:^1.0.1": + version: 1.0.2 + resolution: "table-layout@npm:1.0.2" + dependencies: + array-back: ^4.0.1 + deep-extend: ~0.6.0 + typical: ^5.2.0 + wordwrapjs: ^4.0.0 + checksum: 8f41b5671f101a5195747ec1727b1d35ea2cd5bf85addda11cc2f4b36892db9696ce3c2c7334b5b8a122505b34d19135fede50e25678df71b0439e0704fd953f + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.1.11 + resolution: "tar@npm:6.1.11" + dependencies: + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + minipass: ^3.0.0 + minizlib: ^2.1.1 + mkdirp: ^1.0.3 + yallist: ^4.0.0 + checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: ^7.0.0 + checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed + languageName: node + linkType: hard + +"toidentifier@npm:1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 + languageName: node + linkType: hard + +"tr46@npm:^3.0.0": + version: 3.0.0 + resolution: "tr46@npm:3.0.0" + dependencies: + punycode: ^2.1.1 + checksum: 44c3cc6767fb800490e6e9fd64fd49041aa4e49e1f6a012b34a75de739cc9ed3a6405296072c1df8b6389ae139c5e7c6496f659cfe13a04a4bff3a1422981270 + languageName: node + linkType: hard + +"tsscmp@npm:1.0.6": + version: 1.0.6 + resolution: "tsscmp@npm:1.0.6" + checksum: 1512384def36bccc9125cabbd4c3b0e68608d7ee08127ceaa0b84a71797263f1a01c7f82fa69be8a3bd3c1396e2965d2f7b52d581d3a5eeaf3967fbc52e3b3bf + languageName: node + linkType: hard + +"type-is@npm:^1.6.16": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: 0.3.0 + mime-types: ~2.1.24 + checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 + languageName: node + linkType: hard + +"typical@npm:^4.0.0": + version: 4.0.0 + resolution: "typical@npm:4.0.0" + checksum: a242081956825328f535e6195a924240b34daf6e7fdb573a1809a42b9f37fb8114fa99c7ab89a695e0cdb419d4149d067f6723e4b95855ffd39c6c4ca378efb3 + languageName: node + linkType: hard + +"typical@npm:^5.2.0": + version: 5.2.0 + resolution: "typical@npm:5.2.0" + checksum: ccaeb151a9a556291b495571ca44c4660f736fb49c29314bbf773c90fad92e9485d3cc2b074c933866c1595abbbc962f2b8bfc6e0f52a8c6b0cdd205442036ac + languageName: node + linkType: hard + +"unique-filename@npm:^1.1.1": + version: 1.1.1 + resolution: "unique-filename@npm:1.1.1" + dependencies: + unique-slug: ^2.0.0 + checksum: cf4998c9228cc7647ba7814e255dec51be43673903897b1786eff2ac2d670f54d4d733357eb08dea969aa5e6875d0e1bd391d668fbdb5a179744e7c7551a6f80 + languageName: node + linkType: hard + +"unique-slug@npm:^2.0.0": + version: 2.0.2 + resolution: "unique-slug@npm:2.0.2" + dependencies: + imurmurhash: ^0.1.4 + checksum: 5b6876a645da08d505dedb970d1571f6cebdf87044cb6b740c8dbb24f0d6e1dc8bdbf46825fd09f994d7cf50760e6f6e063cfa197d51c5902c00a861702eb75a + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + languageName: node + linkType: hard + +"vary@npm:^1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: f05588567a2a76428515333eff87200fae6c83c3948a7482ebb109562971e77ef6dc49749afa58abb993391227c5697b3ecca52018793e0cb4620a48f10bd21b + languageName: node + linkType: hard + +"whatwg-url@npm:^11.0.0": + version: 11.0.0 + resolution: "whatwg-url@npm:11.0.0" + dependencies: + tr46: ^3.0.0 + webidl-conversions: ^7.0.0 + checksum: ed4826aaa57e66bb3488a4b25c9cd476c46ba96052747388b5801f137dd740b73fde91ad207d96baf9f17fbcc80fc1a477ad65181b5eb5fa718d27c69501d7af + languageName: node + linkType: hard + +"which@npm:^2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: ^2.0.0 + bin: + node-which: ./bin/node-which + checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + languageName: node + linkType: hard + +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: ^1.0.2 || 2 || 3 || 4 + checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 + languageName: node + linkType: hard + +"wordwrapjs@npm:^4.0.0": + version: 4.0.1 + resolution: "wordwrapjs@npm:4.0.1" + dependencies: + reduce-flatten: ^2.0.0 + typical: ^5.2.0 + checksum: 3d927f3c95d0ad990968da54c0ad8cde2801d8e91006cd7474c26e6b742cc8557250ce495c9732b2f9db1f903601cb74ec282e0f122ee0d02d7abe81e150eea8 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + languageName: node + linkType: hard + +"ws@npm:^7.4.2": + version: 7.5.7 + resolution: "ws@npm:7.5.7" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 5c1f669a166fb57560b4e07f201375137fa31d9186afde78b1508926345ce546332f109081574ddc4e38cc474c5406b5fc71c18d71eb75f6e2d2245576976cba + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + languageName: node + linkType: hard + +"ylru@npm:^1.2.0": + version: 1.3.2 + resolution: "ylru@npm:1.3.2" + checksum: b6bb3931144424114f2350c072cfeb180f205add93509c605ae025cbed8059846f8a5767655feeeab890d288b5b4c4b36f5d5d867ee4e6946c16bcc7ec3ddaee + languageName: node + linkType: hard From 181775f394b9a6f6dcabad016d4ff23676f229ed Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 16 Apr 2022 18:57:35 -0400 Subject: [PATCH 225/226] update yarn --- .yarn/releases/yarn-3.1.0.cjs | 768 --------------------------------- .yarn/releases/yarn-3.2.0.cjs | 785 ++++++++++++++++++++++++++++++++++ .yarnrc.yml | 2 +- yarn.lock | 2 +- 4 files changed, 787 insertions(+), 770 deletions(-) delete mode 100644 .yarn/releases/yarn-3.1.0.cjs create mode 100644 .yarn/releases/yarn-3.2.0.cjs diff --git a/.yarn/releases/yarn-3.1.0.cjs b/.yarn/releases/yarn-3.1.0.cjs deleted file mode 100644 index 8584827..0000000 --- a/.yarn/releases/yarn-3.1.0.cjs +++ /dev/null @@ -1,768 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var Mfe=Object.create,Vf=Object.defineProperty,Ofe=Object.defineProperties,Kfe=Object.getOwnPropertyDescriptor,Ufe=Object.getOwnPropertyDescriptors,Hfe=Object.getOwnPropertyNames,hI=Object.getOwnPropertySymbols,Gfe=Object.getPrototypeOf,eb=Object.prototype.hasOwnProperty,lO=Object.prototype.propertyIsEnumerable;var cO=(t,e,r)=>e in t?Vf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,P=(t,e)=>{for(var r in e||(e={}))eb.call(e,r)&&cO(t,r,e[r]);if(hI)for(var r of hI(e))lO.call(e,r)&&cO(t,r,e[r]);return t},_=(t,e)=>Ofe(t,Ufe(e)),jfe=t=>Vf(t,"__esModule",{value:!0});var qr=(t,e)=>{var r={};for(var i in t)eb.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&hI)for(var i of hI(t))e.indexOf(i)<0&&lO.call(t,i)&&(r[i]=t[i]);return r},Yfe=(t,e)=>()=>(t&&(e=t(t=0)),e),I=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),it=(t,e)=>{for(var r in e)Vf(t,r,{get:e[r],enumerable:!0})},qfe=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Hfe(e))!eb.call(t,i)&&i!=="default"&&Vf(t,i,{get:()=>e[i],enumerable:!(r=Kfe(e,i))||r.enumerable});return t},ie=t=>qfe(jfe(Vf(t!=null?Mfe(Gfe(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var MO=I((i$e,FO)=>{FO.exports=NO;NO.sync=Ahe;var LO=require("fs");function lhe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{OO.exports=KO;KO.sync=che;var UO=require("fs");function KO(t,e,r){UO.stat(t,function(i,n){r(i,i?!1:HO(n,e))})}function che(t,e){return HO(UO.statSync(t),e)}function HO(t,e){return t.isFile()&&uhe(t,e)}function uhe(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=r&c||r&l&&n===o||r&a&&i===s||r&u&&s===0;return g}});var YO=I((o$e,jO)=>{var s$e=require("fs"),xI;process.platform==="win32"||global.TESTING_WINDOWS?xI=MO():xI=GO();jO.exports=db;db.sync=ghe;function db(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){db(t,e||{},function(s,o){s?n(s):i(o)})})}xI(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function ghe(t,e){try{return xI.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var XO=I((a$e,qO)=>{var eu=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",JO=require("path"),fhe=eu?";":":",WO=YO(),zO=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),VO=(t,e)=>{let r=e.colon||fhe,i=t.match(/\//)||eu&&t.match(/\\/)?[""]:[...eu?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=eu?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=eu?n.split(r):[""];return eu&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},_O=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=VO(t,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(zO(t));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=JO.join(h,t),d=!h&&/^\.[\\\/]/.test(t)?t.slice(0,2)+p:p;u(l(d,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];WO(c+p,{pathExt:s},(d,m)=>{if(!d&&m)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},hhe=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=VO(t,e),s=[];for(let o=0;o{"use strict";var ZO=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Cb.exports=ZO;Cb.exports.default=ZO});var iK=I((l$e,eK)=>{"use strict";var tK=require("path"),phe=XO(),dhe=$O();function rK(t,e){let r=t.options.env||process.env,i=process.cwd(),n=t.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch(a){}let o;try{o=phe.sync(t.command,{path:r[dhe({env:r})],pathExt:e?tK.delimiter:void 0})}catch(a){}finally{s&&process.chdir(i)}return o&&(o=tK.resolve(n?t.options.cwd:"",o)),o}function Che(t){return rK(t)||rK(t,!0)}eK.exports=Che});var nK=I((c$e,mb)=>{"use strict";var Ib=/([()\][%!^"`<>&|;, *?])/g;function mhe(t){return t=t.replace(Ib,"^$1"),t}function Ihe(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(Ib,"^$1"),e&&(t=t.replace(Ib,"^$1")),t}mb.exports.command=mhe;mb.exports.argument=Ihe});var oK=I((u$e,sK)=>{"use strict";sK.exports=/^#!(.*)/});var AK=I((g$e,aK)=>{"use strict";var Ehe=oK();aK.exports=(t="")=>{let e=t.match(Ehe);if(!e)return null;let[r,i]=e[0].replace(/#! ?/,"").split(" "),n=r.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var cK=I((f$e,lK)=>{"use strict";var Eb=require("fs"),yhe=AK();function whe(t){let e=150,r=Buffer.alloc(e),i;try{i=Eb.openSync(t,"r"),Eb.readSync(i,r,0,e,0),Eb.closeSync(i)}catch(n){}return yhe(r.toString())}lK.exports=whe});var hK=I((h$e,uK)=>{"use strict";var Bhe=require("path"),gK=iK(),fK=nK(),Qhe=cK(),bhe=process.platform==="win32",vhe=/\.(?:com|exe)$/i,She=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function xhe(t){t.file=gK(t);let e=t.file&&Qhe(t.file);return e?(t.args.unshift(t.file),t.command=e,gK(t)):t.file}function khe(t){if(!bhe)return t;let e=xhe(t),r=!vhe.test(e);if(t.options.forceShell||r){let i=She.test(e);t.command=Bhe.normalize(t.command),t.command=fK.command(t.command),t.args=t.args.map(s=>fK.argument(s,i));let n=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${n}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function Phe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let i={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?i:khe(i)}uK.exports=Phe});var CK=I((p$e,pK)=>{"use strict";var yb=process.platform==="win32";function wb(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function Dhe(t,e){if(!yb)return;let r=t.emit;t.emit=function(i,n){if(i==="exit"){let s=dK(n,e,"spawn");if(s)return r.call(t,"error",s)}return r.apply(t,arguments)}}function dK(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawn"):null}function Rhe(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawnSync"):null}pK.exports={hookChildProcess:Dhe,verifyENOENT:dK,verifyENOENTSync:Rhe,notFoundError:wb}});var bb=I((d$e,tu)=>{"use strict";var mK=require("child_process"),Bb=hK(),Qb=CK();function IK(t,e,r){let i=Bb(t,e,r),n=mK.spawn(i.command,i.args,i.options);return Qb.hookChildProcess(n,i),n}function Fhe(t,e,r){let i=Bb(t,e,r),n=mK.spawnSync(i.command,i.args,i.options);return n.error=n.error||Qb.verifyENOENTSync(n.status,i),n}tu.exports=IK;tu.exports.spawn=IK;tu.exports.sync=Fhe;tu.exports._parse=Bb;tu.exports._enoent=Qb});var yK=I((y$e,EK)=>{"use strict";EK.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Nb=I((w$e,wK)=>{var gh=yK(),BK={};for(let t of Object.keys(gh))BK[gh[t]]=t;var Xe={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};wK.exports=Xe;for(let t of Object.keys(Xe)){if(!("channels"in Xe[t]))throw new Error("missing channels property: "+t);if(!("labels"in Xe[t]))throw new Error("missing channel labels property: "+t);if(Xe[t].labels.length!==Xe[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=Xe[t];delete Xe[t].channels,delete Xe[t].labels,Object.defineProperty(Xe[t],"channels",{value:e}),Object.defineProperty(Xe[t],"labels",{value:r})}Xe.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(e,r,i),s=Math.max(e,r,i),o=s-n,a,l;s===n?a=0:e===s?a=(r-i)/o:r===s?a=2+(i-e)/o:i===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+s)/2;return s===n?l=0:c<=.5?l=o/(s+n):l=o/(2-s-n),[a,l*100,c*100]};Xe.rgb.hsv=function(t){let e,r,i,n,s,o=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),g=function(f){return(c-f)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,e=g(o),r=g(a),i=g(l),o===c?n=i-r:a===c?n=1/3+e-i:l===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};Xe.rgb.hwb=function(t){let e=t[0],r=t[1],i=t[2],n=Xe.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,i));return i=1-1/255*Math.max(e,Math.max(r,i)),[n,s*100,i*100]};Xe.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(1-e,1-r,1-i),s=(1-e-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,a=(1-i-n)/(1-n)||0;return[s*100,o*100,a*100,n*100]};function The(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Xe.rgb.keyword=function(t){let e=BK[t];if(e)return e;let r=Infinity,i;for(let n of Object.keys(gh)){let s=gh[n],o=The(t,s);o.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=e*.4124+r*.3576+i*.1805,s=e*.2126+r*.7152+i*.0722,o=e*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};Xe.rgb.lab=function(t){let e=Xe.rgb.xyz(t),r=e[0],i=e[1],n=e[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),a=200*(i-n);return[s,o,a]};Xe.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let a=2*i-n,l=[0,0,0];for(let c=0;c<3;c++)s=e+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=a+(n-a)*6*s:2*s<1?o=n:3*s<2?o=a+(n-a)*(2/3-s)*6:o=a,l[c]=o*255;return l};Xe.hsl.hsv=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,a=i===0?2*n/(s+n):2*r/(i+r);return[e,a*100,o*100]};Xe.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-r),a=255*i*(1-r*s),l=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,l,o];case 1:return[a,i,o];case 2:return[o,i,l];case 3:return[o,a,i];case 4:return[l,o,i];case 5:return[i,o,a]}};Xe.hsv.hsl=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let a=(2-r)*n;return s=r*n,s/=a<=1?a:2-a,s=s||0,o/=2,[e,s*100,o*100]};Xe.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*e),a=1-i;s=6*e-o,(o&1)!=0&&(s=1-s);let l=r+s*(a-r),c,u,g;switch(o){default:case 6:case 0:c=a,u=l,g=r;break;case 1:c=l,u=a,g=r;break;case 2:c=r,u=a,g=l;break;case 3:c=r,u=l,g=a;break;case 4:c=l,u=r,g=a;break;case 5:c=a,u=r,g=l;break}return[c*255,u*255,g*255]};Xe.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n=t[3]/100,s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,a*255]};Xe.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n,s,o;return n=e*3.2406+r*-1.5372+i*-.4986,s=e*-.9689+r*1.8758+i*.0415,o=e*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};Xe.xyz.lab=function(t){let e=t[0],r=t[1],i=t[2];e/=95.047,r/=100,i/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(e-r),o=200*(r-i);return[n,s,o]};Xe.lab.xyz=function(t){let e=t[0],r=t[1],i=t[2],n,s,o;s=(e+16)/116,n=r/500+s,o=s-i/200;let a=s**3,l=n**3,c=o**3;return s=a>.008856?a:(s-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};Xe.lab.lch=function(t){let e=t[0],r=t[1],i=t[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[e,o,n]};Xe.lch.lab=function(t){let e=t[0],r=t[1],n=t[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[e,s,o]};Xe.rgb.ansi16=function(t,e=null){let[r,i,n]=t,s=e===null?Xe.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};Xe.hsv.ansi16=function(t){return Xe.rgb.ansi16(Xe.hsv.rgb(t),t[2])};Xe.rgb.ansi256=function(t){let e=t[0],r=t[1],i=t[2];return e===r&&r===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};Xe.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,i=(e&1)*r*255,n=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[i,n,s]};Xe.ansi256.rgb=function(t){if(t>=232){let s=(t-232)*10+8;return[s,s,s]}t-=16;let e,r=Math.floor(t/36)/5*255,i=Math.floor((e=t%36)/6)/5*255,n=e%6/5*255;return[r,i,n]};Xe.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};Xe.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(a=>a+a).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};Xe.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.max(Math.max(e,r),i),s=Math.min(Math.min(e,r),i),o=n-s,a,l;return o<1?a=s/(1-o):a=0,o<=0?l=0:n===e?l=(r-i)/o%6:n===r?l=2+(i-e)/o:l=4+(e-r)/o,l/=6,l%=1,[l*360,o*100,a*100]};Xe.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=r<.5?2*e*r:2*e*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[t[0],i*100,n*100]};Xe.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=e*r,n=0;return i<1&&(n=(r-i)/(1-i)),[t[0],i*100,n*100]};Xe.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=e%1*6,o=s%1,a=1-o,l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-r)*i,[(r*n[0]+l)*255,(r*n[1]+l)*255,(r*n[2]+l)*255]};Xe.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e),n=0;return i>0&&(n=e/i),[t[0],n*100,i*100]};Xe.hcg.hsl=function(t){let e=t[1]/100,i=t[2]/100*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[t[0],n*100,i*100]};Xe.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e);return[t[0],(i-e)*100,(1-i)*100]};Xe.hwb.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=1-r,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[t[0],n*100,s*100]};Xe.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Xe.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Xe.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Xe.gray.hsl=function(t){return[0,0,t[0]]};Xe.gray.hsv=Xe.gray.hsl;Xe.gray.hwb=function(t){return[0,100,t[0]]};Xe.gray.cmyk=function(t){return[0,0,0,t[0]]};Xe.gray.lab=function(t){return[t[0],0,0]};Xe.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,i=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(i.length)+i};Xe.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var bK=I((B$e,QK)=>{var kI=Nb();function Mhe(){let t={},e=Object.keys(kI);for(let r=e.length,i=0;i{var Lb=Nb(),Hhe=bK(),ru={},Ghe=Object.keys(Lb);function jhe(t){let e=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function Yhe(t){let e=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=t(r);if(typeof n=="object")for(let s=n.length,o=0;o{ru[t]={},Object.defineProperty(ru[t],"channels",{value:Lb[t].channels}),Object.defineProperty(ru[t],"labels",{value:Lb[t].labels});let e=Hhe(t);Object.keys(e).forEach(i=>{let n=e[i];ru[t][i]=Yhe(n),ru[t][i].raw=jhe(n)})});vK.exports=ru});var FK=I((b$e,xK)=>{"use strict";var kK=(t,e)=>(...r)=>`[${t(...r)+e}m`,PK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};5;${i}m`},DK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};2;${i[0]};${i[1]};${i[2]}m`},PI=t=>t,RK=(t,e,r)=>[t,e,r],iu=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let i=r();return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},Tb,nu=(t,e,r,i)=>{Tb===void 0&&(Tb=SK());let n=i?10:0,s={};for(let[o,a]of Object.entries(Tb)){let l=o==="ansi16"?"ansi":o;o===e?s[l]=t(r,n):typeof a=="object"&&(s[l]=t(a[e],n))}return s};function qhe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,i]of Object.entries(e)){for(let[n,s]of Object.entries(i))e[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=e[n],t.set(s[0],s[1]);Object.defineProperty(e,r,{value:i,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="",e.bgColor.close="",iu(e.color,"ansi",()=>nu(kK,"ansi16",PI,!1)),iu(e.color,"ansi256",()=>nu(PK,"ansi256",PI,!1)),iu(e.color,"ansi16m",()=>nu(DK,"rgb",RK,!1)),iu(e.bgColor,"ansi",()=>nu(kK,"ansi16",PI,!0)),iu(e.bgColor,"ansi256",()=>nu(PK,"ansi256",PI,!0)),iu(e.bgColor,"ansi16m",()=>nu(DK,"rgb",RK,!0)),e}Object.defineProperty(xK,"exports",{enumerable:!0,get:qhe})});var LK=I((v$e,NK)=>{"use strict";NK.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Jhe=require("os"),MK=require("tty"),Wn=LK(),{env:Wr}=process,tA;Wn("no-color")||Wn("no-colors")||Wn("color=false")||Wn("color=never")?tA=0:(Wn("color")||Wn("colors")||Wn("color=true")||Wn("color=always"))&&(tA=1);"FORCE_COLOR"in Wr&&(Wr.FORCE_COLOR==="true"?tA=1:Wr.FORCE_COLOR==="false"?tA=0:tA=Wr.FORCE_COLOR.length===0?1:Math.min(parseInt(Wr.FORCE_COLOR,10),3));function Mb(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Ob(t,e){if(tA===0)return 0;if(Wn("color=16m")||Wn("color=full")||Wn("color=truecolor"))return 3;if(Wn("color=256"))return 2;if(t&&!e&&tA===void 0)return 0;let r=tA||0;if(Wr.TERM==="dumb")return r;if(process.platform==="win32"){let i=Jhe.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Wr)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(i=>i in Wr)||Wr.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Wr)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Wr.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Wr)return 1;if(Wr.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Wr){let i=parseInt((Wr.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Wr.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Wr.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Wr.TERM)||"COLORTERM"in Wr?1:r}function Whe(t){let e=Ob(t,t&&t.isTTY);return Mb(e)}TK.exports={supportsColor:Whe,stdout:Mb(Ob(!0,MK.isatty(1))),stderr:Mb(Ob(!0,MK.isatty(2)))}});var UK=I((x$e,KK)=>{"use strict";var zhe=(t,e,r)=>{let i=t.indexOf(e);if(i===-1)return t;let n=e.length,s=0,o="";do o+=t.substr(s,i-s)+e+r,s=i+n,i=t.indexOf(e,s);while(i!==-1);return o+=t.substr(s),o},Vhe=(t,e,r,i)=>{let n=0,s="";do{let o=t[i-1]==="\r";s+=t.substr(n,(o?i-1:i)-n)+e+(o?`\r -`:` -`)+r,n=i+1,i=t.indexOf(` -`,n)}while(i!==-1);return s+=t.substr(n),s};KK.exports={stringReplaceAll:zhe,stringEncaseCRLFWithFirstIndex:Vhe}});var qK=I((k$e,HK)=>{"use strict";var _he=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,GK=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Xhe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Zhe=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,$he=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function jK(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):$he.get(t)||t}function epe(t,e){let r=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(Xhe))r.push(n[2].replace(Zhe,(a,l,c)=>l?jK(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`)}return r}function tpe(t){GK.lastIndex=0;let e=[],r;for(;(r=GK.exec(t))!==null;){let i=r[1];if(r[2]){let n=epe(i,r[2]);e.push([i].concat(n))}else e.push([i])}return e}function YK(t,e){let r={};for(let n of e)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=t;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}HK.exports=(t,e)=>{let r=[],i=[],n=[];if(e.replace(_he,(s,o,a,l,c,u)=>{if(o)n.push(jK(o));else if(l){let g=n.join("");n=[],i.push(r.length===0?g:YK(t,r)(g)),r.push({inverse:a,styles:tpe(l)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(YK(t,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var jb=I((P$e,JK)=>{"use strict";var fh=FK(),{stdout:Kb,stderr:Ub}=OK(),{stringReplaceAll:rpe,stringEncaseCRLFWithFirstIndex:ipe}=UK(),WK=["ansi","ansi","ansi256","ansi16m"],su=Object.create(null),npe=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=Kb?Kb.level:0;t.level=e.level===void 0?r:e.level},zK=class{constructor(e){return VK(e)}},VK=t=>{let e={};return npe(e,t),e.template=(...r)=>spe(e.template,...r),Object.setPrototypeOf(e,DI.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=zK,e.template};function DI(t){return VK(t)}for(let[t,e]of Object.entries(fh))su[t]={get(){let r=RI(this,Hb(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};su.visible={get(){let t=RI(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var _K=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of _K)su[t]={get(){let{level:e}=this;return function(...r){let i=Hb(fh.color[WK[e]][t](...r),fh.color.close,this._styler);return RI(this,i,this._isEmpty)}}};for(let t of _K){let e="bg"+t[0].toUpperCase()+t.slice(1);su[e]={get(){let{level:r}=this;return function(...i){let n=Hb(fh.bgColor[WK[r]][t](...i),fh.bgColor.close,this._styler);return RI(this,n,this._isEmpty)}}}}var ope=Object.defineProperties(()=>{},_(P({},su),{level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}})),Hb=(t,e,r)=>{let i,n;return r===void 0?(i=t,n=e):(i=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:i,closeAll:n,parent:r}},RI=(t,e,r)=>{let i=(...n)=>ape(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=ope,i._generator=t,i._styler=e,i._isEmpty=r,i},ape=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:i,closeAll:n}=r;if(e.indexOf("")!==-1)for(;r!==void 0;)e=rpe(e,r.close,r.open),r=r.parent;let s=e.indexOf(` -`);return s!==-1&&(e=ipe(e,n,i,s)),i+e+n},Gb,spe=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let i=e.slice(1),n=[r.raw[0]];for(let s=1;s{XK.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var ml=I(Dn=>{"use strict";var $K=ZK(),ro=process.env;Object.defineProperty(Dn,"_vendors",{value:$K.map(function(t){return t.constant})});Dn.name=null;Dn.isPR=null;$K.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(i){return e1(i)});if(Dn[t.constant]=r,r)switch(Dn.name=t.name,typeof t.pr){case"string":Dn.isPR=!!ro[t.pr];break;case"object":"env"in t.pr?Dn.isPR=t.pr.env in ro&&ro[t.pr.env]!==t.pr.ne:"any"in t.pr?Dn.isPR=t.pr.any.some(function(i){return!!ro[i]}):Dn.isPR=e1(t.pr);break;default:Dn.isPR=null}});Dn.isCI=!!(ro.CI||ro.CONTINUOUS_INTEGRATION||ro.BUILD_NUMBER||ro.RUN_ID||Dn.name);function e1(t){return typeof t=="string"?!!ro[t]:Object.keys(t).every(function(e){return ro[e]===t[e]})}});var FI=I(zn=>{"use strict";zn.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;zn.find=(t,e)=>t.nodes.find(r=>r.type===e);zn.exceedsLimit=(t,e,r=1,i)=>i===!1||!zn.isInteger(t)||!zn.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=i;zn.escapeNode=(t,e=0,r)=>{let i=t.nodes[e];!i||(r&&i.type===r||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};zn.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0==0?(t.invalid=!0,!0):!1;zn.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0==0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;zn.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;zn.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);zn.flatten=(...t)=>{let e=[],r=i=>{for(let n=0;n{"use strict";var r1=FI();t1.exports=(t,e={})=>{let r=(i,n={})=>{let s=e.escapeInvalid&&r1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&r1.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=r(l);return a};return r(t)}});var n1=I((L$e,i1)=>{"use strict";i1.exports=function(t){return typeof t=="number"?t-t==0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var f1=I((T$e,s1)=>{"use strict";var o1=n1(),Il=(t,e,r)=>{if(o1(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(o1(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i=P({relaxZeros:!0},r);typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=t+":"+e+"="+n+s+o+a;if(Il.cache.hasOwnProperty(l))return Il.cache[l].result;let c=Math.min(t,e),u=Math.max(t,e);if(Math.abs(c-u)===1){let d=t+"|"+e;return i.capture?`(${d})`:i.wrap===!1?d:`(?:${d})`}let g=A1(t)||A1(e),f={min:t,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let d=u<0?Math.abs(u):1;p=a1(d,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=a1(c,u,f,i)),f.negatives=p,f.positives=h,f.result=Ape(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),Il.cache[l]=f,f.result};function Ape(t,e,r){let i=Yb(t,e,"-",!1,r)||[],n=Yb(e,t,"",!1,r)||[],s=Yb(t,e,"-?",!0,r)||[];return i.concat(s).concat(n).join("|")}function cpe(t,e){let r=1,i=1,n=l1(t,r),s=new Set([e]);for(;t<=n&&n<=e;)s.add(n),r+=1,n=l1(t,r);for(n=c1(e+1,i)-1;t1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+u1(a.count),o=c+1;continue}r.isPadded&&(g=hpe(c,r,i)),u.string=g+u.pattern+u1(u.count),s.push(u),o=c+1,a=u}return s}function Yb(t,e,r,i,n){let s=[];for(let o of t){let{string:a}=o;!i&&!g1(e,"string",a)&&s.push(r+a),i&&g1(e,"string",a)&&s.push(r+a)}return s}function upe(t,e){let r=[];for(let i=0;ie?1:e>t?-1:0}function g1(t,e,r){return t.some(i=>i[e]===r)}function l1(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function c1(t,e){return t-t%Math.pow(10,e)}function u1(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function gpe(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function A1(t){return/^-?(0+)\d/.test(t)}function hpe(t,e,r){if(!e.isPadded)return t;let i=Math.abs(e.maxLen-String(t).length),n=r.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}Il.cache={};Il.clearCache=()=>Il.cache={};s1.exports=Il});var Wb=I((M$e,h1)=>{"use strict";var ppe=require("util"),p1=f1(),d1=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),dpe=t=>e=>t===!0?Number(e):String(e),qb=t=>typeof t=="number"||typeof t=="string"&&t!=="",ph=t=>Number.isInteger(+t),Jb=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},Cpe=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,mpe=(t,e,r)=>{if(e>0){let i=t[0]==="-"?"-":"";i&&(t=t.slice(1)),t=i+t.padStart(i?e-1:e,"0")}return r===!1?String(t):t},C1=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((o,a)=>oa?1:0),t.positives.sort((o,a)=>oa?1:0);let r=e.capture?"":"?:",i="",n="",s;return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(n=`-(${r}${t.negatives.join("|")})`),i&&n?s=`${i}|${n}`:s=i||n,e.wrap?`(${r}${s})`:s},m1=(t,e,r,i)=>{if(r)return p1(t,e,P({wrap:!1},i));let n=String.fromCharCode(t);if(t===e)return n;let s=String.fromCharCode(e);return`[${n}-${s}]`},I1=(t,e,r)=>{if(Array.isArray(t)){let i=r.wrap===!0,n=r.capture?"":"?:";return i?`(${n}${t.join("|")})`:t.join("|")}return p1(t,e,r)},E1=(...t)=>new RangeError("Invalid range arguments: "+ppe.inspect(...t)),y1=(t,e,r)=>{if(r.strictRanges===!0)throw E1([t,e]);return[]},Epe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},ype=(t,e,r=1,i={})=>{let n=Number(t),s=Number(e);if(!Number.isInteger(n)||!Number.isInteger(s)){if(i.strictRanges===!0)throw E1([t,e]);return[]}n===0&&(n=0),s===0&&(s=0);let o=n>s,a=String(t),l=String(e),c=String(r);r=Math.max(Math.abs(r),1);let u=Jb(a)||Jb(l)||Jb(c),g=u?Math.max(a.length,l.length,c.length):0,f=u===!1&&Cpe(t,e,i)===!1,h=i.transform||dpe(f);if(i.toRegex&&r===1)return m1(C1(t,g),C1(e,g),!0,i);let p={negatives:[],positives:[]},d=B=>p[B<0?"negatives":"positives"].push(Math.abs(B)),m=[],E=0;for(;o?n>=s:n<=s;)i.toRegex===!0&&r>1?d(n):m.push(mpe(h(n,E),g,f)),n=o?n-r:n+r,E++;return i.toRegex===!0?r>1?Ipe(p,i):I1(m,null,P({wrap:!1},i)):m},wpe=(t,e,r=1,i={})=>{if(!ph(t)&&t.length>1||!ph(e)&&e.length>1)return y1(t,e,i);let n=i.transform||(f=>String.fromCharCode(f)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(i.toRegex&&r===1)return m1(l,c,!1,i);let u=[],g=0;for(;a?s>=o:s<=o;)u.push(n(s,g)),s=a?s-r:s+r,g++;return i.toRegex===!0?I1(u,null,{wrap:!1,options:i}):u},LI=(t,e,r,i={})=>{if(e==null&&qb(t))return[t];if(!qb(t)||!qb(e))return y1(t,e,i);if(typeof r=="function")return LI(t,e,1,{transform:r});if(d1(r))return LI(t,e,0,r);let n=P({},i);return n.capture===!0&&(n.wrap=!0),r=r||n.step||1,ph(r)?ph(t)&&ph(e)?ype(t,e,r,n):wpe(t,e,Math.max(Math.abs(r),1),n):r!=null&&!d1(r)?Epe(r,n):LI(t,e,1,r)};h1.exports=LI});var Q1=I((O$e,w1)=>{"use strict";var Bpe=Wb(),B1=FI(),Qpe=(t,e={})=>{let r=(i,n={})=>{let s=B1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(i.isOpen===!0||i.isClose===!0)return l+i.value;if(i.type==="open")return a?l+i.value:"(";if(i.type==="close")return a?l+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":a?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let u=B1.reduce(i.nodes),g=Bpe(...u,_(P({},e),{wrap:!1,toRegex:!0}));if(g.length!==0)return u.length>1&&g.length>1?`(${g})`:g}if(i.nodes)for(let u of i.nodes)c+=r(u,i);return c};return r(t)};w1.exports=Qpe});var S1=I((K$e,b1)=>{"use strict";var bpe=Wb(),v1=NI(),ou=FI(),El=(t="",e="",r=!1)=>{let i=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ou.flatten(e).map(n=>`{${n}}`):e;for(let n of t)if(Array.isArray(n))for(let s of n)i.push(El(s,e,r));else for(let s of e)r===!0&&typeof s=="string"&&(s=`{${s}}`),i.push(Array.isArray(s)?El(n,s,r):n+s);return ou.flatten(i)},vpe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(n,s={})=>{n.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(n.invalid||n.dollar){a.push(El(a.pop(),v1(n,e)));return}if(n.type==="brace"&&n.invalid!==!0&&n.nodes.length===2){a.push(El(a.pop(),["{}"]));return}if(n.nodes&&n.ranges>0){let g=ou.reduce(n.nodes);if(ou.exceedsLimit(...g,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=bpe(...g,e);f.length===0&&(f=v1(n,e)),a.push(El(a.pop(),f)),n.nodes=[];return}let l=ou.encloseBrace(n),c=n.queue,u=n;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let g=0;g{"use strict";x1.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` -`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var N1=I((H$e,P1)=>{"use strict";var Spe=NI(),{MAX_LENGTH:D1,CHAR_BACKSLASH:zb,CHAR_BACKTICK:xpe,CHAR_COMMA:kpe,CHAR_DOT:Ppe,CHAR_LEFT_PARENTHESES:Dpe,CHAR_RIGHT_PARENTHESES:Rpe,CHAR_LEFT_CURLY_BRACE:Fpe,CHAR_RIGHT_CURLY_BRACE:Npe,CHAR_LEFT_SQUARE_BRACKET:R1,CHAR_RIGHT_SQUARE_BRACKET:F1,CHAR_DOUBLE_QUOTE:Lpe,CHAR_SINGLE_QUOTE:Tpe,CHAR_NO_BREAK_SPACE:Mpe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Ope}=k1(),Kpe=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},i=typeof r.maxLength=="number"?Math.min(D1,r.maxLength):D1;if(t.length>i)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${i})`);let n={type:"root",input:t,nodes:[]},s=[n],o=n,a=n,l=0,c=t.length,u=0,g=0,f,h={},p=()=>t[u++],d=m=>{if(m.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&m.type==="text"){a.value+=m.value;return}return o.nodes.push(m),m.parent=o,m.prev=a,a=m,m};for(d({type:"bos"});u0){if(o.ranges>0){o.ranges=0;let m=o.nodes.shift();o.nodes=[m,{type:"text",value:Spe(o)}]}d({type:"comma",value:f}),o.commas++;continue}if(f===Ppe&&g>0&&o.commas===0){let m=o.nodes;if(g===0||m.length===0){d({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){m.pop();let E=m[m.length-1];E.value+=a.value+f,a=E,o.ranges--;continue}d({type:"dot",value:f});continue}d({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(B=>{B.nodes||(B.type==="open"&&(B.isOpen=!0),B.type==="close"&&(B.isClose=!0),B.nodes||(B.type="text"),B.invalid=!0)});let m=s[s.length-1],E=m.nodes.indexOf(o);m.nodes.splice(E,1,...o.nodes)}while(s.length>0);return d({type:"eos"}),n};P1.exports=Kpe});var M1=I((G$e,L1)=>{"use strict";var T1=NI(),Upe=Q1(),Hpe=S1(),Gpe=N1(),Rn=(t,e={})=>{let r=[];if(Array.isArray(t))for(let i of t){let n=Rn.create(i,e);Array.isArray(n)?r.push(...n):r.push(n)}else r=[].concat(Rn.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.parse=(t,e={})=>Gpe(t,e);Rn.stringify=(t,e={})=>typeof t=="string"?T1(Rn.parse(t,e),e):T1(t,e);Rn.compile=(t,e={})=>(typeof t=="string"&&(t=Rn.parse(t,e)),Upe(t,e));Rn.expand=(t,e={})=>{typeof t=="string"&&(t=Rn.parse(t,e));let r=Hpe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Rn.compile(t,e):Rn.expand(t,e);L1.exports=Rn});var dh=I((j$e,O1)=>{"use strict";var jpe=require("path"),io="\\\\/",K1=`[^${io}]`,ea="\\.",Ype="\\+",qpe="\\?",TI="\\/",Jpe="(?=.)",U1="[^/]",Vb=`(?:${TI}|$)`,H1=`(?:^|${TI})`,_b=`${ea}{1,2}${Vb}`,Wpe=`(?!${ea})`,zpe=`(?!${H1}${_b})`,Vpe=`(?!${ea}{0,1}${Vb})`,_pe=`(?!${_b})`,Xpe=`[^.${TI}]`,Zpe=`${U1}*?`,G1={DOT_LITERAL:ea,PLUS_LITERAL:Ype,QMARK_LITERAL:qpe,SLASH_LITERAL:TI,ONE_CHAR:Jpe,QMARK:U1,END_ANCHOR:Vb,DOTS_SLASH:_b,NO_DOT:Wpe,NO_DOTS:zpe,NO_DOT_SLASH:Vpe,NO_DOTS_SLASH:_pe,QMARK_NO_DOT:Xpe,STAR:Zpe,START_ANCHOR:H1},$pe=_(P({},G1),{SLASH_LITERAL:`[${io}]`,QMARK:K1,STAR:`${K1}*?`,DOTS_SLASH:`${ea}{1,2}(?:[${io}]|$)`,NO_DOT:`(?!${ea})`,NO_DOTS:`(?!(?:^|[${io}])${ea}{1,2}(?:[${io}]|$))`,NO_DOT_SLASH:`(?!${ea}{0,1}(?:[${io}]|$))`,NO_DOTS_SLASH:`(?!${ea}{1,2}(?:[${io}]|$))`,QMARK_NO_DOT:`[^.${io}]`,START_ANCHOR:`(?:^|[${io}])`,END_ANCHOR:`(?:[${io}]|$)`}),ede={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};O1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:ede,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:jpe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?$pe:G1}}});var Ch=I(cn=>{"use strict";var tde=require("path"),rde=process.platform==="win32",{REGEX_BACKSLASH:ide,REGEX_REMOVE_BACKSLASH:nde,REGEX_SPECIAL_CHARS:sde,REGEX_SPECIAL_CHARS_GLOBAL:ode}=dh();cn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);cn.hasRegexChars=t=>sde.test(t);cn.isRegexChar=t=>t.length===1&&cn.hasRegexChars(t);cn.escapeRegex=t=>t.replace(ode,"\\$1");cn.toPosixSlashes=t=>t.replace(ide,"/");cn.removeBackslashes=t=>t.replace(nde,e=>e==="\\"?"":e);cn.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};cn.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:rde===!0||tde.sep==="\\";cn.escapeLast=(t,e,r)=>{let i=t.lastIndexOf(e,r);return i===-1?t:t[i-1]==="\\"?cn.escapeLast(t,e,i-1):`${t.slice(0,i)}\\${t.slice(i)}`};cn.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};cn.wrapOutput=(t,e={},r={})=>{let i=r.contains?"":"^",n=r.contains?"":"$",s=`${i}(?:${t})${n}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var X1=I((q$e,j1)=>{"use strict";var Y1=Ch(),{CHAR_ASTERISK:Xb,CHAR_AT:ade,CHAR_BACKWARD_SLASH:mh,CHAR_COMMA:Ade,CHAR_DOT:Zb,CHAR_EXCLAMATION_MARK:q1,CHAR_FORWARD_SLASH:J1,CHAR_LEFT_CURLY_BRACE:$b,CHAR_LEFT_PARENTHESES:ev,CHAR_LEFT_SQUARE_BRACKET:lde,CHAR_PLUS:cde,CHAR_QUESTION_MARK:W1,CHAR_RIGHT_CURLY_BRACE:ude,CHAR_RIGHT_PARENTHESES:z1,CHAR_RIGHT_SQUARE_BRACKET:gde}=dh(),V1=t=>t===J1||t===mh,_1=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?Infinity:1)},fde=(t,e)=>{let r=e||{},i=t.length-1,n=r.parts===!0||r.scanToEnd===!0,s=[],o=[],a=[],l=t,c=-1,u=0,g=0,f=!1,h=!1,p=!1,d=!1,m=!1,E=!1,B=!1,b=!1,R=!1,H=0,L,K,J={value:"",depth:0,isGlob:!1},ne=()=>c>=i,q=()=>l.charCodeAt(c+1),A=()=>(L=K,l.charCodeAt(++c));for(;c0&&(W=l.slice(0,u),l=l.slice(u),g-=u),V&&p===!0&&g>0?(V=l.slice(0,g),X=l.slice(g)):p===!0?(V="",X=l):V=l,V&&V!==""&&V!=="/"&&V!==l&&V1(V.charCodeAt(V.length-1))&&(V=V.slice(0,-1)),r.unescape===!0&&(X&&(X=Y1.removeBackslashes(X)),V&&B===!0&&(V=Y1.removeBackslashes(V)));let F={prefix:W,input:t,start:u,base:V,glob:X,isBrace:f,isBracket:h,isGlob:p,isExtglob:d,isGlobstar:m,negated:b};if(r.tokens===!0&&(F.maxDepth=0,V1(K)||o.push(J),F.tokens=o),r.parts===!0||r.tokens===!0){let D;for(let he=0;he{"use strict";var MI=dh(),Fn=Ch(),{MAX_LENGTH:OI,POSIX_REGEX_SOURCE:hde,REGEX_NON_SPECIAL_CHARS:pde,REGEX_SPECIAL_CHARS_BACKREF:dde,REPLACEMENTS:$1}=MI,Cde=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch(i){return t.map(n=>Fn.escapeRegex(n)).join("..")}return r},au=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,eU=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=$1[t]||t;let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OI,r.maxLength):OI,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);let s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",l=Fn.isWindows(e),c=MI.globChars(l),u=MI.extglobChars(c),{DOT_LITERAL:g,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:p,DOTS_SLASH:d,NO_DOT:m,NO_DOT_SLASH:E,NO_DOTS_SLASH:B,QMARK:b,QMARK_NO_DOT:R,STAR:H,START_ANCHOR:L}=c,K=G=>`(${a}(?:(?!${L}${G.dot?d:g}).)*?)`,J=r.dot?"":m,ne=r.dot?b:R,q=r.bash===!0?K(r):H;r.capture&&(q=`(${q})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Fn.removePrefix(t,A),n=t.length;let V=[],W=[],X=[],F=s,D,he=()=>A.index===n-1,pe=A.peek=(G=1)=>t[A.index+G],Ne=A.advance=()=>t[++A.index],Pe=()=>t.slice(A.index+1),qe=(G="",Ce=0)=>{A.consumed+=G,A.index+=Ce},re=G=>{A.output+=G.output!=null?G.output:G.value,qe(G.value)},se=()=>{let G=1;for(;pe()==="!"&&(pe(2)!=="("||pe(3)==="?");)Ne(),A.start++,G++;return G%2==0?!1:(A.negated=!0,A.start++,!0)},be=G=>{A[G]++,X.push(G)},ae=G=>{A[G]--,X.pop()},Ae=G=>{if(F.type==="globstar"){let Ce=A.braces>0&&(G.type==="comma"||G.type==="brace"),ee=G.extglob===!0||V.length&&(G.type==="pipe"||G.type==="paren");G.type!=="slash"&&G.type!=="paren"&&!Ce&&!ee&&(A.output=A.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=q,A.output+=F.output)}if(V.length&&G.type!=="paren"&&!u[G.value]&&(V[V.length-1].inner+=G.value),(G.value||G.output)&&re(G),F&&F.type==="text"&&G.type==="text"){F.value+=G.value,F.output=(F.output||"")+G.value;return}G.prev=F,o.push(G),F=G},De=(G,Ce)=>{let ee=_(P({},u[Ce]),{conditions:1,inner:""});ee.prev=F,ee.parens=A.parens,ee.output=A.output;let Ue=(r.capture?"(":"")+ee.open;be("parens"),Ae({type:G,value:Ce,output:A.output?"":p}),Ae({type:"paren",extglob:!0,value:Ne(),output:Ue}),V.push(ee)},$=G=>{let Ce=G.close+(r.capture?")":"");if(G.type==="negate"){let ee=q;G.inner&&G.inner.length>1&&G.inner.includes("/")&&(ee=K(r)),(ee!==q||he()||/^\)+$/.test(Pe()))&&(Ce=G.close=`)$))${ee}`),G.prev.type==="bos"&&(A.negatedExtglob=!0)}Ae({type:"paren",extglob:!0,value:D,output:Ce}),ae("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let G=!1,Ce=t.replace(dde,(ee,Ue,Oe,vt,dt,ri)=>vt==="\\"?(G=!0,ee):vt==="?"?Ue?Ue+vt+(dt?b.repeat(dt.length):""):ri===0?ne+(dt?b.repeat(dt.length):""):b.repeat(Oe.length):vt==="."?g.repeat(Oe.length):vt==="*"?Ue?Ue+vt+(dt?q:""):q:Ue?ee:`\\${ee}`);return G===!0&&(r.unescape===!0?Ce=Ce.replace(/\\/g,""):Ce=Ce.replace(/\\+/g,ee=>ee.length%2==0?"\\\\":ee?"\\":"")),Ce===t&&r.contains===!0?(A.output=t,A):(A.output=Fn.wrapOutput(Ce,A,e),A)}for(;!he();){if(D=Ne(),D==="\0")continue;if(D==="\\"){let ee=pe();if(ee==="/"&&r.bash!==!0||ee==="."||ee===";")continue;if(!ee){D+="\\",Ae({type:"text",value:D});continue}let Ue=/^\\+/.exec(Pe()),Oe=0;if(Ue&&Ue[0].length>2&&(Oe=Ue[0].length,A.index+=Oe,Oe%2!=0&&(D+="\\")),r.unescape===!0?D=Ne()||"":D+=Ne()||"",A.brackets===0){Ae({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(r.posix!==!1&&D===":"){let ee=F.value.slice(1);if(ee.includes("[")&&(F.posix=!0,ee.includes(":"))){let Ue=F.value.lastIndexOf("["),Oe=F.value.slice(0,Ue),vt=F.value.slice(Ue+2),dt=hde[vt];if(dt){F.value=Oe+dt,A.backtrack=!0,Ne(),!s.output&&o.indexOf(F)===1&&(s.output=p);continue}}}(D==="["&&pe()!==":"||D==="-"&&pe()==="]")&&(D=`\\${D}`),D==="]"&&(F.value==="["||F.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&F.value==="["&&(D="^"),F.value+=D,re({value:D});continue}if(A.quotes===1&&D!=='"'){D=Fn.escapeRegex(D),F.value+=D,re({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&Ae({type:"text",value:D});continue}if(D==="("){be("parens"),Ae({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(au("opening","("));let ee=V[V.length-1];if(ee&&A.parens===ee.parens+1){$(V.pop());continue}Ae({type:"paren",value:D,output:A.parens?")":"\\)"}),ae("parens");continue}if(D==="["){if(r.nobracket===!0||!Pe().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));D=`\\${D}`}else be("brackets");Ae({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){Ae({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(au("opening","["));Ae({type:"text",value:D,output:`\\${D}`});continue}ae("brackets");let ee=F.value.slice(1);if(F.posix!==!0&&ee[0]==="^"&&!ee.includes("/")&&(D=`/${D}`),F.value+=D,re({value:D}),r.literalBrackets===!1||Fn.hasRegexChars(ee))continue;let Ue=Fn.escapeRegex(F.value);if(A.output=A.output.slice(0,-F.value.length),r.literalBrackets===!0){A.output+=Ue,F.value=Ue;continue}F.value=`(${a}${Ue}|${F.value})`,A.output+=F.value;continue}if(D==="{"&&r.nobrace!==!0){be("braces");let ee={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};W.push(ee),Ae(ee);continue}if(D==="}"){let ee=W[W.length-1];if(r.nobrace===!0||!ee){Ae({type:"text",value:D,output:D});continue}let Ue=")";if(ee.dots===!0){let Oe=o.slice(),vt=[];for(let dt=Oe.length-1;dt>=0&&(o.pop(),Oe[dt].type!=="brace");dt--)Oe[dt].type!=="dots"&&vt.unshift(Oe[dt].value);Ue=Cde(vt,r),A.backtrack=!0}if(ee.comma!==!0&&ee.dots!==!0){let Oe=A.output.slice(0,ee.outputIndex),vt=A.tokens.slice(ee.tokensIndex);ee.value=ee.output="\\{",D=Ue="\\}",A.output=Oe;for(let dt of vt)A.output+=dt.output||dt.value}Ae({type:"brace",value:D,output:Ue}),ae("braces"),W.pop();continue}if(D==="|"){V.length>0&&V[V.length-1].conditions++,Ae({type:"text",value:D});continue}if(D===","){let ee=D,Ue=W[W.length-1];Ue&&X[X.length-1]==="braces"&&(Ue.comma=!0,ee="|"),Ae({type:"comma",value:D,output:ee});continue}if(D==="/"){if(F.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",o.pop(),F=s;continue}Ae({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&F.type==="dot"){F.value==="."&&(F.output=g);let ee=W[W.length-1];F.type="dots",F.output+=D,F.value+=D,ee.dots=!0;continue}if(A.braces+A.parens===0&&F.type!=="bos"&&F.type!=="slash"){Ae({type:"text",value:D,output:g});continue}Ae({type:"dot",value:D,output:g});continue}if(D==="?"){if(!(F&&F.value==="(")&&r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("qmark",D);continue}if(F&&F.type==="paren"){let Ue=pe(),Oe=D;if(Ue==="<"&&!Fn.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(F.value==="("&&!/[!=<:]/.test(Ue)||Ue==="<"&&!/<([!=]|\w+>)/.test(Pe()))&&(Oe=`\\${D}`),Ae({type:"text",value:D,output:Oe});continue}if(r.dot!==!0&&(F.type==="slash"||F.type==="bos")){Ae({type:"qmark",value:D,output:R});continue}Ae({type:"qmark",value:D,output:b});continue}if(D==="!"){if(r.noextglob!==!0&&pe()==="("&&(pe(2)!=="?"||!/[!=<:]/.test(pe(3)))){De("negate",D);continue}if(r.nonegate!==!0&&A.index===0){se();continue}}if(D==="+"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("plus",D);continue}if(F&&F.value==="("||r.regex===!1){Ae({type:"plus",value:D,output:f});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||A.parens>0){Ae({type:"plus",value:D});continue}Ae({type:"plus",value:f});continue}if(D==="@"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){Ae({type:"at",extglob:!0,value:D,output:""});continue}Ae({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let ee=pde.exec(Pe());ee&&(D+=ee[0],A.index+=ee[0].length),Ae({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=q,A.backtrack=!0,A.globstar=!0,qe(D);continue}let G=Pe();if(r.noextglob!==!0&&/^\([^?]/.test(G)){De("star",D);continue}if(F.type==="star"){if(r.noglobstar===!0){qe(D);continue}let ee=F.prev,Ue=ee.prev,Oe=ee.type==="slash"||ee.type==="bos",vt=Ue&&(Ue.type==="star"||Ue.type==="globstar");if(r.bash===!0&&(!Oe||G[0]&&G[0]!=="/")){Ae({type:"star",value:D,output:""});continue}let dt=A.braces>0&&(ee.type==="comma"||ee.type==="brace"),ri=V.length&&(ee.type==="pipe"||ee.type==="paren");if(!Oe&&ee.type!=="paren"&&!dt&&!ri){Ae({type:"star",value:D,output:""});continue}for(;G.slice(0,3)==="/**";){let ii=t[A.index+4];if(ii&&ii!=="/")break;G=G.slice(3),qe("/**",3)}if(ee.type==="bos"&&he()){F.type="globstar",F.value+=D,F.output=K(r),A.output=F.output,A.globstar=!0,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&!vt&&he()){A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=K(r)+(r.strictSlashes?")":"|$)"),F.value+=D,A.globstar=!0,A.output+=ee.output+F.output,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&G[0]==="/"){let ii=G[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=`${K(r)}${h}|${h}${ii})`,F.value+=D,A.output+=ee.output+F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}if(ee.type==="bos"&&G[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${h}|${K(r)}${h})`,A.output=F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-F.output.length),F.type="globstar",F.output=K(r),F.value+=D,A.output+=F.output,A.globstar=!0,qe(D);continue}let Ce={type:"star",value:D,output:q};if(r.bash===!0){Ce.output=".*?",(F.type==="bos"||F.type==="slash")&&(Ce.output=J+Ce.output),Ae(Ce);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&r.regex===!0){Ce.output=D,Ae(Ce);continue}(A.index===A.start||F.type==="slash"||F.type==="dot")&&(F.type==="dot"?(A.output+=E,F.output+=E):r.dot===!0?(A.output+=B,F.output+=B):(A.output+=J,F.output+=J),pe()!=="*"&&(A.output+=p,F.output+=p)),Ae(Ce)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));A.output=Fn.escapeLast(A.output,"["),ae("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing",")"));A.output=Fn.escapeLast(A.output,"("),ae("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","}"));A.output=Fn.escapeLast(A.output,"{"),ae("braces")}if(r.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket")&&Ae({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let G of A.tokens)A.output+=G.output!=null?G.output:G.value,G.suffix&&(A.output+=G.suffix)}return A};eU.fastpaths=(t,e)=>{let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OI,r.maxLength):OI,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);t=$1[t]||t;let s=Fn.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:g,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:p}=MI.globChars(s),d=r.dot?g:u,m=r.dot?f:u,E=r.capture?"":"?:",B={negated:!1,prefix:""},b=r.bash===!0?".*?":h;r.capture&&(b=`(${b})`);let R=J=>J.noglobstar===!0?b:`(${E}(?:(?!${p}${J.dot?c:o}).)*?)`,H=J=>{switch(J){case"*":return`${d}${l}${b}`;case".*":return`${o}${l}${b}`;case"*.*":return`${d}${b}${o}${l}${b}`;case"*/*":return`${d}${b}${a}${l}${m}${b}`;case"**":return d+R(r);case"**/*":return`(?:${d}${R(r)}${a})?${m}${l}${b}`;case"**/*.*":return`(?:${d}${R(r)}${a})?${m}${b}${o}${l}${b}`;case"**/.*":return`(?:${d}${R(r)}${a})?${o}${l}${b}`;default:{let ne=/^(.*?)\.(\w+)$/.exec(J);if(!ne)return;let q=H(ne[1]);return q?q+o+ne[2]:void 0}}},L=Fn.removePrefix(t,B),K=H(L);return K&&r.strictSlashes!==!0&&(K+=`${a}?`),K};Z1.exports=eU});var iU=I((W$e,rU)=>{"use strict";var mde=require("path"),Ide=X1(),tv=tU(),rv=Ch(),Ede=dh(),yde=t=>t&&typeof t=="object"&&!Array.isArray(t),Dr=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(f=>Dr(f,e,r));return f=>{for(let h of u){let p=h(f);if(p)return p}return!1}}let i=yde(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let n=e||{},s=rv.isWindows(e),o=i?Dr.compileRe(t,e):Dr.makeRe(t,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(n.ignore){let u=_(P({},e),{ignore:null,onMatch:null,onResult:null});l=Dr(n.ignore,u,r)}let c=(u,g=!1)=>{let{isMatch:f,match:h,output:p}=Dr.test(u,o,e,{glob:t,posix:s}),d={glob:t,state:a,regex:o,posix:s,input:u,output:p,match:h,isMatch:f};return typeof n.onResult=="function"&&n.onResult(d),f===!1?(d.isMatch=!1,g?d:!1):l(u)?(typeof n.onIgnore=="function"&&n.onIgnore(d),d.isMatch=!1,g?d:!1):(typeof n.onMatch=="function"&&n.onMatch(d),g?d:!0)};return r&&(c.state=a),c};Dr.test=(t,e,r,{glob:i,posix:n}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let s=r||{},o=s.format||(n?rv.toPosixSlashes:null),a=t===i,l=a&&o?o(t):t;return a===!1&&(l=o?o(t):t,a=l===i),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Dr.matchBase(t,e,r,n):a=e.exec(l)),{isMatch:Boolean(a),match:a,output:l}};Dr.matchBase=(t,e,r,i=rv.isWindows(r))=>(e instanceof RegExp?e:Dr.makeRe(e,r)).test(mde.basename(t));Dr.isMatch=(t,e,r)=>Dr(e,r)(t);Dr.parse=(t,e)=>Array.isArray(t)?t.map(r=>Dr.parse(r,e)):tv(t,_(P({},e),{fastpaths:!1}));Dr.scan=(t,e)=>Ide(t,e);Dr.compileRe=(t,e,r=!1,i=!1)=>{if(r===!0)return t.output;let n=e||{},s=n.contains?"":"^",o=n.contains?"":"$",a=`${s}(?:${t.output})${o}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let l=Dr.toRegex(a,e);return i===!0&&(l.state=t),l};Dr.makeRe=(t,e,r=!1,i=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let n=e||{},s={negated:!1,fastpaths:!0},o="",a;return t.startsWith("./")&&(t=t.slice(2),o=s.prefix="./"),n.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a=tv.fastpaths(t,e)),a===void 0?(s=tv(t,e),s.prefix=o+(s.prefix||"")):s.output=a,Dr.compileRe(s,e,r,i)};Dr.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Dr.constants=Ede;rU.exports=Dr});var iv=I((z$e,nU)=>{"use strict";nU.exports=iU()});var Nn=I((V$e,sU)=>{"use strict";var oU=require("util"),aU=M1(),no=iv(),nv=Ch(),AU=t=>typeof t=="string"&&(t===""||t==="./"),pr=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let i=new Set,n=new Set,s=new Set,o=0,a=u=>{s.add(u.output),r&&r.onResult&&r.onResult(u)};for(let u=0;u!i.has(u));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};pr.match=pr;pr.matcher=(t,e)=>no(t,e);pr.isMatch=(t,e,r)=>no(e,r)(t);pr.any=pr.isMatch;pr.not=(t,e,r={})=>{e=[].concat(e).map(String);let i=new Set,n=[],s=a=>{r.onResult&&r.onResult(a),n.push(a.output)},o=pr(t,e,_(P({},r),{onResult:s}));for(let a of n)o.includes(a)||i.add(a);return[...i]};pr.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);if(Array.isArray(e))return e.some(i=>pr.contains(t,i,r));if(typeof e=="string"){if(AU(t)||AU(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return pr.isMatch(t,e,_(P({},r),{contains:!0}))};pr.matchKeys=(t,e,r)=>{if(!nv.isObject(t))throw new TypeError("Expected the first argument to be an object");let i=pr(Object.keys(t),e,r),n={};for(let s of i)n[s]=t[s];return n};pr.some=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(i.some(o=>s(o)))return!0}return!1};pr.every=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(!i.every(o=>s(o)))return!1}return!0};pr.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);return[].concat(e).every(i=>no(i,r)(t))};pr.capture=(t,e,r)=>{let i=nv.isWindows(r),s=no.makeRe(String(t),_(P({},r),{capture:!0})).exec(i?nv.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};pr.makeRe=(...t)=>no.makeRe(...t);pr.scan=(...t)=>no.scan(...t);pr.parse=(t,e)=>{let r=[];for(let i of[].concat(t||[]))for(let n of aU(String(i),e))r.push(no.parse(n,e));return r};pr.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:aU(t,e)};pr.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return pr.braces(t,_(P({},e),{expand:!0}))};sU.exports=pr});var cU=I((_$e,lU)=>{"use strict";lU.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var gU=I((X$e,uU)=>{"use strict";var wde=cU();uU.exports=t=>typeof t=="string"?t.replace(wde(),""):t});var lu={};it(lu,{KeyRelationship:()=>Bl,applyCascade:()=>fv,base64RegExp:()=>CU,colorStringAlphaRegExp:()=>dU,colorStringRegExp:()=>pU,computeKey:()=>rA,getPrintable:()=>Mr,hasExactLength:()=>wU,hasForbiddenKeys:()=>eCe,hasKeyRelationship:()=>pv,hasMaxLength:()=>Mde,hasMinLength:()=>Tde,hasMutuallyExclusiveKeys:()=>tCe,hasRequiredKeys:()=>$de,hasUniqueItems:()=>Ode,isArray:()=>xde,isAtLeast:()=>Hde,isAtMost:()=>Gde,isBase64:()=>Xde,isBoolean:()=>bde,isDate:()=>Sde,isDict:()=>Pde,isEnum:()=>Yi,isHexColor:()=>_de,isISO8601:()=>Vde,isInExclusiveRange:()=>Yde,isInInclusiveRange:()=>jde,isInstanceOf:()=>Rde,isInteger:()=>qde,isJSON:()=>Zde,isLiteral:()=>Bde,isLowerCase:()=>Jde,isNegative:()=>Kde,isNullable:()=>Lde,isNumber:()=>vde,isObject:()=>Dde,isOneOf:()=>Fde,isOptional:()=>Nde,isPositive:()=>Ude,isString:()=>gv,isTuple:()=>kde,isUUID4:()=>zde,isUnknown:()=>yU,isUpperCase:()=>Wde,iso8601RegExp:()=>uv,makeCoercionFn:()=>wl,makeSetter:()=>EU,makeTrait:()=>IU,makeValidator:()=>Ct,matchesRegExp:()=>hv,plural:()=>GI,pushError:()=>at,simpleKeyRegExp:()=>hU,uuid4RegExp:()=>mU});function Ct({test:t}){return IU(t)()}function Mr(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function rA(t,e){var r,i,n;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:hU.test(e)?`${(i=t==null?void 0:t.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=t==null?void 0:t.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function wl(t,e){return r=>{let i=t[e];return t[e]=r,wl(t,e).bind(null,i)}}function EU(t,e){return r=>{t[e]=r}}function GI(t,e,r){return t===1?e:r}function at({errors:t,p:e}={},r){return t==null||t.push(`${e!=null?e:"."}: ${r}`),!1}function Bde(t){return Ct({test:(e,r)=>e!==t?at(r,`Expected a literal (got ${Mr(t)})`):!0})}function Yi(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return Ct({test:(i,n)=>r.has(i)?!0:at(n,`Expected a valid enumeration value (got ${Mr(i)})`)})}var hU,pU,dU,CU,mU,uv,IU,yU,gv,Qde,bde,vde,Sde,xde,kde,Pde,Dde,Rde,Fde,fv,Nde,Lde,Tde,Mde,wU,Ode,Kde,Ude,Hde,Gde,jde,Yde,qde,hv,Jde,Wde,zde,Vde,_de,Xde,Zde,$de,eCe,tCe,Bl,rCe,pv,Ss=Yfe(()=>{hU=/^[a-zA-Z_][a-zA-Z0-9_]*$/,pU=/^#[0-9a-f]{6}$/i,dU=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,CU=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,mU=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,uv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,IU=t=>()=>t;yU=()=>Ct({test:(t,e)=>!0});gv=()=>Ct({test:(t,e)=>typeof t!="string"?at(e,`Expected a string (got ${Mr(t)})`):!0});Qde=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),bde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i=Qde.get(t);if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a boolean (got ${Mr(t)})`)}return!0}}),vde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch(s){}if(typeof n=="number")if(JSON.stringify(n)===t)i=n;else return at(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a number (got ${Mr(t)})`)}return!0}}),Sde=()=>Ct({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"&&uv.test(t))i=new Date(t);else{let n;if(typeof t=="string"){let s;try{s=JSON.parse(t)}catch(o){}typeof s=="number"&&(n=s)}else typeof t=="number"&&(n=t);if(typeof n!="undefined")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return at(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a date (got ${Mr(t)})`)}return!0}}),xde=(t,{delimiter:e}={})=>Ct({test:(r,i)=>{var n;if(typeof r=="string"&&typeof e!="undefined"&&typeof(i==null?void 0:i.coercions)!="undefined"){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");r=r.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,r)])}if(!Array.isArray(r))return at(i,`Expected an array (got ${Mr(r)})`);let s=!0;for(let o=0,a=r.length;o{let r=wU(t.length);return Ct({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e!="undefined"&&typeof(n==null?void 0:n.coercions)!="undefined"){if(typeof(n==null?void 0:n.coercion)=="undefined")return at(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return at(n,`Expected a tuple (got ${Mr(i)})`);let o=r(i,Object.assign({},n));for(let a=0,l=i.length;aCt({test:(r,i)=>{if(typeof r!="object"||r===null)return at(i,`Expected an object (got ${Mr(r)})`);let n=Object.keys(r),s=!0;for(let o=0,a=n.length;o{let r=Object.keys(t);return Ct({test:(i,n)=>{if(typeof i!="object"||i===null)return at(n,`Expected an object (got ${Mr(i)})`);let s=new Set([...r,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(t,l)?t[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c!="undefined"?a=c(u,Object.assign(Object.assign({},n),{p:rA(n,l),coercion:wl(i,l)}))&&a:e===null?a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),`Extraneous property (got ${Mr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:EU(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Rde=t=>Ct({test:(e,r)=>e instanceof t?!0:at(r,`Expected an instance of ${t.name} (got ${Mr(e)})`)}),Fde=(t,{exclusive:e=!1}={})=>Ct({test:(r,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)!="undefined"?[]:void 0;for(let c=0,u=t.length;c1?at(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),fv=(t,e)=>Ct({test:(r,i)=>{var n,s;let o={value:r},a=typeof(i==null?void 0:i.coercions)!="undefined"?wl(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)!="undefined"?[]:void 0;if(!t(r,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l!="undefined")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)!="undefined"){if(o.value!==r){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Nde=t=>Ct({test:(e,r)=>typeof e=="undefined"?!0:t(e,r)}),Lde=t=>Ct({test:(e,r)=>e===null?!0:t(e,r)}),Tde=t=>Ct({test:(e,r)=>e.length>=t?!0:at(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),Mde=t=>Ct({test:(e,r)=>e.length<=t?!0:at(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),wU=t=>Ct({test:(e,r)=>e.length!==t?at(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),Ode=({map:t}={})=>Ct({test:(e,r)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sCt({test:(t,e)=>t<=0?!0:at(e,`Expected to be negative (got ${t})`)}),Ude=()=>Ct({test:(t,e)=>t>=0?!0:at(e,`Expected to be positive (got ${t})`)}),Hde=t=>Ct({test:(e,r)=>e>=t?!0:at(r,`Expected to be at least ${t} (got ${e})`)}),Gde=t=>Ct({test:(e,r)=>e<=t?!0:at(r,`Expected to be at most ${t} (got ${e})`)}),jde=(t,e)=>Ct({test:(r,i)=>r>=t&&r<=e?!0:at(i,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),Yde=(t,e)=>Ct({test:(r,i)=>r>=t&&rCt({test:(e,r)=>e!==Math.round(e)?at(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:at(r,`Expected to be a safe integer (got ${e})`)}),hv=t=>Ct({test:(e,r)=>t.test(e)?!0:at(r,`Expected to match the pattern ${t.toString()} (got ${Mr(e)})`)}),Jde=()=>Ct({test:(t,e)=>t!==t.toLowerCase()?at(e,`Expected to be all-lowercase (got ${t})`):!0}),Wde=()=>Ct({test:(t,e)=>t!==t.toUpperCase()?at(e,`Expected to be all-uppercase (got ${t})`):!0}),zde=()=>Ct({test:(t,e)=>mU.test(t)?!0:at(e,`Expected to be a valid UUID v4 (got ${Mr(t)})`)}),Vde=()=>Ct({test:(t,e)=>uv.test(t)?!1:at(e,`Expected to be a valid ISO 8601 date string (got ${Mr(t)})`)}),_de=({alpha:t=!1})=>Ct({test:(e,r)=>(t?pU.test(e):dU.test(e))?!0:at(r,`Expected to be a valid hexadecimal color string (got ${Mr(e)})`)}),Xde=()=>Ct({test:(t,e)=>CU.test(t)?!0:at(e,`Expected to be a valid base 64 string (got ${Mr(t)})`)}),Zde=(t=yU())=>Ct({test:(e,r)=>{let i;try{i=JSON.parse(e)}catch(n){return at(r,`Expected to be a valid JSON string (got ${Mr(e)})`)}return t(i,r)}}),$de=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?at(i,`Missing required ${GI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},eCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?at(i,`Forbidden ${GI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?at(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Bl||(Bl={}));rCe={[Bl.Forbids]:{expect:!1,message:"forbids using"},[Bl.Requires]:{expect:!0,message:"requires using"}},pv=(t,e,r,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(r),o=rCe[e];return Ct({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(t)||n.has(a[t]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?at(l,`Property "${t}" ${o.message} ${GI(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var Sh=I(($et,OU)=>{var mCe="2.0.0",ICe=256,ECe=Number.MAX_SAFE_INTEGER||9007199254740991,yCe=16;OU.exports={SEMVER_SPEC_VERSION:mCe,MAX_LENGTH:ICe,MAX_SAFE_INTEGER:ECe,MAX_SAFE_COMPONENT_LENGTH:yCe}});var xh=I((ett,KU)=>{var wCe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};KU.exports=wCe});var Ql=I((iA,UU)=>{var{MAX_SAFE_COMPONENT_LENGTH:yv}=Sh(),BCe=xh();iA=UU.exports={};var QCe=iA.re=[],Je=iA.src=[],We=iA.t={},bCe=0,mt=(t,e,r)=>{let i=bCe++;BCe(i,e),We[t]=i,Je[i]=e,QCe[i]=new RegExp(e,r?"g":void 0)};mt("NUMERICIDENTIFIER","0|[1-9]\\d*");mt("NUMERICIDENTIFIERLOOSE","[0-9]+");mt("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");mt("MAINVERSION",`(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})`);mt("MAINVERSIONLOOSE",`(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})`);mt("PRERELEASEIDENTIFIER",`(?:${Je[We.NUMERICIDENTIFIER]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASEIDENTIFIERLOOSE",`(?:${Je[We.NUMERICIDENTIFIERLOOSE]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASE",`(?:-(${Je[We.PRERELEASEIDENTIFIER]}(?:\\.${Je[We.PRERELEASEIDENTIFIER]})*))`);mt("PRERELEASELOOSE",`(?:-?(${Je[We.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${Je[We.PRERELEASEIDENTIFIERLOOSE]})*))`);mt("BUILDIDENTIFIER","[0-9A-Za-z-]+");mt("BUILD",`(?:\\+(${Je[We.BUILDIDENTIFIER]}(?:\\.${Je[We.BUILDIDENTIFIER]})*))`);mt("FULLPLAIN",`v?${Je[We.MAINVERSION]}${Je[We.PRERELEASE]}?${Je[We.BUILD]}?`);mt("FULL",`^${Je[We.FULLPLAIN]}$`);mt("LOOSEPLAIN",`[v=\\s]*${Je[We.MAINVERSIONLOOSE]}${Je[We.PRERELEASELOOSE]}?${Je[We.BUILD]}?`);mt("LOOSE",`^${Je[We.LOOSEPLAIN]}$`);mt("GTLT","((?:<|>)?=?)");mt("XRANGEIDENTIFIERLOOSE",`${Je[We.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);mt("XRANGEIDENTIFIER",`${Je[We.NUMERICIDENTIFIER]}|x|X|\\*`);mt("XRANGEPLAIN",`[v=\\s]*(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:${Je[We.PRERELEASE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGEPLAINLOOSE",`[v=\\s]*(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:${Je[We.PRERELEASELOOSE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAIN]}$`);mt("XRANGELOOSE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAINLOOSE]}$`);mt("COERCE",`(^|[^\\d])(\\d{1,${yv}})(?:\\.(\\d{1,${yv}}))?(?:\\.(\\d{1,${yv}}))?(?:$|[^\\d])`);mt("COERCERTL",Je[We.COERCE],!0);mt("LONETILDE","(?:~>?)");mt("TILDETRIM",`(\\s*)${Je[We.LONETILDE]}\\s+`,!0);iA.tildeTrimReplace="$1~";mt("TILDE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAIN]}$`);mt("TILDELOOSE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("LONECARET","(?:\\^)");mt("CARETTRIM",`(\\s*)${Je[We.LONECARET]}\\s+`,!0);iA.caretTrimReplace="$1^";mt("CARET",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAIN]}$`);mt("CARETLOOSE",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("COMPARATORLOOSE",`^${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]})$|^$`);mt("COMPARATOR",`^${Je[We.GTLT]}\\s*(${Je[We.FULLPLAIN]})$|^$`);mt("COMPARATORTRIM",`(\\s*)${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]}|${Je[We.XRANGEPLAIN]})`,!0);iA.comparatorTrimReplace="$1$2$3";mt("HYPHENRANGE",`^\\s*(${Je[We.XRANGEPLAIN]})\\s+-\\s+(${Je[We.XRANGEPLAIN]})\\s*$`);mt("HYPHENRANGELOOSE",`^\\s*(${Je[We.XRANGEPLAINLOOSE]})\\s+-\\s+(${Je[We.XRANGEPLAINLOOSE]})\\s*$`);mt("STAR","(<|>)?=?\\s*\\*");mt("GTE0","^\\s*>=\\s*0.0.0\\s*$");mt("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var kh=I((ttt,HU)=>{var vCe=["includePrerelease","loose","rtl"],SCe=t=>t?typeof t!="object"?{loose:!0}:vCe.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};HU.exports=SCe});var zI=I((rtt,GU)=>{var jU=/^[0-9]+$/,YU=(t,e)=>{let r=jU.test(t),i=jU.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:tYU(e,t);GU.exports={compareIdentifiers:YU,rcompareIdentifiers:xCe}});var bi=I((itt,qU)=>{var VI=xh(),{MAX_LENGTH:JU,MAX_SAFE_INTEGER:_I}=Sh(),{re:WU,t:zU}=Ql(),kCe=kh(),{compareIdentifiers:Ph}=zI(),_n=class{constructor(e,r){if(r=kCe(r),e instanceof _n){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>JU)throw new TypeError(`version is longer than ${JU} characters`);VI("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?WU[zU.LOOSE]:WU[zU.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>_I||this.major<0)throw new TypeError("Invalid major version");if(this.minor>_I||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>_I||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s<_I)return s}return n}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(VI("SemVer.compare",this.version,this.options,e),!(e instanceof _n)){if(typeof e=="string"&&e===this.version)return 0;e=new _n(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof _n||(e=new _n(e,this.options)),Ph(this.major,e.major)||Ph(this.minor,e.minor)||Ph(this.patch,e.patch)}comparePre(e){if(e instanceof _n||(e=new _n(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let i=this.prerelease[r],n=e.prerelease[r];if(VI("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}compareBuild(e){e instanceof _n||(e=new _n(e,this.options));let r=0;do{let i=this.build[r],n=e.build[r];if(VI("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}inc(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r),this.inc("pre",r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};qU.exports=_n});var bl=I((ntt,VU)=>{var{MAX_LENGTH:PCe}=Sh(),{re:_U,t:XU}=Ql(),ZU=bi(),DCe=kh(),RCe=(t,e)=>{if(e=DCe(e),t instanceof ZU)return t;if(typeof t!="string"||t.length>PCe||!(e.loose?_U[XU.LOOSE]:_U[XU.FULL]).test(t))return null;try{return new ZU(t,e)}catch(i){return null}};VU.exports=RCe});var e2=I((stt,$U)=>{var FCe=bl(),NCe=(t,e)=>{let r=FCe(t,e);return r?r.version:null};$U.exports=NCe});var r2=I((ott,t2)=>{var LCe=bl(),TCe=(t,e)=>{let r=LCe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};t2.exports=TCe});var n2=I((att,i2)=>{var MCe=bi(),OCe=(t,e,r,i)=>{typeof r=="string"&&(i=r,r=void 0);try{return new MCe(t,r).inc(e,i).version}catch(n){return null}};i2.exports=OCe});var Xn=I((Att,s2)=>{var o2=bi(),KCe=(t,e,r)=>new o2(t,r).compare(new o2(e,r));s2.exports=KCe});var XI=I((ltt,a2)=>{var UCe=Xn(),HCe=(t,e,r)=>UCe(t,e,r)===0;a2.exports=HCe});var c2=I((ctt,A2)=>{var l2=bl(),GCe=XI(),jCe=(t,e)=>{if(GCe(t,e))return null;{let r=l2(t),i=l2(e),n=r.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==i[a])return s+a;return o}};A2.exports=jCe});var g2=I((utt,u2)=>{var YCe=bi(),qCe=(t,e)=>new YCe(t,e).major;u2.exports=qCe});var h2=I((gtt,f2)=>{var JCe=bi(),WCe=(t,e)=>new JCe(t,e).minor;f2.exports=WCe});var d2=I((ftt,p2)=>{var zCe=bi(),VCe=(t,e)=>new zCe(t,e).patch;p2.exports=VCe});var m2=I((htt,C2)=>{var _Ce=bl(),XCe=(t,e)=>{let r=_Ce(t,e);return r&&r.prerelease.length?r.prerelease:null};C2.exports=XCe});var E2=I((ptt,I2)=>{var ZCe=Xn(),$Ce=(t,e,r)=>ZCe(e,t,r);I2.exports=$Ce});var w2=I((dtt,y2)=>{var eme=Xn(),tme=(t,e)=>eme(t,e,!0);y2.exports=tme});var ZI=I((Ctt,B2)=>{var Q2=bi(),rme=(t,e,r)=>{let i=new Q2(t,r),n=new Q2(e,r);return i.compare(n)||i.compareBuild(n)};B2.exports=rme});var v2=I((mtt,b2)=>{var ime=ZI(),nme=(t,e)=>t.sort((r,i)=>ime(r,i,e));b2.exports=nme});var x2=I((Itt,S2)=>{var sme=ZI(),ome=(t,e)=>t.sort((r,i)=>sme(i,r,e));S2.exports=ome});var Dh=I((Ett,k2)=>{var ame=Xn(),Ame=(t,e,r)=>ame(t,e,r)>0;k2.exports=Ame});var $I=I((ytt,P2)=>{var lme=Xn(),cme=(t,e,r)=>lme(t,e,r)<0;P2.exports=cme});var wv=I((wtt,D2)=>{var ume=Xn(),gme=(t,e,r)=>ume(t,e,r)!==0;D2.exports=gme});var eE=I((Btt,R2)=>{var fme=Xn(),hme=(t,e,r)=>fme(t,e,r)>=0;R2.exports=hme});var tE=I((Qtt,F2)=>{var pme=Xn(),dme=(t,e,r)=>pme(t,e,r)<=0;F2.exports=dme});var Bv=I((btt,N2)=>{var Cme=XI(),mme=wv(),Ime=Dh(),Eme=eE(),yme=$I(),wme=tE(),Bme=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Cme(t,r,i);case"!=":return mme(t,r,i);case">":return Ime(t,r,i);case">=":return Eme(t,r,i);case"<":return yme(t,r,i);case"<=":return wme(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};N2.exports=Bme});var T2=I((vtt,L2)=>{var Qme=bi(),bme=bl(),{re:rE,t:iE}=Ql(),vme=(t,e)=>{if(t instanceof Qme)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(rE[iE.COERCE]);else{let i;for(;(i=rE[iE.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),rE[iE.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;rE[iE.COERCERTL].lastIndex=-1}return r===null?null:bme(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};L2.exports=vme});var O2=I((Stt,M2)=>{"use strict";M2.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Rh=I((xtt,K2)=>{"use strict";K2.exports=Pt;Pt.Node=vl;Pt.create=Pt;function Pt(t){var e=this;if(e instanceof Pt||(e=new Pt),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};Pt.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};Pt.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Pt.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Pt.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Pt;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};Pt.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var Pme=Rh(),Sl=Symbol("max"),ra=Symbol("length"),uu=Symbol("lengthCalculator"),Fh=Symbol("allowStale"),xl=Symbol("maxAge"),ia=Symbol("dispose"),H2=Symbol("noDisposeOnSet"),si=Symbol("lruList"),ks=Symbol("cache"),G2=Symbol("updateAgeOnGet"),Qv=()=>1,j2=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Sl]=e.max||Infinity,i=e.length||Qv;if(this[uu]=typeof i!="function"?Qv:i,this[Fh]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[xl]=e.maxAge||0,this[ia]=e.dispose,this[H2]=e.noDisposeOnSet||!1,this[G2]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Sl]=e||Infinity,Nh(this)}get max(){return this[Sl]}set allowStale(e){this[Fh]=!!e}get allowStale(){return this[Fh]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[xl]=e,Nh(this)}get maxAge(){return this[xl]}set lengthCalculator(e){typeof e!="function"&&(e=Qv),e!==this[uu]&&(this[uu]=e,this[ra]=0,this[si].forEach(r=>{r.length=this[uu](r.value,r.key),this[ra]+=r.length})),Nh(this)}get lengthCalculator(){return this[uu]}get length(){return this[ra]}get itemCount(){return this[si].length}rforEach(e,r){r=r||this;for(let i=this[si].tail;i!==null;){let n=i.prev;q2(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[si].head;i!==null;){let n=i.next;q2(this,e,i,r),i=n}}keys(){return this[si].toArray().map(e=>e.key)}values(){return this[si].toArray().map(e=>e.value)}reset(){this[ia]&&this[si]&&this[si].length&&this[si].forEach(e=>this[ia](e.key,e.value)),this[ks]=new Map,this[si]=new Pme,this[ra]=0}dump(){return this[si].map(e=>nE(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[si]}set(e,r,i){if(i=i||this[xl],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[uu](r,e);if(this[ks].has(e)){if(s>this[Sl])return gu(this,this[ks].get(e)),!1;let l=this[ks].get(e).value;return this[ia]&&(this[H2]||this[ia](e,l.value)),l.now=n,l.maxAge=i,l.value=r,this[ra]+=s-l.length,l.length=s,this.get(e),Nh(this),!0}let o=new Y2(e,r,s,n,i);return o.length>this[Sl]?(this[ia]&&this[ia](e,r),!1):(this[ra]+=o.length,this[si].unshift(o),this[ks].set(e,this[si].head),Nh(this),!0)}has(e){if(!this[ks].has(e))return!1;let r=this[ks].get(e).value;return!nE(this,r)}get(e){return bv(this,e,!0)}peek(e){return bv(this,e,!1)}pop(){let e=this[si].tail;return e?(gu(this,e),e.value):null}del(e){gu(this,this[ks].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[ks].forEach((e,r)=>bv(this,r,!1))}},bv=(t,e,r)=>{let i=t[ks].get(e);if(i){let n=i.value;if(nE(t,n)){if(gu(t,i),!t[Fh])return}else r&&(t[G2]&&(i.value.now=Date.now()),t[si].unshiftNode(i));return n.value}},nE=(t,e)=>{if(!e||!e.maxAge&&!t[xl])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[xl]&&r>t[xl]},Nh=t=>{if(t[ra]>t[Sl])for(let e=t[si].tail;t[ra]>t[Sl]&&e!==null;){let r=e.prev;gu(t,e),e=r}},gu=(t,e)=>{if(e){let r=e.value;t[ia]&&t[ia](r.key,r.value),t[ra]-=r.length,t[ks].delete(r.key),t[si].removeNode(e)}},Y2=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},q2=(t,e,r,i)=>{let n=r.value;nE(t,n)&&(gu(t,r),t[Fh]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};U2.exports=j2});var Zn=I((Ptt,W2)=>{var fu=class{constructor(e,r){if(r=Dme(r),e instanceof fu)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new fu(e.raw,r);if(e instanceof vv)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!V2(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&Tme(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=z2.get(i);if(n)return n;let s=this.options.loose,o=s?vi[di.HYPHENRANGELOOSE]:vi[di.HYPHENRANGE];e=e.replace(o,Kme(this.options.includePrerelease)),Rr("hyphen replace",e),e=e.replace(vi[di.COMPARATORTRIM],Fme),Rr("comparator trim",e,vi[di.COMPARATORTRIM]),e=e.replace(vi[di.TILDETRIM],Nme),e=e.replace(vi[di.CARETTRIM],Lme),e=e.split(/\s+/).join(" ");let a=s?vi[di.COMPARATORLOOSE]:vi[di.COMPARATOR],l=e.split(" ").map(f=>Mme(f,this.options)).join(" ").split(/\s+/).map(f=>Ome(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new vv(f,this.options)),c=l.length,u=new Map;for(let f of l){if(V2(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return z2.set(i,g),g}intersects(e,r){if(!(e instanceof fu))throw new TypeError("a Range is required");return this.set.some(i=>_2(i,r)&&e.set.some(n=>_2(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new Rme(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",Tme=t=>t.value==="",_2=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},Mme=(t,e)=>(Rr("comp",t,e),t=jme(t,e),Rr("caret",t),t=Gme(t,e),Rr("tildes",t),t=Yme(t,e),Rr("xrange",t),t=qme(t,e),Rr("stars",t),t),Ji=t=>!t||t.toLowerCase()==="x"||t==="*",Gme=(t,e)=>t.trim().split(/\s+/).map(r=>Jme(r,e)).join(" "),Jme=(t,e)=>{let r=e.loose?vi[di.TILDELOOSE]:vi[di.TILDE];return t.replace(r,(i,n,s,o,a)=>{Rr("tilde",t,i,n,s,o,a);let l;return Ji(n)?l="":Ji(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Ji(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Rr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Rr("tilde return",l),l})},jme=(t,e)=>t.trim().split(/\s+/).map(r=>Wme(r,e)).join(" "),Wme=(t,e)=>{Rr("caret",t,e);let r=e.loose?vi[di.CARETLOOSE]:vi[di.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,l)=>{Rr("caret",t,n,s,o,a,l);let c;return Ji(s)?c="":Ji(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Ji(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Rr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Rr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Rr("caret return",c),c})},Yme=(t,e)=>(Rr("replaceXRanges",t,e),t.split(/\s+/).map(r=>zme(r,e)).join(" ")),zme=(t,e)=>{t=t.trim();let r=e.loose?vi[di.XRANGELOOSE]:vi[di.XRANGE];return t.replace(r,(i,n,s,o,a,l)=>{Rr("xRange",t,i,n,s,o,a,l);let c=Ji(s),u=c||Ji(o),g=u||Ji(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Rr("xRange return",i),i})},qme=(t,e)=>(Rr("replaceStars",t,e),t.trim().replace(vi[di.STAR],"")),Ome=(t,e)=>(Rr("replaceGTE0",t,e),t.trim().replace(vi[e.includePrerelease?di.GTE0PRE:di.GTE0],"")),Kme=t=>(e,r,i,n,s,o,a,l,c,u,g,f,h)=>(Ji(i)?r="":Ji(n)?r=`>=${i}.0.0${t?"-0":""}`:Ji(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ji(c)?l="":Ji(u)?l=`<${+c+1}.0.0-0`:Ji(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:t?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),Ume=(t,e,r)=>{for(let i=0;i0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Lh=I((Dtt,X2)=>{var Th=Symbol("SemVer ANY"),Mh=class{static get ANY(){return Th}constructor(e,r){if(r=Vme(r),e instanceof Mh){if(e.loose===!!r.loose)return e;e=e.value}xv("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Th?this.value="":this.value=this.operator+this.semver.version,xv("comp",this)}parse(e){let r=this.options.loose?Z2[$2.COMPARATORLOOSE]:Z2[$2.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new eH(i[2],this.options.loose):this.semver=Th}toString(){return this.value}test(e){if(xv("Comparator.test",e,this.options.loose),this.semver===Th||e===Th)return!0;if(typeof e=="string")try{e=new eH(e,this.options)}catch(r){return!1}return Sv(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Mh))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new tH(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new tH(this.value,r).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Sv(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=Sv(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};X2.exports=Mh;var Vme=kh(),{re:Z2,t:$2}=Ql(),Sv=Bv(),xv=xh(),eH=bi(),tH=Zn()});var Oh=I((Rtt,rH)=>{var _me=Zn(),Xme=(t,e,r)=>{try{e=new _me(e,r)}catch(i){return!1}return e.test(t)};rH.exports=Xme});var nH=I((Ftt,iH)=>{var Zme=Zn(),$me=(t,e)=>new Zme(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));iH.exports=$me});var oH=I((Ntt,sH)=>{var eIe=bi(),tIe=Zn(),rIe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new tIe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new eIe(i,r))}),i};sH.exports=rIe});var AH=I((Ltt,aH)=>{var iIe=bi(),nIe=Zn(),sIe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new nIe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new iIe(i,r))}),i};aH.exports=sIe});var uH=I((Ttt,lH)=>{var kv=bi(),oIe=Zn(),cH=Dh(),aIe=(t,e)=>{t=new oIe(t,e);let r=new kv("0.0.0");if(t.test(r)||(r=new kv("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i{let a=new kv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||cH(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||cH(r,s))&&(r=s)}return r&&t.test(r)?r:null};lH.exports=aIe});var fH=I((Mtt,gH)=>{var AIe=Zn(),lIe=(t,e)=>{try{return new AIe(t,e).range||"*"}catch(r){return null}};gH.exports=lIe});var sE=I((Ott,hH)=>{var cIe=bi(),pH=Lh(),{ANY:uIe}=pH,gIe=Zn(),fIe=Oh(),dH=Dh(),CH=$I(),hIe=tE(),pIe=eE(),dIe=(t,e,r,i)=>{t=new cIe(t,i),e=new gIe(e,i);let n,s,o,a,l;switch(r){case">":n=dH,s=hIe,o=CH,a=">",l=">=";break;case"<":n=CH,s=pIe,o=dH,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fIe(t,e,i))return!1;for(let c=0;c{h.semver===uIe&&(h=new pH(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(t,f.semver))return!1;if(f.operator===l&&o(t,f.semver))return!1}return!0};hH.exports=dIe});var IH=I((Ktt,mH)=>{var CIe=sE(),mIe=(t,e,r)=>CIe(t,e,">",r);mH.exports=mIe});var yH=I((Utt,EH)=>{var IIe=sE(),EIe=(t,e,r)=>IIe(t,e,"<",r);EH.exports=EIe});var QH=I((Htt,wH)=>{var BH=Zn(),yIe=(t,e,r)=>(t=new BH(t,r),e=new BH(e,r),t.intersects(e));wH.exports=yIe});var vH=I((Gtt,bH)=>{var wIe=Oh(),BIe=Xn();bH.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((u,g)=>BIe(u,g,r));for(let u of o)wIe(u,e,r)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var xH=Zn(),oE=Lh(),{ANY:Pv}=oE,Kh=Oh(),Dv=Xn(),bIe=(t,e,r={})=>{if(t===e)return!0;t=new xH(t,r),e=new xH(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=QIe(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},QIe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Pv){if(e.length===1&&e[0].semver===Pv)return!0;r.includePrerelease?t=[new oE(">=0.0.0-0")]:t=[new oE(">=0.0.0")]}if(e.length===1&&e[0].semver===Pv){if(r.includePrerelease)return!0;e=[new oE(">=0.0.0")]}let i=new Set,n,s;for(let h of t)h.operator===">"||h.operator===">="?n=kH(n,h,r):h.operator==="<"||h.operator==="<="?s=PH(s,h,r):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=Dv(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!Kh(h,String(n),r)||s&&!Kh(h,String(s),r))return null;for(let p of e)if(!Kh(h,String(p),r))return!1;return!0}let a,l,c,u,g=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=kH(n,h,r),a===h&&a!==n)return!1}else if(n.operator===">="&&!Kh(n.semver,String(h),r))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=PH(s,h,r),l===h&&l!==s)return!1}else if(s.operator==="<="&&!Kh(s.semver,String(h),r))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},kH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},PH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};SH.exports=bIe});var Or=I((Ytt,RH)=>{var Rv=Ql();RH.exports={re:Rv.re,src:Rv.src,tokens:Rv.t,SEMVER_SPEC_VERSION:Sh().SEMVER_SPEC_VERSION,SemVer:bi(),compareIdentifiers:zI().compareIdentifiers,rcompareIdentifiers:zI().rcompareIdentifiers,parse:bl(),valid:e2(),clean:r2(),inc:n2(),diff:c2(),major:g2(),minor:h2(),patch:d2(),prerelease:m2(),compare:Xn(),rcompare:E2(),compareLoose:w2(),compareBuild:ZI(),sort:v2(),rsort:x2(),gt:Dh(),lt:$I(),eq:XI(),neq:wv(),gte:eE(),lte:tE(),cmp:Bv(),coerce:T2(),Comparator:Lh(),Range:Zn(),satisfies:Oh(),toComparators:nH(),maxSatisfying:oH(),minSatisfying:AH(),minVersion:uH(),validRange:fH(),outside:sE(),gtr:IH(),ltr:yH(),intersects:QH(),simplifyRange:vH(),subset:DH()}});var Uv=I(AE=>{"use strict";Object.defineProperty(AE,"__esModule",{value:!0});AE.VERSION=void 0;AE.VERSION="9.1.0"});var Dt=I((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(t,e,r){if(r||arguments.length===2)for(var i=0,n=e.length,s;i{(function(t,e){typeof define=="function"&&define.amd?define([],e):typeof lE=="object"&&lE.exports?lE.exports=e():t.regexpToAst=e()})(typeof self!="undefined"?self:YH,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},t.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var d=this.disjunction();this.consumeChar("/");for(var m={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(m,"global");break;case"i":o(m,"ignoreCase");break;case"m":o(m,"multiLine");break;case"u":o(m,"unicode");break;case"y":o(m,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:m,value:d,loc:this.loc(0)}},t.prototype.disjunction=function(){var p=[],d=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(d)}},t.prototype.alternative=function(){for(var p=[],d=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(d)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var d;switch(this.popChar()){case"=":d="Lookahead";break;case"!":d="NegativeLookahead";break}a(d);var m=this.disjunction();return this.consumeChar(")"),{type:d,value:m,loc:this.loc(p)}}l()},t.prototype.quantifier=function(p){var d,m=this.idx;switch(this.popChar()){case"*":d={atLeast:0,atMost:Infinity};break;case"+":d={atLeast:1,atMost:Infinity};break;case"?":d={atLeast:0,atMost:1};break;case"{":var E=this.integerIncludingZero();switch(this.popChar()){case"}":d={atLeast:E,atMost:E};break;case",":var B;this.isDigit()?(B=this.integerIncludingZero(),d={atLeast:E,atMost:B}):d={atLeast:E,atMost:Infinity},this.consumeChar("}");break}if(p===!0&&d===void 0)return;a(d);break}if(!(p===!0&&d===void 0))return a(d),this.peekChar(0)==="?"?(this.consumeChar("?"),d.greedy=!1):d.greedy=!0,d.type="Quantifier",d.loc=this.loc(m),d},t.prototype.atom=function(){var p,d=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(d),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` -`),n("\r"),n("\u2028"),n("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},t.prototype.characterClassEscape=function(){var p,d=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,d=!0;break;case"s":p=f;break;case"S":p=f,d=!0;break;case"w":p=g;break;case"W":p=g,d=!0;break}return a(p),{type:"Set",value:p,complement:d}},t.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` -`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var d=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:d}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},t.prototype.characterClass=function(){var p=[],d=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),d=!0);this.isClassAtom();){var m=this.classAtom(),E=m.type==="Character";if(E&&this.isRangeDash()){this.consumeChar("-");var B=this.classAtom(),b=B.type==="Character";if(b){if(B.value=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,d){p.length!==void 0?p.forEach(function(m){d.push(m)}):d.push(p)}function o(p,d){if(p[d]===!0)throw"duplicate flag "+d;p[d]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` -`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var d in p){var m=p[d];p.hasOwnProperty(d)&&(m.type!==void 0?this.visit(m):Array.isArray(m)&&m.forEach(function(E){this.visit(E)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:t,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var gE=I(Iu=>{"use strict";Object.defineProperty(Iu,"__esModule",{value:!0});Iu.clearRegExpParserCache=Iu.getRegExpAst=void 0;var FIe=cE(),uE={},NIe=new FIe.RegExpParser;function LIe(t){var e=t.toString();if(uE.hasOwnProperty(e))return uE[e];var r=NIe.pattern(e);return uE[e]=r,r}Iu.getRegExpAst=LIe;function TIe(){uE={}}Iu.clearRegExpParserCache=TIe});var VH=I(fn=>{"use strict";var MIe=fn&&fn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(fn,"__esModule",{value:!0});fn.canMatchCharCode=fn.firstCharOptimizedIndices=fn.getOptimizedStartCodesIndices=fn.failedOptimizationPrefixMsg=void 0;var qH=cE(),$n=Dt(),JH=gE(),sa=Hv(),WH="Complement Sets are not supported for first char optimization";fn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function OIe(t,e){e===void 0&&(e=!1);try{var r=(0,JH.getRegExpAst)(t),i=fE(r.value,{},r.flags.ignoreCase);return i}catch(s){if(s.message===WH)e&&(0,$n.PRINT_WARNING)(""+fn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+t.toString()+` > -`)+` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,$n.PRINT_ERROR)(fn.failedOptimizationPrefixMsg+` -`+(" Failed parsing: < "+t.toString()+` > -`)+(" Using the regexp-to-ast library version: "+qH.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}fn.getOptimizedStartCodesIndices=OIe;function fE(t,e,r){switch(t.type){case"Disjunction":for(var i=0;i=sa.minOptimizationVal)for(var f=u.from>=sa.minOptimizationVal?u.from:sa.minOptimizationVal,h=u.to,p=(0,sa.charCodeToOptimizedIndex)(f),d=(0,sa.charCodeToOptimizedIndex)(h),m=p;m<=d;m++)e[m]=m}}});break;case"Group":fE(o.value,e,r);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&Gv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,$n.values)(e)}fn.firstCharOptimizedIndices=fE;function hE(t,e,r){var i=(0,sa.charCodeToOptimizedIndex)(t);e[i]=i,r===!0&&KIe(t,e)}function KIe(t,e){var r=String.fromCharCode(t),i=r.toUpperCase();if(i!==r){var n=(0,sa.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=r.toLowerCase();if(s!==r){var n=(0,sa.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function zH(t,e){return(0,$n.find)(t.value,function(r){if(typeof r=="number")return(0,$n.contains)(e,r);var i=r;return(0,$n.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function Gv(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?(0,$n.isArray)(t.value)?(0,$n.every)(t.value,Gv):Gv(t.value):!1}var UIe=function(t){MIe(e,t);function e(r){var i=t.call(this)||this;return i.targetCharCodes=r,i.found=!1,i}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case"Lookahead":this.visitLookahead(r);return;case"NegativeLookahead":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){(0,$n.contains)(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?zH(r,this.targetCharCodes)===void 0&&(this.found=!0):zH(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(qH.BaseRegExpVisitor);function HIe(t,e){if(e instanceof RegExp){var r=(0,JH.getRegExpAst)(e),i=new UIe(t);return i.visit(r),i.found}else return(0,$n.find)(e,function(n){return(0,$n.contains)(t,n.charCodeAt(0))})!==void 0}fn.canMatchCharCode=HIe});var Hv=I(je=>{"use strict";var _H=je&&je.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(je,"__esModule",{value:!0});je.charCodeToOptimizedIndex=je.minOptimizationVal=je.buildLineBreakIssueMessage=je.LineTerminatorOptimizedTester=je.isShortPattern=je.isCustomPattern=je.cloneEmptyGroups=je.performWarningRuntimeChecks=je.performRuntimeChecks=je.addStickyFlag=je.addStartOfInput=je.findUnreachablePatterns=je.findModesThatDoNotExist=je.findInvalidGroupType=je.findDuplicatePatterns=je.findUnsupportedFlags=je.findStartOfInputAnchor=je.findEmptyMatchRegExps=je.findEndOfInputAnchor=je.findInvalidPatterns=je.findMissingPatterns=je.validatePatterns=je.analyzeTokenTypes=je.enableSticky=je.disableSticky=je.SUPPORT_STICKY=je.MODES=je.DEFAULT_MODE=void 0;var XH=cE(),zt=Gh(),Ee=Dt(),Eu=VH(),ZH=gE(),ao="PATTERN";je.DEFAULT_MODE="defaultMode";je.MODES="modes";je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function GIe(){je.SUPPORT_STICKY=!1}je.disableSticky=GIe;function jIe(){je.SUPPORT_STICKY=!0}je.enableSticky=jIe;function qIe(t,e){e=(0,Ee.defaults)(e,{useSticky:je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(B,b){return b()}});var r=e.tracer;r("initCharCodeToOptimizedIndexMap",function(){YIe()});var i;r("Reject Lexer.NA",function(){i=(0,Ee.reject)(t,function(B){return B[ao]===zt.Lexer.NA})});var n=!1,s;r("Transform Patterns",function(){n=!1,s=(0,Ee.map)(i,function(B){var b=B[ao];if((0,Ee.isRegExp)(b)){var R=b.source;return R.length===1&&R!=="^"&&R!=="$"&&R!=="."&&!b.ignoreCase?R:R.length===2&&R[0]==="\\"&&!(0,Ee.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],R[1])?R[1]:e.useSticky?Yv(b):jv(b)}else{if((0,Ee.isFunction)(b))return n=!0,{exec:b};if((0,Ee.has)(b,"exec"))return n=!0,b;if(typeof b=="string"){if(b.length===1)return b;var H=b.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),L=new RegExp(H);return e.useSticky?Yv(L):jv(L)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;r("misc mapping",function(){o=(0,Ee.map)(i,function(B){return B.tokenTypeIdx}),a=(0,Ee.map)(i,function(B){var b=B.GROUP;if(b!==zt.Lexer.SKIPPED){if((0,Ee.isString)(b))return b;if((0,Ee.isUndefined)(b))return!1;throw Error("non exhaustive match")}}),l=(0,Ee.map)(i,function(B){var b=B.LONGER_ALT;if(b){var R=(0,Ee.isArray)(b)?(0,Ee.map)(b,function(H){return(0,Ee.indexOf)(i,H)}):[(0,Ee.indexOf)(i,b)];return R}}),c=(0,Ee.map)(i,function(B){return B.PUSH_MODE}),u=(0,Ee.map)(i,function(B){return(0,Ee.has)(B,"POP_MODE")})});var g;r("Line Terminator Handling",function(){var B=tG(e.lineTerminatorCharacters);g=(0,Ee.map)(i,function(b){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Ee.map)(i,function(b){if((0,Ee.has)(b,"LINE_BREAKS"))return b.LINE_BREAKS;if(eG(b,B)===!1)return(0,Eu.canMatchCharCode)(B,b.PATTERN)}))});var f,h,p,d;r("Misc Mapping #2",function(){f=(0,Ee.map)(i,qv),h=(0,Ee.map)(s,$H),p=(0,Ee.reduce)(i,function(B,b){var R=b.GROUP;return(0,Ee.isString)(R)&&R!==zt.Lexer.SKIPPED&&(B[R]=[]),B},{}),d=(0,Ee.map)(s,function(B,b){return{pattern:s[b],longerAlt:l[b],canLineTerminator:g[b],isCustom:f[b],short:h[b],group:a[b],push:c[b],pop:u[b],tokenTypeIdx:o[b],tokenType:i[b]}})});var m=!0,E=[];return e.safeMode||r("First Char Optimization",function(){E=(0,Ee.reduce)(i,function(B,b,R){if(typeof b.PATTERN=="string"){var H=b.PATTERN.charCodeAt(0),L=Wv(H);Jv(B,L,d[R])}else if((0,Ee.isArray)(b.START_CHARS_HINT)){var K;(0,Ee.forEach)(b.START_CHARS_HINT,function(ne){var q=typeof ne=="string"?ne.charCodeAt(0):ne,A=Wv(q);K!==A&&(K=A,Jv(B,A,d[R]))})}else if((0,Ee.isRegExp)(b.PATTERN))if(b.PATTERN.unicode)m=!1,e.ensureOptimizations&&(0,Ee.PRINT_ERROR)(""+Eu.failedOptimizationPrefixMsg+(" Unable to analyze < "+b.PATTERN.toString()+` > pattern. -`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var J=(0,Eu.getOptimizedStartCodesIndices)(b.PATTERN,e.ensureOptimizations);(0,Ee.isEmpty)(J)&&(m=!1),(0,Ee.forEach)(J,function(ne){Jv(B,ne,d[R])})}else e.ensureOptimizations&&(0,Ee.PRINT_ERROR)(""+Eu.failedOptimizationPrefixMsg+(" TokenType: <"+b.name+`> is using a custom token pattern without providing parameter. -`)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),m=!1;return B},[])}),r("ArrayPacking",function(){E=(0,Ee.packArray)(E)}),{emptyGroups:p,patternIdxToConfig:d,charCodeToPatternIdxToConfig:E,hasCustom:n,canBeOptimized:m}}je.analyzeTokenTypes=qIe;function WIe(t,e){var r=[],i=rG(t);r=r.concat(i.errors);var n=iG(i.valid),s=n.valid;return r=r.concat(n.errors),r=r.concat(JIe(s)),r=r.concat(nG(s)),r=r.concat(sG(s,e)),r=r.concat(oG(s)),r}je.validatePatterns=WIe;function JIe(t){var e=[],r=(0,Ee.filter)(t,function(i){return(0,Ee.isRegExp)(i[ao])});return e=e.concat(aG(r)),e=e.concat(lG(r)),e=e.concat(cG(r)),e=e.concat(uG(r)),e=e.concat(AG(r)),e}function rG(t){var e=(0,Ee.filter)(t,function(n){return!(0,Ee.has)(n,ao)}),r=(0,Ee.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:zt.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Ee.difference)(t,e);return{errors:r,valid:i}}je.findMissingPatterns=rG;function iG(t){var e=(0,Ee.filter)(t,function(n){var s=n[ao];return!(0,Ee.isRegExp)(s)&&!(0,Ee.isFunction)(s)&&!(0,Ee.has)(s,"exec")&&!(0,Ee.isString)(s)}),r=(0,Ee.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:zt.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Ee.difference)(t,e);return{errors:r,valid:i}}je.findInvalidPatterns=iG;var zIe=/[^\\][\$]/;function aG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ee.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return zIe.test(s.source)}}),i=(0,Ee.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findEndOfInputAnchor=aG;function AG(t){var e=(0,Ee.filter)(t,function(i){var n=i[ao];return n.test("")}),r=(0,Ee.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:zt.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return r}je.findEmptyMatchRegExps=AG;var VIe=/[^\\[][\^]|^\^/;function lG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ee.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return VIe.test(s.source)}}),i=(0,Ee.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findStartOfInputAnchor=lG;function cG(t){var e=(0,Ee.filter)(t,function(i){var n=i[ao];return n instanceof RegExp&&(n.multiline||n.global)}),r=(0,Ee.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:zt.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return r}je.findUnsupportedFlags=cG;function uG(t){var e=[],r=(0,Ee.map)(t,function(s){return(0,Ee.reduce)(t,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Ee.contains)(e,a)&&a.PATTERN!==zt.Lexer.NA&&(e.push(a),o.push(a)),o},[])});r=(0,Ee.compact)(r);var i=(0,Ee.filter)(r,function(s){return s.length>1}),n=(0,Ee.map)(i,function(s){var o=(0,Ee.map)(s,function(l){return l.name}),a=(0,Ee.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:zt.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}je.findDuplicatePatterns=uG;function nG(t){var e=(0,Ee.filter)(t,function(i){if(!(0,Ee.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==zt.Lexer.SKIPPED&&n!==zt.Lexer.NA&&!(0,Ee.isString)(n)}),r=(0,Ee.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:zt.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return r}je.findInvalidGroupType=nG;function sG(t,e){var r=(0,Ee.filter)(t,function(n){return n.PUSH_MODE!==void 0&&!(0,Ee.contains)(e,n.PUSH_MODE)}),i=(0,Ee.map)(r,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:zt.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}je.findModesThatDoNotExist=sG;function oG(t){var e=[],r=(0,Ee.reduce)(t,function(i,n,s){var o=n.PATTERN;return o===zt.Lexer.NA||((0,Ee.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Ee.isRegExp)(o)&&XIe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Ee.forEach)(t,function(i,n){(0,Ee.forEach)(r,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:zt.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}je.findUnreachablePatterns=oG;function _Ie(t,e){if((0,Ee.isRegExp)(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if((0,Ee.isFunction)(e))return e(t,0,[],{});if((0,Ee.has)(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function XIe(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Ee.find)(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function jv(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}je.addStartOfInput=jv;function Yv(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}je.addStickyFlag=Yv;function ZIe(t,e,r){var i=[];return(0,Ee.has)(t,je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.DEFAULT_MODE+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Ee.has)(t,je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.MODES+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Ee.has)(t,je.MODES)&&(0,Ee.has)(t,je.DEFAULT_MODE)&&!(0,Ee.has)(t.modes,t.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+je.DEFAULT_MODE+": <"+t.defaultMode+`>which does not exist -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Ee.has)(t,je.MODES)&&(0,Ee.forEach)(t.modes,function(n,s){(0,Ee.forEach)(n,function(o,a){(0,Ee.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> -`),type:zt.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}je.performRuntimeChecks=ZIe;function $Ie(t,e,r){var i=[],n=!1,s=(0,Ee.compact)((0,Ee.flatten)((0,Ee.mapValues)(t.modes,function(l){return l}))),o=(0,Ee.reject)(s,function(l){return l[ao]===zt.Lexer.NA}),a=tG(r);return e&&(0,Ee.forEach)(o,function(l){var c=eG(l,a);if(c!==!1){var u=gG(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Ee.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Eu.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:zt.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}je.performWarningRuntimeChecks=$Ie;function eEe(t){var e={},r=(0,Ee.keys)(t);return(0,Ee.forEach)(r,function(i){var n=t[i];if((0,Ee.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}je.cloneEmptyGroups=eEe;function qv(t){var e=t.PATTERN;if((0,Ee.isRegExp)(e))return!1;if((0,Ee.isFunction)(e))return!0;if((0,Ee.has)(e,"exec"))return!0;if((0,Ee.isString)(e))return!1;throw Error("non exhaustive match")}je.isCustomPattern=qv;function $H(t){return(0,Ee.isString)(t)&&t.length===1?t.charCodeAt(0):!1}je.isShortPattern=$H;je.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r Token Type -`)+(" Root cause: "+e.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===zt.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+t.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}je.buildLineBreakIssueMessage=gG;function tG(t){var e=(0,Ee.map)(t,function(r){return(0,Ee.isString)(r)&&r.length>0?r.charCodeAt(0):r});return e}function Jv(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}je.minOptimizationVal=256;var pE=[];function Wv(t){return t255?255+~~(t/255):t}}});var yu=I(Bt=>{"use strict";Object.defineProperty(Bt,"__esModule",{value:!0});Bt.isTokenType=Bt.hasExtendingTokensTypesMapProperty=Bt.hasExtendingTokensTypesProperty=Bt.hasCategoriesProperty=Bt.hasShortKeyProperty=Bt.singleAssignCategoriesToksMap=Bt.assignCategoriesMapProp=Bt.assignCategoriesTokensProp=Bt.assignTokenDefaultProps=Bt.expandCategories=Bt.augmentTokenTypes=Bt.tokenIdxToClass=Bt.tokenShortNameIdx=Bt.tokenStructuredMatcherNoCategories=Bt.tokenStructuredMatcher=void 0;var Kr=Dt();function tEe(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}Bt.tokenStructuredMatcher=tEe;function rEe(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}Bt.tokenStructuredMatcherNoCategories=rEe;Bt.tokenShortNameIdx=1;Bt.tokenIdxToClass={};function iEe(t){var e=fG(t);hG(e),dG(e),pG(e),(0,Kr.forEach)(e,function(r){r.isParent=r.categoryMatches.length>0})}Bt.augmentTokenTypes=iEe;function fG(t){for(var e=(0,Kr.cloneArr)(t),r=t,i=!0;i;){r=(0,Kr.compact)((0,Kr.flatten)((0,Kr.map)(r,function(s){return s.CATEGORIES})));var n=(0,Kr.difference)(r,e);e=e.concat(n),(0,Kr.isEmpty)(n)?i=!1:r=n}return e}Bt.expandCategories=fG;function hG(t){(0,Kr.forEach)(t,function(e){CG(e)||(Bt.tokenIdxToClass[Bt.tokenShortNameIdx]=e,e.tokenTypeIdx=Bt.tokenShortNameIdx++),zv(e)&&!(0,Kr.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),zv(e)||(e.CATEGORIES=[]),mG(e)||(e.categoryMatches=[]),IG(e)||(e.categoryMatchesMap={})})}Bt.assignTokenDefaultProps=hG;function pG(t){(0,Kr.forEach)(t,function(e){e.categoryMatches=[],(0,Kr.forEach)(e.categoryMatchesMap,function(r,i){e.categoryMatches.push(Bt.tokenIdxToClass[i].tokenTypeIdx)})})}Bt.assignCategoriesTokensProp=pG;function dG(t){(0,Kr.forEach)(t,function(e){Vv([],e)})}Bt.assignCategoriesMapProp=dG;function Vv(t,e){(0,Kr.forEach)(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),(0,Kr.forEach)(e.CATEGORIES,function(r){var i=t.concat(e);(0,Kr.contains)(i,r)||Vv(i,r)})}Bt.singleAssignCategoriesToksMap=Vv;function CG(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.hasShortKeyProperty=CG;function zv(t){return(0,Kr.has)(t,"CATEGORIES")}Bt.hasCategoriesProperty=zv;function mG(t){return(0,Kr.has)(t,"categoryMatches")}Bt.hasExtendingTokensTypesProperty=mG;function IG(t){return(0,Kr.has)(t,"categoryMatchesMap")}Bt.hasExtendingTokensTypesMapProperty=IG;function nEe(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.isTokenType=nEe});var _v=I(dE=>{"use strict";Object.defineProperty(dE,"__esModule",{value:!0});dE.defaultLexerErrorProvider=void 0;dE.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,r,i,n){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+r+" characters.")}}});var Gh=I(Rl=>{"use strict";Object.defineProperty(Rl,"__esModule",{value:!0});Rl.Lexer=Rl.LexerDefinitionErrorType=void 0;var Ps=Hv(),Vt=Dt(),sEe=yu(),oEe=_v(),aEe=gE(),AEe;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(AEe=Rl.LexerDefinitionErrorType||(Rl.LexerDefinitionErrorType={}));var jh={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:oEe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(jh);var lEe=function(){function t(e,r){var i=this;if(r===void 0&&(r=jh),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=(0,Vt.merge)(jh,r);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===jh.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Ps.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===jh.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,Vt.isArray)(e)?(s={modes:{}},s.modes[Ps.DEFAULT_MODE]=(0,Vt.cloneArr)(e),s[Ps.DEFAULT_MODE]=Ps.DEFAULT_MODE):(o=!1,s=(0,Vt.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Ps.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,Vt.forEach)(s.modes,function(u,g){s.modes[g]=(0,Vt.reject)(u,function(f){return(0,Vt.isUndefined)(f)})});var a=(0,Vt.keys)(s.modes);if((0,Vt.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.validatePatterns)(u,a))}),(0,Vt.isEmpty)(i.lexerDefinitionErrors)){(0,sEe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Ps.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,Vt.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,Vt.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,Vt.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+c)}(0,Vt.forEach)(i.lexerDefinitionWarning,function(u){(0,Vt.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Ps.SUPPORT_STICKY?(i.chopInput=Vt.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=Vt.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=Vt.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=Vt.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=Vt.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,Vt.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(r.ensureOptimizations&&!(0,Vt.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,aEe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,Vt.toFastProperties)(i)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!(0,Vt.isEmpty)(this.lexerDefinitionErrors)){var i=(0,Vt.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+n)}var s=this.tokenizeInternal(e,r);return s},t.prototype.tokenizeInternal=function(e,r){var i=this,n,s,o,a,l,c,u,g,f,h,p,d,m,E,B,b,R=e,H=R.length,L=0,K=0,J=this.hasCustom?0:Math.floor(e.length/10),ne=new Array(J),q=[],A=this.trackStartLines?1:void 0,V=this.trackStartLines?1:void 0,W=(0,Ps.cloneEmptyGroups)(this.emptyGroups),X=this.trackStartLines,F=this.config.lineTerminatorsPattern,D=0,he=[],pe=[],Ne=[],Pe=[];Object.freeze(Pe);var qe=void 0;function re(){return he}function se(wr){var Ui=(0,Ps.charCodeToOptimizedIndex)(wr),ws=pe[Ui];return ws===void 0?Pe:ws}var be=function(wr){if(Ne.length===1&&wr.tokenType.PUSH_MODE===void 0){var Ui=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(wr);q.push({offset:wr.startOffset,line:wr.startLine!==void 0?wr.startLine:void 0,column:wr.startColumn!==void 0?wr.startColumn:void 0,length:wr.image.length,message:Ui})}else{Ne.pop();var ws=(0,Vt.last)(Ne);he=i.patternIdxToConfig[ws],pe=i.charCodeToPatternIdxToConfig[ws],D=he.length;var Tf=i.canModeBeOptimized[ws]&&i.config.safeMode===!1;pe&&Tf?qe=se:qe=re}};function ae(wr){Ne.push(wr),pe=this.charCodeToPatternIdxToConfig[wr],he=this.patternIdxToConfig[wr],D=he.length,D=he.length;var Ui=this.canModeBeOptimized[wr]&&this.config.safeMode===!1;pe&&Ui?qe=se:qe=re}ae.call(this,r);for(var Ae;Lc.length){c=a,u=g,Ae=Oe;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,d=this.createTokenInstance(c,L,p,Ae.tokenType,A,V,f),this.handlePayload(d,u),h===!1?K=this.addToken(ne,K,d):W[h].push(d)),e=this.chopInput(e,f),L=L+f,V=this.computeNewColumn(V,f),X===!0&&Ae.canLineTerminator===!0){var dt=0,ri=void 0,ii=void 0;F.lastIndex=0;do ri=F.test(c),ri===!0&&(ii=F.lastIndex-1,dt++);while(ri===!0);dt!==0&&(A=A+dt,V=f-ii,this.updateTokenEndLineColumnLocation(d,h,ii,dt,A,V,f))}this.handleModes(Ae,be,ae,d)}else{for(var an=L,yr=A,Ki=V,Qi=!1;!Qi&&L <"+e+">");var n=(0,Vt.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();Rl.Lexer=lEe});var nA=I(Ci=>{"use strict";Object.defineProperty(Ci,"__esModule",{value:!0});Ci.tokenMatcher=Ci.createTokenInstance=Ci.EOF=Ci.createToken=Ci.hasTokenLabel=Ci.tokenName=Ci.tokenLabel=void 0;var Ds=Dt(),cEe=Gh(),Xv=yu();function uEe(t){return EG(t)?t.LABEL:t.name}Ci.tokenLabel=uEe;function gEe(t){return t.name}Ci.tokenName=gEe;function EG(t){return(0,Ds.isString)(t.LABEL)&&t.LABEL!==""}Ci.hasTokenLabel=EG;var fEe="parent",yG="categories",wG="label",BG="group",QG="push_mode",bG="pop_mode",vG="longer_alt",SG="line_breaks",xG="start_chars_hint";function kG(t){return hEe(t)}Ci.createToken=kG;function hEe(t){var e=t.pattern,r={};if(r.name=t.name,(0,Ds.isUndefined)(e)||(r.PATTERN=e),(0,Ds.has)(t,fEe))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Ds.has)(t,yG)&&(r.CATEGORIES=t[yG]),(0,Xv.augmentTokenTypes)([r]),(0,Ds.has)(t,wG)&&(r.LABEL=t[wG]),(0,Ds.has)(t,BG)&&(r.GROUP=t[BG]),(0,Ds.has)(t,bG)&&(r.POP_MODE=t[bG]),(0,Ds.has)(t,QG)&&(r.PUSH_MODE=t[QG]),(0,Ds.has)(t,vG)&&(r.LONGER_ALT=t[vG]),(0,Ds.has)(t,SG)&&(r.LINE_BREAKS=t[SG]),(0,Ds.has)(t,xG)&&(r.START_CHARS_HINT=t[xG]),r}Ci.EOF=kG({name:"EOF",pattern:cEe.Lexer.NA});(0,Xv.augmentTokenTypes)([Ci.EOF]);function pEe(t,e,r,i,n,s,o,a){return{image:e,startOffset:r,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}Ci.createTokenInstance=pEe;function dEe(t,e){return(0,Xv.tokenStructuredMatcher)(t,e)}Ci.tokenMatcher=dEe});var hn=I(Tt=>{"use strict";var oa=Tt&&Tt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Tt,"__esModule",{value:!0});Tt.serializeProduction=Tt.serializeGrammar=Tt.Terminal=Tt.Alternation=Tt.RepetitionWithSeparator=Tt.Repetition=Tt.RepetitionMandatoryWithSeparator=Tt.RepetitionMandatory=Tt.Option=Tt.Alternative=Tt.Rule=Tt.NonTerminal=Tt.AbstractProduction=void 0;var $t=Dt(),CEe=nA(),Ao=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),(0,$t.forEach)(this.definition,function(r){r.accept(e)})},t}();Tt.AbstractProduction=Ao;var PG=function(t){oa(e,t);function e(r){var i=t.call(this,[])||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(Ao);Tt.NonTerminal=PG;var DG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.orgText="",(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Rule=DG;var RG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.ignoreAmbiguities=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Alternative=RG;var FG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Option=FG;var NG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatory=NG;var LG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatoryWithSeparator=LG;var TG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Repetition=TG;var MG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionWithSeparator=MG;var OG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(Ao);Tt.Alternation=OG;var CE=function(){function t(e){this.idx=1,(0,$t.assign)(this,(0,$t.pick)(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();Tt.Terminal=CE;function mEe(t){return(0,$t.map)(t,Yh)}Tt.serializeGrammar=mEe;function Yh(t){function e(s){return(0,$t.map)(s,Yh)}if(t instanceof PG){var r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return(0,$t.isString)(t.label)&&(r.label=t.label),r}else{if(t instanceof RG)return{type:"Alternative",definition:e(t.definition)};if(t instanceof FG)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof NG)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof LG)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Yh(new CE({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof MG)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Yh(new CE({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof TG)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof OG)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof CE){var i={type:"Terminal",name:t.terminalType.name,label:(0,CEe.tokenLabel)(t.terminalType),idx:t.idx};(0,$t.isString)(t.label)&&(i.terminalLabel=t.label);var n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(i.pattern=(0,$t.isRegExp)(n)?n.source:n),i}else{if(t instanceof DG)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}Tt.serializeProduction=Yh});var IE=I(mE=>{"use strict";Object.defineProperty(mE,"__esModule",{value:!0});mE.RestWalker=void 0;var Zv=Dt(),pn=hn(),IEe=function(){function t(){}return t.prototype.walk=function(e,r){var i=this;r===void 0&&(r=[]),(0,Zv.forEach)(e.definition,function(n,s){var o=(0,Zv.drop)(e.definition,s+1);if(n instanceof pn.NonTerminal)i.walkProdRef(n,o,r);else if(n instanceof pn.Terminal)i.walkTerminal(n,o,r);else if(n instanceof pn.Alternative)i.walkFlat(n,o,r);else if(n instanceof pn.Option)i.walkOption(n,o,r);else if(n instanceof pn.RepetitionMandatory)i.walkAtLeastOne(n,o,r);else if(n instanceof pn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,r);else if(n instanceof pn.RepetitionWithSeparator)i.walkManySep(n,o,r);else if(n instanceof pn.Repetition)i.walkMany(n,o,r);else if(n instanceof pn.Alternation)i.walkOr(n,o,r);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,r,i){},t.prototype.walkProdRef=function(e,r,i){},t.prototype.walkFlat=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkOption=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkAtLeastOne=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkAtLeastOneSep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkMany=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkManySep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkOr=function(e,r,i){var n=this,s=r.concat(i);(0,Zv.forEach)(e.definition,function(o){var a=new pn.Alternative({definition:[o]});n.walk(a,s)})},t}();mE.RestWalker=IEe;function KG(t,e,r){var i=[new pn.Option({definition:[new pn.Terminal({terminalType:t.separator})].concat(t.definition)})],n=i.concat(e,r);return n}});var wu=I(EE=>{"use strict";Object.defineProperty(EE,"__esModule",{value:!0});EE.GAstVisitor=void 0;var lo=hn(),EEe=function(){function t(){}return t.prototype.visit=function(e){var r=e;switch(r.constructor){case lo.NonTerminal:return this.visitNonTerminal(r);case lo.Alternative:return this.visitAlternative(r);case lo.Option:return this.visitOption(r);case lo.RepetitionMandatory:return this.visitRepetitionMandatory(r);case lo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(r);case lo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(r);case lo.Repetition:return this.visitRepetition(r);case lo.Alternation:return this.visitAlternation(r);case lo.Terminal:return this.visitTerminal(r);case lo.Rule:return this.visitRule(r);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();EE.GAstVisitor=EEe});var Jh=I(Si=>{"use strict";var yEe=Si&&Si.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Si,"__esModule",{value:!0});Si.collectMethods=Si.DslMethodsCollectorVisitor=Si.getProductionDslName=Si.isBranchingProd=Si.isOptionalProd=Si.isSequenceProd=void 0;var qh=Dt(),dr=hn(),wEe=wu();function BEe(t){return t instanceof dr.Alternative||t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionMandatory||t instanceof dr.RepetitionMandatoryWithSeparator||t instanceof dr.RepetitionWithSeparator||t instanceof dr.Terminal||t instanceof dr.Rule}Si.isSequenceProd=BEe;function $v(t,e){e===void 0&&(e=[]);var r=t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionWithSeparator;return r?!0:t instanceof dr.Alternation?(0,qh.some)(t.definition,function(i){return $v(i,e)}):t instanceof dr.NonTerminal&&(0,qh.contains)(e,t)?!1:t instanceof dr.AbstractProduction?(t instanceof dr.NonTerminal&&e.push(t),(0,qh.every)(t.definition,function(i){return $v(i,e)})):!1}Si.isOptionalProd=$v;function QEe(t){return t instanceof dr.Alternation}Si.isBranchingProd=QEe;function bEe(t){if(t instanceof dr.NonTerminal)return"SUBRULE";if(t instanceof dr.Option)return"OPTION";if(t instanceof dr.Alternation)return"OR";if(t instanceof dr.RepetitionMandatory)return"AT_LEAST_ONE";if(t instanceof dr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(t instanceof dr.RepetitionWithSeparator)return"MANY_SEP";if(t instanceof dr.Repetition)return"MANY";if(t instanceof dr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Si.getProductionDslName=bEe;var UG=function(t){yEe(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.separator="-",r.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},r}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(r){var i=r.terminalType.name+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitNonTerminal=function(r){var i=r.nonTerminalName+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitOption=function(r){this.dslMethods.option.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.dslMethods.repetitionWithSeparator.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.dslMethods.repetitionMandatory.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.dslMethods.repetitionMandatoryWithSeparator.push(r)},e.prototype.visitRepetition=function(r){this.dslMethods.repetition.push(r)},e.prototype.visitAlternation=function(r){this.dslMethods.alternation.push(r)},e}(wEe.GAstVisitor);Si.DslMethodsCollectorVisitor=UG;var yE=new UG;function vEe(t){yE.reset(),t.accept(yE);var e=yE.dslMethods;return yE.reset(),e}Si.collectMethods=vEe});var tS=I(co=>{"use strict";Object.defineProperty(co,"__esModule",{value:!0});co.firstForTerminal=co.firstForBranching=co.firstForSequence=co.first=void 0;var wE=Dt(),HG=hn(),eS=Jh();function BE(t){if(t instanceof HG.NonTerminal)return BE(t.referencedRule);if(t instanceof HG.Terminal)return YG(t);if((0,eS.isSequenceProd)(t))return GG(t);if((0,eS.isBranchingProd)(t))return jG(t);throw Error("non exhaustive match")}co.first=BE;function GG(t){for(var e=[],r=t.definition,i=0,n=r.length>i,s,o=!0;n&&o;)s=r[i],o=(0,eS.isOptionalProd)(s),e=e.concat(BE(s)),i=i+1,n=r.length>i;return(0,wE.uniq)(e)}co.firstForSequence=GG;function jG(t){var e=(0,wE.map)(t.definition,function(r){return BE(r)});return(0,wE.uniq)((0,wE.flatten)(e))}co.firstForBranching=jG;function YG(t){return[t.terminalType]}co.firstForTerminal=YG});var rS=I(QE=>{"use strict";Object.defineProperty(QE,"__esModule",{value:!0});QE.IN=void 0;QE.IN="_~IN~_"});var VG=I(es=>{"use strict";var SEe=es&&es.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(es,"__esModule",{value:!0});es.buildInProdFollowPrefix=es.buildBetweenProdsFollowPrefix=es.computeAllProdsFollows=es.ResyncFollowsWalker=void 0;var xEe=IE(),kEe=tS(),qG=Dt(),JG=rS(),PEe=hn(),zG=function(t){SEe(e,t);function e(r){var i=t.call(this)||this;return i.topProd=r,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,i,n){},e.prototype.walkProdRef=function(r,i,n){var s=WG(r.referencedRule,r.idx)+this.topProd.name,o=i.concat(n),a=new PEe.Alternative({definition:o}),l=(0,kEe.first)(a);this.follows[s]=l},e}(xEe.RestWalker);es.ResyncFollowsWalker=zG;function DEe(t){var e={};return(0,qG.forEach)(t,function(r){var i=new zG(r).startWalking();(0,qG.assign)(e,i)}),e}es.computeAllProdsFollows=DEe;function WG(t,e){return t.name+e+JG.IN}es.buildBetweenProdsFollowPrefix=WG;function REe(t){var e=t.terminalType.name;return e+t.idx+JG.IN}es.buildInProdFollowPrefix=REe});var Wh=I(aa=>{"use strict";Object.defineProperty(aa,"__esModule",{value:!0});aa.defaultGrammarValidatorErrorProvider=aa.defaultGrammarResolverErrorProvider=aa.defaultParserErrorProvider=void 0;var Bu=nA(),FEe=Dt(),Rs=Dt(),iS=hn(),_G=Jh();aa.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,i=t.previous,n=t.ruleName,s=(0,Bu.hasTokenLabel)(e),o=s?"--> "+(0,Bu.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+r.image+"' <--";return a},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,i=t.previous,n=t.customUserDescription,s=t.ruleName,o="Expecting: ",a=(0,Rs.first)(r).image,l=` -but found: '`+a+"'";if(n)return o+n+l;var c=(0,Rs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Rs.map)(c,function(h){return"["+(0,Rs.map)(h,function(p){return(0,Bu.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Rs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: -`+g.join(` -`);return o+f+l},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,i=t.customUserDescription,n=t.ruleName,s="Expecting: ",o=(0,Rs.first)(r).image,a=` -but found: '`+o+"'";if(i)return s+i+a;var l=(0,Rs.map)(e,function(u){return"["+(0,Rs.map)(u,function(g){return(0,Bu.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(aa.defaultParserErrorProvider);aa.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-";return r}};aa.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(u){return u instanceof iS.Terminal?u.terminalType.name:u instanceof iS.NonTerminal?u.nonTerminalName:""}var i=t.name,n=(0,Rs.first)(e),s=n.idx,o=(0,_G.getProductionDslName)(n),a=r(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` - appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` -`),c},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. -`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. -`)+`To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix -`+("in inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return i},buildAlternationAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,i},buildEmptyRepetitionError:function(t){var e=(0,_G.getProductionDslName)(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. -This could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. -`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: -`+(" inside <"+t.topLevelRule.name+`> Rule. - has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=FEe.map(t.leftRecursionPath,function(s){return s.name}),i=e+" --> "+r.concat([e]).join(" --> "),n=`Left Recursion found in grammar. -`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) -`)+(`without consuming any Tokens. The grammar path that causes this is: - `+i+` -`)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof iS.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return r}}});var $G=I(sA=>{"use strict";var NEe=sA&&sA.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(sA,"__esModule",{value:!0});sA.GastRefResolverVisitor=sA.resolveGrammar=void 0;var LEe=Tn(),XG=Dt(),TEe=wu();function MEe(t,e){var r=new ZG(t,e);return r.resolveRefs(),r.errors}sA.resolveGrammar=MEe;var ZG=function(t){NEe(e,t);function e(r,i){var n=t.call(this)||this;return n.nameToTopRule=r,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var r=this;(0,XG.forEach)((0,XG.values)(this.nameToTopRule),function(i){r.currTopLevel=i,i.accept(r)})},e.prototype.visitNonTerminal=function(r){var i=this.nameToTopRule[r.nonTerminalName];if(i)r.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,r);this.errors.push({message:n,type:LEe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:r.nonTerminalName})}},e}(TEe.GAstVisitor);sA.GastRefResolverVisitor=ZG});var Vh=I(Br=>{"use strict";var Fl=Br&&Br.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Br,"__esModule",{value:!0});Br.nextPossibleTokensAfter=Br.possiblePathsFrom=Br.NextTerminalAfterAtLeastOneSepWalker=Br.NextTerminalAfterAtLeastOneWalker=Br.NextTerminalAfterManySepWalker=Br.NextTerminalAfterManyWalker=Br.AbstractNextTerminalAfterProductionWalker=Br.NextAfterTokenWalker=Br.AbstractNextPossibleTokensWalker=void 0;var ej=IE(),xt=Dt(),OEe=tS(),Et=hn(),tj=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topProd=r,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,xt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,xt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,i){i===void 0&&(i=[]),this.found||t.prototype.walk.call(this,r,i)},e.prototype.walkProdRef=function(r,i,n){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(r.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,xt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(ej.RestWalker);Br.AbstractNextPossibleTokensWalker=tj;var KEe=function(t){Fl(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(r,i,n){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new Et.Alternative({definition:s});this.possibleTokTypes=(0,OEe.first)(o),this.found=!0}},e}(tj);Br.NextAfterTokenWalker=KEe;var zh=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topRule=r,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(ej.RestWalker);Br.AbstractNextTerminalAfterProductionWalker=zh;var UEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkMany.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManyWalker=UEe;var HEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkManySep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManySepWalker=HEe;var GEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOne.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneWalker=GEe;var jEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneSepWalker=jEe;function rj(t,e,r){r===void 0&&(r=[]),r=(0,xt.cloneArr)(r);var i=[],n=0;function s(c){return c.concat((0,xt.drop)(t,n+1))}function o(c){var u=rj(s(c),e,r);return i.concat(u)}for(;r.length=0;W--){var X=E.definition[W],F={idx:p,def:X.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m};g.push(F),g.push(o)}else if(E instanceof Et.Alternative)g.push({idx:p,def:E.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m});else if(E instanceof Et.Rule)g.push(YEe(E,p,d,m));else throw Error("non exhaustive match")}}return u}Br.nextPossibleTokensAfter=qEe;function YEe(t,e,r,i){var n=(0,xt.cloneArr)(r);n.push(t.name);var s=(0,xt.cloneArr)(i);return s.push(1),{idx:e,def:t.definition,ruleStack:n,occurrenceStack:s}}});var _h=I(Gt=>{"use strict";var ij=Gt&&Gt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Gt,"__esModule",{value:!0});Gt.areTokenCategoriesNotUsed=Gt.isStrictPrefixOfPath=Gt.containsPath=Gt.getLookaheadPathsForOptionalProd=Gt.getLookaheadPathsForOr=Gt.lookAheadSequenceFromAlternatives=Gt.buildSingleAlternativeLookaheadFunction=Gt.buildAlternativesLookAheadFunc=Gt.buildLookaheadFuncForOptionalProd=Gt.buildLookaheadFuncForOr=Gt.getProdType=Gt.PROD_TYPE=void 0;var _t=Dt(),nj=Vh(),JEe=IE(),bE=yu(),oA=hn(),WEe=wu(),zr;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(zr=Gt.PROD_TYPE||(Gt.PROD_TYPE={}));function zEe(t){if(t instanceof oA.Option)return zr.OPTION;if(t instanceof oA.Repetition)return zr.REPETITION;if(t instanceof oA.RepetitionMandatory)return zr.REPETITION_MANDATORY;if(t instanceof oA.RepetitionMandatoryWithSeparator)return zr.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof oA.RepetitionWithSeparator)return zr.REPETITION_WITH_SEPARATOR;if(t instanceof oA.Alternation)return zr.ALTERNATION;throw Error("non exhaustive match")}Gt.getProdType=zEe;function VEe(t,e,r,i,n,s){var o=sj(t,e,r),a=nS(o)?bE.tokenStructuredMatcherNoCategories:bE.tokenStructuredMatcher;return s(o,i,a,n)}Gt.buildLookaheadFuncForOr=VEe;function _Ee(t,e,r,i,n,s){var o=oj(t,e,n,r),a=nS(o)?bE.tokenStructuredMatcherNoCategories:bE.tokenStructuredMatcher;return s(o[0],a,i)}Gt.buildLookaheadFuncForOptionalProd=_Ee;function XEe(t,e,r,i){var n=t.length,s=(0,_t.every)(t,function(l){return(0,_t.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,_t.map)(l,function(b){return b.GATE}),u=0;u{"use strict";var aS=Mt&&Mt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Mt,"__esModule",{value:!0});Mt.checkPrefixAlternativesAmbiguities=Mt.validateSomeNonEmptyLookaheadPath=Mt.validateTooManyAlts=Mt.RepetionCollector=Mt.validateAmbiguousAlternationAlternatives=Mt.validateEmptyOrAlternative=Mt.getFirstNoneTerminal=Mt.validateNoLeftRecursion=Mt.validateRuleIsOverridden=Mt.validateRuleDoesNotAlreadyExist=Mt.OccurrenceValidationCollector=Mt.identifyProductionForDuplicates=Mt.validateGrammar=void 0;var jt=Dt(),Cr=Dt(),uo=Tn(),AS=Jh(),Qu=_h(),rye=Vh(),Fs=hn(),lS=wu();function sye(t,e,r,i,n){var s=jt.map(t,function(h){return iye(h,i)}),o=jt.map(t,function(h){return cS(h,h,i)}),a=[],l=[],c=[];(0,Cr.every)(o,Cr.isEmpty)&&(a=(0,Cr.map)(t,function(h){return uj(h,i)}),l=(0,Cr.map)(t,function(h){return gj(h,e,i)}),c=hj(t,e,i));var u=nye(t,r,i),g=(0,Cr.map)(t,function(h){return fj(h,i)}),f=(0,Cr.map)(t,function(h){return cj(h,t,n,i)});return jt.flatten(s.concat(c,o,a,l,u,g,f))}Mt.validateGrammar=sye;function iye(t,e){var r=new Cj;t.accept(r);var i=r.allProductions,n=jt.groupBy(i,pj),s=jt.pick(n,function(a){return a.length>1}),o=jt.map(jt.values(s),function(a){var l=jt.first(a),c=e.buildDuplicateFoundError(t,a),u=(0,AS.getProductionDslName)(l),g={message:c,type:uo.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:u,occurrence:l.idx},f=dj(l);return f&&(g.parameter=f),g});return o}function pj(t){return(0,AS.getProductionDslName)(t)+"_#_"+t.idx+"_#_"+dj(t)}Mt.identifyProductionForDuplicates=pj;function dj(t){return t instanceof Fs.Terminal?t.terminalType.name:t instanceof Fs.NonTerminal?t.nonTerminalName:""}var Cj=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitNonTerminal=function(r){this.allProductions.push(r)},e.prototype.visitOption=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e.prototype.visitAlternation=function(r){this.allProductions.push(r)},e.prototype.visitTerminal=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.OccurrenceValidationCollector=Cj;function cj(t,e,r,i){var n=[],s=(0,Cr.reduce)(e,function(a,l){return l.name===t.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});n.push({message:o,type:uo.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return n}Mt.validateRuleDoesNotAlreadyExist=cj;function oye(t,e,r){var i=[],n;return jt.contains(e,t)||(n="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+r+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:uo.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),i}Mt.validateRuleIsOverridden=oye;function cS(t,e,r,i){i===void 0&&(i=[]);var n=[],s=Xh(e.definition);if(jt.isEmpty(s))return[];var o=t.name,a=jt.contains(s,t);a&&n.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:i}),type:uo.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=jt.difference(s,i.concat([t])),c=jt.map(l,function(u){var g=jt.cloneArr(i);return g.push(u),cS(t,u,r,g)});return n.concat(jt.flatten(c))}Mt.validateNoLeftRecursion=cS;function Xh(t){var e=[];if(jt.isEmpty(t))return e;var r=jt.first(t);if(r instanceof Fs.NonTerminal)e.push(r.referencedRule);else if(r instanceof Fs.Alternative||r instanceof Fs.Option||r instanceof Fs.RepetitionMandatory||r instanceof Fs.RepetitionMandatoryWithSeparator||r instanceof Fs.RepetitionWithSeparator||r instanceof Fs.Repetition)e=e.concat(Xh(r.definition));else if(r instanceof Fs.Alternation)e=jt.flatten(jt.map(r.definition,function(o){return Xh(o.definition)}));else if(!(r instanceof Fs.Terminal))throw Error("non exhaustive match");var i=(0,AS.isOptionalProd)(r),n=t.length>1;if(i&&n){var s=jt.drop(t);return e.concat(Xh(s))}else return e}Mt.getFirstNoneTerminal=Xh;var uS=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(lS.GAstVisitor);function uj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){var a=jt.dropRight(o.definition),l=jt.map(a,function(c,u){var g=(0,rye.nextPossibleTokensAfter)([c],[],null,1);return jt.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:u}),type:uo.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(jt.compact(l))},[]);return n}Mt.validateEmptyOrAlternative=uj;function gj(t,e,r){var i=new uS;t.accept(i);var n=i.alternations;n=(0,Cr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=jt.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,Qu.getLookaheadPathsForOr)(l,t,c,a),g=aye(u,a,t,r),f=mj(u,a,t,r);return o.concat(g,f)},[]);return s}Mt.validateAmbiguousAlternationAlternatives=gj;var Ij=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.RepetionCollector=Ij;function fj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:uo.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),s},[]);return n}Mt.validateTooManyAlts=fj;function hj(t,e,r){var i=[];return(0,Cr.forEach)(t,function(n){var s=new Ij;n.accept(s);var o=s.allProductions;(0,Cr.forEach)(o,function(a){var l=(0,Qu.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,Qu.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,Cr.isEmpty)((0,Cr.flatten)(f))){var h=r.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:uo.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}Mt.validateSomeNonEmptyLookaheadPath=hj;function aye(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,Cr.forEach)(l,function(u){var g=[c];(0,Cr.forEach)(t,function(f,h){c!==h&&(0,Qu.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,Qu.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=jt.map(s,function(a){var l=(0,Cr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:uo.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function mj(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(o,a,l){var c=(0,Cr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,Cr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,Cr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.validateGrammar=bu.resolveGrammar=void 0;var fS=Dt(),Aye=$G(),lye=gS(),Ej=Wh();function cye(t){t=(0,fS.defaults)(t,{errMsgProvider:Ej.defaultGrammarResolverErrorProvider});var e={};return(0,fS.forEach)(t.rules,function(r){e[r.name]=r}),(0,Aye.resolveGrammar)(e,t.errMsgProvider)}bu.resolveGrammar=cye;function uye(t){return t=(0,fS.defaults)(t,{errMsgProvider:Ej.defaultGrammarValidatorErrorProvider}),(0,lye.validateGrammar)(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}bu.validateGrammar=uye});var vu=I(dn=>{"use strict";var Zh=dn&&dn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.EarlyExitException=dn.NotAllInputParsedException=dn.NoViableAltException=dn.MismatchedTokenException=dn.isRecognitionException=void 0;var gye=Dt(),wj="MismatchedTokenException",Bj="NoViableAltException",Qj="EarlyExitException",bj="NotAllInputParsedException",vj=[wj,Bj,Qj,bj];Object.freeze(vj);function fye(t){return(0,gye.contains)(vj,t.name)}dn.isRecognitionException=fye;var vE=function(t){Zh(e,t);function e(r,i){var n=this.constructor,s=t.call(this,r)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),hye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=wj,s}return e}(vE);dn.MismatchedTokenException=hye;var pye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Bj,s}return e}(vE);dn.NoViableAltException=pye;var dye=function(t){Zh(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.name=bj,n}return e}(vE);dn.NotAllInputParsedException=dye;var Cye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Qj,s}return e}(vE);dn.EarlyExitException=Cye});var pS=I(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.attemptInRepetitionRecovery=xi.Recoverable=xi.InRuleRecoveryException=xi.IN_RULE_RECOVERY_EXCEPTION=xi.EOF_FOLLOW_KEY=void 0;var SE=nA(),ts=Dt(),mye=vu(),Iye=rS(),Eye=Tn();xi.EOF_FOLLOW_KEY={};xi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function hS(t){this.name=xi.IN_RULE_RECOVERY_EXCEPTION,this.message=t}xi.InRuleRecoveryException=hS;hS.prototype=Error.prototype;var yye=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ts.has)(e,"recoveryEnabled")?e.recoveryEnabled:Eye.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Sj)},t.prototype.getTokenToInsert=function(e){var r=(0,SE.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),d=new mye.MismatchedTokenException(p,u,s.LA(0));d.resyncedTokens=(0,ts.dropRight)(l),s.SAVE_ERROR(d)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,r);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,i){return!(i===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var i=this.getCurrentGrammarPath(e,r),n=this.getNextPossibleTokenTypes(i);return n},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new hS("sad sad panda")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ts.isEmpty)(r))return!1;var n=this.LA(1),s=(0,ts.find)(r,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(r);return(0,ts.contains)(i,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),i=2;;){var n=r.tokenType;if((0,ts.contains)(e,n))return n;r=this.LA(i),i++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return xi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(i)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ts.map)(r,function(n,s){return s===0?xi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(r[s-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=(0,ts.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ts.flatten)(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===xi.EOF_FOLLOW_KEY)return[SE.EOF];var r=e.ruleName+e.idxInCallingRule+Iye.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,SE.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,r);return(0,ts.dropRight)(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,i,n,s,o,a){},t.prototype.getCurrentGrammarPath=function(e,r){var i=this.getHumanReadableRuleStack(),n=(0,ts.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:r};return s},t.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ts.map)(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();xi.Recoverable=yye;function Sj(t,e,r,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=SE.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(t,e,r,f)}xi.attemptInRepetitionRecovery=Sj});var xE=I(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.getKeyForAutomaticLookahead=Nt.AT_LEAST_ONE_SEP_IDX=Nt.MANY_SEP_IDX=Nt.AT_LEAST_ONE_IDX=Nt.MANY_IDX=Nt.OPTION_IDX=Nt.OR_IDX=Nt.BITS_FOR_ALT_IDX=Nt.BITS_FOR_RULE_IDX=Nt.BITS_FOR_OCCURRENCE_IDX=Nt.BITS_FOR_METHOD_TYPE=void 0;Nt.BITS_FOR_METHOD_TYPE=4;Nt.BITS_FOR_OCCURRENCE_IDX=8;Nt.BITS_FOR_RULE_IDX=12;Nt.BITS_FOR_ALT_IDX=8;Nt.OR_IDX=1<{"use strict";Object.defineProperty(kE,"__esModule",{value:!0});kE.LooksAhead=void 0;var Aa=_h(),Ns=Dt(),xj=Tn(),la=xE(),Nl=Jh(),Bye=function(){function t(){}return t.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Ns.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:xj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Ns.has)(e,"maxLookahead")?e.maxLookahead:xj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Ns.isES2015MapSupported)()?new Map:[],(0,Ns.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;(0,Ns.forEach)(e,function(i){r.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Nl.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Ns.forEach)(s,function(g){var f=g.idx===0?"":g.idx;r.TRACE_INIT(""+(0,Nl.getProductionDslName)(g)+f,function(){var h=(0,Aa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||r.maxLookahead,g.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),p=(0,la.getKeyForAutomaticLookahead)(r.fullRuleNameToShort[i.name],la.OR_IDX,g.idx);r.setLaFuncCache(p,h)})}),(0,Ns.forEach)(o,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_IDX,Aa.PROD_TYPE.REPETITION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(a,function(g){r.computeLookaheadFunc(i,g.idx,la.OPTION_IDX,Aa.PROD_TYPE.OPTION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(l,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(c,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_SEP_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(u,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_SEP_IDX,Aa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))})})})},t.prototype.computeLookaheadFunc=function(e,r,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(r===0?"":r),function(){var l=(0,Aa.buildLookaheadFuncForOptionalProd)(r,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,la.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,r);a.setLaFuncCache(c,l)})},t.prototype.lookAheadBuilderForOptional=function(e,r,i){return(0,Aa.buildSingleAlternativeLookaheadFunction)(e,r,i)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,i,n){return(0,Aa.buildAlternativesLookAheadFunc)(e,r,i,n)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var i=this.getLastExplicitRuleShortName();return(0,la.getKeyForAutomaticLookahead)(i,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();kE.LooksAhead=Bye});var Pj=I(go=>{"use strict";Object.defineProperty(go,"__esModule",{value:!0});go.addNoneTerminalToCst=go.addTerminalToCst=go.setNodeLocationFull=go.setNodeLocationOnlyOffset=void 0;function Qye(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";Object.defineProperty(aA,"__esModule",{value:!0});aA.defineNameProp=aA.functionName=aA.classNameFromInstance=void 0;var xye=Dt();function kye(t){return Dj(t.constructor)}aA.classNameFromInstance=kye;var Rj="name";function Dj(t){var e=t.name;return e||"anonymous"}aA.functionName=Dj;function Pye(t,e){var r=Object.getOwnPropertyDescriptor(t,Rj);return(0,xye.isUndefined)(r)||r.configurable?(Object.defineProperty(t,Rj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}aA.defineNameProp=Pye});var Mj=I(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.validateRedundantMethods=mi.validateMissingCstMethods=mi.validateVisitor=mi.CstVisitorDefinitionError=mi.createBaseVisitorConstructorWithDefaults=mi.createBaseSemanticVisitorConstructor=mi.defaultVisit=void 0;var rs=Dt(),$h=dS();function Fj(t,e){for(var r=(0,rs.keys)(t),i=r.length,n=0;n: - `+(""+s.join(` - -`).replace(/\n/g,` - `)))}}};return r.prototype=i,r.prototype.constructor=r,r._RULE_NAMES=e,r}mi.createBaseSemanticVisitorConstructor=Dye;function Rye(t,e,r){var i=function(){};(0,$h.defineNameProp)(i,t+"BaseSemanticsWithDefaults");var n=Object.create(r.prototype);return(0,rs.forEach)(e,function(s){n[s]=Fj}),i.prototype=n,i.prototype.constructor=i,i}mi.createBaseVisitorConstructorWithDefaults=Rye;var CS;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(CS=mi.CstVisitorDefinitionError||(mi.CstVisitorDefinitionError={}));function Nj(t,e){var r=Lj(t,e),i=Tj(t,e);return r.concat(i)}mi.validateVisitor=Nj;function Lj(t,e){var r=(0,rs.map)(e,function(i){if(!(0,rs.isFunction)(t[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+" CST Visitor.",type:CS.MISSING_METHOD,methodName:i}});return(0,rs.compact)(r)}mi.validateMissingCstMethods=Lj;var Fye=["constructor","visit","validateVisitor"];function Tj(t,e){var r=[];for(var i in t)(0,rs.isFunction)(t[i])&&!(0,rs.contains)(Fye,i)&&!(0,rs.contains)(e,i)&&r.push({msg:"Redundant visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`,type:CS.REDUNDANT_METHOD,methodName:i});return r}mi.validateRedundantMethods=Tj});var Kj=I(PE=>{"use strict";Object.defineProperty(PE,"__esModule",{value:!0});PE.TreeBuilder=void 0;var Su=Pj(),Ur=Dt(),Oj=Mj(),Nye=Tn(),Lye=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Ur.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:Nye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Ur.NOOP,this.cstFinallyStateUpdate=Ur.NOOP,this.cstPostTerminal=Ur.NOOP,this.cstPostNonTerminal=Ur.NOOP,this.cstPostRule=Ur.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationFull,this.setNodeLocationFromNode=Su.setNodeLocationFull,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=Su.setNodeLocationOnlyOffset,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=Ur.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,r){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?(i.endOffset=r.endOffset,i.endLine=r.endLine,i.endColumn=r.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?i.endOffset=r.endOffset:i.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addTerminalToCst)(i,r,e),this.setNodeLocationFromToken(i.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addNoneTerminalToCst)(i,r,e),this.setNodeLocationFromNode(i.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if((0,Ur.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,Oj.createBaseSemanticVisitorConstructor)(this.className,(0,Ur.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Ur.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,Oj.createBaseVisitorConstructorWithDefaults)(this.className,(0,Ur.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();PE.TreeBuilder=Lye});var Hj=I(DE=>{"use strict";Object.defineProperty(DE,"__esModule",{value:!0});DE.LexerAdapter=void 0;var Uj=Tn(),Tye=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Uj.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?Uj.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();DE.LexerAdapter=Tye});var jj=I(RE=>{"use strict";Object.defineProperty(RE,"__esModule",{value:!0});RE.RecognizerApi=void 0;var Gj=Dt(),Mye=vu(),mS=Tn(),Oye=Wh(),Kye=gS(),Uye=hn(),Hye=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,i){return this.consumeInternal(r,e,i)},t.prototype.subrule=function(e,r,i){return this.subruleInternal(r,e,i)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,i){if(i===void 0&&(i=mS.DEFAULT_RULE_CONFIG),(0,Gj.contains)(this.definedRulesNames,e)){var n=Oye.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:mS.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,i);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,i){i===void 0&&(i=mS.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,Kye.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,r,i);return this[e]=s,s},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,r),!0}catch(n){if((0,Mye.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return(0,Uye.serializeGrammar)((0,Gj.values)(this.gastProductionsCache))},t}();RE.RecognizerApi=Hye});var Wj=I(FE=>{"use strict";Object.defineProperty(FE,"__esModule",{value:!0});FE.RecognizerEngine=void 0;var Ir=Dt(),Mn=xE(),NE=vu(),Yj=_h(),xu=Vh(),qj=Tn(),Gye=pS(),Jj=nA(),ep=yu(),jye=dS(),Yye=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,r){if(this.className=(0,jye.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=ep.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Ir.has)(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if((0,Ir.isArray)(e)){if((0,Ir.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if((0,Ir.isArray)(e))this.tokensMap=(0,Ir.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Ir.has)(e,"modes")&&(0,Ir.every)((0,Ir.flatten)((0,Ir.values)(e.modes)),ep.isTokenType)){var i=(0,Ir.flatten)((0,Ir.values)(e.modes)),n=(0,Ir.uniq)(i);this.tokensMap=(0,Ir.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Ir.isObject)(e))this.tokensMap=(0,Ir.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Jj.EOF;var s=(0,Ir.every)((0,Ir.values)(e),function(o){return(0,Ir.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?ep.tokenStructuredMatcherNoCategories:ep.tokenStructuredMatcher,(0,ep.augmentTokenTypes)((0,Ir.values)(this.tokensMap))},t.prototype.defineRule=function(e,r,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Ir.has)(i,"resyncEnabled")?i.resyncEnabled:qj.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Ir.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:qj.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<r},t.prototype.orInternal=function(e,r){var i=this.getKeyForAutomaticLookahead(Mn.OR_IDX,r),n=(0,Ir.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new NE.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,r,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,i){throw(0,NE.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:i),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},t.prototype.consumeInternalError=function(e,r,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new NE.MismatchedTokenException(n,r,s))},t.prototype.consumeInternalRecovery=function(e,r,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===Gye.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},t.prototype.saveRecogState=function(){var e=this.errors,r=(0,Ir.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),Jj.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();FE.RecognizerEngine=Yye});var Vj=I(LE=>{"use strict";Object.defineProperty(LE,"__esModule",{value:!0});LE.ErrorHandler=void 0;var IS=vu(),ES=Dt(),zj=_h(),qye=Tn(),Jye=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,ES.has)(e,"errorMessageProvider")?e.errorMessageProvider:qye.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if((0,IS.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,ES.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return(0,ES.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,zj.getLookaheadPathsForOptionalProd)(e,s,r,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new IS.EarlyExitException(u,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,zj.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new IS.NoViableAltException(c,this.LA(1),l))},t}();LE.ErrorHandler=Jye});var Zj=I(TE=>{"use strict";Object.defineProperty(TE,"__esModule",{value:!0});TE.ContentAssist=void 0;var _j=Vh(),Xj=Dt(),Wye=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var i=this.gastProductionsCache[e];if((0,Xj.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,_j.nextPossibleTokensAfter)([i],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=(0,Xj.first)(e.ruleStack),i=this.getGAstProductions(),n=i[r],s=new _j.NextAfterTokenWalker(n,e).startWalking();return s},t}();TE.ContentAssist=Wye});var oY=I(ME=>{"use strict";Object.defineProperty(ME,"__esModule",{value:!0});ME.GastRecorder=void 0;var Cn=Dt(),fo=hn(),zye=Gh(),$j=yu(),eY=nA(),Vye=Tn(),_ye=xE(),OE={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(OE);var tY=!0,rY=Math.pow(2,_ye.BITS_FOR_OCCURRENCE_IDX)-1,iY=(0,eY.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:zye.Lexer.NA});(0,$j.augmentTokenTypes)([iY]);var nY=(0,eY.createTokenInstance)(iY,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(nY);var Xye={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},$ye=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var r=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)r(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var r=0;r<10;r++){var i=r>0?r:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return Vye.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var i=new fo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),r.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(s){throw n}throw n}},t.prototype.optionInternalRecord=function(e,r){return tp.call(this,fo.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatoryWithSeparator,r,e,tY)},t.prototype.manyInternalRecord=function(e,r){tp.call(this,fo.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionWithSeparator,r,e,tY)},t.prototype.orInternalRecord=function(e,r){return Zye.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,i){if(KE(r),!e||(0,Cn.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=e.ruleName,a=new fo.NonTerminal({idx:r,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?Xye:OE},t.prototype.consumeInternalRecord=function(e,r,i){if(KE(r),!(0,$j.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=new fo.Terminal({idx:r,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),nY},t}();ME.GastRecorder=$ye;function tp(t,e,r,i){i===void 0&&(i=!1),KE(r);var n=(0,Cn.peek)(this.recordingProdStack),s=(0,Cn.isFunction)(e)?e:e.DEF,o=new t({definition:[],idx:r});return i&&(o.separator=e.SEP),(0,Cn.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),OE}function Zye(t,e){var r=this;KE(e);var i=(0,Cn.peek)(this.recordingProdStack),n=(0,Cn.isArray)(t)===!1,s=n===!1?t:t.DEF,o=new fo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});(0,Cn.has)(t,"MAX_LOOKAHEAD")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var a=(0,Cn.some)(s,function(l){return(0,Cn.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,Cn.forEach)(s,function(l){var c=new fo.Alternative({definition:[]});o.definition.push(c),(0,Cn.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,Cn.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),r.recordingProdStack.push(c),l.ALT.call(r),r.recordingProdStack.pop()}),OE}function sY(t){return t===0?"":""+t}function KE(t){if(t<0||t>rY){var e=new Error("Invalid DSL Method idx value: <"+t+`> - `+("Idx value must be a none negative value smaller than "+(rY+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var AY=I(UE=>{"use strict";Object.defineProperty(UE,"__esModule",{value:!0});UE.PerformanceTracer=void 0;var aY=Dt(),ewe=Tn(),twe=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if((0,aY.has)(e,"traceInitPerf")){var r=e.traceInitPerf,i=typeof r=="number";this.traceInitMaxIdent=i?r:Infinity,this.traceInitPerf=i?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ewe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,aY.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t}();UE.PerformanceTracer=twe});var lY=I(HE=>{"use strict";Object.defineProperty(HE,"__esModule",{value:!0});HE.applyMixins=void 0;function rwe(t,e){e.forEach(function(r){var i=r.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(t.prototype,n,s):t.prototype[n]=r.prototype[n]}})})}HE.applyMixins=rwe});var Tn=I(or=>{"use strict";var cY=or&&or.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(or,"__esModule",{value:!0});or.EmbeddedActionsParser=or.CstParser=or.Parser=or.EMPTY_ALT=or.ParserDefinitionErrorType=or.DEFAULT_RULE_CONFIG=or.DEFAULT_PARSER_CONFIG=or.END_OF_FILE=void 0;var Wi=Dt(),iwe=VG(),uY=nA(),gY=Wh(),fY=yj(),nwe=pS(),swe=kj(),owe=Kj(),awe=Hj(),Awe=jj(),lwe=Wj(),cwe=Vj(),uwe=Zj(),gwe=oY(),fwe=AY(),hwe=lY();or.END_OF_FILE=(0,uY.createTokenInstance)(uY.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(or.END_OF_FILE);or.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:gY.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});or.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var pwe;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(pwe=or.ParserDefinitionErrorType||(or.ParserDefinitionErrorType={}));function dwe(t){return t===void 0&&(t=void 0),function(){return t}}or.EMPTY_ALT=dwe;var GE=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(r),i.initLexerAdapter(),i.initLooksAhead(r),i.initRecognizerEngine(e,r),i.initRecoverable(r),i.initTreeBuilder(r),i.initContentAssist(),i.initGastRecorder(r),i.initPerformanceTracer(r),(0,Wi.has)(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=(0,Wi.has)(r,"skipValidations")?r.skipValidations:or.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var r;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Wi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Wi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,fY.resolveGrammar)({rules:(0,Wi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Wi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,fY.validateGrammar)({rules:(0,Wi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Wi.values)(e.tokensMap),errMsgProvider:gY.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Wi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,iwe.computeAllProdsFollows)((0,Wi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Wi.values)(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Wi.isEmpty)(e.definitionErrors))throw r=(0,Wi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: - `+r.join(` -------------------------------- -`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();or.Parser=GE;(0,hwe.applyMixins)(GE,[nwe.Recoverable,swe.LooksAhead,owe.TreeBuilder,awe.LexerAdapter,lwe.RecognizerEngine,Awe.RecognizerApi,cwe.ErrorHandler,uwe.ContentAssist,gwe.GastRecorder,fwe.PerformanceTracer]);var Cwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!0,n=t.call(this,r,s)||this,n}return e}(GE);or.CstParser=Cwe;var mwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!1,n=t.call(this,r,s)||this,n}return e}(GE);or.EmbeddedActionsParser=mwe});var pY=I(jE=>{"use strict";Object.defineProperty(jE,"__esModule",{value:!0});jE.createSyntaxDiagramsCode=void 0;var hY=Uv();function Iwe(t,e){var r=e===void 0?{}:e,i=r.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/":i,s=r.css,o=s===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/diagrams.css":s,a=` - - - - - -`,l=` - -`,c=` - - - - -`,u=` -
-`,g=` - -`,f=` - -`;return a+l+c+u+g+f}jE.createSyntaxDiagramsCode=Iwe});var mY=I(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.Parser=He.createSyntaxDiagramsCode=He.clearCache=He.GAstVisitor=He.serializeProduction=He.serializeGrammar=He.Terminal=He.Rule=He.RepetitionWithSeparator=He.RepetitionMandatoryWithSeparator=He.RepetitionMandatory=He.Repetition=He.Option=He.NonTerminal=He.Alternative=He.Alternation=He.defaultLexerErrorProvider=He.NoViableAltException=He.NotAllInputParsedException=He.MismatchedTokenException=He.isRecognitionException=He.EarlyExitException=He.defaultParserErrorProvider=He.tokenName=He.tokenMatcher=He.tokenLabel=He.EOF=He.createTokenInstance=He.createToken=He.LexerDefinitionErrorType=He.Lexer=He.EMPTY_ALT=He.ParserDefinitionErrorType=He.EmbeddedActionsParser=He.CstParser=He.VERSION=void 0;var Ewe=Uv();Object.defineProperty(He,"VERSION",{enumerable:!0,get:function(){return Ewe.VERSION}});var YE=Tn();Object.defineProperty(He,"CstParser",{enumerable:!0,get:function(){return YE.CstParser}});Object.defineProperty(He,"EmbeddedActionsParser",{enumerable:!0,get:function(){return YE.EmbeddedActionsParser}});Object.defineProperty(He,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return YE.ParserDefinitionErrorType}});Object.defineProperty(He,"EMPTY_ALT",{enumerable:!0,get:function(){return YE.EMPTY_ALT}});var dY=Gh();Object.defineProperty(He,"Lexer",{enumerable:!0,get:function(){return dY.Lexer}});Object.defineProperty(He,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return dY.LexerDefinitionErrorType}});var ku=nA();Object.defineProperty(He,"createToken",{enumerable:!0,get:function(){return ku.createToken}});Object.defineProperty(He,"createTokenInstance",{enumerable:!0,get:function(){return ku.createTokenInstance}});Object.defineProperty(He,"EOF",{enumerable:!0,get:function(){return ku.EOF}});Object.defineProperty(He,"tokenLabel",{enumerable:!0,get:function(){return ku.tokenLabel}});Object.defineProperty(He,"tokenMatcher",{enumerable:!0,get:function(){return ku.tokenMatcher}});Object.defineProperty(He,"tokenName",{enumerable:!0,get:function(){return ku.tokenName}});var ywe=Wh();Object.defineProperty(He,"defaultParserErrorProvider",{enumerable:!0,get:function(){return ywe.defaultParserErrorProvider}});var rp=vu();Object.defineProperty(He,"EarlyExitException",{enumerable:!0,get:function(){return rp.EarlyExitException}});Object.defineProperty(He,"isRecognitionException",{enumerable:!0,get:function(){return rp.isRecognitionException}});Object.defineProperty(He,"MismatchedTokenException",{enumerable:!0,get:function(){return rp.MismatchedTokenException}});Object.defineProperty(He,"NotAllInputParsedException",{enumerable:!0,get:function(){return rp.NotAllInputParsedException}});Object.defineProperty(He,"NoViableAltException",{enumerable:!0,get:function(){return rp.NoViableAltException}});var wwe=_v();Object.defineProperty(He,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return wwe.defaultLexerErrorProvider}});var ho=hn();Object.defineProperty(He,"Alternation",{enumerable:!0,get:function(){return ho.Alternation}});Object.defineProperty(He,"Alternative",{enumerable:!0,get:function(){return ho.Alternative}});Object.defineProperty(He,"NonTerminal",{enumerable:!0,get:function(){return ho.NonTerminal}});Object.defineProperty(He,"Option",{enumerable:!0,get:function(){return ho.Option}});Object.defineProperty(He,"Repetition",{enumerable:!0,get:function(){return ho.Repetition}});Object.defineProperty(He,"RepetitionMandatory",{enumerable:!0,get:function(){return ho.RepetitionMandatory}});Object.defineProperty(He,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionMandatoryWithSeparator}});Object.defineProperty(He,"RepetitionWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionWithSeparator}});Object.defineProperty(He,"Rule",{enumerable:!0,get:function(){return ho.Rule}});Object.defineProperty(He,"Terminal",{enumerable:!0,get:function(){return ho.Terminal}});var CY=hn();Object.defineProperty(He,"serializeGrammar",{enumerable:!0,get:function(){return CY.serializeGrammar}});Object.defineProperty(He,"serializeProduction",{enumerable:!0,get:function(){return CY.serializeProduction}});var Bwe=wu();Object.defineProperty(He,"GAstVisitor",{enumerable:!0,get:function(){return Bwe.GAstVisitor}});function Qwe(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. - It performs no action other than printing this message. - Please avoid using it as it will be completely removed in the future`)}He.clearCache=Qwe;var bwe=pY();Object.defineProperty(He,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return bwe.createSyntaxDiagramsCode}});var vwe=function(){function t(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. -See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return t}();He.Parser=vwe});var yY=I((Trt,IY)=>{var qE=mY(),ca=qE.createToken,EY=qE.tokenMatcher,yS=qE.Lexer,Swe=qE.EmbeddedActionsParser;IY.exports=t=>{let e=ca({name:"LogicalOperator",pattern:yS.NA}),r=ca({name:"Or",pattern:/\|/,categories:e}),i=ca({name:"Xor",pattern:/\^/,categories:e}),n=ca({name:"And",pattern:/&/,categories:e}),s=ca({name:"Not",pattern:/!/}),o=ca({name:"LParen",pattern:/\(/}),a=ca({name:"RParen",pattern:/\)/}),l=ca({name:"Query",pattern:t}),u=[ca({name:"WhiteSpace",pattern:/\s+/,group:yS.SKIPPED}),r,i,n,o,a,s,e,l],g=new yS(u);class f extends Swe{constructor(p){super(u);this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let m=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let E=m,B=this.CONSUME(e),b=this.SUBRULE2(this.atomicExpression);EY(B,r)?m=R=>E(R)||b(R):EY(B,i)?m=R=>!!(E(R)^b(R)):m=R=>E(R)&&b(R)}),m}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:d}=this.CONSUME(l);return m=>m(d)}},{ALT:()=>{this.CONSUME(s);let d=this.SUBRULE(this.atomicExpression);return m=>!d(m)}}])),this.RULE("parenthesisExpression",()=>{let d;return this.CONSUME(o),d=this.SUBRULE(this.expression),this.CONSUME(a),d}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var wY=I(JE=>{var xwe=yY();JE.makeParser=(t=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:r}=xwe(t),i=new r;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};JE.parse=JE.makeParser()});var QY=I((Ort,BY)=>{"use strict";BY.exports=(...t)=>[...new Set([].concat(...t))]});var wS=I((Krt,bY)=>{"use strict";var kwe=require("stream"),vY=kwe.PassThrough,Pwe=Array.prototype.slice;bY.exports=Dwe;function Dwe(){let t=[],e=!1,r=Pwe.call(arguments),i=r[r.length-1];i&&!Array.isArray(i)&&i.pipe==null?r.pop():i={};let n=i.end!==!1;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let s=vY(i);function o(){for(let c=0,u=arguments.length;c0||(e=!1,a())}function f(h){function p(){h.removeListener("merge2UnpipeEnd",p),h.removeListener("end",p),g()}if(h._readableState.endEmitted)return g();h.on("merge2UnpipeEnd",p),h.on("end",p),h.pipe(s,{end:!1}),h.resume()}for(let h=0;h{"use strict";Object.defineProperty(WE,"__esModule",{value:!0});function Rwe(t){return t.reduce((e,r)=>[].concat(e,r),[])}WE.flatten=Rwe;function Fwe(t,e){let r=[[]],i=0;for(let n of t)e(n)?(i++,r[i]=[]):r[i].push(n);return r}WE.splitWhen=Fwe});var kY=I(BS=>{"use strict";Object.defineProperty(BS,"__esModule",{value:!0});function Nwe(t){return t.code==="ENOENT"}BS.isEnoentCodeError=Nwe});var DY=I(QS=>{"use strict";Object.defineProperty(QS,"__esModule",{value:!0});var PY=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Lwe(t,e){return new PY(t,e)}QS.createDirentFromStats=Lwe});var RY=I(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});var Twe=require("path"),Mwe=2,Owe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function Kwe(t){return t.replace(/\\/g,"/")}Pu.unixify=Kwe;function Uwe(t,e){return Twe.resolve(t,e)}Pu.makeAbsolute=Uwe;function Hwe(t){return t.replace(Owe,"\\$2")}Pu.escape=Hwe;function Gwe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(Mwe)}return t}Pu.removeLeadingDotSegment=Gwe});var NY=I((Yrt,FY)=>{FY.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var TY=I((qrt,LY)=>{var jwe=NY(),Ywe={"{":"}","(":")","[":"]"},qwe=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,Jwe=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;LY.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(jwe(e))return!0;var i=qwe,n;for(r&&r.strict===!1&&(i=Jwe);n=i.exec(e);){if(n[2])return!0;var s=n.index+n[0].length,o=n[1],a=o?Ywe[o]:null;if(o&&a){var l=e.indexOf(a,s);l!==-1&&(s=l+1)}e=e.slice(s)}return!1}});var OY=I((Jrt,MY)=>{"use strict";var Wwe=TY(),zwe=require("path").posix.dirname,Vwe=require("os").platform()==="win32",bS="/",_we=/\\/g,Xwe=/[\{\[].*[\}\]]$/,Zwe=/(^|[^\\])([\{\[]|\([^\)]+$)/,$we=/\\([\!\*\?\|\[\]\(\)\{\}])/g;MY.exports=function(e,r){var i=Object.assign({flipBackslashes:!0},r);i.flipBackslashes&&Vwe&&e.indexOf(bS)<0&&(e=e.replace(_we,bS)),Xwe.test(e)&&(e+=bS),e+="a";do e=zwe(e);while(Wwe(e)||Zwe.test(e));return e.replace($we,"$1")}});var WY=I(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});var eBe=require("path"),tBe=OY(),KY=Nn(),rBe=iv(),UY="**",iBe="\\",nBe=/[*?]|^!/,sBe=/\[.*]/,oBe=/(?:^|[^!*+?@])\(.*\|.*\)/,aBe=/[!*+?@]\(.*\)/,ABe=/{.*(?:,|\.\.).*}/;function GY(t,e={}){return!HY(t,e)}Hr.isStaticPattern=GY;function HY(t,e={}){return!!(e.caseSensitiveMatch===!1||t.includes(iBe)||nBe.test(t)||sBe.test(t)||oBe.test(t)||e.extglob!==!1&&aBe.test(t)||e.braceExpansion!==!1&&ABe.test(t))}Hr.isDynamicPattern=HY;function lBe(t){return zE(t)?t.slice(1):t}Hr.convertToPositivePattern=lBe;function cBe(t){return"!"+t}Hr.convertToNegativePattern=cBe;function zE(t){return t.startsWith("!")&&t[1]!=="("}Hr.isNegativePattern=zE;function jY(t){return!zE(t)}Hr.isPositivePattern=jY;function uBe(t){return t.filter(zE)}Hr.getNegativePatterns=uBe;function gBe(t){return t.filter(jY)}Hr.getPositivePatterns=gBe;function fBe(t){return tBe(t,{flipBackslashes:!1})}Hr.getBaseDirectory=fBe;function hBe(t){return t.includes(UY)}Hr.hasGlobStar=hBe;function YY(t){return t.endsWith("/"+UY)}Hr.endsWithSlashGlobStar=YY;function pBe(t){let e=eBe.basename(t);return YY(t)||GY(e)}Hr.isAffectDepthOfReadingPattern=pBe;function dBe(t){return t.reduce((e,r)=>e.concat(qY(r)),[])}Hr.expandPatternsWithBraceExpansion=dBe;function qY(t){return KY.braces(t,{expand:!0,nodupes:!0})}Hr.expandBraceExpansion=qY;function CBe(t,e){let r=rBe.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.parts.length===0?[t]:r.parts}Hr.getPatternParts=CBe;function JY(t,e){return KY.makeRe(t,e)}Hr.makeRe=JY;function mBe(t,e){return t.map(r=>JY(r,e))}Hr.convertPatternsToRe=mBe;function IBe(t,e){return e.some(r=>r.test(t))}Hr.matchAny=IBe});var VY=I(vS=>{"use strict";Object.defineProperty(vS,"__esModule",{value:!0});var EBe=wS();function yBe(t){let e=EBe(t);return t.forEach(r=>{r.once("error",i=>e.emit("error",i))}),e.once("close",()=>zY(t)),e.once("end",()=>zY(t)),e}vS.merge=yBe;function zY(t){t.forEach(e=>e.emit("close"))}});var _Y=I(VE=>{"use strict";Object.defineProperty(VE,"__esModule",{value:!0});function wBe(t){return typeof t=="string"}VE.isString=wBe;function BBe(t){return t===""}VE.isEmpty=BBe});var ga=I(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});var QBe=xY();ua.array=QBe;var bBe=kY();ua.errno=bBe;var vBe=DY();ua.fs=vBe;var SBe=RY();ua.path=SBe;var xBe=WY();ua.pattern=xBe;var kBe=VY();ua.stream=kBe;var PBe=_Y();ua.string=PBe});var tq=I(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});var Ll=ga();function DBe(t,e){let r=XY(t),i=ZY(t,e.ignore),n=r.filter(l=>Ll.pattern.isStaticPattern(l,e)),s=r.filter(l=>Ll.pattern.isDynamicPattern(l,e)),o=SS(n,i,!1),a=SS(s,i,!0);return o.concat(a)}fa.generate=DBe;function SS(t,e,r){let i=$Y(t);return"."in i?[xS(".",t,e,r)]:eq(i,e,r)}fa.convertPatternsToTasks=SS;function XY(t){return Ll.pattern.getPositivePatterns(t)}fa.getPositivePatterns=XY;function ZY(t,e){return Ll.pattern.getNegativePatterns(t).concat(e).map(Ll.pattern.convertToPositivePattern)}fa.getNegativePatternsAsPositive=ZY;function $Y(t){let e={};return t.reduce((r,i)=>{let n=Ll.pattern.getBaseDirectory(i);return n in r?r[n].push(i):r[n]=[i],r},e)}fa.groupPatternsByBaseDirectory=$Y;function eq(t,e,r){return Object.keys(t).map(i=>xS(i,t[i],e,r))}fa.convertPatternGroupsToTasks=eq;function xS(t,e,r,i){return{dynamic:i,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Ll.pattern.convertToNegativePattern))}}fa.convertPatternGroupToTask=xS});var iq=I(_E=>{"use strict";Object.defineProperty(_E,"__esModule",{value:!0});_E.read=void 0;function RBe(t,e,r){e.fs.lstat(t,(i,n)=>{if(i!==null){rq(r,i);return}if(!n.isSymbolicLink()||!e.followSymbolicLink){kS(r,n);return}e.fs.stat(t,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){rq(r,s);return}kS(r,n);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),kS(r,o)})})}_E.read=RBe;function rq(t,e){t(e)}function kS(t,e){t(null,e)}});var nq=I(XE=>{"use strict";Object.defineProperty(XE,"__esModule",{value:!0});XE.read=void 0;function FBe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let i=e.fs.statSync(t);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw i}}XE.read=FBe});var sq=I(AA=>{"use strict";Object.defineProperty(AA,"__esModule",{value:!0});AA.createFileSystemAdapter=AA.FILE_SYSTEM_ADAPTER=void 0;var ZE=require("fs");AA.FILE_SYSTEM_ADAPTER={lstat:ZE.lstat,stat:ZE.stat,lstatSync:ZE.lstatSync,statSync:ZE.statSync};function NBe(t){return t===void 0?AA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},AA.FILE_SYSTEM_ADAPTER),t)}AA.createFileSystemAdapter=NBe});var aq=I(PS=>{"use strict";Object.defineProperty(PS,"__esModule",{value:!0});var LBe=sq(),oq=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=LBe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e!=null?e:r}};PS.default=oq});var Tl=I(lA=>{"use strict";Object.defineProperty(lA,"__esModule",{value:!0});lA.statSync=lA.stat=lA.Settings=void 0;var Aq=iq(),TBe=nq(),DS=aq();lA.Settings=DS.default;function MBe(t,e,r){if(typeof e=="function"){Aq.read(t,RS(),e);return}Aq.read(t,RS(e),r)}lA.stat=MBe;function OBe(t,e){let r=RS(e);return TBe.read(t,r)}lA.statSync=OBe;function RS(t={}){return t instanceof DS.default?t:new DS.default(t)}});var cq=I((iit,lq)=>{lq.exports=KBe;function KBe(t,e){var r,i,n,s=!0;Array.isArray(t)?(r=[],i=t.length):(n=Object.keys(t),r={},i=n.length);function o(l){function c(){e&&e(l,r),e=null}s?process.nextTick(c):c()}function a(l,c,u){r[l]=u,(--i==0||c)&&o(c)}i?n?n.forEach(function(l){t[l](function(c,u){a(l,c,u)})}):t.forEach(function(l,c){l(function(u,g){a(c,u,g)})}):o(null),s=!1}});var FS=I($E=>{"use strict";Object.defineProperty($E,"__esModule",{value:!0});$E.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var ey=process.versions.node.split(".");if(ey[0]===void 0||ey[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var uq=Number.parseInt(ey[0],10),UBe=Number.parseInt(ey[1],10),gq=10,HBe=10,GBe=uq>gq,jBe=uq===gq&&UBe>=HBe;$E.IS_SUPPORT_READDIR_WITH_FILE_TYPES=GBe||jBe});var hq=I(ty=>{"use strict";Object.defineProperty(ty,"__esModule",{value:!0});ty.createDirentFromStats=void 0;var fq=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function YBe(t,e){return new fq(t,e)}ty.createDirentFromStats=YBe});var NS=I(ry=>{"use strict";Object.defineProperty(ry,"__esModule",{value:!0});ry.fs=void 0;var qBe=hq();ry.fs=qBe});var LS=I(iy=>{"use strict";Object.defineProperty(iy,"__esModule",{value:!0});iy.joinPathSegments=void 0;function JBe(t,e,r){return t.endsWith(r)?t+e:t+r+e}iy.joinPathSegments=JBe});var Eq=I(cA=>{"use strict";Object.defineProperty(cA,"__esModule",{value:!0});cA.readdir=cA.readdirWithFileTypes=cA.read=void 0;var WBe=Tl(),pq=cq(),zBe=FS(),dq=NS(),Cq=LS();function VBe(t,e,r){if(!e.stats&&zBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){mq(t,e,r);return}Iq(t,e,r)}cA.read=VBe;function mq(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(a=>({dirent:a,name:a.name,path:Cq.joinPathSegments(t,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){TS(r,s);return}let o=s.map(a=>_Be(a,e));pq(o,(a,l)=>{if(a!==null){ny(r,a);return}TS(r,l)})})}cA.readdirWithFileTypes=mq;function _Be(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(i,n)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){r(i);return}r(null,t);return}t.dirent=dq.fs.createDirentFromStats(t.name,n),r(null,t)})}}function Iq(t,e,r){e.fs.readdir(t,(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(o=>{let a=Cq.joinPathSegments(t,o,e.pathSegmentSeparator);return l=>{WBe.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let g={name:o,path:a,dirent:dq.fs.createDirentFromStats(o,u)};e.stats&&(g.stats=u),l(null,g)})}});pq(s,(o,a)=>{if(o!==null){ny(r,o);return}TS(r,a)})})}cA.readdir=Iq;function ny(t,e){t(e)}function TS(t,e){t(null,e)}});var bq=I(uA=>{"use strict";Object.defineProperty(uA,"__esModule",{value:!0});uA.readdir=uA.readdirWithFileTypes=uA.read=void 0;var XBe=Tl(),ZBe=FS(),yq=NS(),wq=LS();function $Be(t,e){return!e.stats&&ZBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Bq(t,e):Qq(t,e)}uA.read=$Be;function Bq(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(i=>{let n={dirent:i,name:i.name,path:wq.joinPathSegments(t,i.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(n.path);n.dirent=yq.fs.createDirentFromStats(n.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return n})}uA.readdirWithFileTypes=Bq;function Qq(t,e){return e.fs.readdirSync(t).map(i=>{let n=wq.joinPathSegments(t,i,e.pathSegmentSeparator),s=XBe.statSync(n,e.fsStatSettings),o={name:i,path:n,dirent:yq.fs.createDirentFromStats(i,s)};return e.stats&&(o.stats=s),o})}uA.readdir=Qq});var vq=I(gA=>{"use strict";Object.defineProperty(gA,"__esModule",{value:!0});gA.createFileSystemAdapter=gA.FILE_SYSTEM_ADAPTER=void 0;var Du=require("fs");gA.FILE_SYSTEM_ADAPTER={lstat:Du.lstat,stat:Du.stat,lstatSync:Du.lstatSync,statSync:Du.statSync,readdir:Du.readdir,readdirSync:Du.readdirSync};function e0e(t){return t===void 0?gA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},gA.FILE_SYSTEM_ADAPTER),t)}gA.createFileSystemAdapter=e0e});var xq=I(MS=>{"use strict";Object.defineProperty(MS,"__esModule",{value:!0});var t0e=require("path"),r0e=Tl(),i0e=vq(),Sq=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=i0e.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,t0e.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new r0e.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};MS.default=Sq});var sy=I(fA=>{"use strict";Object.defineProperty(fA,"__esModule",{value:!0});fA.Settings=fA.scandirSync=fA.scandir=void 0;var kq=Eq(),n0e=bq(),OS=xq();fA.Settings=OS.default;function s0e(t,e,r){if(typeof e=="function"){kq.read(t,KS(),e);return}kq.read(t,KS(e),r)}fA.scandir=s0e;function o0e(t,e){let r=KS(e);return n0e.read(t,r)}fA.scandirSync=o0e;function KS(t={}){return t instanceof OS.default?t:new OS.default(t)}});var Dq=I((fit,Pq)=>{"use strict";function a0e(t){var e=new t,r=e;function i(){var s=e;return s.next?e=s.next:(e=new t,r=e),s.next=null,s}function n(s){r.next=s,r=s}return{get:i,release:n}}Pq.exports=a0e});var Fq=I((hit,US)=>{"use strict";var A0e=Dq();function Rq(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var i=A0e(l0e),n=null,s=null,o=0,a=null,l={push:d,drain:po,saturated:po,pause:u,paused:!1,concurrency:r,running:c,resume:h,idle:p,length:g,getQueue:f,unshift:m,empty:po,kill:B,killAndDrain:b,error:R};return l;function c(){return o}function u(){l.paused=!0}function g(){for(var H=n,L=0;H;)H=H.next,L++;return L}function f(){for(var H=n,L=[];H;)L.push(H.value),H=H.next;return L}function h(){if(!!l.paused){l.paused=!1;for(var H=0;H{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});Co.joinPathSegments=Co.replacePathSegmentSeparator=Co.isAppliedFilter=Co.isFatalError=void 0;function u0e(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Co.isFatalError=u0e;function g0e(t,e){return t===null||t(e)}Co.isAppliedFilter=g0e;function f0e(t,e){return t.split(/[/\\]/).join(e)}Co.replacePathSegmentSeparator=f0e;function h0e(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Co.joinPathSegments=h0e});var GS=I(HS=>{"use strict";Object.defineProperty(HS,"__esModule",{value:!0});var p0e=oy(),Nq=class{constructor(e,r){this._root=e,this._settings=r,this._root=p0e.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};HS.default=Nq});var YS=I(jS=>{"use strict";Object.defineProperty(jS,"__esModule",{value:!0});var d0e=require("events"),C0e=sy(),m0e=Fq(),ay=oy(),I0e=GS(),Lq=class extends I0e.default{constructor(e,r){super(e,r);this._settings=r,this._scandir=C0e.scandir,this._emitter=new d0e.EventEmitter,this._queue=m0e(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let i={directory:e,base:r};this._queue.push(i,n=>{n!==null&&this._handleError(n)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(i,n)=>{if(i!==null){r(i,void 0);return}for(let s of n)this._handleEntry(s,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!ay.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let i=e.path;r!==void 0&&(e.path=ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),ay.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};jS.default=Lq});var Mq=I(qS=>{"use strict";Object.defineProperty(qS,"__esModule",{value:!0});var E0e=YS(),Tq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new E0e.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{y0e(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{w0e(e,[...this._storage])}),this._reader.read()}};qS.default=Tq;function y0e(t,e){t(e)}function w0e(t,e){t(null,e)}});var Kq=I(JS=>{"use strict";Object.defineProperty(JS,"__esModule",{value:!0});var B0e=require("stream"),Q0e=YS(),Oq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Q0e.default(this._root,this._settings),this._stream=new B0e.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};JS.default=Oq});var Hq=I(WS=>{"use strict";Object.defineProperty(WS,"__esModule",{value:!0});var b0e=sy(),Ay=oy(),v0e=GS(),Uq=class extends v0e.default{constructor(){super(...arguments);this._scandir=b0e.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let n of i)this._handleEntry(n,r)}catch(i){this._handleError(i)}}_handleError(e){if(!!Ay.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let i=e.path;r!==void 0&&(e.path=Ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),Ay.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&Ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_pushToStorage(e){this._storage.add(e)}};WS.default=Uq});var jq=I(zS=>{"use strict";Object.defineProperty(zS,"__esModule",{value:!0});var S0e=Hq(),Gq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new S0e.default(this._root,this._settings)}read(){return this._reader.read()}};zS.default=Gq});var qq=I(VS=>{"use strict";Object.defineProperty(VS,"__esModule",{value:!0});var x0e=require("path"),k0e=sy(),Yq=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,x0e.sep),this.fsScandirSettings=new k0e.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};VS.default=Yq});var XS=I(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});mo.Settings=mo.walkStream=mo.walkSync=mo.walk=void 0;var Jq=Mq(),P0e=Kq(),D0e=jq(),_S=qq();mo.Settings=_S.default;function R0e(t,e,r){if(typeof e=="function"){new Jq.default(t,ly()).read(e);return}new Jq.default(t,ly(e)).read(r)}mo.walk=R0e;function F0e(t,e){let r=ly(e);return new D0e.default(t,r).read()}mo.walkSync=F0e;function N0e(t,e){let r=ly(e);return new P0e.default(t,r).read()}mo.walkStream=N0e;function ly(t={}){return t instanceof _S.default?t:new _S.default(t)}});var $S=I(ZS=>{"use strict";Object.defineProperty(ZS,"__esModule",{value:!0});var L0e=require("path"),T0e=Tl(),Wq=ga(),zq=class{constructor(e){this._settings=e,this._fsStatSettings=new T0e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return L0e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let i={name:r,path:r,dirent:Wq.fs.createDirentFromStats(r,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!Wq.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};ZS.default=zq});var tx=I(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var M0e=require("stream"),O0e=Tl(),K0e=XS(),U0e=$S(),Vq=class extends U0e.default{constructor(){super(...arguments);this._walkStream=K0e.walkStream,this._stat=O0e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let i=e.map(this._getFullEntryPath,this),n=new M0e.PassThrough({objectMode:!0});n._write=(s,o,a)=>this._getEntry(i[s],e[s],r).then(l=>{l!==null&&r.entryFilter(l)&&n.push(l),s===i.length-1&&n.end(),a()}).catch(a);for(let s=0;sthis._makeEntry(n,r)).catch(n=>{if(i.errorFilter(n))return null;throw n})}_getStat(e){return new Promise((r,i)=>{this._stat(e,this._fsStatSettings,(n,s)=>n===null?r(s):i(n))})}};ex.default=Vq});var Xq=I(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var Ru=ga(),_q=class{constructor(e,r,i){this._patterns=e,this._settings=r,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){let e=Ru.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let i=this._getPatternSegments(r),n=this._splitSegmentsIntoSections(i);this._storage.push({complete:n.length<=1,pattern:r,segments:i,sections:n})}}_getPatternSegments(e){return Ru.pattern.getPatternParts(e,this._micromatchOptions).map(i=>Ru.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:Ru.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return Ru.array.splitWhen(e,r=>r.dynamic&&Ru.pattern.hasGlobStar(r.pattern))}};rx.default=_q});var $q=I(ix=>{"use strict";Object.defineProperty(ix,"__esModule",{value:!0});var H0e=Xq(),Zq=class extends H0e.default{match(e){let r=e.split("/"),i=r.length,n=this._storage.filter(s=>!s.complete||s.segments.length>i);for(let s of n){let o=s.sections[0];if(!s.complete&&i>o.length||r.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};ix.default=Zq});var tJ=I(nx=>{"use strict";Object.defineProperty(nx,"__esModule",{value:!0});var cy=ga(),G0e=$q(),eJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,i){let n=this._getMatcher(r),s=this._getNegativePatternsRe(i);return o=>this._filter(e,o,n,s)}_getMatcher(e){return new G0e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(cy.pattern.isAffectDepthOfReadingPattern);return cy.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,i,n){let s=this._getEntryLevel(e,r.path);if(this._isSkippedByDeep(s)||this._isSkippedSymbolicLink(r))return!1;let o=cy.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(o,i)?!1:this._isSkippedByNegativePatterns(o,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,r){let i=e.split("/").length;return r.split("/").length-(e===""?0:i)}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!cy.pattern.matchAny(e,r)}};nx.default=eJ});var iJ=I(sx=>{"use strict";Object.defineProperty(sx,"__esModule",{value:!0});var ip=ga(),rJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let i=ip.pattern.convertPatternsToRe(e,this._micromatchOptions),n=ip.pattern.convertPatternsToRe(r,this._micromatchOptions);return s=>this._filter(s,i,n)}_filter(e,r,i){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,i))return!1;let n=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(n,r)&&!this._isMatchToPatterns(e.path,i)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let i=ip.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(i,r)}_isMatchToPatterns(e,r){let i=ip.path.removeLeadingDotSegment(e);return ip.pattern.matchAny(i,r)}};sx.default=rJ});var sJ=I(ox=>{"use strict";Object.defineProperty(ox,"__esModule",{value:!0});var j0e=ga(),nJ=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return j0e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};ox.default=nJ});var AJ=I(ax=>{"use strict";Object.defineProperty(ax,"__esModule",{value:!0});var oJ=ga(),aJ=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=oJ.path.makeAbsolute(this._settings.cwd,r),r=oJ.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};ax.default=aJ});var uy=I(Ax=>{"use strict";Object.defineProperty(Ax,"__esModule",{value:!0});var Y0e=require("path"),q0e=tJ(),J0e=iJ(),W0e=sJ(),z0e=AJ(),lJ=class{constructor(e){this._settings=e,this.errorFilter=new W0e.default(this._settings),this.entryFilter=new J0e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new q0e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new z0e.default(this._settings)}_getRootDirectory(e){return Y0e.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};Ax.default=lJ});var uJ=I(lx=>{"use strict";Object.defineProperty(lx,"__esModule",{value:!0});var V0e=tx(),_0e=uy(),cJ=class extends _0e.default{constructor(){super(...arguments);this._reader=new V0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=[];return new Promise((s,o)=>{let a=this.api(r,e,i);a.once("error",o),a.on("data",l=>n.push(i.transform(l))),a.once("end",()=>s(n))})}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};lx.default=cJ});var fJ=I(cx=>{"use strict";Object.defineProperty(cx,"__esModule",{value:!0});var X0e=require("stream"),Z0e=tx(),$0e=uy(),gJ=class extends $0e.default{constructor(){super(...arguments);this._reader=new Z0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=this.api(r,e,i),s=new X0e.Readable({objectMode:!0,read:()=>{}});return n.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",i.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>n.destroy()),s}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};cx.default=gJ});var pJ=I(ux=>{"use strict";Object.defineProperty(ux,"__esModule",{value:!0});var eQe=Tl(),tQe=XS(),rQe=$S(),hJ=class extends rQe.default{constructor(){super(...arguments);this._walkSync=tQe.walkSync,this._statSync=eQe.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let i=[];for(let n of e){let s=this._getFullEntryPath(n),o=this._getEntry(s,n,r);o===null||!r.entryFilter(o)||i.push(o)}return i}_getEntry(e,r,i){try{let n=this._getStat(e);return this._makeEntry(n,r)}catch(n){if(i.errorFilter(n))return null;throw n}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};ux.default=hJ});var CJ=I(gx=>{"use strict";Object.defineProperty(gx,"__esModule",{value:!0});var iQe=pJ(),nQe=uy(),dJ=class extends nQe.default{constructor(){super(...arguments);this._reader=new iQe.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(r,e,i).map(i.transform)}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};gx.default=dJ});var IJ=I(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});var Fu=require("fs"),sQe=require("os"),oQe=sQe.cpus().length;np.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Fu.lstat,lstatSync:Fu.lstatSync,stat:Fu.stat,statSync:Fu.statSync,readdir:Fu.readdir,readdirSync:Fu.readdirSync};var mJ=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,oQe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,Infinity),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},np.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};np.default=mJ});var gy=I((Oit,EJ)=>{"use strict";var yJ=tq(),aQe=uJ(),AQe=fJ(),lQe=CJ(),fx=IJ(),Ml=ga();async function px(t,e){Nu(t);let r=hx(t,aQe.default,e),i=await Promise.all(r);return Ml.array.flatten(i)}(function(t){function e(o,a){Nu(o);let l=hx(o,lQe.default,a);return Ml.array.flatten(l)}t.sync=e;function r(o,a){Nu(o);let l=hx(o,AQe.default,a);return Ml.stream.merge(l)}t.stream=r;function i(o,a){Nu(o);let l=[].concat(o),c=new fx.default(a);return yJ.generate(l,c)}t.generateTasks=i;function n(o,a){Nu(o);let l=new fx.default(a);return Ml.pattern.isDynamicPattern(o,l)}t.isDynamicPattern=n;function s(o){return Nu(o),Ml.path.escape(o)}t.escapePath=s})(px||(px={}));function hx(t,e,r){let i=[].concat(t),n=new fx.default(r),s=yJ.generate(i,n),o=new e(n);return s.map(o.read,o)}function Nu(t){if(![].concat(t).every(i=>Ml.string.isString(i)&&!Ml.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}EJ.exports=px});var BJ=I(Ol=>{"use strict";var{promisify:cQe}=require("util"),wJ=require("fs");async function dx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await cQe(wJ[t])(r))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function Cx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return wJ[t](r)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}Ol.isFile=dx.bind(null,"stat","isFile");Ol.isDirectory=dx.bind(null,"stat","isDirectory");Ol.isSymlink=dx.bind(null,"lstat","isSymbolicLink");Ol.isFileSync=Cx.bind(null,"statSync","isFile");Ol.isDirectorySync=Cx.bind(null,"statSync","isDirectory");Ol.isSymlinkSync=Cx.bind(null,"lstatSync","isSymbolicLink")});var xJ=I((Uit,mx)=>{"use strict";var Kl=require("path"),QJ=BJ(),bJ=t=>t.length>1?`{${t.join(",")}}`:t[0],vJ=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Kl.isAbsolute(r)?r:Kl.join(e,r)},uQe=(t,e)=>Kl.extname(t)?`**/${t}`:`**/${t}.${bJ(e)}`,SJ=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Kl.posix.join(t,uQe(r,e.extensions))):e.files?e.files.map(r=>Kl.posix.join(t,`**/${r}`)):e.extensions?[Kl.posix.join(t,`**/*.${bJ(e.extensions)}`)]:[Kl.posix.join(t,"**")]};mx.exports=async(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async i=>await QJ.isDirectory(vJ(i,e.cwd))?SJ(i,e):i));return[].concat.apply([],r)};mx.exports.sync=(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(i=>QJ.isDirectorySync(vJ(i,e.cwd))?SJ(i,e):i);return[].concat.apply([],r)}});var TJ=I((Hit,kJ)=>{function PJ(t){return Array.isArray(t)?t:[t]}var gQe=/^\s+$/,fQe=/^\\!/,hQe=/^\\#/,pQe=/\r?\n/g,dQe=/^\.*\/|^\.+$/,Ix="/",DJ=typeof Symbol!="undefined"?Symbol.for("node-ignore"):"node-ignore",CQe=(t,e,r)=>Object.defineProperty(t,e,{value:r}),mQe=/([0-z])-([0-z])/g,IQe=t=>t.replace(mQe,(e,r,i)=>r.charCodeAt(0)<=i.charCodeAt(0)?e:""),EQe=[[/\\?\s+$/,t=>t.indexOf("\\")===0?" ":""],[/\\\s/g,()=>" "],[/[\\^$.|*+(){]/g,t=>`\\${t}`],[/\[([^\]/]*)($|\])/g,(t,e,r)=>r==="]"?`[${IQe(e)}]`:`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6`${e}[^\\/]*`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`],[/\\\\\\/g,()=>"\\"]],RJ=Object.create(null),yQe=(t,e,r)=>{let i=RJ[t];if(i)return i;let n=EQe.reduce((s,o)=>s.replace(o[0],o[1].bind(t)),t);return RJ[t]=r?new RegExp(n,"i"):new RegExp(n)},Ex=t=>typeof t=="string",wQe=t=>t&&Ex(t)&&!gQe.test(t)&&t.indexOf("#")!==0,BQe=t=>t.split(pQe),FJ=class{constructor(e,r,i,n){this.origin=e,this.pattern=r,this.negative=i,this.regex=n}},QQe=(t,e)=>{let r=t,i=!1;t.indexOf("!")===0&&(i=!0,t=t.substr(1)),t=t.replace(fQe,"!").replace(hQe,"#");let n=yQe(t,i,e);return new FJ(r,t,i,n)},bQe=(t,e)=>{throw new e(t)},ha=(t,e,r)=>Ex(t)?t?ha.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),NJ=t=>dQe.test(t);ha.isNotRelative=NJ;ha.convert=t=>t;var LJ=class{constructor({ignorecase:e=!0}={}){this._rules=[],this._ignorecase=e,CQe(this,DJ,!0),this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[DJ]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(wQe(e)){let r=QQe(e,this._ignorecase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,PJ(Ex(e)?BQe(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:o}=s;if(n===o&&i!==n||o&&!i&&!n&&!r)return;s.regex.test(e)&&(i=!o,n=o)}),{ignored:i,unignored:n}}_test(e,r,i,n){let s=e&&ha.convert(e);return ha(s,e,bQe),this._t(s,r,i,n)}_t(e,r,i,n){if(e in r)return r[e];if(n||(n=e.split(Ix)),n.pop(),!n.length)return r[e]=this._testOne(e,i);let s=this._t(n.join(Ix)+Ix,r,i,n);return r[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return PJ(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},fy=t=>new LJ(t),vQe=()=>!1,SQe=t=>ha(t&&ha.convert(t),t,vQe);fy.isPathValid=SQe;fy.default=fy;kJ.exports=fy;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");ha.convert=t;let e=/^[a-z]:\//i;ha.isNotRelative=r=>e.test(r)||NJ(r)}});var OJ=I((Git,MJ)=>{"use strict";MJ.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var qJ=I((jit,yx)=>{"use strict";var{promisify:xQe}=require("util"),KJ=require("fs"),pa=require("path"),UJ=gy(),kQe=TJ(),sp=OJ(),HJ=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],PQe=xQe(KJ.readFile),DQe=t=>e=>e.startsWith("!")?"!"+pa.posix.join(t,e.slice(1)):pa.posix.join(t,e),RQe=(t,e)=>{let r=sp(pa.relative(e.cwd,pa.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(i=>!i.startsWith("#")).map(DQe(r))},GJ=t=>{let e=kQe();for(let r of t)e.add(RQe(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},FQe=(t,e)=>{if(t=sp(t),pa.isAbsolute(e)){if(sp(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return pa.join(t,e)},jJ=(t,e)=>r=>t.ignores(sp(pa.relative(e,FQe(e,r.path||r)))),NQe=async(t,e)=>{let r=pa.join(e,t),i=await PQe(r,"utf8");return{cwd:e,filePath:r,content:i}},LQe=(t,e)=>{let r=pa.join(e,t),i=KJ.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:i}},YJ=({ignore:t=[],cwd:e=sp(process.cwd())}={})=>({ignore:t,cwd:e});yx.exports=async t=>{t=YJ(t);let e=await UJ("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(n=>NQe(n,t.cwd))),i=GJ(r);return jJ(i,t.cwd)};yx.exports.sync=t=>{t=YJ(t);let r=UJ.sync("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}).map(n=>LQe(n,t.cwd)),i=GJ(r);return jJ(i,t.cwd)}});var VJ=I((Yit,JJ)=>{"use strict";var{Transform:TQe}=require("stream"),wx=class extends TQe{constructor(){super({objectMode:!0})}},WJ=class extends wx{constructor(e){super();this._filter=e}_transform(e,r,i){this._filter(e)&&this.push(e),i()}},zJ=class extends wx{constructor(){super();this._pushed=new Set}_transform(e,r,i){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),i()}};JJ.exports={FilterStream:WJ,UniqueStream:zJ}});var vx=I((qit,Ul)=>{"use strict";var _J=require("fs"),hy=QY(),MQe=wS(),py=gy(),dy=xJ(),Bx=qJ(),{FilterStream:OQe,UniqueStream:KQe}=VJ(),XJ=()=>!1,ZJ=t=>t[0]==="!",UQe=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},HQe=(t={})=>{if(!t.cwd)return;let e;try{e=_J.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},GQe=t=>t.stats instanceof _J.Stats?t.path:t,Cy=(t,e)=>{t=hy([].concat(t)),UQe(t),HQe(e);let r=[];e=P({ignore:[],expandDirectories:!0},e);for(let[i,n]of t.entries()){if(ZJ(n))continue;let s=t.slice(i).filter(a=>ZJ(a)).map(a=>a.slice(1)),o=_(P({},e),{ignore:e.ignore.concat(s)});r.push({pattern:n,options:o})}return r},jQe=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r=_(P({},r),{files:t.options.expandDirectories}):typeof t.options.expandDirectories=="object"&&(r=P(P({},r),t.options.expandDirectories)),e(t.pattern,r)},Qx=(t,e)=>t.options.expandDirectories?jQe(t,e):[t.pattern],$J=t=>t&&t.gitignore?Bx.sync({cwd:t.cwd,ignore:t.ignore}):XJ,bx=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=dy.sync(r.ignore)),{pattern:e,options:r}};Ul.exports=async(t,e)=>{let r=Cy(t,e),i=async()=>e&&e.gitignore?Bx({cwd:e.cwd,ignore:e.ignore}):XJ,n=async()=>{let l=await Promise.all(r.map(async c=>{let u=await Qx(c,dy);return Promise.all(u.map(bx(c)))}));return hy(...l)},[s,o]=await Promise.all([i(),n()]),a=await Promise.all(o.map(l=>py(l.pattern,l.options)));return hy(...a).filter(l=>!s(GQe(l)))};Ul.exports.sync=(t,e)=>{let r=Cy(t,e),i=[];for(let o of r){let a=Qx(o,dy.sync).map(bx(o));i.push(...a)}let n=$J(e),s=[];for(let o of i)s=hy(s,py.sync(o.pattern,o.options));return s.filter(o=>!n(o))};Ul.exports.stream=(t,e)=>{let r=Cy(t,e),i=[];for(let a of r){let l=Qx(a,dy.sync).map(bx(a));i.push(...l)}let n=$J(e),s=new OQe(a=>!n(a)),o=new KQe;return MQe(i.map(a=>py.stream(a.pattern,a.options))).pipe(s).pipe(o)};Ul.exports.generateGlobTasks=Cy;Ul.exports.hasMagic=(t,e)=>[].concat(t).some(r=>py.isDynamicPattern(r,e));Ul.exports.gitignore=Bx});var Ca=I((da,Dy)=>{"use strict";Object.defineProperty(da,"__esModule",{value:!0});var A3=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function ibe(t){return A3.includes(t)}var nbe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...A3];function sbe(t){return nbe.includes(t)}var obe=["null","undefined","string","number","bigint","boolean","symbol"];function abe(t){return obe.includes(t)}function Hu(t){return e=>typeof e===t}var{toString:l3}=Object.prototype,mp=t=>{let e=l3.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&j.domElement(t))return"HTMLElement";if(sbe(e))return e},er=t=>e=>mp(e)===t;function j(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(j.observable(t))return"Observable";if(j.array(t))return"Array";if(j.buffer(t))return"Buffer";let e=mp(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}j.undefined=Hu("undefined");j.string=Hu("string");var Abe=Hu("number");j.number=t=>Abe(t)&&!j.nan(t);j.bigint=Hu("bigint");j.function_=Hu("function");j.null_=t=>t===null;j.class_=t=>j.function_(t)&&t.toString().startsWith("class ");j.boolean=t=>t===!0||t===!1;j.symbol=Hu("symbol");j.numericString=t=>j.string(t)&&!j.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));j.array=(t,e)=>Array.isArray(t)?j.function_(e)?t.every(e):!0:!1;j.buffer=t=>{var e,r,i,n;return(n=(i=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||i===void 0?void 0:i.call(r,t))!==null&&n!==void 0?n:!1};j.nullOrUndefined=t=>j.null_(t)||j.undefined(t);j.object=t=>!j.null_(t)&&(typeof t=="object"||j.function_(t));j.iterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};j.asyncIterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};j.generator=t=>j.iterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.asyncGenerator=t=>j.asyncIterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.nativePromise=t=>er("Promise")(t);var lbe=t=>{var e,r;return j.function_((e=t)===null||e===void 0?void 0:e.then)&&j.function_((r=t)===null||r===void 0?void 0:r.catch)};j.promise=t=>j.nativePromise(t)||lbe(t);j.generatorFunction=er("GeneratorFunction");j.asyncGeneratorFunction=t=>mp(t)==="AsyncGeneratorFunction";j.asyncFunction=t=>mp(t)==="AsyncFunction";j.boundFunction=t=>j.function_(t)&&!t.hasOwnProperty("prototype");j.regExp=er("RegExp");j.date=er("Date");j.error=er("Error");j.map=t=>er("Map")(t);j.set=t=>er("Set")(t);j.weakMap=t=>er("WeakMap")(t);j.weakSet=t=>er("WeakSet")(t);j.int8Array=er("Int8Array");j.uint8Array=er("Uint8Array");j.uint8ClampedArray=er("Uint8ClampedArray");j.int16Array=er("Int16Array");j.uint16Array=er("Uint16Array");j.int32Array=er("Int32Array");j.uint32Array=er("Uint32Array");j.float32Array=er("Float32Array");j.float64Array=er("Float64Array");j.bigInt64Array=er("BigInt64Array");j.bigUint64Array=er("BigUint64Array");j.arrayBuffer=er("ArrayBuffer");j.sharedArrayBuffer=er("SharedArrayBuffer");j.dataView=er("DataView");j.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;j.urlInstance=t=>er("URL")(t);j.urlString=t=>{if(!j.string(t))return!1;try{return new URL(t),!0}catch(e){return!1}};j.truthy=t=>Boolean(t);j.falsy=t=>!t;j.nan=t=>Number.isNaN(t);j.primitive=t=>j.null_(t)||abe(typeof t);j.integer=t=>Number.isInteger(t);j.safeInteger=t=>Number.isSafeInteger(t);j.plainObject=t=>{if(l3.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};j.typedArray=t=>ibe(mp(t));var cbe=t=>j.safeInteger(t)&&t>=0;j.arrayLike=t=>!j.nullOrUndefined(t)&&!j.function_(t)&&cbe(t.length);j.inRange=(t,e)=>{if(j.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(j.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var ube=1,gbe=["innerHTML","ownerDocument","style","attributes","nodeValue"];j.domElement=t=>j.object(t)&&t.nodeType===ube&&j.string(t.nodeName)&&!j.plainObject(t)&&gbe.every(e=>e in t);j.observable=t=>{var e,r,i,n;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((n=(i=t)["@@observable"])===null||n===void 0?void 0:n.call(i)):!1};j.nodeStream=t=>j.object(t)&&j.function_(t.pipe)&&!j.observable(t);j.infinite=t=>t===Infinity||t===-Infinity;var c3=t=>e=>j.integer(e)&&Math.abs(e%2)===t;j.evenInteger=c3(0);j.oddInteger=c3(1);j.emptyArray=t=>j.array(t)&&t.length===0;j.nonEmptyArray=t=>j.array(t)&&t.length>0;j.emptyString=t=>j.string(t)&&t.length===0;j.nonEmptyString=t=>j.string(t)&&t.length>0;var fbe=t=>j.string(t)&&!/\S/.test(t);j.emptyStringOrWhitespace=t=>j.emptyString(t)||fbe(t);j.emptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length===0;j.nonEmptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length>0;j.emptySet=t=>j.set(t)&&t.size===0;j.nonEmptySet=t=>j.set(t)&&t.size>0;j.emptyMap=t=>j.map(t)&&t.size===0;j.nonEmptyMap=t=>j.map(t)&&t.size>0;j.propertyKey=t=>j.any([j.string,j.number,j.symbol],t);j.formData=t=>er("FormData")(t);j.urlSearchParams=t=>er("URLSearchParams")(t);var u3=(t,e,r)=>{if(!j.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};j.any=(t,...e)=>(j.array(t)?t:[t]).some(i=>u3(Array.prototype.some,i,e));j.all=(t,...e)=>u3(Array.prototype.every,t,e);var Te=(t,e,r,i={})=>{if(!t){let{multipleValues:n}=i,s=n?`received values of types ${[...new Set(r.map(o=>`\`${j(o)}\``))].join(", ")}`:`received value of type \`${j(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${s}.`)}};da.assert={undefined:t=>Te(j.undefined(t),"undefined",t),string:t=>Te(j.string(t),"string",t),number:t=>Te(j.number(t),"number",t),bigint:t=>Te(j.bigint(t),"bigint",t),function_:t=>Te(j.function_(t),"Function",t),null_:t=>Te(j.null_(t),"null",t),class_:t=>Te(j.class_(t),"Class",t),boolean:t=>Te(j.boolean(t),"boolean",t),symbol:t=>Te(j.symbol(t),"symbol",t),numericString:t=>Te(j.numericString(t),"string with a number",t),array:(t,e)=>{Te(j.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Te(j.buffer(t),"Buffer",t),nullOrUndefined:t=>Te(j.nullOrUndefined(t),"null or undefined",t),object:t=>Te(j.object(t),"Object",t),iterable:t=>Te(j.iterable(t),"Iterable",t),asyncIterable:t=>Te(j.asyncIterable(t),"AsyncIterable",t),generator:t=>Te(j.generator(t),"Generator",t),asyncGenerator:t=>Te(j.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Te(j.nativePromise(t),"native Promise",t),promise:t=>Te(j.promise(t),"Promise",t),generatorFunction:t=>Te(j.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Te(j.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Te(j.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Te(j.boundFunction(t),"Function",t),regExp:t=>Te(j.regExp(t),"RegExp",t),date:t=>Te(j.date(t),"Date",t),error:t=>Te(j.error(t),"Error",t),map:t=>Te(j.map(t),"Map",t),set:t=>Te(j.set(t),"Set",t),weakMap:t=>Te(j.weakMap(t),"WeakMap",t),weakSet:t=>Te(j.weakSet(t),"WeakSet",t),int8Array:t=>Te(j.int8Array(t),"Int8Array",t),uint8Array:t=>Te(j.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Te(j.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Te(j.int16Array(t),"Int16Array",t),uint16Array:t=>Te(j.uint16Array(t),"Uint16Array",t),int32Array:t=>Te(j.int32Array(t),"Int32Array",t),uint32Array:t=>Te(j.uint32Array(t),"Uint32Array",t),float32Array:t=>Te(j.float32Array(t),"Float32Array",t),float64Array:t=>Te(j.float64Array(t),"Float64Array",t),bigInt64Array:t=>Te(j.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Te(j.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Te(j.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Te(j.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Te(j.dataView(t),"DataView",t),urlInstance:t=>Te(j.urlInstance(t),"URL",t),urlString:t=>Te(j.urlString(t),"string with a URL",t),truthy:t=>Te(j.truthy(t),"truthy",t),falsy:t=>Te(j.falsy(t),"falsy",t),nan:t=>Te(j.nan(t),"NaN",t),primitive:t=>Te(j.primitive(t),"primitive",t),integer:t=>Te(j.integer(t),"integer",t),safeInteger:t=>Te(j.safeInteger(t),"integer",t),plainObject:t=>Te(j.plainObject(t),"plain object",t),typedArray:t=>Te(j.typedArray(t),"TypedArray",t),arrayLike:t=>Te(j.arrayLike(t),"array-like",t),domElement:t=>Te(j.domElement(t),"HTMLElement",t),observable:t=>Te(j.observable(t),"Observable",t),nodeStream:t=>Te(j.nodeStream(t),"Node.js Stream",t),infinite:t=>Te(j.infinite(t),"infinite number",t),emptyArray:t=>Te(j.emptyArray(t),"empty array",t),nonEmptyArray:t=>Te(j.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Te(j.emptyString(t),"empty string",t),nonEmptyString:t=>Te(j.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Te(j.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Te(j.emptyObject(t),"empty object",t),nonEmptyObject:t=>Te(j.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Te(j.emptySet(t),"empty set",t),nonEmptySet:t=>Te(j.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Te(j.emptyMap(t),"empty map",t),nonEmptyMap:t=>Te(j.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Te(j.propertyKey(t),"PropertyKey",t),formData:t=>Te(j.formData(t),"FormData",t),urlSearchParams:t=>Te(j.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Te(j.evenInteger(t),"even integer",t),oddInteger:t=>Te(j.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Te(j.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Te(j.inRange(t,e),"in range",t),any:(t,...e)=>Te(j.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Te(j.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(j,{class:{value:j.class_},function:{value:j.function_},null:{value:j.null_}});Object.defineProperties(da.assert,{class:{value:da.assert.class_},function:{value:da.assert.function_},null:{value:da.assert.null_}});da.default=j;Dy.exports=j;Dy.exports.default=j;Dy.exports.assert=da.assert});var g3=I((gnt,Ux)=>{"use strict";var Hx=class extends Error{constructor(e){super(e||"Promise was canceled");this.name="CancelError"}get isCanceled(){return!0}},Ip=class{static fn(e){return(...r)=>new Ip((i,n,s)=>{r.push(s),e(...r).then(i,n)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,i)=>{this._reject=i;let n=a=>{this._isPending=!1,r(a)},s=a=>{this._isPending=!1,i(a)},o=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(o,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(n,s,o)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new Hx(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Ip.prototype,Promise.prototype);Ux.exports=Ip;Ux.exports.CancelError=Hx});var f3=I((Gx,jx)=>{"use strict";Object.defineProperty(Gx,"__esModule",{value:!0});var hbe=require("tls"),Yx=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let i=typeof r.connect=="function",n=typeof r.secureConnect=="function",s=typeof r.close=="function",o=()=>{i&&r.connect(),t instanceof hbe.TLSSocket&&n&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),s&&t.once("close",r.close)};t.writable&&!t.connecting?o():t.connecting?t.once("connect",o):t.destroyed&&s&&r.close(t._hadError)};Gx.default=Yx;jx.exports=Yx;jx.exports.default=Yx});var h3=I((qx,Jx)=>{"use strict";Object.defineProperty(qx,"__esModule",{value:!0});var pbe=f3(),dbe=Number(process.versions.node.split(".")[0]),Wx=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=o=>{let a=o.emit.bind(o);o.emit=(l,...c)=>(l==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,o.emit=a),a(l,...c))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||dbe>=13)&&(e.phases.total=Date.now()-e.start)});let i=o=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let a=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};o.prependOnceListener("lookup",a),pbe.default(o,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(o.removeListener("lookup",a),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?i(t.socket):t.prependOnceListener("socket",i);let n=()=>{var o;e.upload=Date.now(),e.phases.request=e.upload-(o=e.secureConnect,o!=null?o:e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?n():t.prependOnceListener("finish",n),t.prependOnceListener("response",o=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,o.timings=e,r(o),o.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};qx.default=Wx;Jx.exports=Wx;Jx.exports.default=Wx});var y3=I((fnt,zx)=>{"use strict";var{V4MAPPED:Cbe,ADDRCONFIG:mbe,ALL:p3,promises:{Resolver:d3},lookup:Ibe}=require("dns"),{promisify:Vx}=require("util"),Ebe=require("os"),Gu=Symbol("cacheableLookupCreateConnection"),_x=Symbol("cacheableLookupInstance"),C3=Symbol("expires"),ybe=typeof p3=="number",m3=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},wbe=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},I3=()=>{let t=!1,e=!1;for(let r of Object.values(Ebe.networkInterfaces()))for(let i of r)if(!i.internal&&(i.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Bbe=t=>Symbol.iterator in t,E3={ttl:!0},Qbe={all:!0},Xx=class{constructor({cache:e=new Map,maxTtl:r=Infinity,fallbackDuration:i=3600,errorTtl:n=.15,resolver:s=new d3,lookup:o=Ibe}={}){if(this.maxTtl=r,this.errorTtl=n,this._cache=e,this._resolver=s,this._dnsLookup=Vx(o),this._resolver instanceof d3?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=Vx(this._resolver.resolve4.bind(this._resolver)),this._resolve6=Vx(this._resolver.resolve6.bind(this._resolver))),this._iface=I3(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,i<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},i*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,i){if(typeof r=="function"?(i=r,r={}):typeof r=="number"&&(r={family:r}),!i)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(n=>{r.all?i(null,n):i(null,n.address,n.family,n.expires,n.ttl)},i)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let i=await this.query(e);if(r.family===6){let n=i.filter(s=>s.family===6);r.hints&Cbe&&(ybe&&r.hints&p3||n.length===0)?wbe(i):i=n}else r.family===4&&(i=i.filter(n=>n.family===4));if(r.hints&mbe){let{_iface:n}=this;i=i.filter(s=>s.family===6?n.has6:n.has4)}if(i.length===0){let n=new Error(`cacheableLookup ENOTFOUND ${e}`);throw n.code="ENOTFOUND",n.hostname=e,n}return r.all?i:i[0]}async query(e){let r=await this._cache.get(e);if(!r){let i=this._pending[e];if(i)r=await i;else{let n=this.queryAndCache(e);this._pending[e]=n,r=await n}}return r=r.map(i=>P({},i)),r}async _resolve(e){let r=async c=>{try{return await c}catch(u){if(u.code==="ENODATA"||u.code==="ENOTFOUND")return[];throw u}},[i,n]=await Promise.all([this._resolve4(e,E3),this._resolve6(e,E3)].map(c=>r(c))),s=0,o=0,a=0,l=Date.now();for(let c of i)c.family=4,c.expires=l+c.ttl*1e3,s=Math.max(s,c.ttl);for(let c of n)c.family=6,c.expires=l+c.ttl*1e3,o=Math.max(o,c.ttl);return i.length>0?n.length>0?a=Math.min(s,o):a=s:a=o,{entries:[...i,...n],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch(r){return{entries:[],cacheTtl:0}}}async _set(e,r,i){if(this.maxTtl>0&&i>0){i=Math.min(i,this.maxTtl)*1e3,r[C3]=Date.now()+i;try{await this._cache.set(e,r,i)}catch(n){this.lookupAsync=async()=>{let s=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw s.cause=n,s}}Bbe(this._cache)&&this._tick(i)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Qbe);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let i=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,i),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let i=Infinity,n=Date.now();for(let[s,o]of this._cache){let a=o[C3];n>=a?this._cache.delete(s):a("lookup"in r||(r.lookup=this.lookup),e[Gu](r,i))}uninstall(e){if(m3(e),e[Gu]){if(e[_x]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[Gu],delete e[Gu],delete e[_x]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=I3(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};zx.exports=Xx;zx.exports.default=Xx});var Q3=I((hnt,Zx)=>{"use strict";var bbe=typeof URL=="undefined"?require("url").URL:URL,vbe="text/plain",Sbe="us-ascii",w3=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),xbe=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let i=r[1].split(";"),n=r[2],s=e?"":r[3],o=!1;i[i.length-1]==="base64"&&(i.pop(),o=!0);let a=(i.shift()||"").toLowerCase(),c=[...i.map(u=>{let[g,f=""]=u.split("=").map(h=>h.trim());return g==="charset"&&(f=f.toLowerCase(),f===Sbe)?"":`${g}${f?`=${f}`:""}`}).filter(Boolean)];return o&&c.push("base64"),(c.length!==0||a&&a!==vbe)&&c.unshift(a),`data:${c.join(";")},${o?n.trim():n}${s?`#${s}`:""}`},B3=(t,e)=>{if(e=P({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return xbe(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new bbe(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?!:).|^)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];w3(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])w3(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,"")),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};Zx.exports=B3;Zx.exports.default=B3});var S3=I((pnt,b3)=>{b3.exports=v3;function v3(t,e){if(t&&e)return v3(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(i){r[i]=t[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var x3=S3();$x.exports=x3(Ry);$x.exports.strict=x3(k3);Ry.proto=Ry(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Ry(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return k3(this)},configurable:!0})});function Ry(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function k3(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var tk=I((Cnt,P3)=>{var kbe=ek(),Pbe=function(){},Dbe=function(t){return t.setHeader&&typeof t.abort=="function"},Rbe=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},D3=function(t,e,r){if(typeof e=="function")return D3(t,null,e);e||(e={}),r=kbe(r||Pbe);var i=t._writableState,n=t._readableState,s=e.readable||e.readable!==!1&&t.readable,o=e.writable||e.writable!==!1&&t.writable,a=function(){t.writable||l()},l=function(){o=!1,s||r.call(t)},c=function(){s=!1,o||r.call(t)},u=function(p){r.call(t,p?new Error("exited with error code: "+p):null)},g=function(p){r.call(t,p)},f=function(){if(s&&!(n&&n.ended))return r.call(t,new Error("premature close"));if(o&&!(i&&i.ended))return r.call(t,new Error("premature close"))},h=function(){t.req.on("finish",l)};return Dbe(t)?(t.on("complete",l),t.on("abort",f),t.req?h():t.on("request",h)):o&&!i&&(t.on("end",a),t.on("close",a)),Rbe(t)&&t.on("exit",u),t.on("end",c),t.on("finish",l),e.error!==!1&&t.on("error",g),t.on("close",f),function(){t.removeListener("complete",l),t.removeListener("abort",f),t.removeListener("request",h),t.req&&t.req.removeListener("finish",l),t.removeListener("end",a),t.removeListener("close",a),t.removeListener("finish",l),t.removeListener("exit",u),t.removeListener("end",c),t.removeListener("error",g),t.removeListener("close",f)}};P3.exports=D3});var N3=I((mnt,R3)=>{var Fbe=ek(),Nbe=tk(),rk=require("fs"),Ep=function(){},Lbe=/^v?\.0/.test(process.version),Fy=function(t){return typeof t=="function"},Tbe=function(t){return!Lbe||!rk?!1:(t instanceof(rk.ReadStream||Ep)||t instanceof(rk.WriteStream||Ep))&&Fy(t.close)},Mbe=function(t){return t.setHeader&&Fy(t.abort)},Obe=function(t,e,r,i){i=Fbe(i);var n=!1;t.on("close",function(){n=!0}),Nbe(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,Tbe(t))return t.close(Ep);if(Mbe(t))return t.abort();if(Fy(t.destroy))return t.destroy();i(o||new Error("stream was destroyed"))}}},F3=function(t){t()},Kbe=function(t,e){return t.pipe(e)},Ube=function(){var t=Array.prototype.slice.call(arguments),e=Fy(t[t.length-1]||Ep)&&t.pop()||Ep;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,i=t.map(function(n,s){var o=s0;return Obe(n,o,a,function(l){r||(r=l),l&&i.forEach(F3),!o&&(i.forEach(F3),e(r))})});return t.reduce(Kbe)};R3.exports=Ube});var T3=I((Int,L3)=>{"use strict";var{PassThrough:Hbe}=require("stream");L3.exports=t=>{t=P({},t);let{array:e}=t,{encoding:r}=t,i=r==="buffer",n=!1;e?n=!(r||i):r=r||"utf8",i&&(r=null);let s=new Hbe({objectMode:n});r&&s.setEncoding(r);let o=0,a=[];return s.on("data",l=>{a.push(l),n?o=a.length:o+=l.length}),s.getBufferedValue=()=>e?a:i?Buffer.concat(a,o):a.join(""),s.getBufferedLength=()=>o,s}});var M3=I((Ent,ju)=>{"use strict";var Gbe=N3(),jbe=T3(),ik=class extends Error{constructor(){super("maxBuffer exceeded");this.name="MaxBufferError"}};async function Ny(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e=P({maxBuffer:Infinity},e);let{maxBuffer:r}=e,i;return await new Promise((n,s)=>{let o=a=>{a&&(a.bufferedData=i.getBufferedValue()),s(a)};i=Gbe(t,jbe(e),a=>{if(a){o(a);return}n()}),i.on("data",()=>{i.getBufferedLength()>r&&o(new ik)})}),i.getBufferedValue()}ju.exports=Ny;ju.exports.default=Ny;ju.exports.buffer=(t,e)=>Ny(t,_(P({},e),{encoding:"buffer"}));ju.exports.array=(t,e)=>Ny(t,_(P({},e),{array:!0}));ju.exports.MaxBufferError=ik});var K3=I((wnt,O3)=>{"use strict";var Ybe=[200,203,204,206,300,301,404,405,410,414,501],qbe=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],Jbe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},Wbe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function nk(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let i of r){let[n,s]=i.split(/\s*=\s*/,2);e[n]=s===void 0?!0:s.replace(/^"|"$/g,"")}return e}function zbe(t){let e=[];for(let r in t){let i=t[r];e.push(i===!0?r:r+"="+i)}if(!!e.length)return e.join(", ")}O3.exports=class{constructor(e,r,{shared:i,cacheHeuristic:n,immutableMinTimeToLive:s,ignoreCargoCult:o,trustServerDate:a,_fromObject:l}={}){if(l){this._fromObject(l);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=i!==!1,this._trustServerDate=a!==void 0?a:!0,this._cacheHeuristic=n!==void 0?n:.1,this._immutableMinTtl=s!==void 0?s:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=nk(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=nk(e.headers["cache-control"]),o&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":zbe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!r.headers["cache-control"]&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&qbe.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||Ybe.indexOf(this._status)!==-1))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=nk(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let i of r)if(e.headers[i]!==this._reqHeaders[i])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let i in e)Jbe[i]||(r[i]=e[i]);if(e.connection){let i=e.connection.trim().split(/\s*,\s*/);for(let n of i)delete r[n]}if(r.warning){let i=r.warning.split(/,/).filter(n=>!/^\s*1[0-9][0-9]/.test(n));i.length?r.warning=i.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){return this._trustServerDate?this._serverDate():this._responseTime}_serverDate(){let e=Date.parse(this._resHeaders.date);if(isFinite(e)){let r=8*3600*1e3;if(Math.abs(this._responseTime-e)e&&(e=i)}let r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){let e=parseInt(this._resHeaders.age);return isFinite(e)?e:0}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this._serverDate();if(this._resHeaders.expires){let i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ii)return Math.max(e,(r-i)/1e3*this._cacheHeuristic)}return e}timeToLive(){return Math.max(0,this.maxAge()-this.age())*1e3}stale(){return this.maxAge()<=this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let n=r["if-none-match"].split(/,/).filter(s=>!/^\s*W\//.test(s));n.length?r["if-none-match"]=n.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),!r||!r.headers)throw Error("Response headers missing");let i=!1;if(r.status!==void 0&&r.status!=304?i=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let n={};for(let o in this._resHeaders)n[o]=o in r.headers&&!Wbe[o]?r.headers[o]:this._resHeaders[o];let s=Object.assign({},r,{status:this._status,method:this._method,headers:n});return{policy:new this.constructor(e,s,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl,trustServerDate:this._trustServerDate}),modified:!1,matches:!0}}}});var Ly=I((Bnt,U3)=>{"use strict";U3.exports=t=>{let e={};for(let[r,i]of Object.entries(t))e[r.toLowerCase()]=i;return e}});var j3=I((Qnt,H3)=>{"use strict";var Vbe=require("stream").Readable,_be=Ly(),G3=class extends Vbe{constructor(e,r,i,n){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(i instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof n!="string")throw new TypeError("Argument `url` should be a string");super();this.statusCode=e,this.headers=_be(r),this.body=i,this.url=n}_read(){this.push(this.body),this.push(null)}};H3.exports=G3});var q3=I((bnt,Y3)=>{"use strict";var Xbe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Y3.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Xbe));for(let i of r)i in e||(e[i]=typeof t[i]=="function"?t[i].bind(t):t[i])}});var W3=I((vnt,J3)=>{"use strict";var Zbe=require("stream").PassThrough,$be=q3(),eve=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Zbe;return $be(t,e),t.pipe(e)};J3.exports=eve});var z3=I(sk=>{sk.stringify=function t(e){if(typeof e=="undefined")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",i=Array.isArray(e);r=i?"[":"{";var n=!0;for(var s in e){var o=typeof e[s]=="function"||!i&&typeof e[s]=="undefined";Object.hasOwnProperty.call(e,s)&&!o&&(n||(r+=","),n=!1,i?e[s]==null?r+="null":r+=t(e[s]):e[s]!==void 0&&(r+=t(s)+":"+t(e[s])))}return r+=i?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e=="undefined"?"null":JSON.stringify(e)};sk.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Z3=I((xnt,V3)=>{"use strict";var tve=require("events"),_3=z3(),rve=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(require(e[r]))(t)}return new Map},X3=class extends tve{constructor(e,r){super();if(this.opts=Object.assign({namespace:"keyv",serialize:_3.stringify,deserialize:_3.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let i=Object.assign({},this.opts);this.opts.store=rve(i)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",i=>this.emit("error",i)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:i}=this.opts;return Promise.resolve().then(()=>i.get(e)).then(n=>typeof n=="string"?this.opts.deserialize(n):n).then(n=>{if(n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(e);return}return r&&r.raw?n:n.value}})}set(e,r,i){e=this._getKeyPrefix(e),typeof i=="undefined"&&(i=this.opts.ttl),i===0&&(i=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof i=="number"?Date.now()+i:null;return r={value:r,expires:s},this.opts.serialize(r)}).then(s=>n.set(e,s,i)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};V3.exports=X3});var tW=I((knt,$3)=>{"use strict";var ive=require("events"),Ty=require("url"),nve=Q3(),sve=M3(),ok=K3(),eW=j3(),ove=Ly(),ave=W3(),Ave=Z3(),yo=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Ave({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,i)=>{let n;if(typeof r=="string")n=ak(Ty.parse(r)),r={};else if(r instanceof Ty.URL)n=ak(Ty.parse(r.toString())),r={};else{let[g,...f]=(r.path||"").split("?"),h=f.length>0?`?${f.join("?")}`:"";n=ak(_(P({},r),{pathname:g,search:h}))}r=P(P({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},r),lve(n)),r.headers=ove(r.headers);let s=new ive,o=nve(Ty.format(n),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${r.method}:${o}`,l=!1,c=!1,u=g=>{c=!0;let f=!1,h,p=new Promise(m=>{h=()=>{f||(f=!0,m())}}),d=m=>{if(l&&!g.forceRefresh){m.status=m.statusCode;let B=ok.fromObject(l.cachePolicy).revalidatedPolicy(g,m);if(!B.modified){let b=B.policy.responseHeaders();m=new eW(l.statusCode,b,l.body,l.url),m.cachePolicy=B.policy,m.fromCache=!0}}m.fromCache||(m.cachePolicy=new ok(g,m,g),m.fromCache=!1);let E;g.cache&&m.cachePolicy.storable()?(E=ave(m),(async()=>{try{let B=sve.buffer(m);if(await Promise.race([p,new Promise(L=>m.once("end",L))]),f)return;let b=await B,R={cachePolicy:m.cachePolicy.toObject(),url:m.url,statusCode:m.fromCache?l.statusCode:m.statusCode,body:b},H=g.strictTtl?m.cachePolicy.timeToLive():void 0;g.maxTtl&&(H=H?Math.min(H,g.maxTtl):g.maxTtl),await this.cache.set(a,R,H)}catch(B){s.emit("error",new yo.CacheError(B))}})()):g.cache&&l&&(async()=>{try{await this.cache.delete(a)}catch(B){s.emit("error",new yo.CacheError(B))}})(),s.emit("response",E||m),typeof i=="function"&&i(E||m)};try{let m=e(g,d);m.once("error",h),m.once("abort",h),s.emit("request",m)}catch(m){s.emit("error",new yo.RequestError(m))}};return(async()=>{let g=async h=>{await Promise.resolve();let p=h.cache?await this.cache.get(a):void 0;if(typeof p=="undefined")return u(h);let d=ok.fromObject(p.cachePolicy);if(d.satisfiesWithoutRevalidation(h)&&!h.forceRefresh){let m=d.responseHeaders(),E=new eW(p.statusCode,m,p.body,p.url);E.cachePolicy=d,E.fromCache=!0,s.emit("response",E),typeof i=="function"&&i(E)}else l=p,h.headers=d.revalidationHeaders(h),u(h)},f=h=>s.emit("error",new yo.CacheError(h));this.cache.once("error",f),s.on("response",()=>this.cache.removeListener("error",f));try{await g(r)}catch(h){r.automaticFailover&&!c&&u(r),s.emit("error",new yo.CacheError(h))}})(),s}}};function lve(t){let e=P({},t);return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function ak(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}yo.RequestError=class extends Error{constructor(t){super(t.message);this.name="RequestError",Object.assign(this,t)}};yo.CacheError=class extends Error{constructor(t){super(t.message);this.name="CacheError",Object.assign(this,t)}};$3.exports=yo});var iW=I((Pnt,rW)=>{"use strict";var cve=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];rW.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(cve)),i={};for(let n of r)n in e||(i[n]={get(){let s=t[n];return typeof s=="function"?s.bind(t):s},set(s){t[n]=s},enumerable:!0,configurable:!1});return Object.defineProperties(e,i),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var sW=I((Dnt,nW)=>{"use strict";var{Transform:uve,PassThrough:gve}=require("stream"),Ak=require("zlib"),fve=iW();nW.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof Ak.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let i=!0,n=new uve({transform(a,l,c){i=!1,c(null,a)},flush(a){a()}}),s=new gve({autoDestroy:!1,destroy(a,l){t.destroy(),l(a)}}),o=r?Ak.createBrotliDecompress():Ak.createUnzip();return o.once("error",a=>{if(i&&!t.readable){s.end();return}s.destroy(a)}),fve(t,s),t.pipe(n).pipe(o).pipe(s),s}});var lk=I((Rnt,oW)=>{"use strict";var aW=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[i,n]of this.oldCache.entries())this.onEviction(i,n);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};oW.exports=aW});var uk=I((Fnt,AW)=>{"use strict";var hve=require("events"),pve=require("tls"),dve=require("http2"),Cve=lk(),_i=Symbol("currentStreamsCount"),lW=Symbol("request"),ns=Symbol("cachedOriginSet"),Yu=Symbol("gracefullyClosing"),mve=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],Ive=(t,e,r)=>{let i=0,n=t.length;for(;i>>1;r(t[s],e)?i=s+1:n=s}return i},Eve=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,ck=(t,e)=>{for(let r of t)r[ns].lengthe[ns].includes(i))&&r[_i]+e[_i]<=e.remoteSettings.maxConcurrentStreams&&cW(r)},yve=(t,e)=>{for(let r of t)e[ns].lengthr[ns].includes(i))&&e[_i]+r[_i]<=r.remoteSettings.maxConcurrentStreams&&cW(e)},uW=({agent:t,isFree:e})=>{let r={};for(let i in t.sessions){let s=t.sessions[i].filter(o=>{let a=o[ma.kCurrentStreamsCount]{t[Yu]=!0,t[_i]===0&&t.close()},ma=class extends hve{constructor({timeout:e=6e4,maxSessions:r=Infinity,maxFreeSessions:i=10,maxCachedTlsSessions:n=100}={}){super();this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=i,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Cve({maxSize:n})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let i of mve)e[i]&&(r+=`:${e[i]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let i=this.queue[e][r];this._sessionsCount{Array.isArray(i)?(i=[...i],n()):i=[{resolve:n,reject:s}];let o=this.normalizeOptions(r),a=ma.normalizeOrigin(e,r&&r.servername);if(a===void 0){for(let{reject:u}of i)u(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(o in this.sessions){let u=this.sessions[o],g=-1,f=-1,h;for(let p of u){let d=p.remoteSettings.maxConcurrentStreams;if(d=d||p[Yu]||p.destroyed)continue;h||(g=d),m>f&&(h=p,f=m)}}if(h){if(i.length!==1){for(let{reject:p}of i){let d=new Error(`Expected the length of listeners to be 1, got ${i.length}. -Please report this to https://github.com/szmarczak/http2-wrapper/`);p(d)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=dve.connect(e,P({createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u)},r));f[_i]=0,f[Yu]=!1;let h=()=>f[_i]{this.tlsSessionCache.set(u,m)}),f.once("error",m=>{for(let{reject:E}of i)E(m);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let m=this.sessions[o];m.splice(m.indexOf(f),1),m.length===0&&delete this.sessions[o]}else{let m=new Error("Session closed without receiving a SETTINGS frame");m.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:E}of i)E(m);l()}this._tryToCreateNewSession(o,a)});let d=()=>{if(!(!(o in this.queue)||!h())){for(let m of f[ns])if(m in this.queue[o]){let{listeners:E}=this.queue[o][m];for(;E.length!==0&&h();)E.shift().resolve(f);let B=this.queue[o];if(B[m].listeners.length===0&&(delete B[m],Object.keys(B).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[ns]=f.originSet,!!h()&&(d(),ck(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let m=new Error("Agent has been destroyed");for(let E of i)E.reject(m);f.destroy();return}f[ns]=f.originSet;{let m=this.sessions;if(o in m){let E=m[o];E.splice(Ive(E,f,Eve),0,f)}else m[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),d(),l(),f[_i]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,r,i),i.length=0),f.on("remoteSettings",()=>{d(),ck(this.sessions[o],f)})}),f[lW]=f.request,f.request=(m,E)=>{if(f[Yu])throw new Error("The session is gracefully closing. No new streams are allowed.");let B=f[lW](m,E);return f.ref(),++f[_i],f[_i]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,B.once("close",()=>{if(p=h(),--f[_i],!f.destroyed&&!f.closed&&(yve(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let b=f[_i]===0;b&&f.unref(),b&&(this._freeSessionsCount>this.maxFreeSessions||f[Yu])?f.close():(ck(this.sessions[o],f),d())}}),B}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,r,i,n){return new Promise((s,o)=>{this.getSession(e,r,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,r){return ma.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof r.servername=="undefined"&&(r.servername=n),pve.connect(i,n,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[_i]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let i of r)i.destroy(e);for(let r of Object.values(this.queue))for(let i of Object.values(r))i.destroyed=!0;this.queue={}}get freeSessions(){return uW({agent:this,isFree:!0})}get busySessions(){return uW({agent:this,isFree:!1})}};ma.kCurrentStreamsCount=_i;ma.kGracefullyClosing=Yu;AW.exports={Agent:ma,globalAgent:new ma}});var gk=I((Nnt,gW)=>{"use strict";var{Readable:wve}=require("stream"),fW=class extends wve{constructor(e,r){super({highWaterMark:r,autoDestroy:!1});this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};gW.exports=fW});var fk=I((Lnt,hW)=>{"use strict";hW.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var dW=I((Tnt,pW)=>{"use strict";pW.exports=(t,e,r)=>{for(let i of r)t.on(i,(...n)=>e.emit(i,...n))}});var mW=I((Mnt,CW)=>{"use strict";CW.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var EW=I((Knt,IW)=>{"use strict";var qu=(t,e,r)=>{IW.exports[e]=class extends t{constructor(...n){super(typeof r=="string"?r:r(n));this.name=`${super.name} [${e}]`,this.code=e}}};qu(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],i=Array.isArray(r);return i&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${i?"one of":"of"} type ${r}. Received ${typeof t[2]}`});qu(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);qu(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);qu(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);qu(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);qu(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var Ck=I((Unt,yW)=>{"use strict";var Bve=require("http2"),{Writable:Qve}=require("stream"),{Agent:wW,globalAgent:bve}=uk(),vve=gk(),Sve=fk(),xve=dW(),kve=mW(),{ERR_INVALID_ARG_TYPE:hk,ERR_INVALID_PROTOCOL:Pve,ERR_HTTP_HEADERS_SENT:BW,ERR_INVALID_HTTP_TOKEN:Dve,ERR_HTTP_INVALID_HEADER_VALUE:Rve,ERR_INVALID_CHAR:Fve}=EW(),{HTTP2_HEADER_STATUS:QW,HTTP2_HEADER_METHOD:bW,HTTP2_HEADER_PATH:vW,HTTP2_METHOD_CONNECT:Nve}=Bve.constants,Pi=Symbol("headers"),pk=Symbol("origin"),dk=Symbol("session"),SW=Symbol("options"),My=Symbol("flushedHeaders"),yp=Symbol("jobs"),Lve=/^[\^`\-\w!#$%&*+.|~]+$/,Tve=/[^\t\u0020-\u007E\u0080-\u00FF]/,xW=class extends Qve{constructor(e,r,i){super({autoDestroy:!1});let n=typeof e=="string"||e instanceof URL;if(n&&(e=Sve(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(i=r,r=n?e:P({},e)):r=P(P({},e),r),r.h2session)this[dk]=r.h2session;else if(r.agent===!1)this.agent=new wW({maxFreeSessions:0});else if(typeof r.agent=="undefined"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new wW({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=bve;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new hk("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Pve(r.protocol,"https:");let s=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,o=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:a}=r;if(r.timeout=void 0,this[Pi]=Object.create(null),this[yp]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[l,c]of Object.entries(r.headers))this.setHeader(l,c);r.auth&&!("authorization"in this[Pi])&&(this[Pi].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[SW]=r,s===443?(this[pk]=`https://${o}`,":authority"in this[Pi]||(this[Pi][":authority"]=o)):(this[pk]=`https://${o}:${s}`,":authority"in this[Pi]||(this[Pi][":authority"]=`${o}:${s}`)),a&&this.setTimeout(a),i&&this.once("response",i),this[My]=!1}get method(){return this[Pi][bW]}set method(e){e&&(this[Pi][bW]=e.toUpperCase())}get path(){return this[Pi][vW]}set path(e){e&&(this[Pi][vW]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,i){if(this._mustNotHaveABody){i(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let n=()=>this._request.write(e,r,i);this._request?n():this[yp].push(n)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[yp].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[My]||this.destroyed)return;this[My]=!0;let e=this.method===Nve,r=i=>{if(this._request=i,this.destroyed){i.destroy();return}e||xve(i,this,["timeout","continue","close","error"]);let n=o=>(...a)=>{!this.writable&&!this.destroyed?o(...a):this.once("finish",()=>{o(...a)})};i.once("response",n((o,a,l)=>{let c=new vve(this.socket,i.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=o[QW],c.headers=o,c.rawHeaders=l,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,i,Buffer.alloc(0))?this.emit("close"):i.destroy()):(i.on("data",u=>{!c._dumped&&!c.push(u)&&i.pause()}),i.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),i.once("headers",n(o=>this.emit("information",{statusCode:o[QW]}))),i.once("trailers",n((o,a,l)=>{let{res:c}=this;c.trailers=o,c.rawTrailers=l}));let{socket:s}=i.session;this.socket=s,this.connection=s;for(let o of this[yp])o();this.emit("socket",this.socket)};if(this[dk])try{r(this[dk].request(this[Pi]))}catch(i){this.emit("error",i)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[pk],this[SW],this[Pi]))}catch(i){this.emit("error",i)}}}getHeader(e){if(typeof e!="string")throw new hk("name","string",e);return this[Pi][e.toLowerCase()]}get headersSent(){return this[My]}removeHeader(e){if(typeof e!="string")throw new hk("name","string",e);if(this.headersSent)throw new BW("remove");delete this[Pi][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new BW("set");if(typeof e!="string"||!Lve.test(e)&&!kve(e))throw new Dve("Header name",e);if(typeof r=="undefined")throw new Rve(r,e);if(Tve.test(r))throw new Fve("header content",e);this[Pi][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let i=()=>this._request.setTimeout(e,r);return this._request?i():this[yp].push(i),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};yW.exports=xW});var PW=I((Hnt,kW)=>{"use strict";var Mve=require("tls");kW.exports=(t={})=>new Promise((e,r)=>{let i=Mve.connect(t,()=>{t.resolveSocket?(i.off("error",r),e({alpnProtocol:i.alpnProtocol,socket:i})):(i.destroy(),e({alpnProtocol:i.alpnProtocol}))});i.on("error",r)})});var RW=I((Gnt,DW)=>{"use strict";var Ove=require("net");DW.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Ove.isIP(e)?"":e}});var LW=I((jnt,mk)=>{"use strict";var FW=require("http"),Ik=require("https"),Kve=PW(),Uve=lk(),Hve=Ck(),Gve=RW(),jve=fk(),Oy=new Uve({maxSize:100}),wp=new Map,NW=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let i=()=>{t.emit("free",e,r)};e.on("free",i);let n=()=>{t.removeSocket(e,r)};e.on("close",n);let s=()=>{t.removeSocket(e,r),e.off("close",n),e.off("free",i),e.off("agentRemove",s)};e.on("agentRemove",s),t.emit("free",e,r)},Yve=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!Oy.has(e)){if(wp.has(e))return(await wp.get(e)).alpnProtocol;let{path:r,agent:i}=t;t.path=t.socketPath;let n=Kve(t);wp.set(e,n);try{let{socket:s,alpnProtocol:o}=await n;if(Oy.set(e,o),t.path=r,o==="h2")s.destroy();else{let{globalAgent:a}=Ik,l=Ik.Agent.prototype.createConnection;i?i.createConnection===l?NW(i,s,t):s.destroy():a.createConnection===l?NW(a,s,t):s.destroy()}return wp.delete(e),o}catch(s){throw wp.delete(e),s}}return Oy.get(e)};mk.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=jve(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e=_(P(P({ALPNProtocols:["h2","http/1.1"]},t),e),{resolveSocket:!0}),!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let i=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Gve(e),e.port=e.port||(i?443:80),e._defaultAgent=i?Ik.globalAgent:FW.globalAgent;let n=e.agent;if(n){if(n.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=n[i?"https":"http"]}return i&&await Yve(e)==="h2"?(n&&(e.agent=n.http2),new Hve(e,r)):FW.request(e,r)};mk.exports.protocolCache=Oy});var MW=I((Ynt,TW)=>{"use strict";var qve=require("http2"),Jve=uk(),Ek=Ck(),Wve=gk(),zve=LW(),Vve=(t,e,r)=>new Ek(t,e,r),_ve=(t,e,r)=>{let i=new Ek(t,e,r);return i.end(),i};TW.exports=_(P(_(P({},qve),{ClientRequest:Ek,IncomingMessage:Wve}),Jve),{request:Vve,get:_ve,auto:zve})});var wk=I(yk=>{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});var OW=Ca();yk.default=t=>OW.default.nodeStream(t)&&OW.default.function_(t.getBoundary)});var GW=I(Bk=>{"use strict";Object.defineProperty(Bk,"__esModule",{value:!0});var KW=require("fs"),UW=require("util"),HW=Ca(),Xve=wk(),Zve=UW.promisify(KW.stat);Bk.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(HW.default.string(t))return Buffer.byteLength(t);if(HW.default.buffer(t))return t.length;if(Xve.default(t))return UW.promisify(t.getLength.bind(t))();if(t instanceof KW.ReadStream){let{size:r}=await Zve(t.path);return r===0?void 0:r}}});var bk=I(Qk=>{"use strict";Object.defineProperty(Qk,"__esModule",{value:!0});function $ve(t,e,r){let i={};for(let n of r)i[n]=(...s)=>{e.emit(n,...s)},t.on(n,i[n]);return()=>{for(let n of r)t.off(n,i[n])}}Qk.default=$ve});var jW=I(vk=>{"use strict";Object.defineProperty(vk,"__esModule",{value:!0});vk.default=()=>{let t=[];return{once(e,r,i){e.once(r,i),t.push({origin:e,event:r,fn:i})},unhandleAll(){for(let e of t){let{origin:r,event:i,fn:n}=e;r.removeListener(i,n)}t.length=0}}}});var qW=I(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});Bp.TimeoutError=void 0;var eSe=require("net"),tSe=jW(),YW=Symbol("reentry"),rSe=()=>{},Sk=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`);this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};Bp.TimeoutError=Sk;Bp.default=(t,e,r)=>{if(YW in t)return rSe;t[YW]=!0;let i=[],{once:n,unhandleAll:s}=tSe.default(),o=(g,f,h)=>{var p;let d=setTimeout(f,g,g,h);(p=d.unref)===null||p===void 0||p.call(d);let m=()=>{clearTimeout(d)};return i.push(m),m},{host:a,hostname:l}=r,c=(g,f)=>{t.destroy(new Sk(g,f))},u=()=>{for(let g of i)g();s()};if(t.once("error",g=>{if(u(),t.listenerCount("error")===0)throw g}),t.once("close",u),n(t,"response",g=>{n(g,"end",u)}),typeof e.request!="undefined"&&o(e.request,c,"request"),typeof e.socket!="undefined"){let g=()=>{c(e.socket,"socket")};t.setTimeout(e.socket,g),i.push(()=>{t.removeListener("timeout",g)})}return n(t,"socket",g=>{var f;let{socketPath:h}=t;if(g.connecting){let p=Boolean(h!=null?h:eSe.isIP((f=l!=null?l:a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup!="undefined"&&!p&&typeof g.address().address=="undefined"){let d=o(e.lookup,c,"lookup");n(g,"lookup",d)}if(typeof e.connect!="undefined"){let d=()=>o(e.connect,c,"connect");p?n(g,"connect",d()):n(g,"lookup",m=>{m===null&&n(g,"connect",d())})}typeof e.secureConnect!="undefined"&&r.protocol==="https:"&&n(g,"connect",()=>{let d=o(e.secureConnect,c,"secureConnect");n(g,"secureConnect",d)})}if(typeof e.send!="undefined"){let p=()=>o(e.send,c,"send");g.connecting?n(g,"connect",()=>{n(t,"upload-complete",p())}):n(t,"upload-complete",p())}}),typeof e.response!="undefined"&&n(t,"upload-complete",()=>{let g=o(e.response,c,"response");n(t,"response",g)}),u}});var WW=I(xk=>{"use strict";Object.defineProperty(xk,"__esModule",{value:!0});var JW=Ca();xk.default=t=>{t=t;let e={protocol:t.protocol,hostname:JW.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return JW.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var zW=I(kk=>{"use strict";Object.defineProperty(kk,"__esModule",{value:!0});var iSe=require("url"),nSe=["protocol","host","hostname","port","pathname","search"];kk.default=(t,e)=>{var r,i;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(i=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&i!==void 0?i:""}`}let n=new iSe.URL(t);if(e.path){let s=e.path.indexOf("?");s===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,s),e.search=e.path.slice(s+1)),delete e.path}for(let s of nSe)e[s]&&(n[s]=e[s].toString());return n}});var _W=I(Pk=>{"use strict";Object.defineProperty(Pk,"__esModule",{value:!0});var VW=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};Pk.default=VW});var Rk=I(Dk=>{"use strict";Object.defineProperty(Dk,"__esModule",{value:!0});var sSe=async t=>{let e=[],r=0;for await(let i of t)e.push(i),r+=Buffer.byteLength(i);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};Dk.default=sSe});var ZW=I(ql=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});ql.dnsLookupIpVersionToFamily=ql.isDnsLookupIpVersion=void 0;var XW={auto:0,ipv4:4,ipv6:6};ql.isDnsLookupIpVersion=t=>t in XW;ql.dnsLookupIpVersionToFamily=t=>{if(ql.isDnsLookupIpVersion(t))return XW[t];throw new Error("Invalid DNS lookup IP version")}});var Fk=I(Ky=>{"use strict";Object.defineProperty(Ky,"__esModule",{value:!0});Ky.isResponseOk=void 0;Ky.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var e8=I(Nk=>{"use strict";Object.defineProperty(Nk,"__esModule",{value:!0});var $W=new Set;Nk.default=t=>{$W.has(t)||($W.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var t8=I(Lk=>{"use strict";Object.defineProperty(Lk,"__esModule",{value:!0});var ar=Ca(),oSe=(t,e)=>{if(ar.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");ar.assert.any([ar.default.string,ar.default.undefined],t.encoding),ar.assert.any([ar.default.boolean,ar.default.undefined],t.resolveBodyOnly),ar.assert.any([ar.default.boolean,ar.default.undefined],t.methodRewriting),ar.assert.any([ar.default.boolean,ar.default.undefined],t.isStream),ar.assert.any([ar.default.string,ar.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry=P({},e.retry):t.retry={calculateDelay:i=>i.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},ar.default.object(r)?(t.retry=P(P({},t.retry),r),t.retry.methods=[...new Set(t.retry.methods.map(i=>i.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):ar.default.number(r)&&(t.retry.limit=r),ar.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(ar.default.number))),ar.default.object(t.pagination)){e&&(t.pagination=P(P({},e.pagination),t.pagination));let{pagination:i}=t;if(!ar.default.function_(i.transform))throw new Error("`options.pagination.transform` must be implemented");if(!ar.default.function_(i.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!ar.default.function_(i.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!ar.default.function_(i.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};Lk.default=oSe});var r8=I(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.retryAfterStatusCodes=void 0;Qp.retryAfterStatusCodes=new Set([413,429,503]);var aSe=({attemptCount:t,retryOptions:e,error:r,retryAfter:i})=>{if(t>e.limit)return 0;let n=e.methods.includes(r.options.method),s=e.errorCodes.includes(r.code),o=r.response&&e.statusCodes.includes(r.response.statusCode);if(!n||!s&&!o)return 0;if(r.response){if(i)return e.maxRetryAfter===void 0||i>e.maxRetryAfter?0:i;if(r.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(t-1)*1e3+a};Qp.default=aSe});var vp=I(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.UnsupportedProtocolError=Rt.ReadError=Rt.TimeoutError=Rt.UploadError=Rt.CacheError=Rt.HTTPError=Rt.MaxRedirectsError=Rt.RequestError=Rt.setNonEnumerableProperties=Rt.knownHookEvents=Rt.withoutBody=Rt.kIsNormalizedAlready=void 0;var i8=require("util"),n8=require("stream"),ASe=require("fs"),dA=require("url"),s8=require("http"),Tk=require("http"),lSe=require("https"),cSe=h3(),uSe=y3(),o8=tW(),gSe=sW(),fSe=MW(),hSe=Ly(),ce=Ca(),pSe=GW(),a8=wk(),dSe=bk(),A8=qW(),CSe=WW(),l8=zW(),mSe=_W(),ISe=Rk(),c8=ZW(),ESe=Fk(),CA=e8(),ySe=t8(),wSe=r8(),Mk,Ii=Symbol("request"),Uy=Symbol("response"),Ju=Symbol("responseSize"),Wu=Symbol("downloadedSize"),zu=Symbol("bodySize"),Vu=Symbol("uploadedSize"),Hy=Symbol("serverResponsesPiped"),u8=Symbol("unproxyEvents"),g8=Symbol("isFromCache"),Ok=Symbol("cancelTimeouts"),f8=Symbol("startedReading"),_u=Symbol("stopReading"),Gy=Symbol("triggerRead"),mA=Symbol("body"),bp=Symbol("jobs"),h8=Symbol("originalResponse"),p8=Symbol("retryTimeout");Rt.kIsNormalizedAlready=Symbol("isNormalizedAlready");var BSe=ce.default.string(process.versions.brotli);Rt.withoutBody=new Set(["GET","HEAD"]);Rt.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function QSe(t){for(let e in t){let r=t[e];if(!ce.default.string(r)&&!ce.default.number(r)&&!ce.default.boolean(r)&&!ce.default.null_(r)&&!ce.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function bSe(t){return ce.default.object(t)&&!("statusCode"in t)}var Kk=new mSe.default,vSe=async t=>new Promise((e,r)=>{let i=n=>{r(n)};t.pending||e(),t.once("error",i),t.once("ready",()=>{t.off("error",i),e()})}),SSe=new Set([300,301,302,303,304,307,308]),xSe=["context","body","json","form"];Rt.setNonEnumerableProperties=(t,e)=>{let r={};for(let i of t)if(!!i)for(let n of xSe)n in i&&(r[n]={writable:!0,configurable:!0,enumerable:!1,value:i[n]});Object.defineProperties(e,r)};var _r=class extends Error{constructor(e,r,i){var n;super(e);if(Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,i instanceof Uk?(Object.defineProperty(this,"request",{enumerable:!1,value:i}),Object.defineProperty(this,"response",{enumerable:!1,value:i[Uy]}),Object.defineProperty(this,"options",{enumerable:!1,value:i.options})):Object.defineProperty(this,"options",{enumerable:!1,value:i}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,ce.default.string(r.stack)&&ce.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,o=this.stack.slice(s).split(` -`).reverse(),a=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` -`).reverse();for(;a.length!==0&&a[0]===o[0];)o.shift();this.stack=`${this.stack.slice(0,s)}${o.reverse().join(` -`)}${a.reverse().join(` -`)}`}}};Rt.RequestError=_r;var Hk=class extends _r{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e);this.name="MaxRedirectsError"}};Rt.MaxRedirectsError=Hk;var Gk=class extends _r{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request);this.name="HTTPError"}};Rt.HTTPError=Gk;var jk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="CacheError"}};Rt.CacheError=jk;var Yk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="UploadError"}};Rt.UploadError=Yk;var qk=class extends _r{constructor(e,r,i){super(e.message,e,i);this.name="TimeoutError",this.event=e.event,this.timings=r}};Rt.TimeoutError=qk;var jy=class extends _r{constructor(e,r){super(e.message,e,r);this.name="ReadError"}};Rt.ReadError=jy;var Jk=class extends _r{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e);this.name="UnsupportedProtocolError"}};Rt.UnsupportedProtocolError=Jk;var kSe=["socket","connect","continue","information","upgrade","timeout"],Uk=class extends n8.Duplex{constructor(e,r={},i){super({autoDestroy:!1,highWaterMark:0});this[Wu]=0,this[Vu]=0,this.requestInitialized=!1,this[Hy]=new Set,this.redirects=[],this[_u]=!1,this[Gy]=!1,this[bp]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof Tk.IncomingMessage&&(this.options.headers=P(P({},c.headers),this.options.headers))});let{json:o,body:a,form:l}=r;if((o||a||l)&&this._lockWrite(),Rt.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,i)}catch(c){ce.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof ASe.ReadStream&&await vSe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[Ii])===null||c===void 0||c.destroy();return}for(let g of this[bp])g();this[bp].length=0,this.requestInitialized=!0}catch(u){if(u instanceof _r){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,r,i){var n,s,o,a,l;let c=r;if(ce.default.object(e)&&!ce.default.urlInstance(e))r=P(P(P({},i),e),r);else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r=P(P({},i),r),e!==void 0&&(r.url=e),ce.default.urlInstance(r.url)&&(r.url=new dA.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),ce.assert.any([ce.default.string,ce.default.undefined],r.method),ce.assert.any([ce.default.object,ce.default.undefined],r.headers),ce.assert.any([ce.default.string,ce.default.urlInstance,ce.default.undefined],r.prefixUrl),ce.assert.any([ce.default.object,ce.default.undefined],r.cookieJar),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.searchParams),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.cache),ce.assert.any([ce.default.object,ce.default.number,ce.default.undefined],r.timeout),ce.assert.any([ce.default.object,ce.default.undefined],r.context),ce.assert.any([ce.default.object,ce.default.undefined],r.hooks),ce.assert.any([ce.default.boolean,ce.default.undefined],r.decompress),ce.assert.any([ce.default.boolean,ce.default.undefined],r.ignoreInvalidCookies),ce.assert.any([ce.default.boolean,ce.default.undefined],r.followRedirect),ce.assert.any([ce.default.number,ce.default.undefined],r.maxRedirects),ce.assert.any([ce.default.boolean,ce.default.undefined],r.throwHttpErrors),ce.assert.any([ce.default.boolean,ce.default.undefined],r.http2),ce.assert.any([ce.default.boolean,ce.default.undefined],r.allowGetBody),ce.assert.any([ce.default.string,ce.default.undefined],r.localAddress),ce.assert.any([c8.isDnsLookupIpVersion,ce.default.undefined],r.dnsLookupIpVersion),ce.assert.any([ce.default.object,ce.default.undefined],r.https),ce.assert.any([ce.default.boolean,ce.default.undefined],r.rejectUnauthorized),r.https&&(ce.assert.any([ce.default.boolean,ce.default.undefined],r.https.rejectUnauthorized),ce.assert.any([ce.default.function_,ce.default.undefined],r.https.checkServerIdentity),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificateAuthority),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.key),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificate),ce.assert.any([ce.default.string,ce.default.undefined],r.https.passphrase),ce.assert.any([ce.default.string,ce.default.buffer,ce.default.array,ce.default.undefined],r.https.pfx)),ce.assert.any([ce.default.object,ce.default.undefined],r.cacheOptions),ce.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(i==null?void 0:i.headers)?r.headers=P({},r.headers):r.headers=hSe(P(P({},i==null?void 0:i.headers),r.headers)),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(i==null?void 0:i.searchParams)){let h;if(ce.default.string(r.searchParams)||r.searchParams instanceof dA.URLSearchParams)h=new dA.URLSearchParams(r.searchParams);else{QSe(r.searchParams),h=new dA.URLSearchParams;for(let p in r.searchParams){let d=r.searchParams[p];d===null?h.append(p,""):d!==void 0&&h.append(p,d)}}(n=i==null?void 0:i.searchParams)===null||n===void 0||n.forEach((p,d)=>{h.has(d)||h.append(d,p)}),r.searchParams=h}if(r.username=(s=r.username)!==null&&s!==void 0?s:"",r.password=(o=r.password)!==null&&o!==void 0?o:"",ce.default.undefined(r.prefixUrl)?r.prefixUrl=(a=i==null?void 0:i.prefixUrl)!==null&&a!==void 0?a:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),ce.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=l8.default(r.prefixUrl+r.url,r)}else(ce.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=l8.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:h}=r;Object.defineProperty(r,"prefixUrl",{set:d=>{let m=r.url;if(!m.href.startsWith(d))throw new Error(`Cannot change \`prefixUrl\` from ${h} to ${d}: ${m.href}`);r.url=new dA.URL(d+m.href.slice(h.length)),h=d},get:()=>h});let{protocol:p}=r.url;if(p==="unix:"&&(p="http:",r.url=new dA.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),p!=="http:"&&p!=="https:")throw new Jk(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:u}=r;if(u){let{setCookie:h,getCookieString:p}=u;ce.assert.function_(h),ce.assert.function_(p),h.length===4&&p.length===0&&(h=i8.promisify(h.bind(r.cookieJar)),p=i8.promisify(p.bind(r.cookieJar)),r.cookieJar={setCookie:h,getCookieString:p})}let{cache:g}=r;if(g&&(Kk.has(g)||Kk.set(g,new o8((h,p)=>{let d=h[Ii](h,p);return ce.default.promise(d)&&(d.once=(m,E)=>{if(m==="error")d.catch(E);else if(m==="abort")(async()=>{try{(await d).once("abort",E)}catch(B){}})();else throw new Error(`Unknown HTTP2 promise event: ${m}`);return d}),d},g))),r.cacheOptions=P({},r.cacheOptions),r.dnsCache===!0)Mk||(Mk=new uSe.default),r.dnsCache=Mk;else if(!ce.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${ce.default(r.dnsCache)}`);ce.default.number(r.timeout)?r.timeout={request:r.timeout}:i&&r.timeout!==i.timeout?r.timeout=P(P({},i.timeout),r.timeout):r.timeout=P({},r.timeout),r.context||(r.context={});let f=r.hooks===(i==null?void 0:i.hooks);r.hooks=P({},r.hooks);for(let h of Rt.knownHookEvents)if(h in r.hooks)if(ce.default.array(r.hooks[h]))r.hooks[h]=[...r.hooks[h]];else throw new TypeError(`Parameter \`${h}\` must be an Array, got ${ce.default(r.hooks[h])}`);else r.hooks[h]=[];if(i&&!f)for(let h of Rt.knownHookEvents)i.hooks[h].length>0&&(r.hooks[h]=[...i.hooks[h],...r.hooks[h]]);if("family"in r&&CA.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),(i==null?void 0:i.https)&&(r.https=P(P({},i.https),r.https)),"rejectUnauthorized"in r&&CA.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&CA.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&CA.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&CA.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&CA.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&CA.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&CA.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let h in r.agent)if(h!=="http"&&h!=="https"&&h!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${h}\``)}return r.maxRedirects=(l=r.maxRedirects)!==null&&l!==void 0?l:0,Rt.setNonEnumerableProperties([i,c],r),ySe.default(r,i)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,i=!ce.default.undefined(e.form),n=!ce.default.undefined(e.json),s=!ce.default.undefined(e.body),o=i||n||s,a=Rt.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,o){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,i,n].filter(l=>l).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof n8.Readable)&&!ce.default.string(e.body)&&!ce.default.buffer(e.body)&&!a8.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(i&&!ce.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let l=!ce.default.string(r["content-type"]);s?(a8.default(e.body)&&l&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[mA]=e.body):i?(l&&(r["content-type"]="application/x-www-form-urlencoded"),this[mA]=new dA.URLSearchParams(e.form).toString()):(l&&(r["content-type"]="application/json"),this[mA]=e.stringifyJson(e.json));let c=await pSe.default(this[mA],e.headers);ce.default.undefined(r["content-length"])&&ce.default.undefined(r["transfer-encoding"])&&!a&&!ce.default.undefined(c)&&(r["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[zu]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:i}=r;this[h8]=e,r.decompress&&(e=gSe(e));let n=e.statusCode,s=e;s.statusMessage=s.statusMessage?s.statusMessage:s8.STATUS_CODES[n],s.url=r.url.toString(),s.requestUrl=this.requestUrl,s.redirectUrls=this.redirects,s.request=this,s.isFromCache=e.fromCache||!1,s.ip=this.ip,s.retryCount=this.retryCount,this[g8]=s.isFromCache,this[Ju]=Number(e.headers["content-length"])||void 0,this[Uy]=e,e.once("end",()=>{this[Ju]=this[Wu],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new jy(a,this))}),e.once("aborted",()=>{this._beforeError(new jy({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let o=e.headers["set-cookie"];if(ce.default.object(r.cookieJar)&&o){let a=o.map(async l=>r.cookieJar.setCookie(l,i.toString()));r.ignoreInvalidCookies&&(a=a.map(async l=>l.catch(()=>{})));try{await Promise.all(a)}catch(l){this._beforeError(l);return}}if(r.followRedirect&&e.headers.location&&SSe.has(n)){if(e.resume(),this[Ii]&&(this[Ok](),delete this[Ii],this[u8]()),(n===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[mA]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new Hk(this));return}try{let l=Buffer.from(e.headers.location,"binary").toString(),c=new dA.URL(l,i),u=c.toString();decodeURI(u),c.hostname!==i.hostname||c.port!==i.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(c.username=r.username,c.password=r.password),this.redirects.push(u),r.url=c;for(let g of r.hooks.beforeRedirect)await g(r,s);this.emit("redirect",s,r),await this._makeRequest()}catch(l){this._beforeError(l);return}return}if(r.isStream&&r.throwHttpErrors&&!ESe.isResponseOk(s)){this._beforeError(new Gk(s));return}e.on("readable",()=>{this[Gy]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[Hy])if(!a.headersSent){for(let l in e.headers){let c=r.decompress?l!=="content-encoding":!0,u=e.headers[l];c&&a.setHeader(l,u)}a.statusCode=n}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:i,url:n}=r;cSe.default(e),this[Ok]=A8.default(e,i,n);let s=r.cache?"cacheableResponse":"response";e.once(s,l=>{this._onResponse(l)}),e.once("error",l=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),l=l instanceof A8.TimeoutError?new qk(l,this.timings,this):new _r(l.message,l,this),this._beforeError(l)}),this[u8]=dSe.default(e,this,kSe),this[Ii]=e,this.emit("uploadProgress",this.uploadProgress);let o=this[mA],a=this.redirects.length===0?this:e;ce.default.nodeStream(o)?(o.pipe(a),o.once("error",l=>{this._beforeError(new Yk(l,this))})):(this._unlockWrite(),ce.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((i,n)=>{Object.assign(r,CSe.default(e)),delete r.url;let s,o=Kk.get(r.cache)(r,async a=>{a._readableState.autoDestroy=!1,s&&(await s).emit("cacheableResponse",a),i(a)});r.url=e,o.once("error",n),o.once("request",async a=>{s=a,i(s)})})}async _makeRequest(){var e,r,i,n,s;let{options:o}=this,{headers:a}=o;for(let E in a)if(ce.default.undefined(a[E]))delete a[E];else if(ce.default.null_(a[E]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${E}\` header`);if(o.decompress&&ce.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=BSe?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){let E=await o.cookieJar.getCookieString(o.url.toString());ce.default.nonEmptyString(E)&&(o.headers.cookie=E)}for(let E of o.hooks.beforeRequest){let B=await E(o);if(!ce.default.undefined(B)){o.request=()=>B;break}}o.body&&this[mA]!==o.body&&(this[mA]=o.body);let{agent:l,request:c,timeout:u,url:g}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),g.hostname==="unix"){let E=/(?.+?):(?.+)/.exec(`${g.pathname}${g.search}`);if(E==null?void 0:E.groups){let{socketPath:B,path:b}=E.groups;Object.assign(o,{socketPath:B,path:b,host:""})}}let f=g.protocol==="https:",h;o.http2?h=fSe.auto:h=f?lSe.request:s8.request;let p=(e=o.request)!==null&&e!==void 0?e:h,d=o.cache?this._createCacheableRequest:p;l&&!o.http2&&(o.agent=l[f?"https":"http"]),o[Ii]=p,delete o.request,delete o.timeout;let m=o;if(m.shared=(r=o.cacheOptions)===null||r===void 0?void 0:r.shared,m.cacheHeuristic=(i=o.cacheOptions)===null||i===void 0?void 0:i.cacheHeuristic,m.immutableMinTimeToLive=(n=o.cacheOptions)===null||n===void 0?void 0:n.immutableMinTimeToLive,m.ignoreCargoCult=(s=o.cacheOptions)===null||s===void 0?void 0:s.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{m.family=c8.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch(E){throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(m.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(m.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(m.ca=o.https.certificateAuthority),o.https.certificate&&(m.cert=o.https.certificate),o.https.key&&(m.key=o.https.key),o.https.passphrase&&(m.passphrase=o.https.passphrase),o.https.pfx&&(m.pfx=o.https.pfx));try{let E=await d(g,m);ce.default.undefined(E)&&(E=h(g,m)),o.request=c,o.timeout=u,o.agent=l,o.https&&("rejectUnauthorized"in o.https&&delete m.rejectUnauthorized,o.https.checkServerIdentity&&delete m.checkServerIdentity,o.https.certificateAuthority&&delete m.ca,o.https.certificate&&delete m.cert,o.https.key&&delete m.key,o.https.passphrase&&delete m.passphrase,o.https.pfx&&delete m.pfx),bSe(E)?this._onRequest(E):this.writable?(this.once("finish",()=>{this._onResponse(E)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(E)}catch(E){throw E instanceof o8.CacheError?new jk(E,this):new _r(E.message,E,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new _r(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[_u])return;let{options:r}=this,i=this.retryCount+1;this[_u]=!0,e instanceof _r||(e=new _r(e.message,e,this));let n=e,{response:s}=n;(async()=>{if(s&&!s.body){s.setEncoding(this._readableState.encoding);try{s.rawBody=await ISe.default(s),s.body=s.rawBody.toString()}catch(o){}}if(this.listenerCount("retry")!==0){let o;try{let a;s&&"retry-after"in s.headers&&(a=Number(s.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(s.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),o=await r.retry.calculateDelay({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:wSe.default({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:0})})}catch(a){this._error(new _r(a.message,a,this));return}if(o){let a=async()=>{try{for(let l of this.options.hooks.beforeRetry)await l(this.options,n,i)}catch(l){this._error(new _r(l.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",i,e))};this[p8]=setTimeout(a,o);return}}this._error(n)})()}_read(){this[Gy]=!0;let e=this[Uy];if(e&&!this[_u]){e.readableLength&&(this[Gy]=!1);let r;for(;(r=e.read())!==null;){this[Wu]+=r.length,this[f8]=!0;let i=this.downloadProgress;i.percent<1&&this.emit("downloadProgress",i),this.push(r)}}}_write(e,r,i){let n=()=>{this._writeRequest(e,r,i)};this.requestInitialized?n():this[bp].push(n)}_writeRequest(e,r,i){this[Ii].destroyed||(this._progressCallbacks.push(()=>{this[Vu]+=Buffer.byteLength(e,r);let n=this.uploadProgress;n.percent<1&&this.emit("uploadProgress",n)}),this[Ii].write(e,r,n=>{!n&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),i(n)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Ii in this)){e();return}if(this[Ii].destroyed){e();return}this[Ii].end(i=>{i||(this[zu]=this[Vu],this.emit("uploadProgress",this.uploadProgress),this[Ii].emit("upload-complete")),e(i)})};this.requestInitialized?r():this[bp].push(r)}_destroy(e,r){var i;this[_u]=!0,clearTimeout(this[p8]),Ii in this&&(this[Ok](),((i=this[Uy])===null||i===void 0?void 0:i.complete)||this[Ii].destroy()),e!==null&&!ce.default.undefined(e)&&!(e instanceof _r)&&(e=new _r(e.message,e,this)),r(e)}get _isAboutToError(){return this[_u]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,i;return((r=(e=this[Ii])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!((i=this[h8])===null||i===void 0?void 0:i.complete)}get socket(){var e,r;return(r=(e=this[Ii])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[Ju]?e=this[Wu]/this[Ju]:this[Ju]===this[Wu]?e=1:e=0,{percent:e,transferred:this[Wu],total:this[Ju]}}get uploadProgress(){let e;return this[zu]?e=this[Vu]/this[zu]:this[zu]===this[Vu]?e=1:e=0,{percent:e,transferred:this[Vu],total:this[zu]}}get timings(){var e;return(e=this[Ii])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[g8]}pipe(e,r){if(this[f8])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof Tk.ServerResponse&&this[Hy].add(e),super.pipe(e,r)}unpipe(e){return e instanceof Tk.ServerResponse&&this[Hy].delete(e),super.unpipe(e),this}};Rt.default=Uk});var Sp=I(Ms=>{"use strict";var PSe=Ms&&Ms.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),DSe=Ms&&Ms.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&PSe(e,t,r)};Object.defineProperty(Ms,"__esModule",{value:!0});Ms.CancelError=Ms.ParseError=void 0;var d8=vp(),C8=class extends d8.RequestError{constructor(e,r){let{options:i}=r.request;super(`${e.message} in "${i.url.toString()}"`,e,r.request);this.name="ParseError"}};Ms.ParseError=C8;var m8=class extends d8.RequestError{constructor(e){super("Promise was canceled",{},e);this.name="CancelError"}get isCanceled(){return!0}};Ms.CancelError=m8;DSe(vp(),Ms)});var E8=I(Wk=>{"use strict";Object.defineProperty(Wk,"__esModule",{value:!0});var I8=Sp(),RSe=(t,e,r,i)=>{let{rawBody:n}=t;try{if(e==="text")return n.toString(i);if(e==="json")return n.length===0?"":r(n.toString());if(e==="buffer")return n;throw new I8.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(s){throw new I8.ParseError(s,t)}};Wk.default=RSe});var zk=I(IA=>{"use strict";var FSe=IA&&IA.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),NSe=IA&&IA.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&FSe(e,t,r)};Object.defineProperty(IA,"__esModule",{value:!0});var LSe=require("events"),TSe=Ca(),MSe=g3(),Yy=Sp(),y8=E8(),w8=vp(),OSe=bk(),KSe=Rk(),B8=Fk(),USe=["request","response","redirect","uploadProgress","downloadProgress"];function Q8(t){let e,r,i=new LSe.EventEmitter,n=new MSe((o,a,l)=>{let c=u=>{let g=new w8.default(void 0,t);g.retryCount=u,g._noPipe=!0,l(()=>g.destroy()),l.shouldReject=!1,l(()=>a(new Yy.CancelError(g))),e=g,g.once("response",async p=>{var d;if(p.retryCount=u,p.request.aborted)return;let m;try{m=await KSe.default(g),p.rawBody=m}catch(R){return}if(g._isAboutToError)return;let E=((d=p.headers["content-encoding"])!==null&&d!==void 0?d:"").toLowerCase(),B=["gzip","deflate","br"].includes(E),{options:b}=g;if(B&&!b.decompress)p.body=m;else try{p.body=y8.default(p,b.responseType,b.parseJson,b.encoding)}catch(R){if(p.body=m.toString(),B8.isResponseOk(p)){g._beforeError(R);return}}try{for(let[R,H]of b.hooks.afterResponse.entries())p=await H(p,async L=>{let K=w8.default.normalizeArguments(void 0,_(P({},L),{retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1}),b);K.hooks.afterResponse=K.hooks.afterResponse.slice(0,R);for(let ne of K.hooks.beforeRetry)await ne(K);let J=Q8(K);return l(()=>{J.catch(()=>{}),J.cancel()}),J})}catch(R){g._beforeError(new Yy.RequestError(R.message,R,g));return}if(!B8.isResponseOk(p)){g._beforeError(new Yy.HTTPError(p));return}r=p,o(g.options.resolveBodyOnly?p.body:p)});let f=p=>{if(n.isCanceled)return;let{options:d}=g;if(p instanceof Yy.HTTPError&&!d.throwHttpErrors){let{response:m}=p;o(g.options.resolveBodyOnly?m.body:m);return}a(p)};g.once("error",f);let h=g.options.body;g.once("retry",(p,d)=>{var m,E;if(h===((m=d.request)===null||m===void 0?void 0:m.options.body)&&TSe.default.nodeStream((E=d.request)===null||E===void 0?void 0:E.options.body)){f(d);return}c(p)}),OSe.default(g,i,USe)};c(0)});n.on=(o,a)=>(i.on(o,a),n);let s=o=>{let a=(async()=>{await n;let{options:l}=r.request;return y8.default(r,o,l.parseJson,l.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(n)),a};return n.json=()=>{let{headers:o}=e.options;return!e.writableFinished&&o.accept===void 0&&(o.accept="application/json"),s("json")},n.buffer=()=>s("buffer"),n.text=()=>s("text"),n}IA.default=Q8;NSe(Sp(),IA)});var b8=I(Vk=>{"use strict";Object.defineProperty(Vk,"__esModule",{value:!0});var HSe=Sp();function GSe(t,...e){let r=(async()=>{if(t instanceof HSe.RequestError)try{for(let n of e)if(n)for(let s of n)t=await s(t)}catch(n){t=n}throw t})(),i=()=>r;return r.json=i,r.text=i,r.buffer=i,r.on=i,r}Vk.default=GSe});var x8=I(_k=>{"use strict";Object.defineProperty(_k,"__esModule",{value:!0});var v8=Ca();function S8(t){for(let e of Object.values(t))(v8.default.plainObject(e)||v8.default.array(e))&&S8(e);return Object.freeze(t)}_k.default=S8});var P8=I(k8=>{"use strict";Object.defineProperty(k8,"__esModule",{value:!0})});var Xk=I(ss=>{"use strict";var jSe=ss&&ss.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),YSe=ss&&ss.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&jSe(e,t,r)};Object.defineProperty(ss,"__esModule",{value:!0});ss.defaultHandler=void 0;var D8=Ca(),os=zk(),qSe=b8(),qy=vp(),JSe=x8(),WSe={RequestError:os.RequestError,CacheError:os.CacheError,ReadError:os.ReadError,HTTPError:os.HTTPError,MaxRedirectsError:os.MaxRedirectsError,TimeoutError:os.TimeoutError,ParseError:os.ParseError,CancelError:os.CancelError,UnsupportedProtocolError:os.UnsupportedProtocolError,UploadError:os.UploadError},zSe=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:Jy}=qy.default,R8=(...t)=>{let e;for(let r of t)e=Jy(void 0,r,e);return e},VSe=t=>t.isStream?new qy.default(void 0,t):os.default(t),_Se=t=>"defaults"in t&&"options"in t.defaults,XSe=["get","post","put","patch","head","delete"];ss.defaultHandler=(t,e)=>e(t);var F8=(t,e)=>{if(t)for(let r of t)r(e)},N8=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(i=>(n,s)=>{let o,a=i(n,l=>(o=s(l),o));if(a!==o&&!n.isStream&&o){let l=a,{then:c,catch:u,finally:g}=l;Object.setPrototypeOf(l,Object.getPrototypeOf(o)),Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)),l.then=c,l.catch=u,l.finally=g}return a});let e=(i,n={},s)=>{var o,a;let l=0,c=u=>t.handlers[l++](u,l===t.handlers.length?VSe:c);if(D8.default.plainObject(i)){let u=P(P({},i),n);qy.setNonEnumerableProperties([i,n],u),n=u,i=void 0}try{let u;try{F8(t.options.hooks.init,n),F8((o=n.hooks)===null||o===void 0?void 0:o.init,n)}catch(f){u=f}let g=Jy(i,n,s!=null?s:t.options);if(g[qy.kIsNormalizedAlready]=!0,u)throw new os.RequestError(u.message,u,g);return c(g)}catch(u){if(n.isStream)throw u;return qSe.default(u,t.options.hooks.beforeError,(a=n.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...i)=>{let n=[t.options],s=[...t._rawHandlers],o;for(let a of i)_Se(a)?(n.push(a.defaults.options),s.push(...a.defaults._rawHandlers),o=a.defaults.mutableDefaults):(n.push(a),"handlers"in a&&s.push(...a.handlers),o=a.mutableDefaults);return s=s.filter(a=>a!==ss.defaultHandler),s.length===0&&s.push(ss.defaultHandler),N8({options:R8(...n),handlers:s,mutableDefaults:Boolean(o)})};let r=async function*(i,n){let s=Jy(i,n,t.options);s.resolveBodyOnly=!1;let o=s.pagination;if(!D8.default.object(o))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:l}=o,c=0;for(;c{let s=[];for await(let o of r(i,n))s.push(o);return s},e.paginate.each=r,e.stream=(i,n)=>e(i,_(P({},n),{isStream:!0}));for(let i of XSe)e[i]=(n,s)=>e(n,_(P({},s),{method:i})),e.stream[i]=(n,s)=>e(n,_(P({},s),{method:i,isStream:!0}));return Object.assign(e,WSe),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:JSe.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=R8,e};ss.default=N8;YSe(P8(),ss)});var zy=I((Ia,Wy)=>{"use strict";var ZSe=Ia&&Ia.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),L8=Ia&&Ia.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&ZSe(e,t,r)};Object.defineProperty(Ia,"__esModule",{value:!0});var $Se=require("url"),T8=Xk(),exe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let i of e){let n=i.split(";");if(n[1].includes("next")){r=n[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new $Se.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:Infinity,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[T8.defaultHandler],mutableDefaults:!1},Zk=T8.default(exe);Ia.default=Zk;Wy.exports=Zk;Wy.exports.default=Zk;Wy.exports.__esModule=!0;L8(Xk(),Ia);L8(zk(),Ia)});var U8=I(Xu=>{"use strict";var fst=require("net"),txe=require("tls"),$k=require("http"),M8=require("https"),rxe=require("events"),hst=require("assert"),ixe=require("util");Xu.httpOverHttp=nxe;Xu.httpsOverHttp=sxe;Xu.httpOverHttps=oxe;Xu.httpsOverHttps=axe;function nxe(t){var e=new Ea(t);return e.request=$k.request,e}function sxe(t){var e=new Ea(t);return e.request=$k.request,e.createSocket=O8,e.defaultPort=443,e}function oxe(t){var e=new Ea(t);return e.request=M8.request,e}function axe(t){var e=new Ea(t);return e.request=M8.request,e.createSocket=O8,e.defaultPort=443,e}function Ea(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||$k.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(i,n,s,o){for(var a=K8(n,s,o),l=0,c=e.requests.length;l=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",l),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function l(){s.emit("free",a,o)}function c(u){s.removeSocket(a),a.removeListener("free",l),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Ea.prototype.createSocket=function(e,r){var i=this,n={};i.sockets.push(n);var s=eP({},i.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),EA("making CONNECT request");var o=i.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",l),o.once("connect",c),o.once("error",u),o.end();function a(g){g.upgrade=!0}function l(g,f,h){process.nextTick(function(){c(g,f,h)})}function c(g,f,h){if(o.removeAllListeners(),f.removeAllListeners(),g.statusCode!==200){EA("tunneling socket could not be established, statusCode=%d",g.statusCode),f.destroy();var p=new Error("tunneling socket could not be established, statusCode="+g.statusCode);p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}if(h.length>0){EA("got illegal response body from proxy"),f.destroy();var p=new Error("got illegal response body from proxy");p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}return EA("tunneling connection has established"),i.sockets[i.sockets.indexOf(n)]=f,r(f)}function u(g){o.removeAllListeners(),EA(`tunneling socket could not be established, cause=%s -`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};Ea.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function O8(t,e){var r=this;Ea.prototype.createSocket.call(r,t,function(i){var n=t.request.getHeader("host"),s=eP({},r.options,{socket:i,servername:n?n.replace(/:.*$/,""):t.host}),o=txe.connect(0,s);r.sockets[r.sockets.indexOf(i)]=o,e(o)})}function K8(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function eP(t){for(var e=1,r=arguments.length;e{H8.exports=U8()});var bz=I((xot,sP)=>{var ez=Object.assign({},require("fs")),oe=typeof oe!="undefined"?oe:{},kp={},wA;for(wA in oe)oe.hasOwnProperty(wA)&&(kp[wA]=oe[wA]);var oP=[],tz="./this.program",rz=function(t,e){throw e},iz=!1,Wl=!0,Pp="";function dxe(t){return oe.locateFile?oe.locateFile(t,Pp):Pp+t}var Xy,aP,Zy,AP;Wl&&(iz?Pp=require("path").dirname(Pp)+"/":Pp=__dirname+"/",Xy=function(e,r){var i=sz(e);return i?r?i:i.toString():(Zy||(Zy=ez),AP||(AP=require("path")),e=AP.normalize(e),Zy.readFileSync(e,r?null:"utf8"))},aP=function(e){var r=Xy(e,!0);return r.buffer||(r=new Uint8Array(r)),nz(r.buffer),r},process.argv.length>1&&(tz=process.argv[1].replace(/\\/g,"/")),oP=process.argv.slice(2),typeof sP!="undefined"&&(sP.exports=oe),rz=function(t){process.exit(t)},oe.inspect=function(){return"[Emscripten Module object]"});var $y=oe.print||console.log.bind(console),Di=oe.printErr||console.warn.bind(console);for(wA in kp)kp.hasOwnProperty(wA)&&(oe[wA]=kp[wA]);kp=null;oe.arguments&&(oP=oe.arguments);oe.thisProgram&&(tz=oe.thisProgram);oe.quit&&(rz=oe.quit);var Cxe=16;function mxe(t,e){return e||(e=Cxe),Math.ceil(t/e)*e}var Ixe=0,Exe=function(t){Ixe=t},lP;oe.wasmBinary&&(lP=oe.wasmBinary);var Pst=oe.noExitRuntime||!0;typeof WebAssembly!="object"&&Gr("no native wasm support detected");function yxe(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return Zi[t>>0];case"i8":return Zi[t>>0];case"i16":return cP[t>>1];case"i32":return _e[t>>2];case"i64":return _e[t>>2];case"float":return oz[t>>2];case"double":return az[t>>3];default:Gr("invalid type for getValue: "+e)}return null}var ew,Az=!1,wxe;function nz(t,e){t||Gr("Assertion failed: "+e)}function lz(t){var e=oe["_"+t];return nz(e,"Cannot call unknown function "+t+", make sure it is exported"),e}function vxe(t,e,r,i,n){var s={string:function(h){var p=0;if(h!=null&&h!==0){var d=(h.length<<2)+1;p=gz(d),uz(h,p,d)}return p},array:function(h){var p=gz(h.length);return Bxe(h,p),p}};function o(h){return e==="string"?cz(h):e==="boolean"?Boolean(h):h}var a=lz(t),l=[],c=0;if(i)for(var u=0;u=i);)++n;if(n-e>16&&t.subarray&&fz)return fz.decode(t.subarray(e,n));for(var s="";e>10,56320|c&1023)}}return s}function cz(t,e){return t?Zu($u,t,e):""}function tw(t,e,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343){var l=t.charCodeAt(++o);a=65536+((a&1023)<<10)|l&1023}if(a<=127){if(r>=s)break;e[r++]=a}else if(a<=2047){if(r+1>=s)break;e[r++]=192|a>>6,e[r++]=128|a&63}else if(a<=65535){if(r+2>=s)break;e[r++]=224|a>>12,e[r++]=128|a>>6&63,e[r++]=128|a&63}else{if(r+3>=s)break;e[r++]=240|a>>18,e[r++]=128|a>>12&63,e[r++]=128|a>>6&63,e[r++]=128|a&63}}return e[r]=0,r-n}function uz(t,e,r){return tw(t,$u,e,r)}function rw(t){for(var e=0,r=0;r=55296&&i<=57343&&(i=65536+((i&1023)<<10)|t.charCodeAt(++r)&1023),i<=127?++e:i<=2047?e+=2:i<=65535?e+=3:e+=4}return e}function uP(t){var e=rw(t)+1,r=hz(e);return r&&tw(t,Zi,r,e),r}function Bxe(t,e){Zi.set(t,e)}function xxe(t,e){return t%e>0&&(t+=e-t%e),t}var gP,Zi,$u,cP,kxe,_e,Pxe,oz,az;function pz(t){gP=t,oe.HEAP8=Zi=new Int8Array(t),oe.HEAP16=cP=new Int16Array(t),oe.HEAP32=_e=new Int32Array(t),oe.HEAPU8=$u=new Uint8Array(t),oe.HEAPU16=kxe=new Uint16Array(t),oe.HEAPU32=Pxe=new Uint32Array(t),oe.HEAPF32=oz=new Float32Array(t),oe.HEAPF64=az=new Float64Array(t)}var Dst=oe.INITIAL_MEMORY||16777216,fP,dz=[],Cz=[],mz=[],Dxe=!1;function Fxe(){if(oe.preRun)for(typeof oe.preRun=="function"&&(oe.preRun=[oe.preRun]);oe.preRun.length;)Rxe(oe.preRun.shift());hP(dz)}function Nxe(){Dxe=!0,!oe.noFSInit&&!y.init.initialized&&y.init(),BA.init(),hP(Cz)}function Txe(){if(oe.postRun)for(typeof oe.postRun=="function"&&(oe.postRun=[oe.postRun]);oe.postRun.length;)Lxe(oe.postRun.shift());hP(mz)}function Rxe(t){dz.unshift(t)}function Mxe(t){Cz.unshift(t)}function Lxe(t){mz.unshift(t)}var zl=0,pP=null,Dp=null;function Oxe(t){return t}function Iz(t){zl++,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl)}function dP(t){if(zl--,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl),zl==0&&(pP!==null&&(clearInterval(pP),pP=null),Dp)){var e=Dp;Dp=null,e()}}oe.preloadedImages={};oe.preloadedAudios={};function Gr(t){oe.onAbort&&oe.onAbort(t),t+="",Di(t),Az=!0,wxe=1,t="abort("+t+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(t);throw e}var Ez="data:application/octet-stream;base64,";function yz(t){return t.startsWith(Ez)}var Rp="data:application/octet-stream;base64,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AkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALIANB/wFxRQRAIAIgAGsPCwNAIAItAAEhAyACQQFqIgEhAiADDQALCyABIABrC2EBAX8jAEEQayICIAA2AgggAiABNwMAAkAgAikDACACKAIIKQMIVgRAIAIoAghBADoAACACQX82AgwMAQsgAigCCEEBOgAAIAIoAgggAikDADcDECACQQA2AgwLIAIoAgwL7wEBAX8jAEEgayICJAAgAiAANgIYIAIgATcDECACIAIoAhhCCBAeNgIMAkAgAigCDEUEQCACQX82AhwMAQsgAigCDCACKQMQQv8BgzwAACACKAIMIAIpAxBCCIhC/wGDPAABIAIoAgwgAikDEEIQiEL/AYM8AAIgAigCDCACKQMQQhiIQv8BgzwAAyACKAIMIAIpAxBCIIhC/wGDPAAEIAIoAgwgAikDEEIoiEL/AYM8AAUgAigCDCACKQMQQjCIQv8BgzwABiACKAIMIAIpAxBCOIhC/wGDPAAHIAJBADYCHAsgAigCHBogAkEgaiQAC4cDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEUNACADKQMYQv///////////wBWDQAgAykDGFANASADKAIgDQELIAMoAiRBDGpBEkEAEBQgA0J/NwMoDAELIAMoAiQtADVBAXEEQCADQn83AygMAQsCfyMAQRBrIgAgAygCJDYCDCAAKAIMLQA0QQFxCwRAIANCADcDKAwBCyADKQMYUARAIANCADcDKAwBCyADQgA3AxADQCADKQMQIAMpAxhUBEAgAyADKAIkIAMoAiAgAykDEKdqIAMpAxggAykDEH1BARAhIgI3AwggAkIAUwRAIAMoAiRBAToANSADKQMQUARAIANCfzcDKAwECyADIAMpAxA3AygMAwsgAykDCFAEQCADKAIkQQE6ADQFIAMgAykDCCADKQMQfDcDEAwCCwsLIAMgAykDEDcDKAsgAykDKCECIANBMGokACACCzYBAX8jAEEQayIBIAA2AgwCfiABKAIMLQAAQQFxBEAgASgCDCkDCCABKAIMKQMQfQwBC0IACwuyAQIBfwF+IwBBEGsiASQAIAEgADYCBCABIAEoAgRC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AkEBNgIQIAJBADYCCANAAkAgAigCCCACKAIYLwEETw0AAkAgAigCDCACKAIIai0AAEEfSwRAIAIoAgwgAigCCGotAABBgAFJDQELIAIoAgwgAigCCGotAABBDUYNACACKAIMIAIoAghqLQAAQQpGDQAgAigCDCACKAIIai0AAEEJRgRADAELIAJBAzYCEAJAIAIoAgwgAigCCGotAABB4AFxQcABRgRAIAJBATYCAAwBCwJAIAIoAgwgAigCCGotAABB8AFxQeABRgRAIAJBAjYCAAwBCwJAIAIoAgwgAigCCGotAABB+AFxQfABRgRAIAJBAzYCAAwBCyACQQQ2AhAMBAsLCyACKAIYLwEEIAIoAgggAigCAGpNBEAgAkEENgIQDAILIAJBATYCBANAIAIoAgQgAigCAE0EQCACKAIMIAIoAgggAigCBGpqLQAAQcABcUGAAUcEQCACQQQ2AhAMBgUgAiACKAIEQQFqNgIEDAILAAsLIAIgAigCACACKAIIajYCCAsgAiACKAIIQQFqNgIIDAELCwsgAigCGCACKAIQNgIIIAIoAhQEQAJAIAIoAhRBAkcNACACKAIQQQNHDQAgAkECNgIQIAIoAhhBAjYCCAsCQCACKAIUIAIoAhBGDQAgAigCEEEBRg0AIAJBBTYCHAwCCwsgAiACKAIQNgIcCyACKAIcC2oBAX8jAEEQayIBIAA2AgwgASgCDEIANwMAIAEoAgxBADYCCCABKAIMQn83AxAgASgCDEEANgIsIAEoAgxBfzYCKCABKAIMQgA3AxggASgCDEIANwMgIAEoAgxBADsBMCABKAIMQQA7ATILUgECf0GQlwEoAgAiASAAQQNqQXxxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABATRQ0BC0GQlwEgADYCACABDwtBtJsBQTA2AgBBfwuNBQEDfyMAQRBrIgEkACABIAA2AgwgASgCDARAIAEoAgwoAgAEQCABKAIMKAIAEDEaIAEoAgwoAgAQGwsgASgCDCgCHBAVIAEoAgwoAiAQJSABKAIMKAIkECUgASgCDCgCUCECIwBBEGsiACQAIAAgAjYCDCAAKAIMBEAgACgCDCgCEARAIABBADYCCANAIAAoAgggACgCDCgCAEkEQCAAKAIMKAIQIAAoAghBAnRqKAIABEAgACgCDCgC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A3EQHwsgAygCpAEoAhQgA0GeAWogA0GcAWoQgQEgAygCTCADLwGeARAfIAMoAkwgAy8BnAEQHwJAAkAgAy0AhQFBAXFFDQAgAygCpAEpAyhCFFoNACADKAJMQQAQIAwBCyADKAJMIAMoAqQBKAIYECALAkACQCADKAKgAUGAAnFBgAJHDQAgAygCpAEpAyBC/////w9UBEAgAygCpAEpAyhC/////w9UDQELIAMoAkxBfxAgIAMoAkxBfxAgDAELAkAgAygCpAEpAyBC/////w9UBEAgAygCTCADKAKkASkDIKcQIAwBCyADKAJMQX8QIAsCQCADKAKkASkDKEL/////D1QEQCADKAJMIAMoAqQBKQMopxAgDAELIAMoAkxBfxAgCwsgAygCTCADKAKkASgCMBBTQf//A3EQHyADIAMoAqQBKAI0IAMoAqABEIYBQf//A3EgAygCkAFBgAYQhgFB//8DcWo2AogBIAMoAkwgAygCiAFB//8DcRAfIAMoAqABQYACcUUEQCADKAJMIAMoAqQBKAI4EFNB//8DcRAfIAMoAkwgAygCpAEoAjxB//8DcRAfIAMoAkwgAygCpAEvAUAQHyADKAJMIAMoAqQBKAJEECACQCADKAKkASkDSEL/////D1QEQCADKAJMIAMoAqQBKQNIpxAgDAELIAMoAkxBfxAgCwsCfyMAQRBrIgAgAygCTDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAJMEBYgAygCkAEQIyADQX82AqwBDAELIAMoAqgBIANB0ABqAn4jAEEQayIAIAMoAkw2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IACwsQNUEASARAIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCTBAWIAMoAqQBKAIwBEAgAygCqAEgAygCpAEoAjAQigFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABBEAgAygCqAEgAygCkAFBgAYQhQFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABECMgAygCpAEoAjQEQCADKAKoASADKAKkASgCNCADKAKgARCFAUEASARAIANBfzYCrAEMAgsLIAMoAqABQYACcUUEQCADKAKkASgCOARAIAMoAqgBIAMoAqQBKAI4EIoB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HCAAIAAoAhRBAWo2AhQMAQsLIAAoAggQR0EBcUUEQCAAKAIgQRRBABAUIAAoAggQFiAAQX82AiwMAQsgACgCCBAWIAAgACgCHDYCLAsgACgCLCECIABBMGokACADIAIiADYCBCAAQQBIBEAgA0IANwMoDAELIAMpAwggAygCBK18Qv///////////wBWBEAgAygCFEEEQRYQFCADQgA3AygMAQsgAyADKQMIIAMoAgStfDcDKAsgAykDKCEBIANBMGokACABC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQoAhAgBCgCDCAEKAIYQQhqEJIBNgIcCyAEKAIcIQAgBEEgaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwCQAJAIAEoAgwoAiRBAUYNACABKAIMKAIkQQJGDQAMAQsgASgCDEEAQgBBChAhGiABKAIMQQA2AiQLIAFBEGokAAumAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCCC0AKEEBcQRAIAJBfzYCDAwBCyACKAIIKAIABEAgAigCCCgCACACKAIEEGhBAEgEQCACKAIIQQxqIAIoAggoAgAQFyACQX82AgwMAgsLIAIoAgggAkEEakIEQRMQIUIAUwRAIAJBfzYCDAwBCyACQQA2AgwLIAIoAgwhACACQRBqJAAgAAuNCAIBfwF+IwBBkAFrIgMkACADIAA2AoQBIAMgATYCgAEgAyACNgJ8IAMQTwJAIAMoAoABKQMIQgBSBEAgAyADKAKAASgCACgCACkDSDcDYCADIAMoAoABKAIAKAIAKQNINwNoDAELIANCADcDYCADQgA3A2gLIANCADcDcAJAA0AgAykDcCADKAKAASkDCFQEQCADKAKAASgCACADKQNwp0EEdGooAgApA0ggAykDaFQEQCADIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSDcDaAsgAykDaCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAyADKAKAASgCACADKQNwp0EEdGooAgApA0ggAygCgAEoAgAgAykDcKdBBHRqKAIAKQMgfCADKAKAASgCACADKQNwp0EEdGooAgAoAjAQU0H//wNxrXxC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DEECdGooAgBBAnRqLwEASA0AAkAgAygCGCADKAIQQQJ0ai8BACADKAIYIAMoAhxB3BZqIAMoAgxBAnRqKAIAQQJ0ai8BAEcNACADKAIQIAMoAhxB2Chqai0AACADKAIcQdwWaiADKAIMQQJ0aigCACADKAIcQdgoamotAABKDQAMAQsgAygCHEHcFmogAygCFEECdGogAygCHEHcFmogAygCDEECdGooAgA2AgAgAyADKAIMNgIUIAMgAygCDEEBdDYCDAwBCwsgAygCHEHcFmogAygCFEECdGogAygCEDYCAAvXEwEDfyMAQTBrIgIkACACIAA2AiwgAiABNgIoIAIgAigCKCgCADYCJCACIAIoAigoAggoAgA2AiAgAiACKAIoKAIIKAIMNgIcIAJBfzYCECACKAIsQQA2AtAoIAIoAixBvQQ2AtQoIAJBADYCGANAIAIoAhggAigCHEgEQAJAIAIoAiQgAigCGEECdGovAQAEQCACIAIoAhgiATYCECACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohACAEIAA2AtAoIABBAnQgA2ogATYCACACKAIYIAIoAixB2ChqakEAOgAADAELIAIoAiQgAigCGEECdGpBADsBAgsgAiACKAIYQQFqNgIYDAELCwNAIAIoAiwoAtAoQQJIBEACQCACKAIQQQJIBEAgAiACKAIQQQFqIgA2AhAMAQtBACEACyACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohASAEIAE2AtAoIAFBAnQgA2ogADYCACACIAA2AgwgAigCJCACKAIMQQJ0akEBOwEAIAIoAgwgAigCLEHYKGpqQQA6AAAgAigCLCIAIAAoAqgtQQFrNgKoLSACKAIgBEAgAigCLCIAIAAoAqwtIAIoAiAgAigCDEECdGovAQJrNgKsLQsMAQsLIAIoAiggAigCEDYCBCACIAIoAiwoAtAoQQJtNgIYA0AgAigCGEEBTgRAIAIoAiwgAigCJCACKAIYEHogAiACKAIYQQFrNgIYDAELCyACIAIoAhw2AgwDQCACIAIoAiwoAuAWNgIYIAIoAixB3BZqIQEgAigCLCIDKALQKCEAIAMgAEEBazYC0CggAigCLCAAQQJ0IAFqKAIANgLgFiACKAIsIAIoAiRBARB6IAIgAigCLCgC4BY2AhQgAigCGCEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAhQhASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIkIAIoAgxBAnRqIAIoAiQgAigCGEECdGovAQAgAigCJCACKAIUQQJ0ai8BAGo7AQAgAigCDCACKAIsQdgoamoCfyACKAIYIAIoAixB2Chqai0AACACKAIUIAIoAixB2Chqai0AAE4EQCACKAIYIAIoAixB2Chqai0AAAwBCyACKAIUIAIoAixB2Chqai0AAAtBAWo6AAAgAigCJCACKAIUQQJ0aiACKAIMIgA7AQIgAigCJCACKAIYQQJ0aiAAOwECIAIgAigCDCIAQQFqNgIMIAIoAiwgADYC4BYgAigCLCACKAIkQQEQeiACKAIsKALQKEECTg0ACyACKAIsKALgFiEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAighASMAQUBqIgAgAigCLDYCPCAAIAE2AjggACAAKAI4KAIANgI0IAAgACgCOCgCBDYCMCAAIAAoAjgoAggoAgA2AiwgACAAKAI4KAIIKAIENgIoIAAgACgCOCgCCCgCCDYCJCAAIAAoAjgoAggoAhA2AiAgAEEANgIEIABBADYCEANAIAAoAhBBD0wEQCAAKAI8QbwWaiAAKAIQQQF0akEAOwEAIAAgACgCEEEBajYCEAwBCwsgACgCNCAAKAI8QdwWaiAAKAI8KALUKEECdGooAgBBAnRqQQA7AQIgACAAKAI8KALUKEEBajYCHANAIAAoAhxBvQRIBEAgACAAKAI8QdwWaiAAKAIcQQJ0aigCADYCGCAAIAAoAjQgACgCNCAAKAIYQQJ0ai8BAkECdGovAQJBAWo2AhAgACgCECAAKAIgSgRAIAAgACgCIDYCECAAIAAoAgRBAWo2AgQLIAAoAjQgACgCGEECdGogACgCEDsBAiAAKAIYIAAoAjBMBEAgACgCPCAAKAIQQQF0akG8FmoiASABLwEAQQFqOwEAIABBADYCDCAAKAIYIAAoAiROBEAgACAAKAIoIAAoAhggACgCJGtBAnRqKAIANgIMCyAAIAAoAjQgACgCGEECdGovAQA7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EANAIAMpAxAgAykDCFpFBEAgAygCKCgCACADKQMQp0EEdGoQkAEgAyADKQMQQgF8NwMQDAELCyADKAIoIAMpAwgiATcDECADKAIoIAE3AwggA0EBOgAvCyADLQAvQQFxIQAgA0EwaiQAIAALzAEBAX8jAEEgayICJAAgAiAANwMQIAIgATYCDCACQTAQGCIBNgIIAkAgAUUEQCACKAIMQQ5BABAUIAJBADYCHAwBCyACKAIIQQA2AgAgAigCCEIANwMQIAIoAghCADcDCCACKAIIQgA3AyAgAigCCEIANwMYIAIoAghBADYCKCACKAIIQQA6ACwgAigCCCACKQMQIAIoAgwQgwFBAXFFBEAgAigCCBAkIAJBADYCHAwBCyACIAIoAgg2AhwLIAIoAhwhASACQSBqJAAgAQvWAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCECADIANBDGpCBBApNgIIAkAgAygCCEUEQCADQX82AhwMAQsDQCADKAIUBEAgAygCFCgCBCADKAIQcUGABnEEQCADKAIIQgAQLBogAygCCCADKAIULwEIEB8gAygCCCADKAIULwEKEB8CfyMAQRBrIgAgAygCCDYCDCAAKAIMLQAAQQFxRQsEQCADKAIYQQhqQRRBABAUIAMoAggQFiADQX82AhwMBAsgAygCGCADQQxqQgQQNUEASARAIAMoAggQFiADQX82AhwMBAsgAygCFC8BCgRAIAMoAhggAygCFCgCDCADKAIULwEKrRA1QQBIBEAgAygCCBAWIANBfzYCHAwFCwsLIAMgAygCFCgCADYCFAwBCwsgAygCCBAWIANBADYCHAsgAygCHCEAIANBIGokACAAC2gBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADsBBgNAIAIoAgwEQCACKAIMKAIEIAIoAghxQYAGcQRAIAIgAigCDC8BCiACLwEGQQRqajsBBgsgAiACKAIMKAIANgIMDAELCyACLwEGC/ABAQF/IwBBEGsiASQAIAEgADYCDCABIAEoAgw2AgggAUEANgIEA0AgASgCDARAAkACQCABKAIMLwEIQfXGAUYNACABKAIMLwEIQfXgAUYNACABKAIMLwEIQYGyAkYNACABKAIMLwEIQQFHDQELIAEgASgCDCgCADYCACABKAIIIAEoAgxGBEAg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IAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCEASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQL0IWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJIQgQQHhogASgCSBAqBEAgASgCOEEBQQAQFCABQQA2AkwMAQsgASABKAJIEB1B//8Dca03AyggASABKAJIEB1B//8Dca03AyAgASkDICABKQMoUgRAIAEoAjhBE0EAEBQgAUEANgJMDAELIAEgASgCSBAqrTcDGCABIAEoAkgQKq03AxAgASkDECABKQMQIAEpAxh8VgRAIAEoAjhBBEEWEBQgAUEANgJMDAELIAEpAxAgASkDGHwgASkDQCABKQMIfFYEQCABKAI4QRVBABAUIAFBADYCTAwBCwJAIAEoAjxBBHFFDQAgASkDECABKQMYfCABKQNAIAEpAwh8UQ0AIAEoAjhBFUEAEBQgAUEANgJMDAELIAEgASkDICABKAI4EIQBIgU2AjQgBUUEQCABQQA2AkwMAQsgASgCNEEAOgAsIAEoAjQgASkDGDcDGCABKAI0IAEpAxA3AyAgASABKAI0NgJMCyABKAJMIQUgAUHQAGokACAAIAU2AlALIAAoAlBFBEAgAEEANgJsDAELIAAoAmQgACkDMEIUfBAsGiAAIAAoAmQQHTsBTiAAKAJQKQMgIAAoAlApAxh8IAApA1ggACkDMHxWBEAg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IAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEFwgAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQeBogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2AiwMAQsCQCACKAIkRQ0AIAIoAiRBBEYNACACKAIoKAIAKAIEDQAgAigCKCgCbCACKAIoKAJcRw0AIAJBATYCLAwBCyACIAIoAigoAjwgAigCKCgCbGtBAWs2AhQCQCACKAIoKAIAKAIEIAIoAhRNDQAgAigCKCgCXCACKAIoKAIsSA0AIAIoAigiACAAKAJcIAIoAigoAixrNgJcIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBkaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsgAiACKAIoKAIsIAIoAhRqNgIUCyACKAIUIAIoAigoAgAoAgRLBEAgAiACKAIoKAIAKAIENgIUCyACKAIUBEAgAigCKCgCACACKAIoKAI4IAIoAigoAmxqIAIoAhQQeBogAigCKCIAIAIoAhQgACgCbGo2AmwLIAIoAigoAsAtIAIoAigoAmxJBEAgAigCKCACKAIoKAJsNgLALQsgAiACKAIoKAK8LUEqakEDdTYCFCACIAIoAigoAgwgAigCFGtB//8DSwR/Qf//AwUgAigCKCgCDCACKAIUaws2AhQgAgJ/IAIoAhQgAigCKCgCLEsEQCACKAIoKAIsDAELIAIoAhQLNgIgIAIgAigCKCgCbCACKAIoKAJcazYCGAJAIAIoAhggAigCIEkEQCACKAIYRQRAIAIoAiRBBEcNAgsgAigCJEUNASACKAIoKAIAKAIEDQEgAigCGCACKAIUSw0BCyACAn8gAigCGCACKAIUSwRAIAIoAhQMAQsgAigCGAs2AhwgAgJ/QQAgAigCJEEERw0AGkEAIAIoAigoAgAoAgQNABogAigCHCACKAIYRgtBAXE2AhAgAigCKCACKAIoKAI4IAIoAigoAlxqIAIoAhwgAigCEBBcIAIoAigiACACKAIcIAAoAlxqNgJcIAIoAigoAgAQHAsgAkECQQAgAigCEBs2AiwLIAIoAiwhACACQTBqJAAgAAuyAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEHkEQCABQX42AgwMAQsgASABKAIIKAIcKAIENgIEIAEoAggoAhwoAggEQCABKAIIKAIoIAEoAggoAhwoAgggASgCCCgCJBEEAAsgASgCCCgCHCgCRARAIAEoAggoAiggASgCCCgCHCgCRCABKAIIKAIkEQQACyABKAIIKAIcKAJABEAgASgCCCgCKCABKAIIKAIcKAJAIAEoAggoAiQRBAALIAEoAggoAhwoAjgEQCABKAIIKAIoIAEoAggoAhwoAjggASgCCCgCJBEEAAsgASgCCCgCKCABKAIIKAIcIAEoAggoAiQRBAAgASgCCEEANgIcIAFBfUEAIAEoAgRB8QBGGzYCDAsgASgCDCEAIAFBEGokACAAC+sXAQJ/IwBB8ABrIgMgADYCbCADIAE2AmggAyACNgJkIANBfzYCXCADIAMoAmgvAQI2AlQgA0EANgJQIANBBzYCTCADQQQ2AkggAygCVEUEQCADQYoBNgJMIANBAzYCSAsgA0EANgJgA0AgAygCYCADKAJkSkUEQCADIAMoAlQ2AlggAyADKAJoIAMoAmBBAWpBAnRqLwECNgJUIAMgAygCUEEBaiIANgJQAkACQCADKAJMIABMDQAgAygCWCADKAJURw0ADAELAkAgAygCUCADKAJISARAA0AgAyADKAJsQfwUaiADKAJYQQJ0ai8BAjYCRAJAIAMoAmwoArwtQRAgAygCRGtKBEAgAyADKAJsQfwUaiADKAJYQQJ0ai8BADYCQCADKAJsIgAgAC8BuC0gAygCQEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAJAQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCREEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsQfwUaiADKAJYQQJ0ai8BACADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCRCAAKAK8LWo2ArwtCyADIAMoAlBBAWsiADYCUCAADQALDAELAkAgAygCWARAIAMoAlggAygCXEcEQCADIAMoAmxB/BRqIAMoAlhBAnRqLwECNgI8AkAgAygCbCgCvC1BECADKAI8a0oEQCADIAMoAmxB/BRqIAMoAlhBAnRqLwEANgI4IAMoAmwiACAALwG4LSADKAI4Qf//A3EgAygCbCgCvC10cjsBuC0gAygCbC8BuC1B/wFxIQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbC8BuC1BCHYhASADKAJsKAIIIQIgAygCbCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJsIAMoAjhB//8DcUEQIAMoAmwoArwta3U7AbgtIAMoAmwiACAAKAK8LSADKAI8QRBrajYCvC0MAQsgAygCbCIAIAAvAbgtIAMoAmxB/BRqIAMoAlhBAnRqLwEAIAMoAmwoArwtdHI7AbgtIAMoAmwiACADKAI8IAAoArwtajYCvC0LIAMgAygCUEEBazYCUAsgAyADKAJsLwG+FTYCNAJAIAMoAmwoArwtQRAgAygCNGtKBEAgAyADKAJsLwG8FTYCMCADKAJsIgAgAC8BuC0gAygCMEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIwQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCNEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsLwG8FSADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCNCAAKAK8LWo2ArwtCyADQQI2AiwCQCADKAJsKAK8LUEQIAMoAixrSgRAIAMgAygCUEEDazYCKCADKAJsIgAgAC8BuC0gAygCKEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIoQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCLEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJQQQNrQf//A3EgAygCbCgCvC10cjsBuC0gAygCbCIAIAMoAiwgACgCvC1qNgK8LQsMAQsCQCADKAJQQQpMBEAgAyADKAJsLwHCFTYCJAJAIAMoAmwoArwtQRAgAygCJGtKBEAgAyADKAJsLwHAFTYCICADKAJsIgAgAC8BuC0gAygCIEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIgQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCJEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsLwHAFSADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCJCAAKAK8LWo2ArwtCyADQQM2AhwCQCADKAJsKAK8LUEQIAMoAhxrSgRAIAMgAygCUEEDazYCGCADKAJsIgAgAC8BuC0gAygCGEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIYQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCHEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJQQQNrQf//A3EgAygCbCgCvC10cjsBuC0gAygCbCIAIAMoAhwgACgCvC1qNgK8LQsMAQsgAyADKAJsLwHGFTYCFAJAIAMoAmwoArwtQRAgAygCFGtKBEAgAyADKAJsLwHEFTYCECADKAJsIgAgAC8BuC0gAygCEEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIQQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCFEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsLwHEFSADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCFCAAKAK8LWo2ArwtCyADQQc2AgwCQCADKAJsKAK8LUEQIAMoAgxrSgRAIAMgAygCUEELazYCCCADKAJsIgAgAC8BuC0gAygCCEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIIQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCDEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJQQQtrQf//A3EgAygCbCgCvC10cjsBuC0gAygCbCIAIAMoAgwgACgCvC1qNgK8LQsLCwsgA0EANgJQIAMgAygCWDYCXAJAIAMoAlRFBEAgA0GKATYCTCADQQM2AkgMAQsCQCADKAJYIAMoAlRGBEAgA0EGNgJMIANBAzYCSAwBCyADQQc2AkwgA0EENgJICwsLIAMgAygCYEEBajYCYAwBCwsLkQQBAX8jAEEwayIDIAA2AiwgAyABNgIoIAMgAjYCJCADQX82AhwgAyADKAIoLwECNgIUIANBADYCECADQQc2AgwgA0EENgIIIAMoAhRFBEAgA0GKATYCDCADQQM2AggLIAMoAiggAygCJEEBakECdGpB//8DOwECIANBADYCIANAIAMoAiAgAygCJEpFBEAgAyADKAIUNgIYIAMgAygCKCADKAIgQQFqQQJ0ai8BAjYCFCADIAMoAhBBAWoiADYCEAJAAkAgAygCDCAATA0AIAMoAhggAygCFEcNAAwBCwJAIAMoAhAgAygCCEgEQCADKAIsQfwUaiADKAIYQQJ0aiIAIAMoAhAgAC8BAGo7AQAMAQsCQCADKAIYBEAgAygCGCADKAIcRwRAIAMoAiwgAygCGEECdGpB/BRqIgAgAC8BAEEBajsBAAsgAygCLCIAIABBvBVqLwEAQQFqOwG8FQwBCwJAIAMoAhBBCkwEQCADKAIsIgAgAEHAFWovAQBBAWo7AcAVDAELIAMoAiwiACAAQcQVai8BAEEBajsBxBULCwsgA0EANgIQIAMgAygCGDYCHAJAIAMoAhRFBEAgA0GKATYCDCADQQM2AggMAQsCQCADKAIYIAMoAhRGBEAgA0EGNgIMIANBAzYCCAwBCyADQQc2AgwgA0EENgIICwsLIAMgAygCIEEBajYCIAwBCwsLpxIBAn8jAEHQAGsiAyAANgJMIAMgATYCSCADIAI2AkQgA0EANgI4IAMoAkwoAqAtBEADQCADIAMoAkwoAqQtIAMoAjhBAXRqLwEANgJAIAMoAkwoApgtIQAgAyADKAI4IgFBAWo2AjggAyAAIAFqLQAANgI8AkAgAygCQEUEQCADIAMoAkggAygCPEECdGovAQI2AiwCQCADKAJMKAK8LUEQIAMoAixrSgRAIAMgAygCSCADKAI8QQJ0ai8BADYCKCADKAJMIgAgAC8BuC0gAygCKEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIoQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCLEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJIIAMoAjxBAnRqLwEAIAMoAkwoArwtdHI7AbgtIAMoAkwiACADKAIsIAAoArwtajYCvC0LDAELIAMgAygCPC0A0F02AjQgAyADKAJIIAMoAjRBgQJqQQJ0ai8BAjYCJAJAIAMoAkwoArwtQRAgAygCJGtKBEAgAyADKAJIIAMoAjRBgQJqQQJ0ai8BADYCICADKAJMIgAgAC8BuC0gAygCIEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIgQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCJEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJIIAMoAjRBgQJqQQJ0ai8BACADKAJMKAK8LXRyOwG4LSADKAJMIgAgAygCJCAAKAK8LWo2ArwtCyADIAMoAjRBAnRBkOoAaigCADYCMCADKAIwBEAgAyADKAI8IAMoAjRBAnRBgO0AaigCAGs2AjwgAyADKAIwNgIcAkAgAygCTCgCvC1BECADKAIca0oEQCADIAMoAjw2AhggAygCTCIAIAAvAbgtIAMoAhhB//8DcSADKAJMKAK8LXRyOwG4LSADKAJMLwG4LUH/AXEhASADKAJMKAIIIQIgAygCTCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJMLwG4LUEIdiEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwgAygCGEH//wNxQRAgAygCTCgCvC1rdTsBuC0gAygCTCIAIAAoArwtIAMoAhxBEGtqNgK8LQwBCyADKAJMIgAgAC8BuC0gAygCPEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwiACADKAIcIAAoArwtajYCvC0LCyADIAMoAkBBAWs2AkAgAwJ/IAMoAkBBgAJJBEAgAygCQC0A0FkMAQsgAygCQEEHdkGAAmotANBZCzYCNCADIAMoAkQgAygCNEECdGovAQI2AhQCQCADKAJMKAK8LUEQIAMoAhRrSgRAIAMgAygCRCADKAI0QQJ0ai8BADYCECADKAJMIgAgAC8BuC0gAygCEEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIQQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCFEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJEIAMoAjRBAnRqLwEAIAMoAkwoArwtdHI7AbgtIAMoAkwiACADKAIUIAAoArwtajYCvC0LIAMgAygCNEECdEGQ6wBqKAIANgIwIAMoAjAEQCADIAMoAkAgAygCNEECdEGA7gBqKAIAazYCQCADIAMoAjA2AgwCQCADKAJMKAK8LUEQIAMoAgxrSgRAIAMgAygCQDYCCCADKAJMIgAgAC8BuC0gAygCCEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIIQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCDEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJAQf//A3EgAygCTCgCvC10cjsBuC0gAygCTCIAIAMoAgwgACgCvC1qNgK8LQsLCyADKAI4IAMoAkwoAqAtSQ0ACwsgAyADKAJILwGCCDYCBAJAIAMoAkwoArwtQRAgAygCBGtKBEAgAyADKAJILwGACDYCACADKAJMIgAgAC8BuC0gAygCAEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIAQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCBEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJILwGACCADKAJMKAK8LXRyOwG4LSADKAJMIgAgAygCBCAAKAK8LWo2ArwtCwuXAgEEfyMAQRBrIgEgADYCDAJAIAEoAgwoArwtQRBGBEAgASgCDC8BuC1B/wFxIQIgASgCDCgCCCEDIAEoAgwiBCgCFCEAIAQgAEEBajYCFCAAIANqIAI6AAAgASgCDC8BuC1BCHYhAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAACABKAIMQQA7AbgtIAEoAgxBADYCvC0MAQsgASgCDCgCvC1BCE4EQCABKAIMLwG4LSECIAEoAgwoAgghAyABKAIMIgQoAhQhACAEIABBAWo2AhQgACADaiACOgAAIAEoAgwiACAALwG4LUEIdjsBuC0gASgCDCIAIAAoArwtQQhrNgK8LQsLC+8BAQR/IwBBEGsiASAANgIMAkAgASgCDCgCvC1BCEoEQCABKAIMLwG4LUH/AXEhAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAACABKAIMLwG4LUEIdiECIAEoAgwoAgghAyABKAIMIgQoAhQhACAEIABBAWo2AhQgACADaiACOgAADAELIAEoAgwoArwtQQBKBEAgASgCDC8BuC0hAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAAAsLIAEoAgxBADsBuC0gASgCDEEANgK8LQv8AQEBfyMAQRBrIgEgADYCDCABQQA2AggDQCABKAIIQZ4CTkUEQCABKAIMQZQBaiABKAIIQQJ0akEAOwEAIAEgASgCCEEBajYCCAwBCwsgAUEANgIIA0AgASgCCEEeTkUEQCABKAIMQYgTaiABKAIIQQJ0akEAOwEAIAEgASgCCEEBajYCCAwBCwsgAUEANgIIA0AgASgCCEETTkUEQCABKAIMQfwUaiABKAIIQQJ0akEAOwEAIAEgASgCCEEBajYCCAwBCwsgASgCDEEBOwGUCSABKAIMQQA2AqwtIAEoAgxBADYCqC0gASgCDEEANgKwLSABKAIMQQA2AqAtCyIBAX8jAEEQayIBJAAgASAANgIMIAEoAgwQFSABQRBqJAAL6QEBAX8jAEEwayICIAA2AiQgAiABNwMYIAJCADcDECACIAIoAiQpAwhCAX03AwgCQANAIAIpAxAgAikDCFQEQCACIAIpAxAgAikDCCACKQMQfUIBiHw3AwACQCACKAIkKAIEIAIpAwCnQQN0aikDACACKQMYVgRAIAIgAikDAEIBfTcDCAwBCwJAIAIpAwAgAigCJCkDCFIEQCACKAIkKAIEIAIpAwBCAXynQQN0aikDACACKQMYWA0BCyACIAIpAwA3AygMBAsgAiACKQMAQgF8NwMQCwwBCwsgAiACKQMQNwMoCyACKQMoC6cBAQF/IwBBMGsiBCQAIAQgADYCKCAEIAE2AiQgBCACNwMYIAQgAzYCFCAEIAQoAigpAzggBCgCKCkDMCAEKAIkIAQpAxggBCgCFBCRATcDCAJAIAQpAwhCAFMEQCAEQX82AiwMAQsgBCgCKCAEKQMINwM4IAQoAiggBCgCKCkDOBC/ASECIAQoAiggAjcDQCAEQQA2AiwLIAQoAiwhACAEQTBqJAAgAAvrAQEBfyMAQSBrIgMkACADIAA2AhggAyABNwMQIAMgAjYCDAJAIAMpAxAgAygCGCkDEFQEQCADQQE6AB8MAQsgAyADKAIYKAIAIAMpAxBCBIanEEgiADYCCCAARQRAIAMoAgxBDkEAEBQgA0EAOgAfDAELIAMoAhggAygCCDYCACADIAMoAhgoAgQgAykDEEIBfEIDhqcQSCIANgIEIABFBEAgAygCDEEOQQAQFCADQQA6AB8MAQsgAygCGCADKAIENgIEIAMoAhggAykDEDcDECADQQE6AB8LIAMtAB9BAXEhACADQSBqJAAgAAvOAgEBfyMAQTBrIgQkACAEIAA2AiggBCABNwMgIAQgAjYCHCAEIAM2AhgCQAJAIAQoAigNACAEKQMgUA0AIAQoAhhBEkEAEBQgBEEANgIsDAELIAQgBCgCKCAEKQMgIAQoAhwgBCgCGBBNIgA2AgwgAEUEQCAEQQA2AiwMAQsgBEEYEBgiADYCFCAARQRAIAQoAhhBDkEAEBQgBCgCDBAzIARBADYCLAwBCyAEKAIUIAQoAgw2AhAgBCgCFEEANgIUQQAQASEAIAQoAhQgADYCDCMAQRBrIgAgBCgCFDYCDCAAKAIMQQA2AgAgACgCDEEANgIEIAAoAgxBADYCCCAEQQIgBCgCFCAEKAIYEJQBIgA2AhAgAEUEQCAEKAIUKAIQEDMgBCgCFBAVIARBADYCLAwBCyAEIAQoAhA2AiwLIAQoAiwhACAEQTBqJAAgAAupAQEBfyMAQTBrIgQkACAEIAA2AiggBCABNwMgIAQgAjYCHCAEIAM2AhgCQCAEKAIoRQRAIAQpAyBCAFIEQCAEKAIYQRJBABAUIARBADYCLAwCCyAEQQBCACAEKAIcIAQoAhgQwgE2AiwMAQsgBCAEKAIoNgIIIAQgBCkDIDcDECAEIARBCGpCASAEKAIcIAQoAhgQwgE2AiwLIAQoAiwhACAEQTBqJAAgAAtGAQF/IwBBIGsiAyQAIAMgADYCHCADIAE3AxAgAyACNgIMIAMoAhwgAykDECADKAIMIAMoAhxBCGoQTiEAIANBIGokACAAC40CAQF/IwBBMGsiAyQAIAMgADYCKCADIAE7ASYgAyACNgIgIAMgAygCKCgCNCADQR5qIAMvASZBgAZBABBfNgIQAkAgAygCEEUNACADLwEeQQVJDQACQCADKAIQLQAAQQFGDQAMAQsgAyADKAIQIAMvAR6tECkiADYCFCAARQRADAELIAMoAhQQjwEaIAMgAygCFBAqNgIYIAMoAiAQjAEgAygCGEYEQCADIAMoAhQQLz0BDiADIAMoAhQgAy8BDq0QHiADLwEOQYAQQQAQUjYCCCADKAIIBEAgAygCIBAlIAMgAygCCDYCIAsLIAMoAhQQFgsgAyADKAIgNgIsIAMoAiwhACADQTBqJAAgAAvaFwIBfwF+IwBBgAFrIgUkACAFIAA2AnQgBSABNgJwIAUgAjYCbCAFIAM6AGsgBSAENgJkIAUgBSgCbEEARzoAHSAFQR5BLiAFLQBrQQFxGzYCKAJAAkAgBSgCbARAIAUoAmwQLyAFKAIorVQEQCAFKAJkQRNBABAUIAVCfzcDeAwDCwwBCyAFIAUoAnAgBSgCKK0gBUEwaiAFKAJkEEEiADYCbCAARQRAIAVCfzcDeAwCCwsgBSgCbEIEEB4hAEHxEkH2EiAFLQBrQQFxGygAACAAKAAARwRAIAUoAmRBE0EAEBQgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwBCyAFKAJ0EE8CQCAFLQBrQQFxRQRAIAUoAmwQHSEAIAUoAnQgADsBCAwBCyAFKAJ0QQA7AQgLIAUoAmwQHSEAIAUoAnQgADsBCiAFKAJsEB0hACAFKAJ0IAA7AQwgBSgCbBAdQf//A3EhACAFKAJ0IAA2AhAgBSAFKAJsEB07AS4gBSAFKAJsEB07ASwgBS8BLiEBIAUvASwhAiMAQTBrIgAkACAAIAE7AS4gACACOwEsIABCADcCACAAQQA2AiggAEIANwIgIABCADcCGCAAQgA3AhAgAEIANwIIIABBADYCICAAIAAvASxBCXZB0ABqNgIUIAAgAC8BLEEFdkEPcUEBazYCECAAIAAvASxBH3E2AgwgACAALwEuQQt2NgIIIAAgAC8BLkEFdkE/cTYCBCAAIAAvAS5BAXRBPnE2AgAgABAMIQEgAEEwaiQAIAEhACAFKAJ0IAA2AhQgBSgCbBAqIQAgBSgCdCAANgIYIAUoAmwQKq0hBiAFKAJ0IAY3AyAgBSgCbBAqrSEGIAUoAnQgBjcDKCAFIAUoAmwQHTsBIiAFIAUoAmwQHTsBHgJAIAUtAGtBAXEEQCAFQQA7ASAgBSgCdEEANgI8IAUoAnRBADsBQCAFKAJ0QQA2AkQgBSgCdEIANwNIDAELIAUgBSgCbBAdOwEgIAUoAmwQHUH//wNxIQAgBSgCdCAANgI8IAUoAmwQHSEAIAUoAnQgADsBQCAFKAJsECohACAFKAJ0IAA2AkQgBSgCbBAqrSEGIAUoAnQgBjcDSAsCfyMAQRBrIgAgBSgCbDYCDCAAKAIMLQAAQQFxRQsEQCAFKAJkQRRBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAQsCQCAFKAJ0LwEMQQFxBEAgBSgCdC8BDEHAAHEEQCAFKAJ0Qf//AzsBUgwCCyAFKAJ0QQE7AVIMAQsgBSgCdEEAOwFSCyAFKAJ0QQA2AjAgBSgCdEEANgI0IAUoAnRBADYCOCAFIAUvASAgBS8BIiAFLwEeamo2AiQCQCAFLQAdQQFxBEAgBSgCbBAvIAUoAiStVARAIAUoAmRBFUEAEBQgBUJ/NwN4DAMLDAELIAUoAmwQFiAFIAUoAnAgBSgCJK1BACAFKAJkEEEiADYCbCAARQRAIAVCfzcDeAwCCwsgBS8BIgRAIAUoAmwgBSgCcCAFLwEiQQEgBSgCZBCNASEAIAUoAnQgADYCMCAFKAJ0KAIwRQRAAn8jAEEQayIAIAUoAmQ2AgwgACgCDCgCAEERRgsEQCAFKAJkQRVBABAUCyAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAILIAUoAnQvAQxBgBBxBEAgBSgCdCgCMEECEDpBBUYEQCAFKAJkQRVBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAwsLCyAFLwEeBEAgBSAFKAJsIAUoAnAgBS8BHkEAIAUoAmQQYDYCGCAFKAIYRQRAIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsgBSgCGCAFLwEeQYACQYAEIAUtAGtBAXEbIAUoAnRBNGogBSgCZBCIAUEBcUUEQCAFKAIYEBUgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwCCyAFKAIYEBUgBS0Aa0EBcQRAIAUoAnRBAToABAsLIAUvASAEQCAFKAJsIAUoAnAgBS8BIEEAIAUoAmQQjQEhACAFKAJ0IAA2AjggBSgCdCgCOEUEQCAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAILIAUoAnQvAQxBgBBxBEAgBSgCdCgCOEECEDpBBUYEQCAFKAJkQRVBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAwsLCyAFKAJ0QfXgASAFKAJ0KAIwEMUBIQAgBSgCdCAANgIwIAUoAnRB9cYBIAUoAnQoAjgQxQEhACAFKAJ0IAA2AjgCQAJAIAUoAnQpAyhC/////w9RDQAgBSgCdCkDIEL/////D1ENACAFKAJ0KQNIQv////8PUg0BCyAFIAUoAnQoAjQgBUEWakEBQYACQYAEIAUtAGtBAXEbIAUoAmQQXzYCDCAFKAIMRQRAIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsgBSAFKAIMIAUvARatECkiADYCECAARQRAIAUoAmRBDkEAEBQgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwCCwJAIAUoAnQpAyhC/////w9RBEAgBSgCEBAwIQYgBSgCdCAGNwMoDAELIAUtAGtBAXEEQCAFKAIQIQEjAEEgayIAJAAgACABNgIYIABCCDcDECAAIAAoAhgpAxAgACkDEHw3AwgCQCAAKQMIIAAoAhgpAxBUBEAgACgCGEEAOgAAIABBfzYCHAwBCyAAIAAoAhggACkDCBAsNgIcCyAAKAIcGiAAQSBqJAALCyAFKAJ0KQMgQv////8PUQRAIAUoAhAQMCEGIAUoAnQgBjcDIAsgBS0Aa0EBcUUEQCAFKAJ0KQNIQv////8PUQRAIAUoAhAQMCEGIAUoAnQgBjcDSAsgBSgCdCgCPEH//wNGBEAgBSgCEBAqIQAgBSgCdCAANgI8CwsgBSgCEBBHQQFxRQRAIAUoAmRBFUEAEBQgBSgCEBAWIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsgBSgCEBAWCwJ/IwBBEGsiACAFKAJsNgIMIAAoAgwtAABBAXFFCwRAIAUoAmRBFEEAEBQgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwBCyAFLQAdQQFxRQRAIAUoAmwQFgsgBSgCdCkDSEL///////////8AVgRAIAUoAmRBBEEWEBQgBUJ/NwN4DAELAn8gBSgCdCEBIAUoAmQhAiMAQSBrIgAkACAAIAE2AhggACACNgIUAkAgACgCGCgCEEHjAEcEQCAAQQE6AB8MAQsgACAAKAIYKAI0IABBEmpBgbICQYAGQQAQXzYCCAJAIAAoAggEQCAALwESQQdPDQELIAAoAhRBFUEAEBQgAEEAOgAfDAELIAAgACgCCCAALwESrRApIgE2AgwgAUUEQCAAKAIUQRRBABAUIABBADoAHwwBCyAAQQE6AAcCQAJAAkAgACgCDBAdQQFrDgICAAELIAAoAhgpAyhCFFQEQCAAQQA6AAcLDAELIAAoAhRBGEEAEBQgACgCDBAWIABBADoAHwwBCyAAKAIMQgIQHi8AAEHBigFHBEAgACgCFEEYQQAQFCAAKAIMEBYgAEEAOgAfDAELAkACQAJAAkACQCAAKAIMEI8BQQFrDgMAAQIDCyAAQYECOwEEDAMLIABBggI7AQQMAgsgAEGDAjsBBAwBCyAAKAIUQRhBABAUIAAoAgwQFiAAQQA6AB8MAQsgAC8BEkEHRwRAIAAoAhRBFUEAEBQgACgCDBAWIABBADoAHwwBCyAAKAIYIAAtAAdBAXE6AAYgACgCGCAALwEEOwFSIAAoAgwQHUH//wNxIQEgACgCGCABNgIQIAAoAgwQFiAAQQE6AB8LIAAtAB9BAXEhASAAQSBqJAAgAUEBcUULBEAgBUJ/NwN4DAELIAUoAnQoAjQQhwEhACAFKAJ0IAA2AjQgBSAFKAIoIAUoAiRqrTcDeAsgBSkDeCEGIAVBgAFqJAAgBgsYAEGomwFCADcCAEGwmwFBADYCAEGomwELCABBAUEMEHYLBwAgACgCLAsHACAAKAIoCwcAIAAoAhgLtQkBAX8jAEHgwABrIgUkACAFIAA2AtRAIAUgATYC0EAgBSACNgLMQCAFIAM3A8BAIAUgBDYCvEAgBSAFKALQQDYCuEACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBSgCvEAOEQMEAAYBAgUJCgoKCgoKCAoHCgsgBUIANwPYQAwKCyAFIAUoArhAQeQAaiAFKALMQCAFKQPAQBBCNwPYQAwJCyAFKAK4QBAVIAVCADcD2EAMCAsgBSgCuEAoAhAEQCAFIAUoArhAKAIQIAUoArhAKQMYIAUoArhAQeQAahBlIgM3A5hAIANQBEAgBUJ/NwPYQAwJCyAFKAK4QCkDCCAFKAK4QCkDCCAFKQOYQHxWBEAgBSgCuEBB5ABqQRVBABAUIAVCfzcD2EAMCQsgBSgCuEAiACAFKQOYQCAAKQMAfDcDACAFKAK4QCIAIAUpA5hAIAApAwh8NwMIIAUoArhAQQA2AhALIAUoArhALQB4QQFxRQRAIAVCADcDqEADQCAFKQOoQCAFKAK4QCkDAFQEQCAFIAUoArhAKQMAIAUpA6hAfUKAwABWBH5CgMAABSAFKAK4QCkDACAFKQOoQH0LNwOgQCAFIAUoAtRAIAVBEGogBSkDoEAQLiIDNwOwQCADQgBTBEAgBSgCuEBB5ABqIAUoAtRAEBcgBUJ/NwPYQAwLCyAFKQOwQFAEQCAFKAK4QEHkAGpBEUEAEBQgBUJ/NwPYQAwLBSAFIAUpA7BAIAUpA6hAfDcDqEAMAgsACwsLIAUoArhAIAUoArhAKQMANwMgIAVCADcD2EAMBwsgBSkDwEAgBSgCuEApAwggBSgCuEApAyB9VgRAIAUgBSgCuEApAwggBSgCuEApAyB9NwPAQAsgBSkDwEBQBEAgBUIANwPYQAwHCyAFKAK4QC0AeEEBcQRAIAUoAtRAIAUoArhAKQMgQQAQJ0EASARAIAUoArhAQeQAaiAFKALUQBAXIAVCfzcD2EAMCAsLIAUgBSgC1EAgBSgCzEAgBSkDwEAQLiIDNwOwQCADQgBTBEAgBSgCuEBB5ABqQRFBABAUIAVCfzcD2EAMBwsgBSgCuEAiACAFKQOwQCAAKQMgfDcDICAFKQOwQFAEQCAFKAK4QCkDICAFKAK4QCkDCFQEQCAFKAK4QEHkAGpBEUEAEBQgBUJ/NwPYQAwICwsgBSAFKQOwQDcD2EAMBgsgBSAFKAK4QCkDICAFKAK4QCkDAH0gBSgCuEApAwggBSgCuEApAwB9IAUoAsxAIAUpA8BAIAUoArhAQeQAahCRATcDCCAFKQMIQgBTBEAgBUJ/NwPYQAwGCyAFKAK4QCAFKQMIIAUoArhAKQMAfDcDICAFQgA3A9hADAULIAUgBSgCzEA2AgQgBSgCBCAFKAK4QEEoaiAFKAK4QEHkAGoQlQFBAEgEQCAFQn83A9hADAULIAVCADcD2EAMBAsgBSAFKAK4QCwAYKw3A9hADAMLIAUgBSgCuEApA3A3A9hADAILIAUgBSgCuEApAyAgBSgCuEApAwB9NwPYQAwBCyAFKAK4QEHkAGpBHEEAEBQgBUJ/NwPYQAsgBSkD2EAhAyAFQeDAAGokACADCwcAIAAoAhALIgEBfyMAQRBrIgEgADYCDCABKAIMIgAgACgCMEEBajYCMAsHACAAKAIICxQAIAAgAa0gAq1CIIaEIAMgBBB/CxMBAX4gABBKIgFCIIinEAAgAacLEgAgACABrSACrUIghoQgAxAnCx8BAX4gACABIAKtIAOtQiCGhBAuIgRCIIinEAAgBKcLFQAgACABrSACrUIghoQgAyAEEMMBCxQAIAAgASACrSADrUIghoQgBBB+C60EAQF/IwBBIGsiBSQAIAUgADYCGCAFIAGtIAKtQiCGhDcDECAFIAM2AgwgBSAENgIIAkACQCAFKQMQIAUoAhgpAzBUBEAgBSgCCEEJTQ0BCyAFKAIYQQhqQRJBABAUIAVBfzYCHAwBCyAFKAIYKAIYQQJxBEAgBSgCGEEIakEZQQAQFCAFQX82AhwMAQsCfyAFKAIMIQEjAEEQayIAJAAgACABNgIIIABBAToABwJAIAAoAghFBEAgAEEBOgAPDAELIAAgACgCCCAALQAHQQFxELMBQQBHOgAPCyAALQAPQQFxIQEgAEEQaiQAIAFFCwRAIAUoAhhBCGpBEEEAEBQgBUF/NgIcDAELIAUgBSgCGCgCQCAFKQMQp0EEdGo2AgQgBSAFKAIEKAIABH8gBSgCBCgCACgCEAVBfws2AgACQCAFKAIMIAUoAgBGBEAgBSgCBCgCBARAIAUoAgQoAgQiACAAKAIAQX5xNgIAIAUoAgQoAgRBADsBUCAFKAIEKAIEKAIARQRAIAUoAgQoAgQQOSAFKAIEQQA2AgQLCwwBCyAFKAIEKAIERQRAIAUoAgQoAgAQPyEAIAUoAgQgADYCBCAARQRAIAUoAhhBCGpBDkEAEBQgBUF/NgIcDAMLCyAFKAIEKAIEIAUoAgw2AhAgBSgCBCgCBCAFKAIIOwFQIAUoAgQoAgQiACAAKAIAQQFyNgIACyAFQQA2AhwLIAUoAhwhACAFQSBqJAAgAAsXAQF+IAAgASACEHMiA0IgiKcQACADpwuuAQIBfwF+An8jAEEgayICIAA2AhQgAiABNgIQAkAgAigCFEUEQCACQn83AxgMAQsgAigCEEEIcQRAIAIgAigCFCkDMDcDCANAIAIpAwhCAFIEfyACKAIUKAJAIAIpAwhCAX2nQQR0aigCAAVBAQtFBEAgAiACKQMIQgF9NwMIDAELCyACIAIpAwg3AxgMAQsgAiACKAIUKQMwNwMYCyACKQMYIgNCIIinCxAAIAOnCxMAIAAgAa0gAq1CIIaEIAMQxAELiAICAX8BfgJ/IwBBIGsiBCQAIAQgADYCFCAEIAE2AhAgBCACrSADrUIghoQ3AwgCQCAEKAIURQRAIARCfzcDGAwBCyAEKAIUKAIEBEAgBEJ/NwMYDAELIAQpAwhC////////////AFYEQCAEKAIUQQRqQRJBABAUIARCfzcDGAwBCwJAIAQoAhQtABBBAXFFBEAgBCkDCFBFDQELIARCADcDGAwBCyAEIAQoAhQoAhQgBCgCECAEKQMIEC4iBTcDACAFQgBTBEAgBCgCFEEEaiAEKAIUKAIUEBcgBEJ/NwMYDAELIAQgBCkDADcDGAsgBCkDGCEFIARBIGokACAFQiCIpwsQACAFpwtPAQF/IwBBIGsiBCQAIAQgADYCHCAEIAGtIAKtQiCGhDcDECAEIAM2AgwgBCgCHCAEKQMQIAQoAgwgBCgCHCgCHBCtASEAIARBIGokACAAC9kDAQF/IwBBIGsiBSQAIAUgADYCGCAFIAGtIAKtQiCGhDcDECAFIAM2AgwgBSAENgIIAkAgBSgCGCAFKQMQQQBBABBFRQRAIAVBfzYCHAwBCyAFKAIYKAIYQQJxBEAgBSgCGEEIakEZQQAQFCAFQX82AhwMAQsgBSgCGCgCQCAFKQMQp0EEdGooAggEQCAFKAIYKAJAIAUpAxCnQQR0aigCCCAFKAIMEGhBAEgEQCAFKAIYQQhqQQ9BABAUIAVBfzYCHAwCCyAFQQA2AhwMAQsgBSAFKAIYKAJAIAUpAxCnQQR0ajYCBCAFIAUoAgQoAgAEfyAFKAIMIAUoAgQoAgAoAhRHBUEBC0EBcTYCAAJAIAUoAgAEQCAFKAIEKAIERQRAIAUoAgQoAgAQPyEAIAUoAgQgADYCBCAARQRAIAUoAhhBCGpBDkEAEBQgBUF/NgIcDAQLCyAFKAIEKAIEIAUoAgw2AhQgBSgCBCgCBCIAIAAoAgBBIHI2AgAMAQsgBSgCBCgCBARAIAUoAgQoAgQiACAAKAIAQV9xNgIAIAUoAgQoAgQoAgBFBEAgBSgCBCgCBBA5IAUoAgRBADYCBAsLCyAFQQA2AhwLIAUoAhwhACAFQSBqJAAgAAsXACAAIAGtIAKtQiCGhCADIAQgBRCZAQsXACAAIAGtIAKtQiCGhCADIAQgBRCXAQuPAQIBfwF+An8jAEEgayIEJAAgBCAANgIUIAQgATYCECAEIAI2AgwgBCADNgIIAkACQCAEKAIQBEAgBCgCDA0BCyAEKAIUQQhqQRJBABAUIARCfzcDGAwBCyAEIAQoAhQgBCgCECAEKAIMIAQoAggQmgE3AxgLIAQpAxghBSAEQSBqJAAgBUIgiKcLEAAgBacLiAEBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCMAQRBrIgAgAigCDDYCDCAAKAIMQQA2AgAgACgCDEEANgIEIAAoAgxBADYCCCACKAIMIAIoAgg2AgACQCACKAIMEJYBQQFGBEAgAigCDEG0mwEoAgA2AgQMAQsgAigCDEEANgIECyACQRBqJAALhQUCAX8BfgJ/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNgIcAkAgAygCJCgCGEECcQRAIAMoAiRBCGpBGUEAEBQgA0J/NwMoDAELIAMoAiBFBEAgAygCJEEIakESQQAQFCADQn83AygMAQsgA0EANgIMIAMgAygCIBArNgIYIAMoAiAgAygCGEEBa2osAABBL0cEQCADIAMoAhhBAmoQGCIANgIMIABFBEAgAygCJEEIakEOQQAQFCADQn83AygMAgsCQAJAIAMoAgwiASADKAIgIgBzQQNxDQAgAEEDcQRAA0AgASAALQAAIgI6AAAgAkUNAyABQQFqIQEgAEEBaiIAQQNxDQALCyAAKAIAIgJBf3MgAkGBgoQIa3FBgIGChHhxDQADQCABIAI2AgAgACgCBCECIAFBBGohASAAQQRqIQAgAkGBgoQIayACQX9zcUGAgYKEeHFFDQALCyABIAAtAAAiAjoAACACRQ0AA0AgASAALQABIgI6AAEgAUEBaiEBIABBAWohACACDQALCyADKAIMIAMoAhhqQS86AAAgAygCDCADKAIYQQFqakEAOgAACyADIAMoAiRBAEIAQQAQfiIANgIIIABFBEAgAygCDBAVIANCfzcDKAwBCyADIAMoAiQCfyADKAIMBEAgAygCDAwBCyADKAIgCyADKAIIIAMoAhwQmgE3AxAgAygCDBAVAkAgAykDEEIAUwRAIAMoAggQGwwBCyADKAIkIAMpAxBBAEEDQYCA/I8EEJkBQQBIBEAgAygCJCADKQMQEJgBGiADQn83AygMAgsLIAMgAykDEDcDKAsgAykDKCEEIANBMGokACAEQiCIpwsQACAEpwsRACAAIAGtIAKtQiCGhBCYAQt/AgF/AX4jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADKAIYIAMoAhQgAygCEBBzIgQ3AwgCQCAEQgBTBEAgA0EANgIcDAELIAMgAygCGCADKQMIIAMoAhAgAygCGCgCHBCtATYCHAsgAygCHCEAIANBIGokACAAC8QBAQF/IwBBMGsiASQAIAEgADYCKCABQQA2AiQgAUIANwMYAkADQCABKQMYIAEoAigpAzBUBEAgASABKAIoIAEpAxhBACABQRdqIAFBEGoQlwE2AgwgASgCDEF/RgRAIAFBfzYCLAwDBQJAIAEtABdBA0cNACABKAIQQRB2QYDgA3FBgMACRw0AIAEgASgCJEEBajYCJAsgASABKQMYQgF8NwMYDAILAAsLIAEgASgCJDYCLAsgASgCLCEAIAFBMGokACAACxAAIwAgAGtBcHEiACQAIAALBgAgACQACwQAIwALggECAX8BfiMAQSBrIgQkACAEIAA2AhggBCABNgIUIAQgAjYCECAEIAM2AgwgBCAEKAIYIAQoAhQgBCgCEBBzIgU3AwACQCAFQgBTBEAgBEF/NgIcDAELIAQgBCgCGCAEKQMAIAQoAhAgBCgCDBB/NgIcCyAEKAIcIQAgBEEgaiQAIAAL0EUDBn8BfgJ8IwBB4ABrIgEkACABIAA2AlgCQCABKAJYRQRAIAFBfzYCXAwBCyMAQSBrIgAgASgCWDYCHCAAIAFBQGs2AhggAEEANgIUIABCADcDAAJAIAAoAhwtAChBAXFFBEAgACgCHCgCGCAAKAIcKAIURg0BCyAAQQE2AhQLIABCADcDCANAIAApAwggACgCHCkDMFQEQAJAAkAgACgCHCgCQCAAKQMIp0EEdGooAggNACAAKAIcKAJAIAApAwinQQR0ai0ADEEBcQ0AIAAoAhwoAkAgACkDCKdBBHRqKAIERQ0BIAAoAhwoAkAgACkDCKdBBHRqKAIEKAIARQ0BCyAAQQE2AhQLIAAoAhwoAkAgACkDCKdBBHRqLQAMQQFxRQRAIAAgACkDAEIBfDcDAAsgACAAKQMIQgF8NwMIDAELCyAAKAIYBEAgACgCGCAAKQMANwMACyABIAAoAhQ2AiQgASkDQFAEQAJAIAEoAlgoAgRBCHFFBEAgASgCJEUNAQsCfyABKAJYKAIAIQIjAEEQayIAJAAgACACNgIIAkAgACgCCCgCJEEDRgRAIABBADYCDAwBCyAAKAIIKAIgBEAgACgCCBAxQQBIBEAgAEF/NgIMDAILCyAAKAIIKAIkBEAgACgCCBBnCyAAKAIIQQBCAEEPECFCAFMEQCAAQX82AgwMAQsgACgCCEEDNgIkIABBADYCDAsgACgCDCECIABBEGokACACQQBICwRAAkACfyMAQRBrIgAgASgCWCgCADYCDCMAQRBrIgIgACgCDEEMajYCDCACKAIMKAIAQRZGCwRAIwBBEGsiACABKAJYKAIANgIMIwBBEGsiAiAAKAIMQQxqNgIMIAIoAgwoAgRBLEYNAQsgASgCWEEIaiABKAJYKAIAEBcgAUF/NgJcDAQLCwsgASgCWBA9IAFBADYCXAwBCyABKAIkRQRAIAEoAlgQPSABQQA2AlwMAQsgASkDQCABKAJYKQMwVgRAIAEoAlhBCGpBFEEAEBQgAUF/NgJcDAELIAEgASkDQKdBA3QQGCIANgIoIABFBEAgAUF/NgJcDAELIAFCfzcDOCABQgA3A0ggAUIANwNQA0AgASkDUCABKAJYKQMwVARAAkAgASgCWCgCQCABKQNQp0EEdGooAgBFDQACQCABKAJYKAJAIAEpA1CnQQR0aigCCA0AIAEoAlgoAkAgASkDUKdBBHRqLQAMQQFxDQAgASgCWCgCQCABKQNQp0EEdGooAgRFDQEgASgCWCgCQCABKQNQp0EEdGooAgQoAgBFDQELIAECfiABKQM4IAEoAlgoAkAgASkDUKdBBHRqKAIAKQNIVARAIAEpAzgMAQsgASgCWCgCQCABKQNQp0EEdGooAgApA0gLNwM4CyABKAJYKAJAIAEpA1CnQQR0ai0ADEEBcUUEQCABKQNIIAEpA0BaBEAgASgCKBAVIAEoAlhBCGpBFEEAEBQgAUF/NgJcDAQLIAEoAiggASkDSKdBA3RqIAEpA1A3AwAgASABKQNIQgF8NwNICyABIAEpA1BCAXw3A1AMAQsLIAEpA0ggASkDQFQEQCABKAIoEBUgASgCWEEIakEUQQAQFCABQX82AlwMAQsCQAJ/IwBBEGsiACABKAJYKAIANgIMIAAoAgwpAxhCgIAIg1ALBEAgAUIANwM4DAELIAEpAzhCf1EEQCABQn83AxggAUIANwM4IAFCADcDUANAIAEpA1AgASgCWCkDMFQEQCABKAJYKAJAIAEpA1CnQQR0aigCAARAIAEoAlgoAkAgASkDUKdBBHRqKAIAKQNIIAEpAzhaBEAgASABKAJYKAJAIAEpA1CnQQR0aigCACkDSDcDOCABIAEpA1A3AxgLCyABIAEpA1BCAXw3A1AMAQsLIAEpAxhCf1IEQCABKAJYIQIgASkDGCEHIAEoAlhBCGohAyMAQTBrIgAkACAAIAI2AiQgACAHNwMYIAAgAzYCFCAAIAAoAiQgACkDGCAAKAIUEGUiBzcDCAJAIAdQBEAgAEIANwMoDAELIAAgACgCJCgCQCAAKQMYp0EEdGooAgA2AgQCQCAAKQMIIAApAwggACgCBCkDIHxYBEAgACkDCCAAKAIEKQMgfEL///////////8AWA0BCyAAKAIUQQRBFhAUIABCADcDKAwBCyAAIAAoAgQpAyAgACkDCHw3AwggACgCBC8BDEEIcQRAIAAoAiQoAgAgACkDCEEAECdBAEgEQCAAKAIUIAAoAiQoAgAQFyAAQgA3AygMAgsgACgCJCgCACAAQgQQLkIEUgRAIAAoAhQgACgCJCgCABAXIABCADcDKAwCCyAAKAAAQdCWncAARgRAIAAgACkDCEIEfDcDCAsgACAAKQMIQgx8NwMIIAAoAgRBABBeQQFxBEAgACAAKQMIQgh8NwMICyAAKQMIQv///////////wBWBEAgACgCFEEEQRYQFCAAQgA3AygMAgsLIAAgACkDCDcDKAsgACkDKCEHIABBMGokACABIAc3AzggB1AEQCABKAIoEBUgAUF/NgJcDAQLCwsgASkDOEIAUgRAAn8gASgCWCgCACECIAEpAzghByMAQRBrIgAkACAAIAI2AgggACAHNwMAAkAgACgCCCgCJEEBRgRAIAAoAghBDGpBEkEAEBQgAEF/NgIMDAELIAAoAghBACAAKQMAQREQIUIAUwRAIABBfzYCDAwBCyAAKAIIQQE2AiQgAEEANgIMCyAAKAIMIQIgAEEQaiQAIAJBAEgLBEAgAUIANwM4CwsLIAEpAzhQBEACfyABKAJYKAIAIQIjAEEQayIAJAAgACACNgIIAkAgACgCCCgCJEEBRgRAIAAoAghBDGpBEkEAEBQgAEF/NgIMDAELIAAoAghBAEIAQQgQIUIAUwRAIABBfzYCDAwBCyAAKAIIQQE2AiQgAEEANgIMCyAAKAIMIQIgAEEQaiQAIAJBAEgLBEAgASgCWEEIaiABKAJYKAIAEBcgASgCKBAVIAFBfzYCXAwCCwsgASgCWCgCVCECIwBBEGsiACQAIAAgAjYCDCAAKAIMBEAgACgCDEQAAAAAAAAAADkDGCAAKAIMKAIARAAAAAAAAAAAIAAoAgwoAgwgACgCDCgCBBEWAAsgAEEQaiQAIAFBADYCLCABQgA3A0gDQAJAIAEpA0ggASkDQFoNACABKAJYKAJUIQIgASkDSCIHuiABKQNAuiIIoyEJIwBBIGsiACQAIAAgAjYCHCAAIAk5AxAgACAHQgF8uiAIozkDCCAAKAIcBEAgACgCHCAAKwMQOQMgIAAoAhwgACsDCDkDKCAAKAIcRAAAAAAAAAAAEFYLIABBIGokACABIAEoAiggASkDSKdBA3RqKQMANwNQIAEgASgCWCgCQCABKQNQp0EEdGo2AhACQAJAIAEoAhAoAgBFDQAgASgCECgCACkDSCABKQM4Wg0ADAELIAECf0EBIAEoAhAoAggNABogASgCECgCBARAQQEgASgCECgCBCgCAEEBcQ0BGgsgASgCECgCBAR/IAEoAhAoAgQoAgBBwABxQQBHBUEACwtBAXE2AhQgASgCECgCBEUEQCABKAIQKAIAED8hACABKAIQIAA2AgQgAEUEQCABKAJYQQhqQQ5BABAUIAFBATYCLAwDCwsgASABKAIQKAIENgIMAn8gASgCWCECIAEpA1AhByMAQTBrIgAkACAAIAI2AiggACAHNwMgAkAgACkDICAAKAIoKQMwWgRAIAAoAihBCGpBEkEAEBQgAEF/NgIsDAELIAAgACgCKCgCQCAAKQMgp0EEdGo2AhwCQCAAKAIcKAIABEAgACgCHCgCAC0ABEEBcUUNAQsgAEEANgIsDAELIAAoAhwoAgApA0hCGnxC////////////AFYEQCAAKAIoQQhqQQRBFhAUIABBfzYCLAwBCyAAKAIoKAIAIAAoAhwoAgApA0hCGnxBABAnQQBIBEAgACgCKEEIaiAAKAIoKAIAEBcgAEF/NgIsDAELIAAgACgCKCgCAEIEIABBGGogACgCKEEIahBBIgI2AhQgAkUEQCAAQX82AiwMAQsgACAAKAIUEB07ARIgACAAKAIUEB07ARAgACgCFBBHQQFxRQRAIAAoAhQQFiAAKAIoQQhqQRRBABAUIABBfzYCLAwBCyAAKAIUEBYgAC8BEARAIAAoAigoAgAgAC8BEq1BARAnQQBIBEAgACgCKEEIakEEQbSbASgCABAUIABBfzYCLAwCCyAAQQAgACgCKCgCACAALwEQQQAgACgCKEEIahBgNgIIIAAoAghFBEAgAEF/NgIsDAILIAAoAgggAC8BEEGAAiAAQQxqIAAoAihBCGoQiAFBAXFFBEAgACgCCBAVIABBfzYCLAwCCyAAKAIIEBUgACgCDARAIAAgACgCDBCHATYCDCAAKAIcKAIAKAI0IAAoAgwQiQEhAiAAKAIcKAIAIAI2AjQLCyAAKAIcKAIAQQE6AAQCQCAAKAIcKAIERQ0AIAAoAhwoAgQtAARBAXENACAAKAIcKAIEIAAoAhwoAgAoAjQ2AjQgACgCHCgCBEEBOgAECyAAQQA2AiwLIAAoAiwhAiAAQTBqJAAgAkEASAsEQCABQQE2AiwMAgsgASABKAJYKAIAEDQiBzcDMCAHQgBTBEAgAUEBNgIsDAILIAEoAgwgASkDMDcDSAJAIAEoAhQEQCABQQA2AgggASgCECgCCEUEQCABIAEoAlggASgCWCABKQNQQQhBABCuASIANgIIIABFBEAgAUEBNgIsDAULCwJ/IAEoAlghAgJ/IAEoAggEQCABKAIIDAELIAEoAhAoAggLIQMgASgCDCEEIwBBoAFrIgAkACAAIAI2ApgBIAAgAzYClAEgACAENgKQAQJAIAAoApQBIABBOGoQOEEASARAIAAoApgBQQhqIAAoApQBEBcgAEF/NgKcAQwBCyAAKQM4QsAAg1AEQCAAIAApAzhCwACENwM4IABBADsBaAsCQAJAIAAoApABKAIQQX9HBEAgACgCkAEoAhBBfkcNAQsgAC8BaEUNACAAKAKQASAALwFoNgIQDAELAkACQCAAKAKQASgCEA0AIAApAzhCBINQDQAgACAAKQM4QgiENwM4IAAgACkDUDcDWAwBCyAAIAApAzhC9////w+DNwM4CwsgACkDOEKAAYNQBEAgACAAKQM4QoABhDcDOCAAQQA7AWoLIABBgAI2AiQCQCAAKQM4QgSDUARAIAAgACgCJEGACHI2AiQgAEJ/NwNwDAELIAAoApABIAApA1A3AyggACAAKQNQNwNwAkAgACkDOEIIg1AEQAJAAkACQAJAAkACfwJAIAAoApABKAIQQX9HBEAgACgCkAEoAhBBfkcNAQtBCAwBCyAAKAKQASgCEAtB//8DcQ4NAgMDAwMDAwMBAwMDAAMLIABClMLk8w83AxAMAwsgAEKDg7D/DzcDEAwCCyAAQv////8PNwMQDAELIABCADcDEAsgACkDUCAAKQMQVgRAIAAgACgCJEGACHI2AiQLDAELIAAoApABIAApA1g3AyALCyAAIAAoApgBKAIAEDQiBzcDiAEgB0IAUwRAIAAoApgBQQhqIAAoApgBKAIAEBcgAEF/NgKcAQwBCyAAKAKQASICIAIvAQxB9/8DcTsBDCAAIAAoApgBIAAoApABIAAoAiQQUCICNgIoIAJBAEgEQCAAQX82ApwBDAELIAAgAC8BaAJ/AkAgACgCkAEoAhBBf0cEQCAAKAKQASgCEEF+Rw0BC0EIDAELIAAoApABKAIQC0H//wNxRzoAIiAAIAAtACJBAXEEfyAALwFoQQBHBUEAC0EBcToAISAAIAAvAWgEfyAALQAhBUEBC0EBcToAICAAIAAtACJBAXEEfyAAKAKQASgCEEEARwVBAAtBAXE6AB8gAAJ/QQEgAC0AIkEBcQ0AGkEBIAAoApABKAIAQYABcQ0AGiAAKAKQAS8BUiAALwFqRwtBAXE6AB4gACAALQAeQQFxBH8gAC8BakEARwVBAAtBAXE6AB0gACAALQAeQQFxBH8gACgCkAEvAVJBAEcFQQALQQFxOgAcIAAgACgClAE2AjQjAEEQayICIAAoAjQ2AgwgAigCDCICIAIoAjBBAWo2AjAgAC0AHUEBcQRAIAAgAC8BakEAEHwiAjYCDCACRQRAIAAoApgBQQhqQRhBABAUIAAoAjQQGyAAQX82ApwBDAILIAAgACgCmAEgACgCNCAALwFqQQAgACgCmAEoAhwgACgCDBEFACICNgIwIAJFBEAgACgCNBAbIABBfzYCnAEMAgsgACgCNBAbIAAgACgCMDYCNAsgAC0AIUEBcQRAIAAgACgCmAEgACgCNCAALwFoELABIgI2AjAgAkUEQCAAKAI0EBsgAEF/NgKcAQwCCyAAKAI0EBsgACAAKAIwNgI0CyAALQAgQQFxBEAgACAAKAKYASAAKAI0QQAQrwEiAjYCMCACRQRAIAAoAjQQGyAAQX82ApwBDAILIAAoAjQQGyAAIAAoAjA2AjQLIAAtAB9BAXEEQCAAKAKYASEDIAAoAjQhBCAAKAKQASgCECEFIAAoApABLwFQIQYjAEEQayICJAAgAiADNgIMIAIgBDYCCCACIAU2AgQgAiAGNgIAIAIoAgwgAigCCCACKAIEQQEgAigCABCyASEDIAJBEGokACAAIAMiAjYCMCACRQRAIAAoAjQQGyAAQX82ApwBDAILIAAoAjQQGyAAIAAoAjA2AjQLIAAtABxBAXEEQCAAQQA2AgQCQCAAKAKQASgCVARAIAAgACgCkAEoAlQ2AgQMAQsgACgCmAEoAhwEQCAAIAAoApgBKAIcNgIECwsgACAAKAKQAS8BUkEBEHwiAjYCCCACRQRAIAAoApgBQQhqQRhBABAUIAAoAjQQGyAAQX82ApwBDAILIAAgACgCmAEgACgCNCAAKAKQAS8BUkEBIAAoAgQgACgCCBEFACICNgIwIAJFBEAgACgCNBAbIABBfzYCnAEMAgsgACgCNBAbIAAgACgCMDYCNAsgACAAKAKYASgCABA0Igc3A4ABIAdCAFMEQCAAKAKYAUEIaiAAKAKYASgCABAXIABBfzYCnAEMAQsgACgCmAEhAyAAKAI0IQQgACkDcCEHIwBBwMAAayICJAAgAiADNgK4QCACIAQ2ArRAIAIgBzcDqEACQCACKAK0QBBJQQBIBEAgAigCuEBBCGogAigCtEAQFyACQX82ArxADAELIAJBADYCDCACQgA3AxADQAJAIAIgAigCtEAgAkEgakKAwAAQLiIHNwMYIAdCAFcNACACKAK4QCACQSBqIAIpAxgQNUEASARAIAJBfzYCDAUgAikDGEKAwABSDQIgAigCuEAoAlRFDQIgAikDqEBCAFcNAiACIAIpAxggAikDEHw3AxAgAigCuEAoAlQgAikDELkgAikDqEC5oxBWDAILCwsgAikDGEIAUwRAIAIoArhAQQhqIAIoArRAEBcgAkF/NgIMCyACKAK0QBAxGiACIAIoAgw2ArxACyACKAK8QCEDIAJBwMAAaiQAIAAgAzYCLCAAKAI0IABBOGoQOEEASARAIAAoApgBQQhqIAAoAjQQFyAAQX82AiwLIAAoAjQhAyMAQRBrIgIkACACIAM2AggCQANAIAIoAggEQCACKAIIKQMYQoCABINCAFIEQCACIAIoAghBAEIAQRAQITcDACACKQMAQgBTBEAgAkH/AToADwwECyACKQMAQgNVBEAgAigCCEEMakEUQQAQFCACQf8BOgAPDAQLIAIgAikDADwADwwDBSACIAIoAggoAgA2AggMAgsACwsgAkEAOgAPCyACLAAPIQMgAkEQaiQAIAAgAyICOgAjIAJBGHRBGHVBAEgEQCAAKAKYAUEIaiAAKAI0EBcgAEF/NgIsCyAAKAI0EBsgACgCLEEASARAIABBfzYCnAEMAQsgACAAKAKYASgCABA0Igc3A3ggB0IAUwRAIAAoApgBQQhqIAAoApgBKAIAEBcgAEF/NgKcAQwBCyAAKAKYASgCACAAKQOIARCbAUEASARAIAAoApgBQQhqIAAoApgBKAIAEBcgAEF/NgKcAQwBCyAAKQM4QuQAg0LkAFIEQCAAKAKYAUEIakEUQQAQFCAAQX82ApwBDAELIAAoApABKAIAQSBxRQRAAkAgACkDOEIQg0IAUgRAIAAoApABIAAoAmA2AhQMAQsgACgCkAFBFGoQARoLCyAAKAKQASAALwFoNgIQIAAoApABIAAoAmQ2AhggACgCkAEgACkDUDcDKCAAKAKQASAAKQN4IAApA4ABfTcDICAAKAKQASAAKAKQAS8BDEH5/wNxIAAtACNBAXRyOwEMIAAoApABIQMgACgCJEGACHFBAEchBCMAQRBrIgIkACACIAM2AgwgAiAEOgALAkAgAigCDCgCEEEORgRAIAIoAgxBPzsBCgwBCyACKAIMKAIQQQxGBEAgAigCDEEuOwEKDAELAkAgAi0AC0EBcUUEQCACKAIMQQAQXkEBcUUNAQsgAigCDEEtOwEKDAELAkAgAigCDCgCEEEIRwRAIAIoAgwvAVJBAUcNAQsgAigCDEEUOwEKDAELIAIgAigCDCgCMBBTIgM7AQggA0H//wNxBEAgAigCDCgCMCgCACACLwEIQQFrai0AAEEvRgRAIAIoAgxBFDsBCgwCCwsgAigCDEEKOwEKCyACQRBqJAAgACAAKAKYASAAKAKQASAAKAIkEFAiAjYCLCACQQBIBEAgAEF/NgKcAQwBCyAAKAIoIAAoAixHBEAgACgCmAFBCGpBFEEAEBQgAEF/NgKcAQwBCyAAKAKYASgCACAAKQN4EJsBQQBIBEAgACgCmAFBCGogACgCmAEoAgAQFyAAQX82ApwBDAELIABBADYCnAELIAAoApwBIQIgAEGgAWokACACQQBICwRAIAFBATYCLCABKAIIBEAgASgCCBAbCwwECyABKAIIBEAgASgCCBAbCwwBCyABKAIMIgAgAC8BDEH3/wNxOwEMIAEoAlggASgCDEGAAhBQQQBIBEAgAUEBNgIsDAMLIAEgASgCWCABKQNQIAEoAlhBCGoQZSIHNwMAIAdQBEAgAUEBNgIsDAMLIAEoAlgoAgAgASkDAEEAECdBAEgEQCABKAJYQQhqIAEoAlgoAgAQFyABQQE2AiwMAwsCfyABKAJYIQIgASgCDCkDICEHIwBBoMAAayIAJAAgACACNgKYQCAAIAc3A5BAIAAgACkDkEC6OQMAAkADQCAAKQOQQFBFBEAgACAAKQOQQEKAwABWBH5CgMAABSAAKQOQQAs+AgwgACgCmEAoAgAgAEEQaiAAKAIMrSAAKAKYQEEIahBhQQBIBEAgAEF/NgKcQAwDCyAAKAKYQCAAQRBqIAAoAgytEDVBAEgEQCAAQX82ApxADAMFIAAgACkDkEAgADUCDH03A5BAIAAoAphAKAJUIAArAwAgACkDkEC6oSAAKwMAoxBWDAILAAsLIABBADYCnEALIAAoApxAIQIgAEGgwABqJAAgAkEASAsEQCABQQE2AiwMAwsLCyABIAEpA0hCAXw3A0gMAQsLIAEoAixFBEACfyABKAJYIQAgASgCKCEDIAEpA0AhByMAQTBrIgIkACACIAA2AiggAiADNgIkIAIgBzcDGCACIAIoAigoAgAQNCIHNwMQAkAgB0IAUwRAIAJBfzYCLAwBCyACKAIoIQMgAigCJCEEIAIpAxghByMAQcABayIAJAAgACADNgK0ASAAIAQ2ArABIAAgBzcDqAEgACAAKAK0ASgCABA0Igc3AyACQCAHQgBTBEAgACgCtAFBCGogACgCtAEoAgAQFyAAQn83A7gBDAELIAAgACkDIDcDoAEgAEEAOgAXIABCADcDGANAIAApAxggACkDqAFUBEAgACAAKAK0ASgCQCAAKAKwASAAKQMYp0EDdGopAwCnQQR0ajYCDCAAIAAoArQBAn8gACgCDCgCBARAIAAoAgwoAgQMAQsgACgCDCgCAAtBgAQQUCIDNgIQIANBAEgEQCAAQn83A7gBDAMLIAAoAhAEQCAAQQE6ABcLIAAgACkDGEIBfDcDGAwBCwsgACAAKAK0ASgCABA0Igc3AyAgB0IAUwRAIAAoArQBQQhqIAAoArQBKAIAEBcgAEJ/NwO4AQwBCyAAIAApAyAgACkDoAF9NwOYAQJAIAApA6ABQv////8PWARAIAApA6gBQv//A1gNAQsgAEEBOgAXCyAAIABBMGpC4gAQKSIDNgIsIANFBEAgACgCtAFBCGpBDkEAEBQgAEJ/NwO4AQwBCyAALQAXQQFxBEAgACgCLEHnEkEEEEAgACgCLEIsEC0gACgCLEEtEB8gACgCLEEtEB8gACgCLEEAECAgACgCLEEAECAgACgCLCAAKQOoARAtIAAoAiwgACkDqAEQLSAAKAIsIAApA5gBEC0gACgCLCAAKQOgARAtIAAoAixB4hJBBBBAIAAoAixBABAgIAAoAiwgACkDoAEgACkDmAF8EC0gACgCLEEBECALIAAoAixB7BJBBBBAIAAoAixBABAgIAAoAiwgACkDqAFC//8DWgR+Qv//AwUgACkDqAELp0H//wNxEB8gACgCLCAAKQOoAUL//wNaBH5C//8DBSAAKQOoAQunQf//A3EQHyAAKAIsIAApA5gBQv////8PWgR/QX8FIAApA5gBpwsQICAAKAIsIAApA6ABQv////8PWgR/QX8FIAApA6ABpwsQICAAAn8gACgCtAEtAChBAXEEQCAAKAK0ASgCJAwBCyAAKAK0ASgCIAs2ApQBIAAoAiwCfyAAKAKUAQRAIAAoApQBLwEEDAELQQALQf//A3EQHwJ/IwBBEGsiAyAAKAIsNgIMIAMoAgwtAABBAXFFCwRAIAAoArQBQQhqQRRBABAUIAAoAiwQFiAAQn83A7gBDAELIAAoArQBAn8jAEEQayIDIAAoAiw2AgwgAygCDCgCBAsCfiMAQRBrIgMgACgCLDYCDAJ+IAMoAgwtAABBAXEEQCADKAIMKQMQDAELQgALCxA1QQBIBEAgACgCLBAWIABCfzcDuAEMAQsgACgCLBAWIAAoApQBBEAgACgCtAEgACgClAEoAgAgACgClAEvAQStEDVBAEgEQCAAQn83A7gBDAILCyAAIAApA5gBNwO4AQsgACkDuAEhByAAQcABaiQAIAIgBzcDACAHQgBTBEAgAkF/NgIsDAELIAIgAigCKCgCABA0Igc3AwggB0IAUwRAIAJBfzYCLAwBCyACQQA2AiwLIAIoAiwhACACQTBqJAAgAEEASAsEQCABQQE2AiwLCyABKAIoEBUgASgCLEUEQAJ/IAEoAlgoAgAhAiMAQRBrIgAkACAAIAI2AggCQCAAKAIIKAIkQQFHBEAgACgCCEEMakESQQAQFCAAQX82AgwMAQsgACgCCCgCIEEBSwRAIAAoAghBDGpBHUEAEBQgAEF/NgIMDAELIAAoAggoAiAEQCAAKAIIEDFBAEgEQCAAQX82AgwMAgsLIAAoAghBAEIAQQkQIUIAUwRAIAAoAghBAjYCJCAAQX82AgwMAQsgACgCCEEANgIkIABBADYCDAsgACgCDCECIABBEGokACACCwRAIAEoAlhBCGogASgCWCgCABAXIAFBATYCLAsLIAEoAlgoAlQhAiMAQRBrIgAkACAAIAI2AgwgACgCDEQAAAAAAADwPxBWIABBEGokACABKAIsBEAgASgCWCgCABBnIAFBfzYCXAwBCyABKAJYED0gAUEANgJcCyABKAJcIQAgAUHgAGokACAAC9IOAgd/An4jAEEwayIDJAAgAyAANgIoIAMgATYCJCADIAI2AiAjAEEQayIAIANBCGo2AgwgACgCDEEANgIAIAAoAgxBADYCBCAAKAIMQQA2AgggAygCKCEAIwBBIGsiBCQAIAQgADYCGCAEQgA3AxAgBEJ/NwMIIAQgA0EIajYCBAJAAkAgBCgCGARAIAQpAwhCf1kNAQsgBCgCBEESQQAQFCAEQQA2AhwMAQsgBCgCGCEAIAQpAxAhCiAEKQMIIQsgBCgCBCEBIwBBoAFrIgIkACACIAA2ApgBIAJBADYClAEgAiAKNwOIASACIAs3A4ABIAJBADYCfCACIAE2AngCQAJAIAIoApQBDQAgAigCmAENACACKAJ4QRJBABAUIAJBADYCnAEMAQsgAikDgAFCAFMEQCACQgA3A4ABCwJAIAIpA4gBQv///////////wBYBEAgAikDiAEgAikDiAEgAikDgAF8WA0BCyACKAJ4QRJBABAUIAJBADYCnAEMAQsgAkGIARAYIgA2AnQgAEUEQCACKAJ4QQ5BABAUIAJBADYCnAEMAQsgAigCdEEANgIYIAIoApgBBEAgAigCmAEiABArQQFqIgEQGCIFBH8gBSAAIAEQGQVBAAshACACKAJ0IAA2AhggAEUEQCACKAJ4QQ5BABAUIAIoAnQQFSACQQA2ApwBDAILCyACKAJ0IAIoApQBNgIcIAIoAnQgAikDiAE3A2ggAigCdCACKQOAATcDcAJAIAIoAnwEQCACKAJ0IgAgAigCfCIBKQMANwMgIAAgASkDMDcDUCAAIAEpAyg3A0ggACABKQMgNwNAIAAgASkDGDcDOCAAIAEpAxA3AzAgACABKQMINwMoIAIoAnRBADYCKCACKAJ0IgAgACkDIEL+////D4M3AyAMAQsgAigCdEEgahA7CyACKAJ0KQNwQgBSBEAgAigCdCACKAJ0KQNwNwM4IAIoAnQiACAAKQMgQgSENwMgCyMAQRBrIgAgAigCdEHYAGo2AgwgACgCDEEANgIAIAAoAgxBADYCBCAAKAIMQQA2AgggAigCdEEANgKAASACKAJ0QQA2AoQBIwBBEGsiACACKAJ0NgIMIAAoAgxBADYCACAAKAIMQQA2AgQgACgCDEEANgIIIAJBfzYCBCACQQc2AgBBDiACEDZCP4QhCiACKAJ0IAo3AxACQCACKAJ0KAIYBEAgAiACKAJ0KAIYIAJBGGoQpgFBAE46ABcgAi0AF0EBcUUEQAJAIAIoAnQpA2hQRQ0AIAIoAnQpA3BQRQ0AIAIoAnRC//8DNwMQCwsMAQsCQCACKAJ0KAIcIgAoAkxBAEgNAAsgACgCPCEAQQAhBSMAQSBrIgYkAAJ/AkAgACACQRhqIgkQCiIBQXhGBEAjAEEgayIHJAAgACAHQQhqEAkiCAR/QbSbASAINgIAQQAFQQELIQggB0EgaiQAIAgNAQsgAUGBYE8Ef0G0mwFBACABazYCAEF/BSABCwwBCwNAIAUgBmoiASAFQccSai0AADoAACAFQQ5HIQcgBUEBaiEFIAcNAAsCQCAABEBBDyEFIAAhAQNAIAFBCk8EQCAFQQFqIQUgAUEKbiEBDAELCyAFIAZqQQA6AAADQCAGIAVBAWsiBWogACAAQQpuIgFBCmxrQTByOgAAIABBCUshByABIQAgBw0ACwwBCyABQTA6AAAgBkEAOgAPCyAGIAkQAiIAQYFgTwR/QbSbAUEAIABrNgIAQX8FIAALCyEAIAZBIGokACACIABBAE46ABcLAkAgAi0AF0EBcUUEQCACKAJ0QdgAakEFQbSbASgCABAUDAELIAIoAnQpAyBCEINQBEAgAigCdCACKAJYNgJIIAIoAnQiACAAKQMgQhCENwMgCyACKAIkQYDgA3FBgIACRgRAIAIoAnRC/4EBNwMQIAIpA0AgAigCdCkDaCACKAJ0KQNwfFQEQCACKAJ4QRJBABAUIAIoAnQoAhgQFSACKAJ0EBUgAkEANgKcAQwDCyACKAJ0KQNwUARAIAIoAnQgAikDQCACKAJ0KQNofTcDOCACKAJ0IgAgACkDIEIEhDcDIAJAIAIoAnQoAhhFDQAgAikDiAFQRQ0AIAIoAnRC//8DNwMQCwsLCyACKAJ0IgAgACkDEEKAgBCENwMQIAJBHiACKAJ0IAIoAngQlAEiADYCcCAARQRAIAIoAnQoAhgQFSACKAJ0EBUgAkEANgKcAQwBCyACIAIoAnA2ApwBCyACKAKcASEAIAJBoAFqJAAgBCAANgIcCyAEKAIcIQAgBEEgaiQAIAMgADYCGAJAIABFBEAgAygCICADQQhqEJ0BIANBCGoQNyADQQA2AiwMAQsgAyADKAIYIAMoAiQgA0EIahCcASIANgIcIABFBEAgAygCGBAbIAMoAiAgA0EIahCdASADQQhqEDcgA0EANgIsDAELIANBCGoQNyADIAMoAhw2AiwLIAMoAiwhACADQTBqJAAgAAsYAQF/IwBBEGsiASAANgIMIAEoAgxBDGoLkh8BBn8jAEHgAGsiBCQAIAQgADYCVCAEIAE2AlAgBCACNwNIIAQgAzYCRCAEIAQoAlQ2AkAgBCAEKAJQNgI8AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBCgCRA4TBgcCDAQFCg4BAwkQCw8NCBERABELIARCADcDWAwRCyAEKAJAKAIYRQRAIAQoAkBBHEEAEBQgBEJ/NwNYDBELIAQoAkAhACMAQYABayIBJAAgASAANgJ4IAEgASgCeCgCGBArQQhqEBgiADYCdAJAIABFBEAgASgCeEEOQQAQFCABQX82AnwMAQsCQCABKAJ4KAIYIAFBEGoQpgFFBEAgASABKAIcNgJsDAELIAFBfzYCbAsgASgCdCEAIAEgASgCeCgCGDYCACAAQasSIAEQcCABKAJ0IQMgASgCbCEHIwBBMGsiACQAIAAgAzYCKCAAIAc2AiQgAEEANgIQIAAgACgCKCAAKAIoECtqNgIYIAAgACgCGEEBazYCHANAIAAoAhwgACgCKE8EfyAAKAIcLAAAQdgARgVBAAtBAXEEQCAAIAAoAhBBAWo2AhAgACAAKAIcQQFrNgIcDAELCwJAIAAoAhBFBEBBtJsBQRw2AgAgAEF/NgIsDAELIAAgACgCHEEBajYCHANAIwBBEGsiByQAAkACfyMAQRBrIgMkACADIAdBCGo2AgggA0EEOwEGIANB6AtBAEEAEG0iBTYCAAJAIAVBAEgEQCADQQA6AA8MAQsCfyADKAIAIQYgAygCCCEIIAMvAQYhCSMAQRBrIgUkACAFIAk2AgwgBSAINgIIIAYgBUEIakEBIAVBBGoQBiIGBH9BtJsBIAY2AgBBfwVBAAshBiAFKAIEIQggBUEQaiQAIAMvAQZBfyAIIAYbRwsEQCADKAIAEGwgA0EAOgAPDAELIAMoAgAQbCADQQE6AA8LIAMtAA9BAXEhBSADQRBqJAAgBQsEQCAHIAcoAgg2AgwMAQtBwKABLQAAQQFxRQRAQQAQASEGAkBByJkBKAIAIgNFBEBBzJkBKAIAIAY2AgAMAQtB0JkBQQNBA0EBIANBB0YbIANBH0YbNgIAQbygAUEANgIAQcyZASgCACEFIANBAU4EQCAGrSECQQAhBgNAIAUgBkECdGogAkKt/tXk1IX9qNgAfkIBfCICQiCIPgIAIAZBAWoiBiADRw0ACwsgBSAFKAIAQQFyNgIACwtBzJkBKAIAIQMCQEHImQEoAgAiBUUEQCADIAMoAgBB7ZyZjgRsQbngAGpB/////wdxIgM2AgAMAQsgA0HQmQEoAgAiBkECdGoiCCAIKAIAIANBvKABKAIAIghBAnRqKAIAaiIDNgIAQbygAUEAIAhBAWoiCCAFIAhGGzYCAEHQmQFBACAGQQFqIgYgBSAGRhs2AgAgA0EBdiEDCyAHIAM2AgwLIAcoAgwhAyAHQRBqJAAgACADNgIMIAAgACgCHDYCFANAIAAoAhQgACgCGEkEQCAAIAAoAgxBJHA6AAsCfyAALAALQQpIBEAgACwAC0EwagwBCyAALAALQdcAagshAyAAIAAoAhQiB0EBajYCFCAHIAM6AAAgACAAKAIMQSRuNgIMDAELCyAAKAIoIQMgACAAKAIkQX9GBH9BtgMFIAAoAiQLNgIAIAAgA0HCgSAgABBtIgM2AiAgA0EATgRAIAAoAiRBf0cEQCAAKAIoIAAoAiQQDyIDQYFgTwR/QbSbAUEAIANrNgIAQQAFIAMLGgsgACAAKAIgNgIsDAILQbSbASgCAEEURg0ACyAAQX82AiwLIAAoAiwhAyAAQTBqJAAgASADIgA2AnAgAEF/RgRAIAEoAnhBDEG0mwEoAgAQFCABKAJ0EBUgAUF/NgJ8DAELIAEgASgCcEGjEhChASIANgJoIABFBEAgASgCeEEMQbSbASgCABAUIAEoAnAQbCABKAJ0EG4aIAEoAnQQFSABQX82AnwMAQsgASgCeCABKAJoNgKEASABKAJ4IAEoAnQ2AoABIAFBADYCfAsgASgCfCEAIAFBgAFqJAAgBCAArDcDWAwQCyAEKAJAKAIYBEAgBCgCQCgCHBBVGiAEKAJAQQA2AhwLIARCADcDWAwPCyAEKAJAKAKEARBVQQBIBEAgBCgCQEEANgKEASAEKAJAQQZBtJsBKAIAEBQLIAQoAkBBADYChAEgBCgCQCgCgAEgBCgCQCgCGBAIIgBBgWBPBH9BtJsBQQAgAGs2AgBBfwUgAAtBAEgEQCAEKAJAQQJBtJsBKAIAEBQgBEJ/NwNYDA8LIAQoAkAoAoABEBUgBCgCQEEANgKAASAEQgA3A1gMDgsgBCAEKAJAIAQoAlAgBCkDSBBCNwNYDA0LIAQoAkAoAhgQFSAEKAJAKAKAARAVIAQoAkAoAhwEQCAEKAJAKAIcEFUaCyAEKAJAEBUgBEIANwNYDAwLIAQoAkAoAhgEQCAEKAJAKAIYIQEjAEEgayIAJAAgACABNgIYIABBADoAFyAAQYCAIDYCDAJAIAAtABdBAXEEQCAAIAAoAgxBAnI2AgwMAQsgACAAKAIMNgIMCyAAKAIYIQEgACgCDCEDIABBtgM2AgAgACABIAMgABBtIgE2AhACQCABQQBIBEAgAEEANgIcDAELIAAgACgCEEGjEkGgEiAALQAXQQFxGxChASIBNgIIIAFFBEAgAEEANgIcDAELIAAgACgCCDYCHAsgACgCHCEBIABBIGokACAEKAJAIAE2AhwgAUUEQCAEKAJAQQtBtJsBKAIAEBQgBEJ/NwNYDA0LCyAEKAJAKQNoQgBSBEAgBCgCQCgCHCAEKAJAKQNoIAQoAkAQnwFBAEgEQCAEQn83A1gMDQsLIAQoAkBCADcDeCAEQgA3A1gMCwsCQCAEKAJAKQNwQgBSBEAgBCAEKAJAKQNwIAQoAkApA3h9NwMwIAQpAzAgBCkDSFYEQCAEIAQpA0g3AzALDAELIAQgBCkDSDcDMAsgBCkDMEL/////D1YEQCAEQv////8PNwMwCyAEAn8gBCgCPCEHIAQpAzCnIQAgBCgCQCgCHCIDKAJMGiADIAMtAEoiAUEBayABcjoASiADKAIIIAMoAgQiBWsiAUEBSAR/IAAFIAcgBSABIAAgACABSxsiARAZGiADIAMoAgQgAWo2AgQgASAHaiEHIAAgAWsLIgEEQANAAkACfyADIAMtAEoiBUEBayAFcjoASiADKAIUIAMoAhxLBEAgA0EAQQAgAygCJBEBABoLIANBADYCHCADQgA3AxAgAygCACIFQQRxBEAgAyAFQSByNgIAQX8MAQsgAyADKAIsIAMoAjBqIgY2AgggAyAGNgIEIAVBG3RBH3ULRQRAIAMgByABIAMoAiARAQAiBUEBakEBSw0BCyAAIAFrDAMLIAUgB2ohByABIAVrIgENAAsLIAALIgA2AiwgAEUEQAJ/IAQoAkAoAhwiACgCTEF/TARAIAAoAgAMAQsgACgCAAtBBXZBAXEEQCAEKAJAQQVBtJsBKAIAEBQgBEJ/NwNYDAwLCyAEKAJAIgAgACkDeCAEKAIsrXw3A3ggBCAEKAIsrTcDWAwKCyAEKAJAKAIYEG5BAEgEQCAEKAJAQRZBtJsBKAIAEBQgBEJ/NwNYDAoLIARCADcDWAwJCyAEKAJAKAKEAQRAIAQoAkAoAoQBEFUaIAQoAkBBADYChAELIAQoAkAoAoABEG4aIAQoAkAoAoABEBUgBCgCQEEANgKAASAEQgA3A1gMCAsgBAJ/IAQpA0hCEFQEQCAEKAJAQRJBABAUQQAMAQsgBCgCUAs2AhggBCgCGEUEQCAEQn83A1gMCAsgBEEBNgIcAkACQAJAAkACQCAEKAIYKAIIDgMAAgEDCyAEIAQoAhgpAwA3AyAMAwsCQCAEKAJAKQNwUARAIAQoAkAoAhwgBCgCGCkDAEECIAQoAkAQa0EASARAIARCfzcDWAwNCyAEIAQoAkAoAhwQowEiAjcDICACQgBTBEAgBCgCQEEEQbSbASgCABAUIARCfzcDWAwNCyAEIAQpAyAgBCgCQCkDaH03AyAgBEEANgIcDAELIAQgBCgCQCkDcCAEKAIYKQMAfDcDIAsMAgsgBCAEKAJAKQN4IAQoAhgpAwB8NwMgDAELIAQoAkBBEkEAEBQgBEJ/NwNYDAgLAkACQCAEKQMgQgBTDQAgBCgCQCkDcEIAUgRAIAQpAyAgBCgCQCkDcFYNAQsgBCgCQCkDaCAEKQMgIAQoAkApA2h8WA0BCyAEKAJAQRJBABAUIARCfzcDWAwICyAEKAJAIAQpAyA3A3ggBCgCHARAIAQoAkAoAhwgBCgCQCkDeCAEKAJAKQNofCAEKAJAEJ8BQQBIBEAgBEJ/NwNYDAkLCyAEQgA3A1gMBwsgBAJ/IAQpA0hCEFQEQCAEKAJAQRJBABAUQQAMAQsgBCgCUAs2AhQgBCgCFEUEQCAEQn83A1gMBwsgBCgCQCgChAEgBCgCFCkDACAEKAIUKAIIIAQoAkAQa0EASARAIARCfzcDWAwHCyAEQgA3A1gMBgsgBCkDSEI4VARAIARCfzcDWAwGCwJ/IwBBEGsiACAEKAJAQdgAajYCDCAAKAIMKAIACwRAIAQoAkACfyMAQRBrIgAgBCgCQEHYAGo2AgwgACgCDCgCAAsCfyMAQRBrIgAgBCgCQEHYAGo2AgwgACgCDCgCBAsQFCAEQn83A1gMBgsgBCgCUCIAIAQoAkAiASkAIDcAACAAIAEpAFA3ADAgACABKQBINwAoIAAgASkAQDcAICAAIAEpADg3ABggACABKQAwNwAQIAAgASkAKDcACCAEQjg3A1gMBQsgBCAEKAJAKQMQNwNYDAQLIAQgBCgCQCkDeDcDWAwDCyAEIAQoAkAoAoQBEKMBNwMIIAQpAwhCAFMEQCAEKAJAQR5BtJsBKAIAEBQgBEJ/NwNYDAMLIAQgBCkDCDcDWAwCCyAEKAJAKAKEASIAKAJMQQBOGiAAIAAoAgBBT3E2AgAgBAJ/IAQoAlAhASAEKQNIpyIAIAACfyAEKAJAKAKEASIDKAJMQX9MBEAgASAAIAMQcgwBCyABIAAgAxByCyIBRg0AGiABCzYCBAJAIAQpA0ggBCgCBK1RBEACfyAEKAJAKAKEASIAKAJMQX9MBEAgACgCAAwBCyAAKAIAC0EFdkEBcUUNAQsgBCgCQEEGQbSbASgCABAUIARCfzcDWAwCCyAEIAQoAgStNwNYDAELIAQoAkBBHEEAEBQgBEJ/NwNYCyAEKQNYIQIgBEHgAGokACACCwkAIAAoAjwQBQvkAQEEfyMAQSBrIgMkACADIAE2AhAgAyACIAAoAjAiBEEAR2s2AhQgACgCLCEFIAMgBDYCHCADIAU2AhhBfyEEAkACQCAAKAI8IANBEGpBAiADQQxqEAYiBQR/QbSbASAFNgIAQX8FQQALRQRAIAMoAgwiBEEASg0BCyAAIAAoAgAgBEEwcUEQc3I2AgAMAQsgBCADKAIUIgZNDQAgACAAKAIsIgU2AgQgACAFIAQgBmtqNgIIIAAoAjAEQCAAIAVBAWo2AgQgASACakEBayAFLQAAOgAACyACIQQLIANBIGokACAEC/QCAQd/IwBBIGsiAyQAIAMgACgCHCIFNgIQIAAoAhQhBCADIAI2AhwgAyABNgIYIAMgBCAFayIBNgIUIAEgAmohBUECIQcgA0EQaiEBAn8CQAJAIAAoAjwgA0EQakECIANBDGoQAyIEBH9BtJsBIAQ2AgBBfwVBAAtFBEADQCAFIAMoAgwiBEYNAiAEQX9MDQMgASAEIAEoAgQiCEsiBkEDdGoiCSAEIAhBACAGG2siCCAJKAIAajYCACABQQxBBCAGG2oiCSAJKAIAIAhrNgIAIAUgBGshBSAAKAI8IAFBCGogASAGGyIBIAcgBmsiByADQQxqEAMiBAR/QbSbASAENgIAQX8FQQALRQ0ACwsgBUF/Rw0BCyAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQIAIMAQsgAEEANgIcIABCADcDECAAIAAoAgBBIHI2AgBBACAHQQJGDQAaIAIgASgCBGsLIQAgA0EgaiQAIAALUgEBfyMAQRBrIgMkACAAKAI8IAGnIAFCIIinIAJB/wFxIANBCGoQDSIABH9BtJsBIAA2AgBBfwVBAAshACADKQMIIQEgA0EQaiQAQn8gASAAGwtFAEGgmwFCADcDAEGYmwFCADcDAEGQmwFCADcDAEGImwFCADcDAEGAmwFCADcDAEH4mgFCADcDAEHwmgFCADcDAEHwmgEL1QQBBX8jAEGwAWsiASQAIAEgADYCqAEgASgCqAEQNwJAAkAgASgCqAEoAgBBAE4EQCABKAKoASgCAEGAFCgCAEgNAQsgASABKAKoASgCADYCECABQSBqQY8SIAFBEGoQcCABQQA2AqQBIAEgAUEgajYCoAEMAQsgASABKAKoASgCAEECdEGAE2ooAgA2AqQBAkACQAJAAkAgASgCqAEoAgBBAnRBkBRqKAIAQQFrDgIAAQILIAEoAqgBKAIEIQJBkJkBKAIAIQRBACEAAkACQANAIAIgAEGgiAFqLQAARwRAQdcAIQMgAEEBaiIAQdcARw0BDAILCyAAIgMNAEGAiQEhAgwBC0GAiQEhAANAIAAtAAAhBSAAQQFqIgIhACAFDQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQKwJ/IAEoAqQBBEAgASgCpAEQK0ECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEHAgASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMIQgSGIAgpAwAiA0I8iIQhAiAIKQMQIAgpAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIAhBIGokACACIAZCgICAgICAgICAf4OEvws5AwALrRcDEn8CfgF8IwBBsARrIgkkACAJQQA2AiwCQCABvSIYQn9XBEBBASESQa4IIRMgAZoiAb0hGAwBCyAEQYAQcQRAQQEhEkGxCCETDAELQbQIQa8IIARBAXEiEhshEyASRSEXCwJAIBhCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiASQQNqIg0gBEH//3txECYgACATIBIQIiAAQeQLQbUSIAVBIHEiAxtBjw1BuRIgAxsgASABYhtBAxAiDAELIAlBEGohEAJAAn8CQCABIAlBLGoQqQEiASABoCIBRAAAAAAAAAAAYgRAIAkgCSgCLCIGQQFrNgIsIAVBIHIiFEHhAEcNAQwDCyAFQSByIhRB4QBGDQIgCSgCLCELQQYgAyADQQBIGwwBCyAJIAZBHWsiCzYCLCABRAAAAAAAALBBoiEBQQYgAyADQQBIGwshCiAJQTBqIAlB0AJqIAtBAEgbIg4hBwNAIAcCfyABRAAAAAAAAPBBYyABRAAAAAAAAAAAZnEEQCABqwwBC0EACyIDNgIAIAdBBGohByABIAO4oUQA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HCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCGCABKAIUSQtBAXENAAsgASgCKEGCAiABKAIUIAEoAhhrazYCYCABKAIoKAJgIAEoAigoAnRLBEAgASgCKCABKAIoKAJ0NgJgCwsLAkAgASgCKCgCYEEDTwRAIAEgASgCKCgCYEEDazoAEyABQQE7ARAgASgCKCICKAKkLSACKAKgLUEBdGogAS8BEDsBACABLQATIQMgASgCKCICKAKYLSEEIAIgAigCoC0iAkEBajYCoC0gAiAEaiADOgAAIAEgAS8BEEEBazsBECABKAIoIAEtABNB0N0Aai0AAEECdGpBmAlqIgIgAi8BAEEBajsBACABKAIoQYgTagJ/IAEvARBBgAJJBEAgAS8BEC0A0FkMAQsgAS8BEEEHdkGAAmotANBZC0ECdGoiAiACLwEAQQFqOwEAIAEgASgCKCgCoC0gASgCKCgCnC1BAWtGNgIgIAEoAigiAiACKAJ0IAEoAigoAmBrNgJ0IAEoAigiAiABKAIoKAJgIAIoAmxqNgJsIAEoAihBADYCYAwBCyABIAEoAigiAigCOCACKAJsai0AADoADyABKAIoIgIoAqQtIAIoAqAtQQF0akEAOwEAIAEtAA8hAyABKAIoIgIoApgtIQQgAiACKAKgLSICQQFqNgKgLSACIARqIAM6AAAgASgCKCABLQAPQQJ0aiICIAIvAZQBQQFqOwGUASABIAEoAigoAqAtIAEoAigoApwtQQFrRjYCICABKAIoIgIgAigCdEEBazYCdCABKAIoIgIgAigCbEEBajYCbAsgASgCIARAIAEoAigCfyABKAIoKAJcQQBOBEAgASgCKCgCOCABKAIoKAJcagwBC0EACyABKAIoKAJsIAEoAigoAlxrQQAQKCABKAIoIAEoAigoAmw2AlwgASgCKCgCABAcIAEoAigo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QCABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiQgASgCLCABKAIccUECdGooAQA2ARACQAJAA0AgASABLQARNgIMIAEgASgCLCABKAIMdjYCLCABIAEoAiggASgCDGs2AiggASABLQAQNgIMIAEoAgxFBEAgAS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgi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ZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AbmFuAC9kZXYvdXJhbmRvbQBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAaW5mAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAcmIAcitiAHJ3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CADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";yz(Rp)||(Rp=dxe(Rp));function Kxe(t){try{if(t==Rp&&lP)return new Uint8Array(lP);var e=sz(t);if(e)return e;if(aP)return aP(t);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(r){Gr(r)}}function Uxe(t,e){var r,i,n;try{n=Kxe(t),i=new WebAssembly.Module(n),r=new WebAssembly.Instance(i,e)}catch(o){var s=o.toString();throw Di("failed to compile wasm module: "+s),(s.includes("imported Memory")||s.includes("memory import"))&&Di("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),o}return[r,i]}function Gxe(){var t={a:Hxe};function e(n,s){var o=n.exports;oe.asm=o,ew=oe.asm.u,pz(ew.buffer),fP=oe.asm.za,Mxe(oe.asm.v),dP("wasm-instantiate")}if(Iz("wasm-instantiate"),oe.instantiateWasm)try{var r=oe.instantiateWasm(t,e);return r}catch(n){return Di("Module.instantiateWasm callback failed with error: "+n),!1}var i=Uxe(Rp,t);return e(i[0]),oe.asm}var ai,ya;function hP(t){for(;t.length>0;){var e=t.shift();if(typeof e=="function"){e(oe);continue}var r=e.func;typeof r=="number"?e.arg===void 0?fP.get(r)():fP.get(r)(e.arg):r(e.arg===void 0?null:e.arg)}}function iw(t,e){var r=new Date(_e[t>>2]*1e3);_e[e>>2]=r.getUTCSeconds(),_e[e+4>>2]=r.getUTCMinutes(),_e[e+8>>2]=r.getUTCHours(),_e[e+12>>2]=r.getUTCDate(),_e[e+16>>2]=r.getUTCMonth(),_e[e+20>>2]=r.getUTCFullYear()-1900,_e[e+24>>2]=r.getUTCDay(),_e[e+36>>2]=0,_e[e+32>>2]=0;var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[e+28>>2]=n,iw.GMTString||(iw.GMTString=uP("GMT")),_e[e+40>>2]=iw.GMTString,e}function jxe(t,e){return iw(t,e)}var yt={splitPath:function(t){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return e.exec(t).slice(1)},normalizeArray:function(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];n==="."?t.splice(i,1):n===".."?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r;r--)t.unshift("..");return t},normalize:function(t){var e=t.charAt(0)==="/",r=t.substr(-1)==="/";return t=yt.normalizeArray(t.split("/").filter(function(i){return!!i}),!e).join("/"),!t&&!e&&(t="."),t&&r&&(t+="/"),(e?"/":"")+t},dirname:function(t){var e=yt.splitPath(t),r=e[0],i=e[1];return!r&&!i?".":(i&&(i=i.substr(0,i.length-1)),r+i)},basename:function(t){if(t==="/")return"/";t=yt.normalize(t),t=t.replace(/\/$/,"");var e=t.lastIndexOf("/");return e===-1?t:t.substr(e+1)},extname:function(t){return yt.splitPath(t)[3]},join:function(){var t=Array.prototype.slice.call(arguments,0);return yt.normalize(t.join("/"))},join2:function(t,e){return yt.normalize(t+"/"+e)}};function Yxe(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var t=new Uint8Array(1);return function(){return crypto.getRandomValues(t),t[0]}}else if(Wl)try{var e=require("crypto");return function(){return e.randomBytes(1)[0]}}catch(r){}return function(){Gr("randomDevice")}}var wa={resolve:function(){for(var t="",e=!1,r=arguments.length-1;r>=-1&&!e;r--){var i=r>=0?arguments[r]:y.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";t=i+"/"+t,e=i.charAt(0)==="/"}return t=yt.normalizeArray(t.split("/").filter(function(n){return!!n}),!e).join("/"),(e?"/":"")+t||"."},relative:function(t,e){t=wa.resolve(t).substr(1),e=wa.resolve(e).substr(1);function r(c){for(var u=0;u=0&&c[g]==="";g--);return u>g?[]:c.slice(u,g-u+1)}for(var i=r(t.split("/")),n=r(e.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?e=i.slice(0,n).toString("utf-8"):e=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(e=window.prompt("Input: "),e!==null&&(e+=` -`)):typeof readline=="function"&&(e=readline(),e!==null&&(e+=` -`));if(!e)return null;t.input=CP(e,!0)}return t.input.shift()},put_char:function(t,e){e===null||e===10?($y(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&($y(Zu(t.output,0)),t.output=[])}},default_tty1_ops:{put_char:function(t,e){e===null||e===10?(Di(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&(Di(Zu(t.output,0)),t.output=[])}}};function mP(t){for(var e=mxe(t,65536),r=hz(e);t=e)){var i=1024*1024;e=Math.max(e,r*(r>>0),r!=0&&(e=Math.max(e,256));var n=t.contents;t.contents=new Uint8Array(e),t.usedBytes>0&&t.contents.set(n.subarray(0,t.usedBytes),0)}},resizeFileStorage:function(t,e){if(t.usedBytes!=e)if(e==0)t.contents=null,t.usedBytes=0;else{var r=t.contents;t.contents=new Uint8Array(e),r&&t.contents.set(r.subarray(0,Math.min(e,t.usedBytes))),t.usedBytes=e}},node_ops:{getattr:function(t){var e={};return e.dev=y.isChrdev(t.mode)?t.id:1,e.ino=t.id,e.mode=t.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=t.rdev,y.isDir(t.mode)?e.size=4096:y.isFile(t.mode)?e.size=t.usedBytes:y.isLink(t.mode)?e.size=t.link.length:e.size=0,e.atime=new Date(t.timestamp),e.mtime=new Date(t.timestamp),e.ctime=new Date(t.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr:function(t,e){e.mode!==void 0&&(t.mode=e.mode),e.timestamp!==void 0&&(t.timestamp=e.timestamp),e.size!==void 0&&pt.resizeFileStorage(t,e.size)},lookup:function(t,e){throw y.genericErrors[44]},mknod:function(t,e,r,i){return pt.createNode(t,e,r,i)},rename:function(t,e,r){if(y.isDir(t.mode)){var i;try{i=y.lookupNode(e,r)}catch(s){}if(i)for(var n in i.contents)throw new y.ErrnoError(55)}delete t.parent.contents[t.name],t.parent.timestamp=Date.now(),t.name=r,e.contents[r]=t,e.timestamp=t.parent.timestamp,t.parent=e},unlink:function(t,e){delete t.contents[e],t.timestamp=Date.now()},rmdir:function(t,e){var r=y.lookupNode(t,e);for(var i in r.contents)throw new y.ErrnoError(55);delete t.contents[e],t.timestamp=Date.now()},readdir:function(t){var e=[".",".."];for(var r in t.contents)!t.contents.hasOwnProperty(r)||e.push(r);return e},symlink:function(t,e,r){var i=pt.createNode(t,e,511|40960,0);return i.link=r,i},readlink:function(t){if(!y.isLink(t.mode))throw new y.ErrnoError(28);return t.link}},stream_ops:{read:function(t,e,r,i,n){var s=t.node.contents;if(n>=t.node.usedBytes)return 0;var o=Math.min(t.node.usedBytes-n,i);if(o>8&&s.subarray)e.set(s.subarray(n,n+o),r);else for(var a=0;a0||i+r>2)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}return e.mode},realPath:function(t){for(var e=[];t.parent!==t;)e.push(t.name),t=t.parent;return e.push(t.mount.opts.root),e.reverse(),yt.join.apply(null,e)},flagsForNode:function(t){t&=~2097152,t&=~2048,t&=~32768,t&=~524288;var e=0;for(var r in tt.flagsForNodeMap)t&r&&(e|=tt.flagsForNodeMap[r],t^=r);if(t)throw new y.ErrnoError(28);return e},node_ops:{getattr:function(t){var e=tt.realPath(t),r;try{r=ft.lstatSync(e)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}return tt.isWindows&&!r.blksize&&(r.blksize=4096),tt.isWindows&&!r.blocks&&(r.blocks=(r.size+r.blksize-1)/r.blksize|0),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr:function(t,e){var r=tt.realPath(t);try{if(e.mode!==void 0&&(ft.chmodSync(r,e.mode),t.mode=e.mode),e.timestamp!==void 0){var i=new Date(e.timestamp);ft.utimesSync(r,i,i)}e.size!==void 0&&ft.truncateSync(r,e.size)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},lookup:function(t,e){var r=yt.join2(tt.realPath(t),e),i=tt.getMode(r);return tt.createNode(t,e,i)},mknod:function(t,e,r,i){var n=tt.createNode(t,e,r,i),s=tt.realPath(n);try{y.isDir(n.mode)?ft.mkdirSync(s,n.mode):ft.writeFileSync(s,"",{mode:n.mode})}catch(o){throw o.code?new y.ErrnoError(tt.convertNodeCode(o)):o}return n},rename:function(t,e,r){var i=tt.realPath(t),n=yt.join2(tt.realPath(e),r);try{ft.renameSync(i,n)}catch(s){throw s.code?new y.ErrnoError(tt.convertNodeCode(s)):s}t.name=r},unlink:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.unlinkSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},rmdir:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.rmdirSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},readdir:function(t){var e=tt.realPath(t);try{return ft.readdirSync(e)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},symlink:function(t,e,r){var i=yt.join2(tt.realPath(t),e);try{ft.symlinkSync(r,i)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},readlink:function(t){var e=tt.realPath(t);try{return e=ft.readlinkSync(e),e=IP.relative(IP.resolve(t.mount.opts.root),e),e}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}}},stream_ops:{open:function(t){var e=tt.realPath(t.node);try{y.isFile(t.node.mode)&&(t.nfd=ft.openSync(e,tt.flagsForNode(t.flags)))}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},close:function(t){try{y.isFile(t.node.mode)&&t.nfd&&ft.closeSync(t.nfd)}catch(e){throw e.code?new y.ErrnoError(tt.convertNodeCode(e)):e}},read:function(t,e,r,i,n){if(i===0)return 0;try{return ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},write:function(t,e,r,i,n){try{return ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},llseek:function(t,e,r){var i=e;if(r===1)i+=t.position;else if(r===2&&y.isFile(t.node.mode))try{var n=ft.fstatSync(t.nfd);i+=n.size}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}if(i<0)throw new y.ErrnoError(28);return i},mmap:function(t,e,r,i,n,s){if(e!==0)throw new y.ErrnoError(28);if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);var o=mP(r);return tt.stream_ops.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);if(n&2)return 0;var s=tt.stream_ops.write(t,e,0,i,r,!1);return 0}}},wz={lookupPath:function(t){return{path:t,node:{mode:tt.getMode(t)}}},createStandardStreams:function(){y.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var t=1;t<3;t++)y.streams[t]={fd:t,nfd:t,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(t,e){y.isDir(t)?ft.mkdirSync(t,e):ft.writeFileSync(t,"",{mode:e})},mkdir:function(){ft.mkdirSync.apply(void 0,arguments)},symlink:function(){ft.symlinkSync.apply(void 0,arguments)},rename:function(){ft.renameSync.apply(void 0,arguments)},rmdir:function(){ft.rmdirSync.apply(void 0,arguments)},readdir:function(){ft.readdirSync.apply(void 0,arguments)},unlink:function(){ft.unlinkSync.apply(void 0,arguments)},readlink:function(){return ft.readlinkSync.apply(void 0,arguments)},stat:function(){return ft.statSync.apply(void 0,arguments)},lstat:function(){return ft.lstatSync.apply(void 0,arguments)},chmod:function(){ft.chmodSync.apply(void 0,arguments)},fchmod:function(){ft.fchmodSync.apply(void 0,arguments)},chown:function(){ft.chownSync.apply(void 0,arguments)},fchown:function(){ft.fchownSync.apply(void 0,arguments)},truncate:function(){ft.truncateSync.apply(void 0,arguments)},ftruncate:function(t,e){if(e<0)throw new y.ErrnoError(28);ft.ftruncateSync.apply(void 0,arguments)},utime:function(){ft.utimesSync.apply(void 0,arguments)},open:function(t,e,r,i){typeof e=="string"&&(e=Vl.modeStringToFlags(e));var n=ft.openSync(t,tt.flagsForNode(e),r),s=i!=null?i:y.nextfd(n),o={fd:s,nfd:n,position:0,path:t,flags:e,seekable:!0};return y.streams[s]=o,o},close:function(t){t.stream_ops||ft.closeSync(t.nfd),y.closeStream(t.fd)},llseek:function(t,e,r){if(t.stream_ops)return Vl.llseek(t,e,r);var i=e;if(r===1)i+=t.position;else if(r===2)i+=ft.fstatSync(t.nfd).size;else if(r!==0)throw new y.ErrnoError(eg.EINVAL);if(i<0)throw new y.ErrnoError(eg.EINVAL);return t.position=i,i},read:function(t,e,r,i,n){if(t.stream_ops)return Vl.read(t,e,r,i,n);var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},write:function(t,e,r,i,n){if(t.stream_ops)return Vl.write(t,e,r,i,n);t.flags&+"1024"&&y.llseek(t,0,+"2");var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},allocate:function(){throw new y.ErrnoError(eg.EOPNOTSUPP)},mmap:function(t,e,r,i,n,s){if(t.stream_ops)return Vl.mmap(t,e,r,i,n,s);if(e!==0)throw new y.ErrnoError(28);var o=mP(r);return y.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){return t.stream_ops?Vl.msync(t,e,r,i,n):(n&2||y.write(t,e,0,i,r),0)},munmap:function(){return 0},ioctl:function(){throw new y.ErrnoError(eg.ENOTTY)}},y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(t,e){if(t=wa.resolve(y.cwd(),t),e=e||{},!t)return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var i in r)e[i]===void 0&&(e[i]=r[i]);if(e.recurse_count>8)throw new y.ErrnoError(32);for(var n=yt.normalizeArray(t.split("/").filter(function(f){return!!f}),!1),s=y.root,o="/",a=0;a40)throw new y.ErrnoError(32)}}return{path:o,node:s}},getPath:function(t){for(var e;;){if(y.isRoot(t)){var r=t.mount.mountpoint;return e?r[r.length-1]!=="/"?r+"/"+e:r+e:r}e=e?t.name+"/"+e:t.name,t=t.parent}},hashName:function(t,e){for(var r=0,i=0;i>>0)%y.nameTable.length},hashAddNode:function(t){var e=y.hashName(t.parent.id,t.name);t.name_next=y.nameTable[e],y.nameTable[e]=t},hashRemoveNode:function(t){var e=y.hashName(t.parent.id,t.name);if(y.nameTable[e]===t)y.nameTable[e]=t.name_next;else for(var r=y.nameTable[e];r;){if(r.name_next===t){r.name_next=t.name_next;break}r=r.name_next}},lookupNode:function(t,e){var r=y.mayLookup(t);if(r)throw new y.ErrnoError(r,t);for(var i=y.hashName(t.id,e),n=y.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===t.id&&s===e)return n}return y.lookup(t,e)},createNode:function(t,e,r,i){var n=new y.FSNode(t,e,r,i);return y.hashAddNode(n),n},destroyNode:function(t){y.hashRemoveNode(t)},isRoot:function(t){return t===t.parent},isMountpoint:function(t){return!!t.mounted},isFile:function(t){return(t&61440)==32768},isDir:function(t){return(t&61440)==16384},isLink:function(t){return(t&61440)==40960},isChrdev:function(t){return(t&61440)==8192},isBlkdev:function(t){return(t&61440)==24576},isFIFO:function(t){return(t&61440)==4096},isSocket:function(t){return(t&49152)==49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(t){var e=y.flagModes[t];if(typeof e=="undefined")throw new Error("Unknown file open mode: "+t);return e},flagsToPermissionString:function(t){var e=["r","w","rw"][t&3];return t&512&&(e+="w"),e},nodePermissions:function(t,e){return y.ignorePermissions?0:e.includes("r")&&!(t.mode&292)||e.includes("w")&&!(t.mode&146)||e.includes("x")&&!(t.mode&73)?2:0},mayLookup:function(t){var e=y.nodePermissions(t,"x");return e||(t.node_ops.lookup?0:2)},mayCreate:function(t,e){try{var r=y.lookupNode(t,e);return 20}catch(i){}return y.nodePermissions(t,"wx")},mayDelete:function(t,e,r){var i;try{i=y.lookupNode(t,e)}catch(s){return s.errno}var n=y.nodePermissions(t,"wx");if(n)return n;if(r){if(!y.isDir(i.mode))return 54;if(y.isRoot(i)||y.getPath(i)===y.cwd())return 10}else if(y.isDir(i.mode))return 31;return 0},mayOpen:function(t,e){return t?y.isLink(t.mode)?32:y.isDir(t.mode)&&(y.flagsToPermissionString(e)!=="r"||e&512)?31:y.nodePermissions(t,y.flagsToPermissionString(e)):44},MAX_OPEN_FDS:4096,nextfd:function(t,e){t=t||0,e=e||y.MAX_OPEN_FDS;for(var r=t;r<=e;r++)if(!y.streams[r])return r;throw new y.ErrnoError(33)},getStream:function(t){return y.streams[t]},createStream:function(t,e,r){y.FSStream||(y.FSStream=function(){},y.FSStream.prototype={object:{get:function(){return this.node},set:function(o){this.node=o}},isRead:{get:function(){return(this.flags&2097155)!=1}},isWrite:{get:function(){return(this.flags&2097155)!=0}},isAppend:{get:function(){return this.flags&1024}}});var i=new y.FSStream;for(var n in t)i[n]=t[n];t=i;var s=y.nextfd(e,r);return t.fd=s,y.streams[s]=t,t},closeStream:function(t){y.streams[t]=null},chrdev_stream_ops:{open:function(t){var e=y.getDevice(t.node.rdev);t.stream_ops=e.stream_ops,t.stream_ops.open&&t.stream_ops.open(t)},llseek:function(){throw new y.ErrnoError(70)}},major:function(t){return t>>8},minor:function(t){return t&255},makedev:function(t,e){return t<<8|e},registerDevice:function(t,e){y.devices[t]={stream_ops:e}},getDevice:function(t){return y.devices[t]},getMounts:function(t){for(var e=[],r=[t];r.length;){var i=r.pop();e.push(i),r.push.apply(r,i.mounts)}return e},syncfs:function(t,e){typeof t=="function"&&(e=t,t=!1),y.syncFSRequests++,y.syncFSRequests>1&&Di("warning: "+y.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=y.getMounts(y.root.mount),i=0;function n(o){return y.syncFSRequests--,e(o)}function s(o){if(o)return s.errored?void 0:(s.errored=!0,n(o));++i>=r.length&&n(null)}r.forEach(function(o){if(!o.type.syncfs)return s(null);o.type.syncfs(o,t,s)})},mount:function(t,e,r){var i=r==="/",n=!r,s;if(i&&y.root)throw new y.ErrnoError(10);if(!i&&!n){var o=y.lookupPath(r,{follow_mount:!1});if(r=o.path,s=o.node,y.isMountpoint(s))throw new y.ErrnoError(10);if(!y.isDir(s.mode))throw new y.ErrnoError(54)}var a={type:t,opts:e,mountpoint:r,mounts:[]},l=t.mount(a);return l.mount=a,a.root=l,i?y.root=l:s&&(s.mounted=a,s.mount&&s.mount.mounts.push(a)),l},unmount:function(t){var e=y.lookupPath(t,{follow_mount:!1});if(!y.isMountpoint(e.node))throw new y.ErrnoError(28);var r=e.node,i=r.mounted,n=y.getMounts(i);Object.keys(y.nameTable).forEach(function(o){for(var a=y.nameTable[o];a;){var l=a.name_next;n.includes(a.mount)&&y.destroyNode(a),a=l}}),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:function(t,e){return t.node_ops.lookup(t,e)},mknod:function(t,e,r){var i=y.lookupPath(t,{parent:!0}),n=i.node,s=yt.basename(t);if(!s||s==="."||s==="..")throw new y.ErrnoError(28);var o=y.mayCreate(n,s);if(o)throw new y.ErrnoError(o);if(!n.node_ops.mknod)throw new y.ErrnoError(63);return n.node_ops.mknod(n,s,e,r)},create:function(t,e){return e=e!==void 0?e:438,e&=4095,e|=32768,y.mknod(t,e,0)},mkdir:function(t,e){return e=e!==void 0?e:511,e&=511|512,e|=16384,y.mknod(t,e,0)},mkdirTree:function(t,e){for(var r=t.split("/"),i="",n=0;nthis.length-1||f<0)){var h=f%this.chunkSize,p=f/this.chunkSize|0;return this.getter(p)[h]}},s.prototype.setDataGetter=function(f){this.getter=f},s.prototype.cacheLength=function(){var f=new XMLHttpRequest;if(f.open("HEAD",r,!1),f.send(null),!(f.status>=200&&f.status<300||f.status===304))throw new Error("Couldn't load "+r+". Status: "+f.status);var h=Number(f.getResponseHeader("Content-length")),p,d=(p=f.getResponseHeader("Accept-Ranges"))&&p==="bytes",m=(p=f.getResponseHeader("Content-Encoding"))&&p==="gzip",E=1024*1024;d||(E=h);var B=function(R,H){if(R>H)throw new Error("invalid range ("+R+", "+H+") or no bytes requested!");if(H>h-1)throw new Error("only "+h+" bytes available! programmer error!");var L=new XMLHttpRequest;if(L.open("GET",r,!1),h!==E&&L.setRequestHeader("Range","bytes="+R+"-"+H),typeof Uint8Array!="undefined"&&(L.responseType="arraybuffer"),L.overrideMimeType&&L.overrideMimeType("text/plain; charset=x-user-defined"),L.send(null),!(L.status>=200&&L.status<300||L.status===304))throw new Error("Couldn't load "+r+". Status: "+L.status);return L.response!==void 0?new Uint8Array(L.response||[]):CP(L.responseText||"",!0)},b=this;b.setDataGetter(function(R){var H=R*E,L=(R+1)*E-1;if(L=Math.min(L,h-1),typeof b.chunks[R]=="undefined"&&(b.chunks[R]=B(H,L)),typeof b.chunks[R]=="undefined")throw new Error("doXHR failed!");return b.chunks[R]}),(m||!h)&&(E=h=1,h=this.getter(0).length,E=h,$y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=h,this._chunkSize=E,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!iz)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else var a={isDevice:!1,url:r};var l=y.createFile(t,e,a,i,n);a.contents?l.contents=a.contents:a.url&&(l.contents=null,l.url=a.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var c={},u=Object.keys(l.stream_ops);return u.forEach(function(g){var f=l.stream_ops[g];c[g]=function(){return y.forceLoadFile(l),f.apply(null,arguments)}}),c.read=function(f,h,p,d,m){y.forceLoadFile(l);var E=f.node.contents;if(m>=E.length)return 0;var B=Math.min(E.length-m,d);if(E.slice)for(var b=0;b>2]=i.dev,_e[r+4>>2]=0,_e[r+8>>2]=i.ino,_e[r+12>>2]=i.mode,_e[r+16>>2]=i.nlink,_e[r+20>>2]=i.uid,_e[r+24>>2]=i.gid,_e[r+28>>2]=i.rdev,_e[r+32>>2]=0,ya=[i.size>>>0,(ai=i.size,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+40>>2]=ya[0],_e[r+44>>2]=ya[1],_e[r+48>>2]=4096,_e[r+52>>2]=i.blocks,_e[r+56>>2]=i.atime.getTime()/1e3|0,_e[r+60>>2]=0,_e[r+64>>2]=i.mtime.getTime()/1e3|0,_e[r+68>>2]=0,_e[r+72>>2]=i.ctime.getTime()/1e3|0,_e[r+76>>2]=0,ya=[i.ino>>>0,(ai=i.ino,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+80>>2]=ya[0],_e[r+84>>2]=ya[1],0},doMsync:function(t,e,r,i,n){var s=$u.slice(t,t+r);y.msync(e,s,n,r,i)},doMkdir:function(t,e){return t=yt.normalize(t),t[t.length-1]==="/"&&(t=t.substr(0,t.length-1)),y.mkdir(t,e,0),0},doMknod:function(t,e,r){switch(e&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return y.mknod(t,e,r),0},doReadlink:function(t,e,r){if(r<=0)return-28;var i=y.readlink(t),n=Math.min(r,rw(i)),s=Zi[e+n];return uz(i,e,r+1),Zi[e+n]=s,n},doAccess:function(t,e){if(e&~7)return-28;var r,i=y.lookupPath(t,{follow:!0});if(r=i.node,!r)return-44;var n="";return e&4&&(n+="r"),e&2&&(n+="w"),e&1&&(n+="x"),n&&y.nodePermissions(r,n)?-2:0},doDup:function(t,e,r){var i=y.getStream(r);return i&&y.close(i),y.open(t,e,0,r,r).fd},doReadv:function(t,e,r,i){for(var n=0,s=0;s>2],a=_e[e+(s*8+4)>>2],l=y.read(t,Zi,o,a,i);if(l<0)return-1;if(n+=l,l>2],a=_e[e+(s*8+4)>>2],l=y.write(t,Zi,o,a,i);if(l<0)return-1;n+=l}return n},varargs:void 0,get:function(){Ot.varargs+=4;var t=_e[Ot.varargs-4>>2];return t},getStr:function(t){var e=cz(t);return e},getStreamFromFD:function(t){var e=y.getStream(t);if(!e)throw new y.ErrnoError(8);return e},get64:function(t,e){return t}};function qxe(t,e){try{return t=Ot.getStr(t),y.chmod(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function Wxe(t){return _e[Jxe()>>2]=t,t}function zxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 0:{var n=Ot.get();if(n<0)return-28;var s;return s=y.open(i.path,i.flags,0,n),s.fd}case 1:case 2:return 0;case 3:return i.flags;case 4:{var n=Ot.get();return i.flags|=n,0}case 12:{var n=Ot.get(),o=0;return cP[n+o>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Wxe(28),-1;default:return-28}}catch(a){return(typeof y=="undefined"||!(a instanceof y.ErrnoError))&&Gr(a),-a.errno}}function Vxe(t,e){try{var r=Ot.getStreamFromFD(t);return Ot.doStat(y.stat,r.path,e)}catch(i){return(typeof y=="undefined"||!(i instanceof y.ErrnoError))&&Gr(i),-i.errno}}function _xe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 21509:case 21505:return i.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return i.tty?0:-59;case 21519:{if(!i.tty)return-59;var n=Ot.get();return _e[n>>2]=0,0}case 21520:return i.tty?-28:-59;case 21531:{var n=Ot.get();return y.ioctl(i,e,n)}case 21523:return i.tty?0:-59;case 21524:return i.tty?0:-59;default:Gr("bad ioctl syscall "+e)}}catch(s){return(typeof y=="undefined"||!(s instanceof y.ErrnoError))&&Gr(s),-s.errno}}function Xxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStr(t),n=r?Ot.get():0,s=y.open(i,e,n);return s.fd}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),-o.errno}}function Zxe(t,e){try{return t=Ot.getStr(t),e=Ot.getStr(e),y.rename(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function $xe(t){try{return t=Ot.getStr(t),y.rmdir(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function eke(t,e){try{return t=Ot.getStr(t),Ot.doStat(y.stat,t,e)}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function tke(t){try{return t=Ot.getStr(t),y.unlink(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function rke(t,e,r){$u.copyWithin(t,e,e+r)}function ike(t){try{return ew.grow(t-gP.byteLength+65535>>>16),pz(ew.buffer),1}catch(e){}}function nke(t){var e=$u.length;t=t>>>0;var r=2147483648;if(t>r)return!1;for(var i=1;i<=4;i*=2){var n=e*(1+.2/i);n=Math.min(n,t+100663296);var s=Math.min(r,xxe(Math.max(t,n),65536)),o=ike(s);if(o)return!0}return!1}function ske(t){try{var e=Ot.getStreamFromFD(t);return y.close(e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),r.errno}}function oke(t,e){try{var r=Ot.getStreamFromFD(t),i=r.tty?2:y.isDir(r.mode)?3:y.isLink(r.mode)?7:4;return Zi[e>>0]=i,0}catch(n){return(typeof y=="undefined"||!(n instanceof y.ErrnoError))&&Gr(n),n.errno}}function ake(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doReadv(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function Ake(t,e,r,i,n){try{var s=Ot.getStreamFromFD(t),o=4294967296,a=r*o+(e>>>0),l=9007199254740992;return a<=-l||a>=l?-61:(y.llseek(s,a,i),ya=[s.position>>>0,(ai=s.position,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[n>>2]=ya[0],_e[n+4>>2]=ya[1],s.getdents&&a===0&&i===0&&(s.getdents=null),0)}catch(c){return(typeof y=="undefined"||!(c instanceof y.ErrnoError))&&Gr(c),c.errno}}function lke(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doWritev(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function cke(t){Exe(t)}function uke(t){var e=Date.now()/1e3|0;return t&&(_e[t>>2]=e),e}function EP(){if(EP.called)return;EP.called=!0;var t=new Date().getFullYear(),e=new Date(t,0,1),r=new Date(t,6,1),i=e.getTimezoneOffset(),n=r.getTimezoneOffset(),s=Math.max(i,n);_e[fke()>>2]=s*60,_e[gke()>>2]=Number(i!=n);function o(g){var f=g.toTimeString().match(/\(([A-Za-z ]+)\)$/);return f?f[1]:"GMT"}var a=o(e),l=o(r),c=uP(a),u=uP(l);n>2]=c,_e[nw()+4>>2]=u):(_e[nw()>>2]=u,_e[nw()+4>>2]=c)}function hke(t){EP();var e=Date.UTC(_e[t+20>>2]+1900,_e[t+16>>2],_e[t+12>>2],_e[t+8>>2],_e[t+4>>2],_e[t>>2],0),r=new Date(e);_e[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[t+28>>2]=n,r.getTime()/1e3|0}var Bz=function(t,e,r,i){t||(t=this),this.parent=t,this.mount=t.mount,this.mounted=null,this.id=y.nextInode++,this.name=e,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},sw=292|73,ow=146;Object.defineProperties(Bz.prototype,{read:{get:function(){return(this.mode&sw)===sw},set:function(t){t?this.mode|=sw:this.mode&=~sw}},write:{get:function(){return(this.mode&ow)===ow},set:function(t){t?this.mode|=ow:this.mode&=~ow}},isFolder:{get:function(){return y.isDir(this.mode)}},isDevice:{get:function(){return y.isChrdev(this.mode)}}});y.FSNode=Bz;y.staticInit();Wl&&(ft=ez,IP=require("path"),tt.staticInit());var ft,IP;if(Wl){Qz=function(t){return function(){try{return t.apply(this,arguments)}catch(e){throw e.code?new y.ErrnoError(eg[e.code]):e}}},Vl=Object.assign({},y);for(yP in wz)y[yP]=Qz(wz[yP])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");var Qz,Vl,yP;function CP(t,e,r){var i=r>0?r:rw(t)+1,n=new Array(i),s=tw(t,n,0,n.length);return e&&(n.length=s),n}var pke=typeof atob=="function"?atob:function(t){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="",i,n,s,o,a,l,c,u=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");do o=e.indexOf(t.charAt(u++)),a=e.indexOf(t.charAt(u++)),l=e.indexOf(t.charAt(u++)),c=e.indexOf(t.charAt(u++)),i=o<<2|a>>4,n=(a&15)<<4|l>>2,s=(l&3)<<6|c,r=r+String.fromCharCode(i),l!==64&&(r=r+String.fromCharCode(n)),c!==64&&(r=r+String.fromCharCode(s));while(u0||(Fxe(),zl>0))return;function e(){aw||(aw=!0,oe.calledRun=!0,!Az&&(Nxe(),oe.onRuntimeInitialized&&oe.onRuntimeInitialized(),Txe()))}oe.setStatus?(oe.setStatus("Running..."),setTimeout(function(){setTimeout(function(){oe.setStatus("")},1),e()},1)):e()}oe.run=wP;if(oe.preInit)for(typeof oe.preInit=="function"&&(oe.preInit=[oe.preInit]);oe.preInit.length>0;)oe.preInit.pop()();wP()});var xz=I((Dot,Sz)=>{"use strict";function Cke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function _l(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,_l)}Cke(_l,Error);_l.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ee=At(">>",!1),Ue=">&",Oe=At(">&",!1),vt=">",dt=At(">",!1),ri="<<<",ii=At("<<<",!1),an="<&",yr=At("<&",!1),Ki="<",Qi=At("<",!1),Go=function(C){return{type:"argument",segments:[].concat(...C)}},wr=function(C){return C},Ui="'",ws=At("'",!1),Tf=function(C){return[{type:"text",text:C}]},Mf='"',Rm=At('"',!1),Fm=function(C){return C},Nm=function(C){return{type:"arithmetic",arithmetic:C,quoted:!0}},DQ=function(C){return{type:"shell",shell:C,quoted:!0}},RQ=function(C){return _(P({type:"variable"},C),{quoted:!0})},Of=function(C){return{type:"text",text:C}},FQ=function(C){return{type:"arithmetic",arithmetic:C,quoted:!1}},NQ=function(C){return{type:"shell",shell:C,quoted:!1}},Lm=function(C){return _(P({type:"variable"},C),{quoted:!1})},LQ=function(C){return{type:"glob",pattern:C}},Va="\\",jo=At("\\",!1),Tm=/^[\\']/,Mm=Qs(["\\","'"],!1,!1),te=function(C){return C},Om=/^[^']/,Km=Qs(["'"],!0,!1),il=function(C){return C.join("")},Um=/^[\\$"]/,Hm=Qs(["\\","$",'"'],!1,!1),Kf=/^[^$"]/,Gm=Qs(["$",'"'],!0,!1),jm="\\0",TQ=At("\\0",!1),MQ=function(){return"\0"},Ym="\\a",qm=At("\\a",!1),Jm=function(){return"a"},Wm="\\b",zm=At("\\b",!1),Vm=function(){return"\b"},Uf="\\e",OQ=At("\\e",!1),KQ=function(){return""},_m="\\f",UQ=At("\\f",!1),HQ=function(){return"\f"},O="\\n",ht=At("\\n",!1),Vc=function(){return` -`},xn="\\r",Hf=At("\\r",!1),Ye=function(){return"\r"},nl="\\t",Xm=At("\\t",!1),MM=function(){return" "},GQ="\\v",OM=At("\\v",!1),fr=function(){return"\v"},Bs="\\x",jQ=At("\\x",!1),Zm=function(C){return String.fromCharCode(parseInt(C,16))},Yo="\\u",$m=At("\\u",!1),_a="\\U",et=At("\\U",!1),YQ=function(C){return String.fromCodePoint(parseInt(C,16))},eI=/^[0-9a-fA-f]/,tI=Qs([["0","9"],["a","f"],["A","f"]],!1,!1),Xa=Cfe(),sl="-",ol=At("-",!1),al="+",qo=At("+",!1),Al=".",qQ=At(".",!1),rI=function(C,Q,k){return{type:"number",value:(C==="-"?-1:1)*parseFloat(Q.join("")+"."+k.join(""))}},iI=function(C,Q){return{type:"number",value:(C==="-"?-1:1)*parseInt(Q.join(""))}},JQ=function(C){return P({type:"variable"},C)},ll=function(C){return{type:"variable",name:C}},WQ=function(C){return C},nI="*",Gf=At("*",!1),_c="/",jf=At("/",!1),sI=function(C,Q,k){return{type:Q==="*"?"multiplication":"division",right:k}},cl=function(C,Q){return Q.reduce((k,N)=>P({left:k},N),C)},oI=function(C,Q,k){return{type:Q==="+"?"addition":"subtraction",right:k}},Yf="$((",Xc=At("$((",!1),xr="))",KM=At("))",!1),Jo=function(C){return C},Zs="$(",aI=At("$(",!1),Zc=function(C){return C},x="${",U=At("${",!1),le=":-",xe=At(":-",!1),Qe=function(C,Q){return{name:C,defaultValue:Q}},Ge=":-}",ct=At(":-}",!1),sr=function(C){return{name:C,defaultValue:[]}},Wo=function(C){return{name:C}},Afe="$",lfe=At("$",!1),cfe=function(C){return e.isGlobPattern(C)},ufe=function(C){return C},UM=/^[a-zA-Z0-9_]/,HM=Qs([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),GM=function(){return dfe()},jM=/^[$@*?#a-zA-Z0-9_\-]/,YM=Qs(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),gfe=/^[(){}<>$|&; \t"']/,ffe=Qs(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),hfe=/^[<>&; \t"']/,pfe=Qs(["<",">","&",";"," "," ",'"',"'"],!1,!1),qM=/^[ \t]/,JM=Qs([" "," "],!1,!1),w=0,Re=0,AI=[{line:1,column:1}],$s=0,zQ=[],we=0,lI;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function dfe(){return t.substring(Re,w)}function P_e(){return qf(Re,w)}function D_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),zM([Ife(C)],t.substring(Re,w),Q)}function R_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),Efe(C,Q)}function At(C,Q){return{type:"literal",text:C,ignoreCase:Q}}function Qs(C,Q,k){return{type:"class",parts:C,inverted:Q,ignoreCase:k}}function Cfe(){return{type:"any"}}function mfe(){return{type:"end"}}function Ife(C){return{type:"other",description:C}}function WM(C){var Q=AI[C],k;if(Q)return Q;for(k=C-1;!AI[k];)k--;for(Q=AI[k],Q={line:Q.line,column:Q.column};k$s&&($s=w,zQ=[]),zQ.push(C))}function Efe(C,Q){return new _l(C,null,null,Q)}function zM(C,Q,k){return new _l(_l.buildMessage(C,Q),C,Q,k)}function VM(){var C,Q;return C=w,Q=Jf(),Q===r&&(Q=null),Q!==r&&(Re=C,Q=s(Q)),C=Q,C}function Jf(){var C,Q,k,N,Z;if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N!==r?(Z=yfe(),Z===r&&(Z=null),Z!==r?(Re=C,Q=o(Q,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;if(C===r)if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N===r&&(N=null),N!==r?(Re=C,Q=a(Q,N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function yfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Jf(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=l(k),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function _M(){var C;return t.charCodeAt(w)===59?(C=c,w++):(C=r,we===0&&ve(u)),C===r&&(t.charCodeAt(w)===38?(C=g,w++):(C=r,we===0&&ve(f))),C}function VQ(){var C,Q,k;return C=w,Q=XM(),Q!==r?(k=wfe(),k===r&&(k=null),k!==r?(Re=C,Q=h(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function wfe(){var C,Q,k,N,Z,Ie,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=VQ(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();Ie!==r?(Re=C,Q=p(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function Bfe(){var C;return t.substr(w,2)===d?(C=d,w+=2):(C=r,we===0&&ve(m)),C===r&&(t.substr(w,2)===E?(C=E,w+=2):(C=r,we===0&&ve(B))),C}function XM(){var C,Q,k;return C=w,Q=vfe(),Q!==r?(k=Qfe(),k===r&&(k=null),k!==r?(Re=C,Q=b(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function Qfe(){var C,Q,k,N,Z,Ie,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=XM(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();Ie!==r?(Re=C,Q=R(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function bfe(){var C;return t.substr(w,2)===H?(C=H,w+=2):(C=r,we===0&&ve(L)),C===r&&(t.charCodeAt(w)===124?(C=K,w++):(C=r,we===0&&ve(J))),C}function cI(){var C,Q,k,N,Z,Ie;if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r)if(N=$M(),N!==r){for(Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();Z!==r?(Re=C,Q=A(Q,N),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;else w=C,C=r;if(C===r)if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=V(Q),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function vfe(){var C,Q,k,N,Z,Ie,ot,ut,Tr,ni,Yn;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===40?(k=W,w++):(k=r,we===0&&ve(X)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();if(Ie!==r)if(t.charCodeAt(w)===41?(ot=F,w++):(ot=r,we===0&&ve(D)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=he(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===123?(k=pe,w++):(k=r,we===0&&ve(Ne)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();if(Ie!==r)if(t.charCodeAt(w)===125?(ot=Pe,w++):(ot=r,we===0&&ve(qe)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=re(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){for(k=[],N=cI();N!==r;)k.push(N),N=cI();if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r){if(Z=[],Ie=ZM(),Ie!==r)for(;Ie!==r;)Z.push(Ie),Ie=ZM();else Z=r;if(Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();Ie!==r?(Re=C,Q=se(k,Z),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r}else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=cI(),N!==r)for(;N!==r;)k.push(N),N=cI();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=be(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}}}return C}function Sfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=uI(),N!==r)for(;N!==r;)k.push(N),N=uI();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=ae(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r;return C}function ZM(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r?(k=Wf(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();Q!==r?(k=uI(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r)}return C}function Wf(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(De.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve($)),k===r&&(k=null),k!==r?(N=xfe(),N!==r?(Z=uI(),Z!==r?(Re=C,Q=G(k,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function xfe(){var C;return t.substr(w,2)===Ce?(C=Ce,w+=2):(C=r,we===0&&ve(ee)),C===r&&(t.substr(w,2)===Ue?(C=Ue,w+=2):(C=r,we===0&&ve(Oe)),C===r&&(t.charCodeAt(w)===62?(C=vt,w++):(C=r,we===0&&ve(dt)),C===r&&(t.substr(w,3)===ri?(C=ri,w+=3):(C=r,we===0&&ve(ii)),C===r&&(t.substr(w,2)===an?(C=an,w+=2):(C=r,we===0&&ve(yr)),C===r&&(t.charCodeAt(w)===60?(C=Ki,w++):(C=r,we===0&&ve(Qi))))))),C}function uI(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(k=$M(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C}function $M(){var C,Q,k;if(C=w,Q=[],k=eO(),k!==r)for(;k!==r;)Q.push(k),k=eO();else Q=r;return Q!==r&&(Re=C,Q=Go(Q)),C=Q,C}function eO(){var C,Q;return C=w,Q=kfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Pfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Dfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q)),C}function kfe(){var C,Q,k,N;return C=w,t.charCodeAt(w)===39?(Q=Ui,w++):(Q=r,we===0&&ve(ws)),Q!==r?(k=Rfe(),k!==r?(t.charCodeAt(w)===39?(N=Ui,w++):(N=r,we===0&&ve(ws)),N!==r?(Re=C,Q=Tf(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function Pfe(){var C,Q,k,N;if(C=w,t.charCodeAt(w)===34?(Q=Mf,w++):(Q=r,we===0&&ve(Rm)),Q!==r){for(k=[],N=tO();N!==r;)k.push(N),N=tO();k!==r?(t.charCodeAt(w)===34?(N=Mf,w++):(N=r,we===0&&ve(Rm)),N!==r?(Re=C,Q=Fm(k),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function Dfe(){var C,Q,k;if(C=w,Q=[],k=rO(),k!==r)for(;k!==r;)Q.push(k),k=rO();else Q=r;return Q!==r&&(Re=C,Q=Fm(Q)),C=Q,C}function tO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=Nm(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=DQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=RQ(Q)),C=Q,C===r&&(C=w,Q=Ffe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q))),C}function rO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=FQ(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=NQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=Lm(Q)),C=Q,C===r&&(C=w,Q=Lfe(),Q!==r&&(Re=C,Q=LQ(Q)),C=Q,C===r&&(C=w,Q=Nfe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q)))),C}function Rfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));k!==r;)Q.push(k),k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function Ffe(){var C,Q,k,N,Z;if(C=w,Q=[],k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm))))),k!==r)for(;k!==r;)Q.push(k),k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm)))));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function gI(){var C,Q;return C=w,t.substr(w,2)===jm?(Q=jm,w+=2):(Q=r,we===0&&ve(TQ)),Q!==r&&(Re=C,Q=MQ()),C=Q,C===r&&(C=w,t.substr(w,2)===Ym?(Q=Ym,w+=2):(Q=r,we===0&&ve(qm)),Q!==r&&(Re=C,Q=Jm()),C=Q,C===r&&(C=w,t.substr(w,2)===Wm?(Q=Wm,w+=2):(Q=r,we===0&&ve(zm)),Q!==r&&(Re=C,Q=Vm()),C=Q,C===r&&(C=w,t.substr(w,2)===Uf?(Q=Uf,w+=2):(Q=r,we===0&&ve(OQ)),Q!==r&&(Re=C,Q=KQ()),C=Q,C===r&&(C=w,t.substr(w,2)===_m?(Q=_m,w+=2):(Q=r,we===0&&ve(UQ)),Q!==r&&(Re=C,Q=HQ()),C=Q,C===r&&(C=w,t.substr(w,2)===O?(Q=O,w+=2):(Q=r,we===0&&ve(ht)),Q!==r&&(Re=C,Q=Vc()),C=Q,C===r&&(C=w,t.substr(w,2)===xn?(Q=xn,w+=2):(Q=r,we===0&&ve(Hf)),Q!==r&&(Re=C,Q=Ye()),C=Q,C===r&&(C=w,t.substr(w,2)===nl?(Q=nl,w+=2):(Q=r,we===0&&ve(Xm)),Q!==r&&(Re=C,Q=MM()),C=Q,C===r&&(C=w,t.substr(w,2)===GQ?(Q=GQ,w+=2):(Q=r,we===0&&ve(OM)),Q!==r&&(Re=C,Q=fr()),C=Q)))))))),C}function fI(){var C,Q,k,N,Z,Ie,ot,ut,Tr,ni,Yn,$Q;return C=w,t.substr(w,2)===Bs?(Q=Bs,w+=2):(Q=r,we===0&&ve(jQ)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ie=An(),Ie!==r?(Z=[Z,Ie],N=Z):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===Yo?(Q=Yo,w+=2):(Q=r,we===0&&ve($m)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ie=An(),Ie!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Z=[Z,Ie,ot,ut],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===_a?(Q=_a,w+=2):(Q=r,we===0&&ve(et)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ie=An(),Ie!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Tr=An(),Tr!==r?(ni=An(),ni!==r?(Yn=An(),Yn!==r?($Q=An(),$Q!==r?(Z=[Z,Ie,ot,ut,Tr,ni,Yn,$Q],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=YQ(k),C=Q):(w=C,C=r)):(w=C,C=r))),C}function An(){var C;return eI.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(tI)),C}function Nfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r)),k!==r)for(;k!==r;)Q.push(k),k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function _Q(){var C,Q,k,N,Z,Ie;if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;if(k!==r)if(t.charCodeAt(w)===46?(N=Al,w++):(N=r,we===0&&ve(qQ)),N!==r){if(Z=[],De.test(t.charAt(w))?(Ie=t.charAt(w),w++):(Ie=r,we===0&&ve($)),Ie!==r)for(;Ie!==r;)Z.push(Ie),De.test(t.charAt(w))?(Ie=t.charAt(w),w++):(Ie=r,we===0&&ve($));else Z=r;Z!==r?(Re=C,Q=rI(Q,k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;if(C===r){if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;k!==r?(Re=C,Q=iI(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;if(C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=JQ(Q)),C=Q,C===r&&(C=w,Q=zf(),Q!==r&&(Re=C,Q=ll(Q)),C=Q,C===r)))if(C=w,t.charCodeAt(w)===40?(Q=W,w++):(Q=r,we===0&&ve(X)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();Z!==r?(t.charCodeAt(w)===41?(Ie=F,w++):(Ie=r,we===0&&ve(D)),Ie!==r?(Re=C,Q=WQ(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r}return C}function XQ(){var C,Q,k,N,Z,Ie,ot,ut;if(C=w,Q=_Q(),Q!==r){for(k=[],N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ie=nI,w++):(Ie=r,we===0&&ve(Gf)),Ie===r&&(t.charCodeAt(w)===47?(Ie=_c,w++):(Ie=r,we===0&&ve(jf))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ie=nI,w++):(Ie=r,we===0&&ve(Gf)),Ie===r&&(t.charCodeAt(w)===47?(Ie=_c,w++):(Ie=r,we===0&&ve(jf))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function iO(){var C,Q,k,N,Z,Ie,ot,ut;if(C=w,Q=XQ(),Q!==r){for(k=[],N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ie=al,w++):(Ie=r,we===0&&ve(qo)),Ie===r&&(t.charCodeAt(w)===45?(Ie=sl,w++):(Ie=r,we===0&&ve(ol))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ie=al,w++):(Ie=r,we===0&&ve(qo)),Ie===r&&(t.charCodeAt(w)===45?(Ie=sl,w++):(Ie=r,we===0&&ve(ol))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function nO(){var C,Q,k,N,Z,Ie;if(C=w,t.substr(w,3)===Yf?(Q=Yf,w+=3):(Q=r,we===0&&ve(Xc)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();Z!==r?(t.substr(w,2)===xr?(Ie=xr,w+=2):(Ie=r,we===0&&ve(KM)),Ie!==r?(Re=C,Q=Jo(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;return C}function sO(){var C,Q,k,N;return C=w,t.substr(w,2)===Zs?(Q=Zs,w+=2):(Q=r,we===0&&ve(aI)),Q!==r?(k=Jf(),k!==r?(t.charCodeAt(w)===41?(N=F,w++):(N=r,we===0&&ve(D)),N!==r?(Re=C,Q=Zc(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function ZQ(){var C,Q,k,N,Z,Ie;return C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,2)===le?(N=le,w+=2):(N=r,we===0&&ve(xe)),N!==r?(Z=Sfe(),Z!==r?(t.charCodeAt(w)===125?(Ie=Pe,w++):(Ie=r,we===0&&ve(qe)),Ie!==r?(Re=C,Q=Qe(k,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,3)===Ge?(N=Ge,w+=3):(N=r,we===0&&ve(ct)),N!==r?(Re=C,Q=sr(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.charCodeAt(w)===125?(N=Pe,w++):(N=r,we===0&&ve(qe)),N!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.charCodeAt(w)===36?(Q=Afe,w++):(Q=r,we===0&&ve(lfe)),Q!==r?(k=zf(),k!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)))),C}function Lfe(){var C,Q,k;return C=w,Q=Tfe(),Q!==r?(Re=w,k=cfe(Q),k?k=void 0:k=r,k!==r?(Re=C,Q=ufe(Q),C=Q):(w=C,C=r)):(w=C,C=r),C}function Tfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k!==r)for(;k!==r;)Q.push(k),k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r);else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function oO(){var C,Q,k;if(C=w,Q=[],UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM)),k!==r)for(;k!==r;)Q.push(k),UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function zf(){var C,Q,k;if(C=w,Q=[],jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM)),k!==r)for(;k!==r;)Q.push(k),jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function aO(){var C;return gfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(ffe)),C}function AO(){var C;return hfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(pfe)),C}function ke(){var C,Q;if(C=[],qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM)),Q!==r)for(;Q!==r;)C.push(Q),qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM));else C=r;return C}if(lI=n(),lI!==r&&w===t.length)return lI;throw lI!==r&&w{"use strict";function Ike(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Xl(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Xl)}Ike(Xl,Error);Xl.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=B,L=[]),L.push($))}function qe($,G){return new Xl($,null,null,G)}function re($,G,Ce){return new Xl(Xl.buildMessage($,G),$,G,Ce)}function se(){var $,G,Ce,ee;return $=B,G=be(),G!==r?(t.charCodeAt(B)===47?(Ce=s,B++):(Ce=r,K===0&&Pe(o)),Ce!==r?(ee=be(),ee!==r?(b=$,G=a(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=be(),G!==r&&(b=$,G=l(G)),$=G),$}function be(){var $,G,Ce,ee;return $=B,G=ae(),G!==r?(t.charCodeAt(B)===64?(Ce=c,B++):(Ce=r,K===0&&Pe(u)),Ce!==r?(ee=De(),ee!==r?(b=$,G=g(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=ae(),G!==r&&(b=$,G=f(G)),$=G),$}function ae(){var $,G,Ce,ee,Ue;return $=B,t.charCodeAt(B)===64?(G=c,B++):(G=r,K===0&&Pe(u)),G!==r?(Ce=Ae(),Ce!==r?(t.charCodeAt(B)===47?(ee=s,B++):(ee=r,K===0&&Pe(o)),ee!==r?(Ue=Ae(),Ue!==r?(b=$,G=h(),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=Ae(),G!==r&&(b=$,G=h()),$=G),$}function Ae(){var $,G,Ce;if($=B,G=[],p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d)),Ce!==r)for(;Ce!==r;)G.push(Ce),p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d));else G=r;return G!==r&&(b=$,G=h()),$=G,$}function De(){var $,G,Ce;if($=B,G=[],m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(E)),Ce!==r)for(;Ce!==r;)G.push(Ce),m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(E));else G=r;return G!==r&&(b=$,G=h()),$=G,$}if(J=n(),J!==r&&B===t.length)return J;throw J!==r&&B{"use strict";function Fz(t){return typeof t=="undefined"||t===null}function yke(t){return typeof t=="object"&&t!==null}function wke(t){return Array.isArray(t)?t:Fz(t)?[]:[t]}function Bke(t,e){var r,i,n,s;if(e)for(s=Object.keys(e),r=0,i=s.length;r{"use strict";function Lp(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Lp.prototype=Object.create(Error.prototype);Lp.prototype.constructor=Lp;Lp.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};Nz.exports=Lp});var Mz=I((Vot,Lz)=>{"use strict";var Tz=$l();function kP(t,e,r,i,n){this.name=t,this.buffer=e,this.position=r,this.line=i,this.column=n}kP.prototype.getSnippet=function(e,r){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,r=r||75,i="",n=this.position;n>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>r/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;or/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),Tz.repeat(" ",e)+i+a+s+` -`+Tz.repeat(" ",e+this.position-n+i.length)+"^"};kP.prototype.toString=function(e){var r,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(i+=`: -`+r)),i};Lz.exports=kP});var Xr=I((_ot,Oz)=>{"use strict";var Kz=ng(),vke=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Ske=["scalar","sequence","mapping"];function xke(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(i){e[String(i)]=r})}),e}function kke(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(vke.indexOf(r)===-1)throw new Kz('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=xke(e.styleAliases||null),Ske.indexOf(this.kind)===-1)throw new Kz('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}Oz.exports=kke});var ec=I((Xot,Uz)=>{"use strict";var Hz=$l(),hw=ng(),Pke=Xr();function PP(t,e,r){var i=[];return t.include.forEach(function(n){r=PP(n,e,r)}),t[e].forEach(function(n){r.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),r.push(n)}),r.filter(function(n,s){return i.indexOf(s)===-1})}function Dke(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function i(n){t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,r=arguments.length;e{"use strict";var Rke=Xr();Gz.exports=new Rke("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var qz=I(($ot,Yz)=>{"use strict";var Fke=Xr();Yz.exports=new Fke("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var Wz=I((eat,Jz)=>{"use strict";var Nke=Xr();Jz.exports=new Nke("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var pw=I((tat,zz)=>{"use strict";var Lke=ec();zz.exports=new Lke({explicit:[jz(),qz(),Wz()]})});var _z=I((rat,Vz)=>{"use strict";var Tke=Xr();function Mke(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function Oke(){return null}function Kke(t){return t===null}Vz.exports=new Tke("tag:yaml.org,2002:null",{kind:"scalar",resolve:Mke,construct:Oke,predicate:Kke,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var Zz=I((iat,Xz)=>{"use strict";var Uke=Xr();function Hke(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function Gke(t){return t==="true"||t==="True"||t==="TRUE"}function jke(t){return Object.prototype.toString.call(t)==="[object Boolean]"}Xz.exports=new Uke("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Hke,construct:Gke,predicate:jke,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var e4=I((nat,$z)=>{"use strict";var Yke=$l(),qke=Xr();function Jke(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function Wke(t){return 48<=t&&t<=55}function zke(t){return 48<=t&&t<=57}function Vke(t){if(t===null)return!1;var e=t.length,r=0,i=!1,n;if(!e)return!1;if(n=t[r],(n==="-"||n==="+")&&(n=t[++r]),n==="0"){if(r+1===e)return!0;if(n=t[++r],n==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var i4=I((sat,t4)=>{"use strict";var r4=$l(),Zke=Xr(),$ke=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ePe(t){return!(t===null||!$ke.test(t)||t[t.length-1]==="_")}function tPe(t){var e,r,i,n;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),r*e):r*parseFloat(e,10)}var rPe=/^[-+]?[0-9]+e/;function iPe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(r4.isNegativeZero(t))return"-0.0";return r=t.toString(10),rPe.test(r)?r.replace("e",".e"):r}function nPe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!=0||r4.isNegativeZero(t))}t4.exports=new Zke("tag:yaml.org,2002:float",{kind:"scalar",resolve:ePe,construct:tPe,predicate:nPe,represent:iPe,defaultStyle:"lowercase"})});var DP=I((oat,n4)=>{"use strict";var sPe=ec();n4.exports=new sPe({include:[pw()],implicit:[_z(),Zz(),e4(),i4()]})});var RP=I((aat,s4)=>{"use strict";var oPe=ec();s4.exports=new oPe({include:[DP()]})});var l4=I((Aat,o4)=>{"use strict";var aPe=Xr(),a4=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),A4=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function APe(t){return t===null?!1:a4.exec(t)!==null||A4.exec(t)!==null}function lPe(t){var e,r,i,n,s,o,a,l=0,c=null,u,g,f;if(e=a4.exec(t),e===null&&(e=A4.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(r,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function cPe(t){return t.toISOString()}o4.exports=new aPe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:APe,construct:lPe,instanceOf:Date,represent:cPe})});var u4=I((lat,c4)=>{"use strict";var uPe=Xr();function gPe(t){return t==="<<"||t===null}c4.exports=new uPe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:gPe})});var h4=I((cat,g4)=>{"use strict";var tc;try{f4=require,tc=f4("buffer").Buffer}catch(t){}var f4,fPe=Xr(),FP=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function hPe(t){if(t===null)return!1;var e,r,i=0,n=t.length,s=FP;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function pPe(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,s=FP,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return r=n%4*6,r===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):r===18?(a.push(o>>10&255),a.push(o>>2&255)):r===12&&a.push(o>>4&255),tc?tc.from?tc.from(a):new tc(a):a}function dPe(t){var e="",r=0,i,n,s=t.length,o=FP;for(i=0;i>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]),r=(r<<8)+t[i];return n=s%3,n===0?(e+=o[r>>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]):n===2?(e+=o[r>>10&63],e+=o[r>>4&63],e+=o[r<<2&63],e+=o[64]):n===1&&(e+=o[r>>2&63],e+=o[r<<4&63],e+=o[64],e+=o[64]),e}function CPe(t){return tc&&tc.isBuffer(t)}g4.exports=new fPe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:hPe,construct:pPe,predicate:CPe,represent:dPe})});var d4=I((uat,p4)=>{"use strict";var mPe=Xr(),IPe=Object.prototype.hasOwnProperty,EPe=Object.prototype.toString;function yPe(t){if(t===null)return!0;var e=[],r,i,n,s,o,a=t;for(r=0,i=a.length;r{"use strict";var BPe=Xr(),QPe=Object.prototype.toString;function bPe(t){if(t===null)return!0;var e,r,i,n,s,o=t;for(s=new Array(o.length),e=0,r=o.length;e{"use strict";var SPe=Xr(),xPe=Object.prototype.hasOwnProperty;function kPe(t){if(t===null)return!0;var e,r=t;for(e in r)if(xPe.call(r,e)&&r[e]!==null)return!1;return!0}function PPe(t){return t!==null?t:{}}I4.exports=new SPe("tag:yaml.org,2002:set",{kind:"mapping",resolve:kPe,construct:PPe})});var og=I((hat,y4)=>{"use strict";var DPe=ec();y4.exports=new DPe({include:[RP()],implicit:[l4(),u4()],explicit:[h4(),d4(),m4(),E4()]})});var B4=I((pat,w4)=>{"use strict";var RPe=Xr();function FPe(){return!0}function NPe(){}function LPe(){return""}function TPe(t){return typeof t=="undefined"}w4.exports=new RPe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:FPe,construct:NPe,predicate:TPe,represent:LPe})});var b4=I((dat,Q4)=>{"use strict";var MPe=Xr();function OPe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),i="";return!(e[0]==="/"&&(r&&(i=r[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function KPe(t){var e=t,r=/\/([gim]*)$/.exec(t),i="";return e[0]==="/"&&(r&&(i=r[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function UPe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function HPe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}Q4.exports=new MPe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:OPe,construct:KPe,predicate:HPe,represent:UPe})});var x4=I((Cat,v4)=>{"use strict";var dw;try{S4=require,dw=S4("esprima")}catch(t){typeof window!="undefined"&&(dw=window.esprima)}var S4,GPe=Xr();function jPe(t){if(t===null)return!1;try{var e="("+t+")",r=dw.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch(i){return!1}}function YPe(t){var e="("+t+")",r=dw.parse(e,{range:!0}),i=[],n;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function qPe(t){return t.toString()}function JPe(t){return Object.prototype.toString.call(t)==="[object Function]"}v4.exports=new GPe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:jPe,construct:YPe,predicate:JPe,represent:qPe})});var Tp=I((mat,k4)=>{"use strict";var P4=ec();k4.exports=P4.DEFAULT=new P4({include:[og()],explicit:[B4(),b4(),x4()]})});var V4=I((Iat,Mp)=>{"use strict";var Ba=$l(),D4=ng(),WPe=Mz(),R4=og(),zPe=Tp(),QA=Object.prototype.hasOwnProperty,Cw=1,F4=2,N4=3,mw=4,NP=1,VPe=2,L4=3,_Pe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,XPe=/[\x85\u2028\u2029]/,ZPe=/[,\[\]\{\}]/,T4=/^(?:!|!!|![a-z\-]+!)$/i,M4=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function O4(t){return Object.prototype.toString.call(t)}function wo(t){return t===10||t===13}function rc(t){return t===9||t===32}function yn(t){return t===9||t===32||t===10||t===13}function ag(t){return t===44||t===91||t===93||t===123||t===125}function $Pe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function eDe(t){return t===120?2:t===117?4:t===85?8:0}function tDe(t){return 48<=t&&t<=57?t-48:-1}function K4(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` -`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function rDe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var U4=new Array(256),H4=new Array(256);for(var Ag=0;Ag<256;Ag++)U4[Ag]=K4(Ag)?1:0,H4[Ag]=K4(Ag);function iDe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||zPe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function G4(t,e){return new D4(e,new WPe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function st(t,e){throw G4(t,e)}function Iw(t,e){t.onWarning&&t.onWarning.call(null,G4(t,e))}var j4={YAML:function(e,r,i){var n,s,o;e.version!==null&&st(e,"duplication of %YAML directive"),i.length!==1&&st(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&st(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&st(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&Iw(e,"unsupported YAML version of the document")},TAG:function(e,r,i){var n,s;i.length!==2&&st(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],T4.test(n)||st(e,"ill-formed tag handle (first argument) of the TAG directive"),QA.call(e.tagMap,n)&&st(e,'there is a previously declared suffix for "'+n+'" tag handle'),M4.test(s)||st(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function bA(t,e,r,i){var n,s,o,a;if(e1&&(t.result+=Ba.repeat(` -`,e-1))}function nDe(t,e,r){var i,n,s,o,a,l,c,u,g=t.kind,f=t.result,h;if(h=t.input.charCodeAt(t.position),yn(h)||ag(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n)))return!1;for(t.kind="scalar",t.result="",s=o=t.position,a=!1;h!==0;){if(h===58){if(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n))break}else if(h===35){if(i=t.input.charCodeAt(t.position-1),yn(i))break}else{if(t.position===t.lineStart&&Ew(t)||r&&ag(h))break;if(wo(h))if(l=t.line,c=t.lineStart,u=t.lineIndent,jr(t,!1,-1),t.lineIndent>=e){a=!0,h=t.input.charCodeAt(t.position);continue}else{t.position=o,t.line=l,t.lineStart=c,t.lineIndent=u;break}}a&&(bA(t,s,o,!1),TP(t,t.line-l),s=o=t.position,a=!1),rc(h)||(o=t.position+1),h=t.input.charCodeAt(++t.position)}return bA(t,s,o,!1),t.result?!0:(t.kind=g,t.result=f,!1)}function sDe(t,e){var r,i,n;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(bA(t,i,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)i=t.position,t.position++,n=t.position;else return!0;else wo(r)?(bA(t,i,n,!0),TP(t,jr(t,!1,e)),i=n=t.position):t.position===t.lineStart&&Ew(t)?st(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);st(t,"unexpected end of the stream within a single quoted scalar")}function oDe(t,e){var r,i,n,s,o,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return bA(t,r,t.position,!0),t.position++,!0;if(a===92){if(bA(t,r,t.position,!0),a=t.input.charCodeAt(++t.position),wo(a))jr(t,!1,e);else if(a<256&&U4[a])t.result+=H4[a],t.position++;else if((o=eDe(a))>0){for(n=o,s=0;n>0;n--)a=t.input.charCodeAt(++t.position),(o=$Pe(a))>=0?s=(s<<4)+o:st(t,"expected hexadecimal character");t.result+=rDe(s),t.position++}else st(t,"unknown escape sequence");r=i=t.position}else wo(a)?(bA(t,r,i,!0),TP(t,jr(t,!1,e)),r=i=t.position):t.position===t.lineStart&&Ew(t)?st(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}st(t,"unexpected end of the stream within a double quoted scalar")}function aDe(t,e){var r=!0,i,n=t.tag,s,o=t.anchor,a,l,c,u,g,f={},h,p,d,m;if(m=t.input.charCodeAt(t.position),m===91)l=93,g=!1,s=[];else if(m===123)l=125,g=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),m=t.input.charCodeAt(++t.position);m!==0;){if(jr(t,!0,e),m=t.input.charCodeAt(t.position),m===l)return t.position++,t.tag=n,t.anchor=o,t.kind=g?"mapping":"sequence",t.result=s,!0;r||st(t,"missed comma between flow collection entries"),p=h=d=null,c=u=!1,m===63&&(a=t.input.charCodeAt(t.position+1),yn(a)&&(c=u=!0,t.position++,jr(t,!0,e))),i=t.line,cg(t,e,Cw,!1,!0),p=t.tag,h=t.result,jr(t,!0,e),m=t.input.charCodeAt(t.position),(u||t.line===i)&&m===58&&(c=!0,m=t.input.charCodeAt(++t.position),jr(t,!0,e),cg(t,e,Cw,!1,!0),d=t.result),g?lg(t,s,f,p,h,d):c?s.push(lg(t,null,f,p,h,d)):s.push(h),jr(t,!0,e),m=t.input.charCodeAt(t.position),m===44?(r=!0,m=t.input.charCodeAt(++t.position)):r=!1}st(t,"unexpected end of the stream within a flow collection")}function ADe(t,e){var r,i,n=NP,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=t.input.charCodeAt(t.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(t.kind="scalar",t.result="";g!==0;)if(g=t.input.charCodeAt(++t.position),g===43||g===45)NP===n?n=g===43?L4:VPe:st(t,"repeat of a chomping mode identifier");else if((u=tDe(g))>=0)u===0?st(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?st(t,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(rc(g)){do g=t.input.charCodeAt(++t.position);while(rc(g));if(g===35)do g=t.input.charCodeAt(++t.position);while(!wo(g)&&g!==0)}for(;g!==0;){for(LP(t),t.lineIndent=0,g=t.input.charCodeAt(t.position);(!o||t.lineIndenta&&(a=t.lineIndent),wo(g)){l++;continue}if(t.lineIndente)&&l!==0)st(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(cg(t,e,mw,!0,n)&&(p?f=t.result:h=t.result),p||(lg(t,c,u,g,f,h,s,o),g=f=h=null),jr(t,!0,-1),m=t.input.charCodeAt(t.position)),t.lineIndent>e&&m!==0)st(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),g=0,f=t.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result)?(t.result=h.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):st(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):st(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function fDe(t){var e=t.position,r,i,n,s=!1,o;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(o=t.input.charCodeAt(t.position))!==0&&(jr(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||o!==37));){for(s=!0,o=t.input.charCodeAt(++t.position),r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);for(i=t.input.slice(r,t.position),n=[],i.length<1&&st(t,"directive name must not be less than one character in length");o!==0;){for(;rc(o);)o=t.input.charCodeAt(++t.position);if(o===35){do o=t.input.charCodeAt(++t.position);while(o!==0&&!wo(o));break}if(wo(o))break;for(r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(r,t.position))}o!==0&&LP(t),QA.call(j4,i)?j4[i](t,i,n):Iw(t,'unknown document directive "'+i+'"')}if(jr(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,jr(t,!0,-1)):s&&st(t,"directives end mark is expected"),cg(t,t.lineIndent-1,mw,!1,!0),jr(t,!0,-1),t.checkLineBreaks&&XPe.test(t.input.slice(e,t.position))&&Iw(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Ew(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,jr(t,!0,-1));return}if(t.position{"use strict";var Op=$l(),Kp=ng(),dDe=Tp(),CDe=og(),_4=Object.prototype.toString,X4=Object.prototype.hasOwnProperty,mDe=9,Up=10,IDe=13,EDe=32,yDe=33,wDe=34,Z4=35,BDe=37,QDe=38,bDe=39,vDe=42,$4=44,SDe=45,e5=58,xDe=61,kDe=62,PDe=63,DDe=64,t5=91,r5=93,RDe=96,i5=123,FDe=124,n5=125,Ri={};Ri[0]="\\0";Ri[7]="\\a";Ri[8]="\\b";Ri[9]="\\t";Ri[10]="\\n";Ri[11]="\\v";Ri[12]="\\f";Ri[13]="\\r";Ri[27]="\\e";Ri[34]='\\"';Ri[92]="\\\\";Ri[133]="\\N";Ri[160]="\\_";Ri[8232]="\\L";Ri[8233]="\\P";var NDe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function LDe(t,e){var r,i,n,s,o,a,l;if(e===null)return{};for(r={},i=Object.keys(e),n=0,s=i.length;n0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}else{for(s=0;si&&t[g+1]!==" ",g=s);else if(!ug(o))return yw;a=s>0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}c=c||u&&s-g-1>i&&t[g+1]!==" "}return!l&&!c?f&&!n(t)?l5:c5:r>9&&A5(t)?yw:c?g5:u5}function jDe(t,e,r,i){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&NDe.indexOf(e)!==-1)return"'"+e+"'";var n=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-n),o=i||t.flowLevel>-1&&r>=t.flowLevel;function a(l){return MDe(t,l)}switch(UDe(e,o,t.indent,s,a)){case l5:return e;case c5:return"'"+e.replace(/'/g,"''")+"'";case u5:return"|"+f5(e,t.indent)+h5(o5(e,n));case g5:return">"+f5(e,t.indent)+h5(o5(HDe(e,s),n));case yw:return'"'+GDe(e,s)+'"';default:throw new Kp("impossible error: invalid scalar style")}}()}function f5(t,e){var r=A5(t)?String(e):"",i=t[t.length-1]===` -`,n=i&&(t[t.length-2]===` -`||t===` -`),s=n?"+":i?"":"-";return r+s+` -`}function h5(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function HDe(t,e){for(var r=/(\n+)([^\n]*)/g,i=function(){var c=t.indexOf(` -`);return c=c!==-1?c:t.length,r.lastIndex=c,p5(t.slice(0,c),e)}(),n=t[0]===` -`||t[0]===" ",s,o;o=r.exec(t);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` -`:"")+p5(l,e),n=s}return i}function p5(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=r.exec(t);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` -`+t.slice(n,s),n=s+1),o=a;return l+=` -`,t.length-n>e&&o>n?l+=t.slice(n,o)+` -`+t.slice(o+1):l+=t.slice(n),l.slice(1)}function GDe(t){for(var e="",r,i,n,s=0;s=55296&&r<=56319&&(i=t.charCodeAt(s+1),i>=56320&&i<=57343)){e+=s5((r-55296)*1024+i-56320+65536),s++;continue}n=Ri[r],e+=!n&&ug(r)?t[s]:n||s5(r)}return e}function YDe(t,e,r){var i="",n=t.tag,s,o;for(s=0,o=r.length;s1024&&(u+="? "),u+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),!!ic(t,e,c,!1,!1)&&(u+=t.dump,i+=u));t.tag=n,t.dump="{"+i+"}"}function WDe(t,e,r,i){var n="",s=t.tag,o=Object.keys(r),a,l,c,u,g,f;if(t.sortKeys===!0)o.sort();else if(typeof t.sortKeys=="function")o.sort(t.sortKeys);else if(t.sortKeys)throw new Kp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(t.dump&&Up===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,g&&(f+=OP(t,e)),!!ic(t,e+1,u,!0,g)&&(t.dump&&Up===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,n+=f));t.tag=s,t.dump=n||"{}"}function d5(t,e,r){var i,n,s,o,a,l;for(n=r?t.explicitTypes:t.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');t.dump=i}return!0}return!1}function ic(t,e,r,i,n,s){t.tag=null,t.dump=r,d5(t,r,!1)||d5(t,r,!0);var o=_4.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=t.duplicates.indexOf(r),c=l!==-1),(t.tag!==null&&t.tag!=="?"||c||t.indent!==2&&e>0)&&(n=!1),c&&t.usedDuplicates[l])t.dump="*ref_"+l;else{if(a&&c&&!t.usedDuplicates[l]&&(t.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(t.dump).length!==0?(WDe(t,e,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(JDe(t,e,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump));else if(o==="[object Array]"){var u=t.noArrayIndent&&e>0?e-1:e;i&&t.dump.length!==0?(qDe(t,u,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(YDe(t,u,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump))}else if(o==="[object String]")t.tag!=="?"&&jDe(t,t.dump,e,s);else{if(t.skipInvalid)return!1;throw new Kp("unacceptable kind of an object to dump "+o)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function zDe(t,e){var r=[],i=[],n,s;for(UP(t,r,i),n=0,s=i.length;n{"use strict";var ww=V4(),I5=m5();function Bw(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Qr.exports.Type=Xr();Qr.exports.Schema=ec();Qr.exports.FAILSAFE_SCHEMA=pw();Qr.exports.JSON_SCHEMA=DP();Qr.exports.CORE_SCHEMA=RP();Qr.exports.DEFAULT_SAFE_SCHEMA=og();Qr.exports.DEFAULT_FULL_SCHEMA=Tp();Qr.exports.load=ww.load;Qr.exports.loadAll=ww.loadAll;Qr.exports.safeLoad=ww.safeLoad;Qr.exports.safeLoadAll=ww.safeLoadAll;Qr.exports.dump=I5.dump;Qr.exports.safeDump=I5.safeDump;Qr.exports.YAMLException=ng();Qr.exports.MINIMAL_SCHEMA=pw();Qr.exports.SAFE_SCHEMA=og();Qr.exports.DEFAULT_SCHEMA=Tp();Qr.exports.scan=Bw("scan");Qr.exports.parse=Bw("parse");Qr.exports.compose=Bw("compose");Qr.exports.addConstructor=Bw("addConstructor")});var w5=I((wat,y5)=>{"use strict";var _De=E5();y5.exports=_De});var Q5=I((Bat,B5)=>{"use strict";function XDe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function nc(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,nc)}XDe(nc,Error);nc.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[xe]:le})))},H=function(x){return x},L=function(x){return x},K=Yo("correct indentation"),J=" ",ne=fr(" ",!1),q=function(x){return x.length===Zc*aI},A=function(x){return x.length===(Zc+1)*aI},V=function(){return Zc++,!0},W=function(){return Zc--,!0},X=function(){return Xm()},F=Yo("pseudostring"),D=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,he=Bs(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),pe=/^[^\r\n\t ,\][{}:#"']/,Ne=Bs(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Xm().replace(/^ *| *$/g,"")},qe="--",re=fr("--",!1),se=/^[a-zA-Z\/0-9]/,be=Bs([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),ae=/^[^\r\n\t :,]/,Ae=Bs(["\r",` -`," "," ",":",","],!0,!1),De="null",$=fr("null",!1),G=function(){return null},Ce="true",ee=fr("true",!1),Ue=function(){return!0},Oe="false",vt=fr("false",!1),dt=function(){return!1},ri=Yo("string"),ii='"',an=fr('"',!1),yr=function(){return""},Ki=function(x){return x},Qi=function(x){return x.join("")},Go=/^[^"\\\0-\x1F\x7F]/,wr=Bs(['"',"\\",["\0",""],"\x7F"],!0,!1),Ui='\\"',ws=fr('\\"',!1),Tf=function(){return'"'},Mf="\\\\",Rm=fr("\\\\",!1),Fm=function(){return"\\"},Nm="\\/",DQ=fr("\\/",!1),RQ=function(){return"/"},Of="\\b",FQ=fr("\\b",!1),NQ=function(){return"\b"},Lm="\\f",LQ=fr("\\f",!1),Va=function(){return"\f"},jo="\\n",Tm=fr("\\n",!1),Mm=function(){return` -`},te="\\r",Om=fr("\\r",!1),Km=function(){return"\r"},il="\\t",Um=fr("\\t",!1),Hm=function(){return" "},Kf="\\u",Gm=fr("\\u",!1),jm=function(x,U,le,xe){return String.fromCharCode(parseInt(`0x${x}${U}${le}${xe}`))},TQ=/^[0-9a-fA-F]/,MQ=Bs([["0","9"],["a","f"],["A","F"]],!1,!1),Ym=Yo("blank space"),qm=/^[ \t]/,Jm=Bs([" "," "],!1,!1),Wm=Yo("white space"),zm=/^[ \t\n\r]/,Vm=Bs([" "," ",` -`,"\r"],!1,!1),Uf=`\r -`,OQ=fr(`\r -`,!1),KQ=` -`,_m=fr(` -`,!1),UQ="\r",HQ=fr("\r",!1),O=0,ht=0,Vc=[{line:1,column:1}],xn=0,Hf=[],Ye=0,nl;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Xm(){return t.substring(ht,O)}function MM(){return _a(ht,O)}function GQ(x,U){throw U=U!==void 0?U:_a(ht,O),eI([Yo(x)],t.substring(ht,O),U)}function OM(x,U){throw U=U!==void 0?U:_a(ht,O),YQ(x,U)}function fr(x,U){return{type:"literal",text:x,ignoreCase:U}}function Bs(x,U,le){return{type:"class",parts:x,inverted:U,ignoreCase:le}}function jQ(){return{type:"any"}}function Zm(){return{type:"end"}}function Yo(x){return{type:"other",description:x}}function $m(x){var U=Vc[x],le;if(U)return U;for(le=x-1;!Vc[le];)le--;for(U=Vc[le],U={line:U.line,column:U.column};lexn&&(xn=O,Hf=[]),Hf.push(x))}function YQ(x,U){return new nc(x,null,null,U)}function eI(x,U,le){return new nc(nc.buildMessage(x,U),x,U,le)}function tI(){var x;return x=ol(),x}function Xa(){var x,U,le;for(x=O,U=[],le=sl();le!==r;)U.push(le),le=sl();return U!==r&&(ht=x,U=s(U)),x=U,x}function sl(){var x,U,le,xe,Qe;return x=O,U=Al(),U!==r?(t.charCodeAt(O)===45?(le=o,O++):(le=r,Ye===0&&et(a)),le!==r?(xe=xr(),xe!==r?(Qe=qo(),Qe!==r?(ht=x,U=l(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x}function ol(){var x,U,le;for(x=O,U=[],le=al();le!==r;)U.push(le),le=al();return U!==r&&(ht=x,U=c(U)),x=U,x}function al(){var x,U,le,xe,Qe,Ge,ct,sr,Wo;if(x=O,U=xr(),U===r&&(U=null),U!==r){if(le=O,t.charCodeAt(O)===35?(xe=u,O++):(xe=r,Ye===0&&et(g)),xe!==r){if(Qe=[],Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r),Ge!==r)for(;Ge!==r;)Qe.push(Ge),Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r);else Qe=r;Qe!==r?(xe=[xe,Qe],le=xe):(O=le,le=r)}else O=le,le=r;if(le===r&&(le=null),le!==r){if(xe=[],Qe=Jo(),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=Jo();else xe=r;xe!==r?(ht=x,U=h(),x=U):(O=x,x=r)}else O=x,x=r}else O=x,x=r;if(x===r&&(x=O,U=Al(),U!==r?(le=JQ(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Al(),U!==r?(le=ll(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))){if(x=O,U=Al(),U!==r)if(le=ll(),le!==r)if(xe=xr(),xe!==r)if(Qe=nI(),Qe!==r){if(Ge=[],ct=Jo(),ct!==r)for(;ct!==r;)Ge.push(ct),ct=Jo();else Ge=r;Ge!==r?(ht=x,U=m(le,Qe),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;else O=x,x=r;else O=x,x=r;if(x===r)if(x=O,U=Al(),U!==r)if(le=ll(),le!==r){if(xe=[],Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=E,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=E,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r);else xe=r;xe!==r?(Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(t.charCodeAt(O)===58?(Ge=p,O++):(Ge=r,Ye===0&&et(d)),Ge!==r?(ct=xr(),ct===r&&(ct=null),ct!==r?(sr=qo(),sr!==r?(ht=x,U=R(le,xe,sr),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)}else O=x,x=r;else O=x,x=r}return x}function qo(){var x,U,le,xe,Qe,Ge,ct;if(x=O,U=O,Ye++,le=O,xe=Zs(),xe!==r?(Qe=qQ(),Qe!==r?(t.charCodeAt(O)===45?(Ge=o,O++):(Ge=r,Ye===0&&et(a)),Ge!==r?(ct=xr(),ct!==r?(xe=[xe,Qe,Ge,ct],le=xe):(O=le,le=r)):(O=le,le=r)):(O=le,le=r)):(O=le,le=r),Ye--,le!==r?(O=U,U=void 0):U=r,U!==r?(le=Jo(),le!==r?(xe=rI(),xe!==r?(Qe=Xa(),Qe!==r?(Ge=iI(),Ge!==r?(ht=x,U=H(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Zs(),U!==r?(le=rI(),le!==r?(xe=ol(),xe!==r?(Qe=iI(),Qe!==r?(ht=x,U=H(xe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))if(x=O,U=WQ(),U!==r){if(le=[],xe=Jo(),xe!==r)for(;xe!==r;)le.push(xe),xe=Jo();else le=r;le!==r?(ht=x,U=L(U),x=U):(O=x,x=r)}else O=x,x=r;return x}function Al(){var x,U,le;for(Ye++,x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=q(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),Ye--,x===r&&(U=r,Ye===0&&et(K)),x}function qQ(){var x,U,le;for(x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=A(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),x}function rI(){var x;return ht=O,x=V(),x?x=void 0:x=r,x}function iI(){var x;return ht=O,x=W(),x?x=void 0:x=r,x}function JQ(){var x;return x=cl(),x===r&&(x=Gf()),x}function ll(){var x,U,le;if(x=cl(),x===r){if(x=O,U=[],le=_c(),le!==r)for(;le!==r;)U.push(le),le=_c();else U=r;U!==r&&(ht=x,U=X()),x=U}return x}function WQ(){var x;return x=jf(),x===r&&(x=sI(),x===r&&(x=cl(),x===r&&(x=Gf()))),x}function nI(){var x;return x=jf(),x===r&&(x=cl(),x===r&&(x=_c())),x}function Gf(){var x,U,le,xe,Qe,Ge;if(Ye++,x=O,D.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(he)),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;return Ye--,x===r&&(U=r,Ye===0&&et(F)),x}function _c(){var x,U,le,xe,Qe;if(x=O,t.substr(O,2)===qe?(U=qe,O+=2):(U=r,Ye===0&&et(re)),U===r&&(U=null),U!==r)if(se.test(t.charAt(O))?(le=t.charAt(O),O++):(le=r,Ye===0&&et(be)),le!==r){for(xe=[],ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));Qe!==r;)xe.push(Qe),ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));xe!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;return x}function jf(){var x,U;return x=O,t.substr(O,4)===De?(U=De,O+=4):(U=r,Ye===0&&et($)),U!==r&&(ht=x,U=G()),x=U,x}function sI(){var x,U;return x=O,t.substr(O,4)===Ce?(U=Ce,O+=4):(U=r,Ye===0&&et(ee)),U!==r&&(ht=x,U=Ue()),x=U,x===r&&(x=O,t.substr(O,5)===Oe?(U=Oe,O+=5):(U=r,Ye===0&&et(vt)),U!==r&&(ht=x,U=dt()),x=U),x}function cl(){var x,U,le,xe;return Ye++,x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(t.charCodeAt(O)===34?(le=ii,O++):(le=r,Ye===0&&et(an)),le!==r?(ht=x,U=yr(),x=U):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(le=oI(),le!==r?(t.charCodeAt(O)===34?(xe=ii,O++):(xe=r,Ye===0&&et(an)),xe!==r?(ht=x,U=Ki(le),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)),Ye--,x===r&&(U=r,Ye===0&&et(ri)),x}function oI(){var x,U,le;if(x=O,U=[],le=Yf(),le!==r)for(;le!==r;)U.push(le),le=Yf();else U=r;return U!==r&&(ht=x,U=Qi(U)),x=U,x}function Yf(){var x,U,le,xe,Qe,Ge;return Go.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(wr)),x===r&&(x=O,t.substr(O,2)===Ui?(U=Ui,O+=2):(U=r,Ye===0&&et(ws)),U!==r&&(ht=x,U=Tf()),x=U,x===r&&(x=O,t.substr(O,2)===Mf?(U=Mf,O+=2):(U=r,Ye===0&&et(Rm)),U!==r&&(ht=x,U=Fm()),x=U,x===r&&(x=O,t.substr(O,2)===Nm?(U=Nm,O+=2):(U=r,Ye===0&&et(DQ)),U!==r&&(ht=x,U=RQ()),x=U,x===r&&(x=O,t.substr(O,2)===Of?(U=Of,O+=2):(U=r,Ye===0&&et(FQ)),U!==r&&(ht=x,U=NQ()),x=U,x===r&&(x=O,t.substr(O,2)===Lm?(U=Lm,O+=2):(U=r,Ye===0&&et(LQ)),U!==r&&(ht=x,U=Va()),x=U,x===r&&(x=O,t.substr(O,2)===jo?(U=jo,O+=2):(U=r,Ye===0&&et(Tm)),U!==r&&(ht=x,U=Mm()),x=U,x===r&&(x=O,t.substr(O,2)===te?(U=te,O+=2):(U=r,Ye===0&&et(Om)),U!==r&&(ht=x,U=Km()),x=U,x===r&&(x=O,t.substr(O,2)===il?(U=il,O+=2):(U=r,Ye===0&&et(Um)),U!==r&&(ht=x,U=Hm()),x=U,x===r&&(x=O,t.substr(O,2)===Kf?(U=Kf,O+=2):(U=r,Ye===0&&et(Gm)),U!==r?(le=Xc(),le!==r?(xe=Xc(),xe!==r?(Qe=Xc(),Qe!==r?(Ge=Xc(),Ge!==r?(ht=x,U=jm(le,xe,Qe,Ge),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)))))))))),x}function Xc(){var x;return TQ.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(MQ)),x}function xr(){var x,U;if(Ye++,x=[],qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm)),U!==r)for(;U!==r;)x.push(U),qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Ym)),x}function KM(){var x,U;if(Ye++,x=[],zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm)),U!==r)for(;U!==r;)x.push(U),zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Wm)),x}function Jo(){var x,U,le,xe,Qe,Ge;if(x=O,U=Zs(),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(U=[U,le],x=U):(O=x,x=r)}else O=x,x=r;return x}function Zs(){var x;return t.substr(O,2)===Uf?(x=Uf,O+=2):(x=r,Ye===0&&et(OQ)),x===r&&(t.charCodeAt(O)===10?(x=KQ,O++):(x=r,Ye===0&&et(_m)),x===r&&(t.charCodeAt(O)===13?(x=UQ,O++):(x=r,Ye===0&&et(HQ)))),x}let aI=2,Zc=0;if(nl=n(),nl!==r&&O===t.length)return nl;throw nl!==r&&O{var fRe=typeof global=="object"&&global&&global.Object===Object&&global;V5.exports=fRe});var Ks=I((Zat,_5)=>{var hRe=WP(),pRe=typeof self=="object"&&self&&self.Object===Object&&self,dRe=hRe||pRe||Function("return this")();_5.exports=dRe});var ac=I(($at,X5)=>{var CRe=Ks(),mRe=CRe.Symbol;X5.exports=mRe});var $5=I((eAt,Z5)=>{function IRe(t,e){for(var r=-1,i=t==null?0:t.length,n=Array(i);++r{var ERe=Array.isArray;e6.exports=ERe});var n6=I((rAt,t6)=>{var r6=ac(),i6=Object.prototype,yRe=i6.hasOwnProperty,wRe=i6.toString,Jp=r6?r6.toStringTag:void 0;function BRe(t){var e=yRe.call(t,Jp),r=t[Jp];try{t[Jp]=void 0;var i=!0}catch(s){}var n=wRe.call(t);return i&&(e?t[Jp]=r:delete t[Jp]),n}t6.exports=BRe});var o6=I((iAt,s6)=>{var QRe=Object.prototype,bRe=QRe.toString;function vRe(t){return bRe.call(t)}s6.exports=vRe});var Ac=I((nAt,a6)=>{var A6=ac(),SRe=n6(),xRe=o6(),kRe="[object Null]",PRe="[object Undefined]",l6=A6?A6.toStringTag:void 0;function DRe(t){return t==null?t===void 0?PRe:kRe:l6&&l6 in Object(t)?SRe(t):xRe(t)}a6.exports=DRe});var Qo=I((sAt,c6)=>{function RRe(t){return t!=null&&typeof t=="object"}c6.exports=RRe});var Nw=I((oAt,u6)=>{var FRe=Ac(),NRe=Qo(),LRe="[object Symbol]";function TRe(t){return typeof t=="symbol"||NRe(t)&&FRe(t)==LRe}u6.exports=TRe});var C6=I((aAt,g6)=>{var f6=ac(),MRe=$5(),ORe=As(),KRe=Nw(),URe=1/0,h6=f6?f6.prototype:void 0,p6=h6?h6.toString:void 0;function d6(t){if(typeof t=="string")return t;if(ORe(t))return MRe(t,d6)+"";if(KRe(t))return p6?p6.call(t):"";var e=t+"";return e=="0"&&1/t==-URe?"-0":e}g6.exports=d6});var gg=I((AAt,m6)=>{var HRe=C6();function GRe(t){return t==null?"":HRe(t)}m6.exports=GRe});var zP=I((lAt,I6)=>{function jRe(t,e,r){var i=-1,n=t.length;e<0&&(e=-e>n?0:n+e),r=r>n?n:r,r<0&&(r+=n),n=e>r?0:r-e>>>0,e>>>=0;for(var s=Array(n);++i{var YRe=zP();function qRe(t,e,r){var i=t.length;return r=r===void 0?i:r,!e&&r>=i?t:YRe(t,e,r)}E6.exports=qRe});var VP=I((uAt,w6)=>{var JRe="\\ud800-\\udfff",WRe="\\u0300-\\u036f",zRe="\\ufe20-\\ufe2f",VRe="\\u20d0-\\u20ff",_Re=WRe+zRe+VRe,XRe="\\ufe0e\\ufe0f",ZRe="\\u200d",$Re=RegExp("["+ZRe+JRe+_Re+XRe+"]");function eFe(t){return $Re.test(t)}w6.exports=eFe});var Q6=I((gAt,B6)=>{function tFe(t){return t.split("")}B6.exports=tFe});var R6=I((fAt,b6)=>{var v6="\\ud800-\\udfff",rFe="\\u0300-\\u036f",iFe="\\ufe20-\\ufe2f",nFe="\\u20d0-\\u20ff",sFe=rFe+iFe+nFe,oFe="\\ufe0e\\ufe0f",aFe="["+v6+"]",_P="["+sFe+"]",XP="\\ud83c[\\udffb-\\udfff]",AFe="(?:"+_P+"|"+XP+")",S6="[^"+v6+"]",x6="(?:\\ud83c[\\udde6-\\uddff]){2}",k6="[\\ud800-\\udbff][\\udc00-\\udfff]",lFe="\\u200d",P6=AFe+"?",D6="["+oFe+"]?",cFe="(?:"+lFe+"(?:"+[S6,x6,k6].join("|")+")"+D6+P6+")*",uFe=D6+P6+cFe,gFe="(?:"+[S6+_P+"?",_P,x6,k6,aFe].join("|")+")",fFe=RegExp(XP+"(?="+XP+")|"+gFe+uFe,"g");function hFe(t){return t.match(fFe)||[]}b6.exports=hFe});var N6=I((hAt,F6)=>{var pFe=Q6(),dFe=VP(),CFe=R6();function mFe(t){return dFe(t)?CFe(t):pFe(t)}F6.exports=mFe});var T6=I((pAt,L6)=>{var IFe=y6(),EFe=VP(),yFe=N6(),wFe=gg();function BFe(t){return function(e){e=wFe(e);var r=EFe(e)?yFe(e):void 0,i=r?r[0]:e.charAt(0),n=r?IFe(r,1).join(""):e.slice(1);return i[t]()+n}}L6.exports=BFe});var O6=I((dAt,M6)=>{var QFe=T6(),bFe=QFe("toUpperCase");M6.exports=bFe});var ZP=I((CAt,K6)=>{var vFe=gg(),SFe=O6();function xFe(t){return SFe(vFe(t).toLowerCase())}K6.exports=xFe});var H6=I((mAt,U6)=>{"use strict";U6.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Wp=I((IAt,$P)=>{"use strict";var kFe=H6(),G6=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,i=()=>{r--,e.length>0&&e.shift()()},n=(a,l,...c)=>{r++;let u=kFe(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{rnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),o};$P.exports=G6;$P.exports.default=G6});var X6=I((FAt,Mw)=>{function PFe(){var t=0,e=1,r=2,i=3,n=4,s=5,o=6,a=7,l=8,c=9,u=10,g=11,f=12,h=13,p=14,d=15,m=16,E=17,B=0,b=1,R=2,H=3,L=4;function K(A,V){return 55296<=A.charCodeAt(V)&&A.charCodeAt(V)<=56319&&56320<=A.charCodeAt(V+1)&&A.charCodeAt(V+1)<=57343}function J(A,V){V===void 0&&(V=0);var W=A.charCodeAt(V);if(55296<=W&&W<=56319&&V=1){var X=A.charCodeAt(V-1),F=W;return 55296<=X&&X<=56319?(X-55296)*1024+(F-56320)+65536:F}return W}function ne(A,V,W){var X=[A].concat(V).concat([W]),F=X[X.length-2],D=W,he=X.lastIndexOf(p);if(he>1&&X.slice(1,he).every(function(Pe){return Pe==i})&&[i,h,E].indexOf(A)==-1)return R;var pe=X.lastIndexOf(n);if(pe>0&&X.slice(1,pe).every(function(Pe){return Pe==n})&&[f,n].indexOf(F)==-1)return X.filter(function(Pe){return Pe==n}).length%2==1?H:L;if(F==t&&D==e)return B;if(F==r||F==t||F==e)return D==p&&V.every(function(Pe){return Pe==i})?R:b;if(D==r||D==t||D==e)return b;if(F==o&&(D==o||D==a||D==c||D==u))return B;if((F==c||F==a)&&(D==a||D==l))return B;if((F==u||F==l)&&D==l)return B;if(D==i||D==d)return B;if(D==s)return B;if(F==f)return B;var Ne=X.indexOf(i)!=-1?X.lastIndexOf(i)-1:X.length-2;return[h,E].indexOf(X[Ne])!=-1&&X.slice(Ne+1,-1).every(function(Pe){return Pe==i})&&D==p||F==d&&[m,E].indexOf(D)!=-1?B:V.indexOf(n)!=-1?R:F==n&&D==n?B:b}this.nextBreak=function(A,V){if(V===void 0&&(V=0),V<0)return 0;if(V>=A.length-1)return A.length;for(var W=q(J(A,V)),X=[],F=V+1;F{var DFe=X6(),RFe=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,FFe=new DFe;Z6.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let i=r-e,n="",s=0,o=0;for(;t.length>0;){let a=t.match(RFe)||[t,t,void 0],l=FFe.splitGraphemes(a[1]),c=Math.min(e-s,l.length);l=l.slice(c);let u=Math.min(i-o,l.length);n+=l.slice(0,u).join(""),s+=c,o+=u,typeof a[2]!="undefined"&&(n+=a[2]),t=t.slice(a[0].length)}return n}});var fg=I((alt,f9)=>{"use strict";var h9=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]),olt=f9.exports=t=>t?Object.keys(t).map(e=>[h9.has(e)?h9.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var hg=I((Alt,p9)=>{"use strict";var JFe=require("events"),d9=require("stream"),_p=Rh(),C9=require("string_decoder").StringDecoder,va=Symbol("EOF"),Xp=Symbol("maybeEmitEnd"),xA=Symbol("emittedEnd"),Gw=Symbol("emittingEnd"),jw=Symbol("closed"),m9=Symbol("read"),iD=Symbol("flush"),I9=Symbol("flushChunk"),Bn=Symbol("encoding"),Sa=Symbol("decoder"),Yw=Symbol("flowing"),Zp=Symbol("paused"),$p=Symbol("resume"),rn=Symbol("bufferLength"),E9=Symbol("bufferPush"),nD=Symbol("bufferShift"),Ni=Symbol("objectMode"),Li=Symbol("destroyed"),y9=global._MP_NO_ITERATOR_SYMBOLS_!=="1",WFe=y9&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),zFe=y9&&Symbol.iterator||Symbol("iterator not implemented"),w9=t=>t==="end"||t==="finish"||t==="prefinish",VFe=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,_Fe=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);p9.exports=class B9 extends d9{constructor(e){super();this[Yw]=!1,this[Zp]=!1,this.pipes=new _p,this.buffer=new _p,this[Ni]=e&&e.objectMode||!1,this[Ni]?this[Bn]=null:this[Bn]=e&&e.encoding||null,this[Bn]==="buffer"&&(this[Bn]=null),this[Sa]=this[Bn]?new C9(this[Bn]):null,this[va]=!1,this[xA]=!1,this[Gw]=!1,this[jw]=!1,this.writable=!0,this.readable=!0,this[rn]=0,this[Li]=!1}get bufferLength(){return this[rn]}get encoding(){return this[Bn]}set encoding(e){if(this[Ni])throw new Error("cannot set encoding in objectMode");if(this[Bn]&&e!==this[Bn]&&(this[Sa]&&this[Sa].lastNeed||this[rn]))throw new Error("cannot change encoding");this[Bn]!==e&&(this[Sa]=e?new C9(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Sa].write(r)))),this[Bn]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ni]}set objectMode(e){this[Ni]=this[Ni]||!!e}write(e,r,i){if(this[va])throw new Error("write after end");return this[Li]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[Ni]&&!Buffer.isBuffer(e)&&(_Fe(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):VFe(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof e=="string"&&!this[Ni]&&!(r===this[Bn]&&!this[Sa].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Bn]&&(e=this[Sa].write(e)),this.flowing?(this[rn]!==0&&this[iD](!0),this.emit("data",e)):this[E9](e),this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(e){if(this[Li])return null;try{return this[rn]===0||e===0||e>this[rn]?null:(this[Ni]&&(e=null),this.buffer.length>1&&!this[Ni]&&(this.encoding?this.buffer=new _p([Array.from(this.buffer).join("")]):this.buffer=new _p([Buffer.concat(Array.from(this.buffer),this[rn])])),this[m9](e||null,this.buffer.head.value))}finally{this[Xp]()}}[m9](e,r){return e===r.length||e===null?this[nD]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[rn]-=e),this.emit("data",r),!this.buffer.length&&!this[va]&&this.emit("drain"),r}end(e,r,i){return typeof e=="function"&&(i=e,e=null),typeof r=="function"&&(i=r,r="utf8"),e&&this.write(e,r),i&&this.once("end",i),this[va]=!0,this.writable=!1,(this.flowing||!this[Zp])&&this[Xp](),this}[$p](){this[Li]||(this[Zp]=!1,this[Yw]=!0,this.emit("resume"),this.buffer.length?this[iD]():this[va]?this[Xp]():this.emit("drain"))}resume(){return this[$p]()}pause(){this[Yw]=!1,this[Zp]=!0}get destroyed(){return this[Li]}get flowing(){return this[Yw]}get paused(){return this[Zp]}[E9](e){return this[Ni]?this[rn]+=1:this[rn]+=e.length,this.buffer.push(e)}[nD](){return this.buffer.length&&(this[Ni]?this[rn]-=1:this[rn]-=this.buffer.head.value.length),this.buffer.shift()}[iD](e){do;while(this[I9](this[nD]()));!e&&!this.buffer.length&&!this[va]&&this.emit("drain")}[I9](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Li])return;let i=this[xA];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:e,opts:r,ondrain:s=>this[$p]()};return this.pipes.push(n),e.on("drain",n.ondrain),this[$p](),i&&n.opts.end&&n.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[$p]():w9(e)&&this[xA]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[xA]}[Xp](){!this[Gw]&&!this[xA]&&!this[Li]&&this.buffer.length===0&&this[va]&&(this[Gw]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jw]&&this.emit("close"),this[Gw]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==Li&&this[Li])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[xA]===!0)return;this[xA]=!0,this.readable=!1,this[Sa]&&(r=this[Sa].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(e==="close"&&(this[jw]=!0,!this[xA]&&!this[Li]))return;let i=new Array(arguments.length);if(i[0]=e,i[1]=r,arguments.length>2)for(let n=2;n{e.push(i),this[Ni]||(e.dataLength+=i.length)}),r.then(()=>e)}concat(){return this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this[Bn]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Li,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",i=>r(i))})}[WFe](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[va])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[va]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},l=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(Li,l),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[zFe](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Li]?(e?this.emit("error",e):this.emit(Li),this):(this[Li]=!0,this.buffer=new _p,this[rn]=0,typeof this.close=="function"&&!this[jw]&&this.close(),e?this.emit("error",e):this.emit(Li),this)}static isStream(e){return!!e&&(e instanceof B9||e instanceof d9||e instanceof JFe&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var b9=I((llt,Q9)=>{var XFe=require("zlib").constants||{ZLIB_VERNUM:4736};Q9.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},XFe))});var fD=I(Un=>{"use strict";var sD=require("assert"),kA=require("buffer").Buffer,v9=require("zlib"),uc=Un.constants=b9(),ZFe=hg(),S9=kA.concat,gc=Symbol("_superWrite"),ed=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},$Fe=Symbol("opts"),td=Symbol("flushFlag"),x9=Symbol("finishFlushFlag"),oD=Symbol("fullFlushFlag"),tr=Symbol("handle"),qw=Symbol("onError"),pg=Symbol("sawError"),aD=Symbol("level"),AD=Symbol("strategy"),lD=Symbol("ended"),clt=Symbol("_defaultFullFlush"),cD=class extends ZFe{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[pg]=!1,this[lD]=!1,this[$Fe]=e,this[td]=e.flush,this[x9]=e.finishFlush;try{this[tr]=new v9[r](e)}catch(i){throw new ed(i)}this[qw]=i=>{this[pg]||(this[pg]=!0,this.close(),this.emit("error",i))},this[tr].on("error",i=>this[qw](new ed(i))),this.once("end",()=>this.close)}close(){this[tr]&&(this[tr].close(),this[tr]=null,this.emit("close"))}reset(){if(!this[pg])return sD(this[tr],"zlib binding closed"),this[tr].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[oD]),this.write(Object.assign(kA.alloc(0),{[td]:e})))}end(e,r,i){return e&&this.write(e,r),this.flush(this[x9]),this[lD]=!0,super.end(null,null,i)}get ended(){return this[lD]}write(e,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof e=="string"&&(e=kA.from(e,r)),this[pg])return;sD(this[tr],"zlib binding closed");let n=this[tr]._handle,s=n.close;n.close=()=>{};let o=this[tr].close;this[tr].close=()=>{},kA.concat=c=>c;let a;try{let c=typeof e[td]=="number"?e[td]:this[td];a=this[tr]._processChunk(e,c),kA.concat=S9}catch(c){kA.concat=S9,this[qw](new ed(c))}finally{this[tr]&&(this[tr]._handle=n,n.close=s,this[tr].close=o,this[tr].removeAllListeners("error"))}this[tr]&&this[tr].on("error",c=>this[qw](new ed(c)));let l;if(a)if(Array.isArray(a)&&a.length>0){l=this[gc](kA.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[tr].params(e,r)}finally{this[tr].flush=i}this[tr]&&(this[aD]=e,this[AD]=r)}}}},k9=class extends PA{constructor(e){super(e,"Deflate")}},P9=class extends PA{constructor(e){super(e,"Inflate")}},uD=Symbol("_portable"),D9=class extends PA{constructor(e){super(e,"Gzip");this[uD]=e&&!!e.portable}[gc](e){return this[uD]?(this[uD]=!1,e[9]=255,super[gc](e)):super[gc](e)}},R9=class extends PA{constructor(e){super(e,"Gunzip")}},F9=class extends PA{constructor(e){super(e,"DeflateRaw")}},N9=class extends PA{constructor(e){super(e,"InflateRaw")}},L9=class extends PA{constructor(e){super(e,"Unzip")}},gD=class extends cD{constructor(e,r){e=e||{},e.flush=e.flush||uc.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||uc.BROTLI_OPERATION_FINISH,super(e,r),this[oD]=uc.BROTLI_OPERATION_FLUSH}},T9=class extends gD{constructor(e){super(e,"BrotliCompress")}},M9=class extends gD{constructor(e){super(e,"BrotliDecompress")}};Un.Deflate=k9;Un.Inflate=P9;Un.Gzip=D9;Un.Gunzip=R9;Un.DeflateRaw=F9;Un.InflateRaw=N9;Un.Unzip=L9;typeof v9.BrotliCompress=="function"?(Un.BrotliCompress=T9,Un.BrotliDecompress=M9):Un.BrotliCompress=Un.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var rd=I(Jw=>{"use strict";Jw.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Jw.code=new Map(Array.from(Jw.name).map(t=>[t[1],t[0]]))});var id=I((plt,O9)=>{"use strict";var flt=rd(),eNe=hg(),hD=Symbol("slurp");O9.exports=class extends eNe{constructor(e,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[hD](r),i&&this[hD](i,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(e):super.write(e.slice(0,i))}[hD](e,r){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(r&&i==="path")&&(this[i]=e[i])}}});var H9=I(pD=>{"use strict";var dlt=pD.encode=(t,e)=>{if(Number.isSafeInteger(t))t<0?rNe(t,e):tNe(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},tNe=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},rNe=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var i=e.length;i>1;i--){var n=t&255;t=Math.floor(t/256),r?e[i-1]=K9(n):n===0?e[i-1]=0:(r=!0,e[i-1]=U9(n))}},Clt=pD.parse=t=>{var e=t[t.length-1],r=t[0],i;if(r===128)i=nNe(t.slice(1,t.length));else if(r===255)i=iNe(t);else throw Error("invalid base256 encoding");if(!Number.isSafeInteger(i))throw Error("parsed number outside of javascript safe integer range");return i},iNe=t=>{for(var e=t.length,r=0,i=!1,n=e-1;n>-1;n--){var s=t[n],o;i?o=K9(s):s===0?o=s:(i=!0,o=U9(s)),o!==0&&(r-=o*Math.pow(256,e-n-1))}return r},nNe=t=>{for(var e=t.length,r=0,i=e-1;i>-1;i--){var n=t[i];n!==0&&(r+=n*Math.pow(256,e-i-1))}return r},K9=t=>(255^t)&255,U9=t=>(255^t)+1&255});var Cg=I((Ilt,G9)=>{"use strict";var dD=rd(),dg=require("path").posix,j9=H9(),CD=Symbol("slurp"),Hn=Symbol("type"),Y9=class{constructor(e,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Hn]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,i,n):e&&this.set(e)}decode(e,r,i,n){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=fc(e,r,100),this.mode=DA(e,r+100,8),this.uid=DA(e,r+108,8),this.gid=DA(e,r+116,8),this.size=DA(e,r+124,12),this.mtime=mD(e,r+136,12),this.cksum=DA(e,r+148,12),this[CD](i),this[CD](n,!0),this[Hn]=fc(e,r+156,1),this[Hn]===""&&(this[Hn]="0"),this[Hn]==="0"&&this.path.substr(-1)==="/"&&(this[Hn]="5"),this[Hn]==="5"&&(this.size=0),this.linkpath=fc(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=fc(e,r+265,32),this.gname=fc(e,r+297,32),this.devmaj=DA(e,r+329,8),this.devmin=DA(e,r+337,8),e[r+475]!==0){let o=fc(e,r+345,155);this.path=o+"/"+this.path}else{let o=fc(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=mD(e,r+476,12),this.ctime=mD(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=sNe(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=hc(e,r,100,s)||this.needPax,this.needPax=RA(e,r+100,8,this.mode)||this.needPax,this.needPax=RA(e,r+108,8,this.uid)||this.needPax,this.needPax=RA(e,r+116,8,this.gid)||this.needPax,this.needPax=RA(e,r+124,12,this.size)||this.needPax,this.needPax=ID(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[Hn].charCodeAt(0),this.needPax=hc(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=hc(e,r+265,32,this.uname)||this.needPax,this.needPax=hc(e,r+297,32,this.gname)||this.needPax,this.needPax=RA(e,r+329,8,this.devmaj)||this.needPax,this.needPax=RA(e,r+337,8,this.devmin)||this.needPax,this.needPax=hc(e,r+345,i,o)||this.needPax,e[r+475]!==0?this.needPax=hc(e,r+345,155,o)||this.needPax:(this.needPax=hc(e,r+345,130,o)||this.needPax,this.needPax=ID(e,r+476,12,this.atime)||this.needPax,this.needPax=ID(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let l=r;l{let r=100,i=t,n="",s,o=dg.parse(t).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=e?s=[i.substr(0,r-1),n,!0]:(i=dg.join(dg.basename(n),i),n=dg.dirname(n));while(n!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},fc=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),mD=(t,e,r)=>oNe(DA(t,e,r)),oNe=t=>t===null?null:new Date(t*1e3),DA=(t,e,r)=>t[e]&128?j9.parse(t.slice(e,e+r)):aNe(t,e,r),ANe=t=>isNaN(t)?null:t,aNe=(t,e,r)=>ANe(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),lNe={12:8589934591,8:2097151},RA=(t,e,r,i)=>i===null?!1:i>lNe[r]||i<0?(j9.encode(i,t.slice(e,e+r)),!0):(cNe(t,e,r,i),!1),cNe=(t,e,r,i)=>t.write(uNe(i,r),e,r,"ascii"),uNe=(t,e)=>gNe(Math.floor(t).toString(8),e),gNe=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",ID=(t,e,r,i)=>i===null?!1:RA(t,e,r,i.getTime()/1e3),fNe=new Array(156).join("\0"),hc=(t,e,r,i)=>i===null?!1:(t.write(i+fNe,e,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);G9.exports=Y9});var zw=I((Elt,q9)=>{"use strict";var hNe=Cg(),pNe=require("path"),Ww=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new hNe({path:("PaxHeader/"+pNe.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Ww.parse=(t,e,r)=>new Ww(dNe(CNe(t),e),r);var dNe=(t,e)=>e?Object.keys(t).reduce((r,i)=>(r[i]=t[i],r),e):t,CNe=t=>t.replace(/\n$/,"").split(` -`).reduce(mNe,Object.create(null)),mNe=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return t;let s=i.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};q9.exports=Ww});var Vw=I((ylt,J9)=>{"use strict";J9.exports=t=>class extends t{warn(e,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),i))}}});var yD=I((wlt,W9)=>{"use strict";var _w=["|","<",">","?",":"],ED=_w.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),INe=new Map(_w.map((t,e)=>[t,ED[e]])),ENe=new Map(ED.map((t,e)=>[t,_w[e]]));W9.exports={encode:t=>_w.reduce((e,r)=>e.split(r).join(INe.get(r)),t),decode:t=>ED.reduce((e,r)=>e.split(r).join(ENe.get(r)),t)}});var V9=I((Blt,z9)=>{"use strict";z9.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var xD=I((xlt,_9)=>{"use strict";var X9=hg(),Z9=zw(),$9=Cg(),Qlt=id(),bo=require("fs"),mg=require("path"),blt=rd(),yNe=16*1024*1024,e7=Symbol("process"),t7=Symbol("file"),r7=Symbol("directory"),wD=Symbol("symlink"),i7=Symbol("hardlink"),nd=Symbol("header"),Xw=Symbol("read"),BD=Symbol("lstat"),Zw=Symbol("onlstat"),QD=Symbol("onread"),bD=Symbol("onreadlink"),vD=Symbol("openfile"),SD=Symbol("onopenfile"),pc=Symbol("close"),$w=Symbol("mode"),n7=Vw(),wNe=yD(),s7=V9(),eB=n7(class extends X9{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||yNe,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&mg.win32.isAbsolute(e)){let n=mg.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=wNe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||mg.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Zw](this.statCache.get(this.absolute)):this[BD]()}[BD](){bo.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Zw](r)})}[Zw](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=BNe(e),this.emit("stat",e),this[e7]()}[e7](){switch(this.type){case"File":return this[t7]();case"Directory":return this[r7]();case"SymbolicLink":return this[wD]();default:return this.end()}}[$w](e){return s7(e,this.type==="Directory",this.portable)}[nd](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this[$w](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new Z9({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[r7](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[nd](),this.end()}[wD](){bo.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[bD](r)})}[bD](e){this.linkpath=e.replace(/\\/g,"/"),this[nd](),this.end()}[i7](e){this.type="Link",this.linkpath=mg.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[nd](),this.end()}[t7](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[i7](r)}this.linkCache.set(e,this.absolute)}if(this[nd](),this.stat.size===0)return this.end();this[vD]()}[vD](){bo.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[SD](r)})}[SD](e){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Xw](e,n,0,n.length,0,this.stat.size,r)}[Xw](e,r,i,n,s,o,a){bo.read(e,r,i,n,s,(l,c)=>{if(l)return this[pc](e,()=>this.emit("error",l));this[QD](e,r,i,n,s,o,a,c)})}[pc](e,r){bo.close(e,r)}[QD](e,r,i,n,s,o,a,l){if(l<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l===o)for(let u=l;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Xw](e,r,i,n,s,o,a)}}),o7=class extends eB{constructor(e,r){super(e,r)}[BD](){this[Zw](bo.lstatSync(this.absolute))}[wD](){this[bD](bo.readlinkSync(this.absolute))}[vD](){this[SD](bo.openSync(this.absolute,"r"))}[Xw](e,r,i,n,s,o,a){let l=!0;try{let c=bo.readSync(e,r,i,n,s);this[QD](e,r,i,n,s,o,a,c),l=!1}finally{if(l)try{this[pc](e,()=>{})}catch(c){}}}[pc](e,r){bo.closeSync(e),r()}},QNe=n7(class extends X9{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[$w](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(mg.isAbsolute(this.path)&&!this.preservePaths){let n=mg.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new Z9({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[$w](e){return s7(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});eB.Sync=o7;eB.Tar=QNe;var BNe=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";_9.exports=eB});var AB=I((Plt,a7)=>{"use strict";var kD=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},bNe=hg(),vNe=fD(),SNe=id(),PD=xD(),xNe=PD.Sync,kNe=PD.Tar,PNe=Rh(),A7=Buffer.alloc(1024),tB=Symbol("onStat"),rB=Symbol("ended"),vo=Symbol("queue"),Ig=Symbol("current"),dc=Symbol("process"),iB=Symbol("processing"),l7=Symbol("processJob"),So=Symbol("jobs"),DD=Symbol("jobDone"),nB=Symbol("addFSEntry"),c7=Symbol("addTarEntry"),RD=Symbol("stat"),FD=Symbol("readdir"),sB=Symbol("onreaddir"),oB=Symbol("pipe"),u7=Symbol("entry"),ND=Symbol("entryOpt"),LD=Symbol("writeEntryClass"),g7=Symbol("write"),TD=Symbol("ondrain"),aB=require("fs"),f7=require("path"),DNe=Vw(),MD=DNe(class extends bNe{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[LD]=PD,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new vNe.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[TD]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[TD]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[vo]=new PNe,this[So]=0,this.jobs=+e.jobs||4,this[iB]=!1,this[rB]=!1}[g7](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[rB]=!0,this[dc](),this}write(e){if(this[rB])throw new Error("write after end");return e instanceof SNe?this[c7](e):this[nB](e),this.flowing}[c7](e){let r=f7.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new kD(e.path,r,!1);i.entry=new kNe(e,this[ND](i)),i.entry.on("end",n=>this[DD](i)),this[So]+=1,this[vo].push(i)}this[dc]()}[nB](e){let r=f7.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[vo].push(new kD(e,r)),this[dc]()}[RD](e){e.pending=!0,this[So]+=1;let r=this.follow?"stat":"lstat";aB[r](e.absolute,(i,n)=>{e.pending=!1,this[So]-=1,i?this.emit("error",i):this[tB](e,n)})}[tB](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[dc]()}[FD](e){e.pending=!0,this[So]+=1,aB.readdir(e.absolute,(r,i)=>{if(e.pending=!1,this[So]-=1,r)return this.emit("error",r);this[sB](e,i)})}[sB](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[dc]()}[dc](){if(!this[iB]){this[iB]=!0;for(let e=this[vo].head;e!==null&&this[So]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[u7](e){this[So]+=1;try{return new this[LD](e.path,this[ND](e)).on("end",()=>this[DD](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[TD](){this[Ig]&&this[Ig].entry&&this[Ig].entry.resume()}[oB](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)});let r=e.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),h7=class extends MD{constructor(e){super(e);this[LD]=xNe}pause(){}resume(){}[RD](e){let r=this.follow?"statSync":"lstatSync";this[tB](e,aB[r](e.absolute))}[FD](e,r){this[sB](e,aB.readdirSync(e.absolute))}[oB](e){let r=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[g7](n)})}};MD.Sync=h7;a7.exports=MD});var bg=I(sd=>{"use strict";var RNe=hg(),FNe=require("events").EventEmitter,ls=require("fs"),lB=process.binding("fs"),Dlt=lB.writeBuffers,NNe=lB.FSReqWrap||lB.FSReqCallback,Eg=Symbol("_autoClose"),xo=Symbol("_close"),od=Symbol("_ended"),Jt=Symbol("_fd"),p7=Symbol("_finished"),Cc=Symbol("_flags"),OD=Symbol("_flush"),KD=Symbol("_handleChunk"),UD=Symbol("_makeBuf"),HD=Symbol("_mode"),cB=Symbol("_needDrain"),yg=Symbol("_onerror"),wg=Symbol("_onopen"),GD=Symbol("_onread"),mc=Symbol("_onwrite"),FA=Symbol("_open"),NA=Symbol("_path"),Ic=Symbol("_pos"),ko=Symbol("_queue"),Bg=Symbol("_read"),d7=Symbol("_readSize"),LA=Symbol("_reading"),uB=Symbol("_remain"),C7=Symbol("_size"),gB=Symbol("_write"),Qg=Symbol("_writing"),fB=Symbol("_defaultFlag"),jD=class extends RNe{constructor(e,r){if(r=r||{},super(r),this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Jt]=typeof r.fd=="number"?r.fd:null,this[NA]=e,this[d7]=r.readSize||16*1024*1024,this[LA]=!1,this[C7]=typeof r.size=="number"?r.size:Infinity,this[uB]=this[C7],this[Eg]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Jt]=="number"?this[Bg]():this[FA]()}get fd(){return this[Jt]}get path(){return this[NA]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[FA](){ls.open(this[NA],"r",(e,r)=>this[wg](e,r))}[wg](e,r){e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[Bg]())}[UD](){return Buffer.allocUnsafe(Math.min(this[d7],this[uB]))}[Bg](){if(!this[LA]){this[LA]=!0;let e=this[UD]();if(e.length===0)return process.nextTick(()=>this[GD](null,0,e));ls.read(this[Jt],e,0,e.length,null,(r,i,n)=>this[GD](r,i,n))}}[GD](e,r,i){this[LA]=!1,e?this[yg](e):this[KD](r,i)&&this[Bg]()}[xo](){this[Eg]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}[yg](e){this[LA]=!0,this[xo](),this.emit("error",e)}[KD](e,r){let i=!1;return this[uB]-=e,e>0&&(i=super.write(ethis[wg](e,r))}[wg](e,r){this[fB]&&this[Cc]==="r+"&&e&&e.code==="ENOENT"?(this[Cc]="w",this[FA]()):e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[OD]())}end(e,r){e&&this.write(e,r),this[od]=!0,!this[Qg]&&!this[ko].length&&typeof this[Jt]=="number"&&this[mc](null,0)}write(e,r){return typeof e=="string"&&(e=new Buffer(e,r)),this[od]?(this.emit("error",new Error("write() after end()")),!1):this[Jt]===null||this[Qg]||this[ko].length?(this[ko].push(e),this[cB]=!0,!1):(this[Qg]=!0,this[gB](e),!0)}[gB](e){ls.write(this[Jt],e,0,e.length,this[Ic],(r,i)=>this[mc](r,i))}[mc](e,r){e?this[yg](e):(this[Ic]!==null&&(this[Ic]+=r),this[ko].length?this[OD]():(this[Qg]=!1,this[od]&&!this[p7]?(this[p7]=!0,this[xo](),this.emit("finish")):this[cB]&&(this[cB]=!1,this.emit("drain"))))}[OD](){if(this[ko].length===0)this[od]&&this[mc](null,0);else if(this[ko].length===1)this[gB](this[ko].pop());else{let e=this[ko];this[ko]=[],LNe(this[Jt],e,this[Ic],(r,i)=>this[mc](r,i))}}[xo](){this[Eg]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}},I7=class extends YD{[FA](){let e;try{e=ls.openSync(this[NA],this[Cc],this[HD])}catch(r){if(this[fB]&&this[Cc]==="r+"&&r&&r.code==="ENOENT")return this[Cc]="w",this[FA]();throw r}this[wg](null,e)}[xo](){if(this[Eg]&&typeof this[Jt]=="number"){try{ls.closeSync(this[Jt])}catch(e){}this[Jt]=null,this.emit("close")}}[gB](e){try{this[mc](null,ls.writeSync(this[Jt],e,0,e.length,this[Ic]))}catch(r){this[mc](r,0)}}},LNe=(t,e,r,i)=>{let n=(o,a)=>i(o,a,e),s=new NNe;s.oncomplete=n,lB.writeBuffers(t,e,r,s)};sd.ReadStream=jD;sd.ReadStreamSync=m7;sd.WriteStream=YD;sd.WriteStreamSync=I7});var ld=I((Llt,E7)=>{"use strict";var TNe=Vw(),Flt=require("path"),MNe=Cg(),ONe=require("events"),KNe=Rh(),UNe=1024*1024,HNe=id(),y7=zw(),GNe=fD(),qD=Buffer.from([31,139]),cs=Symbol("state"),Ec=Symbol("writeEntry"),xa=Symbol("readEntry"),JD=Symbol("nextEntry"),w7=Symbol("processEntry"),us=Symbol("extendedHeader"),ad=Symbol("globalExtendedHeader"),TA=Symbol("meta"),B7=Symbol("emitMeta"),Ar=Symbol("buffer"),ka=Symbol("queue"),yc=Symbol("ended"),Q7=Symbol("emittedEnd"),wc=Symbol("emit"),Qn=Symbol("unzip"),hB=Symbol("consumeChunk"),pB=Symbol("consumeChunkSub"),WD=Symbol("consumeBody"),b7=Symbol("consumeMeta"),v7=Symbol("consumeHeader"),dB=Symbol("consuming"),zD=Symbol("bufferConcat"),VD=Symbol("maybeEnd"),Ad=Symbol("writing"),MA=Symbol("aborted"),CB=Symbol("onDone"),Bc=Symbol("sawValidEntry"),mB=Symbol("sawNullBlock"),IB=Symbol("sawEOF"),jNe=t=>!0;E7.exports=TNe(class extends ONe{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Bc]=null,this.on(CB,r=>{(this[cs]==="begin"||this[Bc]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(CB,e.ondone):this.on(CB,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||UNe,this.filter=typeof e.filter=="function"?e.filter:jNe,this.writable=!0,this.readable=!1,this[ka]=new KNe,this[Ar]=null,this[xa]=null,this[Ec]=null,this[cs]="begin",this[TA]="",this[us]=null,this[ad]=null,this[yc]=!1,this[Qn]=null,this[MA]=!1,this[mB]=!1,this[IB]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[v7](e,r){this[Bc]===null&&(this[Bc]=!1);let i;try{i=new MNe(e,r,this[us],this[ad])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[mB]?(this[IB]=!0,this[cs]==="begin"&&(this[cs]="header"),this[wc]("eof")):(this[mB]=!0,this[wc]("nullBlock"));else if(this[mB]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Ec]=new HNe(i,this[us],this[ad]);if(!this[Bc])if(s.remain){let o=()=>{s.invalid||(this[Bc]=!0)};s.on("end",o)}else this[Bc]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[wc]("ignoredEntry",s),this[cs]="ignore",s.resume()):s.size>0&&(this[TA]="",s.on("data",o=>this[TA]+=o),this[cs]="meta"):(this[us]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[wc]("ignoredEntry",s),this[cs]=s.remain?"ignore":"header",s.resume()):(s.remain?this[cs]="body":(this[cs]="header",s.end()),this[xa]?this[ka].push(s):(this[ka].push(s),this[JD]())))}}}[w7](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[xa]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[JD]()),r=!1)):(this[xa]=null,r=!1),r}[JD](){do;while(this[w7](this[ka].shift()));if(!this[ka].length){let e=this[xa];!e||e.flowing||e.size===e.remain?this[Ad]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[WD](e,r){let i=this[Ec],n=i.blockRemain,s=n>=e.length&&r===0?e:e.slice(r,r+n);return i.write(s),i.blockRemain||(this[cs]="header",this[Ec]=null,i.end()),s.length}[b7](e,r){let i=this[Ec],n=this[WD](e,r);return this[Ec]||this[B7](i),n}[wc](e,r,i){!this[ka].length&&!this[xa]?this.emit(e,r,i):this[ka].push([e,r,i])}[B7](e){switch(this[wc]("meta",this[TA]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[us]=y7.parse(this[TA],this[us],!1);break;case"GlobalExtendedHeader":this[ad]=y7.parse(this[TA],this[ad],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[us]=this[us]||Object.create(null),this[us].path=this[TA].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[us]=this[us]||Object.create(null),this[us].linkpath=this[TA].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[MA]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[MA])return;if(this[Qn]===null&&e){if(this[Ar]&&(e=Buffer.concat([this[Ar],e]),this[Ar]=null),e.lengththis[hB](s)),this[Qn].on("error",s=>this.abort(s)),this[Qn].on("end",s=>{this[yc]=!0,this[hB]()}),this[Ad]=!0;let n=this[Qn][i?"end":"write"](e);return this[Ad]=!1,n}}this[Ad]=!0,this[Qn]?this[Qn].write(e):this[hB](e),this[Ad]=!1;let r=this[ka].length?!1:this[xa]?this[xa].flowing:!0;return!r&&!this[ka].length&&this[xa].once("drain",i=>this.emit("drain")),r}[zD](e){e&&!this[MA]&&(this[Ar]=this[Ar]?Buffer.concat([this[Ar],e]):e)}[VD](){if(this[yc]&&!this[Q7]&&!this[MA]&&!this[dB]){this[Q7]=!0;let e=this[Ec];if(e&&e.blockRemain){let r=this[Ar]?this[Ar].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Ar]&&e.write(this[Ar]),e.end()}this[wc](CB)}}[hB](e){if(this[dB])this[zD](e);else if(!e&&!this[Ar])this[VD]();else{if(this[dB]=!0,this[Ar]){this[zD](e);let r=this[Ar];this[Ar]=null,this[pB](r)}else this[pB](e);for(;this[Ar]&&this[Ar].length>=512&&!this[MA]&&!this[IB];){let r=this[Ar];this[Ar]=null,this[pB](r)}this[dB]=!1}(!this[Ar]||this[yc])&&this[VD]()}[pB](e){let r=0,i=e.length;for(;r+512<=i&&!this[MA]&&!this[IB];)switch(this[cs]){case"begin":case"header":this[v7](e,r),r+=512;break;case"ignore":case"body":r+=this[WD](e,r);break;case"meta":r+=this[b7](e,r);break;default:throw new Error("invalid state: "+this[cs])}r{"use strict";var YNe=fg(),x7=ld(),vg=require("fs"),qNe=bg(),k7=require("path"),Tlt=S7.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=YNe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&WNe(i,e),i.noResume||JNe(i),i.file&&i.sync?zNe(i):i.file?VNe(i,r):P7(i)},JNe=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},WNe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||k7.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(k7.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},zNe=t=>{let e=P7(t),r=t.file,i=!0,n;try{let s=vg.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new x7(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),vg.stat(n,(l,c)=>{if(l)a(l);else{let u=new qNe.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},P7=t=>new x7(t)});var T7=I((Ult,D7)=>{"use strict";var _Ne=fg(),yB=AB(),Olt=require("fs"),R7=bg(),F7=EB(),N7=require("path"),Klt=D7.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=_Ne(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?XNe(i,e):i.file?ZNe(i,e,r):i.sync?$Ne(i,e):eLe(i,e)},XNe=(t,e)=>{let r=new yB.Sync(t),i=new R7.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(i),L7(r,e)},ZNe=(t,e,r)=>{let i=new yB(t),n=new R7.WriteStream(t.file,{mode:t.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return _D(i,e),r?s.then(r,r):s},L7=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?F7({file:N7.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},_D=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return F7({file:N7.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>_D(t,e));t.add(r)}t.end()},$Ne=(t,e)=>{let r=new yB.Sync(t);return L7(r,e),r},eLe=(t,e)=>{let r=new yB(t);return _D(r,e),r}});var XD=I((jlt,M7)=>{"use strict";var tLe=fg(),O7=AB(),Hlt=ld(),gs=require("fs"),K7=bg(),U7=EB(),H7=require("path"),G7=Cg(),Glt=M7.exports=(t,e,r)=>{let i=tLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?rLe(i,e):iLe(i,e,r)},rLe=(t,e)=>{let r=new O7.Sync(t),i=!0,n,s;try{try{n=gs.openSync(t.file,"r+")}catch(l){if(l.code==="ENOENT")n=gs.openSync(t.file,"w+");else throw l}let o=gs.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(l.path,l.mtime)}i=!1,nLe(t,r,s,n,e)}finally{if(i)try{gs.closeSync(n)}catch(o){}}},nLe=(t,e,r,i,n)=>{let s=new K7.WriteStreamSync(t.file,{fd:i,start:r});e.pipe(s),sLe(e,n)},iLe=(t,e,r)=>{e=Array.from(e);let i=new O7(t),n=(o,a,l)=>{let c=(p,d)=>{p?gs.close(o,m=>l(p)):l(null,d)},u=0;if(a===0)return c(null,0);let g=0,f=Buffer.alloc(512),h=(p,d)=>{if(p)return c(p);if(g+=d,g<512&&d)return gs.read(o,f,g,f.length-g,u+g,h);if(u===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(g<512)return c(null,u);let m=new G7(f);if(!m.cksumValid)return c(null,u);let E=512*Math.ceil(m.size/512);if(u+E+512>a||(u+=E+512,u>=a))return c(null,u);t.mtimeCache&&t.mtimeCache.set(m.path,m.mtime),g=0,gs.read(o,f,0,512,u,h)};gs.read(o,f,0,512,u,h)},s=new Promise((o,a)=>{i.on("error",a);let l="r+",c=(u,g)=>{if(u&&u.code==="ENOENT"&&l==="r+")return l="w+",gs.open(t.file,l,c);if(u)return a(u);gs.fstat(g,(f,h)=>{if(f)return a(f);n(g,h.size,(p,d)=>{if(p)return a(p);let m=new K7.WriteStream(t.file,{fd:g,start:d});i.pipe(m),m.on("error",a),m.on("close",o),j7(i,e)})})};gs.open(t.file,l,c)});return r?s.then(r,r):s},sLe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?U7({file:H7.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},j7=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return U7({file:H7.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>j7(t,e));t.add(r)}t.end()}});var q7=I((qlt,Y7)=>{"use strict";var oLe=fg(),aLe=XD(),Ylt=Y7.exports=(t,e,r)=>{let i=oLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),ALe(i),aLe(i,e,r)},ALe=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,i)=>e(r,i)&&!(t.mtimeCache.get(r)>i.mtime):(r,i)=>!(t.mtimeCache.get(r)>i.mtime)}});var z7=I((Jlt,J7)=>{var{promisify:W7}=require("util"),OA=require("fs"),lLe=t=>{if(!t)t={mode:511,fs:OA};else if(typeof t=="object")t=P({mode:511,fs:OA},t);else if(typeof t=="number")t={mode:t,fs:OA};else if(typeof t=="string")t={mode:parseInt(t,8),fs:OA};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||OA.mkdir,t.mkdirAsync=W7(t.mkdir),t.stat=t.stat||t.fs.stat||OA.stat,t.statAsync=W7(t.stat),t.statSync=t.statSync||t.fs.statSync||OA.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||OA.mkdirSync,t};J7.exports=lLe});var _7=I((Wlt,V7)=>{var cLe=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:uLe,parse:gLe}=require("path"),fLe=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=uLe(t),cLe==="win32"){let e=/[*|"<>?:]/,{root:r}=gLe(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};V7.exports=fLe});var tV=I((zlt,X7)=>{var{dirname:Z7}=require("path"),$7=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?$7(t,Z7(e),e):void 0),eV=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?eV(t,Z7(e),e):void 0}};X7.exports={findMade:$7,findMadeSync:eV}});var eR=I((Vlt,rV)=>{var{dirname:iV}=require("path"),ZD=(t,e,r)=>{e.recursive=!1;let i=iV(t);return i===t?e.mkdirAsync(t,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(t,e).then(()=>r||t,n=>{if(n.code==="ENOENT")return ZD(i,e).then(s=>ZD(t,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},$D=(t,e,r)=>{let i=iV(t);if(e.recursive=!1,i===t)try{return e.mkdirSync(t,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(t,e),r||t}catch(n){if(n.code==="ENOENT")return $D(t,e,$D(i,e,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(t).isDirectory())throw n}catch(s){throw n}}};rV.exports={mkdirpManual:ZD,mkdirpManualSync:$D}});var oV=I((_lt,nV)=>{var{dirname:sV}=require("path"),{findMade:hLe,findMadeSync:pLe}=tV(),{mkdirpManual:dLe,mkdirpManualSync:CLe}=eR(),mLe=(t,e)=>(e.recursive=!0,sV(t)===t?e.mkdirAsync(t,e):hLe(e,t).then(i=>e.mkdirAsync(t,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return dLe(t,e);throw n}))),ILe=(t,e)=>{if(e.recursive=!0,sV(t)===t)return e.mkdirSync(t,e);let i=pLe(e,t);try{return e.mkdirSync(t,e),i}catch(n){if(n.code==="ENOENT")return CLe(t,e);throw n}};nV.exports={mkdirpNative:mLe,mkdirpNativeSync:ILe}});var cV=I((Xlt,aV)=>{var AV=require("fs"),ELe=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,tR=ELe.replace(/^v/,"").split("."),lV=+tR[0]>10||+tR[0]==10&&+tR[1]>=12,yLe=lV?t=>t.mkdir===AV.mkdir:()=>!1,wLe=lV?t=>t.mkdirSync===AV.mkdirSync:()=>!1;aV.exports={useNative:yLe,useNativeSync:wLe}});var dV=I((Zlt,uV)=>{var Sg=z7(),xg=_7(),{mkdirpNative:gV,mkdirpNativeSync:fV}=oV(),{mkdirpManual:hV,mkdirpManualSync:pV}=eR(),{useNative:BLe,useNativeSync:QLe}=cV(),kg=(t,e)=>(t=xg(t),e=Sg(e),BLe(e)?gV(t,e):hV(t,e)),bLe=(t,e)=>(t=xg(t),e=Sg(e),QLe(e)?fV(t,e):pV(t,e));kg.sync=bLe;kg.native=(t,e)=>gV(xg(t),Sg(e));kg.manual=(t,e)=>hV(xg(t),Sg(e));kg.nativeSync=(t,e)=>fV(xg(t),Sg(e));kg.manualSync=(t,e)=>pV(xg(t),Sg(e));uV.exports=kg});var BV=I(($lt,CV)=>{"use strict";var fs=require("fs"),Qc=require("path"),vLe=fs.lchown?"lchown":"chown",SLe=fs.lchownSync?"lchownSync":"chownSync",mV=fs.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),IV=(t,e,r)=>{try{return fs[SLe](t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},xLe=(t,e,r)=>{try{return fs.chownSync(t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},kLe=mV?(t,e,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):fs.chown(t,e,r,i)}:(t,e,r,i)=>i,rR=mV?(t,e,r)=>{try{return IV(t,e,r)}catch(i){if(i.code!=="EISDIR")throw i;xLe(t,e,r)}}:(t,e,r)=>IV(t,e,r),PLe=process.version,EV=(t,e,r)=>fs.readdir(t,e,r),DLe=(t,e)=>fs.readdirSync(t,e);/^v4\./.test(PLe)&&(EV=(t,e,r)=>fs.readdir(t,r));var wB=(t,e,r,i)=>{fs[vLe](t,e,r,kLe(t,e,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},yV=(t,e,r,i,n)=>{if(typeof e=="string")return fs.lstat(Qc.resolve(t,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,yV(t,o,r,i,n)});if(e.isDirectory())iR(Qc.resolve(t,e.name),r,i,s=>{if(s)return n(s);let o=Qc.resolve(t,e.name);wB(o,r,i,n)});else{let s=Qc.resolve(t,e.name);wB(s,r,i,n)}},iR=(t,e,r,i)=>{EV(t,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return wB(t,e,r,i);let o=s.length,a=null,l=c=>{if(!a){if(c)return i(a=c);if(--o==0)return wB(t,e,r,i)}};s.forEach(c=>yV(t,c,e,r,l))})},RLe=(t,e,r,i)=>{if(typeof e=="string")try{let n=fs.lstatSync(Qc.resolve(t,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&wV(Qc.resolve(t,e.name),r,i),rR(Qc.resolve(t,e.name),r,i)},wV=(t,e,r)=>{let i;try{i=DLe(t,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return rR(t,e,r);throw n}return i&&i.length&&i.forEach(n=>RLe(t,n,e,r)),rR(t,e,r)};CV.exports=iR;iR.sync=wV});var SV=I((rct,nR)=>{"use strict";var QV=dV(),hs=require("fs"),BB=require("path"),bV=BV(),sR=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},cd=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}},ect=nR.exports=(t,e,r)=>{let i=e.umask,n=e.mode|448,s=(n&i)!=0,o=e.uid,a=e.gid,l=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,u=e.unlink,g=e.cache,f=e.cwd,h=(m,E)=>{m?r(m):(g.set(t,!0),E&&l?bV(E,o,a,B=>h(B)):s?hs.chmod(t,n,r):r())};if(g&&g.get(t)===!0)return h();if(t===f)return hs.stat(t,(m,E)=>{(m||!E.isDirectory())&&(m=new cd(t,m&&m.code||"ENOTDIR")),h(m)});if(c)return QV(t,{mode:n}).then(m=>h(null,m),h);let d=BB.relative(f,t).split(/\/|\\/);QB(f,d,n,g,u,f,null,h)},QB=(t,e,r,i,n,s,o,a)=>{if(!e.length)return a(null,o);let l=e.shift(),c=t+"/"+l;if(i.get(c))return QB(c,e,r,i,n,s,o,a);hs.mkdir(c,r,vV(c,e,r,i,n,s,o,a))},vV=(t,e,r,i,n,s,o,a)=>l=>{if(l){if(l.path&&BB.dirname(l.path)===s&&(l.code==="ENOTDIR"||l.code==="ENOENT"))return a(new cd(s,l.code));hs.lstat(t,(c,u)=>{if(c)a(c);else if(u.isDirectory())QB(t,e,r,i,n,s,o,a);else if(n)hs.unlink(t,g=>{if(g)return a(g);hs.mkdir(t,r,vV(t,e,r,i,n,s,o,a))});else{if(u.isSymbolicLink())return a(new sR(t,t+"/"+e.join("/")));a(l)}})}else o=o||t,QB(t,e,r,i,n,s,o,a)},tct=nR.exports.sync=(t,e)=>{let r=e.umask,i=e.mode|448,n=(i&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),l=e.preserve,c=e.unlink,u=e.cache,g=e.cwd,f=m=>{u.set(t,!0),m&&a&&bV.sync(m,s,o),n&&hs.chmodSync(t,i)};if(u&&u.get(t)===!0)return f();if(t===g){let m=!1,E="ENOTDIR";try{m=hs.statSync(t).isDirectory()}catch(B){E=B.code}finally{if(!m)throw new cd(t,E)}f();return}if(l)return f(QV.sync(t,i));let p=BB.relative(g,t).split(/\/|\\/),d=null;for(let m=p.shift(),E=g;m&&(E+="/"+m);m=p.shift())if(!u.get(E))try{hs.mkdirSync(E,i),d=d||E,u.set(E,!0)}catch(B){if(B.path&&BB.dirname(B.path)===g&&(B.code==="ENOTDIR"||B.code==="ENOENT"))return new cd(g,B.code);let b=hs.lstatSync(E);if(b.isDirectory()){u.set(E,!0);continue}else if(c){hs.unlinkSync(E),hs.mkdirSync(E,i),d=d||E,u.set(E,!0);continue}else if(b.isSymbolicLink())return new sR(E,E+"/"+p.join("/"))}return f(d)}});var PV=I((ict,xV)=>{var kV=require("assert");xV.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\\/]/).slice(0,-1).reduce((g,f)=>g.length?g.concat(r(g[g.length-1],f)):[f],[]),n=new Set,s=u=>{let g=e.get(u);if(!g)throw new Error("function does not have any path reservations");return{paths:g.paths.map(f=>t.get(f)),dirs:[...g.dirs].map(f=>t.get(f))}},o=u=>{let{paths:g,dirs:f}=s(u);return g.every(h=>h[0]===u)&&f.every(h=>h[0]instanceof Set&&h[0].has(u))},a=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>l(u)),!0),l=u=>{if(!n.has(u))return!1;let{paths:g,dirs:f}=e.get(u),h=new Set;return g.forEach(p=>{let d=t.get(p);kV.equal(d[0],u),d.length===1?t.delete(p):(d.shift(),typeof d[0]=="function"?h.add(d[0]):d[0].forEach(m=>h.add(m)))}),f.forEach(p=>{let d=t.get(p);kV(d[0]instanceof Set),d[0].size===1&&d.length===1?t.delete(p):d[0].size===1?(d.shift(),h.add(d[0])):d[0].delete(u)}),n.delete(u),h.forEach(p=>a(p)),!0};return{check:o,reserve:(u,g)=>{let f=new Set(u.map(h=>i(h)).reduce((h,p)=>h.concat(p)));return e.set(g,{dirs:f,paths:u}),u.forEach(h=>{let p=t.get(h);p?p.push(g):t.set(h,[g])}),f.forEach(h=>{let p=t.get(h);p?p[p.length-1]instanceof Set?p[p.length-1].add(g):p.push(new Set([g])):t.set(h,[new Set([g])])}),a(g)}}}});var FV=I((nct,DV)=>{var FLe=process.env.__FAKE_PLATFORM__||process.platform,NLe=FLe==="win32",LLe=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:TLe,O_TRUNC:MLe,O_WRONLY:OLe,UV_FS_O_FILEMAP:RV=0}=LLe.constants,KLe=NLe&&!!RV,ULe=512*1024,HLe=RV|MLe|TLe|OLe;DV.exports=KLe?t=>t"w"});var hR=I((Act,NV)=>{"use strict";var GLe=require("assert"),sct=require("events").EventEmitter,jLe=ld(),Ut=require("fs"),YLe=bg(),Pa=require("path"),oR=SV(),oct=oR.sync,LV=yD(),qLe=PV(),TV=Symbol("onEntry"),aR=Symbol("checkFs"),MV=Symbol("checkFs2"),AR=Symbol("isReusable"),Da=Symbol("makeFs"),lR=Symbol("file"),cR=Symbol("directory"),bB=Symbol("link"),OV=Symbol("symlink"),KV=Symbol("hardlink"),UV=Symbol("unsupported"),act=Symbol("unknown"),HV=Symbol("checkPath"),Pg=Symbol("mkdir"),nn=Symbol("onError"),vB=Symbol("pending"),GV=Symbol("pend"),Dg=Symbol("unpend"),uR=Symbol("ended"),gR=Symbol("maybeClose"),fR=Symbol("skip"),ud=Symbol("doChown"),gd=Symbol("uid"),fd=Symbol("gid"),jV=require("crypto"),YV=FV(),SB=()=>{throw new Error("sync function called cb somehow?!?")},JLe=(t,e)=>{if(process.platform!=="win32")return Ut.unlink(t,e);let r=t+".DELETE."+jV.randomBytes(16).toString("hex");Ut.rename(t,r,i=>{if(i)return e(i);Ut.unlink(r,e)})},WLe=t=>{if(process.platform!=="win32")return Ut.unlinkSync(t);let e=t+".DELETE."+jV.randomBytes(16).toString("hex");Ut.renameSync(t,e),Ut.unlinkSync(e)},qV=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,xB=class extends jLe{constructor(e){if(e||(e={}),e.ondone=r=>{this[uR]=!0,this[gR]()},super(e),this.reservations=qLe(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[vB]=0,this[uR]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Pa.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[TV](r))}warn(e,r,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,r,i)}[gR](){this[uR]&&this[vB]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[HV](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Pa.win32.isAbsolute(r)){let i=Pa.win32.parse(r);e.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Pa.win32.parse(e.path);e.path=r.root===""?LV.encode(e.path):r.root+LV.encode(e.path.substr(r.root.length))}return Pa.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Pa.resolve(this.cwd,e.path),!0}[TV](e){if(!this[HV](e))return e.resume();switch(GLe.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[aR](e);case"CharacterDevice":case"BlockDevice":case"FIFO":return this[UV](e)}}[nn](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[Dg](),r.resume())}[Pg](e,r,i){oR(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r},i)}[ud](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[gd](e){return qV(this.uid,e.uid,this.processUid)}[fd](e){return qV(this.gid,e.gid,this.processGid)}[lR](e,r){let i=e.mode&4095||this.fmode,n=new YLe.WriteStream(e.absolute,{flags:YV(e.size),mode:i,autoClose:!1});n.on("error",l=>this[nn](l,e));let s=1,o=l=>{if(l)return this[nn](l,e);--s==0&&Ut.close(n.fd,c=>{r(),c?this[nn](c,e):this[Dg]()})};n.on("finish",l=>{let c=e.absolute,u=n.fd;if(e.mtime&&!this.noMtime){s++;let g=e.atime||new Date,f=e.mtime;Ut.futimes(u,g,f,h=>h?Ut.utimes(c,g,f,p=>o(p&&h)):o())}if(this[ud](e)){s++;let g=this[gd](e),f=this[fd](e);Ut.fchown(u,g,f,h=>h?Ut.chown(c,g,f,p=>o(p&&h)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.pipe(n)}[cR](e,r){let i=e.mode&4095||this.dmode;this[Pg](e.absolute,i,n=>{if(n)return r(),this[nn](n,e);let s=1,o=a=>{--s==0&&(r(),this[Dg](),e.resume())};e.mtime&&!this.noMtime&&(s++,Ut.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[ud](e)&&(s++,Ut.chown(e.absolute,this[gd](e),this[fd](e),o)),o()})}[UV](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[OV](e,r){this[bB](e,e.linkpath,"symlink",r)}[KV](e,r){this[bB](e,Pa.resolve(this.cwd,e.linkpath),"link",r)}[GV](){this[vB]++}[Dg](){this[vB]--,this[gR]()}[fR](e){this[Dg](),e.resume()}[AR](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[aR](e){this[GV]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,i=>this[MV](e,i))}[MV](e,r){this[Pg](Pa.dirname(e.absolute),this.dmode,i=>{if(i)return r(),this[nn](i,e);Ut.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[fR](e),r()):n||this[AR](e,s)?this[Da](null,e,r):s.isDirectory()?e.type==="Directory"?!e.mode||(s.mode&4095)===e.mode?this[Da](null,e,r):Ut.chmod(e.absolute,e.mode,o=>this[Da](o,e,r)):Ut.rmdir(e.absolute,o=>this[Da](o,e,r)):JLe(e.absolute,o=>this[Da](o,e,r))})})}[Da](e,r,i){if(e)return this[nn](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[lR](r,i);case"Link":return this[KV](r,i);case"SymbolicLink":return this[OV](r,i);case"Directory":case"GNUDumpDir":return this[cR](r,i)}}[bB](e,r,i,n){Ut[i](r,e.absolute,s=>{if(s)return this[nn](s,e);n(),this[Dg](),e.resume()})}},JV=class extends xB{constructor(e){super(e)}[aR](e){let r=this[Pg](Pa.dirname(e.absolute),this.dmode,SB);if(r)return this[nn](r,e);try{let i=Ut.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[fR](e);if(this[AR](e,i))return this[Da](null,e,SB);try{return i.isDirectory()?e.type==="Directory"?e.mode&&(i.mode&4095)!==e.mode&&Ut.chmodSync(e.absolute,e.mode):Ut.rmdirSync(e.absolute):WLe(e.absolute),this[Da](null,e,SB)}catch(n){return this[nn](n,e)}}catch(i){return this[Da](null,e,SB)}}[lR](e,r){let i=e.mode&4095||this.fmode,n=l=>{let c;try{Ut.closeSync(o)}catch(u){c=u}(l||c)&&this[nn](l||c,e)},s,o;try{o=Ut.openSync(e.absolute,YV(e.size),i)}catch(l){return n(l)}let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.on("data",l=>{try{Ut.writeSync(o,l,0,l.length)}catch(c){n(c)}}),a.on("end",l=>{let c=null;if(e.mtime&&!this.noMtime){let u=e.atime||new Date,g=e.mtime;try{Ut.futimesSync(o,u,g)}catch(f){try{Ut.utimesSync(e.absolute,u,g)}catch(h){c=f}}}if(this[ud](e)){let u=this[gd](e),g=this[fd](e);try{Ut.fchownSync(o,u,g)}catch(f){try{Ut.chownSync(e.absolute,u,g)}catch(h){c=c||f}}}n(c)})}[cR](e,r){let i=e.mode&4095||this.dmode,n=this[Pg](e.absolute,i);if(n)return this[nn](n,e);if(e.mtime&&!this.noMtime)try{Ut.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[ud](e))try{Ut.chownSync(e.absolute,this[gd](e),this[fd](e))}catch(s){}e.resume()}[Pg](e,r){try{return oR.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[bB](e,r,i,n){try{Ut[i+"Sync"](r,e.absolute),e.resume()}catch(s){return this[nn](s,e)}}};xB.Sync=JV;NV.exports=xB});var XV=I((cct,WV)=>{"use strict";var zLe=fg(),kB=hR(),zV=require("fs"),VV=bg(),_V=require("path"),lct=WV.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=zLe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&VLe(i,e),i.file&&i.sync?_Le(i):i.file?XLe(i,r):i.sync?ZLe(i):$Le(i)},VLe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||_V.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(_V.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},_Le=t=>{let e=new kB.Sync(t),r=t.file,i=!0,n,s=zV.statSync(r),o=t.maxReadSize||16*1024*1024;new VV.ReadStreamSync(r,{readSize:o,size:s.size}).pipe(e)},XLe=(t,e)=>{let r=new kB(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),zV.stat(n,(l,c)=>{if(l)a(l);else{let u=new VV.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},ZLe=t=>new kB.Sync(t),$Le=t=>new kB(t)});var ZV=I($r=>{"use strict";$r.c=$r.create=T7();$r.r=$r.replace=XD();$r.t=$r.list=EB();$r.u=$r.update=q7();$r.x=$r.extract=XV();$r.Pack=AB();$r.Unpack=hR();$r.Parse=ld();$r.ReadEntry=id();$r.WriteEntry=xD();$r.Header=Cg();$r.Pax=zw();$r.types=rd()});var e_=I((gct,pR)=>{"use strict";var eTe=Object.prototype.hasOwnProperty,sn="~";function hd(){}Object.create&&(hd.prototype=Object.create(null),new hd().__proto__||(sn=!1));function tTe(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function $V(t,e,r,i,n){if(typeof r!="function")throw new TypeError("The listener must be a function");var s=new tTe(r,i||t,n),o=sn?sn+e:e;return t._events[o]?t._events[o].fn?t._events[o]=[t._events[o],s]:t._events[o].push(s):(t._events[o]=s,t._eventsCount++),t}function PB(t,e){--t._eventsCount==0?t._events=new hd:delete t._events[e]}function Ti(){this._events=new hd,this._eventsCount=0}Ti.prototype.eventNames=function(){var e=[],r,i;if(this._eventsCount===0)return e;for(i in r=this._events)eTe.call(r,i)&&e.push(sn?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(r)):e};Ti.prototype.listeners=function(e){var r=sn?sn+e:e,i=this._events[r];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,s=i.length,o=new Array(s);n{"use strict";t_.exports=(t,e)=>(e=e||(()=>{}),t.then(r=>new Promise(i=>{i(e())}).then(()=>r),r=>new Promise(i=>{i(e())}).then(()=>{throw r})))});var n_=I((hct,DB)=>{"use strict";var rTe=r_(),dR=class extends Error{constructor(e){super(e);this.name="TimeoutError"}},i_=(t,e,r)=>new Promise((i,n)=>{if(typeof e!="number"||e<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(e===Infinity){i(t);return}let s=setTimeout(()=>{if(typeof r=="function"){try{i(r())}catch(l){n(l)}return}let o=typeof r=="string"?r:`Promise timed out after ${e} milliseconds`,a=r instanceof Error?r:new dR(o);typeof t.cancel=="function"&&t.cancel(),n(a)},e);rTe(t.then(i,n),()=>{clearTimeout(s)})});DB.exports=i_;DB.exports.default=i_;DB.exports.TimeoutError=dR});var s_=I(CR=>{"use strict";Object.defineProperty(CR,"__esModule",{value:!0});function iTe(t,e,r){let i=0,n=t.length;for(;n>0;){let s=n/2|0,o=i+s;r(t[o],e)<=0?(i=++o,n-=s+1):n=s}return i}CR.default=iTe});var a_=I(mR=>{"use strict";Object.defineProperty(mR,"__esModule",{value:!0});var nTe=s_(),o_=class{constructor(){this._queue=[]}enqueue(e,r){r=Object.assign({priority:0},r);let i={priority:r.priority,run:e};if(this.size&&this._queue[this.size-1].priority>=r.priority){this._queue.push(i);return}let n=nTe.default(this._queue,i,(s,o)=>o.priority-s.priority);this._queue.splice(n,0,i)}dequeue(){let e=this._queue.shift();return e==null?void 0:e.run}filter(e){return this._queue.filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return this._queue.length}};mR.default=o_});var c_=I(IR=>{"use strict";Object.defineProperty(IR,"__esModule",{value:!0});var sTe=e_(),A_=n_(),oTe=a_(),RB=()=>{},aTe=new A_.TimeoutError,l_=class extends sTe{constructor(e){var r,i,n,s;super();if(this._intervalCount=0,this._intervalEnd=0,this._pendingCount=0,this._resolveEmpty=RB,this._resolveIdle=RB,e=Object.assign({carryoverConcurrencyCount:!1,intervalCap:Infinity,interval:0,concurrency:Infinity,autoStart:!0,queueClass:oTe.default},e),!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(i=(r=e.intervalCap)===null||r===void 0?void 0:r.toString())!==null&&i!==void 0?i:""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(s=(n=e.interval)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""}\` (${typeof e.interval})`);this._carryoverConcurrencyCount=e.carryoverConcurrencyCount,this._isIntervalIgnored=e.intervalCap===Infinity||e.interval===0,this._intervalCap=e.intervalCap,this._interval=e.interval,this._queue=new e.queueClass,this._queueClass=e.queueClass,this.concurrency=e.concurrency,this._timeout=e.timeout,this._throwOnTimeout=e.throwOnTimeout===!0,this._isPaused=e.autoStart===!1}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},r)),!0}return!1}_tryToStartAnother(){if(this._queue.size===0)return this._intervalId&&clearInterval(this._intervalId),this._intervalId=void 0,this._resolvePromises(),!1;if(!this._isPaused){let e=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){let r=this._queue.dequeue();return r?(this.emit("active"),r(),e&&this._initializeIntervalIfNeeded(),!0):!1}}return!1}_initializeIntervalIfNeeded(){this._isIntervalIgnored||this._intervalId!==void 0||(this._intervalId=setInterval(()=>{this._onInterval()},this._interval),this._intervalEnd=Date.now()+this._interval)}_onInterval(){this._intervalCount===0&&this._pendingCount===0&&this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0),this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0,this._processQueue()}_processQueue(){for(;this._tryToStartAnother(););}get concurrency(){return this._concurrency}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this._concurrency=e,this._processQueue()}async add(e,r={}){return new Promise((i,n)=>{let s=async()=>{this._pendingCount++,this._intervalCount++;try{let o=this._timeout===void 0&&r.timeout===void 0?e():A_.default(Promise.resolve(e()),r.timeout===void 0?this._timeout:r.timeout,()=>{(r.throwOnTimeout===void 0?this._throwOnTimeout:r.throwOnTimeout)&&n(aTe)});i(await o)}catch(o){n(o)}this._next()};this._queue.enqueue(s,r),this._tryToStartAnother(),this.emit("add")})}async addAll(e,r){return Promise.all(e.map(async i=>this.add(i,r)))}start(){return this._isPaused?(this._isPaused=!1,this._processQueue(),this):this}pause(){this._isPaused=!0}clear(){this._queue=new this._queueClass}async onEmpty(){if(this._queue.size!==0)return new Promise(e=>{let r=this._resolveEmpty;this._resolveEmpty=()=>{r(),e()}})}async onIdle(){if(!(this._pendingCount===0&&this._queue.size===0))return new Promise(e=>{let r=this._resolveIdle;this._resolveIdle=()=>{r(),e()}})}get size(){return this._queue.size}sizeBy(e){return this._queue.filter(e).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(e){this._timeout=e}};IR.default=l_});var p_=I((Ict,h_)=>{var yR;h_.exports.getContent=()=>(typeof yR=="undefined"&&(yR=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),yR)});var y_=I((wR,E_)=>{(function(t,e){typeof wR=="object"?E_.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(wR,function(){function t(n,s){var o=s?"\u2514":"\u251C";return n?o+="\u2500 ":o+="\u2500\u2500\u2510",o}function e(n,s){var o=[];for(var a in n)!n.hasOwnProperty(a)||s&&typeof n[a]=="function"||o.push(a);return o}function r(n,s,o,a,l,c,u){var g="",f=0,h,p,d=a.slice(0);if(d.push([s,o])&&a.length>0&&(a.forEach(function(E,B){B>0&&(g+=(E[1]?" ":"\u2502")+" "),!p&&E[0]===s&&(p=!0)}),g+=t(n,o)+n,l&&(typeof s!="object"||s instanceof Date)&&(g+=": "+s),p&&(g+=" (circular ref.)"),u(g)),!p&&typeof s=="object"){var m=e(s,c);m.forEach(function(E){h=++f===m.length,r(E,s[E],h,d,l,c,u)})}}var i={};return i.asLines=function(n,s,o,a){var l=typeof o!="function"?o:!1;r(".",n,!1,[],s,l,a||o)},i.asTree=function(n,s,o){var a="";return r(".",n,!1,[],s,o,function(l){a+=l+` -`}),a},i})});var x_=I((Uct,bR)=>{"use strict";var pTe=t=>{let e=!1,r=!1,i=!1;for(let n=0;n{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(t)?t=t.map(n=>n.trim()).filter(n=>n.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=pTe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),r(t))};bR.exports=S_;bR.exports.default=S_});var Na=I(TR=>{"use strict";Object.defineProperty(TR,"__esModule",{value:!0});TR.default=L_;function L_(){}L_.prototype={diff:function(e,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(d){return n?(setTimeout(function(){n(void 0,d)},0),!0):d}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var a=r.length,l=e.length,c=1,u=a+l,g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],r,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(r),count:r.length}]);function h(){for(var d=-1*c;d<=c;d+=2){var m=void 0,E=g[d-1],B=g[d+1],b=(B?B.newPos:0)-d;E&&(g[d-1]=void 0);var R=E&&E.newPos+1=a&&b+1>=l)return o(yTe(s,m.components,r,e,s.useLongestToken));g[d]=m}c++}if(n)(function d(){setTimeout(function(){if(c>u)return n();h()||d()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,r,i){var n=e[e.length-1];n&&n.added===r&&n.removed===i?e[e.length-1]={count:n.count+1,added:r,removed:i}:e.push({count:1,added:r,removed:i})},extractCommon:function(e,r,i,n){for(var s=r.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1h.length?d:h}),c.value=t.join(u)}else c.value=t.join(r.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&t.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function wTe(t){return{newPos:t.newPos,components:t.components.slice(0)}}});var M_=I(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});Cd.diffChars=BTe;Cd.characterDiff=void 0;var bTe=QTe(Na());function QTe(t){return t&&t.__esModule?t:{default:t}}var T_=new bTe.default;Cd.characterDiff=T_;function BTe(t,e,r){return T_.diff(t,e,r)}});var OR=I(MR=>{"use strict";Object.defineProperty(MR,"__esModule",{value:!0});MR.generateOptions=vTe;function vTe(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}});var U_=I(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});Ng.diffWords=STe;Ng.diffWordsWithSpace=xTe;Ng.wordDiff=void 0;var PTe=kTe(Na()),DTe=OR();function kTe(t){return t&&t.__esModule?t:{default:t}}var O_=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,K_=/\S/,md=new PTe.default;Ng.wordDiff=md;md.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!K_.test(t)&&!K_.test(e)};md.tokenize=function(t){for(var e=t.split(/(\s+|[()[\]{}'"]|\b)/),r=0;r{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});Lg.diffLines=RTe;Lg.diffTrimmedLines=FTe;Lg.lineDiff=void 0;var LTe=NTe(Na()),TTe=OR();function NTe(t){return t&&t.__esModule?t:{default:t}}var OB=new LTe.default;Lg.lineDiff=OB;OB.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var i=0;i{"use strict";Object.defineProperty(Id,"__esModule",{value:!0});Id.diffSentences=MTe;Id.sentenceDiff=void 0;var KTe=OTe(Na());function OTe(t){return t&&t.__esModule?t:{default:t}}var KR=new KTe.default;Id.sentenceDiff=KR;KR.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};function MTe(t,e,r){return KR.diff(t,e,r)}});var G_=I(Ed=>{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});Ed.diffCss=UTe;Ed.cssDiff=void 0;var GTe=HTe(Na());function HTe(t){return t&&t.__esModule?t:{default:t}}var UR=new GTe.default;Ed.cssDiff=UR;UR.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};function UTe(t,e,r){return UR.diff(t,e,r)}});var Y_=I(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.diffJson=jTe;Tg.canonicalize=UB;Tg.jsonDiff=void 0;var j_=YTe(Na()),qTe=KB();function YTe(t){return t&&t.__esModule?t:{default:t}}function HB(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?HB=function(r){return typeof r}:HB=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},HB(t)}var JTe=Object.prototype.toString,bc=new j_.default;Tg.jsonDiff=bc;bc.useLongestToken=!0;bc.tokenize=qTe.lineDiff.tokenize;bc.castInput=function(t){var e=this.options,r=e.undefinedReplacement,i=e.stringifyReplacer,n=i===void 0?function(s,o){return typeof o=="undefined"?r:o}:i;return typeof t=="string"?t:JSON.stringify(UB(t,null,null,n),n," ")};bc.equals=function(t,e){return j_.default.prototype.equals.call(bc,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function jTe(t,e,r){return bc.diff(t,e,r)}function UB(t,e,r,i,n){e=e||[],r=r||[],i&&(t=i(n,t));var s;for(s=0;s{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});yd.diffArrays=WTe;yd.arrayDiff=void 0;var VTe=zTe(Na());function zTe(t){return t&&t.__esModule?t:{default:t}}var wd=new VTe.default;yd.arrayDiff=wd;wd.tokenize=function(t){return t.slice()};wd.join=wd.removeEmpty=function(t){return t};function WTe(t,e,r){return wd.diff(t,e,r)}});var GB=I(HR=>{"use strict";Object.defineProperty(HR,"__esModule",{value:!0});HR.parsePatch=_Te;function _Te(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.split(/\r\n|[\n\v\f\r\x85]/),i=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],n=[],s=0;function o(){var c={};for(n.push(c);s{"use strict";Object.defineProperty(GR,"__esModule",{value:!0});GR.default=XTe;function XTe(t,e,r){var i=!0,n=!1,s=!1,o=1;return function a(){if(i&&!s){if(n?o++:i=!1,t+o<=r)return o;s=!0}if(!n)return s||(i=!0),e<=t-o?-o++:(n=!0,a())}}});var V_=I(jB=>{"use strict";Object.defineProperty(jB,"__esModule",{value:!0});jB.applyPatch=W_;jB.applyPatches=ZTe;var z_=GB(),eMe=$Te(J_());function $Te(t){return t&&t.__esModule?t:{default:t}}function W_(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string"&&(e=(0,z_.parsePatch)(e)),Array.isArray(e)){if(e.length>1)throw new Error("applyPatch only works with a single input.");e=e[0]}var i=t.split(/\r\n|[\n\v\f\r\x85]/),n=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],s=e.hunks,o=r.compareLine||function(F,D,he,pe){return D===pe},a=0,l=r.fuzzFactor||0,c=0,u=0,g,f;function h(F,D){for(var he=0;he0?pe[0]:" ",Pe=pe.length>0?pe.substr(1):pe;if(Ne===" "||Ne==="-"){if(!o(D+1,i[D],Ne,Pe)&&(a++,a>l))return!1;D++}}return!0}for(var p=0;p0?ne[0]:" ",A=ne.length>0?ne.substr(1):ne,V=L.linedelimiters[J];if(q===" ")K++;else if(q==="-")i.splice(K,1),n.splice(K,1);else if(q==="+")i.splice(K,0,A),n.splice(K,0,V),K++;else if(q==="\\"){var W=L.lines[J-1]?L.lines[J-1][0]:null;W==="+"?g=!0:W==="-"&&(f=!0)}}}if(g)for(;!i[i.length-1];)i.pop(),n.pop();else f&&(i.push(""),n.push(` -`));for(var X=0;X{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.structuredPatch=__;Bd.createTwoFilesPatch=X_;Bd.createPatch=tMe;var rMe=KB();function jR(t){return sMe(t)||nMe(t)||iMe()}function iMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function nMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function sMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e0?l(L.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(H=f).push.apply(H,jR(R.map(function(X){return(b.added?"+":"-")+X}))),b.added?p+=R.length:h+=R.length}else{if(u)if(R.length<=o.context*2&&B=a.length-2&&R.length<=o.context){var A=/\n$/.test(r),V=/\n$/.test(i),W=R.length==0&&f.length>q.oldLines;!A&&W&&f.splice(q.oldLines,0,"\\ No newline at end of file"),(!A&&!W||!V)&&f.push("\\ No newline at end of file")}c.push(q),u=0,g=0,f=[]}h+=R.length,p+=R.length}},m=0;m{"use strict";Object.defineProperty(YB,"__esModule",{value:!0});YB.arrayEqual=oMe;YB.arrayStartsWith=Z_;function oMe(t,e){return t.length!==e.length?!1:Z_(t,e)}function Z_(t,e){if(e.length>t.length)return!1;for(var r=0;r{"use strict";Object.defineProperty(qB,"__esModule",{value:!0});qB.calcLineCount=eX;qB.merge=aMe;var AMe=YR(),lMe=GB(),qR=$_();function Mg(t){return gMe(t)||uMe(t)||cMe()}function cMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function uMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function gMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{"use strict";Object.defineProperty(zR,"__esModule",{value:!0});zR.convertChangesToDMP=dMe;function dMe(t){for(var e=[],r,i,n=0;n{"use strict";Object.defineProperty(VR,"__esModule",{value:!0});VR.convertChangesToXML=CMe;function CMe(t){for(var e=[],r=0;r"):i.removed&&e.push(""),e.push(mMe(i.value)),i.added?e.push(""):i.removed&&e.push("")}return e.join("")}function mMe(t){var e=t;return e=e.replace(/&/g,"&"),e=e.replace(//g,">"),e=e.replace(/"/g,"""),e}});var CX=I(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});Object.defineProperty(br,"Diff",{enumerable:!0,get:function(){return IMe.default}});Object.defineProperty(br,"diffChars",{enumerable:!0,get:function(){return EMe.diffChars}});Object.defineProperty(br,"diffWords",{enumerable:!0,get:function(){return fX.diffWords}});Object.defineProperty(br,"diffWordsWithSpace",{enumerable:!0,get:function(){return fX.diffWordsWithSpace}});Object.defineProperty(br,"diffLines",{enumerable:!0,get:function(){return hX.diffLines}});Object.defineProperty(br,"diffTrimmedLines",{enumerable:!0,get:function(){return hX.diffTrimmedLines}});Object.defineProperty(br,"diffSentences",{enumerable:!0,get:function(){return yMe.diffSentences}});Object.defineProperty(br,"diffCss",{enumerable:!0,get:function(){return wMe.diffCss}});Object.defineProperty(br,"diffJson",{enumerable:!0,get:function(){return pX.diffJson}});Object.defineProperty(br,"canonicalize",{enumerable:!0,get:function(){return pX.canonicalize}});Object.defineProperty(br,"diffArrays",{enumerable:!0,get:function(){return BMe.diffArrays}});Object.defineProperty(br,"applyPatch",{enumerable:!0,get:function(){return dX.applyPatch}});Object.defineProperty(br,"applyPatches",{enumerable:!0,get:function(){return dX.applyPatches}});Object.defineProperty(br,"parsePatch",{enumerable:!0,get:function(){return QMe.parsePatch}});Object.defineProperty(br,"merge",{enumerable:!0,get:function(){return bMe.merge}});Object.defineProperty(br,"structuredPatch",{enumerable:!0,get:function(){return _R.structuredPatch}});Object.defineProperty(br,"createTwoFilesPatch",{enumerable:!0,get:function(){return _R.createTwoFilesPatch}});Object.defineProperty(br,"createPatch",{enumerable:!0,get:function(){return _R.createPatch}});Object.defineProperty(br,"convertChangesToDMP",{enumerable:!0,get:function(){return vMe.convertChangesToDMP}});Object.defineProperty(br,"convertChangesToXML",{enumerable:!0,get:function(){return SMe.convertChangesToXML}});var IMe=xMe(Na()),EMe=M_(),fX=U_(),hX=KB(),yMe=H_(),wMe=G_(),pX=Y_(),BMe=q_(),dX=V_(),QMe=GB(),bMe=cX(),_R=YR(),vMe=uX(),SMe=gX();function xMe(t){return t&&t.__esModule?t:{default:t}}});var WB=I((agt,mX)=>{var kMe=As(),PMe=Nw(),DMe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,RMe=/^\w*$/;function FMe(t,e){if(kMe(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||PMe(t)?!0:RMe.test(t)||!DMe.test(t)||e!=null&&t in Object(e)}mX.exports=FMe});var Gs=I((Agt,IX)=>{function NMe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}IX.exports=NMe});var zB=I((lgt,EX)=>{var LMe=Ac(),TMe=Gs(),MMe="[object AsyncFunction]",OMe="[object Function]",KMe="[object GeneratorFunction]",UMe="[object Proxy]";function HMe(t){if(!TMe(t))return!1;var e=LMe(t);return e==OMe||e==KMe||e==MMe||e==UMe}EX.exports=HMe});var wX=I((cgt,yX)=>{var GMe=Ks(),jMe=GMe["__core-js_shared__"];yX.exports=jMe});var bX=I((ugt,BX)=>{var XR=wX(),QX=function(){var t=/[^.]+$/.exec(XR&&XR.keys&&XR.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function YMe(t){return!!QX&&QX in t}BX.exports=YMe});var ZR=I((ggt,vX)=>{var qMe=Function.prototype,JMe=qMe.toString;function WMe(t){if(t!=null){try{return JMe.call(t)}catch(e){}try{return t+""}catch(e){}}return""}vX.exports=WMe});var xX=I((fgt,SX)=>{var zMe=zB(),VMe=bX(),_Me=Gs(),XMe=ZR(),ZMe=/[\\^$.*+?()[\]{}|]/g,$Me=/^\[object .+?Constructor\]$/,eOe=Function.prototype,tOe=Object.prototype,rOe=eOe.toString,iOe=tOe.hasOwnProperty,nOe=RegExp("^"+rOe.call(iOe).replace(ZMe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function sOe(t){if(!_Me(t)||VMe(t))return!1;var e=zMe(t)?nOe:$Me;return e.test(XMe(t))}SX.exports=sOe});var PX=I((hgt,kX)=>{function oOe(t,e){return t==null?void 0:t[e]}kX.exports=oOe});var UA=I((pgt,DX)=>{var aOe=xX(),AOe=PX();function lOe(t,e){var r=AOe(t,e);return aOe(r)?r:void 0}DX.exports=lOe});var Qd=I((dgt,RX)=>{var cOe=UA(),uOe=cOe(Object,"create");RX.exports=uOe});var LX=I((Cgt,FX)=>{var NX=Qd();function gOe(){this.__data__=NX?NX(null):{},this.size=0}FX.exports=gOe});var MX=I((mgt,TX)=>{function fOe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}TX.exports=fOe});var KX=I((Igt,OX)=>{var hOe=Qd(),pOe="__lodash_hash_undefined__",dOe=Object.prototype,COe=dOe.hasOwnProperty;function mOe(t){var e=this.__data__;if(hOe){var r=e[t];return r===pOe?void 0:r}return COe.call(e,t)?e[t]:void 0}OX.exports=mOe});var HX=I((Egt,UX)=>{var IOe=Qd(),EOe=Object.prototype,yOe=EOe.hasOwnProperty;function wOe(t){var e=this.__data__;return IOe?e[t]!==void 0:yOe.call(e,t)}UX.exports=wOe});var jX=I((ygt,GX)=>{var BOe=Qd(),QOe="__lodash_hash_undefined__";function bOe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=BOe&&e===void 0?QOe:e,this}GX.exports=bOe});var qX=I((wgt,YX)=>{var vOe=LX(),SOe=MX(),xOe=KX(),kOe=HX(),POe=jX();function Og(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{function DOe(){this.__data__=[],this.size=0}JX.exports=DOe});var Kg=I((Qgt,zX)=>{function ROe(t,e){return t===e||t!==t&&e!==e}zX.exports=ROe});var bd=I((bgt,VX)=>{var FOe=Kg();function NOe(t,e){for(var r=t.length;r--;)if(FOe(t[r][0],e))return r;return-1}VX.exports=NOe});var XX=I((vgt,_X)=>{var LOe=bd(),TOe=Array.prototype,MOe=TOe.splice;function OOe(t){var e=this.__data__,r=LOe(e,t);if(r<0)return!1;var i=e.length-1;return r==i?e.pop():MOe.call(e,r,1),--this.size,!0}_X.exports=OOe});var $X=I((Sgt,ZX)=>{var KOe=bd();function UOe(t){var e=this.__data__,r=KOe(e,t);return r<0?void 0:e[r][1]}ZX.exports=UOe});var tZ=I((xgt,eZ)=>{var HOe=bd();function GOe(t){return HOe(this.__data__,t)>-1}eZ.exports=GOe});var iZ=I((kgt,rZ)=>{var jOe=bd();function YOe(t,e){var r=this.__data__,i=jOe(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}rZ.exports=YOe});var vd=I((Pgt,nZ)=>{var qOe=WX(),JOe=XX(),WOe=$X(),zOe=tZ(),VOe=iZ();function Ug(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var _Oe=UA(),XOe=Ks(),ZOe=_Oe(XOe,"Map");sZ.exports=ZOe});var AZ=I((Rgt,oZ)=>{var aZ=qX(),$Oe=vd(),eKe=VB();function tKe(){this.size=0,this.__data__={hash:new aZ,map:new(eKe||$Oe),string:new aZ}}oZ.exports=tKe});var cZ=I((Fgt,lZ)=>{function rKe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}lZ.exports=rKe});var Sd=I((Ngt,uZ)=>{var iKe=cZ();function nKe(t,e){var r=t.__data__;return iKe(e)?r[typeof e=="string"?"string":"hash"]:r.map}uZ.exports=nKe});var fZ=I((Lgt,gZ)=>{var sKe=Sd();function oKe(t){var e=sKe(this,t).delete(t);return this.size-=e?1:0,e}gZ.exports=oKe});var pZ=I((Tgt,hZ)=>{var aKe=Sd();function AKe(t){return aKe(this,t).get(t)}hZ.exports=AKe});var CZ=I((Mgt,dZ)=>{var lKe=Sd();function cKe(t){return lKe(this,t).has(t)}dZ.exports=cKe});var IZ=I((Ogt,mZ)=>{var uKe=Sd();function gKe(t,e){var r=uKe(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}mZ.exports=gKe});var _B=I((Kgt,EZ)=>{var fKe=AZ(),hKe=fZ(),pKe=pZ(),dKe=CZ(),CKe=IZ();function Hg(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var wZ=_B(),mKe="Expected a function";function $R(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(mKe);var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],s=r.cache;if(s.has(n))return s.get(n);var o=t.apply(this,i);return r.cache=s.set(n,o)||s,o};return r.cache=new($R.Cache||wZ),r}$R.Cache=wZ;yZ.exports=$R});var bZ=I((Hgt,QZ)=>{var IKe=BZ(),EKe=500;function yKe(t){var e=IKe(t,function(i){return r.size===EKe&&r.clear(),i}),r=e.cache;return e}QZ.exports=yKe});var SZ=I((Ggt,vZ)=>{var wKe=bZ(),BKe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,QKe=/\\(\\)?/g,bKe=wKe(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(BKe,function(r,i,n,s){e.push(n?s.replace(QKe,"$1"):i||r)}),e});vZ.exports=bKe});var Gg=I((jgt,xZ)=>{var vKe=As(),SKe=WB(),xKe=SZ(),kKe=gg();function PKe(t,e){return vKe(t)?t:SKe(t,e)?[t]:xKe(kKe(t))}xZ.exports=PKe});var Sc=I((Ygt,kZ)=>{var DKe=Nw(),RKe=1/0;function FKe(t){if(typeof t=="string"||DKe(t))return t;var e=t+"";return e=="0"&&1/t==-RKe?"-0":e}kZ.exports=FKe});var xd=I((qgt,PZ)=>{var NKe=Gg(),LKe=Sc();function TKe(t,e){e=NKe(e,t);for(var r=0,i=e.length;t!=null&&r{var MKe=UA(),OKe=function(){try{var t=MKe(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();DZ.exports=OKe});var jg=I((Wgt,RZ)=>{var FZ=eF();function KKe(t,e,r){e=="__proto__"&&FZ?FZ(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}RZ.exports=KKe});var XB=I((zgt,NZ)=>{var UKe=jg(),HKe=Kg(),GKe=Object.prototype,jKe=GKe.hasOwnProperty;function YKe(t,e,r){var i=t[e];(!(jKe.call(t,e)&&HKe(i,r))||r===void 0&&!(e in t))&&UKe(t,e,r)}NZ.exports=YKe});var kd=I((Vgt,LZ)=>{var qKe=9007199254740991,JKe=/^(?:0|[1-9]\d*)$/;function WKe(t,e){var r=typeof t;return e=e==null?qKe:e,!!e&&(r=="number"||r!="symbol"&&JKe.test(t))&&t>-1&&t%1==0&&t{var zKe=XB(),VKe=Gg(),_Ke=kd(),MZ=Gs(),XKe=Sc();function ZKe(t,e,r,i){if(!MZ(t))return t;e=VKe(e,t);for(var n=-1,s=e.length,o=s-1,a=t;a!=null&&++n{var $Ke=xd(),e1e=tF(),t1e=Gg();function r1e(t,e,r){for(var i=-1,n=e.length,s={};++i{function i1e(t,e){return t!=null&&e in Object(t)}UZ.exports=i1e});var jZ=I(($gt,GZ)=>{var n1e=Ac(),s1e=Qo(),o1e="[object Arguments]";function a1e(t){return s1e(t)&&n1e(t)==o1e}GZ.exports=a1e});var Pd=I((eft,YZ)=>{var qZ=jZ(),A1e=Qo(),JZ=Object.prototype,l1e=JZ.hasOwnProperty,c1e=JZ.propertyIsEnumerable,u1e=qZ(function(){return arguments}())?qZ:function(t){return A1e(t)&&l1e.call(t,"callee")&&!c1e.call(t,"callee")};YZ.exports=u1e});var ZB=I((tft,WZ)=>{var g1e=9007199254740991;function f1e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=g1e}WZ.exports=f1e});var rF=I((rft,zZ)=>{var h1e=Gg(),p1e=Pd(),d1e=As(),C1e=kd(),m1e=ZB(),I1e=Sc();function E1e(t,e,r){e=h1e(e,t);for(var i=-1,n=e.length,s=!1;++i{var y1e=HZ(),w1e=rF();function B1e(t,e){return t!=null&&w1e(t,e,y1e)}VZ.exports=B1e});var XZ=I((nft,_Z)=>{var Q1e=KZ(),b1e=iF();function v1e(t,e){return Q1e(t,e,function(r,i){return b1e(t,i)})}_Z.exports=v1e});var $B=I((sft,ZZ)=>{function S1e(t,e){for(var r=-1,i=e.length,n=t.length;++r{var e$=ac(),x1e=Pd(),k1e=As(),t$=e$?e$.isConcatSpreadable:void 0;function P1e(t){return k1e(t)||x1e(t)||!!(t$&&t&&t[t$])}$Z.exports=P1e});var s$=I((aft,i$)=>{var D1e=$B(),R1e=r$();function n$(t,e,r,i,n){var s=-1,o=t.length;for(r||(r=R1e),n||(n=[]);++s0&&r(a)?e>1?n$(a,e-1,r,i,n):D1e(n,a):i||(n[n.length]=a)}return n}i$.exports=n$});var a$=I((Aft,o$)=>{var F1e=s$();function N1e(t){var e=t==null?0:t.length;return e?F1e(t,1):[]}o$.exports=N1e});var l$=I((lft,A$)=>{function L1e(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}A$.exports=L1e});var nF=I((cft,c$)=>{var T1e=l$(),u$=Math.max;function M1e(t,e,r){return e=u$(e===void 0?t.length-1:e,0),function(){for(var i=arguments,n=-1,s=u$(i.length-e,0),o=Array(s);++n{function O1e(t){return function(){return t}}g$.exports=O1e});var e0=I((gft,h$)=>{function K1e(t){return t}h$.exports=K1e});var C$=I((fft,p$)=>{var U1e=f$(),d$=eF(),H1e=e0(),G1e=d$?function(t,e){return d$(t,"toString",{configurable:!0,enumerable:!1,value:U1e(e),writable:!0})}:H1e;p$.exports=G1e});var I$=I((hft,m$)=>{var j1e=800,Y1e=16,q1e=Date.now;function J1e(t){var e=0,r=0;return function(){var i=q1e(),n=Y1e-(i-r);if(r=i,n>0){if(++e>=j1e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}m$.exports=J1e});var sF=I((pft,E$)=>{var W1e=C$(),z1e=I$(),V1e=z1e(W1e);E$.exports=V1e});var w$=I((dft,y$)=>{var _1e=a$(),X1e=nF(),Z1e=sF();function $1e(t){return Z1e(X1e(t,void 0,_1e),t+"")}y$.exports=$1e});var Q$=I((Cft,B$)=>{var eUe=XZ(),tUe=w$(),rUe=tUe(function(t,e){return t==null?{}:eUe(t,e)});B$.exports=rUe});var M$=I((lpt,N$)=>{"use strict";var pF;try{pF=Map}catch(t){}var dF;try{dF=Set}catch(t){}function L$(t,e,r){if(!t||typeof t!="object"||typeof t=="function")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t);if(Array.isArray(t))return t.map(T$);if(pF&&t instanceof pF)return new Map(Array.from(t.entries()));if(dF&&t instanceof dF)return new Set(Array.from(t.values()));if(t instanceof Object){e.push(t);var i=Object.create(t);r.push(i);for(var n in t){var s=e.findIndex(function(o){return o===t[n]});i[n]=s>-1?r[s]:L$(t[n],e,r)}return i}return t}function T$(t){return L$(t,[],[])}N$.exports=T$});var Nd=I(CF=>{"use strict";Object.defineProperty(CF,"__esModule",{value:!0});CF.default=uUe;var gUe=Object.prototype.toString,fUe=Error.prototype.toString,hUe=RegExp.prototype.toString,pUe=typeof Symbol!="undefined"?Symbol.prototype.toString:()=>"",dUe=/^Symbol\((.*)\)(.*)$/;function CUe(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function O$(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return CUe(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return pUe.call(t).replace(dUe,"Symbol($1)");let i=gUe.call(t).slice(8,-1);return i==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):i==="Error"||t instanceof Error?"["+fUe.call(t)+"]":i==="RegExp"?hUe.call(t):null}function uUe(t,e){let r=O$(t,e);return r!==null?r:JSON.stringify(t,function(i,n){let s=O$(this[i],e);return s!==null?s:n},2)}});var La=I(ci=>{"use strict";Object.defineProperty(ci,"__esModule",{value:!0});ci.default=ci.array=ci.object=ci.boolean=ci.date=ci.number=ci.string=ci.mixed=void 0;var K$=mUe(Nd());function mUe(t){return t&&t.__esModule?t:{default:t}}var U$={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:r,originalValue:i})=>{let n=i!=null&&i!==r,s=`${t} must be a \`${e}\` type, but the final value was: \`${(0,K$.default)(r,!0)}\``+(n?` (cast from the value \`${(0,K$.default)(i,!0)}\`).`:".");return r===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};ci.mixed=U$;var H$={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};ci.string=H$;var G$={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};ci.number=G$;var j$={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};ci.date=j$;var Y$={isValue:"${path} field must be ${value}"};ci.boolean=Y$;var q$={noUnknown:"${path} field has unspecified keys: ${unknown}"};ci.object=q$;var J$={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};ci.array=J$;var IUe=Object.assign(Object.create(null),{mixed:U$,string:H$,number:G$,date:j$,object:q$,array:J$,boolean:Y$});ci.default=IUe});var z$=I((gpt,W$)=>{var EUe=Object.prototype,yUe=EUe.hasOwnProperty;function wUe(t,e){return t!=null&&yUe.call(t,e)}W$.exports=wUe});var Ld=I((fpt,V$)=>{var BUe=z$(),QUe=rF();function bUe(t,e){return t!=null&&QUe(t,e,BUe)}V$.exports=bUe});var qg=I(n0=>{"use strict";Object.defineProperty(n0,"__esModule",{value:!0});n0.default=void 0;var vUe=t=>t&&t.__isYupSchema__;n0.default=vUe});var Z$=I(s0=>{"use strict";Object.defineProperty(s0,"__esModule",{value:!0});s0.default=void 0;var SUe=_$(Ld()),xUe=_$(qg());function _$(t){return t&&t.__esModule?t:{default:t}}var X$=class{constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,SUe.default)(r,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!r.then&&!r.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:i,then:n,otherwise:s}=r,o=typeof i=="function"?i:(...a)=>a.every(l=>l===i);this.fn=function(...a){let l=a.pop(),c=a.pop(),u=o(...a)?n:s;if(!!u)return typeof u=="function"?u(c):c.concat(u.resolve(l))}}resolve(e,r){let i=this.refs.map(s=>s.getValue(r==null?void 0:r.value,r==null?void 0:r.parent,r==null?void 0:r.context)),n=this.fn.apply(e,i.concat(e,r));if(n===void 0||n===e)return e;if(!(0,xUe.default)(n))throw new TypeError("conditions must return a schema object");return n.resolve(r)}},kUe=X$;s0.default=kUe});var IF=I(mF=>{"use strict";Object.defineProperty(mF,"__esModule",{value:!0});mF.default=PUe;function PUe(t){return t==null?[]:[].concat(t)}});var xc=I(o0=>{"use strict";Object.defineProperty(o0,"__esModule",{value:!0});o0.default=void 0;var DUe=$$(Nd()),RUe=$$(IF());function $$(t){return t&&t.__esModule?t:{default:t}}function EF(){return EF=Object.assign||function(t){for(var e=1;e(0,DUe.default)(r[s])):typeof e=="function"?e(r):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,r,i,n){super();this.name="ValidationError",this.value=r,this.path=i,this.type=n,this.errors=[],this.inner=[],(0,RUe.default)(e).forEach(s=>{Td.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,Td)}};o0.default=Td});var a0=I(yF=>{"use strict";Object.defineProperty(yF,"__esModule",{value:!0});yF.default=NUe;var wF=LUe(xc());function LUe(t){return t&&t.__esModule?t:{default:t}}var TUe=t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}};function NUe(t,e){let{endEarly:r,tests:i,args:n,value:s,errors:o,sort:a,path:l}=t,c=TUe(e),u=i.length,g=[];if(o=o||[],!u)return o.length?c(new wF.default(o,s,l)):c(null,s);for(let f=0;f{function MUe(t){return function(e,r,i){for(var n=-1,s=Object(e),o=i(e),a=o.length;a--;){var l=o[t?a:++n];if(r(s[l],l,s)===!1)break}return e}}eee.exports=MUe});var BF=I((Ept,ree)=>{var OUe=tee(),KUe=OUe();ree.exports=KUe});var nee=I((ypt,iee)=>{function UUe(t,e){for(var r=-1,i=Array(t);++r{function HUe(){return!1}see.exports=HUe});var Od=I((Md,Jg)=>{var GUe=Ks(),jUe=oee(),aee=typeof Md=="object"&&Md&&!Md.nodeType&&Md,Aee=aee&&typeof Jg=="object"&&Jg&&!Jg.nodeType&&Jg,YUe=Aee&&Aee.exports===aee,lee=YUe?GUe.Buffer:void 0,qUe=lee?lee.isBuffer:void 0,JUe=qUe||jUe;Jg.exports=JUe});var uee=I((Bpt,cee)=>{var WUe=Ac(),zUe=ZB(),VUe=Qo(),_Ue="[object Arguments]",XUe="[object Array]",ZUe="[object Boolean]",$Ue="[object Date]",e2e="[object Error]",t2e="[object Function]",r2e="[object Map]",i2e="[object Number]",n2e="[object Object]",s2e="[object RegExp]",o2e="[object Set]",a2e="[object String]",A2e="[object WeakMap]",l2e="[object ArrayBuffer]",c2e="[object DataView]",u2e="[object Float32Array]",g2e="[object Float64Array]",f2e="[object Int8Array]",h2e="[object Int16Array]",p2e="[object Int32Array]",d2e="[object Uint8Array]",C2e="[object Uint8ClampedArray]",m2e="[object Uint16Array]",I2e="[object Uint32Array]",lr={};lr[u2e]=lr[g2e]=lr[f2e]=lr[h2e]=lr[p2e]=lr[d2e]=lr[C2e]=lr[m2e]=lr[I2e]=!0;lr[_Ue]=lr[XUe]=lr[l2e]=lr[ZUe]=lr[c2e]=lr[$Ue]=lr[e2e]=lr[t2e]=lr[r2e]=lr[i2e]=lr[n2e]=lr[s2e]=lr[o2e]=lr[a2e]=lr[A2e]=!1;function E2e(t){return VUe(t)&&zUe(t.length)&&!!lr[WUe(t)]}cee.exports=E2e});var A0=I((Qpt,gee)=>{function y2e(t){return function(e){return t(e)}}gee.exports=y2e});var l0=I((Kd,Wg)=>{var w2e=WP(),fee=typeof Kd=="object"&&Kd&&!Kd.nodeType&&Kd,Ud=fee&&typeof Wg=="object"&&Wg&&!Wg.nodeType&&Wg,B2e=Ud&&Ud.exports===fee,QF=B2e&&w2e.process,Q2e=function(){try{var t=Ud&&Ud.require&&Ud.require("util").types;return t||QF&&QF.binding&&QF.binding("util")}catch(e){}}();Wg.exports=Q2e});var c0=I((bpt,hee)=>{var b2e=uee(),v2e=A0(),pee=l0(),dee=pee&&pee.isTypedArray,S2e=dee?v2e(dee):b2e;hee.exports=S2e});var bF=I((vpt,Cee)=>{var x2e=nee(),k2e=Pd(),P2e=As(),D2e=Od(),R2e=kd(),F2e=c0(),N2e=Object.prototype,L2e=N2e.hasOwnProperty;function T2e(t,e){var r=P2e(t),i=!r&&k2e(t),n=!r&&!i&&D2e(t),s=!r&&!i&&!n&&F2e(t),o=r||i||n||s,a=o?x2e(t.length,String):[],l=a.length;for(var c in t)(e||L2e.call(t,c))&&!(o&&(c=="length"||n&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||R2e(c,l)))&&a.push(c);return a}Cee.exports=T2e});var u0=I((Spt,mee)=>{var M2e=Object.prototype;function O2e(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||M2e;return t===r}mee.exports=O2e});var vF=I((xpt,Iee)=>{function K2e(t,e){return function(r){return t(e(r))}}Iee.exports=K2e});var yee=I((kpt,Eee)=>{var U2e=vF(),H2e=U2e(Object.keys,Object);Eee.exports=H2e});var Bee=I((Ppt,wee)=>{var G2e=u0(),j2e=yee(),Y2e=Object.prototype,q2e=Y2e.hasOwnProperty;function J2e(t){if(!G2e(t))return j2e(t);var e=[];for(var r in Object(t))q2e.call(t,r)&&r!="constructor"&&e.push(r);return e}wee.exports=J2e});var Hd=I((Dpt,Qee)=>{var W2e=zB(),z2e=ZB();function V2e(t){return t!=null&&z2e(t.length)&&!W2e(t)}Qee.exports=V2e});var zg=I((Rpt,bee)=>{var _2e=bF(),X2e=Bee(),Z2e=Hd();function $2e(t){return Z2e(t)?_2e(t):X2e(t)}bee.exports=$2e});var SF=I((Fpt,vee)=>{var eHe=BF(),tHe=zg();function rHe(t,e){return t&&eHe(t,e,tHe)}vee.exports=rHe});var xee=I((Npt,See)=>{var iHe=vd();function nHe(){this.__data__=new iHe,this.size=0}See.exports=nHe});var Pee=I((Lpt,kee)=>{function sHe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}kee.exports=sHe});var Ree=I((Tpt,Dee)=>{function oHe(t){return this.__data__.get(t)}Dee.exports=oHe});var Nee=I((Mpt,Fee)=>{function aHe(t){return this.__data__.has(t)}Fee.exports=aHe});var Tee=I((Opt,Lee)=>{var AHe=vd(),lHe=VB(),cHe=_B(),uHe=200;function gHe(t,e){var r=this.__data__;if(r instanceof AHe){var i=r.__data__;if(!lHe||i.length{var fHe=vd(),hHe=xee(),pHe=Pee(),dHe=Ree(),CHe=Nee(),mHe=Tee();function Vg(t){var e=this.__data__=new fHe(t);this.size=e.size}Vg.prototype.clear=hHe;Vg.prototype.delete=pHe;Vg.prototype.get=dHe;Vg.prototype.has=CHe;Vg.prototype.set=mHe;Mee.exports=Vg});var Kee=I((Upt,Oee)=>{var IHe="__lodash_hash_undefined__";function EHe(t){return this.__data__.set(t,IHe),this}Oee.exports=EHe});var Hee=I((Hpt,Uee)=>{function yHe(t){return this.__data__.has(t)}Uee.exports=yHe});var jee=I((Gpt,Gee)=>{var wHe=_B(),BHe=Kee(),QHe=Hee();function g0(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new wHe;++e{function bHe(t,e){for(var r=-1,i=t==null?0:t.length;++r{function vHe(t,e){return t.has(e)}Jee.exports=vHe});var xF=I((qpt,zee)=>{var SHe=jee(),xHe=qee(),kHe=Wee(),PHe=1,DHe=2;function RHe(t,e,r,i,n,s){var o=r&PHe,a=t.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(t),u=s.get(e);if(c&&u)return c==e&&u==t;var g=-1,f=!0,h=r&DHe?new SHe:void 0;for(s.set(t,e),s.set(e,t);++g{var FHe=Ks(),NHe=FHe.Uint8Array;Vee.exports=NHe});var Xee=I((Wpt,_ee)=>{function LHe(t){var e=-1,r=Array(t.size);return t.forEach(function(i,n){r[++e]=[n,i]}),r}_ee.exports=LHe});var $ee=I((zpt,Zee)=>{function THe(t){var e=-1,r=Array(t.size);return t.forEach(function(i){r[++e]=i}),r}Zee.exports=THe});var nte=I((Vpt,ete)=>{var tte=ac(),rte=kF(),MHe=Kg(),OHe=xF(),KHe=Xee(),UHe=$ee(),HHe=1,GHe=2,jHe="[object Boolean]",YHe="[object Date]",qHe="[object Error]",JHe="[object Map]",WHe="[object Number]",zHe="[object RegExp]",VHe="[object Set]",_He="[object String]",XHe="[object Symbol]",ZHe="[object ArrayBuffer]",$He="[object DataView]",ite=tte?tte.prototype:void 0,PF=ite?ite.valueOf:void 0;function eGe(t,e,r,i,n,s,o){switch(r){case $He:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case ZHe:return!(t.byteLength!=e.byteLength||!s(new rte(t),new rte(e)));case jHe:case YHe:case WHe:return MHe(+t,+e);case qHe:return t.name==e.name&&t.message==e.message;case zHe:case _He:return t==e+"";case JHe:var a=KHe;case VHe:var l=i&HHe;if(a||(a=UHe),t.size!=e.size&&!l)return!1;var c=o.get(t);if(c)return c==e;i|=GHe,o.set(t,e);var u=OHe(a(t),a(e),i,n,s,o);return o.delete(t),u;case XHe:if(PF)return PF.call(t)==PF.call(e)}return!1}ete.exports=eGe});var DF=I((_pt,ste)=>{var tGe=$B(),rGe=As();function iGe(t,e,r){var i=e(t);return rGe(t)?i:tGe(i,r(t))}ste.exports=iGe});var ate=I((Xpt,ote)=>{function nGe(t,e){for(var r=-1,i=t==null?0:t.length,n=0,s=[];++r{function sGe(){return[]}Ate.exports=sGe});var f0=I(($pt,lte)=>{var oGe=ate(),aGe=RF(),AGe=Object.prototype,lGe=AGe.propertyIsEnumerable,cte=Object.getOwnPropertySymbols,cGe=cte?function(t){return t==null?[]:(t=Object(t),oGe(cte(t),function(e){return lGe.call(t,e)}))}:aGe;lte.exports=cGe});var FF=I((edt,ute)=>{var uGe=DF(),gGe=f0(),fGe=zg();function hGe(t){return uGe(t,fGe,gGe)}ute.exports=hGe});var hte=I((tdt,gte)=>{var fte=FF(),pGe=1,dGe=Object.prototype,CGe=dGe.hasOwnProperty;function mGe(t,e,r,i,n,s){var o=r&pGe,a=fte(t),l=a.length,c=fte(e),u=c.length;if(l!=u&&!o)return!1;for(var g=l;g--;){var f=a[g];if(!(o?f in e:CGe.call(e,f)))return!1}var h=s.get(t),p=s.get(e);if(h&&p)return h==e&&p==t;var d=!0;s.set(t,e),s.set(e,t);for(var m=o;++g{var IGe=UA(),EGe=Ks(),yGe=IGe(EGe,"DataView");pte.exports=yGe});var mte=I((idt,Cte)=>{var wGe=UA(),BGe=Ks(),QGe=wGe(BGe,"Promise");Cte.exports=QGe});var Ete=I((ndt,Ite)=>{var bGe=UA(),vGe=Ks(),SGe=bGe(vGe,"Set");Ite.exports=SGe});var wte=I((sdt,yte)=>{var xGe=UA(),kGe=Ks(),PGe=xGe(kGe,"WeakMap");yte.exports=PGe});var jd=I((odt,Bte)=>{var NF=dte(),LF=VB(),TF=mte(),MF=Ete(),OF=wte(),Qte=Ac(),_g=ZR(),bte="[object Map]",DGe="[object Object]",vte="[object Promise]",Ste="[object Set]",xte="[object WeakMap]",kte="[object DataView]",RGe=_g(NF),FGe=_g(LF),NGe=_g(TF),LGe=_g(MF),TGe=_g(OF),kc=Qte;(NF&&kc(new NF(new ArrayBuffer(1)))!=kte||LF&&kc(new LF)!=bte||TF&&kc(TF.resolve())!=vte||MF&&kc(new MF)!=Ste||OF&&kc(new OF)!=xte)&&(kc=function(t){var e=Qte(t),r=e==DGe?t.constructor:void 0,i=r?_g(r):"";if(i)switch(i){case RGe:return kte;case FGe:return bte;case NGe:return vte;case LGe:return Ste;case TGe:return xte}return e});Bte.exports=kc});var Mte=I((adt,Pte)=>{var KF=Gd(),MGe=xF(),OGe=nte(),KGe=hte(),Dte=jd(),Rte=As(),Fte=Od(),UGe=c0(),HGe=1,Nte="[object Arguments]",Lte="[object Array]",h0="[object Object]",GGe=Object.prototype,Tte=GGe.hasOwnProperty;function jGe(t,e,r,i,n,s){var o=Rte(t),a=Rte(e),l=o?Lte:Dte(t),c=a?Lte:Dte(e);l=l==Nte?h0:l,c=c==Nte?h0:c;var u=l==h0,g=c==h0,f=l==c;if(f&&Fte(t)){if(!Fte(e))return!1;o=!0,u=!1}if(f&&!u)return s||(s=new KF),o||UGe(t)?MGe(t,e,r,i,n,s):OGe(t,e,l,r,i,n,s);if(!(r&HGe)){var h=u&&Tte.call(t,"__wrapped__"),p=g&&Tte.call(e,"__wrapped__");if(h||p){var d=h?t.value():t,m=p?e.value():e;return s||(s=new KF),n(d,m,r,i,s)}}return f?(s||(s=new KF),KGe(t,e,r,i,n,s)):!1}Pte.exports=jGe});var UF=I((Adt,Ote)=>{var YGe=Mte(),Kte=Qo();function Ute(t,e,r,i,n){return t===e?!0:t==null||e==null||!Kte(t)&&!Kte(e)?t!==t&&e!==e:YGe(t,e,r,i,Ute,n)}Ote.exports=Ute});var Gte=I((ldt,Hte)=>{var qGe=Gd(),JGe=UF(),WGe=1,zGe=2;function VGe(t,e,r,i){var n=r.length,s=n,o=!i;if(t==null)return!s;for(t=Object(t);n--;){var a=r[n];if(o&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++n{var _Ge=Gs();function XGe(t){return t===t&&!_Ge(t)}jte.exports=XGe});var qte=I((udt,Yte)=>{var ZGe=HF(),$Ge=zg();function eje(t){for(var e=$Ge(t),r=e.length;r--;){var i=e[r],n=t[i];e[r]=[i,n,ZGe(n)]}return e}Yte.exports=eje});var GF=I((gdt,Jte)=>{function tje(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}Jte.exports=tje});var zte=I((fdt,Wte)=>{var rje=Gte(),ije=qte(),nje=GF();function sje(t){var e=ije(t);return e.length==1&&e[0][2]?nje(e[0][0],e[0][1]):function(r){return r===t||rje(r,t,e)}}Wte.exports=sje});var p0=I((hdt,Vte)=>{var oje=xd();function aje(t,e,r){var i=t==null?void 0:oje(t,e);return i===void 0?r:i}Vte.exports=aje});var Xte=I((pdt,_te)=>{var Aje=UF(),lje=p0(),cje=iF(),uje=WB(),gje=HF(),fje=GF(),hje=Sc(),pje=1,dje=2;function Cje(t,e){return uje(t)&&gje(e)?fje(hje(t),e):function(r){var i=lje(r,t);return i===void 0&&i===e?cje(r,t):Aje(e,i,pje|dje)}}_te.exports=Cje});var $te=I((ddt,Zte)=>{function mje(t){return function(e){return e==null?void 0:e[t]}}Zte.exports=mje});var tre=I((Cdt,ere)=>{var Ije=xd();function Eje(t){return function(e){return Ije(e,t)}}ere.exports=Eje});var ire=I((mdt,rre)=>{var yje=$te(),wje=tre(),Bje=WB(),Qje=Sc();function bje(t){return Bje(t)?yje(Qje(t)):wje(t)}rre.exports=bje});var jF=I((Idt,nre)=>{var vje=zte(),Sje=Xte(),xje=e0(),kje=As(),Pje=ire();function Dje(t){return typeof t=="function"?t:t==null?xje:typeof t=="object"?kje(t)?Sje(t[0],t[1]):vje(t):Pje(t)}nre.exports=Dje});var YF=I((Edt,sre)=>{var Rje=jg(),Fje=SF(),Nje=jF();function Lje(t,e){var r={};return e=Nje(e,3),Fje(t,function(i,n,s){Rje(r,n,e(i,n,s))}),r}sre.exports=Lje});var Yd=I((ydt,ore)=>{"use strict";function Pc(t){this._maxSize=t,this.clear()}Pc.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Pc.prototype.get=function(t){return this._values[t]};Pc.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var Tje=/[^.^\]^[]+|(?=\[\]|\.\.)/g,are=/^\d+$/,Mje=/^\d/,Oje=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,Kje=/^\s*(['"]?)(.*?)(\1)\s*$/,qF=512,Are=new Pc(qF),lre=new Pc(qF),cre=new Pc(qF);ore.exports={Cache:Pc,split:WF,normalizePath:JF,setter:function(t){var e=JF(t);return lre.get(t)||lre.set(t,function(i,n){for(var s=0,o=e.length,a=i;s{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});qd.create=Yje;qd.default=void 0;var qje=Yd(),d0={context:"$",value:"."};function Yje(t,e){return new C0(t,e)}var C0=class{constructor(e,r={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===d0.context,this.isValue=this.key[0]===d0.value,this.isSibling=!this.isContext&&!this.isValue;let i=this.isContext?d0.context:this.isValue?d0.value:"";this.path=this.key.slice(i.length),this.getter=this.path&&(0,qje.getter)(this.path,!0),this.map=r.map}getValue(e,r,i){let n=this.isContext?i:this.isValue?e:r;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,r){return this.getValue(e,r==null?void 0:r.parent,r==null?void 0:r.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};qd.default=C0;C0.prototype.__isYupRef=!0});var ure=I(VF=>{"use strict";Object.defineProperty(VF,"__esModule",{value:!0});VF.default=Jje;var Wje=_F(YF()),m0=_F(xc()),zje=_F(Dc());function _F(t){return t&&t.__esModule?t:{default:t}}function I0(){return I0=Object.assign||function(t){for(var e=1;e=0)&&(r[n]=t[n]);return r}function Jje(t){function e(r,i){let{value:n,path:s="",label:o,options:a,originalValue:l,sync:c}=r,u=Vje(r,["value","path","label","options","originalValue","sync"]),{name:g,test:f,params:h,message:p}=t,{parent:d,context:m}=a;function E(L){return zje.default.isRef(L)?L.getValue(n,d,m):L}function B(L={}){let K=(0,Wje.default)(I0({value:n,originalValue:l,label:o,path:L.path||s},h,L.params),E),J=new m0.default(m0.default.formatError(L.message||p,K),n,K.path,L.type||g);return J.params=K,J}let b=I0({path:s,parent:d,type:g,createError:B,resolve:E,options:a,originalValue:l},u);if(!c){try{Promise.resolve(f.call(b,n,b)).then(L=>{m0.default.isError(L)?i(L):L?i(null,L):i(B())})}catch(L){i(L)}return}let R;try{var H;if(R=f.call(b,n,b),typeof((H=R)==null?void 0:H.then)=="function")throw new Error(`Validation test of type: "${b.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(L){i(L);return}m0.default.isError(R)?i(R):R?i(null,R):i(B())}return e.OPTIONS=t,e}});var XF=I(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.getIn=gre;Jd.default=void 0;var _je=Yd(),Xje=t=>t.substr(0,t.length-1).substr(1);function gre(t,e,r,i=r){let n,s,o;return e?((0,_je.forEach)(e,(a,l,c)=>{let u=l?Xje(a):a;if(t=t.resolve({context:i,parent:n,value:r}),t.innerType){let g=c?parseInt(u,10):0;if(r&&g>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);n=r,r=r&&r[g],t=t.innerType}if(!c){if(!t.fields||!t.fields[u])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t._type}")`);n=r,r=r&&r[u],t=t.fields[u]}s=u,o=l?"["+a+"]":"."+a}),{schema:t,parent:n,parentPath:s}):{parent:n,parentPath:e,schema:t}}var Zje=(t,e,r,i)=>gre(t,e,r,i).schema,$je=Zje;Jd.default=$je});var hre=I(E0=>{"use strict";Object.defineProperty(E0,"__esModule",{value:!0});E0.default=void 0;var fre=eYe(Dc());function eYe(t){return t&&t.__esModule?t:{default:t}}var y0=class{constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let r of this.list)e.push(r);for(let[,r]of this.refs)e.push(r.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){fre.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){fre.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,r){if(this.list.has(e))return!0;let i,n=this.refs.values();for(;i=n.next(),!i.done;)if(r(i.value)===e)return!0;return!1}clone(){let e=new y0;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,r){let i=this.clone();return e.list.forEach(n=>i.add(n)),e.refs.forEach(n=>i.add(n)),r.list.forEach(n=>i.delete(n)),r.refs.forEach(n=>i.delete(n)),i}};E0.default=y0});var Ma=I(w0=>{"use strict";Object.defineProperty(w0,"__esModule",{value:!0});w0.default=void 0;var pre=Ta(M$()),Xg=La(),tYe=Ta(Z$()),dre=Ta(a0()),B0=Ta(ure()),Cre=Ta(Nd()),rYe=Ta(Dc()),iYe=XF(),nYe=Ta(IF()),mre=Ta(xc()),Ire=Ta(hre());function Ta(t){return t&&t.__esModule?t:{default:t}}function ds(){return ds=Object.assign||function(t){for(var e=1;e{this.typeError(Xg.mixed.notType)}),this.type=(e==null?void 0:e.type)||"mixed",this.spec=ds({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e==null?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let r=Object.create(Object.getPrototypeOf(this));return r.type=this.type,r._typeError=this._typeError,r._whitelistError=this._whitelistError,r._blacklistError=this._blacklistError,r._whitelist=this._whitelist.clone(),r._blacklist=this._blacklist.clone(),r.exclusiveTests=ds({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,pre.default)(ds({},this.spec,e)),r}label(e){var r=this.clone();return r.spec.label=e,r}meta(...e){if(e.length===0)return this.spec.meta;let r=this.clone();return r.spec.meta=Object.assign(r.spec.meta||{},e[0]),r}withMutation(e){let r=this._mutate;this._mutate=!0;let i=e(this);return this._mutate=r,i}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let r=this,i=e.clone(),n=ds({},r.spec,i.spec);return i.spec=n,i._typeError||(i._typeError=r._typeError),i._whitelistError||(i._whitelistError=r._whitelistError),i._blacklistError||(i._blacklistError=r._blacklistError),i._whitelist=r._whitelist.merge(e._whitelist,e._blacklist),i._blacklist=r._blacklist.merge(e._blacklist,e._whitelist),i.tests=r.tests,i.exclusiveTests=r.exclusiveTests,i.withMutation(s=>{e.tests.forEach(o=>{s.test(o.OPTIONS)})}),i}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let r=this;if(r.conditions.length){let i=r.conditions;r=r.clone(),r.conditions=[],r=i.reduce((n,s)=>s.resolve(n,e),r),r=r.resolve(e)}return r}cast(e,r={}){let i=this.resolve(ds({value:e},r)),n=i._cast(e,r);if(e!==void 0&&r.assert!==!1&&i.isType(n)!==!0){let s=(0,Cre.default)(e),o=(0,Cre.default)(n);throw new TypeError(`The value of ${r.path||"field"} could not be cast to a value that satisfies the schema type: "${i._type}". - -attempted value: ${s} -`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,r){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,r={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=r,u=e;l||(u=this._cast(u,ds({assert:!1},r)));let g={value:u,path:s,options:r,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,dre.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,dre.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,r,i){let n=this.resolve(ds({},r,{value:e}));return typeof i=="function"?n._validate(e,r,i):new Promise((s,o)=>n._validate(e,r,(a,l)=>{a?o(a):s(l)}))}validateSync(e,r){let i=this.resolve(ds({},r,{value:e})),n;return i._validate(e,ds({},r,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,r){return this.validate(e,r).then(()=>!0,i=>{if(mre.default.isError(i))return!1;throw i})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(i){if(mre.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,pre.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=Xg.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Xg.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=Xg.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,B0.default)(r),s=r.exclusive||r.name&&i.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(i.exclusiveTests[r.name]=!!r.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===r.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let i=this.clone(),n=(0,nYe.default)(e).map(s=>new rYe.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new tYe.default(n,r)),i}typeError(e){var r=this.clone();return r._typeError=(0,B0.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=Xg.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,B0.default)({message:r,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,r=Xg.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,B0.default)({message:r,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:i}=e.spec;return{meta:i,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};w0.default=Do;Do.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])Do.prototype[`${t}At`]=function(e,r,i={}){let{parent:n,parentPath:s,schema:o}=(0,iYe.getIn)(this,e,r,i.context);return o[t](n&&n[s],ds({},i,{parent:n,path:e}))};for(let t of["equals","is"])Do.prototype[t]=Do.prototype.oneOf;for(let t of["not","nope"])Do.prototype[t]=Do.prototype.notOneOf;Do.prototype.optional=Do.prototype.notRequired});var yre=I(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});Wd.create=Ere;Wd.default=void 0;var oYe=sYe(Ma());function sYe(t){return t&&t.__esModule?t:{default:t}}var ZF=oYe.default,aYe=ZF;Wd.default=aYe;function Ere(){return new ZF}Ere.prototype=ZF.prototype});var Zg=I(Q0=>{"use strict";Object.defineProperty(Q0,"__esModule",{value:!0});Q0.default=void 0;var AYe=t=>t==null;Q0.default=AYe});var vre=I(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});zd.create=wre;zd.default=void 0;var lYe=Bre(Ma()),Qre=La(),bre=Bre(Zg());function Bre(t){return t&&t.__esModule?t:{default:t}}function wre(){return new b0}var b0=class extends lYe.default{constructor(){super({type:"boolean"});this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,bre.default)(r)||r===!0}})}isFalse(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,bre.default)(r)||r===!1}})}};zd.default=b0;wre.prototype=b0.prototype});var kre=I(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});Vd.create=Sre;Vd.default=void 0;var Ro=La(),Oa=xre(Zg()),cYe=xre(Ma());function xre(t){return t&&t.__esModule?t:{default:t}}var uYe=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,gYe=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,fYe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,hYe=t=>(0,Oa.default)(t)||t===t.trim(),pYe={}.toString();function Sre(){return new v0}var v0=class extends cYe.default{constructor(){super({type:"string"});this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===pYe?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=Ro.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,Oa.default)(i)||i.length===this.resolve(e)}})}min(e,r=Ro.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Oa.default)(i)||i.length>=this.resolve(e)}})}max(e,r=Ro.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(i){return(0,Oa.default)(i)||i.length<=this.resolve(e)}})}matches(e,r){let i=!1,n,s;return r&&(typeof r=="object"?{excludeEmptyString:i=!1,message:n,name:s}=r:n=r),this.test({name:s||"matches",message:n||Ro.string.matches,params:{regex:e},test:o=>(0,Oa.default)(o)||o===""&&i||o.search(e)!==-1})}email(e=Ro.string.email){return this.matches(uYe,{name:"email",message:e,excludeEmptyString:!0})}url(e=Ro.string.url){return this.matches(gYe,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Ro.string.uuid){return this.matches(fYe,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Ro.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:hYe})}lowercase(e=Ro.string.lowercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toLowerCase()})}uppercase(e=Ro.string.uppercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toUpperCase()})}};Vd.default=v0;Sre.prototype=v0.prototype});var Rre=I(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});_d.create=Pre;_d.default=void 0;var Rc=La(),Fc=Dre(Zg()),dYe=Dre(Ma());function Dre(t){return t&&t.__esModule?t:{default:t}}var CYe=t=>t!=+t;function Pre(){return new S0}var S0=class extends dYe.default{constructor(){super({type:"number"});this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!CYe(e)}min(e,r=Rc.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Fc.default)(i)||i>=this.resolve(e)}})}max(e,r=Rc.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Fc.default)(i)||i<=this.resolve(e)}})}lessThan(e,r=Rc.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(i){return(0,Fc.default)(i)||ithis.resolve(e)}})}positive(e=Rc.number.positive){return this.moreThan(0,e)}negative(e=Rc.number.negative){return this.lessThan(0,e)}integer(e=Rc.number.integer){return this.test({name:"integer",message:e,test:r=>(0,Fc.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Fc.default)(e)?e:e|0)}round(e){var r,i=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(i.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+i.join(", "));return this.transform(n=>(0,Fc.default)(n)?n:Math[e](n))}};_d.default=S0;Pre.prototype=S0.prototype});var Fre=I($F=>{"use strict";Object.defineProperty($F,"__esModule",{value:!0});$F.default=mYe;var IYe=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function mYe(t){var e=[1,4,5,6,7,10,11],r=0,i,n;if(n=IYe.exec(t)){for(var s=0,o;o=e[s];++s)n[o]=+n[o]||0;n[2]=(+n[2]||1)-1,n[3]=+n[3]||1,n[7]=n[7]?String(n[7]).substr(0,3):0,(n[8]===void 0||n[8]==="")&&(n[9]===void 0||n[9]==="")?i=+new Date(n[1],n[2],n[3],n[4],n[5],n[6],n[7]):(n[8]!=="Z"&&n[9]!==void 0&&(r=n[10]*60+n[11],n[9]==="+"&&(r=0-r)),i=Date.UTC(n[1],n[2],n[3],n[4],n[5]+r,n[6],n[7]))}else i=Date.parse?Date.parse(t):NaN;return i}});var Tre=I(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});Xd.create=eN;Xd.default=void 0;var EYe=x0(Fre()),Nre=La(),Lre=x0(Zg()),yYe=x0(Dc()),wYe=x0(Ma());function x0(t){return t&&t.__esModule?t:{default:t}}var tN=new Date(""),BYe=t=>Object.prototype.toString.call(t)==="[object Date]";function eN(){return new Zd}var Zd=class extends wYe.default{constructor(){super({type:"date"});this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,EYe.default)(e),isNaN(e)?tN:new Date(e))})})}_typeCheck(e){return BYe(e)&&!isNaN(e.getTime())}prepareParam(e,r){let i;if(yYe.default.isRef(e))i=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);i=n}return i}min(e,r=Nre.date.min){let i=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Lre.default)(n)||n>=this.resolve(i)}})}max(e,r=Nre.date.max){var i=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Lre.default)(n)||n<=this.resolve(i)}})}};Xd.default=Zd;Zd.INVALID_DATE=tN;eN.prototype=Zd.prototype;eN.INVALID_DATE=tN});var Ore=I((Ndt,Mre)=>{function QYe(t,e,r,i){var n=-1,s=t==null?0:t.length;for(i&&s&&(r=t[++n]);++n{function bYe(t){return function(e){return t==null?void 0:t[e]}}Kre.exports=bYe});var Gre=I((Tdt,Hre)=>{var vYe=Ure(),SYe={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},xYe=vYe(SYe);Hre.exports=xYe});var Yre=I((Mdt,jre)=>{var kYe=Gre(),PYe=gg(),DYe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,RYe="\\u0300-\\u036f",FYe="\\ufe20-\\ufe2f",NYe="\\u20d0-\\u20ff",LYe=RYe+FYe+NYe,TYe="["+LYe+"]",MYe=RegExp(TYe,"g");function OYe(t){return t=PYe(t),t&&t.replace(DYe,kYe).replace(MYe,"")}jre.exports=OYe});var Jre=I((Odt,qre)=>{var KYe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function UYe(t){return t.match(KYe)||[]}qre.exports=UYe});var zre=I((Kdt,Wre)=>{var HYe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function GYe(t){return HYe.test(t)}Wre.exports=GYe});var fie=I((Udt,Vre)=>{var _re="\\ud800-\\udfff",jYe="\\u0300-\\u036f",YYe="\\ufe20-\\ufe2f",qYe="\\u20d0-\\u20ff",JYe=jYe+YYe+qYe,Xre="\\u2700-\\u27bf",Zre="a-z\\xdf-\\xf6\\xf8-\\xff",WYe="\\xac\\xb1\\xd7\\xf7",zYe="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",VYe="\\u2000-\\u206f",_Ye=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",$re="A-Z\\xc0-\\xd6\\xd8-\\xde",XYe="\\ufe0e\\ufe0f",eie=WYe+zYe+VYe+_Ye,tie="['\u2019]",rie="["+eie+"]",ZYe="["+JYe+"]",iie="\\d+",$Ye="["+Xre+"]",nie="["+Zre+"]",sie="[^"+_re+eie+iie+Xre+Zre+$re+"]",eqe="\\ud83c[\\udffb-\\udfff]",tqe="(?:"+ZYe+"|"+eqe+")",rqe="[^"+_re+"]",oie="(?:\\ud83c[\\udde6-\\uddff]){2}",aie="[\\ud800-\\udbff][\\udc00-\\udfff]",$g="["+$re+"]",iqe="\\u200d",Aie="(?:"+nie+"|"+sie+")",nqe="(?:"+$g+"|"+sie+")",lie="(?:"+tie+"(?:d|ll|m|re|s|t|ve))?",cie="(?:"+tie+"(?:D|LL|M|RE|S|T|VE))?",uie=tqe+"?",gie="["+XYe+"]?",sqe="(?:"+iqe+"(?:"+[rqe,oie,aie].join("|")+")"+gie+uie+")*",oqe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",aqe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Aqe=gie+uie+sqe,lqe="(?:"+[$Ye,oie,aie].join("|")+")"+Aqe,cqe=RegExp([$g+"?"+nie+"+"+lie+"(?="+[rie,$g,"$"].join("|")+")",nqe+"+"+cie+"(?="+[rie,$g+Aie,"$"].join("|")+")",$g+"?"+Aie+"+"+lie,$g+"+"+cie,aqe,oqe,iie,lqe].join("|"),"g");function uqe(t){return t.match(cqe)||[]}Vre.exports=uqe});var pie=I((Hdt,hie)=>{var gqe=Jre(),fqe=zre(),hqe=gg(),pqe=fie();function dqe(t,e,r){return t=hqe(t),e=r?void 0:e,e===void 0?fqe(t)?pqe(t):gqe(t):t.match(e)||[]}hie.exports=dqe});var rN=I((Gdt,die)=>{var Cqe=Ore(),mqe=Yre(),Iqe=pie(),Eqe="['\u2019]",yqe=RegExp(Eqe,"g");function wqe(t){return function(e){return Cqe(Iqe(mqe(e).replace(yqe,"")),t,"")}}die.exports=wqe});var mie=I((jdt,Cie)=>{var Bqe=rN(),Qqe=Bqe(function(t,e,r){return t+(r?"_":"")+e.toLowerCase()});Cie.exports=Qqe});var Eie=I((Ydt,Iie)=>{var bqe=ZP(),vqe=rN(),Sqe=vqe(function(t,e,r){return e=e.toLowerCase(),t+(r?bqe(e):e)});Iie.exports=Sqe});var wie=I((qdt,yie)=>{var xqe=jg(),kqe=SF(),Pqe=jF();function Dqe(t,e){var r={};return e=Pqe(e,3),kqe(t,function(i,n,s){xqe(r,e(i,n,s),i)}),r}yie.exports=Dqe});var Qie=I((Jdt,iN)=>{iN.exports=function(t){return Bie(Rqe(t),t)};iN.exports.array=Bie;function Bie(t,e){var r=t.length,i=new Array(r),n={},s=r,o=Fqe(e),a=Nqe(t);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)n[s]||l(t[s],s,new Set);return i;function l(c,u,g){if(g.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch(d){f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!n[u]){n[u]=!0;var h=o.get(c)||new Set;if(h=Array.from(h),u=h.length){g.add(c);do{var p=h[--u];l(p,a.get(p),g)}while(u);g.delete(c)}i[--r]=c}}}function Rqe(t){for(var e=new Set,r=0,i=t.length;r{"use strict";Object.defineProperty(nN,"__esModule",{value:!0});nN.default=Lqe;var Tqe=k0(Ld()),Mqe=k0(Qie()),Oqe=Yd(),Kqe=k0(Dc()),Uqe=k0(qg());function k0(t){return t&&t.__esModule?t:{default:t}}function Lqe(t,e=[]){let r=[],i=[];function n(s,o){var a=(0,Oqe.split)(s)[0];~i.indexOf(a)||i.push(a),~e.indexOf(`${o}-${a}`)||r.push([o,a])}for(let s in t)if((0,Tqe.default)(t,s)){let o=t[s];~i.indexOf(s)||i.push(s),Kqe.default.isRef(o)&&o.isSibling?n(o.path,s):(0,Uqe.default)(o)&&"deps"in o&&o.deps.forEach(a=>n(a,s))}return Mqe.default.array(i,r).reverse()}});var Sie=I(sN=>{"use strict";Object.defineProperty(sN,"__esModule",{value:!0});sN.default=Hqe;function vie(t,e){let r=Infinity;return t.some((i,n)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(i))!==-1)return r=n,!0}),r}function Hqe(t){return(e,r)=>vie(t,e)-vie(t,r)}});var Nie=I($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});$d.create=xie;$d.default=void 0;var kie=Fo(Ld()),Pie=Fo(mie()),Gqe=Fo(Eie()),jqe=Fo(wie()),Yqe=Fo(YF()),qqe=Yd(),Die=La(),Jqe=Fo(bie()),Rie=Fo(Sie()),Wqe=Fo(a0()),zqe=Fo(xc()),oN=Fo(Ma());function Fo(t){return t&&t.__esModule?t:{default:t}}function ef(){return ef=Object.assign||function(t){for(var e=1;eObject.prototype.toString.call(t)==="[object Object]";function Vqe(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(i=>r.indexOf(i)===-1)}var _qe=(0,Rie.default)([]),P0=class extends oN.default{constructor(e){super({type:"object"});this.fields=Object.create(null),this._sortErrors=_qe,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch(n){i=null}return this.isType(i)?i:null}),e&&this.shape(e)})}_typeCheck(e){return Fie(e)||typeof e=="function"}_cast(e,r={}){var i;let n=super._cast(e,r);if(n===void 0)return this.getDefault();if(!this._typeCheck(n))return n;let s=this.fields,o=(i=r.stripUnknown)!=null?i:this.spec.noUnknown,a=this._nodes.concat(Object.keys(n).filter(g=>this._nodes.indexOf(g)===-1)),l={},c=ef({},r,{parent:l,__validating:r.__validating||!1}),u=!1;for(let g of a){let f=s[g],h=(0,kie.default)(n,g);if(f){let p,d=n[g];c.path=(r.path?`${r.path}.`:"")+g,f=f.resolve({value:d,context:r.context,parent:l});let m="spec"in f?f.spec:void 0,E=m==null?void 0:m.strict;if(m==null?void 0:m.strip){u=u||g in n;continue}p=!r.__validating||!E?f.cast(n[g],c):n[g],p!==void 0&&(l[g]=p)}else h&&!o&&(l[g]=n[g]);l[g]!==n[g]&&(u=!0)}return u?l:n}_validate(e,r={},i){let n=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:l=this.spec.abortEarly,recursive:c=this.spec.recursive}=r;o=[{schema:this,value:a},...o],r.__validating=!0,r.originalValue=a,r.from=o,super._validate(e,r,(u,g)=>{if(u){if(!zqe.default.isError(u)||l)return void i(u,g);n.push(u)}if(!c||!Fie(g)){i(n[0]||null,g);return}a=a||g;let f=this._nodes.map(h=>(p,d)=>{let m=h.indexOf(".")===-1?(r.path?`${r.path}.`:"")+h:`${r.path||""}["${h}"]`,E=this.fields[h];if(E&&"validate"in E){E.validate(g[h],ef({},r,{path:m,from:o,strict:!0,parent:g,originalValue:a[h]}),d);return}d(null)});(0,Wqe.default)({sync:s,tests:f,value:g,errors:n,endEarly:l,sort:this._sortErrors,path:r.path},i)})}clone(e){let r=super.clone(e);return r.fields=ef({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),i=r.fields;for(let[n,s]of Object.entries(this.fields)){let o=i[n];o===void 0?i[n]=s:o instanceof oN.default&&s instanceof oN.default&&(i[n]=s.concat(o))}return r.withMutation(()=>r.shape(i))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let i=this.fields[r];e[r]="default"in i?i.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(!!this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let i=this.clone(),n=Object.assign(i.fields,e);if(i.fields=n,i._sortErrors=(0,Rie.default)(Object.keys(n)),r.length){Array.isArray(r[0])||(r=[r]);let s=r.map(([o,a])=>`${o}-${a}`);i._excludedEdges=i._excludedEdges.concat(s)}return i._nodes=(0,Jqe.default)(n,i._excludedEdges),i}pick(e){let r={};for(let i of e)this.fields[i]&&(r[i]=this.fields[i]);return this.clone().withMutation(i=>(i.fields={},i.shape(r)))}omit(e){let r=this.clone(),i=r.fields;r.fields={};for(let n of e)delete i[n];return r.withMutation(()=>r.shape(i))}from(e,r,i){let n=(0,qqe.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,kie.default)(s,e)&&(o=ef({},s),i||delete o[e],o[r]=n(s)),o})}noUnknown(e=!0,r=Die.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let i=this.test({name:"noUnknown",exclusive:!0,message:r,test(n){if(n==null)return!0;let s=Vqe(this.schema,n);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return i.spec.noUnknown=e,i}unknown(e=!0,r=Die.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,jqe.default)(r,(i,n)=>e(n)))}camelCase(){return this.transformKeys(Gqe.default)}snakeCase(){return this.transformKeys(Pie.default)}constantCase(){return this.transformKeys(e=>(0,Pie.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,Yqe.default)(this.fields,r=>r.describe()),e}};$d.default=P0;function xie(t){return new P0(t)}xie.prototype=P0.prototype});var Tie=I(eC=>{"use strict";Object.defineProperty(eC,"__esModule",{value:!0});eC.create=Lie;eC.default=void 0;var aN=tf(Zg()),Xqe=tf(qg()),Zqe=tf(Nd()),AN=La(),$qe=tf(a0()),eJe=tf(xc()),tJe=tf(Ma());function tf(t){return t&&t.__esModule?t:{default:t}}function D0(){return D0=Object.assign||function(t){for(var e=1;e{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch(i){r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let i=super._cast(e,r);if(!this._typeCheck(i)||!this.innerType)return i;let n=!1,s=i.map((o,a)=>{let l=this.innerType.cast(o,D0({},r,{path:`${r.path||""}[${a}]`}));return l!==o&&(n=!0),l});return n?s:i}_validate(e,r={},i){var n,s;let o=[],a=r.sync,l=r.path,c=this.innerType,u=(n=r.abortEarly)!=null?n:this.spec.abortEarly,g=(s=r.recursive)!=null?s:this.spec.recursive,f=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(h,p)=>{if(h){if(!eJe.default.isError(h)||u)return void i(h,p);o.push(h)}if(!g||!c||!this._typeCheck(p)){i(o[0]||null,p);return}f=f||p;let d=new Array(p.length);for(let m=0;mc.validate(E,b,H)}(0,$qe.default)({sync:a,path:l,value:p,errors:o,endEarly:u,tests:d},i)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,Xqe.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,Zqe.default)(e));return r.innerType=e,r}length(e,r=AN.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,aN.default)(i)||i.length===this.resolve(e)}})}min(e,r){return r=r||AN.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,aN.default)(i)||i.length>=this.resolve(e)}})}max(e,r){return r=r||AN.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,aN.default)(i)||i.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(i,n,s)=>!e(i,n,s):i=>!!i;return this.transform(i=>i!=null?i.filter(r):i)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};eC.default=R0;Lie.prototype=R0.prototype});var Mie=I(tC=>{"use strict";Object.defineProperty(tC,"__esModule",{value:!0});tC.create=rJe;tC.default=void 0;var nJe=iJe(qg());function iJe(t){return t&&t.__esModule?t:{default:t}}function rJe(t){return new lN(t)}var lN=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,i={})=>{let n=this.builder(r,i);if(!(0,nJe.default)(n))throw new TypeError("lazy() functions must return a valid schema");return n.resolve(i)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,i){return this._resolve(e,r).validate(e,r,i)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,i){return this._resolve(r,i).validateAt(e,r,i)}validateSyncAt(e,r,i){return this._resolve(r,i).validateSyncAt(e,r,i)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},sJe=lN;tC.default=sJe});var Oie=I(cN=>{"use strict";Object.defineProperty(cN,"__esModule",{value:!0});cN.default=oJe;var AJe=aJe(La());function aJe(t){return t&&t.__esModule?t:{default:t}}function oJe(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{AJe.default[e][r]=t[e][r]})})}});var gN=I(cr=>{"use strict";Object.defineProperty(cr,"__esModule",{value:!0});cr.addMethod=lJe;Object.defineProperty(cr,"MixedSchema",{enumerable:!0,get:function(){return Kie.default}});Object.defineProperty(cr,"mixed",{enumerable:!0,get:function(){return Kie.create}});Object.defineProperty(cr,"BooleanSchema",{enumerable:!0,get:function(){return uN.default}});Object.defineProperty(cr,"bool",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"boolean",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"StringSchema",{enumerable:!0,get:function(){return Uie.default}});Object.defineProperty(cr,"string",{enumerable:!0,get:function(){return Uie.create}});Object.defineProperty(cr,"NumberSchema",{enumerable:!0,get:function(){return Hie.default}});Object.defineProperty(cr,"number",{enumerable:!0,get:function(){return Hie.create}});Object.defineProperty(cr,"DateSchema",{enumerable:!0,get:function(){return Gie.default}});Object.defineProperty(cr,"date",{enumerable:!0,get:function(){return Gie.create}});Object.defineProperty(cr,"ObjectSchema",{enumerable:!0,get:function(){return jie.default}});Object.defineProperty(cr,"object",{enumerable:!0,get:function(){return jie.create}});Object.defineProperty(cr,"ArraySchema",{enumerable:!0,get:function(){return Yie.default}});Object.defineProperty(cr,"array",{enumerable:!0,get:function(){return Yie.create}});Object.defineProperty(cr,"ref",{enumerable:!0,get:function(){return cJe.create}});Object.defineProperty(cr,"lazy",{enumerable:!0,get:function(){return uJe.create}});Object.defineProperty(cr,"ValidationError",{enumerable:!0,get:function(){return gJe.default}});Object.defineProperty(cr,"reach",{enumerable:!0,get:function(){return fJe.default}});Object.defineProperty(cr,"isSchema",{enumerable:!0,get:function(){return qie.default}});Object.defineProperty(cr,"setLocale",{enumerable:!0,get:function(){return hJe.default}});Object.defineProperty(cr,"BaseSchema",{enumerable:!0,get:function(){return pJe.default}});var Kie=Nc(yre()),uN=Nc(vre()),Uie=Nc(kre()),Hie=Nc(Rre()),Gie=Nc(Tre()),jie=Nc(Nie()),Yie=Nc(Tie()),cJe=Dc(),uJe=Mie(),gJe=rC(xc()),fJe=rC(XF()),qie=rC(qg()),hJe=rC(Oie()),pJe=rC(Ma());function rC(t){return t&&t.__esModule?t:{default:t}}function Jie(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Jie=function(){return t},t}function Nc(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Jie();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=i?Object.getOwnPropertyDescriptor(t,n):null;s&&(s.get||s.set)?Object.defineProperty(r,n,s):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}function lJe(t,e,r){if(!t||!(0,qie.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}});var Xie=I((gCt,nC)=>{"use strict";var mJe=process.env.TERM_PROGRAM==="Hyper",IJe=process.platform==="win32",zie=process.platform==="linux",fN={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},Vie=Object.assign({},fN,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),_ie=Object.assign({},fN,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:zie?"\u25B8":"\u276F",pointerSmall:zie?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});nC.exports=IJe&&!mJe?Vie:_ie;Reflect.defineProperty(nC.exports,"common",{enumerable:!1,value:fN});Reflect.defineProperty(nC.exports,"windows",{enumerable:!1,value:Vie});Reflect.defineProperty(nC.exports,"other",{enumerable:!1,value:_ie})});var js=I((fCt,hN)=>{"use strict";var EJe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),yJe=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Zie=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=s=>{let o=s.open=`[${s.codes[0]}m`,a=s.close=`[${s.codes[1]}m`,l=s.regex=new RegExp(`\\u001b\\[${s.codes[1]}m`,"g");return s.wrap=(c,u)=>{c.includes(a)&&(c=c.replace(l,a+o));let g=o+c+a;return u?g.replace(/\r*\n/g,`${a}$&${o}`):g},s},r=(s,o,a)=>typeof s=="function"?s(o):s.wrap(o,a),i=(s,o)=>{if(s===""||s==null)return"";if(t.enabled===!1)return s;if(t.visible===!1)return"";let a=""+s,l=a.includes(` -`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=r(t.styles[o[c]],a,l);return a},n=(s,o,a)=>{t.styles[s]=e({name:s,codes:o}),(t.keys[a]||(t.keys[a]=[])).push(s),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(c){t.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,t),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=yJe,t.hasColor=t.hasAnsi=s=>(t.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&t.ansiRegex.test(s)),t.alias=(s,o)=>{let a=typeof o=="string"?t[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),t.styles[s]=a,a.stack=[s]),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(l){t.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,t),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},t.theme=s=>{if(!EJe(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))t.alias(o,s[o]);return t},t.alias("unstyle",s=>typeof s=="string"&&s!==""?(t.ansiRegex.lastIndex=0,s.replace(t.ansiRegex,"")):""),t.alias("noop",s=>s),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=Xie(),t.define=n,t};hN.exports=Zie();hN.exports.create=Zie});var Mi=I(bt=>{"use strict";var wJe=Object.prototype.toString,Cs=js(),$ie=!1,pN=[],ene={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};bt.longest=(t,e)=>t.reduce((r,i)=>Math.max(r,e?i[e].length:i.length),0);bt.hasColor=t=>!!t&&Cs.hasColor(t);var N0=bt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);bt.nativeType=t=>wJe.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");bt.isAsyncFn=t=>bt.nativeType(t)==="asyncfunction";bt.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";bt.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;bt.scrollDown=(t=[])=>[...t.slice(1),t[0]];bt.scrollUp=(t=[])=>[t.pop(),...t];bt.reorder=(t=[])=>{let e=t.slice();return e.sort((r,i)=>r.index>i.index?1:r.index{let i=t.length,n=r===i?0:r<0?i-1:r,s=t[e];t[e]=t[n],t[n]=s};bt.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};bt.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};bt.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:i=` -`+r,width:n=80}=e;n-=((i+r).match(/[^\S\n]/g)||[]).length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=t.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),r+c.join(i)};bt.unmute=t=>{let e=t.stack.find(i=>Cs.keys.color.includes(i));return e?Cs[e]:t.stack.find(i=>i.slice(2)==="bg")?Cs[e.slice(2)]:i=>i};bt.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";bt.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i));if(e){let i=Cs["bg"+bt.pascal(e)];return i?i.black:t}let r=t.stack.find(i=>i.slice(0,2)==="bg");return r?Cs[r.slice(2).toLowerCase()]||t:Cs.none};bt.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i)),r=t.stack.find(i=>i.slice(0,2)==="bg");if(e&&!r)return Cs[ene[e]||e];if(r){let i=r.slice(2).toLowerCase(),n=ene[i];return n&&Cs["bg"+bt.pascal(n)]||t}return Cs.none};bt.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=r<10?"0"+r:r;return n+":"+s+" "+i};bt.set=(t={},e="",r)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:r;return!bt.isObject(a)&&s{let i=t[e]==null?e.split(".").reduce((n,s)=>n&&n[s],t):t[e];return i==null?r:i};bt.mixin=(t,e)=>{if(!N0(t))return e;if(!N0(e))return t;for(let r of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,r);if(i.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&N0(i.value)){let n=Object.getOwnPropertyDescriptor(t,r);N0(n.value)?t[r]=bt.merge({},t[r],e[r]):Reflect.defineProperty(t,r,i)}else Reflect.defineProperty(t,r,i);else Reflect.defineProperty(t,r,i)}return t};bt.merge=(...t)=>{let e={};for(let r of t)bt.mixin(e,r);return e};bt.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let i of Object.keys(r)){let n=r[i];typeof n=="function"?bt.define(t,i,n.bind(e)):bt.define(t,i,n)}};bt.onExit=t=>{let e=(r,i)=>{$ie||($ie=!0,pN.forEach(n=>n()),r===!0&&process.exit(128+i))};pN.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),pN.push(t)};bt.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};bt.defineExport=(t,e,r)=>{let i;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():r()}})}});var tne=I(nf=>{"use strict";nf.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};nf.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};nf.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};nf.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};nf.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var nne=I((dCt,rne)=>{"use strict";var ine=require("readline"),BJe=tne(),QJe=/^(?:\x1b)([a-zA-Z0-9])$/,bJe=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,vJe={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function SJe(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function xJe(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var L0=(t="",e={})=>{let r,i=P({name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t},e);if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=""+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=i.sequence||""),i.sequence=i.sequence||t||i.name,t==="\r")i.raw=void 0,i.name="return";else if(t===` -`)i.name="enter";else if(t===" ")i.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x7F"||t==="\b")i.name="backspace",i.meta=t.charAt(0)==="";else if(t===""||t==="")i.name="escape",i.meta=t.length===2;else if(t===" "||t===" ")i.name="space",i.meta=t.length===2;else if(t<="")i.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")i.name="number";else if(t.length===1&&t>="a"&&t<="z")i.name=t;else if(t.length===1&&t>="A"&&t<="Z")i.name=t.toLowerCase(),i.shift=!0;else if(r=QJe.exec(t))i.meta=!0,i.shift=/^[A-Z]$/.test(r[1]);else if(r=bJe.exec(t)){let n=[...t];n[0]===""&&n[1]===""&&(i.option=!0);let s=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),o=(r[3]||r[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=vJe[s],i.shift=SJe(s)||i.shift,i.ctrl=xJe(s)||i.ctrl}return i};L0.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let i=ine.createInterface({terminal:!0,input:r});ine.emitKeypressEvents(r,i);let n=(a,l)=>e(a,L0(a,l),i),s=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",n),i.resume(),()=>{r.isTTY&&r.setRawMode(s),r.removeListener("keypress",n),i.pause(),i.close()}};L0.action=(t,e,r)=>{let i=P(P({},BJe),r);return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};rne.exports=L0});var one=I((CCt,sne)=>{"use strict";sne.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let i=e[r];typeof i=="number"&&(i={interval:i}),kJe(t,r,i)}};function kJe(t,e,r={}){let i=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=r.interval||120;i.frames=r.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,t.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),t.once("close",()=>i.stop()),i.stop}});var lne=I((mCt,ane)=>{"use strict";var{define:PJe,width:DJe}=Mi(),Ane=class{constructor(e){let r=e.options;PJe(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=DJe(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e=P({},this);return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};ane.exports=Ane});var une=I((ICt,cne)=>{"use strict";var dN=Mi(),yi=js(),CN={default:yi.noop,noop:yi.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||dN.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||dN.complement(this.primary)},primary:yi.cyan,success:yi.green,danger:yi.magenta,strong:yi.bold,warning:yi.yellow,muted:yi.dim,disabled:yi.gray,dark:yi.dim.gray,underline:yi.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};CN.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(yi.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(yi.visible=t.styles.visible);let e=dN.merge({},CN,t.styles);delete e.merge;for(let r of Object.keys(yi))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});for(let r of Object.keys(yi.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});return e};cne.exports=CN});var fne=I((ECt,gne)=>{"use strict";var mN=process.platform==="win32",Ka=js(),RJe=Mi(),IN=_(P({},Ka.symbols),{upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Ka.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Ka.symbols.question,submitted:Ka.symbols.check,cancelled:Ka.symbols.cross},separator:{pending:Ka.symbols.pointerSmall,submitted:Ka.symbols.middot,cancelled:Ka.symbols.middot},radio:{off:mN?"( )":"\u25EF",on:mN?"(*)":"\u25C9",disabled:mN?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]});IN.merge=t=>{let e=RJe.merge({},Ka.symbols,IN,t.symbols);return delete e.merge,e};gne.exports=IN});var pne=I((yCt,hne)=>{"use strict";var FJe=une(),NJe=fne(),LJe=Mi();hne.exports=t=>{t.options=LJe.merge({},t.options.theme,t.options),t.symbols=NJe.merge(t.options),t.styles=FJe.merge(t.options)}});var Ene=I((dne,Cne)=>{"use strict";var mne=process.env.TERM_PROGRAM==="Apple_Terminal",TJe=js(),EN=Mi(),Ys=Cne.exports=dne,Er="[",Ine="\x07",yN=!1,HA=Ys.code={bell:Ine,beep:Ine,beginning:`${Er}G`,down:`${Er}J`,esc:Er,getPosition:`${Er}6n`,hide:`${Er}?25l`,line:`${Er}2K`,lineEnd:`${Er}K`,lineStart:`${Er}1K`,restorePosition:Er+(mne?"8":"u"),savePosition:Er+(mne?"7":"s"),screen:`${Er}2J`,show:`${Er}?25h`,up:`${Er}1J`},Lc=Ys.cursor={get hidden(){return yN},hide(){return yN=!0,HA.hide},show(){return yN=!1,HA.show},forward:(t=1)=>`${Er}${t}C`,backward:(t=1)=>`${Er}${t}D`,nextLine:(t=1)=>`${Er}E`.repeat(t),prevLine:(t=1)=>`${Er}F`.repeat(t),up:(t=1)=>t?`${Er}${t}A`:"",down:(t=1)=>t?`${Er}${t}B`:"",right:(t=1)=>t?`${Er}${t}C`:"",left:(t=1)=>t?`${Er}${t}D`:"",to(t,e){return e?`${Er}${e+1};${t+1}H`:`${Er}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Lc.left(-t):t>0?Lc.right(t):"",r+=e<0?Lc.up(-e):e>0?Lc.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:i,input:n,prompt:s,size:o,value:a}=t;if(i=EN.isPrimitive(i)?String(i):"",n=EN.isPrimitive(n)?String(n):"",a=EN.isPrimitive(a)?String(a):"",o){let l=Ys.cursor.up(o)+Ys.cursor.to(s.length),c=n.length-r;return c>0&&(l+=Ys.cursor.left(c)),l}if(a||e){let l=!n&&!!i?-i.length:-n.length+r;return e&&(l-=e.length),n===""&&i&&!s.includes(i)&&(l+=i.length),Ys.cursor.move(l)}}},wN=Ys.erase={screen:HA.screen,up:HA.up,down:HA.down,line:HA.line,lineEnd:HA.lineEnd,lineStart:HA.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return wN.line+Lc.to(0);let r=s=>[...TJe.unstyle(s)].length,i=t.split(/\r?\n/),n=0;for(let s of i)n+=1+Math.floor(Math.max(r(s)-1,0)/e);return(wN.line+Lc.prevLine()).repeat(n-1)+wN.line+Lc.to(0)}});var sf=I((wCt,yne)=>{"use strict";var MJe=require("events"),wne=js(),BN=nne(),OJe=one(),KJe=lne(),UJe=pne(),bn=Mi(),Tc=Ene(),T0=class extends MJe{constructor(e={}){super();this.name=e.name,this.type=e.type,this.options=e,UJe(this),OJe(this),this.state=new KJe(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=GJe(this.options.margin),this.setMaxListeners(0),HJe(this)}async keypress(e,r={}){this.keypressed=!0;let i=BN.action(e,BN(e,r),this.options.actions);this.state.keypress=i,this.emit("keypress",e,i),this.emit("state",this.state.clone());let n=this.options[i.action]||this[i.action]||this.dispatch;if(typeof n=="function")return await n.call(this,e,i);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Tc.code.beep)}cursorHide(){this.stdout.write(Tc.cursor.hide()),bn.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Tc.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Tc.cursor.down(e)+Tc.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:i}=this.sections(),{cursor:n,initial:s="",input:o="",value:a=""}=this,l=this.state.size=i.length,c={after:r,cursor:n,initial:s,input:o,prompt:e,size:l,value:a},u=Tc.cursor.restore(c);u&&this.stdout.write(u)}sections(){let{buffer:e,input:r,prompt:i}=this.state;i=wne.unstyle(i);let n=wne.unstyle(e),s=n.indexOf(i),o=n.slice(0,s),l=n.slice(s).split(` -`),c=l[0],u=l[l.length-1],f=(i+(r?" "+r:"")).length,h=fe.call(this,this.value),this.result=()=>i.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let n=r.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=r&&r[e]!=null?r[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,r,i);return!g&&r&&r[e]?this.resolve(c,s,r,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,i=this.state;return i.timer=r,bn.isObject(e)&&(e=e[i.status]||e.pending),bn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return bn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,i=this.state;i.timer=r;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return bn.isObject(s)&&(s=s[i.status]||s.pending),bn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,r){let i=await this.element("pointer",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===r,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=bn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,r){let i=await this.element("indicator",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return bn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return bn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return bn.resolve(this,e,...r)}get base(){return T0.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||bn.height(this.stdout,25)}get width(){return this.options.columns||bn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,i=[r,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function HJe(t){let e=n=>t[n]===void 0||typeof t[n]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(t.options)){if(r.includes(n)||/^on[A-Z]/.test(n))continue;let s=t.options[n];typeof s=="function"&&e(n)?i.includes(n)||(t[n]=s.bind(t)):typeof t[n]!="function"&&(t[n]=s)}}function GJe(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=n=>n%2==0?` -`:" ",i=[];for(let n=0;n<4;n++){let s=r(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}yne.exports=T0});var bne=I((BCt,Bne)=>{"use strict";var jJe=Mi(),Qne={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return Qne.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};Bne.exports=(t,e={})=>{let r=jJe.merge({},Qne,e.roles);return r[t]||r.default}});var sC=I((QCt,vne)=>{"use strict";var YJe=js(),qJe=sf(),JJe=bne(),M0=Mi(),{reorder:QN,scrollUp:WJe,scrollDown:zJe,isObject:Sne,swap:VJe}=M0,xne=class extends qJe{constructor(e){super(e);this.cursorHide(),this.maxSelected=e.maxSelected||Infinity,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Sne(r)&&(r=Object.keys(r)),Array.isArray(r)?(i!=null&&(this.index=this.findIndex(i)),r.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(r=i),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l(this.state.loadingChoices=!1,o))}async toChoice(e,r,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=JJe(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,M0.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,YJe.unstyle(e.message).length));let o=P({},e);return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,i){let n=await this.toChoice(e,r,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,r,i){let n=P({name:"New choice name?",editable:!0,newChoice:!0},e),s=await this.addChoice(n,r,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(n=>this.toggle(n,r));let i=e.parent;for(;i;){let n=i.choices.filter(s=>this.isDisabled(s));i.enabled=n.every(s=>s.enabled===!0),i=i.parent}return kne(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=i=>{let n=Number(i);if(n>this.choices.length-1)return this.alert();let s=this.focused,o=this.choices.find(a=>n===a.index);if(!o.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(o)===-1){let a=QN(this.choices),l=a.indexOf(o);if(s.index>l){let c=a.slice(l,l+this.limit),u=a.filter(g=>!c.includes(g));this.choices=c.concat(u)}else{let c=l-this.limit+1;this.choices=a.slice(c).concat(a.slice(0,c))}}return this.index=this.choices.indexOf(o),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(i=>{let n=this.choices.length,s=this.num,o=(a=!1,l)=>{clearTimeout(this.numberTimeout),a&&(l=r(s)),this.num="",i(l)};if(s==="0"||s.length===1&&Number(s+"0")>n)return o(!0);if(Number(s)>n)return o(!1,this.alert());this.numberTimeout=setTimeout(()=>o(!0),this.delay)})}home(){return this.choices=QN(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=QN(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===0?this.alert():e>r&&i===0?this.scrollUp():(this.index=(i-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===r-1?this.alert():e>r&&i===r-1?this.scrollDown():(this.index=(i+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=WJe(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=zJe(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){VJe(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(i=>e[i]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(i=>!this.isDisabled(i));return e.enabled&&r.every(i=>this.isEnabled(i))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((i,n)=>(i[n]=this.find(n,r),i),{})}filter(e,r){let i=(a,l)=>[a.name,l].includes(e),n=typeof e=="function"?e:i,o=(this.options.multiple?this.state._choices:this.choices).filter(n);return r?o.map(a=>a[r]):o}find(e,r){if(Sne(e))return r?e[r]:e;let i=(o,a)=>[o.name,a].includes(e),n=typeof e=="function"?e:i,s=this.choices.find(n);if(s)return r?s[r]:s}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(o=>o.newChoice))return this.alert();let{reorder:r,sort:i}=this.options,n=this.multiple===!0,s=this.selected;return s===void 0?this.alert():(Array.isArray(s)&&r!==!1&&i!==!0&&(s=M0.reorder(s)),this.value=n?s.map(o=>o.name):s.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(i=>i.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let i=this.find(r);i&&(this.initial=i.index,this.focus(i,!0))}}}get choices(){return kne(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:i}=this,n=e.limit||this._limit||r.limit||i.length;return Math.min(n,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function kne(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(M0.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let i=r.choices.filter(n=>!t.isDisabled(n));r.enabled=i.every(n=>n.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}vne.exports=xne});var GA=I((bCt,Pne)=>{"use strict";var _Je=sC(),bN=Mi(),Dne=class extends _Je{constructor(e){super(e);this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let i=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!bN.hasColor(i)&&(i=this.styles.strong(i)),this.resolve(i,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await this.indicator(e,r)+(e.pad||""),o=await this.resolve(e.hint,this.state,e,r);o&&!bN.hasColor(o)&&(o=this.styles.muted(o));let a=this.indent(e),l=await this.choiceMessage(e,r),c=()=>[this.margin[3],a+n+s,l,this.margin[1],o].filter(Boolean).join(" ");return e.role==="heading"?c():e.disabled?(bN.hasColor(l)||(l=this.styles.disabled(l)),c()):(i&&(l=this.styles.em(l)),c())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(s,o)=>await this.renderChoice(s,o)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let i=this.margin[0]+r.join(` -`),n;return this.options.choicesHeader&&(n=await this.resolve(this.options.choicesHeader,this.state)),[n,i].filter(Boolean).join(` -`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,i="",n=await this.header(),s=await this.prefix(),o=await this.separator(),a=await this.message();this.options.promptLine!==!1&&(i=[s,a,o,""].join(" "),this.state.prompt=i);let l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();l&&(i+=l),c&&!i.includes(c)&&(i+=" "+c),e&&!l&&!u.trim()&&this.multiple&&this.emptyError!=null&&(i+=this.styles.danger(this.emptyError)),this.clear(r),this.write([n,i,u,g].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Pne.exports=Dne});var Nne=I((vCt,Rne)=>{"use strict";var XJe=GA(),ZJe=(t,e)=>{let r=t.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(r),o=e(i.slice(s,s+r.length));return s>=0?i.slice(0,s)+o+i.slice(s+r.length):i}},Fne=class extends XJe{constructor(e){super(e);this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:i}=this.state;return this.input=i.slice(0,r)+e+i.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let i=e.toLowerCase();return r.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=ZJe(this.input,e),i=this.choices;this.choices=i.map(n=>_(P({},n),{message:r(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Rne.exports=Fne});var SN=I((SCt,Lne)=>{"use strict";var vN=Mi();Lne.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||t.styles.placeholder,l=vN.inverse(t.styles.primary),c=d=>l(t.styles.black(d)),u=r,g=" ",f=c(g);if(t.blink&&t.blink.off===!0&&(c=d=>d,f=""),s&&n===0&&i===""&&r==="")return c(g);if(s&&n===0&&(r===i||r===""))return c(i[0])+a(i.slice(1));i=vN.isPrimitive(i)?`${i}`:"",r=vN.isPrimitive(r)?`${r}`:"";let h=i&&i.startsWith(r)&&i!==r,p=h?c(i[r.length]):f;if(n!==r.length&&s===!0&&(u=r.slice(0,n)+c(r[n])+r.slice(n+1),p=""),s===!1&&(p=""),h){let d=t.styles.unstyle(u+p);return u+p+a(i.slice(d.length))}return u+p}});var O0=I((xCt,Tne)=>{"use strict";var $Je=js(),e3e=GA(),t3e=SN(),Mne=class extends e3e{constructor(e){super(_(P({},e),{multiple:!0}));this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:i,input:n}=r;return r.value=r.input=n.slice(0,i)+e+n.slice(i),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:i}=e;return e.value=e.input=i.slice(0,r-1)+i.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:i}=e;if(i[r]===void 0)return this.alert();let n=`${i}`.slice(0,r)+`${i}`.slice(r+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:i}=e;return r&&r.startsWith(i)&&i!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let i=await this.resolve(e.separator,this.state,e,r)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,d=this.index===r,m=e.validate||(()=>!0),E=await this.choiceSeparator(e,r),B=e.message;this.align==="right"&&(B=B.padStart(this.longest+1," ")),this.align==="left"&&(B=B.padEnd(this.longest+1," "));let b=this.values[a]=c||o,R=c?"success":"dark";await m.call(e,b,this.state)!==!0&&(R="danger");let L=n[R](await this.indicator(e,r))+(e.pad||""),K=this.indent(e),J=()=>[K,L,B+E,c,p].filter(Boolean).join(" ");if(i.submitted)return B=$Je.unstyle(B),c=g(c),p="",J();if(e.format)c=await e.format.call(this,c,e,r);else{let ne=this.styles.muted;c=t3e(this,{input:c,initial:o,pos:s,showCursor:d,color:ne})}return this.isValue(c)||(c=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,b,e,r)),d&&(B=f(B)),e.error?c+=(c?" ":"")+h(e.error.trim()):e.hint&&(c+=(c?" ":"")+u(e.hint.trim())),J()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Tne.exports=Mne});var xN=I((kCt,One)=>{"use strict";var r3e=O0(),i3e=()=>{throw new Error("expected prompt to have a custom authenticate method")},Kne=(t=i3e)=>{class e extends r3e{constructor(i){super(i)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(i){return Kne(i)}}return e};One.exports=Kne()});var Gne=I((PCt,Une)=>{"use strict";var n3e=xN();function s3e(t,e){return t.username===this.options.username&&t.password===this.options.password}var Hne=(t=s3e)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(i){return this.options.showPassword?i:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(i.length))}}];class r extends n3e.create(t){constructor(n){super(_(P({},n),{choices:e}))}static create(n){return Hne(n)}}return r};Une.exports=Hne()});var K0=I((DCt,jne)=>{"use strict";var o3e=sf(),{isPrimitive:a3e,hasColor:A3e}=Mi(),Yne=class extends o3e{constructor(e){super(e);this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:i}=this;return i.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return a3e(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return A3e(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=this.styles.muted(this.default),a=[i,s,o,n].filter(Boolean).join(" ");this.state.prompt=a;let l=await this.header(),c=this.value=this.cast(e),u=await this.format(c),g=await this.error()||await this.hint(),f=await this.footer();g&&!a.includes(g)&&(u+=" "+g),a+=" "+u,this.clear(r),this.write([l,a,f].filter(Boolean).join(` -`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};jne.exports=Yne});var Wne=I((RCt,qne)=>{"use strict";var l3e=K0(),Jne=class extends l3e{constructor(e){super(e);this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};qne.exports=Jne});var _ne=I((FCt,zne)=>{"use strict";var c3e=GA(),u3e=O0(),of=u3e.prototype,Vne=class extends c3e{constructor(e){super(_(P({},e),{multiple:!0}));this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():of.dispatch.call(this,e,r)}append(e,r){return of.append.call(this,e,r)}delete(e,r){return of.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?of.next.call(this):super.next()}prev(){return this.focused.editable?of.prev.call(this):super.prev()}async indicator(e,r){let i=e.indicator||"",n=e.editable?i:super.indicator(e,r);return await this.resolve(n,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?of.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let i=r.parent?this.value[r.parent.name]:this.value;if(r.editable?i=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(i=r.enabled===!0),e=await r.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};zne.exports=Vne});var Mc=I((NCt,Xne)=>{"use strict";var g3e=sf(),f3e=SN(),{isPrimitive:h3e}=Mi(),Zne=class extends g3e{constructor(e){super(e);this.initial=h3e(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let i=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!i||i.name!=="return")?this.append(` -`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:i}=this.state;this.input=`${i}`.slice(0,r)+e+`${i}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),i=this.input.slice(e),n=r.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):f3e(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),i=await this.separator(),n=await this.message(),s=[r,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(` -`)),this.restore()}};Xne.exports=Zne});var ese=I((LCt,$ne)=>{"use strict";var p3e=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),U0=t=>p3e(t).filter(Boolean);$ne.exports=(t,e={},r="")=>{let{past:i=[],present:n=""}=e,s,o;switch(t){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:U0([r,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:U0([...s,r]),present:o};case"save":return{past:U0([...i,r]),present:""};case"remove":return o=U0(i.filter(a=>a!==r)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${t}"`)}}});var kN=I((TCt,tse)=>{"use strict";var d3e=Mc(),rse=ese(),ise=class extends d3e{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let i=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=rse(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=rse("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};tse.exports=ise});var ose=I((MCt,nse)=>{"use strict";var C3e=Mc(),sse=class extends C3e{format(){return""}};nse.exports=sse});var lse=I((OCt,ase)=>{"use strict";var m3e=Mc(),Ase=class extends m3e{constructor(e={}){super(e);this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};ase.exports=Ase});var gse=I((KCt,cse)=>{"use strict";var I3e=GA(),use=class extends I3e{constructor(e){super(_(P({},e),{multiple:!0}))}};cse.exports=use});var PN=I((UCt,fse)=>{"use strict";var E3e=Mc(),hse=class extends E3e{constructor(e={}){super(P({style:"number"},e));this.min=this.isValue(e.min)?this.toNumber(e.min):-Infinity,this.max=this.isValue(e.max)?this.toNumber(e.max):Infinity,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,i=this.toNumber(this.input);return i>this.max+r?this.alert():(this.input=`${i+r}`,this.render())}down(e){let r=e||this.minor,i=this.toNumber(this.input);return ithis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};fse.exports=hse});var dse=I((HCt,pse)=>{pse.exports=PN()});var Ise=I((GCt,Cse)=>{"use strict";var y3e=Mc(),mse=class extends y3e{constructor(e){super(e);this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Cse.exports=mse});var Bse=I((jCt,Ese)=>{"use strict";var w3e=js(),B3e=sC(),yse=Mi(),wse=class extends B3e{constructor(e={}){super(e);this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` - `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let i=0;i=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){if(this.scaleKey===!1||this.state.submitted)return"";let e=this.scale.map(i=>` ${i.name} - ${i.message}`);return["",...e].map(i=>this.styles.muted(i)).join(` -`)}renderScaleHeading(e){let r=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-r.join("").length,n=Math.round(i/(r.length-1)),o=r.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,r,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,i);let n=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let i=e.scale.map(s=>this.scaleIndicator(e,s,r)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await e.hint;s&&!yse.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,r),u=await this.renderScale(e,r),g=this.margin[1]+this.margin[3];this.scaleLength=w3e.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=yse.wordWrap(c,{width:this.widths[0],newline:a}).split(` -`).map(p=>o(p)+this.margin[1]);return i&&(u=this.styles.info(u),h=h.map(p=>this.styles.info(p))),h[0]+=u,this.linebreak&&h.push(""),[l+n,h.join(` -`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(n,s)=>await this.renderChoice(n,s)),r=await Promise.all(e),i=await this.renderScaleHeading();return this.margin[0]+[i,...r.map(n=>n.join(" "))].join(` -`)}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o="";this.options.promptLine!==!1&&(o=[i,s,n,""].join(" "),this.state.prompt=o);let a=await this.header(),l=await this.format(),c=await this.renderScaleKey(),u=await this.error()||await this.hint(),g=await this.renderChoices(),f=await this.footer(),h=this.emptyError;l&&(o+=l),u&&!o.includes(u)&&(o+=" "+u),e&&!l&&!g.trim()&&this.multiple&&h!=null&&(o+=this.styles.danger(h)),this.clear(r),this.write([a,o,c,g,f].filter(Boolean).join(` -`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};Ese.exports=wse});var Sse=I((YCt,Qse)=>{"use strict";var bse=js(),Q3e=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",vse=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Q3e(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},b3e=async(t={},e={},r=i=>i)=>{let i=new Set,n=t.fields||[],s=t.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});uR.name===E.key);E.field=n.find(R=>R.name===E.key),b||(b=new vse(E),a.push(b)),b.lines.push(E.line-1);continue}let d=o[o.length-1];d.type==="text"&&d.line===c?d.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};Qse.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),i=P(P({},e.values),e.initial),{tabstops:n,items:s,keys:o}=await b3e(e,i),a=DN("result",t,e),l=DN("format",t,e),c=DN("validate",t,e,!0),u=t.isValue.bind(t);return async(g={},f=!1)=>{let h=0;g.required=r,g.items=s,g.keys=o,g.output="";let p=async(B,b,R,H)=>{let L=await c(B,b,R,H);return L===!1?"Invalid field "+R.name:L};for(let B of n){let b=B.value,R=B.key;if(B.type!=="template"){b&&(g.output+=b);continue}if(B.type==="template"){let H=s.find(q=>q.name===R);e.required===!0&&g.required.add(H.name);let L=[H.input,g.values[H.value],H.value,b].find(u),J=(H.field||{}).message||B.inner;if(f){let q=await p(g.values[R],g,H,h);if(q&&typeof q=="string"||q===!1){g.invalid.set(R,q);continue}g.invalid.delete(R);let A=await a(g.values[R],g,H,h);g.output+=bse.unstyle(A);continue}H.placeholder=!1;let ne=b;b=await l(b,g,H,h),L!==b?(g.values[R]=L,b=t.styles.typing(L),g.missing.delete(J)):(g.values[R]=void 0,L=`<${J}>`,b=t.styles.primary(L),H.placeholder=!0,g.required.has(R)&&g.missing.add(J)),g.missing.has(J)&&g.validating&&(b=t.styles.warning(L)),g.invalid.has(R)&&g.validating&&(b=t.styles.danger(L)),h===g.index&&(ne!==b?b=t.styles.underline(b):b=t.styles.heading(bse.unstyle(b))),h++}b&&(g.output+=b)}let d=g.output.split(` -`).map(B=>" "+B),m=s.length,E=0;for(let B of s)g.invalid.has(B.name)&&B.lines.forEach(b=>{d[b][0]===" "&&(d[b]=g.styles.danger(g.symbols.bullet)+d[b].slice(1))}),t.isValue(g.values[B.name])&&E++;return g.completed=(E/m*100).toFixed(0),g.output=d.join(` -`),g.output}};function DN(t,e,r,i){return(n,s,o,a)=>typeof o.field[t]=="function"?o.field[t].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var Pse=I((qCt,xse)=>{"use strict";var v3e=js(),S3e=Sse(),x3e=sf(),kse=class extends x3e{constructor(e){super(e);this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await S3e(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:i,size:n}=this.state,s=[this.options.newline,` -`].find(B=>B!=null),o=await this.prefix(),a=await this.separator(),l=await this.message(),c=[o,l,a].filter(Boolean).join(" ");this.state.prompt=c;let u=await this.header(),g=await this.error()||"",f=await this.hint()||"",h=i?"":await this.interpolate(this.state),p=this.state.key=r[e]||"",d=await this.format(p),m=await this.footer();d&&(c+=" "+d),f&&!d&&this.state.completed===0&&(c+=" "+f),this.clear(n);let E=[u,c,h,m,g.trim()];this.write(E.filter(Boolean).join(s)),this.restore()}getItem(e){let{items:r,keys:i,index:n}=this.state,s=r.find(o=>o.name===i[n]);return s&&s.input!=null&&(this.input=s.input,this.cursor=s.cursor),s}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:i,values:n}=this.state;if(e.size){let a="";for(let[l,c]of e)a+=`Invalid ${l}: ${c} -`;return this.state.error=a,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let o=v3e.unstyle(i).split(` -`).map(a=>a.slice(1)).join(` -`);return this.value={values:n,result:o},super.submit()}};xse.exports=kse});var Fse=I((JCt,Dse)=>{"use strict";var k3e="(Use + to sort)",P3e=GA(),Rse=class extends P3e{constructor(e){super(_(P({},e),{reorder:!1,sort:!0,multiple:!0}));this.state.hint=[this.options.hint,k3e].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let i=await super.renderChoice(e,r),n=this.symbols.identicalTo+" ",s=this.index===r&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${r+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Dse.exports=Rse});var Tse=I((WCt,Nse)=>{"use strict";var D3e=sC(),Lse=class extends D3e{constructor(e={}){super(e);if(this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(i=>this.styles.muted(i)),this.state.header=r.join(` - `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let i of r)i.scale=R3e(5,this.options),i.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],i=r.selected;return e.scale.forEach(n=>n.selected=!1),r.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=b=>(b?this.styles.success("\u25C9"):"\u25EF")+o,u=r+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,r),h=this.indent(e),p=h+e.scale.map((b,R)=>c(R===e.scaleIdx)).join(a),d=b=>b===e.scaleIdx?g(b):b,m=h+e.scale.map((b,R)=>d(R)).join(l),E=()=>[u,f].filter(Boolean).join(" "),B=()=>[E(),p,m," "].filter(Boolean).join(` -`);return i&&(p=this.styles.cyan(p),m=this.styles.cyan(m)),B()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(i,n)=>await this.renderChoice(i,n)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` -`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=[i,s,n].filter(Boolean).join(" ");this.state.prompt=o;let a=await this.header(),l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();(l||!c)&&(o+=" "+l),c&&!o.includes(c)&&(o+=" "+c),e&&!l&&!u&&this.multiple&&this.type!=="form"&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([o,a,u,g].filter(Boolean).join(` -`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function R3e(t,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>P({},i));let r=[];for(let i=1;i{Mse.exports=kN()});var Hse=I((VCt,Kse)=>{"use strict";var F3e=K0(),Use=class extends F3e{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([r,c,l].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Kse.exports=Use});var Yse=I((_Ct,Gse)=>{"use strict";var N3e=GA(),jse=class extends N3e{constructor(e){super(e);if(typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let i=await super.toChoices(e,r);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Gse.exports=jse});var Jse=I(RN=>{"use strict";var qse=Mi(),ti=(t,e)=>{qse.defineExport(RN,t,e),qse.defineExport(RN,t.toLowerCase(),e)};ti("AutoComplete",()=>Nne());ti("BasicAuth",()=>Gne());ti("Confirm",()=>Wne());ti("Editable",()=>_ne());ti("Form",()=>O0());ti("Input",()=>kN());ti("Invisible",()=>ose());ti("List",()=>lse());ti("MultiSelect",()=>gse());ti("Numeral",()=>dse());ti("Password",()=>Ise());ti("Scale",()=>Bse());ti("Select",()=>GA());ti("Snippet",()=>Pse());ti("Sort",()=>Fse());ti("Survey",()=>Tse());ti("Text",()=>Ose());ti("Toggle",()=>Hse());ti("Quiz",()=>Yse())});var zse=I((ZCt,Wse)=>{Wse.exports={ArrayPrompt:sC(),AuthPrompt:xN(),BooleanPrompt:K0(),NumberPrompt:PN(),StringPrompt:Mc()}});var aC=I(($Ct,Vse)=>{"use strict";var _se=require("assert"),FN=require("events"),jA=Mi(),No=class extends FN{constructor(e,r){super();this.options=jA.merge({},e),this.answers=P({},r)}register(e,r){if(jA.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}_se.equal(typeof r,"function","expected a function");let i=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[i]=r:this.prompts[i]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(jA.merge({},this.options,r))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=jA.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=jA;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];_se(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](r),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),r.autofill&&l!=null?(a.value=a.input=l,r.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||sf()}static get prompts(){return Jse()}static get types(){return zse()}static get prompt(){let e=(r,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(r)};return jA.mixinEmitter(e,new FN),e}};jA.mixinEmitter(No,new FN);var NN=No.prompts;for(let t of Object.keys(NN)){let e=t.toLowerCase(),r=i=>new NN[t](i).run();No.prompt[e]=r,No[e]=r,No[t]||Reflect.defineProperty(No,t,{get:()=>NN[t]})}var oC=t=>{jA.defineExport(No,t,()=>No.types[t])};oC("ArrayPrompt");oC("AuthPrompt");oC("BooleanPrompt");oC("NumberPrompt");oC("StringPrompt");Vse.exports=No});var loe=I((Gmt,Aoe)=>{function K3e(t,e){for(var r=-1,i=t==null?0:t.length;++r{var U3e=XB(),H3e=jg();function G3e(t,e,r,i){var n=!r;r||(r={});for(var s=-1,o=e.length;++s{var j3e=Af(),Y3e=zg();function q3e(t,e){return t&&j3e(e,Y3e(e),t)}uoe.exports=q3e});var hoe=I((qmt,foe)=>{function J3e(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}foe.exports=J3e});var doe=I((Jmt,poe)=>{var W3e=Gs(),z3e=u0(),V3e=hoe(),_3e=Object.prototype,X3e=_3e.hasOwnProperty;function Z3e(t){if(!W3e(t))return V3e(t);var e=z3e(t),r=[];for(var i in t)i=="constructor"&&(e||!X3e.call(t,i))||r.push(i);return r}poe.exports=Z3e});var lf=I((Wmt,Coe)=>{var $3e=bF(),eWe=doe(),tWe=Hd();function rWe(t){return tWe(t)?$3e(t,!0):eWe(t)}Coe.exports=rWe});var Ioe=I((zmt,moe)=>{var iWe=Af(),nWe=lf();function sWe(t,e){return t&&iWe(e,nWe(e),t)}moe.exports=sWe});var UN=I((hC,cf)=>{var oWe=Ks(),Eoe=typeof hC=="object"&&hC&&!hC.nodeType&&hC,yoe=Eoe&&typeof cf=="object"&&cf&&!cf.nodeType&&cf,aWe=yoe&&yoe.exports===Eoe,woe=aWe?oWe.Buffer:void 0,Boe=woe?woe.allocUnsafe:void 0;function AWe(t,e){if(e)return t.slice();var r=t.length,i=Boe?Boe(r):new t.constructor(r);return t.copy(i),i}cf.exports=AWe});var HN=I((Vmt,Qoe)=>{function lWe(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{var cWe=Af(),uWe=f0();function gWe(t,e){return cWe(t,uWe(t),e)}boe.exports=gWe});var H0=I((Xmt,Soe)=>{var fWe=vF(),hWe=fWe(Object.getPrototypeOf,Object);Soe.exports=hWe});var GN=I((Zmt,xoe)=>{var pWe=$B(),dWe=H0(),CWe=f0(),mWe=RF(),IWe=Object.getOwnPropertySymbols,EWe=IWe?function(t){for(var e=[];t;)pWe(e,CWe(t)),t=dWe(t);return e}:mWe;xoe.exports=EWe});var Poe=I(($mt,koe)=>{var yWe=Af(),wWe=GN();function BWe(t,e){return yWe(t,wWe(t),e)}koe.exports=BWe});var Roe=I((eIt,Doe)=>{var QWe=DF(),bWe=GN(),vWe=lf();function SWe(t){return QWe(t,vWe,bWe)}Doe.exports=SWe});var Noe=I((tIt,Foe)=>{var xWe=Object.prototype,kWe=xWe.hasOwnProperty;function PWe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&kWe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}Foe.exports=PWe});var G0=I((rIt,Loe)=>{var Toe=kF();function DWe(t){var e=new t.constructor(t.byteLength);return new Toe(e).set(new Toe(t)),e}Loe.exports=DWe});var Ooe=I((iIt,Moe)=>{var RWe=G0();function FWe(t,e){var r=e?RWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}Moe.exports=FWe});var Uoe=I((nIt,Koe)=>{var NWe=/\w*$/;function LWe(t){var e=new t.constructor(t.source,NWe.exec(t));return e.lastIndex=t.lastIndex,e}Koe.exports=LWe});var qoe=I((sIt,Hoe)=>{var Goe=ac(),joe=Goe?Goe.prototype:void 0,Yoe=joe?joe.valueOf:void 0;function TWe(t){return Yoe?Object(Yoe.call(t)):{}}Hoe.exports=TWe});var jN=I((oIt,Joe)=>{var MWe=G0();function OWe(t,e){var r=e?MWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Joe.exports=OWe});var zoe=I((aIt,Woe)=>{var KWe=G0(),UWe=Ooe(),HWe=Uoe(),GWe=qoe(),jWe=jN(),YWe="[object Boolean]",qWe="[object Date]",JWe="[object Map]",WWe="[object Number]",zWe="[object RegExp]",VWe="[object Set]",_We="[object String]",XWe="[object Symbol]",ZWe="[object ArrayBuffer]",$We="[object DataView]",e8e="[object Float32Array]",t8e="[object Float64Array]",r8e="[object Int8Array]",i8e="[object Int16Array]",n8e="[object Int32Array]",s8e="[object Uint8Array]",o8e="[object Uint8ClampedArray]",a8e="[object Uint16Array]",A8e="[object Uint32Array]";function l8e(t,e,r){var i=t.constructor;switch(e){case ZWe:return KWe(t);case YWe:case qWe:return new i(+t);case $We:return UWe(t,r);case e8e:case t8e:case r8e:case i8e:case n8e:case s8e:case o8e:case a8e:case A8e:return jWe(t,r);case JWe:return new i;case WWe:case _We:return new i(t);case zWe:return HWe(t);case VWe:return new i;case XWe:return GWe(t)}}Woe.exports=l8e});var Xoe=I((AIt,Voe)=>{var c8e=Gs(),_oe=Object.create,u8e=function(){function t(){}return function(e){if(!c8e(e))return{};if(_oe)return _oe(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();Voe.exports=u8e});var YN=I((lIt,Zoe)=>{var g8e=Xoe(),f8e=H0(),h8e=u0();function p8e(t){return typeof t.constructor=="function"&&!h8e(t)?g8e(f8e(t)):{}}Zoe.exports=p8e});var eae=I((cIt,$oe)=>{var d8e=jd(),C8e=Qo(),m8e="[object Map]";function I8e(t){return C8e(t)&&d8e(t)==m8e}$oe.exports=I8e});var nae=I((uIt,tae)=>{var E8e=eae(),y8e=A0(),rae=l0(),iae=rae&&rae.isMap,w8e=iae?y8e(iae):E8e;tae.exports=w8e});var oae=I((gIt,sae)=>{var B8e=jd(),Q8e=Qo(),b8e="[object Set]";function v8e(t){return Q8e(t)&&B8e(t)==b8e}sae.exports=v8e});var cae=I((fIt,aae)=>{var S8e=oae(),x8e=A0(),Aae=l0(),lae=Aae&&Aae.isSet,k8e=lae?x8e(lae):S8e;aae.exports=k8e});var pae=I((hIt,uae)=>{var P8e=Gd(),D8e=loe(),R8e=XB(),F8e=goe(),N8e=Ioe(),L8e=UN(),T8e=HN(),M8e=voe(),O8e=Poe(),K8e=FF(),U8e=Roe(),H8e=jd(),G8e=Noe(),j8e=zoe(),Y8e=YN(),q8e=As(),J8e=Od(),W8e=nae(),z8e=Gs(),V8e=cae(),_8e=zg(),X8e=lf(),Z8e=1,$8e=2,eze=4,gae="[object Arguments]",tze="[object Array]",rze="[object Boolean]",ize="[object Date]",nze="[object Error]",fae="[object Function]",sze="[object GeneratorFunction]",oze="[object Map]",aze="[object Number]",hae="[object Object]",Aze="[object RegExp]",lze="[object Set]",cze="[object String]",uze="[object Symbol]",gze="[object WeakMap]",fze="[object ArrayBuffer]",hze="[object DataView]",pze="[object Float32Array]",dze="[object Float64Array]",Cze="[object Int8Array]",mze="[object Int16Array]",Ize="[object Int32Array]",Eze="[object Uint8Array]",yze="[object Uint8ClampedArray]",wze="[object Uint16Array]",Bze="[object Uint32Array]",rr={};rr[gae]=rr[tze]=rr[fze]=rr[hze]=rr[rze]=rr[ize]=rr[pze]=rr[dze]=rr[Cze]=rr[mze]=rr[Ize]=rr[oze]=rr[aze]=rr[hae]=rr[Aze]=rr[lze]=rr[cze]=rr[uze]=rr[Eze]=rr[yze]=rr[wze]=rr[Bze]=!0;rr[nze]=rr[fae]=rr[gze]=!1;function j0(t,e,r,i,n,s){var o,a=e&Z8e,l=e&$8e,c=e&eze;if(r&&(o=n?r(t,i,n,s):r(t)),o!==void 0)return o;if(!z8e(t))return t;var u=q8e(t);if(u){if(o=G8e(t),!a)return T8e(t,o)}else{var g=H8e(t),f=g==fae||g==sze;if(J8e(t))return L8e(t,a);if(g==hae||g==gae||f&&!n){if(o=l||f?{}:Y8e(t),!a)return l?O8e(t,N8e(o,t)):M8e(t,F8e(o,t))}else{if(!rr[g])return n?t:{};o=j8e(t,g,a)}}s||(s=new P8e);var h=s.get(t);if(h)return h;s.set(t,o),V8e(t)?t.forEach(function(m){o.add(j0(m,e,r,m,t,s))}):W8e(t)&&t.forEach(function(m,E){o.set(E,j0(m,e,r,E,t,s))});var p=c?l?U8e:K8e:l?X8e:_8e,d=u?void 0:p(t);return D8e(d||t,function(m,E){d&&(E=m,m=t[E]),R8e(o,E,j0(m,e,r,E,t,s))}),o}uae.exports=j0});var qN=I((pIt,dae)=>{var Qze=pae(),bze=1,vze=4;function Sze(t){return Qze(t,bze|vze)}dae.exports=Sze});var mae=I((dIt,Cae)=>{var xze=tF();function kze(t,e,r){return t==null?t:xze(t,e,r)}Cae.exports=kze});var Qae=I((wIt,Bae)=>{function Pze(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Bae.exports=Pze});var vae=I((BIt,bae)=>{var Dze=xd(),Rze=zP();function Fze(t,e){return e.length<2?t:Dze(t,Rze(e,0,-1))}bae.exports=Fze});var xae=I((QIt,Sae)=>{var Nze=Gg(),Lze=Qae(),Tze=vae(),Mze=Sc();function Oze(t,e){return e=Nze(e,t),t=Tze(t,e),t==null||delete t[Mze(Lze(e))]}Sae.exports=Oze});var Pae=I((bIt,kae)=>{var Kze=xae();function Uze(t,e){return t==null?!0:Kze(t,e)}kae.exports=Uze});var Kae=I((tEt,Oae)=>{Oae.exports={name:"@yarnpkg/cli",version:"3.1.0",license:"BSD-2-Clause",main:"./sources/index.ts",dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/shell":"workspace:^",chalk:"^3.0.0","ci-info":"^3.2.0",clipanion:"^3.0.1",semver:"^7.1.2",tslib:"^1.13.0",typanion:"^3.3.0",yup:"^0.32.9"},devDependencies:{"@types/semver":"^7.1.0","@types/yup":"^0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2",typescript:"^4.4.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",types:"./lib/index.d.ts",bin:null},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=12 <14 || 14.2 - 14.9 || >14.10.0"}}});var iL=I((SBt,QAe)=>{"use strict";QAe.exports=function(e,r){r===!0&&(r=0);var i=e.indexOf("://"),n=e.substring(0,i).split("+").filter(Boolean);return typeof r=="number"?n[r]:n}});var nL=I((xBt,bAe)=>{"use strict";var s4e=iL();function vAe(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=s4e(t);return t=t.substring(t.indexOf("://")+3),vAe(e)?!0:t.indexOf("@"){"use strict";var o4e=iL(),a4e=nL(),A4e=require("querystring");function l4e(t){t=(t||"").trim();var e={protocols:o4e(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),i=-1,n=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(a4e(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split("/"),e.protocol!=="file"?e.resource=s.shift():e.resource="",n=e.resource.split("@"),n.length===2&&(e.user=n[0],e.resource=n[1]),n=e.resource.split(":"),n.length===2&&(e.resource=n[0],n[1]?(e.port=Number(n[1]),isNaN(e.port)&&(e.port=null,s.unshift(n[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),n=e.pathname.split("#"),n.length===2&&(e.pathname=n[0],e.hash=n[1]),n=e.pathname.split("?"),n.length===2&&(e.pathname=n[0],e.search=n[1]),e.query=A4e.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}SAe.exports=l4e});var DAe=I((PBt,kAe)=>{"use strict";var c4e=typeof URL=="undefined"?require("url").URL:URL,PAe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);kAe.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new c4e(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];PAe(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])PAe(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var FAe=I((DBt,RAe)=>{"use strict";var u4e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},g4e=xAe(),f4e=DAe();function h4e(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":u4e(e))!=="object"&&(e={stripFragment:!1}),t=f4e(t,e));var r=g4e(t);return r}RAe.exports=h4e});var TAe=I((RBt,NAe)=>{"use strict";var p4e=FAe(),LAe=nL();function d4e(t){var e=p4e(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),LAe(e.protocols)||LAe(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}NAe.exports=d4e});var OAe=I((FBt,MAe)=>{"use strict";var C4e=TAe();function sL(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=C4e(t),r=e.resource.split("."),i=null;switch(e.toString=function(l){return sL.stringify(this,l)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}else{i=e.name.split("/"),i.length===2?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}else{i=e.name.split("/"),i.length===5?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}default:i=e.name.split("/");var n=i.length-1;if(i.length>=2){var s=i.indexOf("blob",2),o=i.indexOf("tree",2),a=i.indexOf("commit",2);n=s>0?s-1:o>0?o-1:a>0?a-1:n,e.owner=i.slice(0,n).join("/"),e.name=i[n],a&&(e.commit=i[n+2])}e.ref="",e.filepathtype="",e.filepath="",i.length>n+2&&["blob","tree"].indexOf(i[n+1])>=0&&(e.filepathtype=i[n+1],e.ref=i[n+2],i.length>n+3&&(e.filepath=i.slice(n+3).join("/"))),e.organization=e.owner;break}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}sL.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",i=t.user||"git",n=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+i+"@"+t.resource+r+"/"+t.full_name+n:i+"@"+t.resource+":"+t.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+t.resource+r+"/"+t.full_name+n;case"http":case"https":var s=t.token?m4e(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+t.full_name+n;default:return t.href}};function m4e(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}MAe.exports=sL});var NL=I((Obt,ole)=>{var M4e=jg(),O4e=Kg();function K4e(t,e,r){(r!==void 0&&!O4e(t[e],r)||r===void 0&&!(e in t))&&M4e(t,e,r)}ole.exports=K4e});var Ale=I((Kbt,ale)=>{var U4e=Hd(),H4e=Qo();function G4e(t){return H4e(t)&&U4e(t)}ale.exports=G4e});var ule=I((Ubt,lle)=>{var j4e=Ac(),Y4e=H0(),q4e=Qo(),J4e="[object Object]",W4e=Function.prototype,z4e=Object.prototype,cle=W4e.toString,V4e=z4e.hasOwnProperty,_4e=cle.call(Object);function X4e(t){if(!q4e(t)||j4e(t)!=J4e)return!1;var e=Y4e(t);if(e===null)return!0;var r=V4e.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&cle.call(r)==_4e}lle.exports=X4e});var LL=I((Hbt,gle)=>{function Z4e(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}gle.exports=Z4e});var hle=I((Gbt,fle)=>{var $4e=Af(),e5e=lf();function t5e(t){return $4e(t,e5e(t))}fle.exports=t5e});var Ele=I((jbt,ple)=>{var dle=NL(),r5e=UN(),i5e=jN(),n5e=HN(),s5e=YN(),Cle=Pd(),mle=As(),o5e=Ale(),a5e=Od(),A5e=zB(),l5e=Gs(),c5e=ule(),u5e=c0(),Ile=LL(),g5e=hle();function f5e(t,e,r,i,n,s,o){var a=Ile(t,r),l=Ile(e,r),c=o.get(l);if(c){dle(t,r,c);return}var u=s?s(a,l,r+"",t,e,o):void 0,g=u===void 0;if(g){var f=mle(l),h=!f&&a5e(l),p=!f&&!h&&u5e(l);u=l,f||h||p?mle(a)?u=a:o5e(a)?u=n5e(a):h?(g=!1,u=r5e(l,!0)):p?(g=!1,u=i5e(l,!0)):u=[]:c5e(l)||Cle(l)?(u=a,Cle(a)?u=g5e(a):(!l5e(a)||A5e(a))&&(u=s5e(l))):g=!1}g&&(o.set(l,u),n(u,l,i,s,o),o.delete(l)),dle(t,r,u)}ple.exports=f5e});var Ble=I((Ybt,yle)=>{var h5e=Gd(),p5e=NL(),d5e=BF(),C5e=Ele(),m5e=Gs(),I5e=lf(),E5e=LL();function wle(t,e,r,i,n){t!==e&&d5e(e,function(s,o){if(n||(n=new h5e),m5e(s))C5e(t,e,o,r,wle,i,n);else{var a=i?i(E5e(t,o),s,o+"",t,e,n):void 0;a===void 0&&(a=s),p5e(t,o,a)}},I5e)}yle.exports=wle});var ble=I((qbt,Qle)=>{var y5e=e0(),w5e=nF(),B5e=sF();function Q5e(t,e){return B5e(w5e(t,e,y5e),t+"")}Qle.exports=Q5e});var Sle=I((Jbt,vle)=>{var b5e=Kg(),v5e=Hd(),S5e=kd(),x5e=Gs();function k5e(t,e,r){if(!x5e(r))return!1;var i=typeof e;return(i=="number"?v5e(r)&&S5e(e,r.length):i=="string"&&e in r)?b5e(r[e],t):!1}vle.exports=k5e});var kle=I((Wbt,xle)=>{var P5e=ble(),D5e=Sle();function R5e(t){return P5e(function(e,r){var i=-1,n=r.length,s=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(s=t.length>3&&typeof s=="function"?(n--,s):void 0,o&&D5e(r[0],r[1],o)&&(s=n<3?void 0:s,n=1),e=Object(e);++i{var F5e=Ble(),N5e=kle(),L5e=N5e(function(t,e,r){F5e(t,e,r)});Ple.exports=L5e});var Wle=I(($vt,Jle)=>{var VL;Jle.exports=()=>(typeof VL=="undefined"&&(VL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),VL)});var $le=I(XL=>{function pf(t,e){if(typeof t=="string")return t;if(t){let r,i;if(Array.isArray(t)){for(r=0;r0)return(f=pf(n[g],u))?f.replace("*",c.substring(g.length-1)):Gc(i,c,1)}return Gc(i,c)}}function l6e(t,e={}){let r=0,i,n=e.browser,s=e.fields||["module","main"];for(n&&!s.includes("browser")&&s.unshift("browser");r{var eT;nce.exports=()=>(typeof eT=="undefined"&&(eT=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),eT)});var gce=I((aT,AT)=>{(function(t){aT&&typeof aT=="object"&&typeof AT!="undefined"?AT.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window!="undefined"?window.isWindows=t():typeof global!="undefined"?global.isWindows=t():typeof self!="undefined"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var dce=I((Dxt,fce)=>{"use strict";lT.ifExists=I6e;var mf=require("util"),Is=require("path"),hce=gce(),E6e=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,y6e={createPwshFile:!0,createCmdFile:hce(),fs:require("fs")},w6e=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function pce(t){let e=P(P({},y6e),t),r=e.fs;return e.fs_={chmod:r.chmod?mf.promisify(r.chmod):async()=>{},mkdir:mf.promisify(r.mkdir),readFile:mf.promisify(r.readFile),stat:mf.promisify(r.stat),unlink:mf.promisify(r.unlink),writeFile:mf.promisify(r.writeFile)},e}async function lT(t,e,r){let i=pce(r);await i.fs_.stat(t),await B6e(t,e,i)}function I6e(t,e,r){return lT(t,e,r).catch(()=>{})}function Q6e(t,e){return e.fs_.unlink(t).catch(()=>{})}async function B6e(t,e,r){let i=await S6e(t,r);return await b6e(e,r),v6e(t,e,i,r)}function b6e(t,e){return e.fs_.mkdir(Is.dirname(t),{recursive:!0})}function v6e(t,e,r,i){let n=pce(i),s=[{generator:P6e,extension:""}];return n.createCmdFile&&s.push({generator:k6e,extension:".cmd"}),n.createPwshFile&&s.push({generator:D6e,extension:".ps1"}),Promise.all(s.map(o=>x6e(t,e+o.extension,r,o.generator,n)))}function R6e(t,e){return Q6e(t,e)}function N6e(t,e){return F6e(t,e)}async function S6e(t,e){let n=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(E6e);if(!n){let s=Is.extname(t).toLowerCase();return{program:w6e.get(s)||null,additionalArgs:""}}return{program:n[1],additionalArgs:n[2]}}async function x6e(t,e,r,i,n){let s=n.preserveSymlinks?"--preserve-symlinks":"",o=[r.additionalArgs,s].filter(a=>a).join(" ");return n=Object.assign({},n,{prog:r.program,args:o}),await R6e(e,n),await n.fs_.writeFile(e,i(t,e,n),"utf8"),N6e(e,n)}function k6e(t,e,r){let n=Is.relative(Is.dirname(e),t).split("/").join("\\"),s=Is.isAbsolute(n)?`"${n}"`:`"%~dp0\\${n}"`,o,a=r.prog,l=r.args||"",c=cT(r.nodePath).win32;a?(o=`"%~dp0\\${a}.exe"`,n=s):(a=s,l="",n="");let u=r.progArgs?`${r.progArgs.join(" ")} `:"",g=c?`@SET NODE_PATH=${c}\r -`:"";return o?g+=`@IF EXIST ${o} (\r - ${o} ${l} ${n} ${u}%*\r -) ELSE (\r - @SETLOCAL\r - @SET PATHEXT=%PATHEXT:;.JS;=;%\r - ${a} ${l} ${n} ${u}%*\r -)\r -`:g+=`@${a} ${l} ${n} ${u}%*\r -`,g}function P6e(t,e,r){let i=Is.relative(Is.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=Is.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=r.args||"",l=cT(r.nodePath).posix;n?(s=`"$basedir/${r.prog}"`,i=o):(n=o,a="",i="");let c=r.progArgs?`${r.progArgs.join(" ")} `:"",u=`#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") - -case \`uname\` in - *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; -esac - -`,g=r.nodePath?`export NODE_PATH="${l}" -`:"";return s?u+=`${g}if [ -x ${s} ]; then - exec ${s} ${a} ${i} ${c}"$@" -else - exec ${n} ${a} ${i} ${c}"$@" -fi -`:u+=`${g}${n} ${a} ${i} ${c}"$@" -exit $? -`,u}function D6e(t,e,r){let i=Is.relative(Is.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=Is.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=r.args||"",c=cT(r.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${r.prog}$exe"`,i=a):(s=a,l="",i="");let f=r.progArgs?`${r.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -${r.nodePath?`$env_node_path=$env:NODE_PATH -$env:NODE_PATH="${u}" -`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -}`;return r.nodePath&&(h+=` else { - $env:NODE_PATH="${g}" -}`),o?h+=` -$ret=0 -if (Test-Path ${o}) { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${o} ${l} ${i} ${f}$args - } else { - & ${o} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args - } else { - & ${s} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $ret -`:h+=` -# Support pipeline input -if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args -} else { - & ${s} ${l} ${i} ${f}$args -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $LASTEXITCODE -`,h}function F6e(t,e){return e.fs_.chmod(t,493)}function cT(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Is.delimiter):Array.from(t),r={};for(let i=0;i`/mnt/${a.toLowerCase()}`):e[i];r.win32=r.win32?`${r.win32};${n}`:n,r.posix=r.posix?`${r.posix}:${s}`:s,r[i]={win32:n,posix:s}}return r}fce.exports=lT});var PT=I((fPt,Nce)=>{Nce.exports=require("stream")});var Oce=I((hPt,Lce)=>{"use strict";function Tce(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function e9e(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return iQ.alloc(0);for(var i=iQ.allocUnsafe(r>>>0),n=this.head,s=0;n;)o9e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(a===o.length?s+=o:s+=o.slice(0,r),r-=a,r===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(r){var i=iQ.allocUnsafe(r),n=this.head,s=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,a=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,a),r-=a,r===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:s9e,value:function(r,i){return DT(this,e9e({},i,{depth:0,customInspect:!1}))}}]),t}()});var FT=I((pPt,Kce)=>{"use strict";function a9e(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(RT,this,t)):process.nextTick(RT,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(s){!e&&s?r._writableState?r._writableState.errorEmitted?process.nextTick(nQ,r):(r._writableState.errorEmitted=!0,process.nextTick(Uce,r,s)):process.nextTick(Uce,r,s):e?(process.nextTick(nQ,r),e(s)):process.nextTick(nQ,r)}),this)}function Uce(t,e){RT(t,e),nQ(t)}function nQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function A9e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function RT(t,e){t.emit("error",e)}function l9e(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}Kce.exports={destroy:a9e,undestroy:A9e,errorOrDestroy:l9e}});var VA=I((dPt,Hce)=>{"use strict";var Gce={};function Es(t,e,r){r||(r=Error);function i(s,o,a){return typeof e=="string"?e:e(s,o,a)}class n extends r{constructor(o,a,l){super(i(o,a,l))}}n.prototype.name=r.name,n.prototype.code=t,Gce[t]=n}function jce(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(i=>String(i)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function c9e(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function u9e(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function g9e(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Es("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Es("ERR_INVALID_ARG_TYPE",function(t,e,r){let i;typeof e=="string"&&c9e(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";let n;if(u9e(t," argument"))n=`The ${t} ${i} ${jce(e,"type")}`;else{let s=g9e(t,".")?"property":"argument";n=`The "${t}" ${s} ${i} ${jce(e,"type")}`}return n+=`. Received type ${typeof r}`,n},TypeError);Es("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Es("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Es("ERR_STREAM_PREMATURE_CLOSE","Premature close");Es("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Es("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Es("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Es("ERR_STREAM_WRITE_AFTER_END","write after end");Es("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Es("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Es("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Hce.exports.codes=Gce});var NT=I((CPt,Yce)=>{"use strict";var f9e=VA().codes.ERR_INVALID_OPT_VALUE;function h9e(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function p9e(t,e,r,i){var n=h9e(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var s=i?r:"highWaterMark";throw new f9e(s,n)}return Math.floor(n)}return t.objectMode?16:16*1024}Yce.exports={getHighWaterMark:p9e}});var qce=I((mPt,LT)=>{typeof Object.create=="function"?LT.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:LT.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var _A=I((IPt,TT)=>{try{if(MT=require("util"),typeof MT.inherits!="function")throw"";TT.exports=MT.inherits}catch(t){TT.exports=qce()}var MT});var Wce=I((EPt,Jce)=>{Jce.exports=require("util").deprecate});var UT=I((yPt,zce)=>{"use strict";zce.exports=Sr;function Vce(t){var e=this;this.next=null,this.entry=null,this.finish=function(){d9e(e,t)}}var Ef;Sr.WritableState=em;var C9e={deprecate:Wce()},_ce=PT(),sQ=require("buffer").Buffer,m9e=global.Uint8Array||function(){};function I9e(t){return sQ.from(t)}function E9e(t){return sQ.isBuffer(t)||t instanceof m9e}var OT=FT(),y9e=NT(),w9e=y9e.getHighWaterMark,XA=VA().codes,B9e=XA.ERR_INVALID_ARG_TYPE,Q9e=XA.ERR_METHOD_NOT_IMPLEMENTED,b9e=XA.ERR_MULTIPLE_CALLBACK,v9e=XA.ERR_STREAM_CANNOT_PIPE,S9e=XA.ERR_STREAM_DESTROYED,x9e=XA.ERR_STREAM_NULL_VALUES,k9e=XA.ERR_STREAM_WRITE_AFTER_END,P9e=XA.ERR_UNKNOWN_ENCODING,yf=OT.errorOrDestroy;_A()(Sr,_ce);function D9e(){}function em(t,e,r){Ef=Ef||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof Ef),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=w9e(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){R9e(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Vce(this)}em.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(em.prototype,"buffer",{get:C9e.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}})();var oQ;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(oQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Sr,Symbol.hasInstance,{value:function(e){return oQ.call(this,e)?!0:this!==Sr?!1:e&&e._writableState instanceof em}})):oQ=function(e){return e instanceof this};function Sr(t){Ef=Ef||Yc();var e=this instanceof Ef;if(!e&&!oQ.call(Sr,this))return new Sr(t);this._writableState=new em(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),_ce.call(this)}Sr.prototype.pipe=function(){yf(this,new v9e)};function F9e(t,e){var r=new k9e;yf(t,r),process.nextTick(e,r)}function N9e(t,e,r,i){var n;return r===null?n=new x9e:typeof r!="string"&&!e.objectMode&&(n=new B9e("chunk",["string","Buffer"],r)),n?(yf(t,n),process.nextTick(i,n),!1):!0}Sr.prototype.write=function(t,e,r){var i=this._writableState,n=!1,s=!i.objectMode&&E9e(t);return s&&!sQ.isBuffer(t)&&(t=I9e(t)),typeof e=="function"&&(r=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=D9e),i.ending?F9e(this,r):(s||N9e(this,i,t,r))&&(i.pendingcb++,n=L9e(this,i,s,t,e,r)),n};Sr.prototype.cork=function(){this._writableState.corked++};Sr.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Xce(this,t))};Sr.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new P9e(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Sr.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function T9e(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=sQ.from(e,r)),e}Object.defineProperty(Sr.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L9e(t,e,r,i,n,s){if(!r){var o=T9e(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length{"use strict";var j9e=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};eue.exports=Mo;var tue=HT(),GT=UT();_A()(Mo,tue);for(jT=j9e(GT.prototype),aQ=0;aQ{var lQ=require("buffer"),qa=lQ.Buffer;function iue(t,e){for(var r in t)e[r]=t[r]}qa.from&&qa.alloc&&qa.allocUnsafe&&qa.allocUnsafeSlow?rue.exports=lQ:(iue(lQ,YT),YT.Buffer=wf);function wf(t,e,r){return qa(t,e,r)}iue(qa,wf);wf.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return qa(t,e,r)};wf.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=qa(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};wf.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return qa(t)};wf.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return lQ.SlowBuffer(t)}});var WT=I(sue=>{"use strict";var qT=nue().Buffer,oue=qT.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function J9e(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function W9e(t){var e=J9e(t);if(typeof e!="string"&&(qT.isEncoding===oue||!oue(t)))throw new Error("Unknown encoding: "+t);return e||t}sue.StringDecoder=rm;function rm(t){this.encoding=W9e(t);var e;switch(this.encoding){case"utf16le":this.text=V9e,this.end=_9e,e=4;break;case"utf8":this.fillLast=z9e,e=4;break;case"base64":this.text=X9e,this.end=Z9e,e=3;break;default:this.write=$9e,this.end=e7e;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=qT.allocUnsafe(e)}rm.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function i7e(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function n7e(t,e,r){if((e[0]&192)!=128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!=128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!=128)return t.lastNeed=2,"\uFFFD"}}function z9e(t){var e=this.lastTotal-this.lastNeed,r=n7e(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function r7e(t,e){var r=i7e(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function t7e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function V9e(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function _9e(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function X9e(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Z9e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function $9e(t){return t.toString(this.encoding)}function e7e(t){return t&&t.length?this.write(t):""}});var cQ=I((QPt,aue)=>{"use strict";var Aue=VA().codes.ERR_STREAM_PREMATURE_CLOSE;function s7e(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";var uQ;function ZA(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var A7e=cQ(),$A=Symbol("lastResolve"),qc=Symbol("lastReject"),im=Symbol("error"),gQ=Symbol("ended"),Jc=Symbol("lastPromise"),zT=Symbol("handlePromise"),Wc=Symbol("stream");function el(t,e){return{value:t,done:e}}function l7e(t){var e=t[$A];if(e!==null){var r=t[Wc].read();r!==null&&(t[Jc]=null,t[$A]=null,t[qc]=null,e(el(r,!1)))}}function c7e(t){process.nextTick(l7e,t)}function u7e(t,e){return function(r,i){t.then(function(){if(e[gQ]){r(el(void 0,!0));return}e[zT](r,i)},i)}}var g7e=Object.getPrototypeOf(function(){}),f7e=Object.setPrototypeOf((uQ={get stream(){return this[Wc]},next:function(){var e=this,r=this[im];if(r!==null)return Promise.reject(r);if(this[gQ])return Promise.resolve(el(void 0,!0));if(this[Wc].destroyed)return new Promise(function(o,a){process.nextTick(function(){e[im]?a(e[im]):o(el(void 0,!0))})});var i=this[Jc],n;if(i)n=new Promise(u7e(i,this));else{var s=this[Wc].read();if(s!==null)return Promise.resolve(el(s,!1));n=new Promise(this[zT])}return this[Jc]=n,n}},ZA(uQ,Symbol.asyncIterator,function(){return this}),ZA(uQ,"return",function(){var e=this;return new Promise(function(r,i){e[Wc].destroy(null,function(n){if(n){i(n);return}r(el(void 0,!0))})})}),uQ),g7e),h7e=function(e){var r,i=Object.create(f7e,(r={},ZA(r,Wc,{value:e,writable:!0}),ZA(r,$A,{value:null,writable:!0}),ZA(r,qc,{value:null,writable:!0}),ZA(r,im,{value:null,writable:!0}),ZA(r,gQ,{value:e._readableState.endEmitted,writable:!0}),ZA(r,zT,{value:function(s,o){var a=i[Wc].read();a?(i[Jc]=null,i[$A]=null,i[qc]=null,s(el(a,!1))):(i[$A]=s,i[qc]=o)},writable:!0}),r));return i[Jc]=null,A7e(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var s=i[qc];s!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,s(n)),i[im]=n;return}var o=i[$A];o!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,o(el(void 0,!0))),i[gQ]=!0}),e.on("readable",c7e.bind(null,i)),i};cue.exports=h7e});var pue=I((vPt,gue)=>{"use strict";function fue(t,e,r,i,n,s,o){try{var a=t[s](o),l=a.value}catch(c){r(c);return}a.done?e(l):Promise.resolve(l).then(i,n)}function p7e(t){return function(){var e=this,r=arguments;return new Promise(function(i,n){var s=t.apply(e,r);function o(l){fue(s,i,n,o,a,"next",l)}function a(l){fue(s,i,n,o,a,"throw",l)}o(void 0)})}}function hue(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function C7e(t){for(var e=1;e{"use strict";due.exports=kt;var Bf;kt.ReadableState=Cue;var SPt=require("events").EventEmitter,mue=function(e,r){return e.listeners(r).length},nm=PT(),fQ=require("buffer").Buffer,E7e=global.Uint8Array||function(){};function y7e(t){return fQ.from(t)}function w7e(t){return fQ.isBuffer(t)||t instanceof E7e}var VT=require("util"),It;VT&&VT.debuglog?It=VT.debuglog("stream"):It=function(){};var B7e=Oce(),_T=FT(),Q7e=NT(),b7e=Q7e.getHighWaterMark,hQ=VA().codes,v7e=hQ.ERR_INVALID_ARG_TYPE,S7e=hQ.ERR_STREAM_PUSH_AFTER_EOF,x7e=hQ.ERR_METHOD_NOT_IMPLEMENTED,k7e=hQ.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Qf,XT,ZT;_A()(kt,nm);var sm=_T.errorOrDestroy,$T=["error","close","destroy","pause","resume"];function P7e(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function Cue(t,e,r){Bf=Bf||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof Bf),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=b7e(this,t,"readableHighWaterMark",r),this.buffer=new B7e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Qf||(Qf=WT().StringDecoder),this.decoder=new Qf(t.encoding),this.encoding=t.encoding)}function kt(t){if(Bf=Bf||Yc(),!(this instanceof kt))return new kt(t);var e=this instanceof Bf;this._readableState=new Cue(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),nm.call(this)}Object.defineProperty(kt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});kt.prototype.destroy=_T.destroy;kt.prototype._undestroy=_T.undestroy;kt.prototype._destroy=function(t,e){e(t)};kt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=fQ.from(t,e),e=""),i=!0),Iue(this,t,e,!1,i)};kt.prototype.unshift=function(t){return Iue(this,t,null,!0,!1)};function Iue(t,e,r,i,n){It("readableAddChunk",e);var s=t._readableState;if(e===null)s.reading=!1,R7e(t,s);else{var o;if(n||(o=D7e(s,e)),o)sm(t,o);else if(s.objectMode||e&&e.length>0)if(typeof e!="string"&&!s.objectMode&&Object.getPrototypeOf(e)!==fQ.prototype&&(e=y7e(e)),i)s.endEmitted?sm(t,new k7e):eM(t,s,e,!0);else if(s.ended)sm(t,new S7e);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||e.length!==0?eM(t,s,e,!1):tM(t,s)):eM(t,s,e,!1)}else i||(s.reading=!1,tM(t,s))}return!s.ended&&(s.length=Eue?t=Eue:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function yue(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=F7e(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}kt.prototype.read=function(t){It("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return It("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?rM(this):pQ(this),null;if(t=yue(t,e),t===0&&e.ended)return e.length===0&&rM(this),null;var i=e.needReadable;It("need readable",i),(e.length===0||e.length-t0?n=wue(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&rM(this)),n!==null&&this.emit("data",n),n};function R7e(t,e){if(It("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?pQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,Bue(t)))}}function pQ(t){var e=t._readableState;It("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(It("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(Bue,t))}function Bue(t){var e=t._readableState;It("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,iM(t)}function tM(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(N7e,t,e))}function N7e(t,e){for(;!e.reading&&!e.ended&&(e.length1&&Que(i.pipes,t)!==-1)&&!c&&(It("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(m){It("onerror",m),d(),t.removeListener("error",f),mue(t,"error")===0&&sm(t,m)}P7e(t,"error",f);function h(){t.removeListener("finish",p),d()}t.once("close",h);function p(){It("onfinish"),t.removeListener("close",h),d()}t.once("finish",p);function d(){It("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(It("pipe resume"),r.resume()),t};function L7e(t){return function(){var r=t._readableState;It("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&mue(t,"data")&&(r.flowing=!0,iM(t))}}kt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var s=0;s0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,It("on readable",i.length,i.reading),i.length?pQ(this):i.reading||process.nextTick(T7e,this)),r};kt.prototype.addListener=kt.prototype.on;kt.prototype.removeListener=function(t,e){var r=nm.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(bue,this),r};kt.prototype.removeAllListeners=function(t){var e=nm.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(bue,this),e};function bue(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T7e(t){It("readable nexttick read 0"),t.read(0)}kt.prototype.resume=function(){var t=this._readableState;return t.flowing||(It("resume"),t.flowing=!t.readableListening,M7e(this,t)),t.paused=!1,this};function M7e(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(O7e,t,e))}function O7e(t,e){It("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),iM(t),e.flowing&&!e.reading&&t.read(0)}kt.prototype.pause=function(){return It("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(It("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function iM(t){var e=t._readableState;for(It("flow",e.flowing);e.flowing&&t.read()!==null;);}kt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(It("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(It("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var a=e.push(o);a||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(a){return function(){return t[a].apply(t,arguments)}}(n));for(var s=0;s<$T.length;s++)t.on($T[s],this.emit.bind(this,$T[s]));return this._read=function(o){It("wrapped _read",o),i&&(i=!1,t.resume())},this};typeof Symbol=="function"&&(kt.prototype[Symbol.asyncIterator]=function(){return XT===void 0&&(XT=uue()),XT(this)});Object.defineProperty(kt.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(kt.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(kt.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});kt._fromList=wue;Object.defineProperty(kt.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function wue(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function rM(t){var e=t._readableState;It("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(K7e,e,t))}function K7e(t,e){if(It("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(kt.from=function(t,e){return ZT===void 0&&(ZT=pue()),ZT(kt,t,e)});function Que(t,e){for(var r=0,i=t.length;r{"use strict";vue.exports=Ja;var dQ=VA().codes,U7e=dQ.ERR_METHOD_NOT_IMPLEMENTED,H7e=dQ.ERR_MULTIPLE_CALLBACK,G7e=dQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,j7e=dQ.ERR_TRANSFORM_WITH_LENGTH_0,CQ=Yc();_A()(Ja,CQ);function Y7e(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new H7e);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";xue.exports=om;var kue=nM();_A()(om,kue);function om(t){if(!(this instanceof om))return new om(t);kue.call(this,t)}om.prototype._transform=function(t,e,r){r(null,t)}});var Lue=I((DPt,Due)=>{"use strict";var sM;function J7e(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var Rue=VA().codes,W7e=Rue.ERR_MISSING_ARGS,z7e=Rue.ERR_STREAM_DESTROYED;function Fue(t){if(t)throw t}function V7e(t){return t.setHeader&&typeof t.abort=="function"}function _7e(t,e,r,i){i=J7e(i);var n=!1;t.on("close",function(){n=!0}),sM===void 0&&(sM=cQ()),sM(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,V7e(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new z7e("pipe"))}}}function Nue(t){t()}function X7e(t,e){return t.pipe(e)}function Z7e(t){return!t.length||typeof t[t.length-1]!="function"?Fue:t.pop()}function $7e(){for(var t=arguments.length,e=new Array(t),r=0;r0;return _7e(o,l,c,function(u){n||(n=u),u&&s.forEach(Nue),!l&&(s.forEach(Nue),i(n))})});return e.reduce(X7e)}Due.exports=$7e});var bf=I((ys,am)=>{var Am=require("stream");process.env.READABLE_STREAM==="disable"&&Am?(am.exports=Am.Readable,Object.assign(am.exports,Am),am.exports.Stream=Am):(ys=am.exports=HT(),ys.Stream=Am||ys,ys.Readable=ys,ys.Writable=UT(),ys.Duplex=Yc(),ys.Transform=nM(),ys.PassThrough=Pue(),ys.finished=cQ(),ys.pipeline=Lue())});var Oue=I((RPt,Tue)=>{"use strict";var{Buffer:_s}=require("buffer"),Mue=Symbol.for("BufferList");function nr(t){if(!(this instanceof nr))return new nr(t);nr._init.call(this,t)}nr._init=function(e){Object.defineProperty(this,Mue,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};nr.prototype._new=function(e){return new nr(e)};nr.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let i=0;ithis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};nr.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};nr.prototype.copy=function(e,r,i,n){if((typeof i!="number"||i<0)&&(i=0),(typeof n!="number"||n>this.length)&&(n=this.length),i>=this.length||n<=0)return e||_s.alloc(0);let s=!!e,o=this._offset(i),a=n-i,l=a,c=s&&r||0,u=o[1];if(i===0&&n===this.length){if(!s)return this._bufs.length===1?this._bufs[0]:_s.concat(this._bufs,this.length);for(let g=0;gf)this._bufs[g].copy(e,c,u),c+=f;else{this._bufs[g].copy(e,c,u,u+l),c+=f;break}l-=f,u&&(u=0)}return e.length>c?e.slice(0,c):e};nr.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let i=this._offset(e),n=this._offset(r),s=this._bufs.slice(i[0],n[0]+1);return n[1]===0?s.pop():s[s.length-1]=s[s.length-1].slice(0,n[1]),i[1]!==0&&(s[0]=s[0].slice(i[1])),this._new(s)};nr.prototype.toString=function(e,r,i){return this.slice(r,i).toString(e)};nr.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};nr.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let i=this._offset(e),n=i[0],s=i[1];for(;n=t.length){let l=o.indexOf(t,s);if(l!==-1)return this._reverseOffset([n,l]);s=o.length-t.length+1}else{let l=this._reverseOffset([n,s]);if(this._match(l,t))return l;s++}s=0}return-1};nr.prototype._match=function(t,e){if(this.length-t{"use strict";var oM=bf().Duplex,eVe=_A(),lm=Oue();function Oi(t){if(!(this instanceof Oi))return new Oi(t);if(typeof t=="function"){this._callback=t;let e=function(i){this._callback&&(this._callback(i),this._callback=null)}.bind(this);this.on("pipe",function(i){i.on("error",e)}),this.on("unpipe",function(i){i.removeListener("error",e)}),t=null}lm._init.call(this,t),oM.call(this)}eVe(Oi,oM);Object.assign(Oi.prototype,lm.prototype);Oi.prototype._new=function(e){return new Oi(e)};Oi.prototype._write=function(e,r,i){this._appendBuffer(e),typeof i=="function"&&i()};Oi.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Oi.prototype.end=function(e){oM.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Oi.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Oi.prototype._isBufferList=function(e){return e instanceof Oi||e instanceof lm||Oi.isBufferList(e)};Oi.isBufferList=lm.isBufferList;mQ.exports=Oi;mQ.exports.BufferListStream=Oi;mQ.exports.BufferList=lm});var lM=I(vf=>{var tVe=Buffer.alloc,rVe="0000000000000000000",iVe="7777777777777777777",Uue="0".charCodeAt(0),Hue=Buffer.from("ustar\0","binary"),nVe=Buffer.from("00","binary"),sVe=Buffer.from("ustar ","binary"),oVe=Buffer.from(" \0","binary"),aVe=parseInt("7777",8),cm=257,aM=263,AVe=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},lVe=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},cVe=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},Gue=function(t,e,r,i){for(;re?iVe.slice(0,e)+" ":rVe.slice(0,e-t.length)+t+" "};function uVe(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],i=t.length-1;i>0;i--){var n=t[i];e?r.push(n):r.push(255-n)}var s=0,o=r.length;for(i=0;i=Math.pow(10,r)&&r++,e+r+t};vf.decodeLongPath=function(t,e){return Sf(t,0,t.length,e)};vf.encodePax=function(t){var e="";t.name&&(e+=AM(" path="+t.name+` -`)),t.linkname&&(e+=AM(" linkpath="+t.linkname+` -`));var r=t.pax;if(r)for(var i in r)e+=AM(" "+i+"="+r[i]+` -`);return Buffer.from(e)};vf.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var n=r.indexOf("/");if(n===-1)return null;i+=i?"/"+r.slice(0,n):r.slice(0,n),r=r.slice(n+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(i)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(tl(t.mode&aVe,6),100),e.write(tl(t.uid,6),108),e.write(tl(t.gid,6),116),e.write(tl(t.size,11),124),e.write(tl(t.mtime.getTime()/1e3|0,11),136),e[156]=Uue+cVe(t.type),t.linkname&&e.write(t.linkname,157),Hue.copy(e,cm),nVe.copy(e,aM),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(tl(t.devmajor||0,6),329),e.write(tl(t.devminor||0,6),337),i&&e.write(i,345),e.write(tl(jue(e),6),148),e)};vf.decode=function(t,e,r){var i=t[156]===0?0:t[156]-Uue,n=Sf(t,0,100,e),s=rl(t,100,8),o=rl(t,108,8),a=rl(t,116,8),l=rl(t,124,12),c=rl(t,136,12),u=lVe(i),g=t[157]===0?null:Sf(t,157,100,e),f=Sf(t,265,32),h=Sf(t,297,32),p=rl(t,329,8),d=rl(t,337,8),m=jue(t);if(m===8*32)return null;if(m!==rl(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(Hue.compare(t,cm,cm+6)===0)t[345]&&(n=Sf(t,345,155,e)+"/"+n);else if(!(sVe.compare(t,cm,cm+6)===0&&oVe.compare(t,aM,aM+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:d}}});var _ue=I((LPt,Yue)=>{var que=require("util"),gVe=Kue(),um=lM(),Jue=bf().Writable,Wue=bf().PassThrough,zue=function(){},Vue=function(t){return t&=511,t&&512-t},fVe=function(t,e){var r=new IQ(t,e);return r.end(),r},hVe=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},IQ=function(t,e){this._parent=t,this.offset=e,Wue.call(this,{autoDestroy:!1})};que.inherits(IQ,Wue);IQ.prototype.destroy=function(t){this._parent.destroy(t)};var Wa=function(t){if(!(this instanceof Wa))return new Wa(t);Jue.call(this,t),t=t||{},this._offset=0,this._buffer=gVe(),this._missing=0,this._partial=!1,this._onparse=zue,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=Vue(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(Vue(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=um.decodePax(r.slice(0,f)),r.consume(f),s()},l=function(){var f=e._header.size;e._pax=um.decodePax(r.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=um.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(p){e.emit("error",p)}if(r.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=hVe(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,fVe(e,f),n);return}e._stream=new IQ(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};que.inherits(Wa,Jue);Wa.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};Wa.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};Wa.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=zue,this._overflow?this._write(this._overflow,void 0,t):t()}};Wa.prototype._write=function(t,e,r){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(t.length&&(this._partial=!0),t.lengths&&(o=t.slice(s),t=t.slice(0,s)),i?i.end(t):n.append(t),this._overflow=o,this._onparse()}};Wa.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};Yue.exports=Wa});var Zue=I((TPt,Xue)=>{Xue.exports=require("fs").constants||require("constants")});var ige=I((MPt,$ue)=>{var xf=Zue(),ege=tk(),EQ=_A(),pVe=Buffer.alloc,tge=bf().Readable,kf=bf().Writable,dVe=require("string_decoder").StringDecoder,yQ=lM(),CVe=parseInt("755",8),mVe=parseInt("644",8),rge=pVe(1024),cM=function(){},uM=function(t,e){e&=511,e&&t.push(rge.slice(0,512-e))};function IVe(t){switch(t&xf.S_IFMT){case xf.S_IFBLK:return"block-device";case xf.S_IFCHR:return"character-device";case xf.S_IFDIR:return"directory";case xf.S_IFIFO:return"fifo";case xf.S_IFLNK:return"symlink"}return"file"}var wQ=function(t){kf.call(this),this.written=0,this._to=t,this._destroyed=!1};EQ(wQ,kf);wQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};wQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var BQ=function(){kf.call(this),this.linkname="",this._decoder=new dVe("utf-8"),this._destroyed=!1};EQ(BQ,kf);BQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};BQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var gm=function(){kf.call(this),this._destroyed=!1};EQ(gm,kf);gm.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};gm.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Oo=function(t){if(!(this instanceof Oo))return new Oo(t);tge.call(this,t),this._drain=cM,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};EQ(Oo,tge);Oo.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=cM);var i=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=IVe(t.mode)),t.mode||(t.mode=t.type==="directory"?CVe:mVe),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var n=this.push(e);return uM(i,t.size),n?process.nextTick(r):this._drain=r,new gm}if(t.type==="symlink"&&!t.linkname){var s=new BQ;return ege(s,function(a){if(a)return i.destroy(),r(a);t.linkname=s.linkname,i._encode(t),r()}),s}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new gm;var o=new wQ(this);return this._stream=o,ege(o,function(a){if(i._stream=null,a)return i.destroy(),r(a);if(o.written!==t.size)return i.destroy(),r(new Error("size mismatch"));uM(i,t.size),i._finalizing&&i.finalize(),r()}),o}};Oo.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(rge),this.push(null))};Oo.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};Oo.prototype._encode=function(t){if(!t.pax){var e=yQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};Oo.prototype._encodePax=function(t){var e=yQ.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(yQ.encode(r)),this.push(e),uM(this,e.length),r.size=t.size,r.type=t.type,this.push(yQ.encode(r))};Oo.prototype._read=function(t){var e=this._drain;this._drain=cM,e()};$ue.exports=Oo});var nge=I(gM=>{gM.extract=_ue();gM.pack=ige()});var Cge=I((oDt,fge)=>{"use strict";var Pf=class{constructor(e,r,i){this.__specs=e||{},Object.keys(this.__specs).forEach(n=>{if(typeof this.__specs[n]=="string"){let s=this.__specs[n],o=this.__specs[s];if(o){let a=o.aliases||[];a.push(n,s),o.aliases=[...new Set(a)],this.__specs[n]=o}else throw new Error(`Alias refers to invalid key: ${s} -> ${n}`)}}),this.__opts=r||{},this.__providers=pge(i.filter(n=>n!=null&&typeof n=="object")),this.__isFiggyPudding=!0}get(e){return mM(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[i,n]of this.entries())e.call(r,n,i,this)}toJSON(){let e={};return this.forEach((r,i)=>{e[i]=r}),e}*entries(e){for(let i of Object.keys(this.__specs))yield[i,this.get(i)];let r=e||this.__opts.other;if(r){let i=new Set;for(let n of this.__providers){let s=n.entries?n.entries(r):RVe(n);for(let[o,a]of s)r(o)&&!i.has(o)&&(i.add(o),yield[o,a])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Pf(this.__specs,this.__opts,pge(this.__providers).concat(e)),hge)}};try{let t=require("util");Pf.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch(t){}function FVe(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function mM(t,e,r){let i=t.__specs[e];if(r&&!i&&(!t.__opts.other||!t.__opts.other(e)))FVe(e);else{i||(i={});let n;for(let s of t.__providers){if(n=dge(e,s),n===void 0&&i.aliases&&i.aliases.length){for(let o of i.aliases)if(o!==e&&(n=dge(o,s),n!==void 0))break}if(n!==void 0)break}return n===void 0&&i.default!==void 0?typeof i.default=="function"?i.default(t):i.default:n}}function dge(t,e){let r;return e.__isFiggyPudding?r=mM(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var hge={has(t,e){return e in t.__specs&&mM(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Pf.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};fge.exports=NVe;function NVe(t,e){function r(...i){return new Proxy(new Pf(t,e,i),hge)}return r}function pge(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function RVe(t){return Object.keys(t).map(e=>[e,t[e]])}});var Ege=I((aDt,Ko)=>{"use strict";var hm=require("crypto"),LVe=Cge(),TVe=require("stream").Transform,mge=["sha256","sha384","sha512"],MVe=/^[a-z0-9+/]+(?:=?=?)$/i,OVe=/^([^-]+)-([^?]+)([?\S*]*)$/,KVe=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,UVe=/^[\x21-\x7E]+$/,on=LVe({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>HVe},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),zc=class{get isHash(){return!0}constructor(e,r){r=on(r);let i=!!r.strict;this.source=e.trim();let n=this.source.match(i?KVe:OVe);if(!n||i&&!mge.some(o=>o===n[1]))return;this.algorithm=n[1],this.digest=n[2];let s=n[3];this.options=s?s.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=on(e),e.strict&&!(mge.some(i=>i===this.algorithm)&&this.digest.match(MVe)&&(this.options||[]).every(i=>i.match(UVe))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Df=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=on(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(i=>this[i].map(n=>zc.prototype.toString.call(n,e)).filter(n=>n.length).join(r)).filter(i=>i.length).join(r)}concat(e,r){r=on(r);let i=typeof e=="string"?e:pm(e,r);return Uo(`${this.toString(r)} ${i}`,r)}hexDigest(){return Uo(this,{single:!0}).hexDigest()}match(e,r){r=on(r);let i=Uo(e,r),n=i.pickAlgorithm(r);return this[n]&&i[n]&&this[n].find(s=>i[n].find(o=>s.digest===o.digest))||!1}pickAlgorithm(e){e=on(e);let r=e.pickAlgorithm,i=Object.keys(this);if(!i.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return i.reduce((n,s)=>r(n,s)||n)}};Ko.exports.parse=Uo;function Uo(t,e){if(e=on(e),typeof t=="string")return IM(t,e);if(t.algorithm&&t.digest){let r=new Df;return r[t.algorithm]=[t],IM(pm(r,e),e)}else return IM(pm(t,e),e)}function IM(t,e){return e.single?new zc(t,e):t.trim().split(/\s+/).reduce((r,i)=>{let n=new zc(i,e);if(n.algorithm&&n.digest){let s=n.algorithm;r[s]||(r[s]=[]),r[s].push(n)}return r},new Df)}Ko.exports.stringify=pm;function pm(t,e){return e=on(e),t.algorithm&&t.digest?zc.prototype.toString.call(t,e):typeof t=="string"?pm(Uo(t,e),e):Df.prototype.toString.call(t,e)}Ko.exports.fromHex=GVe;function GVe(t,e,r){r=on(r);let i=r.options&&r.options.length?`?${r.options.join("?")}`:"";return Uo(`${e}-${Buffer.from(t,"hex").toString("base64")}${i}`,r)}Ko.exports.fromData=jVe;function jVe(t,e){e=on(e);let r=e.algorithms,i=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((n,s)=>{let o=hm.createHash(s).update(t).digest("base64"),a=new zc(`${s}-${o}${i}`,e);if(a.algorithm&&a.digest){let l=a.algorithm;n[l]||(n[l]=[]),n[l].push(a)}return n},new Df)}Ko.exports.fromStream=YVe;function YVe(t,e){e=on(e);let r=e.Promise||Promise,i=EM(e);return new r((n,s)=>{t.pipe(i),t.on("error",s),i.on("error",s);let o;i.on("integrity",a=>{o=a}),i.on("end",()=>n(o)),i.on("data",()=>{})})}Ko.exports.checkData=qVe;function qVe(t,e,r){if(r=on(r),e=Uo(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let i=e.pickAlgorithm(r),n=hm.createHash(i).update(t).digest("base64"),s=Uo({algorithm:i,digest:n}),o=s.match(e,r);if(o||!r.error)return o;if(typeof r.size=="number"&&t.length!==r.size){let a=new Error(`data size mismatch when checking ${e}. - Wanted: ${r.size} - Found: ${t.length}`);throw a.code="EBADSIZE",a.found=t.length,a.expected=r.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${t.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}Ko.exports.checkStream=JVe;function JVe(t,e,r){r=on(r);let i=r.Promise||Promise,n=EM(r.concat({integrity:e}));return new i((s,o)=>{t.pipe(n),t.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}Ko.exports.integrityStream=EM;function EM(t){t=on(t);let e=t.integrity&&Uo(t.integrity,t),r=e&&Object.keys(e).length,i=r&&e.pickAlgorithm(t),n=r&&e[i],s=Array.from(new Set(t.algorithms.concat(i?[i]:[]))),o=s.map(hm.createHash),a=0,l=new TVe({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=t.options&&t.options.length?`?${t.options.join("?")}`:"",u=Uo(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),t),g=r&&u.match(e,t);if(typeof t.size=="number"&&a!==t.size){let f=new Error(`stream size mismatch when checking ${e}. - Wanted: ${t.size} - Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=t.size,f.sri=e,l.emit("error",f)}else if(t.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}Ko.exports.create=WVe;function WVe(t){t=on(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",i=e.map(hm.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new zc(`${a}-${l}${r}`,t);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Df)}}}var zVe=new Set(hm.getHashes()),Ige=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>zVe.has(t));function HVe(t,e){return Ige.indexOf(t.toLowerCase())>=Ige.indexOf(e.toLowerCase())?t:e}});var Fd={};it(Fd,{BuildType:()=>Gn,Cache:()=>Qt,Configuration:()=>fe,DEFAULT_LOCK_FILENAME:()=>DR,DEFAULT_RC_FILENAME:()=>PR,FormatType:()=>ps,InstallMode:()=>li,LightReport:()=>Fa,LinkType:()=>gt,Manifest:()=>Ze,MessageName:()=>z,PackageExtensionStatus:()=>ki,PackageExtensionType:()=>oi,Project:()=>Ke,ProjectLookup:()=>KA,Report:()=>Xi,ReportError:()=>nt,SettingsType:()=>ge,StreamReport:()=>Fe,TAG_REGEXP:()=>Rg,TelemetryManager:()=>Rd,ThrowReport:()=>ei,VirtualFetcher:()=>dd,Workspace:()=>Dd,WorkspaceResolver:()=>Yr,YarnVersion:()=>Zr,execUtils:()=>hr,folderUtils:()=>Pb,formatUtils:()=>ue,hashUtils:()=>mn,httpUtils:()=>Zt,miscUtils:()=>de,scriptUtils:()=>Kt,semverUtils:()=>qt,structUtils:()=>S,tgzUtils:()=>Ai,treeUtils:()=>Hs});var hr={};it(hr,{EndStrategy:()=>Pn,execvp:()=>Nhe,pipevp:()=>to});var ch={};it(ch,{AliasFS:()=>Xo,CwdFS:()=>Ft,DEFAULT_COMPRESSION_LEVEL:()=>pl,FakeFS:()=>eA,Filename:()=>wt,JailFS:()=>Zo,LazyFS:()=>oh,LinkStrategy:()=>eh,NoFS:()=>bI,NodeFS:()=>Wt,PortablePath:()=>Se,PosixFS:()=>ah,ProxiedFS:()=>fi,VirtualFS:()=>Pr,ZipFS:()=>Jr,ZipOpenFS:()=>Jn,constants:()=>mr,extendFs:()=>SI,normalizeLineEndings:()=>ul,npath:()=>M,opendir:()=>wI,patchFs:()=>pb,ppath:()=>v,statUtils:()=>rb,toFilename:()=>kr,xfs:()=>T});var mr={};it(mr,{SAFE_TIME:()=>tb,S_IFDIR:()=>zo,S_IFLNK:()=>_o,S_IFMT:()=>kn,S_IFREG:()=>Vo});var kn=61440,zo=16384,Vo=32768,_o=40960,tb=456789e3;var rb={};it(rb,{BigIntStatsEntry:()=>Xf,DEFAULT_MODE:()=>_f,DirEntry:()=>uO,StatEntry:()=>Za,areStatsEqual:()=>nb,clearStats:()=>pI,convertToBigIntStats:()=>dI,makeDefaultStats:()=>Zf,makeEmptyStats:()=>Jfe});var ib=ie(require("util"));var _f=Vo|420,uO=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Za=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=_f;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Xf=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(_f);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(kn))===BigInt(zo)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(kn))===BigInt(Vo)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(kn))===BigInt(_o)}};function Zf(){return new Za}function Jfe(){return pI(Zf())}function pI(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):ib.types.isDate(r)&&(t[e]=new Date(0))}return t}function dI(t){let e=new Xf;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let i=t[r];typeof i=="number"?e[r]=BigInt(i):ib.types.isDate(i)&&(e[r]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function nb(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,i=e;return!(r.atimeNs!==i.atimeNs||r.mtimeNs!==i.mtimeNs||r.ctimeNs!==i.ctimeNs||r.birthtimeNs!==i.birthtimeNs)}var mI=ie(require("fs"));var $f=ie(require("path")),gO;(function(i){i[i.File=0]="File",i[i.Portable=1]="Portable",i[i.Native=2]="Native"})(gO||(gO={}));var Se={root:"/",dot:"."},wt={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",rc:".yarnrc.yml"},M=Object.create($f.default),v=Object.create($f.default.posix);M.cwd=()=>process.cwd();v.cwd=()=>sb(process.cwd());v.resolve=(...t)=>t.length>0&&v.isAbsolute(t[0])?$f.default.posix.resolve(...t):$f.default.posix.resolve(v.cwd(),...t);var fO=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};M.fromPortablePath=hO;M.toPortablePath=sb;M.contains=(t,e)=>fO(M,t,e);v.contains=(t,e)=>fO(v,t,e);var Wfe=/^([a-zA-Z]:.*)$/,zfe=/^\\\\(\.\\)?(.*)$/,Vfe=/^\/([a-zA-Z]:.*)$/,_fe=/^\/unc\/(\.dot\/)?(.*)$/;function hO(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(Vfe))t=e[1];else if(r=t.match(_fe))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function sb(t){if(process.platform!=="win32")return t;let e,r;return(e=t.match(Wfe))?t=`/${e[1]}`:(r=t.match(zfe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t.replace(/\\/g,"/")}function CI(t,e){return t===M?hO(e):sb(e)}function kr(t){if(M.parse(t).dir!==""||v.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var II=new Date(tb*1e3),eh;(function(r){r.Allow="allow",r.ReadOnly="readOnly"})(eh||(eh={}));async function pO(t,e,r,i,n){let s=t.pathUtils.normalize(e),o=r.pathUtils.normalize(i),a=[],l=[],c=n.stableTime?{mtime:II,atime:II}:await r.lstatPromise(o);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[c.atime,c.mtime]});let u=typeof t.lutimesPromise=="function"?t.lutimesPromise.bind(t):t.utimesPromise.bind(t);await ob(a,l,u,t,s,r,o,n);for(let g of a)await g();await Promise.all(l.map(g=>g()))}async function ob(t,e,r,i,n,s,o,a){var f,h;let l=await Xfe(i,n),c=await s.lstatPromise(o),u=a.stableTime?{mtime:II,atime:II}:c,g;switch(!0){case c.isDirectory():g=await Zfe(t,e,r,i,n,l,s,o,c,a);break;case c.isFile():g=await $fe(t,e,r,i,n,l,s,o,c,a);break;case c.isSymbolicLink():g=await ehe(t,e,r,i,n,l,s,o,c,a);break;default:throw new Error(`Unsupported file type (${c.mode})`)}return(g||((f=l==null?void 0:l.mtime)==null?void 0:f.getTime())!==u.mtime.getTime()||((h=l==null?void 0:l.atime)==null?void 0:h.getTime())!==u.atime.getTime())&&(e.push(()=>r(n,u.atime,u.mtime)),g=!0),(l===null||(l.mode&511)!=(c.mode&511))&&(e.push(()=>i.chmodPromise(n,c.mode&511)),g=!0),g}async function Xfe(t,e){try{return await t.lstatPromise(e)}catch(r){return null}}async function Zfe(t,e,r,i,n,s,o,a,l,c){if(s!==null&&!s.isDirectory())if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=!1;s===null&&(t.push(async()=>{try{await i.mkdirPromise(n,{mode:l.mode})}catch(f){if(f.code!=="EEXIST")throw f}}),u=!0);let g=await o.readdirPromise(a);if(c.stableSort)for(let f of g.sort())await ob(t,e,r,i,i.pathUtils.join(n,f),o,o.pathUtils.join(a,f),c)&&(u=!0);else(await Promise.all(g.map(async h=>{await ob(t,e,r,i,i.pathUtils.join(n,h),o,o.pathUtils.join(a,h),c)}))).some(h=>h)&&(u=!0);return u}var ab=new WeakMap;function Ab(t,e,r,i,n){return async()=>{await t.linkPromise(r,e),n===eh.ReadOnly&&(i.mode&=~146,await t.chmodPromise(e,i.mode))}}function the(t,e,r,i,n){let s=ab.get(t);return typeof s=="undefined"?async()=>{try{await t.copyFilePromise(r,e,mI.default.constants.COPYFILE_FICLONE_FORCE),ab.set(t,!0)}catch(o){if(o.code==="ENOSYS"||o.code==="ENOTSUP")ab.set(t,!1),await Ab(t,e,r,i,n)();else throw o}}:s?async()=>t.copyFilePromise(r,e,mI.default.constants.COPYFILE_FICLONE_FORCE):Ab(t,e,r,i,n)}async function $fe(t,e,r,i,n,s,o,a,l,c){var f;if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=(f=c.linkStrategy)!=null?f:null,g=i===o?u!==null?the(i,n,a,l,u):async()=>i.copyFilePromise(a,n,mI.default.constants.COPYFILE_FICLONE):u!==null?Ab(i,n,a,l,u):async()=>i.writeFilePromise(n,await o.readFilePromise(a));return t.push(async()=>g()),!0}async function ehe(t,e,r,i,n,s,o,a,l,c){if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;return t.push(async()=>{await i.symlinkPromise(CI(i.pathUtils,await o.readlinkPromise(a)),n)}),!0}function qn(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function EI(t){return qn("EBUSY",t)}function th(t,e){return qn("ENOSYS",`${t}, ${e}`)}function $a(t){return qn("EINVAL",`invalid argument, ${t}`)}function Hi(t){return qn("EBADF",`bad file descriptor, ${t}`)}function bs(t){return qn("ENOENT",`no such file or directory, ${t}`)}function eo(t){return qn("ENOTDIR",`not a directory, ${t}`)}function rh(t){return qn("EISDIR",`illegal operation on a directory, ${t}`)}function yI(t){return qn("EEXIST",`file already exists, ${t}`)}function ln(t){return qn("EROFS",`read-only filesystem, ${t}`)}function dO(t){return qn("ENOTEMPTY",`directory not empty, ${t}`)}function CO(t){return qn("EOPNOTSUPP",`operation not supported, ${t}`)}function mO(){return qn("ERR_DIR_CLOSED","Directory handle was closed")}var lb=class extends Error{constructor(e,r){super(e);this.name="Libzip Error",this.code=r}};var IO=class{constructor(e,r,i={}){this.path=e;this.nextDirent=r;this.opts=i;this.closed=!1}throwIfClosed(){if(this.closed)throw mO()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e!="undefined"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e!="undefined"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}};function wI(t,e,r,i){let n=()=>{let s=r.shift();return typeof s=="undefined"?null:Object.assign(t.statSync(t.pathUtils.join(e,s)),{name:s})};return new IO(e,n,i)}var EO=ie(require("os"));var eA=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let i=[e];for(;i.length>0;){let n=i.shift();if((await this.lstatPromise(n)).isDirectory()){let o=await this.readdirPromise(n);if(r)for(let a of o.sort())i.push(this.pathUtils.join(n,a));else throw new Error("Not supported")}else yield n}}async removePromise(e,{recursive:r=!0,maxRetries:i=5}={}){let n;try{n=await this.lstatPromise(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(r){let o=await this.readdirPromise(e);await Promise.all(o.map(a=>this.removePromise(this.pathUtils.resolve(e,a))))}let s=0;do try{await this.rmdirPromise(e);break}catch(o){if(o.code==="EBUSY"||o.code==="ENOTEMPTY"){if(i===0)break;await new Promise(a=>setTimeout(a,s*100));continue}else throw o}while(s++{let l;try{[l]=await this.readJsonPromise(i)}catch(c){return Date.now()-s<500}try{return process.kill(l,0),!0}catch(c){return!1}};for(;o===null;)try{o=await this.openPromise(i,"wx")}catch(l){if(l.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(i);continue}catch(c){}if(Date.now()-s<60*1e3)await new Promise(c=>setTimeout(c,n));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${i})`)}else throw l}await this.writePromise(o,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(o),await this.unlinkPromise(i)}catch(l){}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} -`)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} -`)}async preserveTimePromise(e,r){let i=await this.lstatPromise(e),n=await r();typeof n!="undefined"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,r){let i=this.lstatSync(e),n=r();typeof n!="undefined"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},gl=class extends eA{constructor(){super(v)}};function rhe(t){let e=t.match(/\r?\n/g);if(e===null)return EO.EOL;let r=e.filter(n=>n===`\r -`).length,i=e.length-r;return r>i?`\r -`:` -`}function ul(t,e){return e.replace(/\r?\n/g,rhe(t))}var $c=ie(require("fs")),cb=ie(require("stream")),QO=ie(require("util")),ub=ie(require("zlib"));var yO=ie(require("fs"));var Wt=class extends gl{constructor(e=yO.default){super();this.realFs=e,typeof this.realFs.lutimes!="undefined"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Se.root}resolve(e){return v.resolve(e)}async openPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.open(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}openSync(e,r,i){return this.realFs.openSync(M.fromPortablePath(e),r,i)}async opendirPromise(e,r){return await new Promise((i,n)=>{typeof r!="undefined"?this.realFs.opendir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.opendir(M.fromPortablePath(e),this.makeCallback(i,n))}).then(i=>Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,r){let i=typeof r!="undefined"?this.realFs.opendirSync(M.fromPortablePath(e),r):this.realFs.opendirSync(M.fromPortablePath(e));return Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,r,i=0,n=0,s=-1){return await new Promise((o,a)=>{this.realFs.read(e,r,i,n,s,(l,c)=>{l?a(l):o(c)})})}readSync(e,r,i,n,s){return this.realFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return await new Promise((o,a)=>typeof r=="string"?this.realFs.write(e,r,i,this.makeCallback(o,a)):this.realFs.write(e,r,i,n,s,this.makeCallback(o,a)))}writeSync(e,r,i,n,s){return typeof r=="string"?this.realFs.writeSync(e,r,i):this.realFs.writeSync(e,r,i,n,s)}async closePromise(e){await new Promise((r,i)=>{this.realFs.close(e,this.makeCallback(r,i))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createReadStream(i,r)}createWriteStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createWriteStream(i,r)}async realpathPromise(e){return await new Promise((r,i)=>{this.realFs.realpath(M.fromPortablePath(e),{},this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}realpathSync(e){return M.toPortablePath(this.realFs.realpathSync(M.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(M.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(M.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((i,n)=>{this.realFs.access(M.fromPortablePath(e),r,this.makeCallback(i,n))})}existsSync(e){return this.realFs.existsSync(M.fromPortablePath(e))}async statPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.stat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.stat(M.fromPortablePath(e),this.makeCallback(i,n))})}statSync(e,r){return r?this.realFs.statSync(M.fromPortablePath(e),r):this.realFs.statSync(M.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.fstat(e,r,this.makeCallback(i,n)):this.realFs.fstat(e,this.makeCallback(i,n))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.lstat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.lstat(M.fromPortablePath(e),this.makeCallback(i,n))})}lstatSync(e,r){return r?this.realFs.lstatSync(M.fromPortablePath(e),r):this.realFs.lstatSync(M.fromPortablePath(e))}async chmodPromise(e,r){return await new Promise((i,n)=>{this.realFs.chmod(M.fromPortablePath(e),r,this.makeCallback(i,n))})}chmodSync(e,r){return this.realFs.chmodSync(M.fromPortablePath(e),r)}async chownPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.chown(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}chownSync(e,r,i){return this.realFs.chownSync(M.fromPortablePath(e),r,i)}async renamePromise(e,r){return await new Promise((i,n)=>{this.realFs.rename(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}renameSync(e,r){return this.realFs.renameSync(M.fromPortablePath(e),M.fromPortablePath(r))}async copyFilePromise(e,r,i=0){return await new Promise((n,s)=>{this.realFs.copyFile(M.fromPortablePath(e),M.fromPortablePath(r),i,this.makeCallback(n,s))})}copyFileSync(e,r,i=0){return this.realFs.copyFileSync(M.fromPortablePath(e),M.fromPortablePath(r),i)}async appendFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFile(o,r,i,this.makeCallback(n,s)):this.realFs.appendFile(o,r,this.makeCallback(n,s))})}appendFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFileSync(n,r,i):this.realFs.appendFileSync(n,r)}async writeFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFile(o,r,i,this.makeCallback(n,s)):this.realFs.writeFile(o,r,this.makeCallback(n,s))})}writeFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFileSync(n,r,i):this.realFs.writeFileSync(n,r)}async unlinkPromise(e){return await new Promise((r,i)=>{this.realFs.unlink(M.fromPortablePath(e),this.makeCallback(r,i))})}unlinkSync(e){return this.realFs.unlinkSync(M.fromPortablePath(e))}async utimesPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.utimes(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}utimesSync(e,r,i){this.realFs.utimesSync(M.fromPortablePath(e),r,i)}async lutimesPromiseImpl(e,r,i){let n=this.realFs.lutimes;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);return await new Promise((s,o)=>{n.call(this.realFs,M.fromPortablePath(e),r,i,this.makeCallback(s,o))})}lutimesSyncImpl(e,r,i){let n=this.realFs.lutimesSync;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);n.call(this.realFs,M.fromPortablePath(e),r,i)}async mkdirPromise(e,r){return await new Promise((i,n)=>{this.realFs.mkdir(M.fromPortablePath(e),r,this.makeCallback(i,n))})}mkdirSync(e,r){return this.realFs.mkdirSync(M.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.rmdir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.rmdir(M.fromPortablePath(e),this.makeCallback(i,n))})}rmdirSync(e,r){return this.realFs.rmdirSync(M.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((i,n)=>{this.realFs.link(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}linkSync(e,r){return this.realFs.linkSync(M.fromPortablePath(e),M.fromPortablePath(r))}async symlinkPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.symlink(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i,this.makeCallback(n,s))})}symlinkSync(e,r,i){return this.realFs.symlinkSync(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i)}async readFilePromise(e,r){return await new Promise((i,n)=>{let s=typeof e=="string"?M.fromPortablePath(e):e;this.realFs.readFile(s,r,this.makeCallback(i,n))})}readFileSync(e,r){let i=typeof e=="string"?M.fromPortablePath(e):e;return this.realFs.readFileSync(i,r)}async readdirPromise(e,r){return await new Promise((i,n)=>{(r==null?void 0:r.withFileTypes)?this.realFs.readdir(M.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(i,n)):this.realFs.readdir(M.fromPortablePath(e),this.makeCallback(s=>i(s),n))})}readdirSync(e,r){return(r==null?void 0:r.withFileTypes)?this.realFs.readdirSync(M.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(M.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,i)=>{this.realFs.readlink(M.fromPortablePath(e),this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}readlinkSync(e){return M.toPortablePath(this.realFs.readlinkSync(M.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((i,n)=>{this.realFs.truncate(M.fromPortablePath(e),r,this.makeCallback(i,n))})}truncateSync(e,r){return this.realFs.truncateSync(M.fromPortablePath(e),r)}watch(e,r,i){return this.realFs.watch(M.fromPortablePath(e),r,i)}watchFile(e,r,i){return this.realFs.watchFile(M.fromPortablePath(e),r,i)}unwatchFile(e,r){return this.realFs.unwatchFile(M.fromPortablePath(e),r)}makeCallback(e,r){return(i,n)=>{i?r(i):e(n)}}};var wO=ie(require("events"));var fl;(function(r){r.Change="change",r.Stop="stop"})(fl||(fl={}));var hl;(function(i){i.Ready="ready",i.Running="running",i.Stopped="stopped"})(hl||(hl={}));function BO(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var ih=class extends wO.EventEmitter{constructor(e,r,{bigint:i=!1}={}){super();this.status=hl.Ready;this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=e,this.path=r,this.bigint=i,this.lastStats=this.stat()}static create(e,r,i){let n=new ih(e,r,i);return n.start(),n}start(){BO(this.status,hl.Ready),this.status=hl.Running,this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(fl.Change,this.lastStats,this.lastStats)},3)}stop(){BO(this.status,hl.Running),this.status=hl.Stopped,this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(fl.Stop)}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch(e){let r=this.bigint?new Xf:new Za;return pI(r)}}makeInterval(e){let r=setInterval(()=>{let i=this.stat(),n=this.lastStats;nb(i,n)||(this.lastStats=i,this.emit(fl.Change,i,n))},e.interval);return e.persistent?r:r.unref()}registerChangeListener(e,r){this.addListener(fl.Change,e),this.changeListeners.set(e,this.makeInterval(r))}unregisterChangeListener(e){this.removeListener(fl.Change,e);let r=this.changeListeners.get(e);typeof r!="undefined"&&clearInterval(r),this.changeListeners.delete(e)}unregisterAllChangeListeners(){for(let e of this.changeListeners.keys())this.unregisterChangeListener(e)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let e of this.changeListeners.values())e.ref();return this}unref(){for(let e of this.changeListeners.values())e.unref();return this}};var BI=new WeakMap;function QI(t,e,r,i){let n,s,o,a;switch(typeof r){case"function":n=!1,s=!0,o=5007,a=r;break;default:({bigint:n=!1,persistent:s=!0,interval:o=5007}=r),a=i;break}let l=BI.get(t);typeof l=="undefined"&&BI.set(t,l=new Map);let c=l.get(e);return typeof c=="undefined"&&(c=ih.create(t,e,{bigint:n}),l.set(e,c)),c.registerChangeListener(a,{persistent:s,interval:o}),c}function nh(t,e,r){let i=BI.get(t);if(typeof i=="undefined")return;let n=i.get(e);typeof n!="undefined"&&(typeof r=="undefined"?n.unregisterAllChangeListeners():n.unregisterChangeListener(r),n.hasChangeListeners()||(n.stop(),i.delete(e)))}function sh(t){let e=BI.get(t);if(typeof e!="undefined")for(let r of e.keys())nh(t,r)}var pl="mixed";function ihe(t){if(typeof t=="string"&&String(+t)===t)return+t;if(Number.isFinite(t))return t<0?Date.now()/1e3:t;if((0,QO.isDate)(t))return t.getTime()/1e3;throw new Error("Invalid time")}function bO(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Jr=class extends gl{constructor(e,r){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;this.libzip=r.libzip;let i=r;if(this.level=typeof i.level!="undefined"?i.level:pl,e!=null||(e=bO()),typeof e=="string"){let{baseFs:o=new Wt}=i;this.baseFs=o,this.path=e}else this.path=null,this.baseFs=null;if(r.stats)this.stats=r.stats;else if(typeof e=="string")try{this.stats=this.baseFs.statSync(e)}catch(o){if(o.code==="ENOENT"&&i.create)this.stats=Zf();else throw o}else this.stats=Zf();let n=this.libzip.malloc(4);try{let o=0;if(typeof e=="string"&&i.create&&(o|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),r.readOnly&&(o|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof e=="string")this.zip=this.libzip.open(M.fromPortablePath(e),o,n);else{let a=this.allocateUnattachedSource(e);try{this.zip=this.libzip.openFromSource(a,o,n),this.lzSource=a}catch(l){throw this.libzip.source.free(a),l}}if(this.zip===0){let a=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(a,this.libzip.getValue(n,"i32")),this.makeLibzipError(a)}}finally{this.libzip.free(n)}this.listings.set(Se.root,new Set);let s=this.libzip.getNumEntries(this.zip,0);for(let o=0;oe)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(r,r+e);return Buffer.from(n)}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw EI("archive closed, close");sh(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let e=this.baseFs.existsSync(this.path)||this.stats.mode===_f?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,bO(),{mode:e});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof e!="undefined"&&this.baseFs.chmodSync(this.path,e)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(e){return v.resolve(Se.root,e)}async openPromise(e,r,i){return this.openSync(e,r,i)}openSync(e,r,i){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:e}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(e,r){return this.opendirSync(e,r)}opendirSync(e,r={}){let i=this.resolveFilename(`opendir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`opendir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`opendir '${e}'`);let s=[...n],o=this.openSync(i,"r");return wI(this,i,s,{onClose:()=>{this.closeSync(o)}})}async readPromise(e,r,i,n,s){return this.readSync(e,r,i,n,s)}readSync(e,r,i=0,n=r.byteLength,s=-1){let o=this.fds.get(e);if(typeof o=="undefined")throw Hi("read");let a;s===-1||s===null?a=o.cursor:a=s;let l=this.readFileSync(o.p);l.copy(r,i,a,a+n);let c=Math.max(0,Math.min(l.length-a,n));return(s===-1||s===null)&&(o.cursor+=c),c}async writePromise(e,r,i,n,s){return typeof r=="string"?this.writeSync(e,r,s):this.writeSync(e,r,i,n,s)}writeSync(e,r,i,n,s){throw typeof this.fds.get(e)=="undefined"?Hi("read"):new Error("Unimplemented")}async closePromise(e){return this.closeSync(e)}closeSync(e){if(typeof this.fds.get(e)=="undefined")throw Hi("read");this.fds.delete(e)}createReadStream(e,{encoding:r}={}){if(e===null)throw new Error("Unimplemented");let i=this.openSync(e,"r"),n=Object.assign(new cb.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(o,a)=>{clearImmediate(s),this.closeSync(i),a(o)}}),{close(){n.destroy()},bytesRead:0,path:e}),s=setImmediate(async()=>{try{let o=await this.readFilePromise(e,r);n.bytesRead=o.length,n.end(o)}catch(o){n.destroy(o)}});return n}createWriteStream(e,{encoding:r}={}){if(this.readOnly)throw ln(`open '${e}'`);if(e===null)throw new Error("Unimplemented");let i=[],n=this.openSync(e,"w"),s=Object.assign(new cb.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(o,a)=>{try{o?a(o):(this.writeFileSync(e,Buffer.concat(i),r),a(null))}catch(l){a(l)}finally{this.closeSync(n)}}}),{bytesWritten:0,path:e,close(){s.destroy()}});return s.on("data",o=>{let a=Buffer.from(o);s.bytesWritten+=a.length,i.push(a)}),s}async realpathPromise(e){return this.realpathSync(e)}realpathSync(e){let r=this.resolveFilename(`lstat '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`lstat '${e}'`);return r}async existsPromise(e){return this.existsSync(e)}existsSync(e){if(!this.ready)throw EI(`archive closed, existsSync '${e}'`);if(this.symlinkCount===0){let i=v.resolve(Se.root,e);return this.entries.has(i)||this.listings.has(i)}let r;try{r=this.resolveFilename(`stat '${e}'`,e)}catch(i){return!1}return this.entries.has(r)||this.listings.has(r)}async accessPromise(e,r){return this.accessSync(e,r)}accessSync(e,r=$c.constants.F_OK){let i=this.resolveFilename(`access '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`access '${e}'`);if(this.readOnly&&r&$c.constants.W_OK)throw ln(`access '${e}'`)}async statPromise(e,r){return this.statSync(e,r)}statSync(e,r){let i=this.resolveFilename(`stat '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`stat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`stat '${e}'`);return this.statImpl(`stat '${e}'`,i,r)}async fstatPromise(e,r){return this.fstatSync(e,r)}fstatSync(e,r){let i=this.fds.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let{p:n}=i,s=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(s)&&!this.listings.has(s))throw bs(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(s))throw eo(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,s,r)}async lstatPromise(e,r){return this.lstatSync(e,r)}lstatSync(e,r){let i=this.resolveFilename(`lstat '${e}'`,e,!1);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`lstat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`lstat '${e}'`);return this.statImpl(`lstat '${e}'`,i,r)}statImpl(e,r,i={}){let n=this.entries.get(r);if(typeof n!="undefined"){let s=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.stats.uid,l=this.stats.gid,c=this.libzip.struct.statSize(s)>>>0,u=512,g=Math.ceil(c/u),f=(this.libzip.struct.statMtime(s)>>>0)*1e3,h=f,p=f,d=f,m=new Date(h),E=new Date(p),B=new Date(d),b=new Date(f),R=this.listings.has(r)?zo:this.isSymbolicLink(n)?_o:Vo,H=R===zo?493:420,L=R|this.getUnixMode(n,H)&511,K=this.libzip.struct.statCrc(s),J=Object.assign(new Za,{uid:a,gid:l,size:c,blksize:u,blocks:g,atime:m,birthtime:E,ctime:B,mtime:b,atimeMs:h,birthtimeMs:p,ctimeMs:d,mtimeMs:f,mode:L,crc:K});return i.bigint===!0?dI(J):J}if(this.listings.has(r)){let s=this.stats.uid,o=this.stats.gid,a=0,l=512,c=0,u=this.stats.mtimeMs,g=this.stats.mtimeMs,f=this.stats.mtimeMs,h=this.stats.mtimeMs,p=new Date(u),d=new Date(g),m=new Date(f),E=new Date(h),B=zo|493,b=0,R=Object.assign(new Za,{uid:s,gid:o,size:a,blksize:l,blocks:c,atime:p,birthtime:d,ctime:m,mtime:E,atimeMs:u,birthtimeMs:g,ctimeMs:f,mtimeMs:h,mode:B,crc:b});return i.bigint===!0?dI(R):R}throw new Error("Unreachable")}getUnixMode(e,r){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?r:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(e){let r=this.listings.get(e);if(r)return r;let i=this.registerListing(v.dirname(e));return r=new Set,i.add(v.basename(e)),this.listings.set(e,r),r}registerEntry(e,r){this.registerListing(v.dirname(e)).add(v.basename(e)),this.entries.set(e,r)}unregisterListing(e){this.listings.delete(e);let r=this.listings.get(v.dirname(e));r==null||r.delete(v.basename(e))}unregisterEntry(e){this.unregisterListing(e);let r=this.entries.get(e);this.entries.delete(e),typeof r!="undefined"&&(this.fileSources.delete(r),this.isSymbolicLink(r)&&this.symlinkCount--)}deleteEntry(e,r){if(this.unregisterEntry(e),this.libzip.delete(this.zip,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(e,r,i=!0){if(!this.ready)throw EI(`archive closed, ${e}`);let n=v.resolve(Se.root,r);if(n==="/")return Se.root;let s=this.entries.get(n);if(i&&s!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(s)){let o=this.getFileSource(s).toString();return this.resolveFilename(e,v.resolve(v.dirname(n),o),!0)}else return n;for(;;){let o=this.resolveFilename(e,v.dirname(n),!0),a=this.listings.has(o),l=this.entries.has(o);if(!a&&!l)throw bs(e);if(!a)throw eo(e);if(n=v.resolve(o,v.basename(n)),!i||this.symlinkCount===0)break;let c=this.libzip.name.locate(this.zip,n.slice(1));if(c===-1)break;if(this.isSymbolicLink(c)){let u=this.getFileSource(c).toString();n=v.resolve(v.dirname(n),u)}else break}return n}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:i,byteLength:n}=this.allocateBuffer(e),s=this.libzip.source.fromUnattachedBuffer(i,n,0,!0,r);if(s===0)throw this.libzip.free(r),this.makeLibzipError(r);return s}allocateSource(e){let{buffer:r,byteLength:i}=this.allocateBuffer(e),n=this.libzip.source.fromBuffer(this.zip,r,i,0,!0);if(n===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(e,r){let i=Buffer.isBuffer(r)?r:Buffer.from(r),n=v.relative(Se.root,e),s=this.allocateSource(r);try{let o=this.libzip.file.add(this.zip,n,s,this.libzip.ZIP_FL_OVERWRITE);if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let a;if(this.level===0?a=this.libzip.ZIP_CM_STORE:a=this.libzip.ZIP_CM_DEFLATE,this.libzip.file.setCompression(this.zip,o,0,a,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(o,i),o}catch(o){throw this.libzip.source.free(s),o}}isSymbolicLink(e){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&kn)===_o}getFileSource(e,r={asyncDecompress:!1}){let i=this.fileSources.get(e);if(typeof i!="undefined")return i;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let o=this.libzip.struct.statCompSize(n),a=this.libzip.struct.statCompMethod(n),l=this.libzip.malloc(o);try{let c=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(c===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let u=this.libzip.fread(c,l,o,0);if(u===-1)throw this.makeLibzipError(this.libzip.file.getError(c));if(uo)throw new Error("Overread");let g=this.libzip.HEAPU8.subarray(l,l+o),f=Buffer.from(g);if(a===0)return this.fileSources.set(e,f),f;if(r.asyncDecompress)return new Promise((h,p)=>{ub.default.inflateRaw(f,(d,m)=>{d?p(d):(this.fileSources.set(e,m),h(m))})});{let h=ub.default.inflateRawSync(f);return this.fileSources.set(e,h),h}}finally{this.libzip.fclose(c)}}finally{this.libzip.free(l)}}async chmodPromise(e,r){return this.chmodSync(e,r)}chmodSync(e,r){if(this.readOnly)throw ln(`chmod '${e}'`);r&=493;let i=this.resolveFilename(`chmod '${e}'`,e,!1),n=this.entries.get(i);if(typeof n=="undefined")throw new Error(`Assertion failed: The entry should have been registered (${i})`);let o=this.getUnixMode(n,Vo|0)&~511|r;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,o<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async chownPromise(e,r,i){return this.chownSync(e,r,i)}chownSync(e,r,i){throw new Error("Unimplemented")}async renamePromise(e,r){return this.renameSync(e,r)}renameSync(e,r){throw new Error("Unimplemented")}async copyFilePromise(e,r,i){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=await this.getFileSource(n,{asyncDecompress:!0}),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}copyFileSync(e,r,i=0){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=this.getFileSource(n),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}prepareCopyFile(e,r,i=0){if(this.readOnly)throw ln(`copyfile '${e} -> '${r}'`);if((i&$c.constants.COPYFILE_FICLONE_FORCE)!=0)throw th("unsupported clone operation",`copyfile '${e}' -> ${r}'`);let n=this.resolveFilename(`copyfile '${e} -> ${r}'`,e),s=this.entries.get(n);if(typeof s=="undefined")throw $a(`copyfile '${e}' -> '${r}'`);let o=this.resolveFilename(`copyfile '${e}' -> ${r}'`,r),a=this.entries.get(o);if((i&($c.constants.COPYFILE_EXCL|$c.constants.COPYFILE_FICLONE_FORCE))!=0&&typeof a!="undefined")throw yI(`copyfile '${e}' -> '${r}'`);return{indexSource:s,resolvedDestP:o,indexDest:a}}async appendFilePromise(e,r,i){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFilePromise(e,r,i)}appendFileSync(e,r,i={}){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFileSync(e,r,i)}fdToPath(e,r){var n;let i=(n=this.fds.get(e))==null?void 0:n.p;if(typeof i=="undefined")throw Hi(r);return i}async writeFilePromise(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([await this.getFileSource(o,{asyncDecompress:!0}),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&await this.chmodPromise(a,s)}writeFileSync(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([this.getFileSource(o),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&this.chmodSync(a,s)}prepareWriteFile(e,r){if(typeof e=="number"&&(e=this.fdToPath(e,"read")),this.readOnly)throw ln(`open '${e}'`);let i=this.resolveFilename(`open '${e}'`,e);if(this.listings.has(i))throw rh(`open '${e}'`);let n=null,s=null;typeof r=="string"?n=r:typeof r=="object"&&({encoding:n=null,mode:s=null}=r);let o=this.entries.get(i);return{encoding:n,mode:s,resolvedP:i,index:o}}async unlinkPromise(e){return this.unlinkSync(e)}unlinkSync(e){if(this.readOnly)throw ln(`unlink '${e}'`);let r=this.resolveFilename(`unlink '${e}'`,e);if(this.listings.has(r))throw rh(`unlink '${e}'`);let i=this.entries.get(r);if(typeof i=="undefined")throw $a(`unlink '${e}'`);this.deleteEntry(r,i)}async utimesPromise(e,r,i){return this.utimesSync(e,r,i)}utimesSync(e,r,i){if(this.readOnly)throw ln(`utimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e);this.utimesImpl(n,i)}async lutimesPromise(e,r,i){return this.lutimesSync(e,r,i)}lutimesSync(e,r,i){if(this.readOnly)throw ln(`lutimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e,!1);this.utimesImpl(n,i)}utimesImpl(e,r){this.listings.has(e)&&(this.entries.has(e)||this.hydrateDirectory(e));let i=this.entries.get(e);if(i===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,i,0,ihe(r),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(e,r){return this.mkdirSync(e,r)}mkdirSync(e,{mode:r=493,recursive:i=!1}={}){if(i){this.mkdirpSync(e,{chmod:r});return}if(this.readOnly)throw ln(`mkdir '${e}'`);let n=this.resolveFilename(`mkdir '${e}'`,e);if(this.entries.has(n)||this.listings.has(n))throw yI(`mkdir '${e}'`);this.hydrateDirectory(n),this.chmodSync(n,r)}async rmdirPromise(e,r){return this.rmdirSync(e,r)}rmdirSync(e,{recursive:r=!1}={}){if(this.readOnly)throw ln(`rmdir '${e}'`);if(r){this.removeSync(e);return}let i=this.resolveFilename(`rmdir '${e}'`,e),n=this.listings.get(i);if(!n)throw eo(`rmdir '${e}'`);if(n.size>0)throw dO(`rmdir '${e}'`);let s=this.entries.get(i);if(typeof s=="undefined")throw $a(`rmdir '${e}'`);this.deleteEntry(e,s)}hydrateDirectory(e){let r=this.libzip.dir.add(this.zip,v.relative(Se.root,e));if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(e),this.registerEntry(e,r),r}async linkPromise(e,r){return this.linkSync(e,r)}linkSync(e,r){throw CO(`link '${e}' -> '${r}'`)}async symlinkPromise(e,r){return this.symlinkSync(e,r)}symlinkSync(e,r){if(this.readOnly)throw ln(`symlink '${e}' -> '${r}'`);let i=this.resolveFilename(`symlink '${e}' -> '${r}'`,r);if(this.listings.has(i))throw rh(`symlink '${e}' -> '${r}'`);if(this.entries.has(i))throw yI(`symlink '${e}' -> '${r}'`);let n=this.setFileSource(i,e);if(this.registerEntry(i,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(_o|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=await this.readFileBuffer(e,{asyncDecompress:!0});return r?i.toString(r):i}readFileSync(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=this.readFileBuffer(e);return r?i.toString(r):i}readFileBuffer(e,r={asyncDecompress:!1}){typeof e=="number"&&(e=this.fdToPath(e,"read"));let i=this.resolveFilename(`open '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`open '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`open '${e}'`);if(this.listings.has(i))throw rh("read");let n=this.entries.get(i);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,r)}async readdirPromise(e,r){return this.readdirSync(e,r)}readdirSync(e,r){let i=this.resolveFilename(`scandir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`scandir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`scandir '${e}'`);let s=[...n];return(r==null?void 0:r.withFileTypes)?s.map(o=>Object.assign(this.statImpl("lstat",v.join(e,o)),{name:o})):s}async readlinkPromise(e){let r=this.prepareReadlink(e);return(await this.getFileSource(r,{asyncDecompress:!0})).toString()}readlinkSync(e){let r=this.prepareReadlink(e);return this.getFileSource(r).toString()}prepareReadlink(e){let r=this.resolveFilename(`readlink '${e}'`,e,!1);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`readlink '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(r))throw eo(`open '${e}'`);if(this.listings.has(r))throw $a(`readlink '${e}'`);let i=this.entries.get(r);if(i===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(i))throw $a(`readlink '${e}'`);return i}async truncatePromise(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=await this.getFileSource(n,{asyncDecompress:!0}),o=Buffer.alloc(r,0);return s.copy(o),await this.writeFilePromise(e,o)}truncateSync(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=this.getFileSource(n),o=Buffer.alloc(r,0);return s.copy(o),this.writeFileSync(e,o)}watch(e,r,i){let n;switch(typeof r){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=r);break}if(!n)return{on:()=>{},close:()=>{}};let s=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(s)}}}watchFile(e,r,i){let n=v.resolve(Se.root,e);return QI(this,n,r,i)}unwatchFile(e,r){let i=v.resolve(Se.root,e);return nh(this,i,r)}};var fi=class extends eA{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,i){return this.baseFs.openPromise(this.mapToBase(e),r,i)}openSync(e,r,i){return this.baseFs.openSync(this.mapToBase(e),r,i)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,i,n,s){return await this.baseFs.readPromise(e,r,i,n,s)}readSync(e,r,i,n,s){return this.baseFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s)}writeSync(e,r,i,n,s){return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}async lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async chownPromise(e,r,i){return this.baseFs.chownPromise(this.mapToBase(e),r,i)}chownSync(e,r,i){return this.baseFs.chownSync(this.mapToBase(e),r,i)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,i=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),i)}copyFileSync(e,r,i=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),i)}async appendFilePromise(e,r,i){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,i)}appendFileSync(e,r,i){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,i)}async writeFilePromise(e,r,i){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,i)}writeFileSync(e,r,i){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,i)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,i){return this.baseFs.utimesPromise(this.mapToBase(e),r,i)}utimesSync(e,r,i){return this.baseFs.utimesSync(this.mapToBase(e),r,i)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkPromise(o,n,i)}symlinkSync(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkSync(o,n,i)}async readFilePromise(e,r){return r==="utf8"?this.baseFs.readFilePromise(this.fsMapToBase(e),r):this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return r==="utf8"?this.baseFs.readFileSync(this.fsMapToBase(e),r):this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}watch(e,r,i){return this.baseFs.watch(this.mapToBase(e),r,i)}watchFile(e,r,i){return this.baseFs.watchFile(this.mapToBase(e),r,i)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};var Xo=class extends fi{constructor(e,{baseFs:r,pathUtils:i}){super(i);this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}};var Ft=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?v.normalize(e):this.baseFs.resolve(v.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}};var vO=Se.root,Zo=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.resolve(Se.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Se.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(vO,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(vO,this.pathUtils.relative(this.target,e))}};var oh=class extends fi{constructor(e,r){super(r);this.instance=null;this.factory=e}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(e){this.instance=e}mapFromBase(e){return e}mapToBase(e){return e}};var ze=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),gb=class extends eA{constructor(){super(v)}getExtractHint(){throw ze()}getRealPath(){throw ze()}resolve(){throw ze()}async openPromise(){throw ze()}openSync(){throw ze()}async opendirPromise(){throw ze()}opendirSync(){throw ze()}async readPromise(){throw ze()}readSync(){throw ze()}async writePromise(){throw ze()}writeSync(){throw ze()}async closePromise(){throw ze()}closeSync(){throw ze()}createWriteStream(){throw ze()}createReadStream(){throw ze()}async realpathPromise(){throw ze()}realpathSync(){throw ze()}async readdirPromise(){throw ze()}readdirSync(){throw ze()}async existsPromise(e){throw ze()}existsSync(e){throw ze()}async accessPromise(){throw ze()}accessSync(){throw ze()}async statPromise(){throw ze()}statSync(){throw ze()}async fstatPromise(e){throw ze()}fstatSync(e){throw ze()}async lstatPromise(e){throw ze()}lstatSync(e){throw ze()}async chmodPromise(){throw ze()}chmodSync(){throw ze()}async chownPromise(){throw ze()}chownSync(){throw ze()}async mkdirPromise(){throw ze()}mkdirSync(){throw ze()}async rmdirPromise(){throw ze()}rmdirSync(){throw ze()}async linkPromise(){throw ze()}linkSync(){throw ze()}async symlinkPromise(){throw ze()}symlinkSync(){throw ze()}async renamePromise(){throw ze()}renameSync(){throw ze()}async copyFilePromise(){throw ze()}copyFileSync(){throw ze()}async appendFilePromise(){throw ze()}appendFileSync(){throw ze()}async writeFilePromise(){throw ze()}writeFileSync(){throw ze()}async unlinkPromise(){throw ze()}unlinkSync(){throw ze()}async utimesPromise(){throw ze()}utimesSync(){throw ze()}async readFilePromise(){throw ze()}readFileSync(){throw ze()}async readlinkPromise(){throw ze()}readlinkSync(){throw ze()}async truncatePromise(){throw ze()}truncateSync(){throw ze()}watch(){throw ze()}watchFile(){throw ze()}unwatchFile(){throw ze()}},bI=gb;bI.instance=new gb;var ah=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return M.fromPortablePath(e)}mapToBase(e){return M.toPortablePath(e)}};var nhe=/^[0-9]+$/,fb=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,she=/^([^/]+-)?[a-f0-9]+$/,Pr=class extends fi{static makeVirtualPath(e,r,i){if(v.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!v.basename(r).match(she))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let s=v.relative(v.dirname(e),i).split("/"),o=0;for(;o{let r=t.indexOf(e);if(r<=0)return null;let i=r;for(;r>=0&&(i=r+e.length,t[i]!==v.sep);){if(t[r-1]===v.sep)return null;r=t.indexOf(e,i)}return t.length>i&&t[i]!==v.sep?null:t.slice(0,i)},Jn=class extends gl{constructor({libzip:e,baseFs:r=new Wt,filter:i=null,maxOpenFiles:n=Infinity,readOnlyArchives:s=!1,useCache:o=!0,maxAge:a=5e3,fileExtensions:l=null}){super();this.fdMap=new Map;this.nextFd=3;this.isZip=new Set;this.notZip=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.libzipFactory=typeof e!="function"?()=>e:e,this.baseFs=r,this.zipInstances=o?new Map:null,this.filter=i,this.maxOpenFiles=n,this.readOnlyArchives=s,this.maxAge=a,this.fileExtensions=l}static async openPromise(e,r){let i=new Jn(r);try{return await e(i)}finally{i.saveAndClose()}}get libzip(){return typeof this.libzipInstance=="undefined"&&(this.libzipInstance=this.libzipFactory()),this.libzipInstance}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.saveAndClose(),this.zipInstances.delete(e)}discardAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.discardAndClose(),this.zipInstances.delete(e)}resolve(e){return this.baseFs.resolve(e)}remapFd(e,r){let i=this.nextFd++|$o;return this.fdMap.set(i,[e,r]),i}async openPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.openPromise(e,r,i),async(n,{subPath:s})=>this.remapFd(n,await n.openPromise(s,r,i)))}openSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.openSync(e,r,i),(n,{subPath:s})=>this.remapFd(n,n.openSync(s,r,i)))}async opendirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.opendirPromise(e,r),async(i,{subPath:n})=>await i.opendirPromise(n,r),{requireSubpath:!1})}opendirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.opendirSync(e,r),(i,{subPath:n})=>i.opendirSync(n,r),{requireSubpath:!1})}async readPromise(e,r,i,n,s){if((e&$o)==0)return await this.baseFs.readPromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("read");let[a,l]=o;return await a.readPromise(l,r,i,n,s)}readSync(e,r,i,n,s){if((e&$o)==0)return this.baseFs.readSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("readSync");let[a,l]=o;return a.readSync(l,r,i,n,s)}async writePromise(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("write");let[a,l]=o;return typeof r=="string"?await a.writePromise(l,r,i):await a.writePromise(l,r,i,n,s)}writeSync(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("writeSync");let[a,l]=o;return typeof r=="string"?a.writeSync(l,r,i):a.writeSync(l,r,i,n,s)}async closePromise(e){if((e&$o)==0)return await this.baseFs.closePromise(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("close");this.fdMap.delete(e);let[i,n]=r;return await i.closePromise(n)}closeSync(e){if((e&$o)==0)return this.baseFs.closeSync(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("closeSync");this.fdMap.delete(e);let[i,n]=r;return i.closeSync(n)}createReadStream(e,r){return e===null?this.baseFs.createReadStream(e,r):this.makeCallSync(e,()=>this.baseFs.createReadStream(e,r),(i,{subPath:n})=>i.createReadStream(n,r))}createWriteStream(e,r){return e===null?this.baseFs.createWriteStream(e,r):this.makeCallSync(e,()=>this.baseFs.createWriteStream(e,r),(i,{subPath:n})=>i.createWriteStream(n,r))}async realpathPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.realpathPromise(e),async(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=await this.baseFs.realpathPromise(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,await r.realpathPromise(n)))})}realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSync(e),(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=this.baseFs.realpathSync(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,r.realpathSync(n)))})}async existsPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.existsPromise(e),async(r,{subPath:i})=>await r.existsPromise(i))}existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e),(r,{subPath:i})=>r.existsSync(i))}async accessPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.accessPromise(e,r),async(i,{subPath:n})=>await i.accessPromise(n,r))}accessSync(e,r){return this.makeCallSync(e,()=>this.baseFs.accessSync(e,r),(i,{subPath:n})=>i.accessSync(n,r))}async statPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.statPromise(e,r),async(i,{subPath:n})=>await i.statPromise(n,r))}statSync(e,r){return this.makeCallSync(e,()=>this.baseFs.statSync(e,r),(i,{subPath:n})=>i.statSync(n,r))}async fstatPromise(e,r){if((e&$o)==0)return this.baseFs.fstatPromise(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstat");let[n,s]=i;return n.fstatPromise(s,r)}fstatSync(e,r){if((e&$o)==0)return this.baseFs.fstatSync(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let[n,s]=i;return n.fstatSync(s,r)}async lstatPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.lstatPromise(e,r),async(i,{subPath:n})=>await i.lstatPromise(n,r))}lstatSync(e,r){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e,r),(i,{subPath:n})=>i.lstatSync(n,r))}async chmodPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.chmodPromise(e,r),async(i,{subPath:n})=>await i.chmodPromise(n,r))}chmodSync(e,r){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,r),(i,{subPath:n})=>i.chmodSync(n,r))}async chownPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.chownPromise(e,r,i),async(n,{subPath:s})=>await n.chownPromise(s,r,i))}chownSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.chownSync(e,r,i),(n,{subPath:s})=>n.chownSync(s,r,i))}async renamePromise(e,r){return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.renamePromise(e,r),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(i,{subPath:n})=>await this.makeCallPromise(r,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await i.renamePromise(n,o)}))}renameSync(e,r){return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.renameSync(e,r),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(i,{subPath:n})=>this.makeCallSync(r,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return i.renameSync(n,o)}))}async copyFilePromise(e,r,i=0){let n=async(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&await this.existsPromise(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=await s.readFilePromise(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}await a.writeFilePromise(l,c)};return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.copyFilePromise(e,r,i),async(s,{subPath:o})=>await n(this.baseFs,e,s,o)),async(s,{subPath:o})=>await this.makeCallPromise(r,async()=>await n(s,o,this.baseFs,r),async(a,{subPath:l})=>s!==a?await n(s,o,a,l):await s.copyFilePromise(o,l,i)))}copyFileSync(e,r,i=0){let n=(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&this.existsSync(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=s.readFileSync(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}a.writeFileSync(l,c)};return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.copyFileSync(e,r,i),(s,{subPath:o})=>n(this.baseFs,e,s,o)),(s,{subPath:o})=>this.makeCallSync(r,()=>n(s,o,this.baseFs,r),(a,{subPath:l})=>s!==a?n(s,o,a,l):s.copyFileSync(o,l,i)))}async appendFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.appendFilePromise(e,r,i),async(n,{subPath:s})=>await n.appendFilePromise(s,r,i))}appendFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.appendFileSync(e,r,i),(n,{subPath:s})=>n.appendFileSync(s,r,i))}async writeFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.writeFilePromise(e,r,i),async(n,{subPath:s})=>await n.writeFilePromise(s,r,i))}writeFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.writeFileSync(e,r,i),(n,{subPath:s})=>n.writeFileSync(s,r,i))}async unlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.unlinkPromise(e),async(r,{subPath:i})=>await r.unlinkPromise(i))}unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e),(r,{subPath:i})=>r.unlinkSync(i))}async utimesPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.utimesPromise(e,r,i),async(n,{subPath:s})=>await n.utimesPromise(s,r,i))}utimesSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.utimesSync(e,r,i),(n,{subPath:s})=>n.utimesSync(s,r,i))}async mkdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.mkdirPromise(e,r),async(i,{subPath:n})=>await i.mkdirPromise(n,r))}mkdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,r),(i,{subPath:n})=>i.mkdirSync(n,r))}async rmdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.rmdirPromise(e,r),async(i,{subPath:n})=>await i.rmdirPromise(n,r))}rmdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e,r),(i,{subPath:n})=>i.rmdirSync(n,r))}async linkPromise(e,r){return await this.makeCallPromise(r,async()=>await this.baseFs.linkPromise(e,r),async(i,{subPath:n})=>await i.linkPromise(e,n))}linkSync(e,r){return this.makeCallSync(r,()=>this.baseFs.linkSync(e,r),(i,{subPath:n})=>i.linkSync(e,n))}async symlinkPromise(e,r,i){return await this.makeCallPromise(r,async()=>await this.baseFs.symlinkPromise(e,r,i),async(n,{subPath:s})=>await n.symlinkPromise(e,s))}symlinkSync(e,r,i){return this.makeCallSync(r,()=>this.baseFs.symlinkSync(e,r,i),(n,{subPath:s})=>n.symlinkSync(e,s))}async readFilePromise(e,r){return this.makeCallPromise(e,async()=>{switch(r){case"utf8":return await this.baseFs.readFilePromise(e,r);default:return await this.baseFs.readFilePromise(e,r)}},async(i,{subPath:n})=>await i.readFilePromise(n,r))}readFileSync(e,r){return this.makeCallSync(e,()=>{switch(r){case"utf8":return this.baseFs.readFileSync(e,r);default:return this.baseFs.readFileSync(e,r)}},(i,{subPath:n})=>i.readFileSync(n,r))}async readdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.readdirPromise(e,r),async(i,{subPath:n})=>await i.readdirPromise(n,r),{requireSubpath:!1})}readdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.readdirSync(e,r),(i,{subPath:n})=>i.readdirSync(n,r),{requireSubpath:!1})}async readlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.readlinkPromise(e),async(r,{subPath:i})=>await r.readlinkPromise(i))}readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSync(e),(r,{subPath:i})=>r.readlinkSync(i))}async truncatePromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.truncatePromise(e,r),async(i,{subPath:n})=>await i.truncatePromise(n,r))}truncateSync(e,r){return this.makeCallSync(e,()=>this.baseFs.truncateSync(e,r),(i,{subPath:n})=>i.truncateSync(n,r))}watch(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watch(e,r,i),(n,{subPath:s})=>n.watch(s,r,i))}watchFile(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watchFile(e,r,i),()=>QI(this,e,r,i))}unwatchFile(e,r){return this.makeCallSync(e,()=>this.baseFs.unwatchFile(e,r),()=>nh(this,e,r))}async makeCallPromise(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return await r();let s=this.resolve(e),o=this.findZip(s);return o?n&&o.subPath==="/"?await r():await this.getZipPromise(o.archivePath,async a=>await i(a,o)):await r()}makeCallSync(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return r();let s=this.resolve(e),o=this.findZip(s);return!o||n&&o.subPath==="/"?r():this.getZipSync(o.archivePath,a=>i(a,o))}findZip(e){if(this.filter&&!this.filter.test(e))return null;let r="";for(;;){let i=e.substr(r.length),n;if(!this.fileExtensions)n=SO(i,".zip");else for(let s of this.fileExtensions)if(n=SO(i,s),n)break;if(!n)return null;if(r=this.pathUtils.join(r,n),this.isZip.has(r)===!1){if(this.notZip.has(r))continue;try{if(!this.baseFs.lstatSync(r).isFile()){this.notZip.add(r);continue}}catch{return null}this.isZip.add(r)}return{archivePath:r,subPath:this.pathUtils.join(Se.root,e.substr(r.length))}}}limitOpenFiles(e){if(this.zipInstances===null)return;let r=Date.now(),i=r+this.maxAge,n=e===null?0:this.zipInstances.size-e;for(let[s,{zipFs:o,expiresAt:a,refCount:l}]of this.zipInstances.entries())if(!(l!==0||o.hasOpenFileHandles())){if(r>=a){o.saveAndClose(),this.zipInstances.delete(s),n-=1;continue}else if(e===null||n<=0){i=a;break}o.saveAndClose(),this.zipInstances.delete(s),n-=1}this.limitOpenFilesTimeout===null&&(e===null&&this.zipInstances.size>0||e!==null)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},i-r).unref())}async getZipPromise(e,r){let i=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(e)});if(this.zipInstances){let n=this.zipInstances.get(e);if(!n){let s=await i();n=this.zipInstances.get(e),n||(n={zipFs:new Jr(e,s),expiresAt:0,refCount:0})}this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await r(n.zipFs)}finally{n.refCount-=1}}else{let n=new Jr(e,await i());try{return await r(n)}finally{n.saveAndClose()}}}getZipSync(e,r){let i=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(e)});if(this.zipInstances){let n=this.zipInstances.get(e);return n||(n={zipFs:new Jr(e,i()),expiresAt:0,refCount:0}),this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,r(n.zipFs)}else{let n=new Jr(e,i());try{return r(n)}finally{n.saveAndClose()}}}};var lh=ie(require("util"));var vI=ie(require("url"));var hb=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return e}mapToBase(e){return e instanceof vI.URL?(0,vI.fileURLToPath)(e):e}};var ohe=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","chownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),xO=new Set(["accessPromise","appendFilePromise","chmodPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]),ahe=new Set(["appendFilePromise","chmodPromise","chownPromise","closePromise","readPromise","readFilePromise","statPromise","truncatePromise","utimesPromise","writePromise","writeFilePromise"]);function pb(t,e){e=new hb(e);let r=(i,n,s)=>{let o=i[n];i[n]=s,typeof(o==null?void 0:o[lh.promisify.custom])!="undefined"&&(s[lh.promisify.custom]=o[lh.promisify.custom])};{r(t,"exists",(i,...n)=>{let o=typeof n[n.length-1]=="function"?n.pop():()=>{};process.nextTick(()=>{e.existsPromise(i).then(a=>{o(a)},()=>{o(!1)})})}),r(t,"read",(i,n,...s)=>{let a=typeof s[s.length-1]=="function"?s.pop():()=>{};process.nextTick(()=>{e.readPromise(i,n,...s).then(l=>{a(null,l,n)},l=>{a(l,0,n)})})});for(let i of xO){let n=i.replace(/Promise$/,"");if(typeof t[n]=="undefined")continue;let s=e[i];if(typeof s=="undefined")continue;r(t,n,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{s.apply(e,a).then(u=>{c(null,u)},u=>{c(u)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",i=>{try{return e.existsSync(i)}catch(n){return!1}});for(let i of ohe){let n=i;if(typeof t[n]=="undefined")continue;let s=e[i];typeof s!="undefined"&&r(t,n,s.bind(e))}t.realpathSync.native=t.realpathSync}{let i=process.emitWarning;process.emitWarning=()=>{};let n;try{n=t.promises}finally{process.emitWarning=i}if(typeof n!="undefined"){for(let o of xO){let a=o.replace(/Promise$/,"");if(typeof n[a]=="undefined")continue;let l=e[o];typeof l!="undefined"&&o!=="open"&&r(n,a,l.bind(e))}class s{constructor(a){this.fd=a}}for(let o of ahe){let a=o.replace(/Promise$/,""),l=e[o];typeof l!="undefined"&&r(s.prototype,a,function(...c){return l.call(e,this.fd,...c)})}r(n,"open",async(...o)=>{let a=await e.openPromise(...o);return new s(a)})}}t.read[lh.promisify.custom]=async(i,n,...s)=>({bytesRead:await e.readPromise(i,n,...s),buffer:n})}function SI(t,e){let r=Object.create(t);return pb(r,e),r}var kO=ie(require("os"));function PO(t){let e=M.toPortablePath(kO.default.tmpdir()),r=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return v.join(e,`${t}${r}`)}var vs=new Set,DO=!1;function RO(){DO||(DO=!0,process.once("exit",()=>{T.rmtempSync()}))}var T=Object.assign(new Wt,{detachTemp(t){vs.delete(t)},mktempSync(t){for(RO();;){let e=PO("xfs-");try{this.mkdirSync(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=this.realpathSync(e);if(vs.add(r),typeof t!="undefined")try{return t(r)}finally{if(vs.has(r)){vs.delete(r);try{this.removeSync(r)}catch{}}}else return r}},async mktempPromise(t){for(RO();;){let e=PO("xfs-");try{await this.mkdirPromise(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=await this.realpathPromise(e);if(vs.add(r),typeof t!="undefined")try{return await t(r)}finally{if(vs.has(r)){vs.delete(r);try{await this.removePromise(r)}catch{}}}else return r}},async rmtempPromise(){await Promise.all(Array.from(vs.values()).map(async t=>{try{await T.removePromise(t,{maxRetries:0}),vs.delete(t)}catch{}}))},rmtempSync(){for(let t of vs)try{T.removeSync(t),vs.delete(t)}catch{}}});var vb=ie(bb()),Pn;(function(i){i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always"})(Pn||(Pn={}));function dl(t){return t!==null&&typeof t.fd=="number"}var Cl=new Set;function Sb(){}function xb(){for(let t of Cl)t.kill()}async function to(t,e,{cwd:r,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":dl(s)&&(c[0]=s),dl(o)&&(c[1]=o),dl(a)&&(c[2]=a);let u=(0,vb.default)(t,e,{cwd:M.fromPortablePath(r),env:_(P({},i),{PWD:M.fromPortablePath(r)}),stdio:c});Cl.add(u),Cl.size===1&&(process.on("SIGINT",Sb),process.on("SIGTERM",xb)),!dl(s)&&s!==null&&s.pipe(u.stdin),dl(o)||u.stdout.pipe(o,{end:!1}),dl(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))dl(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,d)=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1&&p>0)&&g(),p===0||!n?f({code:kb(p,d)}):h(p!==null?new Error(`Child "${t}" exited with exit code ${p}`):new Error(`Child "${t}" exited with signal ${d}`))})})}async function Nhe(t,e,{cwd:r,env:i=process.env,encoding:n="utf8",strict:s=!1}){let o=["ignore","pipe","pipe"],a=[],l=[],c=M.fromPortablePath(r);typeof i.PWD!="undefined"&&(i=_(P({},i),{PWD:c}));let u=(0,vb.default)(t,e,{cwd:c,env:i,stdio:o});return u.stdout.on("data",g=>{a.push(g)}),u.stderr.on("data",g=>{l.push(g)}),await new Promise((g,f)=>{u.on("error",()=>{f()}),u.on("close",(h,p)=>{let d=n==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(n),m=n==="buffer"?Buffer.concat(l):Buffer.concat(l).toString(n);h===0||!s?g({code:kb(h,p),stdout:d,stderr:m}):f(Object.assign(new Error(`Child "${t}" exited with exit code ${h} - -${m}`),{code:kb(h,p),stdout:d,stderr:m}))})})}var Lhe=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function kb(t,e){let r=Lhe.get(e);return typeof r!="undefined"?128+r:t!=null?t:1}var Pb={};it(Pb,{getDefaultGlobalFolder:()=>Rb,getHomeFolder:()=>uh,isFolderInside:()=>Fb});var Db=ie(require("os"));function Rb(){if(process.platform==="win32"){let t=M.toPortablePath(process.env.LOCALAPPDATA||M.join((0,Db.homedir)(),"AppData","Local"));return v.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=M.toPortablePath(process.env.XDG_DATA_HOME);return v.resolve(t,"yarn/berry")}return v.resolve(uh(),".yarn/berry")}function uh(){return M.toPortablePath((0,Db.homedir)()||"/usr/local/share")}function Fb(t,e){let r=v.relative(e,t);return r&&!r.startsWith("..")&&!v.isAbsolute(r)}var ue={};it(ue,{LogLevel:()=>Ts,Style:()=>Gl,Type:()=>Le,addLogFilterSupport:()=>Cp,applyColor:()=>On,applyHyperlink:()=>Ku,applyStyle:()=>Py,json:()=>Uu,mark:()=>xx,pretty:()=>Ve,prettyField:()=>Yl,prettyList:()=>Kx,supportsColor:()=>xy,supportsHyperlinks:()=>Mx,tuple:()=>jl});var pp=ie(jb()),dp=ie(ml()),o3=ie(Nn()),a3=ie(gU());var z;(function(te){te[te.UNNAMED=0]="UNNAMED",te[te.EXCEPTION=1]="EXCEPTION",te[te.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",te[te.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",te[te.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",te[te.BUILD_DISABLED=5]="BUILD_DISABLED",te[te.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",te[te.MUST_BUILD=7]="MUST_BUILD",te[te.MUST_REBUILD=8]="MUST_REBUILD",te[te.BUILD_FAILED=9]="BUILD_FAILED",te[te.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",te[te.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",te[te.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",te[te.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",te[te.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",te[te.REMOTE_INVALID=15]="REMOTE_INVALID",te[te.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",te[te.RESOLUTION_PACK=17]="RESOLUTION_PACK",te[te.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",te[te.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",te[te.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",te[te.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",te[te.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",te[te.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",te[te.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",te[te.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",te[te.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",te[te.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",te[te.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",te[te.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",te[te.FETCH_FAILED=30]="FETCH_FAILED",te[te.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",te[te.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",te[te.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",te[te.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",te[te.NETWORK_ERROR=35]="NETWORK_ERROR",te[te.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",te[te.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",te[te.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",te[te.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",te[te.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",te[te.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",te[te.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",te[te.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",te[te.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",te[te.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",te[te.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",te[te.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",te[te.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",te[te.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",te[te.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",te[te.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",te[te.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",te[te.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",te[te.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",te[te.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",te[te.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",te[te.INVALID_MANIFEST=57]="INVALID_MANIFEST",te[te.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",te[te.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",te[te.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",te[te.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",te[te.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",te[te.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",te[te.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",te[te.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",te[te.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",te[te.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",te[te.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",te[te.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",te[te.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",te[te.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",te[te.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",te[te.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",te[te.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",te[te.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",te[te.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",te[te.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE"})(z||(z={}));function KI(t){return`YN${t.toString(10).padStart(4,"0")}`}var de={};it(de,{BufferStream:()=>OH,CachingStrategy:()=>Dl,DefaultStream:()=>KH,assertNever:()=>Lv,bufferStream:()=>Cu,buildIgnorePattern:()=>DIe,convertMapsToIndexableObjects:()=>aE,dynamicRequire:()=>mu,escapeRegExp:()=>SIe,getArrayWithDefault:()=>hu,getFactoryWithDefault:()=>na,getMapWithDefault:()=>pu,getSetWithDefault:()=>Pl,isIndexableObject:()=>Tv,isPathLike:()=>RIe,isTaggedYarnVersion:()=>vIe,mapAndFilter:()=>kl,mapAndFind:()=>MH,overrideType:()=>Nv,parseBoolean:()=>Hh,parseOptionalBoolean:()=>jH,prettifyAsyncErrors:()=>du,prettifySyncErrors:()=>Mv,releaseAfterUseAsync:()=>kIe,replaceEnvVariables:()=>Ov,sortMap:()=>gn,tryParseOptionalBoolean:()=>Kv,validateEnum:()=>xIe});var vh={};it(vh,{Builtins:()=>Ev,Cli:()=>oo,Command:()=>ye,Option:()=>Y,UsageError:()=>me});var yl=0,Ih=1,Gi=2,sv="",hi="\0",Au=-1,ov=/^(-h|--help)(?:=([0-9]+))?$/,UI=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,fU=/^-[a-zA-Z]{2,}$/,av=/^([^=]+)=([\s\S]*)$/,Av=process.env.DEBUG_CLI==="1";var me=class extends Error{constructor(e){super(e);this.clipanion={type:"usage"},this.name="UsageError"}},Eh=class extends Error{constructor(e,r){super();if(this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===r[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} - -${this.candidates.map(({usage:n})=>`$ ${n}`).join(` -`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: - -$ ${i} -${lv(e)}`}else this.message=`Command not found; did you mean one of: - -${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},cv=class extends Error{constructor(e,r){super();this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: - -${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},lv=t=>`While running ${t.filter(e=>e!==hi).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`;var yh=Symbol("clipanion/isOption");function ji(t){return _(P({},t),{[yh]:!0})}function so(t,e){return typeof t=="undefined"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function HI(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function wh(t,e){return e.length===1?new me(`${t}: ${HI(e[0],!0)}`):new me(`${t}: -${e.map(r=>` -- ${HI(r)}`).join("")}`)}function Bh(t,e,r){if(typeof r=="undefined")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!r(e,{errors:i,coercions:n,coercion:s}))throw wh(`Invalid value for ${t}`,i);for(let[,a]of n)a();return e}var ye=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(typeof r!="undefined"){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(Ss(),lu)),a=o(n(s()),r),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw wh("Invalid option schema",l);for(let[,g]of c)g()}let i=await this.execute();return typeof i!="undefined"?i:0}};ye.isOption=yh;ye.Default=[];function un(t){Av&&console.log(t)}var BU={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Au};function QU(){return{nodes:[qi(),qi(),qi()]}}function nCe(t){let e=QU(),r=[],i=e.nodes.length;for(let n of t){r.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=t.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)r(a);for(let[,{to:o}]of n.dynamics)r(o);for(let{to:o}of n.shortcuts)r(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=t.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};r(yl)}function oCe(t,{prefix:e=""}={}){if(Av){un(`${e}Nodes are:`);for(let r=0;rl!==Gi).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===Gi))throw new Eh(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=aCe(a)}if(i.length>0){un(" Results:");for(let s of i)un(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else un(" No results");return i}function ACe(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,hi)){for(let{to:r}of t.statics[hi])if(r===Ih)return!0}return!1}function cCe(t,e,r){let i=r&&e.length>0?[""]:[],n=vU(t,e,r),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let d=t.nodes[p],m=Object.keys(d.statics);for(let E of Object.keys(d.statics)){let B=m[0];for(let{to:b,reducer:R}of d.statics[B])R==="pushPath"&&(u||l.push(B),g.push(b))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=t.nodes[l],g=ACe(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==hi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===Gi)continue;let p=lCe(f,c);if(p!==null)for(let d of p)a([...i,d],l)}}return[...s].sort()}function gCe(t,e){let r=vU(t,[...e,hi]);return uCe(e,r.map(({state:i})=>i))}function aCe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function uCe(t,e){let r=e.filter(g=>g.selectedIndex!==null);if(r.length===0)throw new Error;let i=r.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new Eh(t,r.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=fCe(c);if(u.length>1)throw new cv(t,u.map(g=>g.candidateUsage));return u[0]}function fCe(t){let e=[],r=[];for(let i of t)i.selectedIndex===Au?r.push(i):e.push(i);return r.length>0&&e.push(_(P({},BU),{path:SU(...r.map(i=>i.path)),options:r.reduce((i,n)=>i.concat(n.options),[])})),e}function SU(t,e,...r){return e===void 0?Array.from(t):SU(t.filter((i,n)=>i===e[n]),...r)}function qi(){return{dynamics:[],shortcuts:[],statics:{}}}function bU(t){return t===Ih||t===Gi}function Cv(t,e=0){return{to:bU(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function iCe(t,e=0){let r=qi();for(let[i,n]of t.dynamics)r.dynamics.push([i,Cv(n,e)]);for(let i of t.shortcuts)r.shortcuts.push(Cv(i,e));for(let[i,n]of Object.entries(t.statics))r.statics[i]=n.map(s=>Cv(s,e));return r}function pi(t,e,r,i,n){t.nodes[e].dynamics.push([r,{to:i,reducer:n}])}function cu(t,e,r,i){t.nodes[e].shortcuts.push({to:r,reducer:i})}function ta(t,e,r,i,n){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:i,reducer:n})}function jI(t,e,r,i){if(Array.isArray(e)){let[n,...s]=e;return t[n](r,i,...s)}else return t[e](r,i)}function lCe(t,e){let r=Array.isArray(t)?YI[t[0]]:YI[t];if(typeof r.suggest=="undefined")return null;let i=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...i)}var YI={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,i)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&fU.test(e)&&[...e.slice(1)].every(i=>r.includes(`-${i}`)),isBoundOption:(t,e,r,i)=>{let n=e.match(av);return!t.ignoreOptions&&!!n&&UI.test(n[1])&&r.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&ov.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&UI.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!UI.test(e)};YI.isOption.suggest=(t,e,r=!0)=>r?null:[e];var dv={setCandidateState:(t,e,r)=>P(P({},t),r),setSelectedIndex:(t,e,r)=>_(P({},t),{selectedIndex:r}),pushBatch:(t,e)=>_(P({},t),{options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,i]=e.match(av);return _(P({},t),{options:t.options.concat({name:r,value:i})})},pushPath:(t,e)=>_(P({},t),{path:t.path.concat(e)}),pushPositional:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:Ln})}),pushTrue:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>_(P({},t),{options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let i=_(P({},t),{options:[...t.options]}),n=t.options[t.options.length-1];return n.value=((r=n.value)!==null&&r!==void 0?r:[]).concat([e]),i},setStringValue:(t,e)=>{let r=_(P({},t),{options:[...t.options]}),i=t.options[t.options.length-1];return i.value=e,r},inhibateOptions:t=>_(P({},t),{ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,i]=e.match(ov);return typeof i!="undefined"?_(P({},t),{options:[{name:"-c",value:String(r)},{name:"-i",value:i}]}):_(P({},t),{options:[{name:"-c",value:String(r)}]})},setError:(t,e,r)=>e===hi?_(P({},t),{errorMessage:`${r}.`}):_(P({},t),{errorMessage:`${r} ("${e}").`}),setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return _(P({},t),{errorMessage:`Not enough arguments to option ${r.name}.`})}},Ln=Symbol(),xU=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:i,proxy:n})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===Ln)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Ln?this.arity.extra.push(e):this.arity.extra!==Ln&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Ln)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Ln?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context=="undefined")throw new Error("Assertion failed: No context attached");let e=QU(),r=yl,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);r=xs(e,qi()),ta(e,yl,sv,r,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=r;if(a.length>0){let f=xs(e,qi());cu(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=xs(e,qi());pi(e,l,"isHelp",f,["useHelp",this.cliIndex]),ta(e,f,hi,Ih,["setSelectedIndex",Au]),this.registerOptions(e,l)}this.arity.leading.length>0&&ta(e,l,hi,Gi,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&ta(e,h,hi,Gi,["setError","Not enough positional arguments"]),pi(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Ln||this.arity.extra.length>0){let f=xs(e,qi());if(cu(e,c,f),this.arity.extra===Ln){let h=xs(e,qi());this.arity.proxy||this.registerOptions(e,h),pi(e,c,s,h,"pushExtraNoLimits"),pi(e,h,s,h,"pushExtraNoLimits"),cu(e,h,f)}else for(let h=0;h0&&ta(e,u,hi,Gi,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)pi(e,r,["isOption",s,i.hidden||s!==n],r,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&pi(e,r,["isNegatedOption",s],r,["pushFalse",s]);else{let s=xs(e,qi());for(let o of i.names)pi(e,r,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&egCe(i,n),suggest:(n,s)=>cCe(i,n,s)}}};var kU=80,mv=Array(kU).fill("\u2501");for(let t=0;t<=24;++t)mv[mv.length-t]=`[38;5;${232+t}m\u2501`;var Iv={header:t=>`\u2501\u2501\u2501 ${t}${t.length`${t}`,error:t=>`${t}`,code:t=>`${t}`},PU={header:t=>t,bold:t=>t,error:t=>t,code:t=>t};function hCe(t){let e=t.split(` -`),r=e.filter(n=>n.match(/\S/)),i=r.length>0?r.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` -`)}function Vn(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` -`),t=hCe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 - -`),t=t.replace(/\n(\n)?\n*/g,"$1"),r&&(t=t.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` -`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` -`)}).join(` - -`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),t?`${t} -`:""}var bh=class extends ye{constructor(e){super();this.contexts=e,this.commands=[]}static from(e,r){let i=new bh(r);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index!="undefined"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: -`),this.context.stdout.write(` -`);let r=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` -`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}};var DU=Symbol("clipanion/errorCommand");function pCe(){return process.env.FORCE_COLOR==="0"?!1:!!(process.env.FORCE_COLOR==="1"||typeof process.stdout!="undefined"&&process.stdout.isTTY)}var oo=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:i,enableColors:n=pCe()}={}){this.registrations=new Map,this.builder=new Qh({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=i,this.enableColors=n}static from(e,r={}){let i=new oo(r);for(let n of e)i.register(n);return i}register(e){var r;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[ye.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(r=e.paths)!==null&&r!==void 0?r:n.paths;if(typeof a!="undefined")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:r,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case Au:return bh.from(n,r);default:{let{commandClass:s}=r[n.selectedIndex],o=this.registrations.get(s);if(typeof o=="undefined")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[DU]=a,l}}break}}async run(e,r){let i;if(!Array.isArray(e))i=e;else try{i=this.process(e)}catch(s){return r.stdout.write(this.error(s)),1}if(i.help)return r.stdout.write(this.usage(i,{detailed:!0})),0;i.context=r,i.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(s,o)=>this.error(s,o),process:s=>this.process(s),run:(s,o)=>this.run(s,P(P({},r),o)),usage:(s,o)=>this.usage(s,o)};let n;try{n=await i.validateAndExecute().catch(s=>i.catch(s).then(()=>0))}catch(s){return r.stdout.write(this.error(s,{command:i})),1}return n}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:i}=this.builder.compile();return i(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage=="undefined")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category!="undefined"?Vn(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description!="undefined"?Vn(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details!="undefined"?Vn(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples!="undefined"?i.usage.examples.map(([f,h])=>[Vn(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return r}usage(e=null,{colored:r,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage!="undefined";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof ye?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Vn(l,{format:this.format(r),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` -`),(c!==""||u.length>0)&&(a+=`${this.format(r).header("Usage")} -`,a+=` -`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(r).bold(n)}${g} -`,f.length>0){a+=` -`,a+=`${Iv.header("Options")} -`;let h=f.reduce((p,d)=>Math.max(p,d.definition.length),0);a+=` -`;for(let{definition:p,description:d}of f)a+=` ${this.format(r).bold(p.padEnd(h))} ${Vn(d,{format:this.format(r),paragraphs:!1})}`}if(c!==""&&(a+=` -`,a+=`${this.format(r).header("Details")} -`,a+=` -`,a+=Vn(c,{format:this.format(r),paragraphs:!0})),u.length>0){a+=` -`,a+=`${this.format(r).header("Examples")} -`;for(let[h,p]of u)a+=` -`,a+=Vn(h,{format:this.format(r),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(r).bold(n)}`).replace(/\$0/g,this.binaryName)} -`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(r).bold(n)}${l} -`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage=="undefined")continue;let p=typeof f.usage.category!="undefined"?Vn(f.usage.category,{format:this.format(r),paragraphs:!1}):null,d=l.get(p);typeof d=="undefined"&&l.set(p,d=[]);let{usage:m}=this.getUsageByIndex(h);d.push({commandClass:f,usage:m})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel!="undefined",g=typeof this.binaryVersion!="undefined";u||g?(u&&g?a+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} - -`:u?a+=`${this.format(r).header(`${this.binaryLabel}`)} -`:a+=`${this.format(r).header(`${this.binaryVersion}`)} -`,a+=` ${this.format(r).bold(n)}${this.binaryName} -`):a+=`${this.format(r).bold(n)}${this.binaryName} -`;for(let f of c){let h=l.get(f).slice().sort((d,m)=>d.usage.localeCompare(m.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` -`,a+=`${this.format(r).header(`${p}`)} -`;for(let{commandClass:d,usage:m}of h){let E=d.usage.description||"undocumented";a+=` -`,a+=` ${this.format(r).bold(m)} -`,a+=` ${Vn(E,{format:this.format(r),paragraphs:!1})}`}}a+=` -`,a+=Vn("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return a}error(e,r){var i,{colored:n,command:s=(i=e[DU])!==null&&i!==void 0?i:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} -`;let l=e.clipanion;return typeof l!="undefined"?l.type==="usage"&&(o+=` -`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} -`),o}getUsageByRegistration(e,r){let i=this.registrations.get(e);if(typeof i=="undefined")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}format(e=this.enableColors){return e?Iv:PU}};oo.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr};var Ev={};it(Ev,{DefinitionsCommand:()=>qI,HelpCommand:()=>JI,VersionCommand:()=>WI});var qI=class extends ye{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};qI.paths=[["--clipanion=definitions"]];var JI=class extends ye{async execute(){this.context.stdout.write(this.cli.usage())}};JI.paths=[["-h"],["--help"]];var WI=class extends ye{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} -`)}};WI.paths=[["-v"],["--version"]];var Y={};it(Y,{Array:()=>RU,Boolean:()=>FU,Counter:()=>NU,Proxy:()=>LU,Rest:()=>TU,String:()=>MU,applyValidator:()=>Bh,cleanValidationError:()=>HI,formatError:()=>wh,isOptionSymbol:()=>yh,makeCommandOption:()=>ji,rerouteArguments:()=>so});function RU(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i!="undefined"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function FU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function NU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function LU(t={}){return ji({definition(e,r){var i;e.addProxy({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){return i.positionals.map(({value:n})=>n)}})}function TU(t={}){return ji({definition(e,r){var i;e.addRest({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){let n=o=>{let a=i.positionals[o];return a.extra===Ln||a.extra===!1&&oo)}})}function dCe(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Bh(g!=null?g:c,f,n.validator):f}})}function CCe(t={}){let{required:e=!0}=t;return ji({definition(r,i){var n;r.addPositional({name:(n=t.name)!==null&&n!==void 0?n:i,required:t.required})},transformer(r,i,n){var s;for(let o=0;oJSON.stringify(i)).join(", ")})`);return e}function kl(t,e){let r=[];for(let i of t){let n=e(i);n!==LH&&r.push(n)}return r}var LH=Symbol();kl.skip=LH;function MH(t,e){for(let r of t){let i=e(r);if(i!==TH)return i}}var TH=Symbol();MH.skip=TH;function Tv(t){return typeof t=="object"&&t!==null}function aE(t){if(t instanceof Map&&(t=Object.fromEntries(t)),Tv(t))for(let e of Object.keys(t)){let r=t[e];Tv(r)&&(t[e]=aE(r))}return t}function na(t,e,r){let i=t.get(e);return typeof i=="undefined"&&t.set(e,i=r()),i}function hu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=[]),r}function Pl(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Set),r}function pu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Map),r}async function kIe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function du(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function Mv(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Cu(t){return await new Promise((e,r)=>{let i=[];t.on("error",n=>{r(n)}),t.on("data",n=>{i.push(n)}),t.on("end",()=>{e(Buffer.concat(i))})})}var OH=class extends Fv.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(e),i(null,null)}_flush(e){e(null,Buffer.concat(this.chunks))}},KH=class extends Fv.Transform{constructor(e=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=e}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,i(null,e)}_flush(e){this.active&&this.ifEmpty.length>0?e(null,this.ifEmpty):e(null)}},Uh=eval("require");function UH(t){return Uh(M.fromPortablePath(t))}function HH(path){let physicalPath=M.fromPortablePath(path),currentCacheEntry=Uh.cache[physicalPath];delete Uh.cache[physicalPath];let result;try{result=UH(physicalPath);let freshCacheEntry=Uh.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{Uh.cache[physicalPath]=currentCacheEntry}return result}var GH=new Map;function PIe(t){let e=GH.get(t),r=T.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let i=HH(t);return GH.set(t,{mtime:r.mtimeMs,instance:i}),i}var Dl;(function(i){i[i.NoCache=0]="NoCache",i[i.FsTime=1]="FsTime",i[i.Node=2]="Node"})(Dl||(Dl={}));function mu(t,{cachingStrategy:e=2}={}){switch(e){case 0:return HH(t);case 1:return PIe(t);case 2:return UH(t);default:throw new Error("Unsupported caching strategy")}}function gn(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(r.map(o=>s(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function DIe(t){return t.length===0?null:t.map(e=>`(${FH.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Ov(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...i)=>{let{variableName:n,colon:s,fallback:o}=i[i.length-1],a=Object.prototype.hasOwnProperty.call(e,n),l=e[n];if(l||a&&!s)return l;if(o!=null)return o;throw new me(`Environment variable not found (${n})`)})}function Hh(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function jH(t){return typeof t=="undefined"?t:Hh(t)}function Kv(t){try{return jH(t)}catch{return null}}function RIe(t){return!!(M.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}var S={};it(S,{areDescriptorsEqual:()=>i3,areIdentsEqual:()=>cp,areLocatorsEqual:()=>up,areVirtualPackagesEquivalent:()=>XQe,bindDescriptor:()=>VQe,bindLocator:()=>_Qe,convertDescriptorToLocator:()=>By,convertLocatorToDescriptor:()=>WQe,convertPackageToLocator:()=>zQe,convertToIdent:()=>JQe,convertToManifestRange:()=>ebe,copyPackage:()=>ap,devirtualizeDescriptor:()=>Ap,devirtualizeLocator:()=>lp,getIdentVendorPath:()=>Lx,isPackageCompatible:()=>Sy,isVirtualDescriptor:()=>hA,isVirtualLocator:()=>Eo,makeDescriptor:()=>Yt,makeIdent:()=>Io,makeLocator:()=>Vi,makeRange:()=>by,parseDescriptor:()=>pA,parseFileStyleRange:()=>ZQe,parseIdent:()=>In,parseLocator:()=>Hl,parseRange:()=>Tu,prettyDependent:()=>Nx,prettyDescriptor:()=>Xt,prettyIdent:()=>Vr,prettyLocator:()=>lt,prettyLocatorNoColors:()=>Rx,prettyRange:()=>yy,prettyReference:()=>fp,prettyResolution:()=>Fx,prettyWorkspace:()=>hp,renamePackage:()=>op,slugifyIdent:()=>Dx,slugifyLocator:()=>Mu,sortDescriptors:()=>Ou,stringifyDescriptor:()=>En,stringifyIdent:()=>St,stringifyLocator:()=>is,tryParseDescriptor:()=>gp,tryParseIdent:()=>n3,tryParseLocator:()=>Qy,virtualizeDescriptor:()=>kx,virtualizePackage:()=>Px});var Lu=ie(require("querystring")),e3=ie(Or()),t3=ie(wY());var mn={};it(mn,{checksumFile:()=>Iy,checksumPattern:()=>Ey,makeHash:()=>zi});var my=ie(require("crypto")),Sx=ie(vx());function zi(...t){let e=(0,my.createHash)("sha512"),r="";for(let i of t)typeof i=="string"?r+=i:i&&(r&&(e.update(r),r=""),e.update(i));return r&&e.update(r),e.digest("hex")}async function Iy(t,{baseFs:e,algorithm:r}={baseFs:T,algorithm:"sha512"}){let i=await e.openPromise(t,"r");try{let n=65536,s=Buffer.allocUnsafeSlow(n),o=(0,my.createHash)(r),a=0;for(;(a=await e.readPromise(i,s,0,n))!==0;)o.update(a===n?s:s.slice(0,a));return o.digest("hex")}finally{await e.closePromise(i)}}async function Ey(t,{cwd:e}){let i=(await(0,Sx.default)(t,{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),n=await(0,Sx.default)([t,...i],{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});n.sort();let s=await Promise.all(n.map(async a=>{let l=[Buffer.from(a)],c=M.toPortablePath(a),u=await T.lstatPromise(c);return u.isSymbolicLink()?l.push(Buffer.from(await T.readlinkPromise(c))):u.isFile()&&l.push(await T.readFilePromise(c)),l.join("\0")})),o=(0,my.createHash)("sha512");for(let a of s)o.update(a);return o.digest("hex")}var wy="virtual:",YQe=5,r3=/(os|cpu)=([a-z0-9_-]+)/,qQe=(0,t3.makeParser)(r3);function Io(t,e){if(t==null?void 0:t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:zi(t,e),scope:t,name:e}}function Yt(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zi(t.identHash,e),range:e}}function Vi(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zi(t.identHash,e),reference:e}}function JQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function By(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function WQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function zQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function op(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function ap(t){return op(t,t)}function kx(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return Yt(t,`virtual:${e}#${t.range}`)}function Px(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return op(t,Vi(t,`virtual:${e}#${t.reference}`))}function hA(t){return t.range.startsWith(wy)}function Eo(t){return t.reference.startsWith(wy)}function Ap(t){if(!hA(t))throw new Error("Not a virtual descriptor");return Yt(t,t.range.replace(/^[^#]*#/,""))}function lp(t){if(!Eo(t))throw new Error("Not a virtual descriptor");return Vi(t,t.reference.replace(/^[^#]*#/,""))}function VQe(t,e){return t.range.includes("::")?t:Yt(t,`${t.range}::${Lu.default.stringify(e)}`)}function _Qe(t,e){return t.reference.includes("::")?t:Vi(t,`${t.reference}::${Lu.default.stringify(e)}`)}function cp(t,e){return t.identHash===e.identHash}function i3(t,e){return t.descriptorHash===e.descriptorHash}function up(t,e){return t.locatorHash===e.locatorHash}function XQe(t,e){if(!Eo(t))throw new Error("Invalid package type");if(!Eo(e))throw new Error("Invalid package type");if(!cp(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let i=e.dependencies.get(r.identHash);if(!i||!i3(r,i))return!1}return!0}function In(t){let e=n3(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function n3(t){let e=t.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,r,i]=e,n=typeof r!="undefined"?r:null;return Io(n,i)}function pA(t,e=!1){let r=gp(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function gp(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid range (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Yt(Io(o,n),a)}function Hl(t,e=!1){let r=Qy(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function Qy(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid reference (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Vi(Io(o,n),a)}function Tu(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let i=typeof r[1]!="undefined"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&i!==e.requireProtocol)throw new Error(`Invalid protocol (${i})`);if((e==null?void 0:e.requireProtocol)&&i===null)throw new Error(`Missing protocol (${i})`);let n=typeof r[3]!="undefined"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&n===null)throw new Error(`Missing source (${t})`);let s=typeof r[3]!="undefined"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),o=(e==null?void 0:e.parseSelector)?Lu.default.parse(s):s,a=typeof r[4]!="undefined"?Lu.default.parse(r[4]):null;return{protocol:i,source:n,selector:o,params:a}}function ZQe(t,{protocol:e}){let{selector:r,params:i}=Tu(t,{requireProtocol:e,requireBindings:!0});if(typeof i.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Hl(i.locator,!0),path:r}}function s3(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function $Qe(t){return t===null?!1:Object.entries(t).length>0}function by({protocol:t,source:e,selector:r,params:i}){let n="";return t!==null&&(n+=`${t}`),e!==null&&(n+=`${s3(e)}#`),n+=s3(r),$Qe(i)&&(n+=`::${Lu.default.stringify(i)}`),n}function ebe(t){let{params:e,protocol:r,source:i,selector:n}=Tu(t);for(let s in e)s.startsWith("__")&&delete e[s];return by({protocol:r,source:i,params:e,selector:n})}function St(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function En(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function is(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function Dx(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function Mu(t){let{protocol:e,selector:r}=Tu(t.reference),i=e!==null?e.replace(/:$/,""):"exotic",n=e3.default.valid(r),s=n!==null?`${i}-${n}`:`${i}`,o=10,a=t.scope?`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`:`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`;return kr(a)}function Vr(t,e){return e.scope?`${Ve(t,`@${e.scope}/`,Le.SCOPE)}${Ve(t,e.name,Le.NAME)}`:`${Ve(t,e.name,Le.NAME)}`}function vy(t){if(t.startsWith(wy)){let e=vy(t.substr(t.indexOf("#")+1)),r=t.substr(wy.length,YQe);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function yy(t,e){return`${Ve(t,vy(e),Le.RANGE)}`}function Xt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.RANGE)}${yy(t,e.range)}`}function fp(t,e){return`${Ve(t,vy(e),Le.REFERENCE)}`}function lt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.REFERENCE)}${fp(t,e.reference)}`}function Rx(t){return`${St(t)}@${vy(t.reference)}`}function Ou(t){return gn(t,[e=>St(e),e=>e.range])}function hp(t,e){return Vr(t,e.locator)}function Fx(t,e,r){let i=hA(e)?Ap(e):e;return r===null?`${Xt(t,i)} \u2192 ${xx(t).Cross}`:i.identHash===r.identHash?`${Xt(t,i)} \u2192 ${fp(t,r.reference)}`:`${Xt(t,i)} \u2192 ${lt(t,r)}`}function Nx(t,e,r){return r===null?`${lt(t,e)}`:`${lt(t,e)} (via ${yy(t,r.range)})`}function Lx(t){return`node_modules/${St(t)}`}function Sy(t,e){return t.conditions?qQe(t.conditions,r=>{let[,i,n]=r.match(r3),s=e[i];return s?s.includes(n):!0}):!0}var gt;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(gt||(gt={}));var oi;(function(i){i.Dependency="Dependency",i.PeerDependency="PeerDependency",i.PeerDependencyMeta="PeerDependencyMeta"})(oi||(oi={}));var ki;(function(i){i.Inactive="inactive",i.Redundant="redundant",i.Active="active"})(ki||(ki={}));var Le={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING"},Gl;(function(e){e[e.BOLD=2]="BOLD"})(Gl||(Gl={}));var Tx=dp.default.GITHUB_ACTIONS?{level:2}:pp.default.supportsColor?{level:pp.default.supportsColor.level}:{level:0},xy=Tx.level!==0,Mx=xy&&!dp.default.GITHUB_ACTIONS&&!dp.default.CIRCLE&&!dp.default.GITLAB,Ox=new pp.default.Instance(Tx),tbe=new Map([[Le.NO_HINT,null],[Le.NULL,["#a853b5",129]],[Le.SCOPE,["#d75f00",166]],[Le.NAME,["#d7875f",173]],[Le.RANGE,["#00afaf",37]],[Le.REFERENCE,["#87afff",111]],[Le.NUMBER,["#ffd700",220]],[Le.PATH,["#d75fd7",170]],[Le.URL,["#d75fd7",170]],[Le.ADDED,["#5faf00",70]],[Le.REMOVED,["#d70000",160]],[Le.CODE,["#87afff",111]],[Le.SIZE,["#ffd700",220]]]),Ls=t=>t,ky={[Le.NUMBER]:Ls({pretty:(t,e)=>`${e}`,json:t=>t}),[Le.IDENT]:Ls({pretty:(t,e)=>Vr(t,e),json:t=>St(t)}),[Le.LOCATOR]:Ls({pretty:(t,e)=>lt(t,e),json:t=>is(t)}),[Le.DESCRIPTOR]:Ls({pretty:(t,e)=>Xt(t,e),json:t=>En(t)}),[Le.RESOLUTION]:Ls({pretty:(t,{descriptor:e,locator:r})=>Fx(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:En(t),locator:e!==null?is(e):null})}),[Le.DEPENDENT]:Ls({pretty:(t,{locator:e,descriptor:r})=>Nx(t,e,r),json:({locator:t,descriptor:e})=>({locator:is(t),descriptor:En(e)})}),[Le.PACKAGE_EXTENSION]:Ls({pretty:(t,e)=>{switch(e.type){case oi.Dependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"dependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependencyMeta:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependenciesMeta",Le.CODE)} \u27A4 ${Vr(t,In(e.selector))} \u27A4 ${On(t,e.key,Le.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case oi.Dependency:return`${St(t.parentDescriptor)} > ${St(t.descriptor)}`;case oi.PeerDependency:return`${St(t.parentDescriptor)} >> ${St(t.descriptor)}`;case oi.PeerDependencyMeta:return`${St(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Le.SETTING]:Ls({pretty:(t,e)=>(t.get(e),Ku(t,On(t,e,Le.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Le.DURATION]:Ls({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),i=Math.ceil((e-r*60*1e3)/1e3);return i===0?`${r}m`:`${r}m ${i}s`}else{let r=Math.floor(e/1e3),i=e-r*1e3;return i===0?`${r}s`:`${r}s ${i}ms`}},json:t=>t}),[Le.SIZE]:Ls({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],i=r.length;for(;i>1&&e<1024**i;)i-=1;let n=1024**i,s=Math.floor(e*100/n)/100;return On(t,`${s} ${r[i-1]}`,Le.NUMBER)},json:t=>t}),[Le.PATH]:Ls({pretty:(t,e)=>On(t,M.fromPortablePath(e),Le.PATH),json:t=>M.fromPortablePath(t)})};function jl(t,e){return[e,t]}function Py(t,e,r){return t.get("enableColors")&&r&2&&(e=pp.default.bold(e)),e}function On(t,e,r){if(!t.get("enableColors"))return e;let i=tbe.get(r);if(i===null)return e;let n=typeof i=="undefined"?r:Tx.level>=3?i[0]:i[1],s=typeof n=="number"?Ox.ansi256(n):n.startsWith("#")?Ox.hex(n):Ox[n];if(typeof s!="function")throw new Error(`Invalid format type ${n}`);return s(e)}var rbe=!!process.env.KONSOLE_VERSION;function Ku(t,e,r){return t.get("enableHyperlinks")?rbe?`]8;;${r}\\${e}]8;;\\`:`]8;;${r}\x07${e}]8;;\x07`:e}function Ve(t,e,r){if(e===null)return On(t,"null",Le.NULL);if(Object.prototype.hasOwnProperty.call(ky,r))return ky[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return On(t,e,r)}function Kx(t,e,r,{separator:i=", "}={}){return[...e].map(n=>Ve(t,n,r)).join(i)}function Uu(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(ky,e))return Nv(e),ky[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function xx(t){return{Check:On(t,"\u2713","green"),Cross:On(t,"\u2718","red"),Question:On(t,"?","cyan")}}function Yl(t,{label:e,value:[r,i]}){return`${Ve(t,e,Le.CODE)}: ${Ve(t,r,i)}`}var Ts;(function(n){n.Error="error",n.Warning="warning",n.Info="info",n.Discard="discard"})(Ts||(Ts={}));function Cp(t,{configuration:e}){let r=e.get("logFilters"),i=new Map,n=new Map,s=[];for(let g of r){let f=g.get("level");if(typeof f=="undefined")continue;let h=g.get("code");typeof h!="undefined"&&i.set(h,f);let p=g.get("text");typeof p!="undefined"&&n.set(p,f);let d=g.get("pattern");typeof d!="undefined"&&s.push([o3.default.matcher(d,{contains:!0}),f])}s.reverse();let o=(g,f,h)=>{if(g===null||g===z.UNNAMED)return h;let p=n.size>0||s.length>0?(0,a3.default)(f):f;if(n.size>0){let d=n.get(p);if(typeof d!="undefined")return d!=null?d:h}if(s.length>0){for(let[d,m]of s)if(d(p))return m!=null?m:h}if(i.size>0){let d=i.get(KI(g));if(typeof d!="undefined")return d!=null?d:h}return h},a=t.reportInfo,l=t.reportWarning,c=t.reportError,u=function(g,f,h,p){switch(o(f,h,p)){case Ts.Info:a.call(g,f,h);break;case Ts.Warning:l.call(g,f!=null?f:z.UNNAMED,h);break;case Ts.Error:c.call(g,f!=null?f:z.UNNAMED,h);break}};t.reportInfo=function(...g){return u(this,...g,Ts.Info)},t.reportWarning=function(...g){return u(this,...g,Ts.Warning)},t.reportError=function(...g){return u(this,...g,Ts.Error)}}var Zt={};it(Zt,{Method:()=>Jl,RequestError:()=>z8.RequestError,del:()=>pxe,get:()=>fxe,getNetworkSettings:()=>Z8,post:()=>iP,put:()=>hxe,request:()=>xp});var q8=ie(zy()),J8=ie(require("https")),W8=ie(require("http")),tP=ie(Nn()),rP=ie(G8()),Vy=ie(require("url"));var j8=ie(require("stream")),Y8=ie(require("string_decoder"));var nt=class extends Error{constructor(e,r,i){super(r);this.reportExtra=i;this.reportCode=e}};function Axe(t){return typeof t.reportCode!="undefined"}var Xi=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,i,n=new Promise(l=>{i=l}),s=l=>{let c=i;n=new Promise(u=>{i=u}),r=l,c()},o=(l=0)=>{s(r+1)},a=async function*(){for(;r{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),r}};var z8=ie(zy()),V8=new Map,_8=new Map,lxe=new W8.Agent({keepAlive:!0}),cxe=new J8.Agent({keepAlive:!0});function X8(t){let e=new Vy.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),{proxy:r}}async function uxe(t){return na(_8,t,()=>T.readFilePromise(t).then(e=>(_8.set(t,e),e)))}function gxe({statusCode:t,statusMessage:e},r){let i=Ve(r,t,Le.NUMBER),n=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Ku(r,`${i}${e?` (${e})`:""}`,n)}async function _y(t,{configuration:e,customErrorMessage:r}){var i,n;try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let o=(n=r==null?void 0:r(s))!=null?n:(i=s.response.body)==null?void 0:i.error;o==null&&(s.message.startsWith("Response code")?o="The remote server failed to provide the requested resource":o=s.message),s instanceof q8.TimeoutError&&s.event==="socket"&&(o+=`(can be increased via ${Ve(e,"httpTimeout",Le.SETTING)})`);let a=new nt(z.NETWORK_ERROR,o,l=>{s.response&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Response Code",value:jl(Le.NO_HINT,gxe(s.response,e))})}`),s.request&&(l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Method",value:jl(Le.NO_HINT,s.request.options.method)})}`),l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request URL",value:jl(Le.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Redirects",value:jl(Le.NO_HINT,Kx(e,s.request.redirects,Le.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Retry Count",value:jl(Le.NO_HINT,`${Ve(e,s.request.retryCount,Le.NUMBER)} (can be increased via ${Ve(e,"httpRetry",Le.SETTING)})`)})}`)});throw a.originalError=s,a}}function Z8(t,e){let r=[...e.configuration.get("networkSettings")].sort(([o],[a])=>a.length-o.length),i={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0},n=Object.keys(i),s=typeof t=="string"?new Vy.URL(t):t;for(let[o,a]of r)if(tP.default.isMatch(s.hostname,o))for(let l of n){let c=a.get(l);c!==null&&typeof i[l]=="undefined"&&(i[l]=c)}for(let o of n)typeof i[o]=="undefined"&&(i[o]=e.configuration.get(o));return i}var Jl;(function(n){n.GET="GET",n.PUT="PUT",n.POST="POST",n.DELETE="DELETE"})(Jl||(Jl={}));async function xp(t,e,{configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o=Jl.GET}){let a=typeof t=="string"?new Vy.URL(t):t,l=Z8(a,{configuration:r});if(l.enableNetwork===!1)throw new Error(`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!tP.default.isMatch(a.hostname,r.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let u={agent:{http:l.httpProxy?rP.default.httpOverHttp(X8(l.httpProxy)):lxe,https:l.httpsProxy?rP.default.httpsOverHttp(X8(l.httpsProxy)):cxe},headers:i,method:o};u.responseType=s?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!n&&typeof e=="string"?u.body=e:u.json=e);let g=r.get("httpTimeout"),f=r.get("httpRetry"),h=r.get("enableStrictSsl"),p=l.caFilePath,{default:d}=await Promise.resolve().then(()=>ie(zy())),m=p?await uxe(p):void 0,E=d.extend(P({timeout:{socket:g},retry:f,https:{rejectUnauthorized:h,certificateAuthority:m}},u));return r.getLimit("networkConcurrency")(()=>E(a))}async function fxe(t,n){var s=n,{configuration:e,jsonResponse:r}=s,i=qr(s,["configuration","jsonResponse"]);let o=na(V8,t,()=>_y(xp(t,null,P({configuration:e},i)),{configuration:e}).then(a=>(V8.set(t,a.body),a.body)));return Buffer.isBuffer(o)===!1&&(o=await o),r?JSON.parse(o.toString()):o}async function hxe(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.PUT})),i)).body}async function iP(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.POST})),i)).body}async function pxe(t,i){var n=i,{customErrorMessage:e}=n,r=qr(n,["customErrorMessage"]);return(await _y(xp(t,null,_(P({},r),{method:Jl.DELETE})),r)).body}var Kt={};it(Kt,{PackageManager:()=>tn,detectPackageManager:()=>a9,executePackageAccessibleBinary:()=>g9,executePackageScript:()=>Uw,executePackageShellcode:()=>rD,executeWorkspaceAccessibleBinary:()=>qFe,executeWorkspaceLifecycleScript:()=>u9,executeWorkspaceScript:()=>c9,getPackageAccessibleBinaries:()=>Hw,getWorkspaceAccessibleBinaries:()=>l9,hasPackageScript:()=>GFe,hasWorkspaceScript:()=>tD,makeScriptEnv:()=>Vp,maybeExecuteWorkspaceLifecycleScript:()=>YFe,prepareExternalProject:()=>HFe});var Fp={};it(Fp,{getLibzipPromise:()=>$i,getLibzipSync:()=>vz});var yA=["number","number"],nP;(function(D){D[D.ZIP_ER_OK=0]="ZIP_ER_OK",D[D.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",D[D.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",D[D.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",D[D.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",D[D.ZIP_ER_READ=5]="ZIP_ER_READ",D[D.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",D[D.ZIP_ER_CRC=7]="ZIP_ER_CRC",D[D.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",D[D.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",D[D.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",D[D.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",D[D.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",D[D.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",D[D.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",D[D.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",D[D.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",D[D.ZIP_ER_EOF=17]="ZIP_ER_EOF",D[D.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",D[D.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",D[D.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",D[D.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",D[D.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",D[D.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",D[D.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",D[D.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",D[D.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",D[D.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",D[D.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",D[D.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",D[D.ZIP_ER_TELL=30]="ZIP_ER_TELL",D[D.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA"})(nP||(nP={}));var $8=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:nP,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,open:t.cwrap("zip_open","number",["string","number","number"]),openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...yA,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...yA,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...yA,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...yA,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...yA,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...yA,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number","number","number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...yA,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...yA,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}});var BP=null;function vz(){return BP===null&&(BP=$8(bz())),BP}async function $i(){return vz()}var jp={};it(jp,{ShellError:()=>as,execute:()=>Fw,globUtils:()=>bw});var Hp={};it(Hp,{parseResolution:()=>gw,parseShell:()=>Aw,parseSyml:()=>Ei,stringifyArgument:()=>SP,stringifyArgumentSegment:()=>xP,stringifyArithmeticExpression:()=>uw,stringifyCommand:()=>vP,stringifyCommandChain:()=>rg,stringifyCommandChainThen:()=>bP,stringifyCommandLine:()=>lw,stringifyCommandLineThen:()=>QP,stringifyEnvSegment:()=>cw,stringifyRedirectArgument:()=>Np,stringifyResolution:()=>fw,stringifyShell:()=>tg,stringifyShellLine:()=>tg,stringifySyml:()=>Qa,stringifyValueArgument:()=>ig});var kz=ie(xz());function Aw(t,e={isGlobPattern:()=>!1}){try{return(0,kz.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function tg(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:i},n)=>`${lw(r)}${i===";"?n!==t.length-1||e?";":"":" &"}`).join(" ")}function lw(t){return`${rg(t.chain)}${t.then?` ${QP(t.then)}`:""}`}function QP(t){return`${t.type} ${lw(t.line)}`}function rg(t){return`${vP(t)}${t.then?` ${bP(t.then)}`:""}`}function bP(t){return`${t.type} ${rg(t.chain)}`}function vP(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>cw(e)).join(" ")} `:""}${t.args.map(e=>SP(e)).join(" ")}`;case"subshell":return`(${tg(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"group":return`{ ${tg(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>cw(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function cw(t){return`${t.name}=${t.args[0]?ig(t.args[0]):""}`}function SP(t){switch(t.type){case"redirection":return Np(t);case"argument":return ig(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function Np(t){return`${t.subtype} ${t.args.map(e=>ig(e)).join(" ")}`}function ig(t){return t.segments.map(e=>xP(e)).join("")}function xP(t){let e=(i,n)=>n?`"${i}"`:i,r=i=>i===""?'""':i.match(/[(){}<>$|&; \t"']/)?`$'${i.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:i;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${tg(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue=="undefined"?`\${${t.name}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(i=>ig(i)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${uw(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function uw(t){let e=n=>{switch(n){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${n}"`)}},r=(n,s)=>s?`( ${n} )`:n,i=n=>r(uw(n),!["number","variable"].includes(n.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${i(t.left)} ${e(t.type)} ${i(t.right)}`}}var Rz=ie(Dz());function gw(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,Rz.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fw(t){let e="";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+="/"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var Qw=ie(w5()),b5=ie(Q5()),$De=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,v5=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],HP=class{constructor(e){this.data=e}};function S5(t){return t.match($De)?t:JSON.stringify(t)}function x5(t){return typeof t=="undefined"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>x5(t[e])):!1}function GP(t,e,r){if(t===null)return`null -`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} -`;if(typeof t=="string")return`${S5(t)} -`;if(Array.isArray(t)){if(t.length===0)return`[] -`;let i=" ".repeat(e);return` -${t.map(s=>`${i}- ${GP(s,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let i,n;t instanceof HP?(i=t.data,n=!1):(i=t,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=v5.indexOf(l),g=v5.indexOf(c);return u===-1&&g===-1?lc?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!x5(i[l])).map((l,c)=>{let u=i[l],g=S5(l),f=GP(u,e+1,!0),h=c>0||r?s:"";return f.startsWith(` -`)?`${h}${g}:${f}`:`${h}${g}: ${f}`}).join(e===0?` -`:"")||` -`;return r?` -${a}`:`${a}`}throw new Error(`Unsupported value type (${t})`)}function Qa(t){try{let e=GP(t,0,!1);return e!==` -`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}Qa.PreserveOrdering=HP;function eRe(t){return t.endsWith(` -`)||(t+=` -`),(0,b5.parse)(t)}var tRe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function rRe(t){if(tRe.test(t))return eRe(t);let e=(0,Qw.safeLoad)(t,{schema:Qw.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Ei(t){return rRe(t)}var U5=ie(jb()),H5=ie(require("os")),Kn=ie(require("stream")),G5=ie(require("util"));var as=class extends Error{constructor(e){super(e);this.name="ShellError"}};var bw={};it(bw,{fastGlobOptions:()=>D5,isBraceExpansion:()=>R5,isGlobPattern:()=>iRe,match:()=>nRe,micromatchOptions:()=>Sw});var k5=ie(gy()),P5=ie(require("fs")),vw=ie(Nn()),Sw={strictBrackets:!0},D5={onlyDirectories:!1,onlyFiles:!1};function iRe(t){if(!vw.default.scan(t,Sw).isGlob)return!1;try{vw.default.parse(t,Sw)}catch{return!1}return!0}function nRe(t,{cwd:e,baseFs:r}){return(0,k5.default)(t,_(P({},D5),{cwd:M.fromPortablePath(e),fs:SI(P5.default,new ah(r))}))}function R5(t){return vw.default.scan(t,Sw).isBrace}var F5=ie(bb()),Bo=ie(require("stream")),N5=ie(require("string_decoder")),wn;(function(i){i[i.STDIN=0]="STDIN",i[i.STDOUT=1]="STDOUT",i[i.STDERR=2]="STDERR"})(wn||(wn={}));var sc=new Set;function jP(){}function YP(){for(let t of sc)t.kill()}function L5(t,e,r,i){return n=>{let s=n[0]instanceof Bo.Transform?"pipe":n[0],o=n[1]instanceof Bo.Transform?"pipe":n[1],a=n[2]instanceof Bo.Transform?"pipe":n[2],l=(0,F5.default)(t,e,_(P({},i),{stdio:[s,o,a]}));return sc.add(l),sc.size===1&&(process.on("SIGINT",jP),process.on("SIGTERM",YP)),n[0]instanceof Bo.Transform&&n[0].pipe(l.stdin),n[1]instanceof Bo.Transform&&l.stdout.pipe(n[1],{end:!1}),n[2]instanceof Bo.Transform&&l.stderr.pipe(n[2],{end:!1}),{stdin:l.stdin,promise:new Promise(c=>{l.on("error",u=>{switch(sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),u.code){case"ENOENT":n[2].write(`command not found: ${t} -`),c(127);break;case"EACCES":n[2].write(`permission denied: ${t} -`),c(128);break;default:n[2].write(`uncaught error: ${u.message} -`),c(1);break}}),l.on("exit",u=>{sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),c(u!==null?u:129)})})}}}function T5(t){return e=>{let r=e[0]==="pipe"?new Bo.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}var Os=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},M5=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Gp=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:i,stderr:n}){let s=new Gp(null,e);return s.stdin=r,s.stdout=i,s.stderr=n,s}pipeTo(e,r=1){let i=new Gp(this,e),n=new M5;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(r&1)==1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)==2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(r.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function xw(t,e){return Gp.start(t,e)}function O5(t,e=null){let r=new Bo.PassThrough,i=new N5.StringDecoder,n="";return r.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",t(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&t(e!==null?`${e} ${s}`:s)}),r}function K5(t,{prefix:e}){return{stdout:O5(r=>t.stdout.write(`${r} -`),t.stdout.isTTY?e:null),stderr:O5(r=>t.stderr.write(`${r} -`),t.stderr.isTTY?e:null)}}var sRe=(0,G5.promisify)(setTimeout);var Fi;(function(r){r[r.Readable=1]="Readable",r[r.Writable=2]="Writable"})(Fi||(Fi={}));function j5(t,e,r){let i=new Kn.PassThrough({autoDestroy:!0});switch(t){case wn.STDIN:(e&1)==1&&r.stdin.pipe(i,{end:!1}),(e&2)==2&&r.stdin instanceof Kn.Writable&&i.pipe(r.stdin,{end:!1});break;case wn.STDOUT:(e&1)==1&&r.stdout.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stdout,{end:!1});break;case wn.STDERR:(e&1)==1&&r.stderr.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stderr,{end:!1});break;default:throw new as(`Bad file descriptor: "${t}"`)}return i}function kw(t,e={}){let r=P(P({},t),e);return r.environment=P(P({},t.environment),e.environment),r.variables=P(P({},t.variables),e.variables),r}var oRe=new Map([["cd",async([t=(0,H5.homedir)(),...e],r,i)=>{let n=v.resolve(i.cwd,M.toPortablePath(t));if(!(await r.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new as(`cd: no such file or directory: ${t}`):o})).isDirectory())throw new as(`cd: not a directory: ${t}`);return i.cwd=n,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${M.fromPortablePath(r.cwd)} -`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,i)=>i.exitCode=parseInt(t!=null?t:i.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} -`),0)],["sleep",async([t],e,r)=>{if(typeof t=="undefined")throw new as("sleep: missing operand");let i=Number(t);if(Number.isNaN(i))throw new as(`sleep: invalid time interval '${t}'`);return await sRe(1e3*i,0)}],["__ysh_run_procedure",async(t,e,r)=>{let i=r.procedures[t[0]];return await xw(i,{stdin:new Os(r.stdin),stdout:new Os(r.stdout),stderr:new Os(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let i=r.stdin,n=r.stdout,s=r.stderr,o=[],a=[],l=[],c=0;for(;t[c]!=="--";){let g=t[c++],{type:f,fd:h}=JSON.parse(g),p=B=>{switch(h){case null:case 0:o.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},d=B=>{switch(h){case null:case 1:a.push(B);break;case 2:l.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},m=Number(t[c++]),E=c+m;for(let B=c;Be.baseFs.createReadStream(v.resolve(r.cwd,M.toPortablePath(t[B]))));break;case"<<<":p(()=>{let b=new Kn.PassThrough;return process.nextTick(()=>{b.write(`${t[B]} -`),b.end()}),b});break;case"<&":p(()=>j5(Number(t[B]),1,r));break;case">":case">>":{let b=v.resolve(r.cwd,M.toPortablePath(t[B]));d(b==="/dev/null"?new Kn.Writable({autoDestroy:!0,emitClose:!0,write(R,H,L){setImmediate(L)}}):e.baseFs.createWriteStream(b,f===">>"?{flags:"a"}:void 0))}break;case">&":d(j5(Number(t[B]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new Kn.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new Kn.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new Kn.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await xw(Yp(t.slice(c+1),e,r),{stdin:new Os(i),stdout:new Os(n),stderr:new Os(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function aRe(t,e,r){let i=[],n=new Kn.PassThrough;return n.on("data",s=>i.push(s)),await Pw(t,e,kw(r,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function Y5(t,e,r){let i=t.map(async s=>{let o=await oc(s.args,e,r);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function Dw(t){return t.match(/[^ \r\n\t]+/g)||[]}async function q5(t,e,r,i,n=i){switch(t.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(t.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=Dw(s);for(let a=0;a=0&&st+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)};async function qp(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let i=[];await q5(_(P({},t),{quoted:!0}),e,r,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?qp({type:"variable",name:i.join(" ")},e,r):qp({type:"number",value:n},e,r)}else return ARe[t.type](await qp(t.left,e,r),await qp(t.right,e,r))}async function oc(t,e,r){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p=="undefined"&&i.set(h,p=[]),p.push(f)};for(let u of t){let g=!1;switch(u.type){case"redirection":{let f=await oc(u.args,e,r);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await aRe(f.shell,e,r);if(f.quoted)o(h);else{let p=Dw(h);for(let d=0;d0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function Yp(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let i=M.fromPortablePath(r.cwd),n=r.environment;typeof n.PWD!="undefined"&&(n=_(P({},n),{PWD:i}));let[s,...o]=t;if(s==="command")return L5(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a=="undefined")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return T5(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=r;r.stdin=l,r.stdout=c,r.stderr=u;try{return await a(o,e,r)}finally{r.stdin=g,r.stdout=f,r.stderr=h}})}function lRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,kw(r,{stdin:n}));return{stdin:n,promise:s}}}function cRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,r);return{stdin:n,promise:s}}}function J5(t,e,r,i){if(e.length===0)return t;{let n;do n=String(Math.random());while(Object.prototype.hasOwnProperty.call(i.procedures,n));return i.procedures=P({},i.procedures),i.procedures[n]=t,Yp([...e,"__ysh_run_procedure",n],r,i)}}async function W5(t,e,r){let i=t,n=null,s=null;for(;i;){let o=i.then?P({},r):r,a;switch(i.type){case"command":{let l=await oc(i.args,e,r),c=await Y5(i.envs,e,r);a=i.envs.length?Yp(l,e,kw(o,{environment:c})):Yp(l,e,o)}break;case"subshell":{let l=await oc(i.args,e,r),c=lRe(i.subshell,e,o);a=J5(c,l,e,o)}break;case"group":{let l=await oc(i.args,e,r),c=cRe(i.group,e,o);a=J5(c,l,e,o)}break;case"envs":{let l=await Y5(i.envs,e,r);o.environment=P(P({},o.environment),l),a=Yp(["true"],e,o)}break}if(typeof a=="undefined")throw new Error("Assertion failed: An action should have been generated");if(n===null)s=xw(a,{stdin:new Os(o.stdin),stdout:new Os(o.stdout),stderr:new Os(o.stderr)});else{if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":s=s.pipeTo(a,wn.STDOUT);break;case"|&":s=s.pipeTo(a,wn.STDOUT|wn.STDERR);break}}i.then?(n=i.then.type,i=i.then.chain):i=null}if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await s.run()}async function uRe(t,e,r,{background:i=!1}={}){function n(s){let o=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=o[s%o.length];return U5.default.hex(a)}if(i){let s=r.nextBackgroundJobIndex++,o=n(s),a=`[${s}]`,l=o(a),{stdout:c,stderr:u}=K5(r,{prefix:l});return r.backgroundJobs.push(W5(t,e,kw(r,{stdout:c,stderr:u})).catch(g=>u.write(`${g.message} -`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${l}, '${o(rg(t))}' has ended -`)})),0}return await W5(t,e,r)}async function gRe(t,e,r,{background:i=!1}={}){let n,s=a=>{n=a,r.variables["?"]=String(a)},o=async a=>{try{return await uRe(a.chain,e,r,{background:i&&typeof a.then=="undefined"})}catch(l){if(!(l instanceof as))throw l;return r.stderr.write(`${l.message} -`),1}};for(s(await o(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":n===0&&s(await o(t.then.line));break;case"||":n!==0&&s(await o(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return n}async function Pw(t,e,r){let i=r.backgroundJobs;r.backgroundJobs=[];let n=0;for(let{command:s,type:o}of t){if(n=await gRe(s,e,r,{background:o==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(n)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=i,n}function z5(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>Rw(e));case"arithmetic":return qP(t.arithmetic);case"shell":return JP(t.shell);default:return!1}}function Rw(t){switch(t.type){case"redirection":return t.args.some(e=>Rw(e));case"argument":return t.segments.some(e=>z5(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function qP(t){switch(t.type){case"variable":return z5(t);case"number":return!1;default:return qP(t.left)||qP(t.right)}}function JP(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let i;switch(r.type){case"subshell":i=JP(r.subshell);break;case"command":i=r.envs.some(n=>n.args.some(s=>Rw(s)))||r.args.some(n=>Rw(n));break}if(i)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function Fw(t,e=[],{baseFs:r=new Wt,builtins:i={},cwd:n=M.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=bw}={}){let g={};for(let[p,d]of Object.entries(s))typeof d!="undefined"&&(g[p]=d);let f=new Map(oRe);for(let[p,d]of Object.entries(i))f.set(p,d);o===null&&(o=new Kn.PassThrough,o.end());let h=Aw(t,u);if(!JP(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let d=p.chain;for(;d.then;)d=d.then.chain;d.type==="command"&&(d.args=d.args.concat(e.map(m=>({type:"argument",segments:[{type:"text",text:m}]}))))}return await Pw(h,{args:e,baseFs:r,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var s9=ie(ZP()),o9=ie(Wp()),cc=ie(require("stream"));var J6=ie(Or());var zp=class{supportsDescriptor(e,r){return!!(e.range.startsWith(zp.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(zp.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[i.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.getWorkspaceByCwd(e.reference.slice(zp.protocol.length));return _(P({},e),{version:i.manifest.version||"0.0.0",languageName:"unknown",linkType:gt.SOFT,conditions:null,dependencies:new Map([...i.manifest.dependencies,...i.manifest.devDependencies]),peerDependencies:new Map([...i.manifest.peerDependencies]),dependenciesMeta:i.manifest.dependenciesMeta,peerDependenciesMeta:i.manifest.peerDependenciesMeta,bin:i.manifest.bin})}},Yr=zp;Yr.protocol="workspace:";var qt={};it(qt,{SemVer:()=>j6.SemVer,satisfiesWithPrereleases:()=>lc,validRange:()=>Us});var Lw=ie(Or()),j6=ie(Or()),Y6=new Map;function lc(t,e,r=!1){if(!t)return!1;let i=`${e}${r}`,n=Y6.get(i);if(typeof n=="undefined")try{n=new Lw.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{Y6.set(i,n||null)}else if(n===null)return!1;let s;try{s=new Lw.default.SemVer(t,n)}catch(o){return!1}return n.test(s)?!0:(s.prerelease&&(s.prerelease=[]),n.set.some(o=>{for(let a of o)a.semver.prerelease&&(a.semver.prerelease=[]);return o.every(a=>a.test(s))}))}var q6=new Map;function Us(t){if(t.indexOf(":")!==-1)return null;let e=q6.get(t);if(typeof e!="undefined")return e;try{e=new Lw.default.Range(t)}catch{e=null}return q6.set(t,e),e}var vA=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new Wt}={}){let i=v.join(e,"package.json");return await r.existsPromise(i)?await vA.fromFile(i,{baseFs:r}):null}static async find(e,{baseFs:r}={}){let i=await vA.tryFind(e,{baseFs:r});if(i===null)throw new Error("Manifest not found");return i}static async fromFile(e,{baseFs:r=new Wt}={}){let i=new vA;return await i.loadFile(e,{baseFs:r}),i}static fromText(e){let r=new vA;return r.loadFromText(e),r}static isManifestFieldCompatible(e,r){if(e===null)return!0;let i=!0,n=!1;for(let s of e)if(s[0]==="!"){if(n=!0,r===s.slice(1))return!1}else if(i=!1,s===r)return!0;return n&&i}loadFromText(e){let r;try{r=JSON.parse(z6(e)||"{}")}catch(i){throw i.message+=` (when parsing ${e})`,i}this.load(r),this.indent=W6(e)}async loadFile(e,{baseFs:r=new Wt}){let i=await r.readFilePromise(e,"utf8"),n;try{n=JSON.parse(z6(i)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(n),this.indent=W6(i)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let i=[];if(this.name=null,typeof e.name=="string")try{this.name=In(e.name)}catch(s){i.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let s=[];this.os=s;for(let o of e.os)typeof o!="string"?i.push(new Error("Parsing failed for the 'os' field")):s.push(o)}else this.os=null;if(Array.isArray(e.cpu)){let s=[];this.cpu=s;for(let o of e.cpu)typeof o!="string"?i.push(new Error("Parsing failed for the 'cpu' field")):s.push(o)}else this.cpu=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=en(e.main):this.main=null,typeof e.module=="string"?this.module=en(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=en(e.browser);else{this.browser=new Map;for(let[s,o]of Object.entries(e.browser))this.browser.set(en(s),typeof o=="string"?en(o):o)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,en(e.bin)):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[s,o]of Object.entries(e.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.bin.set(s,en(o))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[s,o]of Object.entries(e.scripts)){if(typeof o!="string"){i.push(new Error(`Invalid script definition for '${s}'`));continue}this.scripts.set(s,o)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[s,o]of Object.entries(e.dependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=In(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[s,o]of Object.entries(e.devDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=In(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.devDependencies.set(l.identHash,l)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[s,o]of Object.entries(e.peerDependencies)){let a;try{a=In(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}(typeof o!="string"||!o.startsWith(Yr.protocol)&&!Us(o))&&(i.push(new Error(`Invalid dependency range for '${s}'`)),o="*");let l=Yt(a,o);this.peerDependencies.set(l.identHash,l)}typeof e.workspaces=="object"&&e.workspaces.nohoist&&i.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let n=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let s of n){if(typeof s!="string"){i.push(new Error(`Invalid workspace definition for '${s}'`));continue}this.workspaceDefinitions.push({pattern:s})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[s,o]of Object.entries(e.dependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}`));continue}let a=pA(s),l=this.ensureDependencyMeta(a),c=Tw(o.built,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid built meta field for '${s}'`));continue}let u=Tw(o.optional,{yamlCompatibilityMode:r});if(u===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}let g=Tw(o.unplugged,{yamlCompatibilityMode:r});if(g===null){i.push(new Error(`Invalid unplugged meta field for '${s}'`));continue}Object.assign(l,{built:c,optional:u,unplugged:g})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[s,o]of Object.entries(e.peerDependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}'`));continue}let a=pA(s),l=this.ensurePeerDependencyMeta(a),c=Tw(o.optional,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}Object.assign(l,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[s,o]of Object.entries(e.resolutions)){if(typeof o!="string"){i.push(new Error(`Invalid resolution entry for '${s}'`));continue}try{this.resolutions.push({pattern:gw(s),reference:o})}catch(a){i.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let s of e.files){if(typeof s!="string"){i.push(new Error(`Invalid files entry for '${s}'`));continue}this.files.add(s)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=en(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=en(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=en(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[s,o]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(en(s),typeof o=="string"?en(o):o)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,en(e.publishConfig.bin)]]):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[s,o]of Object.entries(e.publishConfig.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.publishConfig.bin.set(s,en(o))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let s of e.publishConfig.executableFiles){if(typeof s!="string"){i.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(en(s))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let s of Object.keys(e.installConfig))s==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:i.push(new Error("Invalid hoisting limits definition")):s=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:i.push(new Error("Invalid selfReferences definition, must be a boolean value")):i.push(new Error(`Unrecognized installConfig key: ${s}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[s,o]of Object.entries(e.optionalDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=In(s)}catch(g){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l);let c=Yt(a,"unknown"),u=this.ensureDependencyMeta(c);Object.assign(u,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=i}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(V6("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(V6("cpu",this.cpu)),e.length>0?e.join(" & "):null}isCompatibleWithOS(e){return vA.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return vA.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if(e.range!=="unknown"&&!J6.default.valid(e.range))throw new Error(`Invalid meta field range for '${En(e)}'`);let r=St(e),i=e.range!=="unknown"?e.range:null,n=this.dependenciesMeta.get(r);n||this.dependenciesMeta.set(r,n=new Map);let s=n.get(i);return s||n.set(i,s={}),s}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${En(e)}'`);let r=St(e),i=this.peerDependenciesMeta.get(r);return i||this.peerDependenciesMeta.set(r,i={}),i}setRawField(e,r,{after:i=[]}={}){let n=new Set(i.filter(s=>Object.prototype.hasOwnProperty.call(this.raw,s)));if(n.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let s=this.raw,o=this.raw={},a=!1;for(let l of Object.keys(s))o[l]=s[l],a||(n.delete(l),n.size===0&&(o[e]=r,a=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){var s;if(Object.assign(e,this.raw),this.name!==null?e.name=St(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let o=this.browser;typeof o=="string"?e.browser=o:o instanceof Map&&(e.browser=Object.assign({},...Array.from(o.keys()).sort().map(a=>({[a]:o.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(o=>({[o]:this.bin.get(o)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces=_(P({},this.raw.workspaces),{packages:this.workspaceDefinitions.map(({pattern:o})=>o)}):e.workspaces=this.workspaceDefinitions.map(({pattern:o})=>o):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let o of this.dependencies.values()){let a=this.dependenciesMeta.get(St(o)),l=!1;if(r&&a){let c=a.get(null);c&&c.optional&&(l=!0)}l?n.push(o):i.push(o)}i.length>0?e.dependencies=Object.assign({},...Ou(i).map(o=>({[St(o)]:o.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...Ou(n).map(o=>({[St(o)]:o.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...Ou(this.devDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...Ou(this.peerDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[o,a]of gn(this.dependenciesMeta.entries(),([l,c])=>l))for(let[l,c]of gn(a.entries(),([u,g])=>u!==null?`0${u}`:"1")){let u=l!==null?En(Yt(In(o),l)):o,g=P({},c);r&&l===null&&delete g.optional,Object.keys(g).length!==0&&(e.dependenciesMeta[u]=g)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...gn(this.peerDependenciesMeta.entries(),([o,a])=>o).map(([o,a])=>({[o]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:o,reference:a})=>({[fw(o)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(s=e.scripts)!=null||(e.scripts={});for(let o of Object.keys(e.scripts))this.scripts.has(o)||delete e.scripts[o];for(let[o,a]of this.scripts.entries())e.scripts[o]=a}else delete e.scripts;return e}},Ze=vA;Ze.fileName="package.json",Ze.allDependencies=["dependencies","devDependencies","peerDependencies"],Ze.hardDependencies=["dependencies","devDependencies"];function W6(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function z6(t){return t.charCodeAt(0)===65279?t.slice(1):t}function en(t){return t.replace(/\\/g,"/")}function Tw(t,{yamlCompatibilityMode:e}){return e?Kv(t):typeof t=="undefined"||typeof t=="boolean"?t:null}function _6(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let i=r%2==0?"":"!",n=e.slice(r);return`${i}${t}=${n}`}function V6(t,e){return e.length===1?_6(t,e[0]):`(${e.map(r=>_6(t,r)).join(" | ")})`}var e9=ie($6()),Ow=ie(ml());var t9=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],r9=80,NFe=new Set([z.FETCH_NOT_CACHED,z.UNUSED_CACHE_ENTRY]),LFe=5,SA=Ow.default.GITHUB_ACTIONS?{start:t=>`::group::${t} -`,end:t=>`::endgroup:: -`}:Ow.default.TRAVIS?{start:t=>`travis_fold:start:${t} -`,end:t=>`travis_fold:end:${t} -`}:Ow.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r${t} -`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r`}:null,i9=new Date,TFe=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,MFe=t=>t,Kw=MFe({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),OFe=TFe&&Object.keys(Kw).find(t=>{let e=Kw[t];return!(e.date&&(e.date[0]!==i9.getDate()||e.date[1]!==i9.getMonth()+1))})||"default";function n9(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let n=KI(t===null?0:t);return!r&&t===null?Ve(e,n,"grey"):n}function eD(t,{configuration:e,json:r}){let i=n9(t,{configuration:e,json:r});if(!i||t===null||t===z.UNNAMED)return i;let n=z[t],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return Ku(e,i,s)}var Fe=class extends Xi{constructor({configuration:e,stdout:r,json:i=!1,includeFooter:n=!0,includeLogs:s=!i,includeInfos:o=s,includeWarnings:a=s,forgettableBufferSize:l=LFe,forgettableNames:c=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.forgettableLines=[];Cp(this,{configuration:e}),this.configuration=e,this.forgettableBufferSize=l,this.forgettableNames=new Set([...c,...NFe]),this.includeFooter=n,this.includeInfos=o,this.includeWarnings=a,this.json=i,this.stdout=r;let u=this.configuration.get("progressBarStyle")||OFe;if(!Object.prototype.hasOwnProperty.call(Kw,u))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=Kw[u];let g="\u27A4 YN0000: \u250C ".length,f=Math.max(0,Math.min(process.stdout.columns-g,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*f/80)}static async start(e,r){let i=new this(e),n=process.emitWarning;process.emitWarning=(s,o)=>{if(typeof s!="string"){let l=s;s=l.message,o=o!=null?o:l.name}let a=typeof o!="undefined"?`${o}: ${s}`:s;i.reportWarning(z.UNNAMED,a)};try{await r(i)}catch(s){i.reportExceptionOnce(s)}finally{await i.finalize(),process.emitWarning=n}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){this.cacheHitCount+=1}reportCacheMiss(e,r){this.lastCacheMiss=e,this.cacheMissCount+=1,typeof r!="undefined"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(z.FETCH_NOT_CACHED,r)}startTimerSync(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startTimerPromise(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return await s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startCacheReport(e){let r=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await e()}catch(i){throw this.reportExceptionOnce(i),i}finally{r!==null&&this.reportCacheChanges(r)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(e,r){if(!this.includeInfos)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"",s=`${Ve(this.configuration,"\u27A4","blueBright")} ${n}${this.formatIndent()}${r}`;if(this.json)this.reportJson({type:"info",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r});else if(this.forgettableNames.has(e))if(this.forgettableLines.push(s),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(s,{truncate:!0});else this.writeLineWithForgettableReset(s)}reportWarning(e,r){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"warning",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","yellowBright")} ${n}${this.formatIndent()}${r}`)}reportError(e,r){this.errorCount+=1,this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"error",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","redBright")} ${n}${this.formatIndent()}${r}`,{truncate:!1})}reportProgress(e){let r=!1,i=Promise.resolve().then(async()=>{let s={progress:0,title:void 0};this.progress.set(e,{definition:s,lastScaledSize:-1}),this.refreshProgress(-1);for await(let{progress:o,title:a}of e)r||s.progress===o&&s.title===a||(s.progress=o,s.title=a,this.refreshProgress());n()}),n=()=>{r||(r=!0,this.progress.delete(e),this.refreshProgress(1))};return _(P({},i),{stop:n})}reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(e)}`)}async finalize(){if(!this.includeFooter)return;let e="";this.errorCount>0?e="Failed with errors":this.warningCount>0?e="Done with warnings":e="Done";let r=Ve(this.configuration,Date.now()-this.startTime,Le.DURATION),i=this.configuration.get("enableTimers")?`${e} in ${r}`:e;this.errorCount>0?this.reportError(z.UNNAMED,i):this.warningCount>0?this.reportWarning(z.UNNAMED,i):this.reportInfo(z.UNNAMED,i)}writeLine(e,{truncate:r}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(e,{truncate:r})} -`),this.writeProgress()}writeLineWithForgettableReset(e,{truncate:r}={}){this.forgettableLines=[],this.writeLine(e,{truncate:r})}writeLines(e,{truncate:r}={}){this.clearProgress({delta:e.length});for(let i of e)this.stdout.write(`${this.truncate(i,{truncate:r})} -`);this.writeProgress()}reportCacheChanges({cacheHitCount:e,cacheMissCount:r}){let i=this.cacheHitCount-e,n=this.cacheMissCount-r;if(i===0&&n===0)return;let s="";this.cacheHitCount>1?s+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?s+=" - one package was already cached":s+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?s+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(s+=`, one had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?s+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(s+=` - one package had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`),this.reportInfo(z.FETCH_NOT_CACHED,s)}commit(){let e=this.uncommitted;this.uncommitted=new Set;for(let r of e)r.committed=!0,r.action()}clearProgress({delta:e=0,clear:r=!1}){!this.configuration.get("enableProgressBars")||this.json||this.progress.size+e>0&&(this.stdout.write(`[${this.progress.size+e}A`),(e>0||r)&&this.stdout.write(""))}writeProgress(){if(!this.configuration.get("enableProgressBars")||this.json||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let e=Date.now();e-this.progressTime>r9&&(this.progressFrame=(this.progressFrame+1)%t9.length,this.progressTime=e);let r=t9[this.progressFrame];for(let i of this.progress.values()){let n=this.progressStyle.chars[0].repeat(i.lastScaledSize),s=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-i.lastScaledSize),o=this.formatName(null),a=o?`${o}: `:"";this.stdout.write(`${Ve(this.configuration,"\u27A4","blueBright")} ${a}${r} ${n}${s} -`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress()},r9)}refreshProgress(e=0){let r=!1;if(this.progress.size===0)r=!0;else for(let i of this.progress.values()){let n=Math.trunc(this.progressMaxScaledSize*i.definition.progress),s=i.lastScaledSize;if(i.lastScaledSize=n,n!==s){r=!0;break}}r&&(this.clearProgress({delta:e}),this.writeProgress())}truncate(e,{truncate:r}={}){return this.configuration.get("enableProgressBars")||(r=!1),typeof r=="undefined"&&(r=this.configuration.get("preferTruncatedLines")),r&&(e=(0,e9.default)(e,0,process.stdout.columns-1)),e}formatName(e){return n9(e,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Zr="3.1.0";var tn;(function(n){n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm"})(tn||(tn={}));async function ba(t,e,r,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await T.writeFilePromise(v.format({dir:t,name:e,ext:".cmd"}),n)}await T.writeFilePromise(v.join(t,e),`#!/bin/sh -exec "${r}" ${i.map(n=>`'${n.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" -`,{mode:493})}async function a9(t){let e=await Ze.tryFind(t);if(e==null?void 0:e.packageManager){let i=Qy(e.packageManager);if(i==null?void 0:i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":return{packageManager:Number(s)===1?tn.Yarn1:tn.Yarn2,reason:n};case"npm":return{packageManager:tn.Npm,reason:n};case"pnpm":return{packageManager:tn.Pnpm,reason:n}}}}let r;try{r=await T.readFilePromise(v.join(t,wt.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:tn.Yarn2,reason:'"__metadata" key found in yarn.lock'}:{packageManager:tn.Yarn1,reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:T.existsSync(v.join(t,"package-lock.json"))?{packageManager:tn.Npm,reason:`found npm's "package-lock.json" lockfile`}:T.existsSync(v.join(t,"pnpm-lock.yaml"))?{packageManager:tn.Pnpm,reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Vp({project:t,locator:e,binFolder:r,lifecycleScript:i}){var l,c;let n={};for(let[u,g]of Object.entries(process.env))typeof g!="undefined"&&(n[u.toLowerCase()!=="path"?u:"PATH"]=g);let s=M.fromPortablePath(r);n.BERRY_BIN_FOLDER=M.fromPortablePath(s);let o=process.env.COREPACK_ROOT?M.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([ba(r,"node",process.execPath),...Zr!==null?[ba(r,"run",process.execPath,[o,"run"]),ba(r,"yarn",process.execPath,[o]),ba(r,"yarnpkg",process.execPath,[o]),ba(r,"node-gyp",process.execPath,[o,"run","--top-level","node-gyp"])]:[]]),t&&(n.INIT_CWD=M.fromPortablePath(t.configuration.startingCwd),n.PROJECT_CWD=M.fromPortablePath(t.cwd)),n.PATH=n.PATH?`${s}${M.delimiter}${n.PATH}`:`${s}`,n.npm_execpath=`${s}${M.sep}yarn`,n.npm_node_execpath=`${s}${M.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let u=t.tryWorkspaceByLocator(e),g=u?(l=u.manifest.version)!=null?l:"":(c=t.storedPackages.get(e.locatorHash).version)!=null?c:"";n.npm_package_name=St(e),n.npm_package_version=g}let a=Zr!==null?`yarn/${Zr}`:`yarn/${mu("@yarnpkg/core").version}-core`;return n.npm_config_user_agent=`${a} npm/? node/${process.versions.node} ${process.platform} ${process.arch}`,i&&(n.npm_lifecycle_event=i),t&&await t.configuration.triggerHook(u=>u.setupScriptEnvironment,t,n,async(u,g,f)=>await ba(r,kr(u),g,f)),n}var KFe=2,UFe=(0,o9.default)(KFe);async function HFe(t,e,{configuration:r,report:i,workspace:n=null,locator:s=null}){await UFe(async()=>{await T.mktempPromise(async o=>{let a=v.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=r.getSubprocessStreams(a,{prefix:M.fromPortablePath(t),report:i}),g=s&&Eo(s)?lp(s):s,f=g?is(g):"an external project";c.write(`Packing ${f} from sources -`);let h=await a9(t),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason} - -`),p=h.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn - -`),p=tn.Yarn2),await T.mktempPromise(async d=>{let m=await Vp({binFolder:d}),B=new Map([[tn.Yarn1,async()=>{let R=n!==null?["workspace",n]:[],H=await to("yarn",["set","version","classic","--only-if-needed"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;await T.appendFilePromise(v.join(t,".npmignore"),`/.yarn -`),c.write(` -`);let L=await to("yarn",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(L.code!==0)return L.code;c.write(` -`);let K=await to("yarn",[...R,"pack","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return K.code!==0?K.code:0}],[tn.Yarn2,async()=>{let R=n!==null?["workspace",n]:[];m.YARN_ENABLE_INLINE_BUILDS="1";let H=v.join(t,wt.lockfile);await T.existsPromise(H)||await T.writeFilePromise(H,"");let L=await to("yarn",[...R,"pack","--install-if-needed","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return L.code!==0?L.code:0}],[tn.Npm,async()=>{if(n!==null){let A=new cc.PassThrough,V=Cu(A);A.pipe(c,{end:!1});let W=await to("npm",["--version"],{cwd:t,env:m,stdin:l,stdout:A,stderr:u,end:Pn.Never});if(A.end(),W.code!==0)return c.end(),u.end(),W.code;let X=(await V).toString().trim();if(!lc(X,">=7.x")){let F=Io(null,"npm"),D=Yt(F,X),he=Yt(F,">=7.x");throw new Error(`Workspaces aren't supported by ${Xt(r,D)}; please upgrade to ${Xt(r,he)} (npm has been detected as the primary package manager for ${Ve(r,t,Le.PATH)})`)}}let R=n!==null?["--workspace",n]:[];delete m.npm_config_user_agent;let H=await to("npm",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;let L=new cc.PassThrough,K=Cu(L);L.pipe(c);let J=await to("npm",["pack","--silent",...R],{cwd:t,env:m,stdin:l,stdout:L,stderr:u});if(J.code!==0)return J.code;let ne=(await K).toString().trim().replace(/^.*\n/s,""),q=v.resolve(t,M.toPortablePath(ne));return await T.renamePromise(q,e),0}]]).get(p);if(typeof B=="undefined")throw new Error("Assertion failed: Unsupported workflow");let b=await B();if(!(b===0||typeof b=="undefined"))throw T.detachTemp(o),new nt(z.PACKAGE_PREPARATION_FAILED,`Packing the package failed (exit code ${b}, logs can be found here: ${Ve(r,a,Le.PATH)})`)})})})}async function GFe(t,e,{project:r}){let i=r.tryWorkspaceByLocator(t);if(i!==null)return tD(i,e);let n=r.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r.configuration,t)} not found in the project`);return await Jn.openPromise(async s=>{let o=r.configuration,a=r.configuration.getLinkers(),l={project:r,report:new Fe({stdout:new cc.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${lt(r.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new Ft(u,{baseFs:s});return(await Ze.find(Se.dot,{baseFs:g})).scripts.has(e)},{libzip:await $i()})}async function Uw(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await A9(t,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f=="undefined")return 1;let h=async()=>await Fw(f,r,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(d=>d.wrapScriptExecution,h,n,t,e,{script:f,args:r,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function rD(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{env:c,cwd:u}=await A9(t,{project:n,binFolder:l,cwd:i});return await Fw(e,r,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function jFe(t,{binFolder:e,cwd:r,lifecycleScript:i}){let n=await Vp({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:i});return await Promise.all(Array.from(await l9(t),([s,[,o]])=>ba(e,kr(s),process.execPath,[o]))),typeof r=="undefined"&&(r=v.dirname(await T.realpathPromise(v.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:n,cwd:r}}async function A9(t,{project:e,binFolder:r,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(t);if(s!==null)return jFe(s,{binFolder:r,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(t.locatorHash);if(!o)throw new Error(`Package for ${lt(e.configuration,t)} not found in the project`);return await Jn.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Fe({stdout:new cc.PassThrough,configuration:l})},g=c.find(m=>m.supportsPackage(o,u));if(!g)throw new Error(`The package ${lt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await Vp({project:e,locator:t,binFolder:r,lifecycleScript:n});await Promise.all(Array.from(await Hw(t,{project:e}),([m,[,E]])=>ba(r,kr(m),process.execPath,[E])));let h=await g.findPackageLocation(o,u),p=new Ft(h,{baseFs:a}),d=await Ze.find(Se.dot,{baseFs:p});return typeof i=="undefined"&&(i=h),{manifest:d,binFolder:r,env:f,cwd:i}},{libzip:await $i()})}async function c9(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o}){return await Uw(t.anchoredLocator,e,r,{cwd:i,project:t.project,stdin:n,stdout:s,stderr:o})}function tD(t,e){return t.manifest.scripts.has(e)}async function u9(t,e,{cwd:r,report:i}){let{configuration:n}=t.project,s=null;await T.mktempPromise(async o=>{let a=v.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${M.fromPortablePath(t.cwd)}") -`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:lt(n,t.anchoredLocator),header:l});i.reportInfo(z.LIFECYCLE_SCRIPT,`Calling the "${e}" lifecycle script`);let g=await c9(t,e,[],{cwd:r,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw T.detachTemp(o),new nt(z.LIFECYCLE_SCRIPT,`${(0,s9.default)(e)} script failed (exit code ${Ve(n,g,Le.NUMBER)}, logs can be found here: ${Ve(n,a,Le.PATH)}); run ${Ve(n,`yarn ${e}`,Le.CODE)} to investigate`)})}async function YFe(t,e,r){tD(t,e)&&await u9(t,e,r)}async function Hw(t,{project:e}){let r=e.configuration,i=new Map,n=e.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r,t)} not found in the project`);let s=new cc.Writable,o=r.getLinkers(),a={project:e,report:new Fe({configuration:r,stdout:s})},l=new Set([t.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${Xt(r,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return kl.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return kl.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return kl.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===kl.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin)i.set(h,[g,M.fromPortablePath(v.resolve(f,p))])}return i}async function l9(t){return await Hw(t.anchoredLocator,{project:t.project})}async function g9(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await Hw(t,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${lt(n.configuration,t)}`);return await T.mktempPromise(async g=>{let[,f]=u,h=await Vp({project:n,locator:t,binFolder:g});await Promise.all(Array.from(c,([d,[,m]])=>ba(h.BERRY_BIN_FOLDER,kr(d),process.execPath,[m])));let p;try{p=await to(process.execPath,[...l,f,...r],{cwd:i,env:h,stdin:s,stdout:o,stderr:a})}finally{await T.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function qFe(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await g9(t.anchoredLocator,e,r,{project:t.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var Ai={};it(Ai,{convertToZip:()=>lTe,extractArchiveTo:()=>uTe,makeArchiveFromDirectory:()=>ATe});var d_=ie(require("stream")),C_=ie(ZV());var u_=ie(require("os")),g_=ie(c_()),f_=ie(require("worker_threads")),ER=class{constructor(e){this.source=e;this.pool=[];this.queue=new g_.default({concurrency:Math.max(1,(0,u_.cpus)().length)});let r=setTimeout(()=>{if(!(this.queue.size!==0||this.queue.pending!==0)){for(let i of this.pool)i.terminate();this.pool=[]}},1e3).unref();this.queue.on("idle",()=>{r.refresh()})}run(e){return this.queue.add(()=>{var i;let r=(i=this.pool.pop())!=null?i:new f_.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return r.ref(),new Promise((n,s)=>{let o=a=>{a!==0&&s(new Error(`Worker exited with code ${a}`))};r.once("message",a=>{this.pool.push(r),r.unref(),r.off("error",s),r.off("exit",o),n(a)}),r.once("error",s),r.once("exit",o),r.postMessage(e)})})}};var m_=ie(p_());async function ATe(t,{baseFs:e=new Wt,prefixPath:r=Se.root,compressionLevel:i,inMemory:n=!1}={}){let s=await $i(),o;if(n)o=new Jr(null,{libzip:s,level:i});else{let l=await T.mktempPromise(),c=v.join(l,"archive.zip");o=new Jr(c,{create:!0,libzip:s,level:i})}let a=v.resolve(Se.root,r);return await o.copyPromise(a,t,{baseFs:e,stableTime:!0,stableSort:!0}),o}var I_;async function lTe(t,e){let r=await T.mktempPromise(),i=v.join(r,"archive.zip");return I_||(I_=new ER((0,m_.getContent)())),await I_.run({tmpFile:i,tgz:t,opts:e}),new Jr(i,{libzip:await $i(),level:e.compressionLevel})}async function*cTe(t){let e=new C_.default.Parse,r=new d_.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{r.write(i)}),e.on("error",i=>{r.destroy(i)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let i of r){let n=i;yield n,n.resume()}}async function uTe(t,e,{stripComponents:r=0,prefixPath:i=Se.dot}={}){var s,o;function n(a){if(a.path[0]==="/")return!0;let l=a.path.split(/\//g);return!!(l.some(c=>c==="..")||l.length<=r)}for await(let a of cTe(t)){if(n(a))continue;let l=v.normalize(M.toPortablePath(a.path)).replace(/\/$/,"").split(/\//g);if(l.length<=r)continue;let c=l.slice(r).join("/"),u=v.join(i,c),g=420;switch((a.type==="Directory"||(((s=a.mode)!=null?s:0)&73)!=0)&&(g|=73),a.type){case"Directory":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.mkdirSync(u,{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.writeFileSync(u,await Cu(a),{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.symlinkSync(a.linkpath,u),(o=e.lutimesSync)==null||o.call(e,u,mr.SAFE_TIME,mr.SAFE_TIME);break}}return e}var Hs={};it(Hs,{emitList:()=>gTe,emitTree:()=>b_,treeNodeToJson:()=>Q_,treeNodeToTreeify:()=>B_});var w_=ie(y_());function B_(t,{configuration:e}){let r={},i=(n,s)=>{let o=Array.isArray(n)?n.entries():Object.entries(n);for(let[a,{label:l,value:c,children:u}]of o){let g=[];typeof l!="undefined"&&g.push(Py(e,l,Gl.BOLD)),typeof c!="undefined"&&g.push(Ve(e,c[0],c[1])),g.length===0&&g.push(Py(e,`${a}`,Gl.BOLD));let f=g.join(": "),h=s[f]={};typeof u!="undefined"&&i(u,h)}};if(typeof t.children=="undefined")throw new Error("The root node must only contain children");return i(t.children,r),r}function Q_(t){let e=r=>{var s;if(typeof r.children=="undefined"){if(typeof r.value=="undefined")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Uu(r.value[0],r.value[1])}let i=Array.isArray(r.children)?r.children.entries():Object.entries((s=r.children)!=null?s:{}),n=Array.isArray(r.children)?[]:{};for(let[o,a]of i)n[o]=e(a);return typeof r.value=="undefined"?n:{value:Uu(r.value[0],r.value[1]),children:n}};return e(t)}function gTe(t,{configuration:e,stdout:r,json:i}){let n=t.map(s=>({value:s}));b_({children:n},{configuration:e,stdout:r,json:i})}function b_(t,{configuration:e,stdout:r,json:i,separators:n=0}){var o;if(i){let a=Array.isArray(t.children)?t.children.values():Object.values((o=t.children)!=null?o:{});for(let l of a)r.write(`${JSON.stringify(Q_(l))} -`);return}let s=(0,w_.asTree)(B_(t,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 -$1`).replace(/^│\n/,"")),n>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 -$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(s)}var v_=ie(require("crypto")),BR=ie(require("fs"));var fTe=8,Qt=class{constructor(e,{configuration:r,immutable:i=r.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,v_.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=i,this.check=n;let s=r.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=r.get("compressionLevel"),a=o!==pl?`c${o}`:"";this.cacheKey=[fTe,a].join("")}}static async find(e,{immutable:r,check:i}={}){let n=new Qt(e.get("cacheFolder"),{configuration:e,immutable:r,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${Mu(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let n=hTe(r).slice(0,10);return`${Mu(e)}-${n}.zip`}getLocatorPath(e,r,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?v.resolve(this.cwd,this.getVersionFilename(e)):r===null||QR(r)!==this.cacheKey?null:v.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?v.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await T.existsPromise(this.cwd))throw new nt(z.IMMUTABLE_CACHE,"Cache path does not exist.")}else{await T.mkdirPromise(this.cwd,{recursive:!0});let e=v.resolve(this.cwd,".gitignore");await T.changeFilePromise(e,`/.gitignore -*.flock -*.tmp -`)}(this.mirrorCwd||!this.immutable)&&await T.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,a){var l=a,{onHit:i,onMiss:n,loader:s}=l,o=qr(l,["onHit","onMiss","loader"]);var A;let c=this.getLocatorMirrorPath(e),u=new Wt,g=()=>{let V=new Jr(null,{libzip:H}),W=v.join(Se.root,Lx(e));return V.mkdirSync(W,{recursive:!0}),V.writeJsonSync(v.join(W,wt.manifest),{name:St(e),mocked:!0}),V},f=async(V,W=null)=>{let X=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Iy(V)}`:r;if(W!==null){let F=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Iy(W)}`:r;if(X!==F)throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&X!==r){let F;switch(this.check?F="throw":QR(r)!==QR(X)?F="update":F=this.configuration.get("checksumBehavior"),F){case"ignore":return r;case"update":return X;default:case"throw":throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the expected checksum")}}return X},h=async V=>{if(!s)throw new Error(`Cache check required but no loader configured for ${lt(this.configuration,e)}`);let W=await s(),X=W.getRealPath();return W.saveAndClose(),await T.chmodPromise(X,420),await f(V,X)},p=async()=>{if(c===null||!await T.existsPromise(c)){let V=await s(),W=V.getRealPath();return V.saveAndClose(),{source:"loader",path:W}}return{source:"mirror",path:c}},d=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${lt(this.configuration,e)}`);if(this.immutable)throw new nt(z.IMMUTABLE_CACHE,`Cache entry required but missing for ${lt(this.configuration,e)}`);let{path:V,source:W}=await p(),X=await f(V),F=this.getLocatorPath(e,X,o);if(!F)throw new Error("Assertion failed: Expected the cache path to be available");let D=[];W!=="mirror"&&c!==null&&D.push(async()=>{let pe=`${c}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,c)}),(!o.mirrorWriteOnly||c===null)&&D.push(async()=>{let pe=`${F}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,F)});let he=o.mirrorWriteOnly&&c!=null?c:F;return await Promise.all(D.map(pe=>pe())),[!1,he,X]},m=async()=>{let W=(async()=>{var Ne;let X=this.getLocatorPath(e,r,o),F=X!==null?await u.existsPromise(X):!1,D=!!((Ne=o.mockedPackages)==null?void 0:Ne.has(e.locatorHash))&&(!this.check||!F),he=D||F,pe=he?i:n;if(pe&&pe(),he){let Pe=null,qe=X;return D||(Pe=this.check?await h(qe):await f(qe)),[D,qe,Pe]}else return d()})();this.mutexes.set(e.locatorHash,W);try{return await W}finally{this.mutexes.delete(e.locatorHash)}};for(let V;V=this.mutexes.get(e.locatorHash);)await V;let[E,B,b]=await m();this.markedFiles.add(B);let R,H=await $i(),L=E?()=>g():()=>new Jr(B,{baseFs:u,libzip:H,readOnly:!0}),K=new oh(()=>Mv(()=>R=L(),V=>`Failed to open the cache entry for ${lt(this.configuration,e)}: ${V}`),v),J=new Xo(B,{baseFs:K,pathUtils:v}),ne=()=>{R==null||R.discardAndClose()},q=((A=o.unstablePackages)==null?void 0:A.has(e.locatorHash))?null:b;return[J,ne,q]}};function QR(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function hTe(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var F_=ie(x_()),NB=ie(ml());var N_=ie(Wp()),kR=ie(require("stream"));var k_={hooks:{reduceDependency:(t,e,r,i,{resolver:n,resolveOptions:s})=>{for(let{pattern:o,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(o.from&&o.from.fullName!==St(r)||o.from&&o.from.description&&o.from.description!==r.reference||o.descriptor.fullName!==St(t)||o.descriptor.description&&o.descriptor.description!==t.range)continue;return n.bindDescriptor(Yt(t,a),e.topLevelWorkspace.anchoredLocator,s)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let i=hp(t.configuration,r);await t.configuration.triggerHook(n=>n.validateWorkspace,r,{reportWarning:(n,s)=>e.reportWarning(n,`${i}: ${s}`),reportError:(n,s)=>e.reportError(n,`${i}: ${s}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let i of r.errors)e.reportWarning(z.INVALID_MANIFEST,i.message)}}};var vR=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));return i||null}getFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));if(!i)throw new nt(z.FETCHER_NOT_FOUND,`${lt(r.project.configuration,e)} isn't supported by any available fetcher`);return i}};var pd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,r,i)}async getSatisfying(e,r,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,r,i)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));return i||null}getResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));if(!i)throw new Error(`${Xt(r.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));return i||null}getResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));if(!i)throw new Error(`${lt(r.project.configuration,e)} isn't supported by any available resolver`);return i}};var P_=ie(Or());var Rg=/^(?!v)[a-z0-9._-]+$/i,SR=class{supportsDescriptor(e,r){return!!(Us(e.range)||Rg.test(e.range))}supportsLocator(e,r){return!!(P_.default.valid(e.reference)||Rg.test(e.reference))}shouldPersistResolution(e,r){return r.resolver.shouldPersistResolution(this.forwardLocator(e,r),r)}bindDescriptor(e,r,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),r,i)}getResolutionDependencies(e,r){return r.resolver.getResolutionDependencies(this.forwardDescriptor(e,r),r)}async getCandidates(e,r,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),r,i)}async getSatisfying(e,r,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),r,i)}async resolve(e,r){let i=await r.resolver.resolve(this.forwardLocator(e,r),r);return op(i,e)}forwardDescriptor(e,r){return Yt(e,`${r.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,r){return Vi(e,`${r.project.configuration.get("defaultProtocol")}${e.reference}`)}};var dd=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n);return r.fetcher.getLocalPath(s,r)}async fetch(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n),o=await r.fetcher.fetch(s,r);return await this.ensureVirtualLink(e,o,r)}getLocatorFilename(e){return Mu(e)}async ensureVirtualLink(e,r,i){let n=r.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Pr.makeVirtualPath(s,o,n),l=new Xo(a,{baseFs:r.packageFs,pathUtils:v});return _(P({},r),{packageFs:l})}};var Fg=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Fg.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Fg.protocol)}supportsDescriptor(e,r){return Fg.isVirtualDescriptor(e)}supportsLocator(e,r){return Fg.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},FB=Fg;FB.protocol="virtual:";var xR=class{supports(e){return!!e.reference.startsWith(Yr.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let i=this.getWorkspace(e,r).cwd;return{packageFs:new Ft(i),prefixPath:Se.dot,localPath:i}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Yr.protocol.length))}};var D_=ie(require("module"));function R_(){return new Set(D_.default.builtinModules||Object.keys(process.binding("natives")))}var dTe=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),LB="yarn_",PR=".yarnrc.yml",DR="yarn.lock",CTe="********",ge;(function(u){u.ANY="ANY",u.BOOLEAN="BOOLEAN",u.ABSOLUTE_PATH="ABSOLUTE_PATH",u.LOCATOR="LOCATOR",u.LOCATOR_LOOSE="LOCATOR_LOOSE",u.NUMBER="NUMBER",u.STRING="STRING",u.SECRET="SECRET",u.SHAPE="SHAPE",u.MAP="MAP"})(ge||(ge={}));var ps=Le,RR={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:ge.STRING,default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:ge.ABSOLUTE_PATH,default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:ge.BOOLEAN,default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:ge.BOOLEAN,default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:ge.STRING,default:null},globalFolder:{description:"Folder where are stored the system-wide settings",type:ge.ABSOLUTE_PATH,default:Rb()},cacheFolder:{description:"Folder where the cache files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:ge.NUMBER,values:["mixed",0,1,2,3,4,5,6,7,8,9],default:pl},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:ge.ABSOLUTE_PATH,default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:ge.STRING,default:DR},installStatePath:{description:"Path of the file where the install state will be persisted",type:ge.ABSOLUTE_PATH,default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:ge.STRING,default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:ge.STRING,default:TB()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:ge.BOOLEAN,default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:ge.BOOLEAN,default:xy,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:ge.BOOLEAN,default:Mx,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:ge.BOOLEAN,default:NB.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:ge.BOOLEAN,default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:ge.BOOLEAN,default:!NB.isCI&&process.stdout.isTTY&&process.stdout.columns>22,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:ge.BOOLEAN,default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:ge.BOOLEAN,default:NB.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:ge.BOOLEAN,default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:ge.BOOLEAN,default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:ge.STRING,default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:ge.STRING,default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:ge.STRING,default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:ge.BOOLEAN,default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:ge.SHAPE,properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:ge.BOOLEAN,default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:ge.STRING,default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:ge.NUMBER,default:6e4},httpRetry:{description:"Retry times on http failure",type:ge.NUMBER,default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:ge.NUMBER,default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:ge.BOOLEAN,default:!0},logFilters:{description:"Overrides for log levels",type:ge.SHAPE,isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:ge.STRING,default:void 0},text:{description:"Code of the texts covered by this override",type:ge.STRING,default:void 0},pattern:{description:"Code of the patterns covered by this override",type:ge.STRING,default:void 0},level:{description:"Log level override, set to null to remove override",type:ge.STRING,values:Object.values(Ts),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:ge.BOOLEAN,default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:ge.NUMBER,default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:ge.STRING,default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:ge.BOOLEAN,default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:ge.BOOLEAN,default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:ge.BOOLEAN,default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:ge.STRING,default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:ge.MAP,valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:ge.SHAPE,properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:ge.MAP,valueDefinition:{description:"A range",type:ge.STRING}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:ge.MAP,valueDefinition:{description:"A semver range",type:ge.STRING}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:ge.MAP,valueDefinition:{description:"The peerDependency meta",type:ge.SHAPE,properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:ge.BOOLEAN,default:!1}}}}}}}};function NR(t,e,r,i,n){if(i.isArray||i.type===ge.ANY&&Array.isArray(r))return Array.isArray(r)?r.map((s,o)=>FR(t,`${e}[${o}]`,s,i,n)):String(r).split(/,/).map(s=>FR(t,e,s,i,n));if(Array.isArray(r))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return FR(t,e,r,i,n)}function FR(t,e,r,i,n){var a;switch(i.type){case ge.ANY:return r;case ge.SHAPE:return mTe(t,e,r,i,n);case ge.MAP:return ITe(t,e,r,i,n)}if(r===null&&!i.isNullable&&i.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((a=i.values)==null?void 0:a.includes(r))return r;let o=(()=>{if(i.type===ge.BOOLEAN&&typeof r!="string")return Hh(r);if(typeof r!="string")throw new Error(`Expected value (${r}) to be a string`);let l=Ov(r,{env:process.env});switch(i.type){case ge.ABSOLUTE_PATH:return v.resolve(n,M.toPortablePath(l));case ge.LOCATOR_LOOSE:return Hl(l,!1);case ge.NUMBER:return parseInt(l);case ge.LOCATOR:return Hl(l);case ge.BOOLEAN:return Hh(l);default:return l}})();if(i.values&&!i.values.includes(o))throw new Error(`Invalid value, expected one of ${i.values.join(", ")}`);return o}function mTe(t,e,r,i,n){if(typeof r!="object"||Array.isArray(r))throw new me(`Object configuration settings "${e}" must be an object`);let s=LR(t,i,{ignoreArrays:!0});if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=`${e}.${o}`;if(!i.properties[o])throw new me(`Unrecognized configuration settings found: ${e}.${o} - run "yarn config -v" to see the list of settings supported in Yarn`);s.set(o,NR(t,l,a,i.properties[o],n))}return s}function ITe(t,e,r,i,n){let s=new Map;if(typeof r!="object"||Array.isArray(r))throw new me(`Map configuration settings "${e}" must be an object`);if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=i.normalizeKeys?i.normalizeKeys(o):o,c=`${e}['${l}']`,u=i.valueDefinition;s.set(l,NR(t,c,a,u,n))}return s}function LR(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case ge.SHAPE:{if(e.isArray&&!r)return[];let i=new Map;for(let[n,s]of Object.entries(e.properties))i.set(n,LR(t,s));return i}break;case ge.MAP:return e.isArray&&!r?[]:new Map;case ge.ABSOLUTE_PATH:return e.default===null?null:t.projectCwd===null?v.isAbsolute(e.default)?v.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(i=>v.resolve(t.projectCwd,i)):v.resolve(t.projectCwd,e.default);default:return e.default}}function MB(t,e,r){if(e.type===ge.SECRET&&typeof t=="string"&&r.hideSecrets)return CTe;if(e.type===ge.ABSOLUTE_PATH&&typeof t=="string"&&r.getNativePaths)return M.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let i=[];for(let n of t)i.push(MB(n,e,r));return i}if(e.type===ge.MAP&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries())i.set(n,MB(s,e.valueDefinition,r));return i}if(e.type===ge.SHAPE&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries()){let o=e.properties[n];i.set(n,MB(s,o,r))}return i}return t}function ETe(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),!!e.startsWith(LB)&&(e=(0,F_.default)(e.slice(LB.length)),t[e]=r);return t}function TB(){let t=`${LB}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return PR}var KA;(function(i){i[i.LOCKFILE=0]="LOCKFILE",i[i.MANIFEST=1]="MANIFEST",i[i.NONE=2]="NONE"})(KA||(KA={}));var Ra=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,i){let n=new Ra(e);typeof r!="undefined"&&!(r instanceof Map)&&(n.projectCwd=r),n.importSettings(RR);let s=typeof i!="undefined"?i:r instanceof Map?r:new Map;for(let[o,a]of s)n.activatePlugin(o,a);return n}static async find(e,r,{lookup:i=0,strict:n=!0,usePath:s=!1,useRc:o=!0}={}){let a=ETe();delete a.rcFilename;let l=await Ra.findRcFiles(e),c=await Ra.findHomeRcFile();if(c){let E=l.find(B=>B.path===c.path);E?E.strict=!1:l.push(_(P({},c),{strict:!1}))}let u=({ignoreCwd:E,yarnPath:B,ignorePath:b,lockfileFilename:R})=>({ignoreCwd:E,yarnPath:B,ignorePath:b,lockfileFilename:R}),g=L=>{var K=L,{ignoreCwd:E,yarnPath:B,ignorePath:b,lockfileFilename:R}=K,H=qr(K,["ignoreCwd","yarnPath","ignorePath","lockfileFilename"]);return H},f=new Ra(e);f.importSettings(u(RR)),f.useWithSource("",u(a),e,{strict:!1});for(let{path:E,cwd:B,data:b}of l)f.useWithSource(E,u(b),B,{strict:!1});if(s){let E=f.get("yarnPath"),B=f.get("ignorePath");if(E!==null&&!B)return f}let h=f.get("lockfileFilename"),p;switch(i){case 0:p=await Ra.findProjectCwd(e,h);break;case 1:p=await Ra.findProjectCwd(e,null);break;case 2:T.existsSync(v.join(e,"package.json"))?p=v.resolve(e):p=null;break}f.startingCwd=e,f.projectCwd=p,f.importSettings(g(RR));let d=new Map([["@@core",k_]]),m=E=>"default"in E?E.default:E;if(r!==null){for(let R of r.plugins.keys())d.set(R,m(r.modules.get(R)));let E=new Map;for(let R of R_())E.set(R,()=>mu(R));for(let[R,H]of r.modules)E.set(R,()=>H);let B=new Set,b=async(R,H)=>{let{factory:L,name:K}=mu(R);if(B.has(K))return;let J=new Map(E),ne=A=>{if(J.has(A))return J.get(A)();throw new me(`This plugin cannot access the package referenced via ${A} which is neither a builtin, nor an exposed entry`)},q=await du(async()=>m(await L(ne)),A=>`${A} (when initializing ${K}, defined in ${H})`);E.set(K,()=>q),B.add(K),d.set(K,q)};if(a.plugins)for(let R of a.plugins.split(";")){let H=v.resolve(e,M.toPortablePath(R));await b(H,"")}for(let{path:R,cwd:H,data:L}of l)if(!!o&&!!Array.isArray(L.plugins))for(let K of L.plugins){let J=typeof K!="string"?K.path:K,ne=v.resolve(H,M.toPortablePath(J));await b(ne,R)}}for(let[E,B]of d)f.activatePlugin(E,B);f.useWithSource("",g(a),e,{strict:n});for(let{path:E,cwd:B,data:b,strict:R}of l)f.useWithSource(E,g(b),B,{strict:R!=null?R:n});return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),await f.refreshPackageExtensions(),f}static async findRcFiles(e){let r=TB(),i=[],n=e,s=null;for(;n!==s;){s=n;let o=v.join(s,r);if(T.existsSync(o)){let a=await T.readFilePromise(o,"utf8"),l;try{l=Ei(a)}catch(c){let u="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(u=" (in particular, make sure you list the colons after each key name)"),new me(`Parse error when loading ${o}; please check it's proper Yaml${u}`)}i.push({path:o,cwd:s,data:l})}n=v.dirname(s)}return i}static async findHomeRcFile(){let e=TB(),r=uh(),i=v.join(r,e);if(T.existsSync(i)){let n=await T.readFilePromise(i,"utf8"),s=Ei(n);return{path:i,cwd:r,data:s}}return null}static async findProjectCwd(e,r){let i=null,n=e,s=null;for(;n!==s;){if(s=n,T.existsSync(v.join(s,"package.json"))&&(i=s),r!==null){if(T.existsSync(v.join(s,r))){i=s;break}}else if(i!==null)break;n=v.dirname(s)}return i}static async updateConfiguration(e,r){let i=TB(),n=v.join(e,i),s=T.existsSync(n)?Ei(await T.readFilePromise(n,"utf8")):{},o=!1,a;if(typeof r=="function"){try{a=r(s)}catch{a=r({})}if(a===s)return}else{a=s;for(let l of Object.keys(r)){let c=s[l],u=r[l],g;if(typeof u=="function")try{g=u(c)}catch{g=u(void 0)}else g=u;c!==g&&(a[l]=g,o=!0)}if(!o)return}await T.changeFilePromise(n,Qa(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let r=uh();return await Ra.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration!="undefined"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,i]of Object.entries(e))if(i!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,i),this.values.set(r,LR(this,i))}}useWithSource(e,r,i,n){try{this.use(e,r,i,n)}catch(s){throw s.message+=` (in ${Ve(this,e,Le.PATH)})`,s}}use(e,r,i,{strict:n=!0,overwrite:s=!1}={}){n=n&&this.get("enableStrictSettings");for(let o of["enableStrictSettings",...Object.keys(r)]){if(typeof r[o]=="undefined"||o==="plugins"||e===""&&dTe.has(o))continue;if(o==="rcFilename")throw new me(`The rcFilename settings can only be set via ${`${LB}RC_FILENAME`.toUpperCase()}, not via a rc file`);let l=this.settings.get(o);if(!l){if(n)throw new me(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(s||l.type===ge.MAP||l.isArray&&l.concatenateValues))continue;let c;try{c=NR(this,o,r[o],l,i)}catch(u){throw u.message+=` in ${Ve(this,e,Le.PATH)}`,u}if(o==="enableStrictSettings"&&e!==""){n=c;continue}if(l.type===ge.MAP){let u=this.values.get(o);this.values.set(o,new Map(s?[...u,...c]:[...c,...u])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(l.isArray&&l.concatenateValues){let u=this.values.get(o);this.values.set(o,s?[...u,...c]:[...c,...u]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,c),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:i=!1}){let n=this.get(e),s=this.settings.get(e);if(typeof s=="undefined")throw new me(`Couldn't find a configuration settings named "${e}"`);return MB(n,s,{hideSecrets:r,getNativePaths:i})}getSubprocessStreams(e,{header:r,prefix:i,report:n}){let s,o,a=T.createWriteStream(e);if(this.get("enableInlineBuilds")){let l=n.createStreamReporter(`${i} ${Ve(this,"STDOUT","green")}`),c=n.createStreamReporter(`${i} ${Ve(this,"STDERR","red")}`);s=new kR.PassThrough,s.pipe(l),s.pipe(a),o=new kR.PassThrough,o.pipe(c),o.pipe(a)}else s=a,o=a,typeof r!="undefined"&&s.write(`${r} -`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let i of r.resolvers||[])e.push(new i);return new pd([new FB,new Yr,new SR,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let i of r.fetchers||[])e.push(new i);return new vR([new dd,new xR,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let i of r.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=this.get("supportedArchitectures"),r=e.get("os");r!==null&&(r=r.map(n=>n==="current"?process.platform:n));let i=e.get("cpu");return i!==null&&(i=i.map(n=>n==="current"?process.arch:n)),{os:r,cpu:i}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(i,n,{userProvided:s=!1}={})=>{if(!Us(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new Ze;o.load(n,{yamlCompatibilityMode:!0});let a=hu(e,i.identHash),l=[];a.push([i.range,l]);let c={status:ki.Inactive,userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push(_(P({},c),{type:oi.Dependency,descriptor:u}));for(let u of o.peerDependencies.values())l.push(_(P({},c),{type:oi.PeerDependency,descriptor:u}));for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push(_(P({},c),{type:oi.PeerDependencyMeta,selector:u,key:f,value:h}))};await this.triggerHook(i=>i.registerPackageExtensions,this,r);for(let[i,n]of this.get("packageExtensions"))r(pA(i,!0),aE(n),{userProvided:!0})}normalizePackage(e){let r=ap(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i!="undefined"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!lc(s,o))for(let l of a)switch(l.status===ki.Inactive&&(l.status=ki.Redundant),l.type){case oi.Dependency:typeof r.dependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.dependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependency:typeof r.peerDependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependencyMeta:{let c=r.peerDependenciesMeta.get(l.selector);(typeof c=="undefined"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status=ki.Active,na(r.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:Lv(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of r.peerDependenciesMeta.keys()){let o=In(s);r.peerDependencies.has(o.identHash)||r.peerDependencies.set(o.identHash,Yt(o,"*"))}for(let s of r.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=Io("types",o),l=St(a);r.peerDependencies.has(a.identHash)||r.peerDependenciesMeta.has(l)||(r.peerDependencies.set(a.identHash,Yt(a,"*")),r.peerDependenciesMeta.set(l,{optional:!0}))}return r.dependencies=new Map(gn(r.dependencies,([,s])=>En(s))),r.peerDependencies=new Map(gn(r.peerDependencies,([,s])=>En(s))),r}getLimit(e){return na(this.limits,e,()=>(0,N_.default)(this.get(e)))}async triggerHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...r)}}async triggerMultipleHooks(e,r){for(let i of r)await this.triggerHook(e,...i)}async reduceHook(e,r,...i){let n=r;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...r);if(typeof o!="undefined")return o}return null}},fe=Ra;fe.telemetry=null;var Gn;(function(r){r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE"})(Gn||(Gn={}));var Fa=class extends Xi{constructor({configuration:e,stdout:r,suggestInstall:i=!0}){super();this.errorCount=0;Cp(this,{configuration:e}),this.configuration=e,this.stdout=r,this.suggestInstall=i}static async start(e,r){let i=new this(e);try{await r(i)}catch(n){i.reportExceptionOnce(n)}finally{await i.finalize()}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){this.errorCount+=1,this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(e)}: ${r} -`)}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){this.errorCount>0&&(this.stdout.write(` -`),this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. -`),this.suggestInstall&&this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. -`))}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:!1})}};var t0=ie(require("crypto")),v$=ie(CX()),r0=ie(Q$()),S$=ie(Wp()),x$=ie(Or()),lF=ie(require("util")),cF=ie(require("v8")),uF=ie(require("zlib"));var iUe=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,i)=>`${r}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/(?:[^\\.]+)\.jfrog\.io\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>by({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oF=class{constructor(){this.resolutions=null}async setup(e,{report:r}){let i=v.join(e.cwd,e.configuration.get("lockfileFilename"));if(!T.existsSync(i))return;let n=await T.readFilePromise(i,"utf8"),s=Ei(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=gp(a);if(!l){r.reportWarning(z.YARN_IMPORT_FAILED,`Failed to parse the string "${a}" into a proper descriptor`);continue}Us(l.range)&&(l=Yt(l,`npm:${l.range}`));let{version:c,resolved:u}=s[a];if(!u)continue;let g;for(let[h,p]of iUe){let d=u.match(h);if(d){g=p(c,...d);break}}if(!g){r.reportWarning(z.YARN_IMPORT_FAILED,`${Xt(e.configuration,l)}: Only some patterns can be imported from legacy lockfiles (not "${u}")`);continue}let f=l;try{let h=Tu(l.range),p=gp(h.selector,!0);p&&(f=p)}catch{}o.set(l.descriptorHash,Vi(f,g))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var aF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(By(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){let n=i.project.originalPackages.get(By(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var AF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.resolver.bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};var ei=class extends Xi{reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){}};var b$=ie(vx());var Dd=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.dependencies=new Map;this.project=r,this.cwd=e}async setup(){this.manifest=T.existsSync(v.join(this.cwd,Ze.fileName))?await Ze.find(this.cwd):new Ze,this.relativeCwd=v.relative(this.project.cwd,this.cwd)||Se.dot;let e=this.manifest.name?this.manifest.name:Io(null,`${this.computeCandidateName()}-${zi(this.relativeCwd).substr(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=Vi(e,r),this.anchoredDescriptor=Yt(this.locator,`${Yr.protocol}${this.relativeCwd}`),this.anchoredLocator=Vi(this.locator,`${Yr.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:s})=>s),n=await(0,b$.default)(i,{cwd:M.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort();for(let s of n){let o=v.resolve(this.cwd,M.toPortablePath(s));T.existsSync(v.join(o,"package.json"))&&this.workspacesCwds.add(o)}}accepts(e){var o;let r=e.indexOf(":"),i=r!==-1?e.slice(0,r+1):null,n=r!==-1?e.slice(r+1):e;if(i===Yr.protocol&&v.normalize(n)===this.relativeCwd||i===Yr.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=Us(n);return s?i===Yr.protocol?s.test((o=this.manifest.version)!=null?o:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${v.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of e)for(let o of n.manifest[s].values()){let a=this.project.tryWorkspaceByDescriptor(o);a===null||r.has(a)||(r.add(a),i(a))}};return i(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of this.project.workspaces)e.some(a=>[...s.manifest[a].values()].some(l=>{let c=this.project.tryWorkspaceByDescriptor(l);return c!==null&&up(c.anchoredLocator,n.anchoredLocator)}))&&!r.has(s)&&(r.add(s),i(s))};return i(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let i=this.project.workspacesByCwd.get(r);i&&e.push(i,...i.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=v.join(this.cwd,Ze.fileName),i=`${JSON.stringify(e,null,this.manifest.indent)} -`;await T.changeFilePromise(r,i,{automaticNewlines:!0}),this.manifest.raw=e}};var k$=5,nUe=1,sUe=/ *, */g,P$=/\/$/,oUe=32,aUe=(0,lF.promisify)(uF.default.gzip),AUe=(0,lF.promisify)(uF.default.gunzip),li;(function(r){r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build"})(li||(li={}));var gF={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},D$=t=>zi(`${nUe}`,t),Ke=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var c,u,g;if(!e.projectCwd)throw new me(`No project found in ${r}`);let i=e.projectCwd,n=r,s=null;for(;s!==e.projectCwd;){if(s=n,T.existsSync(v.join(s,wt.manifest))){i=s;break}n=v.dirname(s)}let o=new Ke(e.projectCwd,{configuration:e});(c=fe.telemetry)==null||c.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(u=fe.telemetry)==null||u.reportWorkspaceCount(o.workspaces.length),(g=fe.telemetry)==null||g.reportDependencyCount(o.workspaces.reduce((f,h)=>f+h.manifest.dependencies.size+h.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};throw new me(`The nearest package directory (${Ve(e,i,Le.PATH)}) doesn't seem to be part of the project declared in ${Ve(e,o.cwd,Le.PATH)}. - -- If the project directory is right, it might be that you forgot to list ${Ve(e,v.relative(o.cwd,i),Le.PATH)} as a workspace. -- If it isn't, it's likely because you have a yarn.lock or package.json file there, confusing the project root detection.`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(T.existsSync(e)){let n=await T.readFilePromise(e,"utf8");this.lockFileChecksum=D$(n);let s=Ei(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o0;){let r=e;e=[];for(let i of r){if(this.workspacesByCwd.has(i))continue;let n=await this.addWorkspace(i),s=this.storedPackages.get(n.anchoredLocator.locatorHash);s&&(n.dependencies=s.dependencies);for(let o of n.workspacesCwds)e.push(o)}}}async addWorkspace(e){let r=new Dd(e,{project:this});await r.setup();let i=this.workspacesByIdent.get(r.locator.identHash);if(typeof i!="undefined")throw new Error(`Duplicate workspace name ${Vr(this.configuration,r.locator)}: ${M.fromPortablePath(e)} conflicts with ${M.fromPortablePath(i.cwd)}`);return this.workspaces.push(r),this.workspacesByCwd.set(e,r),this.workspacesByIdent.set(r.locator.identHash,r),r}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){v.isAbsolute(e)||(e=v.resolve(this.cwd,e)),e=v.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let i of this.workspaces)v.relative(i.cwd,e).startsWith("../")||r&&r.cwd.length>=i.cwd.length||(r=i);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r=="undefined"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${Vr(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){let r=this.tryWorkspaceByIdent(e);return r===null||(hA(e)&&(e=Ap(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${Xt(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Eo(e)&&(e=lp(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${lt(this.configuration,e)})`);return r}refreshWorkspaceDependencies(){for(let e of this.workspaces){let r=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!r)throw new Error(`Assertion failed: Expected workspace ${hp(this.configuration,e)} (${Ve(this.configuration,v.join(e.cwd,wt.manifest),Le.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(r.dependencies)}}forgetResolution(e){let r=n=>{this.storedResolutions.delete(n),this.storedDescriptors.delete(n)},i=n=>{this.originalPackages.delete(n),this.storedPackages.delete(n),this.accessibleLocators.delete(n)};if("descriptorHash"in e){let n=this.storedResolutions.get(e.descriptorHash);r(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof n!="undefined"&&!s.has(n)&&i(n)}if("locatorHash"in e){i(e.locatorHash);for(let[n,s]of this.storedResolutions)s===e.locatorHash&&r(n)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let r of this.originalPackages.values()){let i;try{i=e.shouldPersistResolution(r,{project:this,resolver:e})}catch{i=!1}i||this.forgetResolution(r)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,i]of e.dependencies)hA(i)&&e.dependencies.set(r,Ap(i))}getDependencyMeta(e,r){let i={},s=this.topLevelWorkspace.manifest.dependenciesMeta.get(St(e));if(!s)return i;let o=s.get(null);if(o&&Object.assign(i,o),r===null||!x$.default.valid(r))return i;for(let[a,l]of s)a!==null&&a===r&&Object.assign(i,l);return i}async findLocatorForLocation(e,{strict:r=!1}={}){let i=new ei,n=this.configuration.getLinkers(),s={project:this,report:i};for(let o of n){let a=await o.findPackageLocator(e,s);if(a){if(r&&(await o.findPackageLocation(a,s)).replace(P$,"")!==e.replace(P$,""))continue;return a}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),i=new oF;await i.setup(this,{report:e.report});let n=e.lockfileOnly?[new AF(r)]:[i,r],s=new pd([new aF(r),...n]),o=this.configuration.makeFetcher(),a=e.lockfileOnly?{project:this,report:e.report,resolver:s}:{project:this,report:e.report,resolver:s,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:o,cacheOptions:{mirrorWriteOnly:!0}}},l=new Map,c=new Map,u=new Map,g=new Map,f=new Map,h=new Map,p=this.topLevelWorkspace.anchoredLocator,d=new Set,m=[],E=async W=>{let X=await du(async()=>await s.resolve(W,a),D=>`${lt(this.configuration,W)}: ${D}`);if(!up(W,X))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${lt(this.configuration,W)} to ${lt(this.configuration,X)})`);g.set(X.locatorHash,X);let F=this.configuration.normalizePackage(X);for(let[D,he]of F.dependencies){let pe=await this.configuration.reduceHook(Pe=>Pe.reduceDependency,he,this,F,he,{resolver:s,resolveOptions:a});if(!cp(he,pe))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let Ne=s.bindDescriptor(pe,W,a);F.dependencies.set(D,Ne)}return m.push(Promise.all([...F.dependencies.values()].map(D=>H(D)))),c.set(F.locatorHash,F),F},B=async W=>{let X=f.get(W.locatorHash);if(typeof X!="undefined")return X;let F=Promise.resolve().then(()=>E(W));return f.set(W.locatorHash,F),F},b=async(W,X)=>{let F=await H(X);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,F.locatorHash),F},R=async W=>{let X=this.resolutionAliases.get(W.descriptorHash);if(typeof X!="undefined")return b(W,this.storedDescriptors.get(X));let F=s.getResolutionDependencies(W,a),D=new Map(await Promise.all(F.map(async Ne=>{let Pe=s.bindDescriptor(Ne,p,a),qe=await H(Pe);return d.add(qe.locatorHash),[Ne.descriptorHash,qe]}))),pe=(await du(async()=>await s.getCandidates(W,D,a),Ne=>`${Xt(this.configuration,W)}: ${Ne}`))[0];if(typeof pe=="undefined")throw new Error(`${Xt(this.configuration,W)}: No candidates found`);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,pe.locatorHash),B(pe)},H=W=>{let X=h.get(W.descriptorHash);if(typeof X!="undefined")return X;l.set(W.descriptorHash,W);let F=Promise.resolve().then(()=>R(W));return h.set(W.descriptorHash,F),F};for(let W of this.workspaces){let X=W.anchoredDescriptor;m.push(H(X))}for(;m.length>0;){let W=[...m];m.length=0,await Promise.all(W)}let L=new Set(this.resolutionAliases.values()),K=new Set(c.keys()),J=new Set,ne=new Map;lUe({project:this,report:e.report,accessibleLocators:J,volatileDescriptors:L,optionalBuilds:K,peerRequirements:ne,allDescriptors:l,allResolutions:u,allPackages:c});for(let W of d)K.delete(W);for(let W of L)l.delete(W),u.delete(W);let q=this.configuration.getSupportedArchitectures(),A=new Set,V=new Set;for(let W of c.values())W.conditions!=null&&(!K.has(W.locatorHash)||(Sy(W,q)||(Sy(W,{os:[process.platform],cpu:[process.arch]})&&e.report.reportWarningOnce(z.GHOST_ARCHITECTURE,`${lt(this.configuration,W)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ve(this.configuration,"supportedArchitectures",ps.SETTING)} setting`),V.add(W.locatorHash)),A.add(W.locatorHash)));this.storedResolutions=u,this.storedDescriptors=l,this.storedPackages=c,this.accessibleLocators=J,this.conditionalLocators=A,this.disabledLocators=V,this.originalPackages=g,this.optionalBuilds=K,this.peerRequirements=ne,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:r,fetcher:i,mode:n}){let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,cacheOptions:s},l=Array.from(new Set(gn(this.storedResolutions.values(),[f=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");return is(h)}])));n===li.UpdateLockfile&&(l=l.filter(f=>!this.storedChecksums.has(f)));let c=!1,u=Xi.progressViaCounter(l.length);r.reportProgress(u);let g=(0,S$.default)(oUe);if(await r.startCacheReport(async()=>{await Promise.all(l.map(f=>g(async()=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");if(Eo(h))return;let p;try{p=await o.fetch(h,a)}catch(d){d.message=`${lt(this.configuration,h)}: ${d.message}`,r.reportExceptionOnce(d),c=d;return}p.checksum!=null?this.storedChecksums.set(h.locatorHash,p.checksum):this.storedChecksums.delete(h.locatorHash),p.releaseFs&&p.releaseFs()}).finally(()=>{u.tick()})))}),c)throw c}async linkEverything({cache:e,report:r,fetcher:i,mode:n}){var A,V,W;let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,skipIntegrityCheck:!0,cacheOptions:s},l=this.configuration.getLinkers(),c={project:this,report:r},u=new Map(l.map(X=>{let F=X.makeInstaller(c),D=F.getCustomDataKey(),he=this.installersCustomData.get(D);return typeof he!="undefined"&&F.attachCustomData(he),[X,F]})),g=new Map,f=new Map,h=new Map,p=new Map(await Promise.all([...this.accessibleLocators].map(async X=>{let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");return[X,await o.fetch(F,a)]}))),d=[];for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(typeof F=="undefined")throw new Error("Assertion failed: The locator should have been registered");let D=p.get(F.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The fetch result should have been registered");let he=[],pe=Pe=>{he.push(Pe)},Ne=this.tryWorkspaceByLocator(F);if(Ne!==null){let Pe=[],{scripts:qe}=Ne.manifest;for(let se of["preinstall","install","postinstall"])qe.has(se)&&Pe.push([Gn.SCRIPT,se]);try{for(let[se,be]of u)if(se.supportsPackage(F,c)&&(await be.installPackage(F,D,{holdFetchResult:pe})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{he.length===0?(A=D.releaseFs)==null||A.call(D):d.push(Promise.all(he).catch(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}let re=v.join(D.packageFs.getRealPath(),D.prefixPath);f.set(F.locatorHash,re),!Eo(F)&&Pe.length>0&&h.set(F.locatorHash,{directives:Pe,buildLocations:[re]})}else{let Pe=l.find(se=>se.supportsPackage(F,c));if(!Pe)throw new nt(z.LINKER_NOT_FOUND,`${lt(this.configuration,F)} isn't supported by any available linker`);let qe=u.get(Pe);if(!qe)throw new Error("Assertion failed: The installer should have been registered");let re;try{re=await qe.installPackage(F,D,{holdFetchResult:pe})}finally{he.length===0?(V=D.releaseFs)==null||V.call(D):d.push(Promise.all(he).then(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}g.set(F.locatorHash,Pe),f.set(F.locatorHash,re.packageLocation),re.buildDirective&&re.buildDirective.length>0&&re.packageLocation&&h.set(F.locatorHash,{directives:re.buildDirective,buildLocations:[re.packageLocation]})}}let m=new Map;for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");let D=this.tryWorkspaceByLocator(F)!==null,he=async(pe,Ne)=>{let Pe=f.get(F.locatorHash);if(typeof Pe=="undefined")throw new Error(`Assertion failed: The package (${lt(this.configuration,F)}) should have been registered`);let qe=[];for(let re of F.dependencies.values()){let se=this.storedResolutions.get(re.descriptorHash);if(typeof se=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,re)}, from ${lt(this.configuration,F)})should have been registered`);let be=this.storedPackages.get(se);if(typeof be=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);let ae=this.tryWorkspaceByLocator(be)===null?g.get(se):null;if(typeof ae=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);ae===pe||ae===null?f.get(be.locatorHash)!==null&&qe.push([re,be]):!D&&Pe!==null&&hu(m,se).push(Pe)}Pe!==null&&await Ne.attachInternalDependencies(F,qe)};if(D)for(let[pe,Ne]of u)pe.supportsPackage(F,c)&&await he(pe,Ne);else{let pe=g.get(F.locatorHash);if(!pe)throw new Error("Assertion failed: The linker should have been found");let Ne=u.get(pe);if(!Ne)throw new Error("Assertion failed: The installer should have been registered");await he(pe,Ne)}}for(let[X,F]of m){let D=this.storedPackages.get(X);if(!D)throw new Error("Assertion failed: The package should have been registered");let he=g.get(D.locatorHash);if(!he)throw new Error("Assertion failed: The linker should have been found");let pe=u.get(he);if(!pe)throw new Error("Assertion failed: The installer should have been registered");await pe.attachExternalDependents(D,F)}let E=new Map;for(let X of u.values()){let F=await X.finalizeInstall();for(let D of(W=F==null?void 0:F.records)!=null?W:[])h.set(D.locatorHash,{directives:D.buildDirective,buildLocations:D.buildLocations});typeof(F==null?void 0:F.customData)!="undefined"&&E.set(X.getCustomDataKey(),F.customData)}if(this.installersCustomData=E,await Promise.all(d),n===li.SkipBuild)return;let B=new Set(this.storedPackages.keys()),b=new Set(h.keys());for(let X of b)B.delete(X);let R=(0,t0.createHash)("sha512");R.update(process.versions.node),await this.configuration.triggerHook(X=>X.globalHashGeneration,this,X=>{R.update("\0"),R.update(X)});let H=R.digest("hex"),L=new Map,K=X=>{let F=L.get(X.locatorHash);if(typeof F!="undefined")return F;let D=this.storedPackages.get(X.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The package should have been registered");let he=(0,t0.createHash)("sha512");he.update(X.locatorHash),L.set(X.locatorHash,"");for(let pe of D.dependencies.values()){let Ne=this.storedResolutions.get(pe.descriptorHash);if(typeof Ne=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,pe)}) should have been registered`);let Pe=this.storedPackages.get(Ne);if(typeof Pe=="undefined")throw new Error("Assertion failed: The package should have been registered");he.update(K(Pe))}return F=he.digest("hex"),L.set(X.locatorHash,F),F},J=(X,F)=>{let D=(0,t0.createHash)("sha512");D.update(H),D.update(K(X));for(let he of F)D.update(he);return D.digest("hex")},ne=new Map,q=!1;for(;b.size>0;){let X=b.size,F=[];for(let D of b){let he=this.storedPackages.get(D);if(!he)throw new Error("Assertion failed: The package should have been registered");let pe=!0;for(let qe of he.dependencies.values()){let re=this.storedResolutions.get(qe.descriptorHash);if(!re)throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,qe)}) should have been registered`);if(b.has(re)){pe=!1;break}}if(!pe)continue;b.delete(D);let Ne=h.get(he.locatorHash);if(!Ne)throw new Error("Assertion failed: The build directive should have been registered");let Pe=J(he,Ne.buildLocations);if(this.storedBuildState.get(he.locatorHash)===Pe){ne.set(he.locatorHash,Pe);continue}q||(await this.persistInstallStateFile(),q=!0),this.storedBuildState.has(he.locatorHash)?r.reportInfo(z.MUST_REBUILD,`${lt(this.configuration,he)} must be rebuilt because its dependency tree changed`):r.reportInfo(z.MUST_BUILD,`${lt(this.configuration,he)} must be built because it never has been before or the last one failed`);for(let qe of Ne.buildLocations){if(!v.isAbsolute(qe))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${qe})`);F.push((async()=>{for(let[re,se]of Ne.directives){let be=`# This file contains the result of Yarn building a package (${is(he)}) -`;switch(re){case Gn.SCRIPT:be+=`# Script name: ${se} -`;break;case Gn.SHELLCODE:be+=`# Script code: ${se} -`;break}let ae=null;if(!await T.mktempPromise(async De=>{let $=v.join(De,"build.log"),{stdout:G,stderr:Ce}=this.configuration.getSubprocessStreams($,{header:be,prefix:lt(this.configuration,he),report:r}),ee;try{switch(re){case Gn.SCRIPT:ee=await Uw(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break;case Gn.SHELLCODE:ee=await rD(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break}}catch(Oe){Ce.write(Oe.stack),ee=1}if(G.end(),Ce.end(),ee===0)return ne.set(he.locatorHash,Pe),!0;T.detachTemp(De);let Ue=`${lt(this.configuration,he)} couldn't be built successfully (exit code ${Ve(this.configuration,ee,Le.NUMBER)}, logs can be found here: ${Ve(this.configuration,$,Le.PATH)})`;return this.optionalBuilds.has(he.locatorHash)?(r.reportInfo(z.BUILD_FAILED,Ue),ne.set(he.locatorHash,Pe),!0):(r.reportError(z.BUILD_FAILED,Ue),!1)}))return}})())}}if(await Promise.all(F),X===b.size){let D=Array.from(b).map(he=>{let pe=this.storedPackages.get(he);if(!pe)throw new Error("Assertion failed: The package should have been registered");return lt(this.configuration,pe)}).join(", ");r.reportError(z.CYCLIC_DEPENDENCIES,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${D})`);break}}this.storedBuildState=ne}async install(e){var a,l;let r=this.configuration.get("nodeLinker");(a=fe.telemetry)==null||a.reportInstall(r),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status=ki.Inactive;let i=v.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await T.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=Ve(this.configuration,g,Le.PACKAGE_EXTENSION);switch(g.status){case ki.Inactive:e.report.reportWarning(z.UNUSED_PACKAGE_EXTENSION,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case ki.Redundant:e.report.reportWarning(z.REDUNDANT_PACKAGE_EXTENSION,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=ul(n,this.generateLockfile());if(c!==n){let u=(0,v$.structuredPatch)(i,i,n,c);e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.ADDED)):f.startsWith("-")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.REMOVED)):e.report.reportInfo(null,Ve(this.configuration,f,"grey"))}throw e.report.reportSeparator(),new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status===ki.Active&&((l=fe.telemetry)==null||l.reportPackageExtension(Uu(g,Le.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject=="undefined"||e.persistProject)&&e.mode!==li.UpdateLockfile&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>Ey(c,{cwd:this.cwd})));(typeof e.persistProject=="undefined"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode===li.UpdateLockfile){e.report.reportWarning(z.UPDATE_LOCKFILE_ONLY_SKIP_LINK,`Skipped due to ${Ve(this.configuration,"mode=update-lockfile",Le.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>Ey(u,{cwd:this.cwd})));for(let u=0;uc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let r={};r.__metadata={version:k$,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>En(f)).sort().join(", "),c=new Ze;c.version=o.linkType===gt.HARD?o.version:"0.0.0-use.local",c.languageName=o.languageName,c.dependencies=new Map(o.dependencies),c.peerDependencies=new Map(o.peerDependencies),c.dependenciesMeta=new Map(o.dependenciesMeta),c.peerDependenciesMeta=new Map(o.peerDependenciesMeta),c.bin=new Map(o.bin);let u,g=this.storedChecksums.get(o.locatorHash);if(typeof g!="undefined"){let f=g.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let h=g.slice(0,f),p=g.slice(f+1);typeof r.__metadata.cacheKey=="undefined"&&(r.__metadata.cacheKey=h),h===r.__metadata.cacheKey?u=p:u=g}r[l]=_(P({},c.exportTo({},{compatibilityMode:!1})),{linkType:o.linkType.toLowerCase(),resolution:is(o),checksum:u,conditions:o.conditions||void 0})}return`${[`# This file is generated by running "yarn install" inside your project. -`,`# Manual changes might be lost - proceed with caution! -`].join("")} -`+Qa(r)}async persistLockfile(){let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await T.readFilePromise(e,"utf8")}catch(s){}let i=this.generateLockfile(),n=ul(r,i);n!==r&&(await T.writeFilePromise(e,n),this.lockFileChecksum=D$(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(gF))e.push(...o);let r=(0,r0.default)(this,e),i=cF.default.serialize(r),n=zi(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await T.mkdirPromise(v.dirname(s),{recursive:!0}),await T.writeFilePromise(s,await aUe(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath");if(!T.existsSync(n)){r&&await this.applyLightResolution();return}let s=await AUe(await T.readFilePromise(n));this.installStateChecksum=zi(s);let o=cF.default.deserialize(s);e&&typeof o.installersCustomData!="undefined"&&(this.installersCustomData=o.installersCustomData),i&&Object.assign(this,(0,r0.default)(o,gF.restoreBuildState)),r&&(o.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,r0.default)(o,gF.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ei}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:r}){let i=new Set([".gitignore"]);if(!Fb(e.cwd,this.cwd)||!await T.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await T.readdirPromise(e.cwd)){if(i.has(a))continue;let l=v.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?r.reportError(z.IMMUTABLE_CACHE,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:r.reportInfo(z.UNUSED_CACHE_ENTRY,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused - removing`),await T.removePromise(l)))}n&&s!==0&&r.reportInfo(z.UNUSED_CACHE_ENTRY,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function lUe({project:t,allDescriptors:e,allResolutions:r,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,volatileDescriptors:o=new Set,peerRequirements:a=new Map,report:l,tolerateMissingPackages:c=!1}){var ne;let u=new Map,g=[],f=new Map,h=new Map,p=new Map,d=new Map,m=new Map,E=new Map(t.workspaces.map(q=>{let A=q.anchoredLocator.locatorHash,V=i.get(A);if(typeof V=="undefined"){if(c)return[A,null];throw new Error("Assertion failed: The workspace should have an associated package")}return[A,ap(V)]})),B=()=>{let q=T.mktempSync(),A=v.join(q,"stacktrace.log"),V=String(g.length+1).length,W=g.map((X,F)=>`${`${F+1}.`.padStart(V," ")} ${is(X)} -`).join("");throw T.writeFileSync(A,W),T.detachTemp(q),new nt(z.STACK_OVERFLOW_RESOLUTION,`Encountered a stack overflow when resolving peer dependencies; cf ${M.fromPortablePath(A)}`)},b=q=>{let A=r.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: The resolution should have been registered");let V=i.get(A);if(!V)throw new Error("Assertion failed: The package could not be found");return V},R=(q,A,V,{top:W,optional:X})=>{g.length>1e3&&B(),g.push(A);let F=H(q,A,V,{top:W,optional:X});return g.pop(),F},H=(q,A,V,{top:W,optional:X})=>{if(n.has(A.locatorHash))return;n.add(A.locatorHash),X||s.delete(A.locatorHash);let F=i.get(A.locatorHash);if(!F){if(c)return;throw new Error(`Assertion failed: The package (${lt(t.configuration,A)}) should have been registered`)}let D=[],he=[],pe=[],Ne=[],Pe=[];for(let re of Array.from(F.dependencies.values())){if(F.peerDependencies.has(re.identHash)&&F.locatorHash!==W)continue;if(hA(re))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");o.delete(re.descriptorHash);let se=X;if(!se){let ee=F.dependenciesMeta.get(St(re));if(typeof ee!="undefined"){let Ue=ee.get(null);typeof Ue!="undefined"&&Ue.optional&&(se=!0)}}let be=r.get(re.descriptorHash);if(!be){if(c)continue;throw new Error(`Assertion failed: The resolution (${Xt(t.configuration,re)}) should have been registered`)}let ae=E.get(be)||i.get(be);if(!ae)throw new Error(`Assertion failed: The package (${be}, resolved from ${Xt(t.configuration,re)}) should have been registered`);if(ae.peerDependencies.size===0){R(re,ae,new Map,{top:W,optional:se});continue}let Ae=u.get(ae.locatorHash);typeof Ae=="number"&&Ae>=2&&B();let De,$,G=new Set,Ce;he.push(()=>{De=kx(re,A.locatorHash),$=Px(ae,A.locatorHash),F.dependencies.delete(re.identHash),F.dependencies.set(De.identHash,De),r.set(De.descriptorHash,$.locatorHash),e.set(De.descriptorHash,De),i.set($.locatorHash,$),D.push([ae,De,$])}),pe.push(()=>{var ee;Ce=new Map;for(let Ue of $.peerDependencies.values()){let Oe=F.dependencies.get(Ue.identHash);if(!Oe&&cp(A,Ue)&&(Oe=q),(!Oe||Oe.range==="missing:")&&$.dependencies.has(Ue.identHash)){$.peerDependencies.delete(Ue.identHash);continue}Oe||(Oe=Yt(Ue,"missing:")),$.dependencies.set(Oe.identHash,Oe),hA(Oe)&&Pl(p,Oe.descriptorHash).add($.locatorHash),f.set(Oe.identHash,Oe),Oe.range==="missing:"&&G.add(Oe.identHash),Ce.set(Ue.identHash,(ee=V.get(Ue.identHash))!=null?ee:$.locatorHash)}$.dependencies=new Map(gn($.dependencies,([Ue,Oe])=>St(Oe)))}),Ne.push(()=>{if(!i.has($.locatorHash))return;let ee=u.get(ae.locatorHash),Ue=typeof ee!="undefined"?ee+1:1;u.set(ae.locatorHash,Ue),R(De,$,Ce,{top:W,optional:se}),u.set(ae.locatorHash,Ue-1)}),Pe.push(()=>{let ee=F.dependencies.get(re.identHash);if(typeof ee=="undefined")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let Ue=r.get(ee.descriptorHash);if(typeof Ue=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");if(Pl(m,Ue).add(A.locatorHash),!!i.has($.locatorHash)){for(let Oe of $.peerDependencies.values()){let vt=Ce.get(Oe.identHash);if(typeof vt=="undefined")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");hu(pu(d,vt),St(Oe)).push($.locatorHash)}for(let Oe of G)$.dependencies.delete(Oe)}})}for(let re of[...he,...pe])re();let qe;do{qe=!0;for(let[re,se,be]of D){if(!i.has(be.locatorHash))continue;let ae=pu(h,re.locatorHash),Ae=zi(...[...be.dependencies.values()].map(Ce=>{let ee=Ce.range!=="missing:"?r.get(Ce.descriptorHash):"missing:";if(typeof ee=="undefined")throw new Error(`Assertion failed: Expected the resolution for ${Xt(t.configuration,Ce)} to have been registered`);return ee===W?`${ee} (top)`:ee}),se.identHash),De=ae.get(Ae);if(typeof De=="undefined"){ae.set(Ae,se);continue}if(De===se)continue;qe=!1,i.delete(be.locatorHash),e.delete(se.descriptorHash),r.delete(se.descriptorHash),n.delete(be.locatorHash);let $=p.get(se.descriptorHash)||[],G=[F.locatorHash,...$];p.delete(se.descriptorHash);for(let Ce of G){let ee=i.get(Ce);typeof ee!="undefined"&&ee.dependencies.set(se.identHash,De)}}}while(!qe);for(let re of[...Ne,...Pe])re()};for(let q of t.workspaces){let A=q.anchoredLocator;o.delete(q.anchoredDescriptor.descriptorHash),R(q.anchoredDescriptor,A,new Map,{top:A.locatorHash,optional:!1})}var L;(function(V){V[V.NotProvided=0]="NotProvided",V[V.NotCompatible=1]="NotCompatible"})(L||(L={}));let K=[];for(let[q,A]of m){let V=i.get(q);if(typeof V=="undefined")throw new Error("Assertion failed: Expected the root to be registered");let W=d.get(q);if(typeof W!="undefined")for(let X of A){let F=i.get(X);if(typeof F!="undefined")for(let[D,he]of W){let pe=In(D);if(F.peerDependencies.has(pe.identHash))continue;let Ne=`p${zi(X,D,q).slice(0,5)}`;a.set(Ne,{subject:X,requested:pe,rootRequester:q,allRequesters:he});let Pe=V.dependencies.get(pe.identHash);if(typeof Pe!="undefined"){let qe=b(Pe),re=(ne=qe.version)!=null?ne:"0.0.0",se=new Set;for(let ae of he){let Ae=i.get(ae);if(typeof Ae=="undefined")throw new Error("Assertion failed: Expected the link to be registered");let De=Ae.peerDependencies.get(pe.identHash);if(typeof De=="undefined")throw new Error("Assertion failed: Expected the ident to be registered");se.add(De.range)}[...se].every(ae=>{if(ae.startsWith(Yr.protocol)){if(!t.tryWorkspaceByLocator(qe))return!1;ae=ae.slice(Yr.protocol.length),(ae==="^"||ae==="~")&&(ae="*")}return lc(re,ae)})||K.push({type:1,subject:F,requested:pe,requester:V,version:re,hash:Ne,requirementCount:he.length})}else{let qe=V.peerDependenciesMeta.get(D);(qe==null?void 0:qe.optional)||K.push({type:0,subject:F,requested:pe,requester:V,hash:Ne})}}}}let J=[q=>Rx(q.subject),q=>St(q.requested),q=>`${q.type}`];for(let q of gn(K,J))switch(q.type){case 0:l==null||l.reportWarning(z.MISSING_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} doesn't provide ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}), requested by ${Vr(t.configuration,q.requester)}`);break;case 1:{let A=q.requirementCount>1?"and some of its descendants request":"requests";l==null||l.reportWarning(z.INCOMPATIBLE_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} provides ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}) with version ${fp(t.configuration,q.version)}, which doesn't satisfy what ${Vr(t.configuration,q.requester)} ${A}`)}break}K.length>0&&(l==null||l.reportWarning(z.UNNAMED,`Some peer dependencies are incorrectly met; run ${Ve(t.configuration,"yarn explain peer-requirements ",Le.CODE)} for details, where ${Ve(t.configuration,"",Le.CODE)} is the six-letter p-prefixed code`))}var Po;(function(l){l.VERSION="version",l.COMMAND_NAME="commandName",l.PLUGIN_NAME="pluginName",l.INSTALL_COUNT="installCount",l.PROJECT_COUNT="projectCount",l.WORKSPACE_COUNT="workspaceCount",l.DEPENDENCY_COUNT="dependencyCount",l.EXTENSION="packageExtension"})(Po||(Po={}));var Rd=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let i=this.getRegistryPath();this.isNew=!T.existsSync(i),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue(Po.VERSION,e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue(Po.COMMAND_NAME,e||"")}reportPluginName(e){this.reportValue(Po.PLUGIN_NAME,e)}reportProject(e){this.reportEnumerator(Po.PROJECT_COUNT,e)}reportInstall(e){this.reportHit(Po.INSTALL_COUNT,e)}reportPackageExtension(e){this.reportValue(Po.EXTENSION,e)}reportWorkspaceCount(e){this.reportValue(Po.WORKSPACE_COUNT,String(e))}reportDependencyCount(e){this.reportValue(Po.DEPENDENCY_COUNT,String(e))}reportValue(e,r){Pl(this.values,e).add(r)}reportEnumerator(e,r){Pl(this.enumerators,e).add(zi(r))}reportHit(e,r="*"){let i=pu(this.hits,e),n=na(i,r,()=>0);i.set(r,n+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return v.join(e,"telemetry.json")}sendReport(e){var u,g,f;let r=this.getRegistryPath(),i;try{i=T.readJsonSync(r)}catch{i={}}let n=Date.now(),s=this.configuration.get("telemetryInterval")*24*60*60*1e3,a=((u=i.lastUpdate)!=null?u:n+s+Math.floor(s*Math.random()))+s;if(a>n&&i.lastUpdate!=null)return;try{T.mkdirSync(v.dirname(r),{recursive:!0}),T.writeJsonSync(r,{lastUpdate:n})}catch{return}if(a>n||!i.blocks)return;let l=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,c=h=>iP(l,h,{configuration:this.configuration}).catch(()=>{});for(let[h,p]of Object.entries((g=i.blocks)!=null?g:{})){if(Object.keys(p).length===0)continue;let d=p;d.userId=h,d.reportType="primary";for(let B of Object.keys((f=d.enumerators)!=null?f:{}))d.enumerators[B]=d.enumerators[B].length;c(d);let m=new Map,E=20;for(let[B,b]of Object.entries(d.values))b.length>0&&m.set(B,b.slice(0,E));for(;m.size>0;){let B={};B.userId=h,B.reportType="secondary",B.metrics={};for(let[b,R]of m)B.metrics[b]=R.shift(),R.length===0&&m.delete(b);c(B)}}}applyChanges(){var o,a,l,c,u,g,f,h,p;let e=this.getRegistryPath(),r;try{r=T.readJsonSync(e)}catch{r={}}let i=(o=this.configuration.get("telemetryUserId"))!=null?o:"*",n=r.blocks=(a=r.blocks)!=null?a:{},s=n[i]=(l=n[i])!=null?l:{};for(let d of this.hits.keys()){let m=s.hits=(c=s.hits)!=null?c:{},E=m[d]=(u=m[d])!=null?u:{};for(let[B,b]of this.hits.get(d))E[B]=((g=E[B])!=null?g:0)+b}for(let d of["values","enumerators"])for(let m of this[d].keys()){let E=s[d]=(f=s[d])!=null?f:{};E[m]=[...new Set([...(h=E[m])!=null?h:[],...(p=this[d].get(m))!=null?p:[]])]}T.mkdirSync(v.dirname(e),{recursive:!0}),T.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};var fF=ie(require("child_process")),R$=ie(ml());var hF=ie(require("fs"));var Yg=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);function cUe(t){let e=M.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,fF.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})}):(0,fF.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})})}async function i0({binaryVersion:t,pluginConfiguration:e}){async function r(){let n=new oo({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await i(n)}catch(s){process.stdout.write(n.error(s)),process.exitCode=1}}async function i(n){var p,d,m,E,B;let s=process.versions.node,o=">=12 <14 || 14.2 - 14.9 || >14.10.0";if(process.env.YARN_IGNORE_NODE!=="1"&&!qt.satisfiesWithPrereleases(s,o))throw new me(`This tool requires a Node version compatible with ${o} (got ${s}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let a=await fe.find(M.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),l=a.get("yarnPath"),c=a.get("ignorePath"),u=a.get("ignoreCwd"),g=M.toPortablePath(M.resolve(process.argv[1])),f=b=>T.readFilePromise(b).catch(()=>Buffer.of());if(!c&&!u&&await(async()=>l===g||Buffer.compare(...await Promise.all([f(l),f(g)]))===0)()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await i(n);return}else if(l!==null&&!c)if(!T.existsSync(l))process.stdout.write(n.error(new Error(`The "yarn-path" option has been set (in ${a.sources.get("yarnPath")}), but the specified location doesn't exist (${l}).`))),process.exitCode=1;else try{cUe(l)}catch(b){process.exitCode=b.code||1}else{c&&delete process.env.YARN_IGNORE_PATH,a.get("enableTelemetry")&&!R$.isCI&&process.stdout.isTTY&&(fe.telemetry=new Rd(a,"puba9cdc10ec5790a2cf4969dd413a47270")),(p=fe.telemetry)==null||p.reportVersion(t);for(let[L,K]of a.plugins.entries()){Yg.has((m=(d=L.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:d[1])!=null?m:"")&&((E=fe.telemetry)==null||E.reportPluginName(L));for(let J of K.commands||[])n.register(J)}let R=n.process(process.argv.slice(2));R.help||(B=fe.telemetry)==null||B.reportCommandName(R.path.join(" "));let H=R.cwd;if(typeof H!="undefined"&&!u){let L=(0,hF.realpathSync)(process.cwd()),K=(0,hF.realpathSync)(H);if(L!==K){process.chdir(H),await r();return}}await n.runExit(R,{cwd:M.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}}return r().catch(n=>{process.stdout.write(n.stack||n.message),process.exitCode=1}).finally(()=>T.rmtempPromise())}function F$(t){t.Command.Path=(...e)=>r=>{r.paths=r.paths||[],r.paths.push(e)};for(let e of["Array","Boolean","String","Proxy","Rest","Counter"])t.Command[e]=(...r)=>(i,n)=>{let s=t.Option[e](...r);Object.defineProperty(i,`__${n}`,{configurable:!1,enumerable:!0,get(){return s},set(o){this[n]=o}})};return t}var iC={};it(iC,{BaseCommand:()=>Be,WorkspaceRequiredError:()=>rt,getDynamicLibs:()=>Wie,getPluginConfiguration:()=>F0,main:()=>i0,openWorkspace:()=>rf,pluginCommands:()=>Yg});var Be=class extends ye{constructor(){super(...arguments);this.cwd=Y.String("--cwd",{hidden:!0})}};var rt=class extends me{constructor(e,r){let i=v.relative(e,r),n=v.join(e,Ze.fileName);super(`This command can only be run from within a workspace of your project (${i} isn't a workspace of ${n}).`)}};var dJe=ie(Or());Ss();var CJe=ie(gN()),Wie=()=>new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",vh],["semver",dJe],["typanion",lu],["yup",CJe]]);async function rf(t,e){let{project:r,workspace:i}=await Ke.find(t,e);if(!i)throw new rt(r.cwd,e);return i}var x_e=ie(Or());Ss();var k_e=ie(gN());var hL={};it(hL,{dedupeUtils:()=>zN,default:()=>Q4e,suggestUtils:()=>LN});var WAe=ie(ml());var roe=ie(aC());Ss();var LN={};it(LN,{Modifier:()=>Lo,Strategy:()=>Fr,Target:()=>vr,WorkspaceModifier:()=>af,applyModifier:()=>Zse,extractDescriptorFromPath:()=>ON,extractRangeModifier:()=>Xse,fetchDescriptorFrom:()=>MN,findProjectDescriptors:()=>toe,getModifier:()=>AC,getSuggestedDescriptors:()=>lC,makeWorkspaceDescriptor:()=>eoe,toWorkspaceModifier:()=>$se});var TN=ie(Or()),L3e="workspace:",vr;(function(i){i.REGULAR="dependencies",i.DEVELOPMENT="devDependencies",i.PEER="peerDependencies"})(vr||(vr={}));var Lo;(function(i){i.CARET="^",i.TILDE="~",i.EXACT=""})(Lo||(Lo={}));var af;(function(i){i.CARET="^",i.TILDE="~",i.EXACT="*"})(af||(af={}));var Fr;(function(s){s.KEEP="keep",s.REUSE="reuse",s.PROJECT="project",s.LATEST="latest",s.CACHE="cache"})(Fr||(Fr={}));function AC(t,e){return t.exact?Lo.EXACT:t.caret?Lo.CARET:t.tilde?Lo.TILDE:e.configuration.get("defaultSemverRangePrefix")}var T3e=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Xse(t,{project:e}){let r=t.match(T3e);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function Zse(t,e){let{protocol:r,source:i,params:n,selector:s}=S.parseRange(t.range);return TN.default.valid(s)&&(s=`${e}${t.range}`),S.makeDescriptor(t,S.makeRange({protocol:r,source:i,params:n,selector:s}))}function $se(t){switch(t){case Lo.CARET:return af.CARET;case Lo.TILDE:return af.TILDE;case Lo.EXACT:return af.EXACT;default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function eoe(t,e){return S.makeDescriptor(t.anchoredDescriptor,`${L3e}${$se(e)}`)}async function toe(t,{project:e,target:r}){let i=new Map,n=s=>{let o=i.get(s.descriptorHash);return o||i.set(s.descriptorHash,o={descriptor:s,locators:[]}),o};for(let s of e.workspaces)if(r===vr.PEER){let o=s.manifest.peerDependencies.get(t.identHash);o!==void 0&&n(o).locators.push(s.locator)}else{let o=s.manifest.dependencies.get(t.identHash),a=s.manifest.devDependencies.get(t.identHash);r===vr.DEVELOPMENT?a!==void 0?n(a).locators.push(s.locator):o!==void 0&&n(o).locators.push(s.locator):o!==void 0?n(o).locators.push(s.locator):a!==void 0&&n(a).locators.push(s.locator)}return i}async function ON(t,{cwd:e,workspace:r}){return await M3e(async i=>{v.isAbsolute(t)||(t=v.relative(r.cwd,v.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:n}=r,s=await MN(S.makeIdent(null,"archive"),t,{project:r.project,cache:i,workspace:r});if(!s)throw new Error("Assertion failed: The descriptor should have been found");let o=new ei,a=n.configuration.makeResolver(),l=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:i,fetcher:l,report:o,resolver:a},u=a.bindDescriptor(s,r.anchoredLocator,c),g=S.convertDescriptorToLocator(u),f=await l.fetch(g,c),h=await Ze.find(f.prefixPath,{baseFs:f.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return S.makeDescriptor(h.name,t)})}async function lC(t,{project:e,workspace:r,cache:i,target:n,modifier:s,strategies:o,maxResults:a=Infinity}){if(!(a>=0))throw new Error(`Invalid maxResults (${a})`);if(t.range!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${S.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let l=typeof r!="undefined"&&r!==null&&r.manifest[n].get(t.identHash)||null,c=[],u=[],g=async f=>{try{await f()}catch(h){u.push(h)}};for(let f of o){if(c.length>=a)break;switch(f){case Fr.KEEP:await g(async()=>{l&&c.push({descriptor:l,name:`Keep ${S.prettyDescriptor(e.configuration,l)}`,reason:"(no changes)"})});break;case Fr.REUSE:await g(async()=>{for(let{descriptor:h,locators:p}of(await toe(t,{project:e,target:n})).values()){if(p.length===1&&p[0].locatorHash===r.anchoredLocator.locatorHash&&o.includes(Fr.KEEP))continue;let d=`(originally used by ${S.prettyLocator(e.configuration,p[0])}`;d+=p.length>1?` and ${p.length-1} other${p.length>2?"s":""})`:")",c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:d})}});break;case Fr.CACHE:await g(async()=>{for(let h of e.storedDescriptors.values())h.identHash===t.identHash&&c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:"(already used somewhere in the lockfile)"})});break;case Fr.PROJECT:await g(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let h=e.tryWorkspaceByIdent(t);if(h===null)return;let p=eoe(h,s);c.push({descriptor:p,name:`Attach ${S.prettyDescriptor(e.configuration,p)}`,reason:`(local workspace at ${ue.pretty(e.configuration,h.relativeCwd,ue.Type.PATH)})`})});break;case Fr.LATEST:await g(async()=>{if(t.range!=="unknown")c.push({descriptor:t,name:`Use ${S.prettyRange(e.configuration,t.range)}`,reason:"(explicit range requested)"});else if(n===vr.PEER)c.push({descriptor:S.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))c.push({descriptor:null,name:"Resolve from latest",reason:ue.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let h=await MN(t,"latest",{project:e,cache:i,workspace:r,preserveModifier:!1});h&&(h=Zse(h,s),c.push({descriptor:h,name:`Use ${S.prettyDescriptor(e.configuration,h)}`,reason:"(resolved from latest)"}))}});break}}return{suggestions:c.slice(0,a),rejections:u.slice(0,a)}}async function MN(t,e,{project:r,cache:i,workspace:n,preserveModifier:s=!0}){let o=S.makeDescriptor(t,e),a=new ei,l=r.configuration.makeFetcher(),c=r.configuration.makeResolver(),u={project:r,fetcher:l,cache:i,checksums:r.storedChecksums,report:a,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},g=_(P({},u),{resolver:c,fetchOptions:u}),f=c.bindDescriptor(o,n.anchoredLocator,g),h=await c.getCandidates(f,new Map,g);if(h.length===0)return null;let p=h[0],{protocol:d,source:m,params:E,selector:B}=S.parseRange(S.convertToManifestRange(p.reference));if(d===r.configuration.get("defaultProtocol")&&(d=null),TN.default.valid(B)&&s!==!1){let b=typeof s=="string"?s:o.range;B=Xse(b,{project:r})+B}return S.makeDescriptor(p,S.makeRange({protocol:d,source:m,params:E,selector:B}))}async function M3e(t){return await T.mktempPromise(async e=>{let r=fe.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Qt(e,{configuration:r,check:!1,immutable:!1}))})}var cC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=Y.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=Y.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=Y.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=Y.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=Y.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=Y.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.silent=Y.Boolean("--silent",{hidden:!0});this.packages=Y.Rest()}async execute(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=[...s?[Fr.REUSE]:[],Fr.PROJECT,...this.cached?[Fr.CACHE]:[],Fr.LATEST],l=s?Infinity:1,c=await Promise.all(this.packages.map(async m=>{let E=m.match(/^\.{0,2}\//)?await ON(m,{cwd:this.context.cwd,workspace:i}):S.parseDescriptor(m),B=O3e(i,E,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional}),b=await lC(E,{project:r,workspace:i,cache:n,target:B,modifier:o,strategies:a,maxResults:l});return[E,b,B]})),u=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[E,{suggestions:B,rejections:b}]of c)if(B.filter(H=>H.descriptor!==null).length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),m.reportSeparator(),m.reportExceptionOnce(H)}});if(u.hasErrors())return u.exitCode();let g=!1,f=[],h=[];for(let[,{suggestions:m},E]of c){let B,b=m.filter(K=>K.descriptor!==null),R=b[0].descriptor,H=b.every(K=>S.areDescriptorsEqual(K.descriptor,R));b.length===1||H?B=R:(g=!0,{answer:B}=await(0,roe.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:m.map(({descriptor:K,name:J,reason:ne})=>K?{name:J,hint:ne,descriptor:K}:{name:J,hint:ne,disabled:!0}),onCancel:()=>process.exit(130),result(K){return this.find(K,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let L=i.manifest[E].get(B.identHash);(typeof L=="undefined"||L.descriptorHash!==B.descriptorHash)&&(i.manifest[E].set(B.identHash,B),this.optional&&(E==="dependencies"?i.manifest.ensureDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0:E==="peerDependencies"&&(i.manifest.ensurePeerDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0)),typeof L=="undefined"?f.push([i,E,B,a]):h.push([i,E,L,B]))}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyAddition,f),await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),g&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};cC.paths=[["add"]],cC.usage=ye.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});var ioe=cC;function O3e(t,e,{dev:r,peer:i,preferDev:n,optional:s}){let o=t.manifest[vr.REGULAR].has(e.identHash),a=t.manifest[vr.DEVELOPMENT].has(e.identHash),l=t.manifest[vr.PEER].has(e.identHash);if((r||i)&&o)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(s&&a)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(s&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||n)&&s)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);return i?vr.PEER:r||n?vr.DEVELOPMENT:o?vr.REGULAR:a?vr.DEVELOPMENT:vr.REGULAR}var uC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);if(await r.restoreInstallState(),this.name){let o=(await Kt.getPackageAccessibleBinaries(i,{project:r})).get(this.name);if(!o)throw new me(`Couldn't find a binary named "${this.name}" for package "${S.prettyLocator(e,i)}"`);let[,a]=o;return this.context.stdout.write(`${a} -`),0}return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async s=>{let o=await Kt.getPackageAccessibleBinaries(i,{project:r}),l=Array.from(o.keys()).reduce((c,u)=>Math.max(c,u.length),0);for(let[c,[u,g]]of o)s.reportJson({name:c,source:S.stringifyIdent(u),path:g});if(this.verbose)for(let[c,[u]]of o)s.reportInfo(null,`${c.padEnd(l," ")} ${S.prettyLocator(e,u)}`);else for(let c of o.keys())s.reportInfo(null,c)})).exitCode()}};uC.paths=[["bin"]],uC.usage=ye.Usage({description:"get the path to a binary script",details:` - When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. - - When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. - `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var noe=uC;var gC=class extends Be{constructor(){super(...arguments);this.mirror=Y.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=Y.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await Qt.find(e);return(await Fe.start({configuration:e,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&r.mirrorCwd!==null,s=!this.mirror;n&&(await T.removePromise(r.mirrorCwd),await e.triggerHook(o=>o.cleanGlobalArtifacts,e)),s&&await T.removePromise(r.cwd)})).exitCode()}};gC.paths=[["cache","clean"],["cache","clear"]],gC.usage=ye.Usage({description:"remove the shared cache files",details:` - This command will remove all the files from the cache. - `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var soe=gC;var ooe=ie(p0()),KN=ie(require("util")),fC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=Y.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=this.name.replace(/[.[].*$/,""),i=this.name.replace(/^[^.[]*/,"");if(typeof e.settings.get(r)=="undefined")throw new me(`Couldn't find a configuration settings named "${r}"`);let s=e.getSpecial(r,{hideSecrets:!this.unsafe,getNativePaths:!0}),o=de.convertMapsToIndexableObjects(s),a=i?(0,ooe.default)(o,i):o,l=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async c=>{c.reportJson(a)});if(!this.json){if(typeof a=="string")return this.context.stdout.write(`${a} -`),l.exitCode();KN.inspect.styles.name="cyan",this.context.stdout.write(`${(0,KN.inspect)(a,{depth:Infinity,colors:e.get("enableColors"),compact:!1})} -`)}return l.exitCode()}};fC.paths=[["config","get"]],fC.usage=ye.Usage({description:"read a configuration settings",details:` - This command will print a configuration setting. - - Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. - `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var aoe=fC;var Iae=ie(qN()),Eae=ie(p0()),yae=ie(mae()),JN=ie(require("util")),pC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String();this.value=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);if(i==="enableStrictSettings")throw new me("This setting only affects the file it's in, and thus cannot be set from the CLI");let o=this.json?JSON.parse(this.value):this.value;await(this.home?h=>fe.updateHomeConfiguration(h):h=>fe.updateConfiguration(r(),h))(h=>{if(n){let p=(0,Iae.default)(h);return(0,yae.default)(p,this.name,o),p}else return _(P({},h),{[i]:o})});let c=(await fe.find(this.context.cwd,this.context.plugins)).getSpecial(i,{hideSecrets:!0,getNativePaths:!0}),u=de.convertMapsToIndexableObjects(c),g=n?(0,Eae.default)(u,n):u;return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async h=>{JN.inspect.styles.name="cyan",h.reportInfo(z.UNNAMED,`Successfully set ${this.name} to ${(0,JN.inspect)(g,{depth:Infinity,colors:e.get("enableColors"),compact:!1})}`)})).exitCode()}};pC.paths=[["config","set"]],pC.usage=ye.Usage({description:"change a configuration settings",details:` - This command will set a configuration setting. - - When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). - - When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. - `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var wae=pC;var Dae=ie(qN()),Rae=ie(Ld()),Fae=ie(Pae()),dC=class extends Be{constructor(){super(...arguments);this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);let o=this.home?l=>fe.updateHomeConfiguration(l):l=>fe.updateConfiguration(r(),l);return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async l=>{let c=!1;await o(u=>{if(!(0,Rae.default)(u,this.name))return l.reportWarning(z.UNNAMED,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),c=!0,u;let g=n?(0,Dae.default)(u):P({},u);return(0,Fae.default)(g,this.name),g}),c||l.reportInfo(z.UNNAMED,`Successfully unset ${this.name}`)})).exitCode()}};dC.paths=[["config","unset"]],dC.usage=ye.Usage({description:"unset a configuration setting",details:` - This command will unset a configuration setting. - `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var Nae=dC;var WN=ie(require("util")),CC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=Y.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{if(e.invalid.size>0&&!this.json){for(let[n,s]of e.invalid)i.reportError(z.INVALID_CONFIGURATION_KEY,`Invalid configuration key "${n}" in ${s}`);i.reportSeparator()}if(this.json){let n=de.sortMap(e.settings.keys(),s=>s);for(let s of n){let o=e.settings.get(s),a=e.getSpecial(s,{hideSecrets:!0,getNativePaths:!0}),l=e.sources.get(s);this.verbose?i.reportJson({key:s,effective:a,source:l}):i.reportJson(P({key:s,effective:a,source:l},o))}}else{let n=de.sortMap(e.settings.keys(),a=>a),s=n.reduce((a,l)=>Math.max(a,l.length),0),o={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let a=n.map(c=>{let u=e.settings.get(c);if(!u)throw new Error(`Assertion failed: This settings ("${c}") should have been registered`);let g=this.why?e.sources.get(c)||"":u.description;return[c,g]}),l=a.reduce((c,[,u])=>Math.max(c,u.length),0);for(let[c,u]of a)i.reportInfo(null,`${c.padEnd(s," ")} ${u.padEnd(l," ")} ${(0,WN.inspect)(e.getSpecial(c,{hideSecrets:!0,getNativePaths:!0}),o)}`)}else for(let a of n)i.reportInfo(null,`${a.padEnd(s," ")} ${(0,WN.inspect)(e.getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),o)}`)}})).exitCode()}};CC.paths=[["config"]],CC.usage=ye.Usage({description:"display the current configuration",details:` - This command prints the current active configuration settings. - `,examples:[["Print the active configuration settings","$0 config"]]});var Lae=CC;Ss();var zN={};it(zN,{Strategy:()=>Oc,acceptedStrategies:()=>Hze,dedupe:()=>VN});var Tae=ie(Nn()),Oc;(function(e){e.HIGHEST="highest"})(Oc||(Oc={}));var Hze=new Set(Object.values(Oc)),Gze={highest:async(t,e,{resolver:r,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of t.storedResolutions){let c=t.storedDescriptors.get(a);if(typeof c=="undefined")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);de.getSetWithDefault(o,c.identHash).add(l)}return Array.from(t.storedDescriptors.values(),async a=>{if(e.length&&!Tae.default.isMatch(S.stringifyIdent(a),e))return null;let l=t.storedResolutions.get(a.descriptorHash);if(typeof l=="undefined")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=t.originalPackages.get(l);if(typeof c=="undefined"||!r.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u=="undefined")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(m=>{let E=t.originalPackages.get(m);if(typeof E=="undefined")throw new Error(`Assertion failed: The package (${m}) should have been registered`);return E.reference}),f=await r.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h=="undefined")return null;let p=h.locatorHash,d=t.originalPackages.get(p);if(typeof d=="undefined")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:d}})}};async function VN(t,{strategy:e,patterns:r,cache:i,report:n}){let{configuration:s}=t,o=new ei,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:t.storedChecksums,fetcher:l,project:t,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:t,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let f=await Gze[e](t,r,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=Xi.progressViaCounter(f.length);n.reportProgress(h);let p=0;await Promise.all(f.map(E=>E.then(B=>{if(B===null)return;p++;let{descriptor:b,currentPackage:R,updatedPackage:H}=B;n.reportInfo(z.UNNAMED,`${S.prettyDescriptor(s,b)} can be deduped from ${S.prettyLocator(s,R)} to ${S.prettyLocator(s,H)}`),n.reportJson({descriptor:S.stringifyDescriptor(b),currentResolution:S.stringifyLocator(R),updatedResolution:S.stringifyLocator(H)}),t.storedResolutions.set(b.descriptorHash,H.locatorHash)}).finally(()=>h.tick())));let d;switch(p){case 0:d="No packages";break;case 1:d="One package";break;default:d=`${p} packages`}let m=ue.pretty(s,e,ue.Type.CODE);return n.reportInfo(z.UNNAMED,`${d} can be deduped using the ${m} strategy`),p})}var mC=class extends Be{constructor(){super(...arguments);this.strategy=Y.String("-s,--strategy",Oc.HIGHEST,{description:"The strategy to use when deduping dependencies",validator:Yi(Oc)});this.check=Y.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=await Qt.find(e);await r.restoreInstallState({restoreResolutions:!1});let n=0,s=await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout,json:this.json},async o=>{n=await VN(r,{strategy:this.strategy,patterns:this.patterns,cache:i,report:o})});return s.hasErrors()?s.exitCode():this.check?n?1:0:(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async a=>{await r.install({cache:i,report:a,mode:this.mode})})).exitCode()}};mC.paths=[["dedupe"]],mC.usage=ye.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});var Mae=mC;var Y0=class extends Be{async execute(){let{plugins:e}=await fe.find(this.context.cwd,this.context.plugins),r=[];for(let o of e){let{commands:a}=o[1];if(a){let c=oo.from(a).definitions();r.push([o[0],c])}}let i=this.cli.definitions(),n=(o,a)=>o.split(" ").slice(1).join()===a.split(" ").slice(1).join(),s=Kae()["@yarnpkg/builder"].bundles.standard;for(let o of r){let a=o[1];for(let l of a)i.find(c=>n(c.path,l.path)).plugin={name:o[0],isDefault:s.includes(o[0])}}this.context.stdout.write(`${JSON.stringify(i,null,2)} -`)}};Y0.paths=[["--clipanion=definitions"]];var Uae=Y0;var q0=class extends Be{async execute(){this.context.stdout.write(this.cli.usage(null))}};q0.paths=[["help"],["--help"],["-h"]];var Hae=q0;var _N=class extends Be{constructor(){super(...arguments);this.leadingArgument=Y.String();this.args=Y.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!S.tryParseIdent(this.leadingArgument)){let e=v.resolve(this.context.cwd,M.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:e})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}},Gae=_N;var J0=class extends Be{async execute(){this.context.stdout.write(`${Zr||""} -`)}};J0.paths=[["-v"],["--version"]];var jae=J0;var IC=class extends Be{constructor(){super(...arguments);this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState(),await Kt.executePackageShellcode(i,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:r})}};IC.paths=[["exec"]],IC.usage=ye.Usage({description:"execute a shell script",details:` - This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. - - It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});var Yae=IC;Ss();var EC=class extends Be{constructor(){super(...arguments);this.hash=Y.String({required:!1,validator:fv(gv(),[hv(/^p[0-9a-f]{5}$/)])})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState({restoreResolutions:!1}),await r.applyLightResolution(),typeof this.hash!="undefined"?await jze(this.hash,r,{stdout:this.context.stdout}):(await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async n=>{var o;let s=[([,a])=>S.stringifyLocator(r.storedPackages.get(a.subject)),([,a])=>S.stringifyIdent(a.requested)];for(let[a,l]of de.sortMap(r.peerRequirements,s)){let c=r.storedPackages.get(l.subject);if(typeof c=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let u=r.storedPackages.get(l.rootRequester);if(typeof u=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let g=(o=c.dependencies.get(l.requested.identHash))!=null?o:null,f=ue.pretty(e,a,ue.Type.CODE),h=S.prettyLocator(e,c),p=S.prettyIdent(e,l.requested),d=S.prettyIdent(e,u),m=l.allRequesters.length-1,E=`descendant${m===1?"":"s"}`,B=m>0?` and ${m} ${E}`:"",b=g!==null?"provides":"doesn't provide";n.reportInfo(null,`${f} \u2192 ${h} ${b} ${p} to ${d}${B}`)}})).exitCode()}};EC.paths=[["explain","peer-requirements"]],EC.usage=ye.Usage({description:"explain a set of peer requirements",details:` - A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. - - When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. - - When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. - - **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). - `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});var qae=EC;async function jze(t,e,r){let{configuration:i}=e,n=e.peerRequirements.get(t);if(typeof n=="undefined")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Fe.start({configuration:i,stdout:r.stdout,includeFooter:!1},async o=>{var E,B;let a=e.storedPackages.get(n.subject);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(E=a.dependencies.get(n.requested.identHash))!=null?E:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g=="undefined")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(b=>{let R=e.storedPackages.get(b);if(typeof R=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let H=S.devirtualizeLocator(R),L=e.storedPackages.get(H.locatorHash);if(typeof L=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let K=L.peerDependencies.get(n.requested.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:R,peerDependency:K}});if(g!==null){let b=f.every(({peerDependency:R})=>qt.satisfiesWithPrereleases(g.version,R.range));o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} provides ${S.prettyLocator(i,g)} with version ${S.prettyReference(i,(B=g.version)!=null?B:"")}, which ${b?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} doesn't provide ${S.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ue.mark(i),p=[];for(let{pkg:b,peerDependency:R}of de.sortMap(f,H=>S.stringifyLocator(H.pkg))){let L=(g!==null?qt.satisfiesWithPrereleases(g.version,R.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:S.stringifyLocator(b),prettyLocator:S.prettyLocator(i,b),prettyRange:S.prettyRange(i,R.range),mark:L})}let d=Math.max(...p.map(({stringifiedLocator:b})=>b.length)),m=Math.max(...p.map(({prettyRange:b})=>b.length));for(let{stringifiedLocator:b,prettyLocator:R,prettyRange:H,mark:L}of de.sortMap(p,({stringifiedLocator:K})=>K))o.reportInfo(null,`${R.padEnd(d+(R.length-b.length)," ")} \u2192 ${H.padEnd(m," ")} ${L}`);p.length>1&&(o.reportSeparator(),o.reportInfo(z.UNNAMED,`Note: these requirements start with ${S.prettyLocator(e.configuration,l)}`))})).exitCode()}var Jae=ie(Nn()),yC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=Y.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=Y.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=Y.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=Y.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=Y.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=Y.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i&&!this.all)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=new Set(this.extra);this.cache&&s.add("cache"),this.dependents&&s.add("dependents"),this.manifest&&s.add("manifest");let o=(b,{recursive:R})=>{let H=b.anchoredLocator.locatorHash,L=new Map,K=[H];for(;K.length>0;){let J=K.shift();if(L.has(J))continue;let ne=r.storedPackages.get(J);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the package to be registered");if(L.set(J,ne),S.isVirtualLocator(ne)&&K.push(S.devirtualizeLocator(ne).locatorHash),!(!R&&J!==H))for(let q of ne.dependencies.values()){let A=r.storedResolutions.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");K.push(A)}}return L.values()},a=({recursive:b})=>{let R=new Map;for(let H of r.workspaces)for(let L of o(H,{recursive:b}))R.set(L.locatorHash,L);return R.values()},l=({all:b,recursive:R})=>b&&R?r.storedPackages.values():b?a({recursive:R}):o(i,{recursive:R}),c=({all:b,recursive:R})=>{let H=l({all:b,recursive:R}),L=this.patterns.map(ne=>{let q=S.parseLocator(ne),A=Jae.default.makeRe(S.stringifyIdent(q)),V=S.isVirtualLocator(q),W=V?S.devirtualizeLocator(q):q;return X=>{let F=S.stringifyIdent(X);if(!A.test(F))return!1;if(q.reference==="unknown")return!0;let D=S.isVirtualLocator(X),he=D?S.devirtualizeLocator(X):X;return!(V&&D&&q.reference!==X.reference||W.reference!==he.reference)}}),K=de.sortMap([...H],ne=>S.stringifyLocator(ne));return{selection:K.filter(ne=>L.length===0||L.some(q=>q(ne))),sortedLookup:K}},{selection:u,sortedLookup:g}=c({all:this.all,recursive:this.recursive});if(u.length===0)throw new me("No package matched your request");let f=new Map;if(this.dependents)for(let b of g)for(let R of b.dependencies.values()){let H=r.storedResolutions.get(R.descriptorHash);if(typeof H=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");de.getArrayWithDefault(f,H).push(b)}let h=new Map;for(let b of g){if(!S.isVirtualLocator(b))continue;let R=S.devirtualizeLocator(b);de.getArrayWithDefault(h,R.locatorHash).push(b)}let p={},d={children:p},m=e.makeFetcher(),E={project:r,fetcher:m,cache:n,checksums:r.storedChecksums,report:new ei,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},B=[async(b,R,H)=>{var J,ne;if(!R.has("manifest"))return;let L=await m.fetch(b,E),K;try{K=await Ze.find(L.prefixPath,{baseFs:L.packageFs})}finally{(J=L.releaseFs)==null||J.call(L)}H("Manifest",{License:ue.tuple(ue.Type.NO_HINT,K.license),Homepage:ue.tuple(ue.Type.URL,(ne=K.raw.homepage)!=null?ne:null)})},async(b,R,H)=>{var A;if(!R.has("cache"))return;let L={mockedPackages:r.disabledLocators,unstablePackages:r.conditionalLocators},K=(A=r.storedChecksums.get(b.locatorHash))!=null?A:null,J=n.getLocatorPath(b,K,L),ne;if(J!==null)try{ne=T.statSync(J)}catch{}let q=typeof ne!="undefined"?[ne.size,ue.Type.SIZE]:void 0;H("Cache",{Checksum:ue.tuple(ue.Type.NO_HINT,K),Path:ue.tuple(ue.Type.PATH,J),Size:q})}];for(let b of u){let R=S.isVirtualLocator(b);if(!this.virtuals&&R)continue;let H={},L={value:[b,ue.Type.LOCATOR],children:H};if(p[S.stringifyLocator(b)]=L,this.nameOnly){delete L.children;continue}let K=h.get(b.locatorHash);typeof K!="undefined"&&(H.Instances={label:"Instances",value:ue.tuple(ue.Type.NUMBER,K.length)}),H.Version={label:"Version",value:ue.tuple(ue.Type.NO_HINT,b.version)};let J=(q,A)=>{let V={};if(H[q]=V,Array.isArray(A))V.children=A.map(W=>({value:W}));else{let W={};V.children=W;for(let[X,F]of Object.entries(A))typeof F!="undefined"&&(W[X]={label:X,value:F})}};if(!R){for(let q of B)await q(b,s,J);await e.triggerHook(q=>q.fetchPackageInfo,b,s,J)}b.bin.size>0&&!R&&J("Exported Binaries",[...b.bin.keys()].map(q=>ue.tuple(ue.Type.PATH,q)));let ne=f.get(b.locatorHash);typeof ne!="undefined"&&ne.length>0&&J("Dependents",ne.map(q=>ue.tuple(ue.Type.LOCATOR,q))),b.dependencies.size>0&&!R&&J("Dependencies",[...b.dependencies.values()].map(q=>{var W;let A=r.storedResolutions.get(q.descriptorHash),V=typeof A!="undefined"&&(W=r.storedPackages.get(A))!=null?W:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:V})})),b.peerDependencies.size>0&&R&&J("Peer dependencies",[...b.peerDependencies.values()].map(q=>{var X,F;let A=b.dependencies.get(q.identHash),V=typeof A!="undefined"&&(X=r.storedResolutions.get(A.descriptorHash))!=null?X:null,W=V!==null&&(F=r.storedPackages.get(V))!=null?F:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:W})}))}Hs.emitTree(d,{configuration:e,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};yC.paths=[["info"]],yC.usage=ye.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});var Wae=yC;var W0=ie(ml());Ss();var wC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=Y.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=Y.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.checkCache=Y.Boolean("--check-cache",!1,{description:"Always refetch the packages and ensure that their checksums are consistent"});this.inlineBuilds=Y.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.cacheFolder=Y.String("--cache-folder",{hidden:!0});this.frozenLockfile=Y.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=Y.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=Y.Boolean("--non-interactive",{hidden:!0});this.preferOffline=Y.Boolean("--prefer-offline",{hidden:!0});this.production=Y.Boolean("--production",{hidden:!0});this.registry=Y.String("--registry",{hidden:!0});this.silent=Y.Boolean("--silent",{hidden:!0});this.networkTimeout=Y.String("--network-timeout",{hidden:!0})}async execute(){var c;let e=await fe.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds!="undefined"&&e.useWithSource("",{enableInlineBuilds:this.inlineBuilds},e.startingCwd,{overwrite:!0});let r=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,i=async(u,{error:g})=>{let f=await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async h=>{g?h.reportError(z.DEPRECATED_CLI_SETTINGS,u):h.reportWarning(z.DEPRECATED_CLI_SETTINGS,u)});return f.hasErrors()?f.exitCode():null};if(typeof this.ignoreEngines!="undefined"){let u=await i("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.registry!="undefined"){let u=await i("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(u!==null)return u}if(typeof this.preferOffline!="undefined"){let u=await i("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.production!="undefined"){let u=await i("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(u!==null)return u}if(typeof this.nonInteractive!="undefined"){let u=await i("The --non-interactive option is deprecated",{error:!r});if(u!==null)return u}if(typeof this.frozenLockfile!="undefined"&&(await i("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder!="undefined"){let u=await i("The cache-folder option has been deprecated; use rc settings instead",{error:!W0.default.NETLIFY});if(u!==null)return u}let n=(c=this.immutable)!=null?c:e.get("enableImmutableInstalls");if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{await Yze(e,n)&&(g.reportInfo(z.AUTOMERGE_SUCCESS,"Automatically fixed merge conflicts \u{1F44D}"),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}if(e.projectCwd!==null&&typeof e.sources.get("nodeLinker")=="undefined"){let u=e.projectCwd,g;try{g=await T.readFilePromise(v.join(u,wt.lockfile),"utf8")}catch{}if(g==null?void 0:g.includes("yarn lockfile v1")){let f=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async h=>{h.reportInfo(z.AUTO_NM_SUCCESS,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),h.reportSeparator(),e.use("",{nodeLinker:"node-modules"},u,{overwrite:!0}),await fe.updateConfiguration(u,{nodeLinker:"node-modules"})});if(f.hasErrors())return f.exitCode()}}if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{var f;((f=fe.telemetry)==null?void 0:f.isNew)&&(g.reportInfo(z.TELEMETRY_NOTICE,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),g.reportInfo(z.TELEMETRY_NOTICE,`Run ${ue.pretty(e,"yarn config set --home enableTelemetry 0",ue.Type.CODE)} to disable`),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}let{project:s,workspace:o}=await Ke.find(e,this.context.cwd),a=await Qt.find(e,{immutable:this.immutableCache,check:this.checkCache});if(!o)throw new rt(s.cwd,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!0},async u=>{await s.install({cache:a,report:u,immutable:n,mode:this.mode})})).exitCode()}};wC.paths=[["install"],ye.Default],wC.usage=ye.Usage({description:"install the project dependencies",details:` - This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics: - - - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ). - - - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of \`cacheFolder\` in \`yarn config\` to see where the cache files are stored). - - - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know). - - - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail. - - Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches. - - If the \`--immutable\` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the \`immutablePatterns\` configuration setting). For backward compatibility we offer an alias under the name of \`--frozen-lockfile\`, but it will be removed in a later release. - - If the \`--immutable-cache\` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed). - - If the \`--check-cache\` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them. - - If the \`--inline-builds\` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - `,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var zae=wC,qze="|||||||",Jze=">>>>>>>",Wze="=======",Vae="<<<<<<<";async function Yze(t,e){if(!t.projectCwd)return!1;let r=v.join(t.projectCwd,t.get("lockfileFilename"));if(!await T.existsPromise(r))return!1;let i=await T.readFilePromise(r,"utf8");if(!i.includes(Vae))return!1;if(e)throw new nt(z.AUTOMERGE_IMMUTABLE,"Cannot autofix a lockfile when running an immutable install");let[n,s]=zze(i),o,a;try{o=Ei(n),a=Ei(s)}catch(c){throw new nt(z.AUTOMERGE_FAILED_TO_PARSE,"The individual variants of the lockfile failed to parse")}let l=P(P({},o),a);for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await T.changeFilePromise(r,Qa(l),{automaticNewlines:!0}),!0}function zze(t){let e=[[],[]],r=t.split(/\r?\n/g),i=!1;for(;r.length>0;){let n=r.shift();if(typeof n=="undefined")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(Vae)){for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s===Wze){i=!1;break}else if(i||s.startsWith(qze)){i=!0;continue}else e[0].push(s)}for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(Jze))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(` -`),e[1].join(` -`)]}var BC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=Y.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=Y.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=v.resolve(this.context.cwd,M.toPortablePath(this.destination)),o=await fe.find(s,this.context.plugins,{useRc:!1,strict:!1}),{project:a,workspace:l}=await Ke.find(o,s);if(r.cwd===a.cwd)throw new me("Invalid destination; Can't link the project to itself");if(!l)throw new rt(a.cwd,s);let c=r.topLevelWorkspace,u=[];if(this.all){for(let f of a.workspaces)f.manifest.name&&(!f.manifest.private||this.private)&&u.push(f);if(u.length===0)throw new me("No workspace found to be linked in the target project")}else{if(!l.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be linked");if(l.manifest.private&&!this.private)throw new me("The target workspace is marked private - use the --private flag to link it anyway");u.push(l)}for(let f of u){let h=S.stringifyIdent(f.locator),p=this.relative?v.relative(r.cwd,f.cwd):f.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${p}`})}return(await Fe.start({configuration:e,stdout:this.context.stdout},async f=>{await r.install({cache:n,report:f})})).exitCode()}};BC.paths=[["link"]],BC.usage=ye.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var _ae=BC;var QC=class extends Be{constructor(){super(...arguments);this.args=Y.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};QC.paths=[["node"]],QC.usage=ye.Usage({description:"run node with the hook already setup",details:` - This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - - The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. - `,examples:[["Run a Node script","$0 node ./my-script.js"]]});var Xae=QC;var lAe=ie(require("os"));var rAe=ie(require("os"));var Vze="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Kc(t){let e=await Zt.get(Vze,{configuration:t});return Ei(e.toString())}var bC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{let n=await Kc(e);for(let s of Object.entries(n)){let[l,o]=s,a=o,{experimental:c}=a,u=qr(a,["experimental"]);let g=l;c&&(g+=" [experimental]"),i.reportJson(P({name:l,experimental:c},u)),i.reportInfo(null,g)}})).exitCode()}};bC.paths=[["plugin","list"]],bC.usage=ye.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var Zae=bC;var $ae=ie(Or()),vC=class extends Be{constructor(){super(...arguments);this.onlyIfNeeded=Y.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);if(e.get("yarnPath")&&this.onlyIfNeeded)return 0;let r=()=>{if(typeof Zr=="undefined")throw new me("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},i;if(this.version==="self")i=r();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")i=`https://repo.yarnpkg.com/${await eAe(e,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")i=`https://repo.yarnpkg.com/${await eAe(e,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")i="https://nightly.yarnpkg.com/latest.js";else if(this.version.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.version))i=`file://${M.resolve(this.version)}`;else if(qt.satisfiesWithPrereleases(this.version,">=2.0.0"))i=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(qt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))i=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(qt.validRange(this.version))i=`https://repo.yarnpkg.com/${await _ze(e,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new me(`Invalid version descriptor "${this.version}"`);return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async s=>{let o="file://",a;i.startsWith(o)?(s.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,i,ps.URL)}`),a=await T.readFilePromise(M.toPortablePath(i.slice(o.length)))):(s.reportInfo(z.UNNAMED,`Retrieving ${ue.pretty(e,i,ps.PATH)}`),a=await Zt.get(i,{configuration:e})),await XN(e,null,a,{report:s})})).exitCode()}};vC.paths=[["set","version"]],vC.usage=ye.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Download the version used to invoke the command","$0 set version self"]]});var tAe=vC;async function _ze(t,e){let i=(await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(n=>qt.satisfiesWithPrereleases(n,e));if(i.length===0)throw new me(`No matching release found for range ${ue.pretty(t,e,ue.Type.RANGE)}.`);return i[0]}async function eAe(t,e){let r=await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new me(`Tag ${ue.pretty(t,e,ue.Type.RANGE)} not found`);return r.latest[e]}async function XN(t,e,r,{report:i}){var g;e===null&&await T.mktempPromise(async f=>{let h=v.join(f,"yarn.cjs");await T.writeFilePromise(h,r);let{stdout:p}=await hr.execvp(process.execPath,[M.fromPortablePath(h),"--version"],{cwd:f,env:_(P({},process.env),{YARN_IGNORE_PATH:"1"})});if(e=p.trim(),!$ae.default.valid(e))throw new Error(`Invalid semver version. ${ue.pretty(t,"yarn --version",ue.Type.CODE)} returned: -${e}`)});let n=(g=t.projectCwd)!=null?g:t.startingCwd,s=v.resolve(n,".yarn/releases"),o=v.resolve(s,`yarn-${e}.cjs`),a=v.relative(t.startingCwd,o),l=v.relative(n,o),c=t.get("yarnPath"),u=c===null||c.startsWith(`${s}/`);if(i.reportInfo(z.UNNAMED,`Saving the new release in ${ue.pretty(t,a,"magenta")}`),await T.removePromise(v.dirname(o)),await T.mkdirPromise(v.dirname(o),{recursive:!0}),await T.writeFilePromise(o,r,{mode:493}),u){await fe.updateConfiguration(n,{yarnPath:l});let f=await Ze.tryFind(n)||new Ze;e&&de.isTaggedYarnVersion(e)&&(f.packageManager=`yarn@${e}`);let h={};f.exportTo(h);let p=v.join(n,Ze.fileName),d=`${JSON.stringify(h,null,f.indent)} -`;await T.changeFilePromise(p,d,{automaticNewlines:!0})}}var Xze=/^[0-9]+$/;function iAe(t){return Xze.test(t)?`pull/${t}/head`:t}var Zze=({repository:t,branch:e},r)=>[["git","init",M.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin",iAe(e)],["git","reset","--hard","FETCH_HEAD"]],$ze=({branch:t})=>[["git","fetch","origin",iAe(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],e4e=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(i=>["--plugin",v.resolve(r,i)])),...e?["--no-minify"]:[],"|"]],SC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=Y.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=Y.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,rAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{await $N(this,{configuration:e,report:s,target:i}),s.reportSeparator(),s.reportInfo(z.UNNAMED,"Building a fresh bundle"),s.reportSeparator(),await xC(e4e(this,i),{configuration:e,context:this.context,target:i}),s.reportSeparator();let o=v.resolve(i,"packages/yarnpkg-cli/bundles/yarn.js"),a=await T.readFilePromise(o);await XN(e,"sources",a,{report:s}),this.skipPlugins||await t4e(this,{project:r,report:s,target:i})})).exitCode()}};SC.paths=[["set","version","from","sources"]],SC.usage=ye.Usage({description:"build Yarn from master",details:` - This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. - - By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. - `,examples:[["Build Yarn from master","$0 set version from sources"]]});var nAe=SC;async function xC(t,{configuration:e,context:r,target:i}){for(let[n,...s]of t){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await hr.pipevp(n,s,{cwd:i,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ue.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")} -`);try{await hr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw r.stdout.write(a.stdout||a.stack),a}}}}async function $N(t,{configuration:e,report:r,target:i}){let n=!1;if(!t.force&&T.existsSync(v.join(i,".git"))){r.reportInfo(z.UNNAMED,"Fetching the latest commits"),r.reportSeparator();try{await xC($ze(t),{configuration:e,context:t.context,target:i}),n=!0}catch(s){r.reportSeparator(),r.reportWarning(z.UNNAMED,"Repository update failed; we'll try to regenerate it")}}n||(r.reportInfo(z.UNNAMED,"Cloning the remote repository"),r.reportSeparator(),await T.removePromise(i),await T.mkdirPromise(i,{recursive:!0}),await xC(Zze(t,i),{configuration:e,context:t.context,target:i}))}async function t4e(t,{project:e,report:r,target:i}){let n=await Kc(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await ZN(o,t,{project:e,report:r,target:i})}var sAe=ie(Or()),oAe=ie(require("url")),aAe=ie(require("vm"));var kC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,stdout:this.context.stdout},async i=>{let{project:n}=await Ke.find(e,this.context.cwd),s,o;if(this.name.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.name)){let a=v.resolve(this.context.cwd,M.toPortablePath(this.name));i.reportInfo(z.UNNAMED,`Reading ${ue.pretty(e,a,ue.Type.PATH)}`),s=v.relative(n.cwd,a),o=await T.readFilePromise(a)}else{let a;if(this.name.match(/^https?:/)){try{new oAe.URL(this.name)}catch{throw new nt(z.INVALID_PLUGIN_REFERENCE,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}s=this.name,a=this.name}else{let l=S.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(l.reference!=="unknown"&&!sAe.default.valid(l.reference))throw new nt(z.UNNAMED,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let c=S.stringifyIdent(l),u=await Kc(e);if(!Object.prototype.hasOwnProperty.call(u,c))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${c}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);s=c,a=u[c].url,l.reference!=="unknown"?a=a.replace(/\/master\//,`/${c}/${l.reference}/`):Zr!==null&&(a=a.replace(/\/master\//,`/@yarnpkg/cli/${Zr}/`))}i.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,a,"green")}`),o=await Zt.get(a,{configuration:e})}await eL(s,o,{project:n,report:i})})).exitCode()}};kC.paths=[["plugin","import"]],kC.usage=ye.Usage({category:"Plugin-related commands",description:"download a plugin",details:` - This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. - - Three types of plugin references are accepted: - - - If the plugin is stored within the Yarn repository, it can be referenced by name. - - Third-party plugins can be referenced directly through their public urls. - - Local plugins can be referenced by their path on the disk. - - Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). - `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});var AAe=kC;async function eL(t,e,{project:r,report:i}){let{configuration:n}=r,s={},o={exports:s};(0,aAe.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=v.resolve(r.cwd,l);i.reportInfo(z.UNNAMED,`Saving the new plugin in ${ue.pretty(n,l,"magenta")}`),await T.mkdirPromise(v.dirname(c),{recursive:!0}),await T.writeFilePromise(c,e);let u={path:l,spec:t};await fe.updateConfiguration(r.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let d=typeof p!="string"?p.path:p,m=v.resolve(r.cwd,M.toPortablePath(d)),{name:E}=de.dynamicRequire(m);E!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),_(P({},g),{plugins:f})})}var r4e=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],PC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,lAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let{project:s}=await Ke.find(e,this.context.cwd),o=S.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),a=S.stringifyIdent(o),l=await Kc(e);if(!Object.prototype.hasOwnProperty.call(l,a))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${a}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let c=a;await $N(this,{configuration:e,report:n,target:r}),await ZN(c,this,{project:s,report:n,target:r})})).exitCode()}};PC.paths=[["plugin","import","from","sources"]],PC.usage=ye.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` - This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. - - The plugins can be referenced by their short name if sourced from the official Yarn repository. - `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});var cAe=PC;async function ZN(t,{context:e,noMinify:r},{project:i,report:n,target:s}){let o=t.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo(z.UNNAMED,`Building a fresh ${o}`),n.reportSeparator(),await xC(r4e({pluginName:o,noMinify:r},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=v.resolve(s,`packages/${o}/bundles/${t}.js`),c=await T.readFilePromise(l);await eL(t,c,{project:i,report:n})}var DC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=this.name,o=S.parseIdent(s);if(!e.plugins.has(s))throw new me(`${S.prettyIdent(e,o)} isn't referenced by the current configuration`);let a=`.yarn/plugins/${s}.cjs`,l=v.resolve(r.cwd,a);T.existsSync(l)&&(n.reportInfo(z.UNNAMED,`Removing ${ue.pretty(e,a,ue.Type.PATH)}...`),await T.removePromise(l)),n.reportInfo(z.UNNAMED,"Updating the configuration..."),await fe.updateConfiguration(r.cwd,c=>{if(!Array.isArray(c.plugins))return c;let u=c.plugins.filter(g=>g.path!==a);return c.plugins.length===u.length?c:_(P({},c),{plugins:u})})})).exitCode()}};DC.paths=[["plugin","remove"]],DC.usage=ye.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` - This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. - - **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. - `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var uAe=DC;var RC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{for(let n of e.plugins.keys()){let s=this.context.plugins.plugins.has(n),o=n;s&&(o+=" [builtin]"),i.reportJson({name:n,builtin:s}),i.reportInfo(null,`${o}`)}})).exitCode()}};RC.paths=[["plugin","runtime"]],RC.usage=ye.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` - This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. - `,examples:[["List the currently active plugins","$0 plugin runtime"]]});var gAe=RC;var FC=class extends Be{constructor(){super(...arguments);this.idents=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=new Set;for(let a of this.idents)s.add(S.parseIdent(a).identHash);if(await r.restoreInstallState({restoreResolutions:!1}),await r.resolveEverything({cache:n,report:new ei}),s.size>0)for(let a of r.storedPackages.values())s.has(a.identHash)&&r.storedBuildState.delete(a.locatorHash);else r.storedBuildState.clear();return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{await r.install({cache:n,report:a})})).exitCode()}};FC.paths=[["rebuild"]],FC.usage=ye.Usage({description:"rebuild the project's native packages",details:` - This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. - - Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). - - By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. - `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var fAe=FC;var tL=ie(Nn());Ss();var NC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=this.all?r.workspaces:[i],o=[vr.REGULAR,vr.DEVELOPMENT,vr.PEER],a=[],l=!1,c=[];for(let h of this.patterns){let p=!1,d=S.parseIdent(h);for(let m of s){let E=[...m.manifest.peerDependenciesMeta.keys()];for(let B of(0,tL.default)(E,h))m.manifest.peerDependenciesMeta.delete(B),l=!0,p=!0;for(let B of o){let b=m.manifest.getForScope(B),R=[...b.values()].map(H=>S.stringifyIdent(H));for(let H of(0,tL.default)(R,S.stringifyIdent(d))){let{identHash:L}=S.parseIdent(H),K=b.get(L);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");m.manifest[B].delete(L),c.push([m,B,K]),l=!0,p=!0}}}p||a.push(h)}let u=a.length>1?"Patterns":"Pattern",g=a.length>1?"don't":"doesn't",f=this.all?"any":"this";if(a.length>0)throw new me(`${u} ${ue.prettyList(e,a,ps.CODE)} ${g} match any packages referenced by ${f} workspace`);return l?(await e.triggerMultipleHooks(p=>p.afterWorkspaceDependencyRemoval,c),(await Fe.start({configuration:e,stdout:this.context.stdout},async p=>{await r.install({cache:n,report:p,mode:this.mode})})).exitCode()):0}};NC.paths=[["remove"]],NC.usage=ye.Usage({description:"remove dependencies from the project",details:` - This command will remove the packages matching the specified patterns from the current workspace. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - - This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. - `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var hAe=NC;var pAe=ie(require("util")),z0=class extends Be{async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=de.sortMap(o.keys(),u=>u),l={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,pAe.inspect)(g,l)}`)})).exitCode()}};z0.paths=[["run"]];var dAe=z0;var LC=class extends Be{constructor(){super(...arguments);this.inspect=Y.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=Y.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=Y.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=Y.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=Y.Boolean("--silent",{hidden:!0});this.scriptName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i,locator:n}=await Ke.find(e,this.context.cwd);await r.restoreInstallState();let s=this.topLevel?r.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Kt.hasPackageScript(s,this.scriptName,{project:r}))return await Kt.executePackageScript(s,this.scriptName,this.args,{project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let o=await Kt.getPackageAccessibleBinaries(s,{project:r});if(o.get(this.scriptName)){let l=[];return this.inspect&&(typeof this.inspect=="string"?l.push(`--inspect=${this.inspect}`):l.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?l.push(`--inspect-brk=${this.inspectBrk}`):l.push("--inspect-brk")),await Kt.executePackageAccessibleBinary(s,this.scriptName,this.args,{cwd:this.context.cwd,project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:l,packageAccessibleBinaries:o})}if(!this.topLevel&&!this.binariesOnly&&i&&this.scriptName.includes(":")){let c=(await Promise.all(r.workspaces.map(async u=>u.manifest.scripts.has(this.scriptName)?u:null))).filter(u=>u!==null);if(c.length===1)return await Kt.executeWorkspaceScript(c[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}).`);{if(this.scriptName==="global")throw new me("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let l=[this.scriptName].concat(this.args);for(let[c,u]of Yg)for(let g of u)if(l.length>=g.length&&JSON.stringify(l.slice(0,g.length))===JSON.stringify(g))throw new me(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${c} plugin. You can install it with "yarn plugin import ${c}".`);throw new me(`Couldn't find a script named "${this.scriptName}".`)}}};LC.paths=[["run"]],LC.usage=ye.Usage({description:"run a script defined in the package.json",details:` - This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - - - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. - - - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. - - - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. - - Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). - `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var CAe=LC;var TC=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=Y.String();this.resolution=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(await r.restoreInstallState({restoreResolutions:!1}),!i)throw new rt(r.cwd,this.context.cwd);let s=S.parseDescriptor(this.descriptor,!0),o=S.makeDescriptor(s,this.resolution);return r.storedDescriptors.set(s.descriptorHash,s),r.storedDescriptors.set(o.descriptorHash,o),r.resolutionAliases.set(s.descriptorHash,o.descriptorHash),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};TC.paths=[["set","resolution"]],TC.usage=ye.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var mAe=TC;var IAe=ie(Nn()),MC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=r.topLevelWorkspace,o=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:l,reference:c}of s.manifest.resolutions)c.startsWith("portal:")&&o.add(l.descriptor.fullName);if(this.leadingArguments.length>0)for(let l of this.leadingArguments){let c=v.resolve(this.context.cwd,M.toPortablePath(l));if(de.isPathLike(l)){let u=await fe.find(c,this.context.plugins,{useRc:!1,strict:!1}),{project:g,workspace:f}=await Ke.find(u,c);if(!f)throw new rt(g.cwd,c);if(this.all){for(let h of g.workspaces)h.manifest.name&&o.add(S.stringifyIdent(h.locator));if(o.size===0)throw new me("No workspace found to be unlinked in the target project")}else{if(!f.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be unlinked");o.add(S.stringifyIdent(f.locator))}}else{let u=[...s.manifest.resolutions.map(({pattern:g})=>g.descriptor.fullName)];for(let g of(0,IAe.default)(u,l))o.add(g)}}return s.manifest.resolutions=s.manifest.resolutions.filter(({pattern:l})=>!o.has(l.descriptor.fullName)),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};MC.paths=[["unlink"]],MC.usage=ye.Usage({description:"disconnect the local project from another one",details:` - This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. - `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var EAe=MC;var yAe=ie(aC()),rL=ie(Nn());Ss();var uf=class extends Be{constructor(){super(...arguments);this.interactive=Y.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=[...r.storedDescriptors.values()],o=s.map(u=>S.stringifyIdent(u)),a=new Set;for(let u of this.patterns){if(S.parseDescriptor(u).range!=="unknown")throw new me("Ranges aren't allowed when using --recursive");for(let g of(0,rL.default)(o,u)){let f=S.parseIdent(g);a.add(f.identHash)}}let l=s.filter(u=>a.has(u.identHash));for(let u of l)r.storedDescriptors.delete(u.descriptorHash),r.storedResolutions.delete(u.descriptorHash);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{await r.install({cache:n,report:u})})).exitCode()}async executeUpClassic(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=s?[Fr.KEEP,Fr.REUSE,Fr.PROJECT,Fr.LATEST]:[Fr.PROJECT,Fr.LATEST],l=[],c=[];for(let m of this.patterns){let E=!1,B=S.parseDescriptor(m);for(let b of r.workspaces)for(let R of[vr.REGULAR,vr.DEVELOPMENT]){let L=[...b.manifest.getForScope(R).values()].map(K=>S.stringifyIdent(K));for(let K of(0,rL.default)(L,S.stringifyIdent(B))){let J=S.parseIdent(K),ne=b.manifest[R].get(J.identHash);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");let q=S.makeDescriptor(J,B.range);l.push(Promise.resolve().then(async()=>[b,R,ne,await lC(q,{project:r,workspace:b,cache:n,target:R,modifier:o,strategies:a})])),E=!0}}E||c.push(m)}if(c.length>1)throw new me(`Patterns ${ue.prettyList(e,c,ps.CODE)} don't match any packages referenced by any workspace`);if(c.length>0)throw new me(`Pattern ${ue.prettyList(e,c,ps.CODE)} doesn't match any packages referenced by any workspace`);let u=await Promise.all(l),g=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[,,E,{suggestions:B,rejections:b}]of u){let R=B.filter(H=>H.descriptor!==null);if(R.length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");let L=this.cli.error(H);r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range - -${L}`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range (note: network resolution has been disabled) - -${L}`)}else R.length>1&&!s&&m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[];for(let[m,E,,{suggestions:B}]of u){let b,R=B.filter(J=>J.descriptor!==null),H=R[0].descriptor,L=R.every(J=>S.areDescriptorsEqual(J.descriptor,H));R.length===1||L?b=H:(f=!0,{answer:b}=await(0,yAe.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${S.prettyWorkspace(e,m)} \u276F ${E}?`,choices:B.map(({descriptor:J,name:ne,reason:q})=>J?{name:ne,hint:q,descriptor:J}:{name:ne,hint:q,disabled:!0}),onCancel:()=>process.exit(130),result(J){return this.find(J,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let K=m.manifest[E].get(b.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: This descriptor should have a matching entry");if(K.descriptorHash!==b.descriptorHash)m.manifest[E].set(b.identHash,b),h.push([m,E,K,b]);else{let J=e.makeResolver(),ne={project:r,resolver:J},q=J.bindDescriptor(K,m.anchoredLocator,ne);r.forgetResolution(q)}}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),f&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,stdout:this.context.stdout},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};uf.paths=[["up"]],uf.usage=ye.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),uf.schema=[pv("recursive",Bl.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var wAe=uf;var OC=class extends Be{constructor(){super(...arguments);this.recursive=Y.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=Y.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=S.parseIdent(this.package).identHash,s=this.recursive?n4e(r,n,{configuration:e,peers:this.peers}):i4e(r,n,{configuration:e,peers:this.peers});Hs.emitTree(s,{configuration:e,stdout:this.context.stdout,json:this.json,separators:1})}};OC.paths=[["why"]],OC.usage=ye.Usage({description:"display the reason why a package is needed",details:` - This command prints the exact reasons why a package appears in the dependency tree. - - If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. - `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});var BAe=OC;function i4e(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.storedPackages.values(),a=>S.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={},c=null;for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=t.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=t.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;if(c===null){let p=S.stringifyLocator(a);s[p]={value:[a,ue.Type.LOCATOR],children:l}}let h=S.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ue.Type.DEPENDENT]}}}return o}function n4e(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.workspaces,f=>S.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let d=t.storedResolutions.get(p.descriptorHash);if(!d)throw new Error("Assertion failed: The resolution should have been registered");let m=t.storedPackages.get(d);if(!m)throw new Error("Assertion failed: The package should have been registered");a(m)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let d=p!==null?ue.tuple(ue.Type.DEPENDENT,{locator:f,descriptor:p}):ue.tuple(ue.Type.LOCATOR,f),m={},E={value:d,children:m},B=S.stringifyLocator(f);if(h[B]=E,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&t.tryWorkspaceByLocator(f))))for(let b of f.dependencies.values()){if(!i&&f.peerDependencies.has(b.identHash))continue;let R=t.storedResolutions.get(b.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let H=t.storedPackages.get(R);if(!H)throw new Error("Assertion failed: The package should have been registered");g(H,m,b)}};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var fL={};it(fL,{default:()=>w4e,gitUtils:()=>Uc});var Uc={};it(Uc,{TreeishProtocols:()=>vn,clone:()=>cL,fetchBase:()=>jAe,fetchChangedFiles:()=>YAe,fetchChangedWorkspaces:()=>E4e,fetchRoot:()=>GAe,isGitUrl:()=>ff,lsRemote:()=>HAe,normalizeLocator:()=>AL,normalizeRepoUrl:()=>KC,resolveUrl:()=>lL,splitRepoUrl:()=>UC});var oL=ie(OAe()),gf=ie(require("querystring")),aL=ie(Or()),KAe=ie(require("url"));function UAe(){return _(P({},process.env),{GIT_SSH_COMMAND:"ssh -o BatchMode=yes"})}var I4e=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],vn;(function(n){n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver"})(vn||(vn={}));function ff(t){return t?I4e.some(e=>!!t.match(e)):!1}function UC(t){t=KC(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:vn.Head,request:"HEAD"},extra:{}};let r=t.slice(0,e),i=t.slice(e+1);if(i.match(/^[a-z]+=/)){let n=gf.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(vn).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s!="undefined"?(o=s,a=n[s]):(o=vn.Head,a="HEAD");for(let l of Object.values(vn))delete n[l];return{repo:r,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:r,treeish:{protocol:s,request:o},extra:{}}}}function KC(t,{git:e=!1}={}){var r;if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){t=t.replace(/^git\+([^:]+):/,"$1:");let i;try{i=KAe.default.parse(t)}catch{i=null}i&&i.protocol==="ssh:"&&((r=i.path)==null?void 0:r.startsWith("/:"))&&(t=t.replace(/^ssh:\/\//,""))}return t}function AL(t){return S.makeLocator(t,KC(t.reference))}async function HAe(t,e){let r=KC(t,{git:!0});if(!Zt.getNetworkSettings(`https://${(0,oL.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Error(`Request to '${r}' has been blocked because of your configuration settings`);let n;try{n=await hr.execvp("git",["ls-remote",r],{cwd:e.startingCwd,env:UAe(),strict:!0})}catch(l){throw l.message=`Listing the refs for ${t} failed`,l}let s=new Map,o=/^([a-f0-9]{40})\t([^\n]+)/gm,a;for(;(a=o.exec(n.stdout))!==null;)s.set(a[2],a[1]);return s}async function lL(t,e){let{repo:r,treeish:{protocol:i,request:n},extra:s}=UC(t),o=await HAe(r,e),a=(c,u)=>{switch(c){case vn.Commit:{if(!u.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return gf.default.stringify(_(P({},s),{commit:u}))}case vn.Head:{let g=o.get(u==="HEAD"?u:`refs/heads/${u}`);if(typeof g=="undefined")throw new Error(`Unknown head ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Tag:{let g=o.get(`refs/tags/${u}`);if(typeof g=="undefined")throw new Error(`Unknown tag ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Semver:{let g=qt.validRange(u);if(!g)throw new Error(`Invalid range ("${u}")`);let f=new Map([...o.entries()].filter(([p])=>p.startsWith("refs/tags/")).map(([p,d])=>[aL.default.parse(p.slice(10)),d]).filter(p=>p[0]!==null)),h=aL.default.maxSatisfying([...f.keys()],g);if(h===null)throw new Error(`No matching range ("${u}")`);return gf.default.stringify(_(P({},s),{commit:f.get(h)}))}case null:{let g;if((g=l(vn.Commit,u))!==null||(g=l(vn.Tag,u))!==null||(g=l(vn.Head,u))!==null)return g;throw u.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${c}")`)}},l=(c,u)=>{try{return a(c,u)}catch(g){return null}};return`${r}#${a(i,n)}`}async function cL(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:i,request:n}}=UC(t);if(i!=="commit")throw new Error("Invalid treeish protocol when cloning");let s=KC(r,{git:!0});if(Zt.getNetworkSettings(`https://${(0,oL.default)(s).resource}`,{configuration:e}).enableNetwork===!1)throw new Error(`Request to '${s}' has been blocked because of your configuration settings`);let o=await T.mktempPromise(),a={cwd:o,env:UAe(),strict:!0};try{await hr.execvp("git",["clone","-c core.autocrlf=false",s,M.fromPortablePath(o)],a),await hr.execvp("git",["checkout",`${n}`],a)}catch(l){throw l.message=`Repository clone failed: ${l.message}`,l}return o})}async function GAe(t){let e=null,r,i=t;do r=i,await T.existsPromise(v.join(r,".git"))&&(e=r),i=v.dirname(r);while(e===null&&i!==r);return e}async function jAe(t,{baseRefs:e}){if(e.length===0)throw new me("Can't run this command with zero base refs specified.");let r=[];for(let a of e){let{code:l}=await hr.execvp("git",["merge-base",a,"HEAD"],{cwd:t});l===0&&r.push(a)}if(r.length===0)throw new me(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:i}=await hr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),n=i.trim(),{stdout:s}=await hr.execvp("git",["show","--quiet","--pretty=format:%s",n],{cwd:t,strict:!0}),o=s.trim();return{hash:n,title:o}}async function YAe(t,{base:e,project:r}){let i=de.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:n}=await hr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),s=n.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),{stdout:o}=await hr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),a=o.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),l=[...new Set([...s,...a].sort())];return i?l.filter(c=>!v.relative(r.cwd,c).match(i)):l}async function E4e({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new me("This command can only be run from within a Yarn project");let r=[v.resolve(e.cwd,e.configuration.get("cacheFolder")),v.resolve(e.cwd,e.configuration.get("installStatePath")),v.resolve(e.cwd,e.configuration.get("lockfileFilename")),v.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(o=>o.populateYarnPaths,e,o=>{o!=null&&r.push(o)});let i=await GAe(e.configuration.projectCwd);if(i==null)throw new me("This command can only be run on Git repositories");let n=await jAe(i,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),s=await YAe(i,{base:n.hash,project:e});return new Set(de.mapAndFilter(s,o=>{let a=e.tryWorkspaceByFilePath(o);return a===null?de.mapAndFilter.skip:r.some(l=>o.startsWith(l))?de.mapAndFilter.skip:a}))}var uL=class{supports(e,r){return ff(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,n=AL(e),s=new Map(r.checksums);s.set(n.locatorHash,i);let o=_(P({},r),{checksums:s}),a=await this.downloadHosted(n,o);if(a!==null)return a;let[l,c,u]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(n,o),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:l,releaseFs:c,prefixPath:S.getIdentVendorPath(e),checksum:u}}async downloadHosted(e,r){return r.project.configuration.reduceHook(i=>i.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let i=await cL(e.reference,r.project.configuration),n=UC(e.reference),s=v.join(i,"package.tgz");await Kt.prepareExternalProject(i,s,{configuration:r.project.configuration,report:r.report,workspace:n.extra.workspace,locator:e});let o=await T.readFilePromise(s);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}))}};var gL=class{supportsDescriptor(e,r){return ff(e.range)}supportsLocator(e,r){return ff(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=await lL(e.range,i.project.configuration);return[S.makeLocator(e,n)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var y4e={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:ge.STRING,isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:ge.STRING,default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:ge.NUMBER,default:2}},fetchers:[uL],resolvers:[gL]};var w4e=y4e;var HC=class extends Be{constructor(){super(...arguments);this.since=Y.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async n=>{let s=this.since?await Uc.fetchChangedWorkspaces({ref:this.since,project:r}):r.workspaces,o=new Set(s);if(this.recursive)for(let a of[...s].map(l=>l.getRecursiveWorkspaceDependents()))for(let l of a)o.add(l);for(let a of o){let{manifest:l}=a,c;if(this.verbose){let u=new Set,g=new Set;for(let f of Ze.hardDependencies)for(let[h,p]of l.getForScope(f)){let d=r.tryWorkspaceByDescriptor(p);d===null?r.workspacesByIdent.has(h)&&g.add(p):u.add(d)}c={workspaceDependencies:Array.from(u).map(f=>f.relativeCwd),mismatchedWorkspaceDependencies:Array.from(g).map(f=>S.stringifyDescriptor(f))}}n.reportInfo(null,`${a.relativeCwd}`),n.reportJson(P({location:a.relativeCwd,name:l.name?S.stringifyIdent(l.name):null},c))}})).exitCode()}};HC.paths=[["workspaces","list"]],HC.usage=ye.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});var qAe=HC;var GC=class extends Be{constructor(){super(...arguments);this.workspaceName=Y.String();this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=r.workspaces,s=new Map(n.map(a=>{let l=S.convertToIdent(a.locator);return[S.stringifyIdent(l),a]})),o=s.get(this.workspaceName);if(o===void 0){let a=Array.from(s.keys()).sort();throw new me(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - - ${a.join(` - - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:o.cwd})}};GC.paths=[["workspace"]],GC.usage=ye.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` - This command will run a given sub-command on a single workspace. - `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var JAe=GC;var B4e={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:ge.BOOLEAN,default:WAe.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:ge.STRING,values:["^","~",""],default:Lo.CARET}},commands:[soe,aoe,wae,Nae,mAe,nAe,tAe,qAe,Uae,Hae,Gae,jae,ioe,noe,Lae,Mae,Yae,qae,Wae,zae,_ae,EAe,Xae,cAe,AAe,uAe,Zae,gAe,fAe,hAe,dAe,CAe,wAe,BAe,JAe]},Q4e=B4e;var mL={};it(mL,{default:()=>v4e});var Me={optional:!0},zAe=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Me}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Me,["postcss-jsx"]:Me,["postcss-less"]:Me,["postcss-markdown"]:Me,["postcss-scss"]:Me}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Me}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Me}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@*",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Me,"vue-template-compiler":Me}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Me,"utf-8-validate":Me}}],["react-portal@*",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@*",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@*",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me,"vuetify-loader":Me}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Me}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Me}}],["consolidate@*",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Me,tinyliquid:Me,"liquid-node":Me,jade:Me,"then-jade":Me,dust:Me,"dustjs-helpers":Me,"dustjs-linkedin":Me,swig:Me,"swig-templates":Me,"razor-tmpl":Me,atpl:Me,liquor:Me,twig:Me,ejs:Me,eco:Me,jazz:Me,jqtpl:Me,hamljs:Me,hamlet:Me,whiskers:Me,"haml-coffee":Me,"hogan.js":Me,templayed:Me,handlebars:Me,underscore:Me,lodash:Me,pug:Me,"then-pug":Me,qejs:Me,walrus:Me,mustache:Me,just:Me,ect:Me,mote:Me,toffee:Me,dot:Me,"bracket-template":Me,ractive:Me,nunjucks:Me,htmling:Me,"babel-core":Me,plates:Me,"react-dom":Me,react:Me,"arc-templates":Me,vash:Me,slm:Me,marko:Me,teacup:Me,"coffee-script":Me,squirrelly:Me,twing:Me}}],["vue-loader@<=16.3.1",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"}}],["scss-parser@*",{dependencies:{lodash:"^4.17.21"}}],["query-ast@*",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@*",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@*",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@*",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@*",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Me}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Me}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Me,"webpack-command":Me}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Me}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Me}}]];var pL;function VAe(){return typeof pL=="undefined"&&(pL=require("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),pL}var dL;function _Ae(){return typeof dL=="undefined"&&(dL=require("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),dL}var CL;function XAe(){return typeof CL=="undefined"&&(CL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),CL}var ZAe=new Map([[S.makeIdent(null,"fsevents").identHash,VAe],[S.makeIdent(null,"resolve").identHash,_Ae],[S.makeIdent(null,"typescript").identHash,XAe]]),b4e={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,i]of zAe)e(S.parseDescriptor(r,!0),i)},getBuiltinPatch:async(t,e)=>{var s;let r="compat/";if(!e.startsWith(r))return;let i=S.parseIdent(e.slice(r.length)),n=(s=ZAe.get(i.identHash))==null?void 0:s();return typeof n!="undefined"?n:null},reduceDependency:async(t,e,r,i)=>typeof ZAe.get(t.identHash)=="undefined"?t:S.makeDescriptor(t,S.makeRange({protocol:"patch:",source:S.stringifyDescriptor(t),selector:`~builtin`,params:null}))}},v4e=b4e;var IL={};it(IL,{default:()=>x4e});var V0=class extends Be{constructor(){super(...arguments);this.pkg=Y.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){let e=[];this.pkg&&e.push("--package",this.pkg),this.quiet&&e.push("--quiet");let r=S.parseIdent(this.command),i=S.makeIdent(r.scope,`create-${r.name}`);return this.cli.run(["dlx",...e,S.stringifyIdent(i),...this.args])}};V0.paths=[["create"]];var $Ae=V0;var jC=class extends Be{constructor(){super(...arguments);this.packages=Y.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){return fe.telemetry=null,await T.mktempPromise(async e=>{var p;let r=v.join(e,`dlx-${process.pid}`);await T.mkdirPromise(r),await T.writeFilePromise(v.join(r,"package.json"),`{} -`),await T.writeFilePromise(v.join(r,"yarn.lock"),"");let i=v.join(r,".yarnrc.yml"),n=await fe.findProjectCwd(this.context.cwd,wt.lockfile),s=!(await fe.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),o=n!==null?v.join(n,".yarnrc.yml"):null;o!==null&&T.existsSync(o)?(await T.copyFilePromise(o,i),await fe.updateConfiguration(r,d=>{let m=_(P({},d),{enableGlobalCache:s,enableTelemetry:!1});return Array.isArray(d.plugins)&&(m.plugins=d.plugins.map(E=>{let B=typeof E=="string"?E:E.path,b=M.isAbsolute(B)?B:M.resolve(M.fromPortablePath(n),B);return typeof E=="string"?b:{path:b,spec:E.spec}})),m})):await T.writeFilePromise(i,`enableGlobalCache: ${s} -enableTelemetry: false -`);let a=(p=this.packages)!=null?p:[this.command],l=S.parseDescriptor(this.command).name,c=await this.cli.run(["add","--",...a],{cwd:r,quiet:this.quiet});if(c!==0)return c;this.quiet||this.context.stdout.write(` -`);let u=await fe.find(r,this.context.plugins),{project:g,workspace:f}=await Ke.find(u,r);if(f===null)throw new rt(g.cwd,r);await g.restoreInstallState();let h=await Kt.getWorkspaceAccessibleBinaries(f);return h.has(l)===!1&&h.size===1&&typeof this.packages=="undefined"&&(l=Array.from(h)[0][0]),await Kt.executeWorkspaceAccessibleBinary(f,l,this.args,{packageAccessibleBinaries:h,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};jC.paths=[["dlx"]],jC.usage=ye.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var ele=jC;var S4e={commands:[$Ae,ele]},x4e=S4e;var xL={};it(xL,{default:()=>D4e,fileUtils:()=>EL});var hf=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,YC=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Nr="file:";var EL={};it(EL,{makeArchiveFromLocator:()=>_0,makeBufferFromLocator:()=>BL,makeLocator:()=>wL,makeSpec:()=>tle,parseSpec:()=>yL});function yL(t){let{params:e,selector:r}=S.parseRange(t),i=M.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?S.parseLocator(e.locator):null,path:i}}function tle({parentLocator:t,path:e,folderHash:r,protocol:i}){let n=t!==null?{locator:S.stringifyLocator(t)}:{},s=typeof r!="undefined"?{hash:r}:{};return S.makeRange({protocol:i,source:e,selector:e,params:P(P({},s),n)})}function wL(t,{parentLocator:e,path:r,folderHash:i,protocol:n}){return S.makeLocator(t,tle({parentLocator:e,path:r,folderHash:i,protocol:n}))}async function _0(t,{protocol:e,fetchOptions:r,inMemory:i=!1}){let{parentLocator:n,path:s}=S.parseFileStyleRange(t.reference,{protocol:e}),o=v.isAbsolute(s)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(n,r),a=o.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=v.join(a.prefixPath,s);return await de.releaseAfterUseAsync(async()=>await Ai.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:S.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function BL(t,{protocol:e,fetchOptions:r}){return(await _0(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var QL=class{supports(e,r){return!!e.reference.startsWith(Nr)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async fetchFromDisk(e,r){return _0(e,{protocol:Nr,fetchOptions:r})}};var k4e=2,bL=class{supportsDescriptor(e,r){return e.range.match(hf)?!0:!!e.range.startsWith(Nr)}supportsLocator(e,r){return!!e.reference.startsWith(Nr)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=yL(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await BL(S.makeLocator(e,S.makeRange({protocol:Nr,source:n,selector:n,params:{locator:S.stringifyLocator(s)}})),{protocol:Nr,fetchOptions:i.fetchOptions}),a=mn.makeHash(`${k4e}`,o).slice(0,6);return[wL(e,{parentLocator:s,path:n,folderHash:a,protocol:Nr})]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var vL=class{supports(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromDisk(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath)}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.join(o.prefixPath,n),c=await a.readFilePromise(l);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(c,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}),o.releaseFs)}};var SL=class{supportsDescriptor(e,r){return YC.test(e.range)?!!(e.range.startsWith(Nr)||hf.test(e.range)):!1}supportsLocator(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range;return n.startsWith(Nr)&&(n=n.slice(Nr.length)),[S.makeLocator(e,`${Nr}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var P4e={fetchers:[vL,QL],resolvers:[SL,bL]},D4e=P4e;var PL={};it(PL,{default:()=>N4e});var rle=ie(require("querystring")),ile=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function nle(t){return t?ile.some(e=>!!t.match(e)):!1}function sle(t){let e;for(let a of ile)if(e=t.match(a),e)break;if(!e)throw new Error(R4e(t));let[,r,i,n,s="master"]=e,{commit:o}=rle.default.parse(s);return s=o||s.replace(/[^:]*:/,""),{auth:r,username:i,reponame:n,treeish:s}}function R4e(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var kL=class{supports(e,r){return!!nle(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await T.mktempPromise(async n=>{let s=new Ft(n);await Ai.extractArchiveTo(i,s,{stripComponents:1});let o=Uc.splitRepoUrl(e.reference),a=v.join(n,"package.tgz");await Kt.prepareExternalProject(n,a,{configuration:r.project.configuration,report:r.report,workspace:o.extra.workspace,locator:e});let l=await T.readFilePromise(a);return await Ai.convertToZip(l,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:i,username:n,reponame:s,treeish:o}=sle(e.reference);return`https://${i?`${i}@`:""}github.com/${n}/${s}/archive/${o}.tar.gz`}};var F4e={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let i=new kL;if(!i.supports(e,r))return null;try{return await i.fetch(e,r)}catch(n){return null}}}},N4e=F4e;var FL={};it(FL,{default:()=>T4e});var qC=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,JC=/^https?:/;var DL=class{supports(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(e.reference,{configuration:r.project.configuration});return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var RL=class{supportsDescriptor(e,r){return qC.test(e.range)?!!JC.test(e.range):!1}supportsLocator(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[S.convertDescriptorToLocator(e)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var L4e={fetchers:[DL],resolvers:[RL]},T4e=L4e;var ML={};it(ML,{default:()=>M5e});var Rle=ie(Dle()),TL=ie(require("util")),WC=class extends Be{constructor(){super(...arguments);this.private=Y.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=Y.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=Y.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=Y.Boolean("-2",!1,{hidden:!0});this.yes=Y.Boolean("-y,--yes",{hidden:!0});this.assumeFreshProject=Y.Boolean("--assume-fresh-project",!1,{hidden:!0})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return r!==null?await this.executeProxy(e,r):await this.executeRegular(e)}async executeProxy(e,r){if(e.projectCwd!==null&&e.projectCwd!==this.context.cwd)throw new me("Cannot use the --install flag from within a project subdirectory");T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=v.join(this.context.cwd,e.get("lockfileFilename"));T.existsSync(i)||await T.writeFilePromise(i,"");let n=await this.cli.run(["set","version",r],{quiet:!0});if(n!==0)return n;let s=[];return this.private&&s.push("-p"),this.workspace&&s.push("-w"),this.yes&&s.push("-y"),await T.mktempPromise(async o=>{let{code:a}=await hr.pipevp("yarn",["init",...s],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Kt.makeScriptEnv({binFolder:o})});return a})}async executeRegular(e){var l;let r=null;try{r=(await Ke.find(e,this.context.cwd)).project}catch{r=null}T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=await Ze.tryFind(this.context.cwd)||new Ze,n=Object.fromEntries(e.get("initFields").entries());i.load(n),i.name=(l=i.name)!=null?l:S.makeIdent(e.get("initScope"),v.basename(this.context.cwd)),i.packageManager=Zr&&de.isTaggedYarnVersion(Zr)?`yarn@${Zr}`:null,typeof i.raw.private=="undefined"&&(this.private||this.workspace&&i.workspaceDefinitions.length===0)&&(i.private=!0),this.workspace&&i.workspaceDefinitions.length===0&&(await T.mkdirPromise(v.join(this.context.cwd,"packages"),{recursive:!0}),i.workspaceDefinitions=[{pattern:"packages/*"}]);let s={};i.exportTo(s),TL.inspect.styles.name="cyan",this.context.stdout.write(`${(0,TL.inspect)(s,{depth:Infinity,colors:!0,compact:!1})} -`);let o=v.join(this.context.cwd,Ze.fileName);await T.changeFilePromise(o,`${JSON.stringify(s,null,2)} -`,{automaticNewlines:!0});let a=v.join(this.context.cwd,"README.md");if(T.existsSync(a)||await T.writeFilePromise(a,`# ${S.stringifyIdent(i.name)} -`),!r||r.cwd===this.context.cwd){let c=v.join(this.context.cwd,wt.lockfile);T.existsSync(c)||await T.writeFilePromise(c,"");let g=["/.yarn/*","!/.yarn/patches","!/.yarn/plugins","!/.yarn/releases","!/.yarn/sdks","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!/.yarn/cache","#/.pnp.*"].map(m=>`${m} -`).join(""),f=v.join(this.context.cwd,".gitignore");T.existsSync(f)||await T.writeFilePromise(f,g);let h={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,Rle.default)(h,e.get("initEditorConfig"));let p=`root = true -`;for(let[m,E]of Object.entries(h)){p+=` -[${m}] -`;for(let[B,b]of Object.entries(E))p+=`${B.replace(/[A-Z]/g,H=>`_${H.toLowerCase()}`)} = ${b} -`}let d=v.join(this.context.cwd,".editorconfig");T.existsSync(d)||await T.writeFilePromise(d,p),T.existsSync(v.join(this.context.cwd,".git"))||await hr.execvp("git",["init"],{cwd:this.context.cwd})}}};WC.paths=[["init"]],WC.usage=ye.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var Fle=WC;var T5e={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:ge.STRING,default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}}},commands:[Fle]},M5e=T5e;var GL={};it(GL,{default:()=>K5e});var Ua="portal:",Ha="link:";var OL=class{supports(e,r){return!!e.reference.startsWith(Ua)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot}}};var KL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ua)}supportsLocator(e,r){return!!e.reference.startsWith(Ua)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ua.length);return[S.makeLocator(e,`${Ua}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var UL=class{supports(e,r){return!!e.reference.startsWith(Ha)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0}}};var HL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ha)}supportsLocator(e,r){return!!e.reference.startsWith(Ha)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ha.length);return[S.makeLocator(e,`${Ha}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){return _(P({},e),{version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map})}};var O5e={fetchers:[UL,OL],resolvers:[HL,KL]},K5e=O5e;var mT={};it(mT,{default:()=>Y6e});var Ga;(function(i){i[i.YES=0]="YES",i[i.NO=1]="NO",i[i.DEPENDS=2]="DEPENDS"})(Ga||(Ga={}));var jL=(t,e)=>`${t}@${e}`,Nle=(t,e)=>{let r=e.indexOf("#"),i=r>=0?e.substring(r+1):e;return jL(t,i)},qs;(function(s){s[s.NONE=-1]="NONE",s[s.PERF=0]="PERF",s[s.CHECK=1]="CHECK",s[s.REASONS=2]="REASONS",s[s.INTENSIVE_CHECK=9]="INTENSIVE_CHECK"})(qs||(qs={}));var Tle=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),i=e.check||r>=9,n=e.hoistingLimits||new Map,s={check:i,debugLevel:r,hoistingLimits:n,fastLookupPossible:!0},o;s.debugLevel>=0&&(o=Date.now());let a=U5e(t,s),l=!1,c=0;do l=YL(a,[a],new Set([a.locator]),new Map,s).anotherRoundNeeded,s.fastLookupPossible=!1,c++;while(l);if(s.debugLevel>=0&&console.log(`hoist time: ${Date.now()-o}ms, rounds: ${c}`),s.debugLevel>=1){let u=zC(a);if(YL(a,[a],new Set([a.locator]),new Map,s).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: -${u}, next tree: -${zC(a)}`);let f=Lle(a);if(f)throw new Error(`${f}, after hoisting finished: -${zC(a)}`)}return s.debugLevel>=2&&console.log(zC(a)),H5e(a)},G5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())r.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),r},j5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of t)u=g.dependencies.get(c.name),u&&r.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),r},Mle=(t,e)=>{if(e.decoupled)return e;let{name:r,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:p,hoistedTo:d}=e,m={name:r,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:new Map(p),hoistedTo:new Map(d)},E=m.dependencies.get(r);return E&&E.ident==m.ident&&m.dependencies.set(r,m),t.dependencies.set(m.name,m),m},Y5e=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let n of t.dependencies.values())t.peerNames.has(n.name)||r.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!t.peerNames.has(s)){let a=r.get(s);a||(a=[],r.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return r},qL=t=>{let e=new Set,r=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!t.peerNames.has(s)){let o=t.dependencies.get(s);o&&!e.has(o)&&r(o,n)}e.add(i)}};for(let i of t.dependencies.values())t.peerNames.has(i.name)||r(i);return e},YL=(t,e,r,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=J5e(o),l=Y5e(o,a),c=t==o?new Map:n.fastLookupPossible?G5e(e):j5e(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([d,m])=>[d,m[0]])),p=new Map;do{let d=q5e(t,e,r,c,h,l,i,p,n);d.isGraphChanged&&(f=!0),d.anotherRoundNeeded&&(g=!0),u=!1;for(let[m,E]of l)E.length>1&&!o.dependencies.has(m)&&(h.delete(m),E.shift(),h.set(m,E[0]),u=!0)}while(u);for(let d of o.dependencies.values())if(!o.peerNames.has(d.name)&&!r.has(d.locator)){r.add(d.locator);let m=YL(t,[...e,d],r,p,n);m.isGraphChanged&&(f=!0),m.anotherRoundNeeded&&(g=!0),r.delete(d.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},W5e=(t,e,r,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(m=>wi(m)).join("\u2192")}`);let h=r[r.length-1],d=!(i.ident===h.ident);if(l&&!d&&(g="- self-reference"),d&&(d=!i.isWorkspace,l&&!d&&(g="- workspace")),d&&(d=!h.isWorkspace||h.hoistedFrom.has(i.name)||e.size===1,l&&!d&&(g=h.reasons.get(i.name))),d&&(d=!t.peerNames.has(i.name),l&&!d&&(g=`- cannot shadow peer: ${wi(t.originalDependencies.get(i.name).locator)} at ${u}`)),d){let m=!1,E=n.get(i.name);if(m=!E||E.ident===i.ident,l&&!m&&(g=`- filled by: ${wi(E.locator)} at ${u}`),m)for(let B=r.length-1;B>=1;B--){let R=r[B].dependencies.get(i.name);if(R&&R.ident!==i.ident){m=!1;let H=a.get(h);H||(H=new Set,a.set(h,H)),H.add(i.name),l&&(g=`- filled by ${wi(R.locator)} at ${r.slice(0,B).map(L=>wi(L.locator)).join("\u2192")}`);break}}d=m}if(d&&(d=s.get(i.name)===i.ident,l&&!d&&(g=`- filled by: ${wi(o.get(i.name)[0])} at ${u}`)),d){let m=!0,E=new Set(i.peerNames);for(let B=r.length-1;B>=1;B--){let b=r[B];for(let R of E){if(b.peerNames.has(R)&&b.originalDependencies.has(R))continue;let H=b.dependencies.get(R);H&&t.dependencies.get(R)!==H&&(B===r.length-1?f.add(H):(f=null,m=!1,l&&(g=`- peer dependency ${wi(H.locator)} from parent ${wi(b.locator)} was not hoisted to ${u}`))),E.delete(R)}if(!m)break}d=m}if(d&&!c)for(let m of i.hoistedDependencies.values()){let E=n.get(m.name);if(!E||m.ident!==E.ident){d=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${wi(m.locator)}, available: ${wi(E==null?void 0:E.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:d?0:1,reason:g}},q5e=(t,e,r,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(m,E,B,b)=>{if(u.has(B))return;let R=[...E,B.locator],H=new Map,L=new Map;for(let q of qL(B)){let A=W5e(c,r,[c,...m,B],q,i,n,s,a,{outputReason:l.debugLevel>=2,fastLookupPossible:l.fastLookupPossible});if(L.set(q,A),A.isHoistable===2)for(let V of A.dependsOn){let W=H.get(V.name)||new Set;W.add(q.name),H.set(V.name,W)}}let K=new Set,J=(q,A,V)=>{if(!K.has(q)){K.add(q),L.set(q,{isHoistable:1,reason:V});for(let W of H.get(q.name)||[])J(B.dependencies.get(W),A,l.debugLevel>=2?`- peer dependency ${wi(q.locator)} from parent ${wi(B.locator)} was not hoisted`:"")}};for(let[q,A]of L)A.isHoistable===1&&J(q,A,A.reason);for(let q of L.keys())if(!K.has(q)){f=!0;let A=o.get(B);A&&A.has(q.name)&&(g=!0),B.dependencies.delete(q.name),B.hoistedDependencies.set(q.name,q),B.reasons.delete(q.name);let V=c.dependencies.get(q.name);if(l.debugLevel>=2){let W=Array.from(E).concat([B.locator]).map(F=>wi(F)).join("\u2192"),X=c.hoistedFrom.get(q.name);X||(X=[],c.hoistedFrom.set(q.name,X)),X.push(W),B.hoistedTo.set(q.name,Array.from(e).map(F=>wi(F.locator)).join("\u2192"))}if(!V)c.ident!==q.ident&&(c.dependencies.set(q.name,q),b.add(q));else for(let W of q.references)V.references.add(W)}if(l.check){let q=Lle(t);if(q)throw new Error(`${q}, after hoisting dependencies of ${[c,...m,B].map(A=>wi(A.locator)).join("\u2192")}: -${zC(t)}`)}let ne=qL(B);for(let q of ne)if(K.has(q)){let A=L.get(q);if((n.get(q.name)===q.ident||!B.reasons.has(q.name))&&A.isHoistable!==0&&B.reasons.set(q.name,A.reason),!q.isHoistBorder&&R.indexOf(q.locator)<0){u.add(B);let W=Mle(B,q);h([...m,B],[...E,B.locator],W,d),u.delete(B)}}},p,d=new Set(qL(c));do{p=d,d=new Set;for(let m of p){if(m.locator===c.locator||m.isHoistBorder)continue;let E=Mle(c,m);h([],Array.from(r),E,d)}}while(d.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},Lle=t=>{let e=[],r=new Set,i=new Set,n=(s,o,a)=>{if(r.has(s)||(r.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>wi(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,d=`${h?` hoisted to ${h}`:""}`,m=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${m} - broken require promise for ${c.name}${d}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${m} - broken require promise: no required dependency ${c.name}${d} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(t,t.dependencies,t),e.join(` -`)},U5e=(t,e)=>{let{identName:r,name:i,reference:n,peerNames:s}=t,o={name:i,references:new Set([n]),locator:jL(r,n),ident:Nle(r,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,isWorkspace:!0,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[t,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:d,peerNames:m,hoistPriority:E,isWorkspace:B}=c,b=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([d]),locator:jL(p,d),ident:Nle(p,d),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(m),reasons:new Map,decoupled:!0,isHoistBorder:b?b.has(h):!1,hoistPriority:E||0,isWorkspace:B||!1,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=d=>{if(!h.has(d)){h.add(d),d.decoupled=!1;for(let m of d.dependencies.values())d.peerNames.has(m.name)||p(m)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of t.dependencies)l(c,o);return o},JL=t=>t.substring(0,t.indexOf("@",1)),H5e=t=>{let e={name:t.name,identName:JL(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),i=(n,s,o)=>{let a=r.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:JL(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){r.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);r.delete(n)}};for(let n of t.dependencies.values())i(n,t,e);return e},J5e=t=>{let e=new Map,r=new Set([t]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!r.has(a);if(n(a).dependents.add(o.ident),!l){r.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||s(t,o);return e},wi=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let i=t.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(r=`v:${r}`),n.startsWith("workspace")&&(r=`w:${r}`,n=""),`${r}${n?`@${n}`:""}`}else return`${r}`},Ole=5e4,zC=t=>{let e=0,r=(n,s,o="")=>{if(e>Ole||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name.localeCompare(u.name)),l="";s.add(n);for(let c=0;c":"")+(f!==u.name?`a:${u.name}:`:"")+wi(u.locator)+(g?` ${g}`:"")+(u!==n&&h.length>0?`, hoisted from: ${h.join(", ")}`:"")} -`,l+=r(u,s,`${o}${cOle?` -Tree is too large, part of the tree has been dunped -`:"")};var Js;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Js||(Js={}));var Sn;(function(i){i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none"})(Sn||(Sn={}));var Kle="node_modules",Hc="$wsroot$";var VC=(t,e)=>{let{packageTree:r,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=z5e(t,e),o=null;if(n.length===0){let a=Tle(r,{hoistingLimits:i});o=V5e(t,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},ms=t=>`${t.name}@${t.reference}`,WL=t=>{let e=new Map;for(let[r,i]of t.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((i,n)=>{let s=i.split(v.delimiter).length,o=n.split(v.delimiter).length;return s!==o?o-s:n.localeCompare(i)});return e},Ule=(t,e)=>{let r=S.isVirtualLocator(t)?S.devirtualizeLocator(t):t,i=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e;return S.areLocatorsEqual(r,i)},zL=(t,e,r,i)=>{if(t.linkType!==Js.SOFT)return!1;let n=M.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return v.contains(i,n)===null},_5e=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=M.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=t.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=ms(f);if(l.has(p))return;l.add(p);let d=t.getPackageInformation(f);if(d){let m=h?ms(h):"";if(ms(f)!==m&&d.linkType===Js.SOFT&&!zL(d,f,t,i)){let E=Hle(d,f,t);(!a.get(E)||f.reference.startsWith("workspace:"))&&a.set(E,f)}for(let[E,B]of d.packageDependencies)B!==null&&(d.packagePeers.has(E)||c(t.getLocator(E,B),f))}};for(let f of o)c(f,null);let u=i.split(v.sep);for(let f of a.values()){let h=t.getPackageInformation(f),d=M.toPortablePath(h.packageLocation.slice(0,-1)).split(v.sep).slice(u.length),m=s;for(let E of d){let B=m.children.get(E);B||(B={children:new Map},m.children.set(E,B)),m=B}m.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=ms(h),d=n.get(p);d||(d=new Set,n.set(p,d)),d.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},z5e=(t,e)=>{let r=[],i=!1,n=new Map,s=_5e(t),o=t.getPackageInformation(t.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=t.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=M.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,isWorkspace:!0},u=new Map,g=(h,p)=>`${ms(p)}:${h}`,f=(h,p,d,m,E,B,b,R)=>{var X,F;let H=g(h,d),L=u.get(H),K=!!L;!K&&d.name===a.name&&d.reference===a.reference&&(L=c,u.set(H,c));let J=zL(p,d,t,l);if(!L){let D=p.linkType===Js.SOFT&&d.name.endsWith(Hc);L={name:h,identName:d.name,reference:d.reference,dependencies:new Set,peerNames:D?new Set:p.packagePeers,isWorkspace:D},u.set(H,L)}let ne;if(J?ne=2:E.linkType===Js.SOFT?ne=1:ne=0,L.hoistPriority=Math.max(L.hoistPriority||0,ne),R&&!J){let D=ms({name:m.identName,reference:m.reference}),he=n.get(D)||new Set;n.set(D,he),he.add(L.name)}let q=new Map(p.packageDependencies);if(e.project){let D=e.project.workspacesByCwd.get(M.toPortablePath(p.packageLocation.slice(0,-1)));if(D){let he=new Set([...Array.from(D.manifest.peerDependencies.values(),pe=>S.stringifyIdent(pe)),...Array.from(D.manifest.peerDependenciesMeta.keys())]);for(let pe of he)q.has(pe)||(q.set(pe,B.get(pe)||null),L.peerNames.add(pe))}}let A=ms({name:d.name.replace(Hc,""),reference:d.reference}),V=s.get(A);if(V)for(let D of V)q.set(`${D.name}${Hc}`,D.reference);(p!==E||p.linkType!==Js.SOFT||!e.selfReferencesByCwd||e.selfReferencesByCwd.get(b))&&m.dependencies.add(L);let W=d!==a&&p.linkType===Js.SOFT&&!d.name.endsWith(Hc)&&!J;if(!K&&!W){let D=new Map;for(let[he,pe]of q)if(pe!==null){let Ne=t.getLocator(he,pe),Pe=t.getLocator(he.replace(Hc,""),pe),qe=t.getPackageInformation(Pe);if(qe===null)throw new Error("Assertion failed: Expected the package to have been registered");let re=zL(qe,Ne,t,l);if(e.validateExternalSoftLinks&&e.project&&re){qe.packageDependencies.size>0&&(i=!0);for(let[De,$]of qe.packageDependencies)if($!==null){let G=S.parseLocator(Array.isArray($)?`${$[0]}@${$[1]}`:`${De}@${$}`);if(ms(G)!==ms(Ne)){let Ce=q.get(De);if(Ce){let ee=S.parseLocator(Array.isArray(Ce)?`${Ce[0]}@${Ce[1]}`:`${De}@${Ce}`);Ule(ee,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with parent dependency ${S.prettyLocator(e.project.configuration,ee)}`})}else{let ee=D.get(De);if(ee){let Ue=ee.target,Oe=S.parseLocator(Array.isArray(Ue)?`${Ue[0]}@${Ue[1]}`:`${De}@${Ue}`);Ule(Oe,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with dependency ${S.prettyLocator(e.project.configuration,Oe)} from sibling portal ${S.prettyIdent(e.project.configuration,S.parseIdent(ee.portal.name))}`})}else D.set(De,{target:G.reference,portal:Ne})}}}}let se=(X=e.hoistingLimitsByCwd)==null?void 0:X.get(b),be=re?b:v.relative(l,M.toPortablePath(qe.packageLocation))||Se.dot,ae=(F=e.hoistingLimitsByCwd)==null?void 0:F.get(be),Ae=se===Sn.DEPENDENCIES||ae===Sn.DEPENDENCIES||ae===Sn.WORKSPACES;f(ms(Ne)===ms(d)?h:he,qe,Ne,L,p,q,be,Ae)}}};return f(a.name,o,a,c,o,o.packageDependencies,Se.dot,!1),{packageTree:c,hoistingLimits:n,errors:r,preserveSymlinksRequired:i}};function Hle(t,e,r){let i=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return M.toPortablePath(i||t.packageLocation)}function X5e(t,e,r){let i=e.getLocator(t.name.replace(Hc,""),t.reference),n=e.getPackageInformation(i);if(n===null)throw new Error("Assertion failed: Expected the package to be registered");let s,o;return r.pnpifyFs?(o=M.toPortablePath(n.packageLocation),s=Js.SOFT):(o=Hle(n,t,e),s=n.linkType),{linkType:s,target:o}}var V5e=(t,e,r)=>{let i=new Map,n=(u,g,f)=>{let{linkType:h,target:p}=X5e(u,t,r);return{locator:ms(u),nodePath:g,target:p,linkType:h,aliases:f}},s=u=>{let[g,f]=u.split("/");return f?{scope:kr(g),name:kr(f)}:{scope:null,name:kr(g)}},o=new Set,a=(u,g,f)=>{if(!o.has(u)){o.add(u);for(let h of u.dependencies){if(h===u)continue;let p=Array.from(h.references).sort(),d={name:h.identName,reference:p[0]},{name:m,scope:E}=s(h.name),B=E?[E,m]:[m],b=v.join(g,Kle),R=v.join(b,...B),H=`${f}/${d.name}`,L=n(d,f,p.slice(1)),K=!1;if(L.linkType===Js.SOFT&&r.project){let J=r.project.workspacesByCwd.get(L.target.slice(0,-1));K=!!(J&&!J.manifest.name)}if(!h.name.endsWith(Hc)&&!K){let J=i.get(R);if(J){if(J.dirList)throw new Error(`Assertion failed: ${R} cannot merge dir node with leaf node`);{let V=S.parseLocator(J.locator),W=S.parseLocator(L.locator);if(J.linkType!==L.linkType)throw new Error(`Assertion failed: ${R} cannot merge nodes with different link types ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/${S.stringifyLocator(W)}`);if(V.identHash!==W.identHash)throw new Error(`Assertion failed: ${R} cannot merge nodes with different idents ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/s${S.stringifyLocator(W)}`);L.aliases=[...L.aliases,...J.aliases,S.parseLocator(J.locator).reference]}}i.set(R,L);let ne=R.split("/"),q=ne.indexOf(Kle),A=ne.length-1;for(;q>=0&&A>q;){let V=M.toPortablePath(ne.slice(0,A).join(v.sep)),W=kr(ne[A]),X=i.get(V);if(!X)i.set(V,{dirList:new Set([W])});else if(X.dirList){if(X.dirList.has(W))break;X.dirList.add(W)}A--}}a(h,L.linkType===Js.SOFT?L.target:R,H)}}},l=n({name:e.name,reference:Array.from(e.references)[0]},"",[]),c=l.target;return i.set(c,l),a(e,c,""),i};var oT={};it(oT,{PnpInstaller:()=>Cf,PnpLinker:()=>jc,default:()=>m6e,getPnpPath:()=>qA,jsInstallUtils:()=>Ws,pnpUtils:()=>nT,quotePathIfNeeded:()=>uce});var lce=ie(Or()),cce=ie(require("url"));var Gle;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Gle||(Gle={}));var Ht;(function(f){f.DEFAULT="DEFAULT",f.TOP_LEVEL="TOP_LEVEL",f.FALLBACK_EXCLUSION_LIST="FALLBACK_EXCLUSION_LIST",f.FALLBACK_EXCLUSION_ENTRIES="FALLBACK_EXCLUSION_ENTRIES",f.FALLBACK_EXCLUSION_DATA="FALLBACK_EXCLUSION_DATA",f.PACKAGE_REGISTRY_DATA="PACKAGE_REGISTRY_DATA",f.PACKAGE_REGISTRY_ENTRIES="PACKAGE_REGISTRY_ENTRIES",f.PACKAGE_STORE_DATA="PACKAGE_STORE_DATA",f.PACKAGE_STORE_ENTRIES="PACKAGE_STORE_ENTRIES",f.PACKAGE_INFORMATION_DATA="PACKAGE_INFORMATION_DATA",f.PACKAGE_DEPENDENCIES="PACKAGE_DEPENDENCIES",f.PACKAGE_DEPENDENCY="PACKAGE_DEPENDENCY"})(Ht||(Ht={}));var jle={[Ht.DEFAULT]:{collapsed:!1,next:{["*"]:Ht.DEFAULT}},[Ht.TOP_LEVEL]:{collapsed:!1,next:{fallbackExclusionList:Ht.FALLBACK_EXCLUSION_LIST,packageRegistryData:Ht.PACKAGE_REGISTRY_DATA,["*"]:Ht.DEFAULT}},[Ht.FALLBACK_EXCLUSION_LIST]:{collapsed:!1,next:{["*"]:Ht.FALLBACK_EXCLUSION_ENTRIES}},[Ht.FALLBACK_EXCLUSION_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.FALLBACK_EXCLUSION_DATA}},[Ht.FALLBACK_EXCLUSION_DATA]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}},[Ht.PACKAGE_REGISTRY_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_REGISTRY_ENTRIES}},[Ht.PACKAGE_REGISTRY_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_STORE_DATA}},[Ht.PACKAGE_STORE_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_STORE_ENTRIES}},[Ht.PACKAGE_STORE_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_INFORMATION_DATA}},[Ht.PACKAGE_INFORMATION_DATA]:{collapsed:!1,next:{packageDependencies:Ht.PACKAGE_DEPENDENCIES,["*"]:Ht.DEFAULT}},[Ht.PACKAGE_DEPENDENCIES]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_DEPENDENCY}},[Ht.PACKAGE_DEPENDENCY]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}}};function Z5e(t,e,r){let i="";i+="[";for(let n=0,s=t.length;ns(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function r6e(t){let e=new Map,r=_C(t.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of r){let s=e.get(i);typeof s=="undefined"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function i6e(t){return _C(t.fallbackPool||[],([e])=>e)}function n6e(t){let e=[];for(let[r,i]of _C(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([r,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of _C(i,([g])=>g===null?"0":`1${g}`)){let g=[];r!==null&&s!==null&&!a.has(r)&&g.push([r,s]);for(let[p,d]of _C(a.entries(),([m])=>m))g.push([p,d]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function XC(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:r6e(t),fallbackPool:i6e(t),packageRegistryData:n6e(t)}}var zle=ie(Wle());function Vle(t,e){return[t?`${t} -`:"",`/* eslint-disable */ - -`,`try { -`,` Object.freeze({}).detectStrictMode = true; -`,`} catch (error) { -`," throw new Error(`The whole PnP file got strict-mode-ified, which is known to break (Emscripten libraries aren't strict mode). This usually happens when the file goes through Babel.`);\n",`} -`,` -`,`var __non_webpack_module__ = module; -`,` -`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,e.replace(/^/gm," "),`} -`,` -`,(0,zle.default)()].join("")}function s6e(t){return JSON.stringify(t,null,2)}function o6e(t){return[`return hydrateRuntimeState(${qle(t)}, {basePath: basePath || __dirname}); -`].join("")}function a6e(t){return[`var path = require('path'); -`,`var dataLocation = path.resolve(__dirname, ${JSON.stringify(t)}); -`,`return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)}); -`].join("")}function _le(t){let e=XC(t),r=o6e(e);return Vle(t.shebang,r)}function Xle(t){let e=XC(t),r=a6e(t.dataLocation),i=Vle(t.shebang,r);return{dataFile:s6e(e),loaderFile:i}}var tce=ie(require("fs")),u6e=ie(require("path")),rce=ie(require("util"));function _L(t,{basePath:e}){let r=M.toPortablePath(e),i=v.resolve(r),n=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,s=new Map,o=new Map(t.packageRegistryData.map(([g,f])=>[g,new Map(f.map(([h,p])=>{var b;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let d=(b=p.discardFromLookup)!=null?b:!1,m={name:g,reference:h},E=s.get(p.packageLocation);E?(E.discardFromLookup=E.discardFromLookup&&d,d||(E.locator=m)):s.set(p.packageLocation,{locator:m,discardFromLookup:d});let B=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:d,get packageLocation(){return B||(B=v.join(i,p.packageLocation))}}]}))])),a=new Map(t.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(t.fallbackPool),c=t.dependencyTreeRoots,u=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var df=ie(require("module")),ece=ie($le()),ZL=ie(require("util"));var ur;(function(l){l.API_ERROR="API_ERROR",l.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",l.MISSING_DEPENDENCY="MISSING_DEPENDENCY",l.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",l.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",l.INTERNAL="INTERNAL",l.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",l.UNSUPPORTED="UNSUPPORTED"})(ur||(ur={}));var c6e=new Set([ur.BUILTIN_NODE_RESOLUTION_FAILED,ur.MISSING_DEPENDENCY,ur.MISSING_PEER_DEPENDENCY,ur.QUALIFIED_PATH_RESOLUTION_FAILED,ur.UNDECLARED_DEPENDENCY]);function ui(t,e,r={}){let i=c6e.has(t)?"MODULE_NOT_FOUND":t,n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:_(P({},n),{value:i}),pnpCode:_(P({},n),{value:t}),data:_(P({},n),{value:r})})}function YA(t){return M.normalize(M.fromPortablePath(t))}function $L(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=new Set(df.Module.builtinModules||Object.keys(process.binding("natives"))),s=re=>n.has(re)||re.startsWith("node:"),o=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,a=/^(\/|\.{1,2}(\/|$))/,l=/\/$/,c=/^\.{0,2}\//,u={name:null,reference:null},g=[],f=new Set;if(t.enableTopLevelFallback===!0&&g.push(u),e.compatibilityMode!==!1)for(let re of["react-scripts","gatsby"]){let se=t.packageRegistry.get(re);if(se)for(let be of se.keys()){if(be===null)throw new Error("Assertion failed: This reference shouldn't be null");g.push({name:re,reference:be})}}let{ignorePattern:h,packageRegistry:p,packageLocatorsByLocations:d}=t;function m(re,se){return{fn:re,args:se,error:null,result:null}}function E(re){var De,$,G,Ce,ee,Ue;let se=(G=($=(De=process.stderr)==null?void 0:De.hasColors)==null?void 0:$.call(De))!=null?G:process.stdout.isTTY,be=(Oe,vt)=>`[${Oe}m${vt}`,ae=re.error;console.error(ae?be("31;1",`\u2716 ${(Ce=re.error)==null?void 0:Ce.message.replace(/\n.*/s,"")}`):be("33;1","\u203C Resolution")),re.args.length>0&&console.error();for(let Oe of re.args)console.error(` ${be("37;1","In \u2190")} ${(0,ZL.inspect)(Oe,{colors:se,compact:!0})}`);re.result&&(console.error(),console.error(` ${be("37;1","Out \u2192")} ${(0,ZL.inspect)(re.result,{colors:se,compact:!0})}`));let Ae=(Ue=(ee=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:ee.slice(2))!=null?Ue:[];if(Ae.length>0){console.error();for(let Oe of Ae)console.error(` ${be("38;5;244",Oe)}`)}console.error()}function B(re,se){if(e.allowDebug===!1)return se;if(Number.isFinite(i)){if(i>=2)return(...be)=>{let ae=m(re,be);try{return ae.result=se(...be)}catch(Ae){throw ae.error=Ae}finally{E(ae)}};if(i>=1)return(...be)=>{try{return se(...be)}catch(ae){let Ae=m(re,be);throw Ae.error=ae,E(Ae),ae}}}return se}function b(re){let se=W(re);if(!se)throw ui(ur.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return se}function R(re){if(re.name===null)return!0;for(let se of t.dependencyTreeRoots)if(se.name===re.name&&se.reference===re.reference)return!0;return!1}let H=new Set(["default","node","require"]);function L(re,se=H){let be=D(v.join(re,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(be===null)throw ui(ur.INTERNAL,`The locator that owns the "${re}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ae}=b(be),Ae=v.join(ae,wt.manifest);if(!e.fakeFs.existsSync(Ae))return null;let De=JSON.parse(e.fakeFs.readFileSync(Ae,"utf8")),$=v.contains(ae,re);if($===null)throw ui(ur.INTERNAL,"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");c.test($)||($=`./${$}`);let G=(0,ece.resolve)(De,v.normalize($),{conditions:se,unsafe:!0});return typeof G=="string"?v.join(ae,G):null}function K(re,se,{extensions:be}){let ae;try{se.push(re),ae=e.fakeFs.statSync(re)}catch(Ae){}if(ae&&!ae.isDirectory())return e.fakeFs.realpathSync(re);if(ae&&ae.isDirectory()){let Ae;try{Ae=JSON.parse(e.fakeFs.readFileSync(v.join(re,wt.manifest),"utf8"))}catch($){}let De;if(Ae&&Ae.main&&(De=v.resolve(re,Ae.main)),De&&De!==re){let $=K(De,se,{extensions:be});if($!==null)return $}}for(let Ae=0,De=be.length;Ae{let G=JSON.stringify($.name);if(ae.has(G))return;ae.add(G);let Ce=X($);for(let ee of Ce)if(b(ee).packagePeers.has(re))Ae(ee);else{let Oe=be.get(ee.name);typeof Oe=="undefined"&&be.set(ee.name,Oe=new Set),Oe.add(ee.reference)}};Ae(se);let De=[];for(let $ of[...be.keys()].sort())for(let G of[...be.get($)].sort())De.push({name:$,reference:G});return De}function D(re,{resolveIgnored:se=!1,includeDiscardFromLookup:be=!1}={}){if(q(re)&&!se)return null;let ae=v.relative(t.basePath,re);ae.match(a)||(ae=`./${ae}`),ae.endsWith("/")||(ae=`${ae}/`);do{let Ae=d.get(ae);if(typeof Ae=="undefined"||Ae.discardFromLookup&&!be){ae=ae.substring(0,ae.lastIndexOf("/",ae.length-2)+1);continue}return Ae.locator}while(ae!=="");return null}function he(re,se,{considerBuiltins:be=!0}={}){if(re==="pnpapi")return M.toPortablePath(e.pnpapiResolution);if(be&&s(re))return null;let ae=YA(re),Ae=se&&YA(se);if(se&&q(se)&&(!v.isAbsolute(re)||D(re)===null)){let G=ne(re,se);if(G===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) - -Require request: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(G)}let De,$=re.match(o);if($){if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let[,G,Ce]=$,ee=D(se);if(!ee){let yr=ne(re,se);if(yr===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). - -Require path: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(yr)}let Oe=b(ee).packageDependencies.get(G),vt=null;if(Oe==null&&ee.name!==null){let yr=t.fallbackExclusionList.get(ee.name);if(!yr||!yr.has(ee.reference)){for(let Qi=0,Go=g.length;QiR(Ki))?dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr}):dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) - -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr})}else Oe===void 0&&(!be&&s(re)?R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in ${ee.name}'s dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}):R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}));if(Oe==null){if(vt===null||dt===null)throw dt||new Error("Assertion failed: Expected an error to have been set");Oe=vt;let yr=dt.message.replace(/\n.*/g,"");dt.message=yr,!f.has(yr)&&i!==0&&(f.add(yr),process.emitWarning(dt))}let ri=Array.isArray(Oe)?{name:Oe[0],reference:Oe[1]}:{name:G,reference:Oe},ii=b(ri);if(!ii.packageLocation)throw ui(ur.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. - -Required package: ${ri.name}@${ri.reference}${ri.name!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,dependencyLocator:Object.assign({},ri)});let an=ii.packageLocation;Ce?De=v.join(an,Ce):De=an}else if(v.isAbsolute(re))De=v.normalize(re);else{if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let G=v.resolve(se);se.match(l)?De=v.normalize(v.join(G,re)):De=v.normalize(v.join(v.dirname(G),re))}return v.normalize(De)}function pe(re,se,be=H){if(a.test(re))return se;let ae=L(se,be);return ae?v.normalize(ae):se}function Ne(re,{extensions:se=Object.keys(df.Module._extensions)}={}){let be=[],ae=K(re,be,{extensions:se});if(ae)return v.normalize(ae);{let Ae=YA(re),De=D(re);if(De){let{packageLocation:$}=b(De);if(!e.fakeFs.existsSync($)){let G=$.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`${G} - -Missing package: ${De.name}@${De.reference} -Expected package location: ${YA($)} -`,{unqualifiedPath:Ae})}}throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`Qualified path resolution failed - none of those files can be found on the disk. - -Source path: ${Ae} -${be.map($=>`Not found: ${YA($)} -`).join("")}`,{unqualifiedPath:Ae})}}function Pe(re,se,{considerBuiltins:be,extensions:ae,conditions:Ae}={}){let De=he(re,se,{considerBuiltins:be});if(re==="pnpapi")return De;if(De===null)return null;let $=()=>se!==null?q(se):!1,G=(!be||!s(re))&&!$()?pe(re,De,Ae):De;try{return Ne(G,{extensions:ae})}catch(Ce){throw Ce.pnpCode==="QUALIFIED_PATH_RESOLUTION_FAILED"&&Object.assign(Ce.data,{request:YA(re),issuer:se&&YA(se)}),Ce}}function qe(re){let se=v.normalize(re),be=Pr.resolveVirtual(se);return be!==se?be:null}return{VERSIONS:A,topLevel:V,getLocator:(re,se)=>Array.isArray(se)?{name:se[0],reference:se[1]}:{name:re,reference:se},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let re=[];for(let[se,be]of p)for(let ae of be.keys())se!==null&&ae!==null&&re.push({name:se,reference:ae});return re},getPackageInformation:re=>{let se=W(re);if(se===null)return null;let be=M.fromPortablePath(se.packageLocation);return _(P({},se),{packageLocation:be})},findPackageLocator:re=>D(M.toPortablePath(re)),resolveToUnqualified:B("resolveToUnqualified",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=he(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveUnqualified:B("resolveUnqualified",(re,se)=>M.fromPortablePath(Ne(M.toPortablePath(re),se))),resolveRequest:B("resolveRequest",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=Pe(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveVirtual:B("resolveVirtual",re=>{let se=qe(M.toPortablePath(re));return se!==null?M.fromPortablePath(se):null})}}var ESt=(0,rce.promisify)(tce.readFile);var ice=(t,e,r)=>{let i=XC(t),n=_L(i,{basePath:e}),s=M.join(e,wt.pnpCjs);return $L(n,{fakeFs:r,pnpapiResolution:s})};var tT=ie(sce());var Ws={};it(Ws,{checkAndReportManifestCompatibility:()=>oce,extractBuildScripts:()=>Z0,getExtractHint:()=>rT,hasBindingGyp:()=>iT});function oce(t,e,{configuration:r,report:i}){return S.isPackageCompatible(t,{os:[process.platform],cpu:[process.arch]})?!0:(i==null||i.reportWarningOnce(z.INCOMPATIBLE_ARCHITECTURE,`${S.prettyLocator(r,t)} The ${process.platform}-${process.arch} architecture is incompatible with this module, ${e} skipped.`),!1)}function Z0(t,e,r,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([Gn.SCRIPT,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([Gn.SHELLCODE,"node-gyp rebuild"]),s.length===0?[]:t.linkType!==gt.HARD?(n==null||n.reportWarningOnce(z.SOFT_LINK_BUILD,`${S.prettyLocator(i,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(n==null||n.reportInfoOnce(z.BUILD_DISABLED,`${S.prettyLocator(i,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!r.built?(n==null||n.reportWarningOnce(z.DISABLED_BUILD_SCRIPTS,`${S.prettyLocator(i,t)} lists build scripts, but all build scripts have been disabled.`),[]):oce(t,"build",{configuration:i,report:n})?s:[]}var g6e=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function rT(t){return t.packageFs.getExtractHint({relevantExtensions:g6e})}function iT(t){let e=v.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var nT={};it(nT,{getUnpluggedPath:()=>ZC});function ZC(t,{configuration:e}){return v.resolve(e.get("pnpUnpluggedFolder"),S.slugifyLocator(t))}var f6e=new Set([S.makeIdent(null,"nan").identHash,S.makeIdent(null,"node-gyp").identHash,S.makeIdent(null,"node-pre-gyp").identHash,S.makeIdent(null,"node-addon-api").identHash,S.makeIdent(null,"fsevents").identHash]),jc=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,r){return!(r.project.configuration.get("nodeLinker")!=="pnp"||r.project.configuration.get("pnpMode")!==this.mode)}async findPackageLocation(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})),s={name:S.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return M.toPortablePath(o.packageLocation)}async findPackageLocator(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))return null;let s=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})).findPackageLocator(M.fromPortablePath(e));return s?S.makeLocator(S.parseIdent(s.name),s.reference):null}makeInstaller(e){return new Cf(e)}},Cf=class{constructor(e){this.opts=e;this.mode="strict";this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,r){let i=S.stringifyIdent(e),n=e.reference,s=!!this.opts.project.tryWorkspaceByLocator(e),o=S.isVirtualLocator(e),a=e.peerDependencies.size>0&&!o,l=!a&&!s,c=!a&&e.linkType!==gt.SOFT,u,g;if(l||c){let B=o?S.devirtualizeLocator(e):e;u=this.customData.store.get(B.locatorHash),typeof u=="undefined"&&(u=await h6e(r),e.linkType===gt.HARD&&this.customData.store.set(B.locatorHash,u)),u.manifest.type==="module"&&(this.isESMLoaderRequired=!0),g=this.opts.project.getDependencyMeta(B,e.version)}let f=l?Z0(e,u,g,{configuration:this.opts.project.configuration,report:this.opts.report}):[],h=c?await this.unplugPackageIfNeeded(e,u,r,g):r.packageFs;if(v.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let p=v.resolve(h.getRealPath(),r.prefixPath),d=sT(this.opts.project.cwd,p),m=new Map,E=new Set;if(o){for(let B of e.peerDependencies.values())m.set(S.stringifyIdent(B),null),E.add(S.stringifyIdent(B));if(!s){let B=S.devirtualizeLocator(e);this.virtualTemplates.set(B.locatorHash,{location:sT(this.opts.project.cwd,Pr.resolveVirtual(p)),locator:B})}}return de.getMapWithDefault(this.packageRegistry,i).set(n,{packageLocation:d,packageDependencies:m,packagePeers:E,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:p,buildDirective:f.length>0?f:null}}async attachInternalDependencies(e,r){let i=this.getPackageInformation(e);for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){for(let i of r)this.getDiskInformation(i).packageDependencies.set(S.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=qA(this.opts.project);if(T.existsSync(e.cjsLegacy)&&(this.opts.report.reportWarning(z.UNNAMED,`Removing the old ${ue.pretty(this.opts.project.configuration,wt.pnpJs,ue.Type.PATH)} file. You might need to manually update existing references to reference the new ${ue.pretty(this.opts.project.configuration,wt.pnpCjs,ue.Type.PATH)} file. If you use Editor SDKs, you'll have to rerun ${ue.pretty(this.opts.project.configuration,"yarn sdks",ue.Type.CODE)}.`),await T.removePromise(e.cjsLegacy)),this.isEsmEnabled()||await T.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await T.removePromise(e.cjs),await T.removePromise(this.opts.project.configuration.get("pnpDataPath")),await T.removePromise(e.esmLoader);return}for(let{locator:u,location:g}of this.virtualTemplates.values())de.getMapWithDefault(this.packageRegistry,S.stringifyIdent(u)).set(u.reference,{packageLocation:g,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),i=this.opts.project.workspaces.map(({anchoredLocator:u})=>({name:S.stringifyIdent(u),reference:u.reference})),n=r!=="none",s=[],o=new Map,a=de.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),l=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let u of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(u)&&s.push({name:S.stringifyIdent(u),reference:u.reference});return await this.finalizeInstallWithPnp({dependencyTreeRoots:i,enableTopLevelFallback:n,fallbackExclusionList:s,fallbackPool:o,ignorePattern:a,packageRegistry:l,shebang:c}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=qA(this.opts.project),i=this.opts.project.configuration.get("pnpDataPath"),n=await this.locateNodeModules(e.ignorePattern);if(n.length>0){this.opts.report.reportWarning(z.DANGEROUS_NODE_MODULES,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let o of n)await T.removePromise(o)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let o=_le(e);await T.changeFilePromise(r.cjs,o,{automaticNewlines:!0,mode:493}),await T.removePromise(i)}else{let o=v.relative(v.dirname(r.cjs),i),{dataFile:a,loaderFile:l}=Xle(_(P({},e),{dataLocation:o}));await T.changeFilePromise(r.cjs,l,{automaticNewlines:!0,mode:493}),await T.changeFilePromise(i,a,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(z.UNNAMED,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await T.changeFilePromise(r.esmLoader,(0,tT.default)(),{automaticNewlines:!0,mode:420}));let s=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await T.removePromise(s);else for(let o of await T.readdirPromise(s)){let a=v.resolve(s,o);this.unpluggedPaths.has(a)||await T.removePromise(a)}}async locateNodeModules(e){let r=[],i=e?new RegExp(e):null;for(let n of this.opts.project.workspaces){let s=v.join(n.cwd,"node_modules");if(i&&i.test(v.relative(this.opts.project.cwd,n.cwd))||!T.existsSync(s))continue;let o=await T.readdirPromise(s,{withFileTypes:!0}),a=o.filter(l=>!l.isDirectory()||l.name===".bin"||!l.name.startsWith("."));if(a.length===o.length)r.push(s);else for(let l of a)r.push(v.join(s,l.name))}return r}async unplugPackageIfNeeded(e,r,i,n){return this.shouldBeUnplugged(e,r,n)?this.unplugPackage(e,i):i.packageFs}shouldBeUnplugged(e,r,i){return typeof i.unplugged!="undefined"?i.unplugged:f6e.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(Z0(e,r,i,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r){let i=ZC(e,{configuration:this.opts.project.configuration});if(this.opts.project.disabledLocators.has(e.locatorHash))return new Xo(i,{baseFs:r.packageFs,pathUtils:v});this.unpluggedPaths.add(i);let n=v.join(i,r.prefixPath,".ready");return await T.existsPromise(n)?new Ft(i):(this.opts.project.storedBuildState.delete(e.locatorHash),await T.mkdirPromise(i,{recursive:!0}),await T.copyPromise(i,Se.dot,{baseFs:r.packageFs,overwrite:!1}),await T.writeFilePromise(n,""),new Ft(i))}getPackageInformation(e){let r=S.stringifyIdent(e),i=e.reference,n=this.packageRegistry.get(r);if(!n)throw new Error(`Assertion failed: The package information store should have been available (for ${S.prettyIdent(this.opts.project.configuration,e)})`);let s=n.get(i);if(!s)throw new Error(`Assertion failed: The package information should have been available (for ${S.prettyLocator(this.opts.project.configuration,e)})`);return s}getDiskInformation(e){let r=de.getMapWithDefault(this.packageRegistry,"@@disk"),i=sT(this.opts.project.cwd,e);return de.getFactoryWithDefault(r,i,()=>({packageLocation:i,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1}))}};function sT(t,e){let r=v.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function h6e(t){var i;let e=(i=await Ze.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?i:new Ze,r=new Set(["preinstall","install","postinstall"]);for(let n of e.scripts.keys())r.has(n)||e.scripts.delete(n);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:rT(t),hasBindingGyp:iT(t)}}}var ace=ie(Nn());var $C=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);if(e.get("nodeLinker")!=="pnp")throw new me("This command can only be used if the `nodeLinker` option is set to `pnp`");await r.restoreInstallState();let s=new Set(this.patterns),o=this.patterns.map(f=>{let h=S.parseDescriptor(f),p=h.range!=="unknown"?h:S.makeDescriptor(h,"*");if(!qt.validRange(p.range))throw new me(`The range of the descriptor patterns must be a valid semver range (${S.prettyDescriptor(e,p)})`);return d=>{let m=S.stringifyIdent(d);return!ace.default.isMatch(m,S.stringifyIdent(p))||d.version&&!qt.satisfiesWithPrereleases(d.version,p.range)?!1:(s.delete(f),!0)}}),a=()=>{let f=[];for(let h of r.storedPackages.values())!r.tryWorkspaceByLocator(h)&&!S.isVirtualLocator(h)&&o.some(p=>p(h))&&f.push(h);return f},l=f=>{let h=new Set,p=[],d=(m,E)=>{if(!h.has(m.locatorHash)&&(h.add(m.locatorHash),!r.tryWorkspaceByLocator(m)&&o.some(B=>B(m))&&p.push(m),!(E>0&&!this.recursive)))for(let B of m.dependencies.values()){let b=r.storedResolutions.get(B.descriptorHash);if(!b)throw new Error("Assertion failed: The resolution should have been registered");let R=r.storedPackages.get(b);if(!R)throw new Error("Assertion failed: The package should have been registered");d(R,E+1)}};for(let m of f){let E=r.storedPackages.get(m.anchoredLocator.locatorHash);if(!E)throw new Error("Assertion failed: The package should have been registered");d(E,0)}return p},c,u;if(this.all&&this.recursive?(c=a(),u="the project"):this.all?(c=l(r.workspaces),u="any workspace"):(c=l([i]),u="this workspace"),s.size>1)throw new me(`Patterns ${ue.prettyList(e,s,ue.Type.CODE)} don't match any packages referenced by ${u}`);if(s.size>0)throw new me(`Pattern ${ue.prettyList(e,s,ue.Type.CODE)} doesn't match any packages referenced by ${u}`);return c=de.sortMap(c,f=>S.stringifyLocator(f)),(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async f=>{var h;for(let p of c){let d=(h=p.version)!=null?h:"unknown",m=r.topLevelWorkspace.manifest.ensureDependencyMeta(S.makeDescriptor(p,d));m.unplugged=!0,f.reportInfo(z.UNNAMED,`Will unpack ${S.prettyLocator(e,p)} to ${ue.pretty(e,ZC(p,{configuration:e}),ue.Type.PATH)}`),f.reportJson({locator:S.stringifyLocator(p),version:d})}await r.topLevelWorkspace.persistManifest(),f.reportSeparator(),await r.install({cache:n,report:f})})).exitCode()}};$C.paths=[["unplug"]],$C.usage=ye.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Ace=$C;var qA=t=>({cjs:v.join(t.cwd,wt.pnpCjs),cjsLegacy:v.join(t.cwd,wt.pnpJs),esmLoader:v.join(t.cwd,".pnp.loader.mjs")}),uce=t=>/\s/.test(t)?JSON.stringify(t):t;async function p6e(t,e,r){let i=qA(t),n=`--require ${uce(M.fromPortablePath(i.cjs))}`;if(T.existsSync(i.esmLoader)&&(n=`${n} --experimental-loader ${(0,cce.pathToFileURL)(M.fromPortablePath(i.esmLoader)).href}`),i.cjs.includes(" ")&&lce.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(T.existsSync(i.cjs)){let s=e.NODE_OPTIONS||"",o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;s=s.replace(o," ").replace(a," ").trim(),s=s?`${n} ${s}`:n,e.NODE_OPTIONS=s}}async function d6e(t,e){let r=qA(t);e(r.cjs),e(r.esmLoader),e(t.configuration.get("pnpDataPath")),e(t.configuration.get("pnpUnpluggedFolder"))}var C6e={hooks:{populateYarnPaths:d6e,setupScriptEnvironment:p6e},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:ge.STRING,default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:ge.STRING,default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:ge.STRING,default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:ge.STRING,default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:ge.BOOLEAN,default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:ge.BOOLEAN,default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:ge.STRING,default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:ge.ABSOLUTE_PATH,default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:ge.ABSOLUTE_PATH,default:"./.pnp.data.json"}},linkers:[jc],commands:[Ace]},m6e=C6e;var Cce=ie(dce());var uT=ie(require("crypto")),mce=ie(require("fs")),Ice=1,gi="node_modules",gT=".bin",Ece=".yarn-state.yml",Bi;(function(i){i.CLASSIC="classic",i.HARDLINKS_LOCAL="hardlinks-local",i.HARDLINKS_GLOBAL="hardlinks-global"})(Bi||(Bi={}));var fT=class{constructor(){this.installStateCache=new Map}supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="node-modules"}async findPackageLocation(e,r){let i=r.project.tryWorkspaceByLocator(e);if(i)return i.cwd;let n=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(n===null)throw new me("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let s=n.locatorMap.get(S.stringifyLocator(e));if(!s){let a=new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw a.code="LOCATOR_NOT_INSTALLED",a}let o=r.project.configuration.startingCwd;return s.locations.find(a=>v.contains(o,a))||s.locations[0]}async findPackageLocator(e,r){let i=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(i===null)return null;let{locationRoot:n,segments:s}=$0(v.resolve(e),{skipPrefix:r.project.cwd}),o=i.locationTree.get(n);if(!o)return null;let a=o.locator;for(let l of s){if(o=o.children.get(l),!o)break;a=o.locator||a}return S.parseLocator(a)}makeInstaller(e){return new yce(e)}},yce=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:1})}attachCustomData(e){this.customData=e}async installPackage(e,r){var u;let i=v.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.customData.store.get(e.locatorHash);if(typeof n=="undefined"&&(n=await L6e(e,r),e.linkType===gt.HARD&&this.customData.store.set(e.locatorHash,n)),!Ws.checkAndReportManifestCompatibility(e,"link",{configuration:this.opts.project.configuration,report:this.opts.report}))return{packageLocation:null,buildDirective:null};let s=new Map,o=new Set;s.has(S.stringifyIdent(e))||s.set(S.stringifyIdent(e),e.reference);let a=e;if(S.isVirtualLocator(e)){a=S.devirtualizeLocator(e);for(let g of e.peerDependencies.values())s.set(S.stringifyIdent(g),null),o.add(S.stringifyIdent(g))}let l={packageLocation:`${M.fromPortablePath(i)}/`,packageDependencies:s,packagePeers:o,linkType:e.linkType,discardFromLookup:(u=r.discardFromLookup)!=null?u:!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:l});let c=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(a.locatorHash,c),{packageLocation:i,buildDirective:null}}async attachInternalDependencies(e,r){let i=this.localStore.get(e.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected information object to have been registered");for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.pnpNode.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),r=await hT(this.opts.project),i=this.opts.project.configuration.get("nmMode");(r===null||i!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:i});let n=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmHoistingLimits");try{h=de.validateEnum(Sn,(d=(p=f.manifest.installConfig)==null?void 0:p.hoistingLimits)!=null?d:h)}catch(m){let E=S.prettyWorkspace(this.opts.project.configuration,f);this.opts.report.reportWarning(z.INVALID_MANIFEST,`${E}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(Sn).join(", ")}, using default: "${h}"`)}return[f.relativeCwd,h]})),s=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmSelfReferences");return h=(d=(p=f.manifest.installConfig)==null?void 0:p.selfReferences)!=null?d:h,[f.relativeCwd,h]})),o={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(f,h)=>Array.isArray(h)?{name:h[0],reference:h[1]}:{name:f,reference:h},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(f=>{let h=f.anchoredLocator;return{name:S.stringifyIdent(f.locator),reference:h.reference}}),getPackageInformation:f=>{let h=f.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:S.makeLocator(S.parseIdent(f.name),f.reference),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the package reference to have been registered");return p.pnpNode},findPackageLocator:f=>{let h=this.opts.project.tryWorkspaceByCwd(M.toPortablePath(f));if(h!==null){let p=h.anchoredLocator;return{name:S.stringifyIdent(p),reference:p.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:f=>M.fromPortablePath(Pr.resolveVirtual(M.toPortablePath(f)))},{tree:a,errors:l,preserveSymlinksRequired:c}=VC(o,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:n,project:this.opts.project,selfReferencesByCwd:s});if(!a){for(let{messageName:f,text:h}of l)this.opts.report.reportError(f,h);return}let u=WL(a);await T6e(r,u,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async f=>{let h=S.parseLocator(f),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the slot to exist");return p.customPackageData.manifest}});let g=[];for(let[f,h]of u.entries()){if(wce(f))continue;let p=S.parseLocator(f),d=this.localStore.get(p.locatorHash);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(d.pkg))continue;let m=Ws.extractBuildScripts(d.pkg,d.customPackageData,d.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});m.length!==0&&g.push({buildLocations:h.locations,locatorHash:p.locatorHash,buildDirective:m})}return c&&this.opts.report.reportWarning(z.NM_PRESERVE_SYMLINKS_REQUIRED,`The application uses portals and that's why ${ue.pretty(this.opts.project.configuration,"--preserve-symlinks",ue.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:g}}};async function L6e(t,e){var n;let r=(n=await Ze.tryFind(e.prefixPath,{baseFs:e.packageFs}))!=null?n:new Ze,i=new Set(["preinstall","install","postinstall"]);for(let s of r.scripts.keys())i.has(s)||r.scripts.delete(s);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{extractHint:Ws.getExtractHint(e),hasBindingGyp:Ws.hasBindingGyp(e)}}}async function M6e(t,e,r,i){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will -`,n+=`# cause your node_modules installation to become invalidated. -`,n+=` -`,n+=`__metadata: -`,n+=` version: ${Ice} -`,n+=` nmMode: ${i.value} -`;let s=Array.from(e.keys()).sort(),o=S.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let c of s){let u=e.get(c);n+=` -`,n+=`${JSON.stringify(c)}: -`,n+=` locations: -`;for(let g of u.locations){let f=v.contains(t.cwd,g);if(f===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` - ${JSON.stringify(f)} -`}if(u.aliases.length>0){n+=` aliases: -`;for(let g of u.aliases)n+=` - ${JSON.stringify(g)} -`}if(c===o&&r.size>0){n+=` bin: -`;for(let[g,f]of r){let h=v.contains(t.cwd,g);if(h===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` ${JSON.stringify(h)}: -`;for(let[p,d]of f){let m=v.relative(v.join(g,gi),d);n+=` ${JSON.stringify(p)}: ${JSON.stringify(m)} -`}}}}let a=t.cwd,l=v.join(a,gi,Ece);await T.changeFilePromise(l,n,{automaticNewlines:!0})}async function hT(t,{unrollAliases:e=!1}={}){let r=t.cwd,i=v.join(r,gi,Ece);if(!T.existsSync(i))return null;let n=Ei(await T.readFilePromise(i,"utf8"));if(n.__metadata.version>Ice)return null;let s=n.__metadata.nmMode||Bi.CLASSIC,o=new Map,a=new Map;delete n.__metadata;for(let[l,c]of Object.entries(n)){let u=c.locations.map(f=>v.join(r,f)),g=c.bin;if(g)for(let[f,h]of Object.entries(g)){let p=v.join(r,M.toPortablePath(f)),d=de.getMapWithDefault(a,p);for(let[m,E]of Object.entries(h))d.set(kr(m),M.toPortablePath([p,gi,E].join(v.delimiter)))}if(o.set(l,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:c.aliases||[]}),e&&c.aliases)for(let f of c.aliases){let{scope:h,name:p}=S.parseLocator(l),d=S.makeLocator(S.makeIdent(h,p),f),m=S.stringifyLocator(d);o.set(m,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:[]})}}return{locatorMap:o,binSymlinks:a,locationTree:Bce(o,{skipPrefix:t.cwd}),nmMode:s}}var If=async(t,e)=>{if(t.split(v.sep).indexOf(gi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop&&(await T.lstatPromise(t)).isSymbolicLink()){await T.unlinkPromise(t);return}let r=await T.readdirPromise(t,{withFileTypes:!0});for(let i of r){let n=v.join(t,kr(i.name));i.isDirectory()?(i.name!==gi||e&&e.innerLoop)&&await If(n,{innerLoop:!0,contentsOnly:!1}):await T.unlinkPromise(n)}e.contentsOnly||await T.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},Qce=4,$0=(t,{skipPrefix:e})=>{let r=v.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let i=r.split(v.sep).filter(l=>l!==""),n=i.indexOf(gi),s=i.slice(0,n).join(v.sep),o=v.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},Bce=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let i=()=>({children:new Map,linkType:gt.HARD});for(let[n,s]of t.entries()){if(s.linkType===gt.SOFT&&v.contains(e,s.target)!==null){let a=de.getFactoryWithDefault(r,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=$0(o,{skipPrefix:e}),c=de.getFactoryWithDefault(r,a,i);for(let u=0;u{let r;try{process.platform==="win32"&&(r=await T.lstatPromise(t))}catch(i){}process.platform=="win32"&&(!r||r.isDirectory())?await T.symlinkPromise(t,e,"junction"):await T.symlinkPromise(v.relative(v.dirname(e),t),e)};async function bce(t,e,r){let i=v.join(t,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));try{await T.writeFilePromise(i,r);try{await T.linkPromise(i,e)}catch(n){}}finally{await T.unlinkPromise(i)}}async function O6e({srcPath:t,dstPath:e,srcMode:r,globalHardlinksStore:i,baseFs:n,nmMode:s,digest:o}){if(s.value===Bi.HARDLINKS_GLOBAL&&i&&o){let l=v.join(i,o.substring(0,2),`${o.substring(2)}.dat`),c;try{if(await mn.checksumFile(l,{baseFs:T,algorithm:"sha1"})!==o){let g=v.join(i,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));await T.renamePromise(l,g);let f=await n.readFilePromise(t);await T.writeFilePromise(g,f);try{await T.linkPromise(g,l),await T.unlinkPromise(g)}catch(h){}}await T.linkPromise(l,e),c=!0}catch(u){c=!1}if(!c){let u=await n.readFilePromise(t);await bce(i,l,u);try{await T.linkPromise(l,e)}catch(g){g&&g.code&&g.code=="EXDEV"&&(s.value=Bi.HARDLINKS_LOCAL,await n.copyFilePromise(t,e))}}}else await n.copyFilePromise(t,e);let a=r&511;a!==420&&await T.chmodPromise(e,a)}var JA;(function(i){i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink"})(JA||(JA={}));var K6e=async(t,e,{baseFs:r,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await T.mkdirPromise(t,{recursive:!0});let o=async(l=Se.dot)=>{let c=v.join(e,l),u=await r.readdirPromise(c,{withFileTypes:!0}),g=new Map;for(let f of u){let h=v.join(l,f.name),p,d=v.join(c,f.name);if(f.isFile()){if(p={kind:JA.FILE,mode:(await r.lstatPromise(d)).mode},n.value===Bi.HARDLINKS_GLOBAL){let m=await mn.checksumFile(d,{baseFs:r,algorithm:"sha1"});p.digest=m}}else if(f.isDirectory())p={kind:JA.DIRECTORY};else if(f.isSymbolicLink())p={kind:JA.SYMLINK,symlinkTo:await r.readlinkPromise(d)};else throw new Error(`Unsupported file type (file: ${d}, mode: 0o${await r.statSync(d).mode.toString(8).padStart(6,"0")})`);if(g.set(h,p),f.isDirectory()&&h!==gi){let m=await o(h);for(let[E,B]of m)g.set(E,B)}}return g},a;if(n.value===Bi.HARDLINKS_GLOBAL&&i&&s){let l=v.join(i,s.substring(0,2),`${s.substring(2)}.json`);try{a=new Map(Object.entries(JSON.parse(await T.readFilePromise(l,"utf8"))))}catch(c){a=await o(),await bce(i,l,Buffer.from(JSON.stringify(Object.fromEntries(a))))}}else a=await o();for(let[l,c]of a){let u=v.join(e,l),g=v.join(t,l);c.kind===JA.DIRECTORY?await T.mkdirPromise(g,{recursive:!0}):c.kind===JA.FILE?await O6e({srcPath:u,dstPath:g,srcMode:c.mode,digest:c.digest,nmMode:n,baseFs:r,globalHardlinksStore:i}):c.kind===JA.SYMLINK&&await pT(v.resolve(v.dirname(g),c.symlinkTo),g)}};function U6e(t,e){let r=new Map([...t]),i=new Map([...e]);for(let[n,s]of t){let o=v.join(n,gi);if(!T.existsSync(o)){s.children.delete(gi);for(let a of i.keys())v.contains(o,a)!==null&&i.delete(a)}}return{locationTree:r,binSymlinks:i}}function wce(t){let e=S.parseDescriptor(t);return S.isVirtualDescriptor(e)&&(e=S.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function H6e(t,e,r,{loadManifest:i}){let n=new Map;for(let[a,{locations:l}]of t){let c=wce(a)?null:await i(a,l[0]),u=new Map;if(c)for(let[g,f]of c.bin){let h=v.join(l[0],f);f!==""&&T.existsSync(h)&&u.set(g,f)}n.set(a,u)}let s=new Map,o=(a,l,c)=>{let u=new Map,g=v.contains(r,a);if(c.locator&&g!==null){let f=n.get(c.locator);for(let[h,p]of f){let d=v.join(a,M.toPortablePath(p));u.set(kr(h),d)}for(let[h,p]of c.children){let d=v.join(a,h),m=o(d,d,p);m.size>0&&s.set(a,new Map([...s.get(a)||new Map,...m]))}}else for(let[f,h]of c.children){let p=o(v.join(a,f),l,h);for(let[d,m]of p)u.set(d,m)}return u};for(let[a,l]of e){let c=o(a,a,l);c.size>0&&s.set(a,new Map([...s.get(a)||new Map,...c]))}return s}var vce=(t,e)=>{if(!t||!e)return t===e;let r=S.parseLocator(t);S.isVirtualLocator(r)&&(r=S.devirtualizeLocator(r));let i=S.parseLocator(e);return S.isVirtualLocator(i)&&(i=S.devirtualizeLocator(i)),S.areLocatorsEqual(r,i)};function dT(t){return v.join(t.get("globalFolder"),"store")}async function T6e(t,e,{baseFs:r,project:i,report:n,loadManifest:s,realLocatorChecksums:o}){let a=v.join(i.cwd,gi),{locationTree:l,binSymlinks:c}=U6e(t.locationTree,t.binSymlinks),u=Bce(e,{skipPrefix:i.cwd}),g=[],f=async({srcDir:L,dstDir:K,linkType:J,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})=>{let V=(async()=>{try{J===gt.SOFT?(await T.mkdirPromise(v.dirname(K),{recursive:!0}),await pT(v.resolve(L),K)):await K6e(K,L,{baseFs:r,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})}catch(W){throw W.message=`While persisting ${L} -> ${K} ${W.message}`,W}finally{B.tick()}})().then(()=>g.splice(g.indexOf(V),1));g.push(V),g.length>Qce&&await Promise.race(g)},h=async(L,K,J)=>{let ne=(async()=>{let q=async(A,V,W)=>{try{W.innerLoop||await T.mkdirPromise(V,{recursive:!0});let X=await T.readdirPromise(A,{withFileTypes:!0});for(let F of X){if(!W.innerLoop&&F.name===gT)continue;let D=v.join(A,F.name),he=v.join(V,F.name);F.isDirectory()?(F.name!==gi||W&&W.innerLoop)&&(await T.mkdirPromise(he,{recursive:!0}),await q(D,he,_(P({},W),{innerLoop:!0}))):H.value===Bi.HARDLINKS_LOCAL||H.value===Bi.HARDLINKS_GLOBAL?await T.linkPromise(D,he):await T.copyFilePromise(D,he,mce.default.constants.COPYFILE_FICLONE)}}catch(X){throw W.innerLoop||(X.message=`While cloning ${A} -> ${V} ${X.message}`),X}finally{W.innerLoop||B.tick()}};await q(L,K,J)})().then(()=>g.splice(g.indexOf(ne),1));g.push(ne),g.length>Qce&&await Promise.race(g)},p=async(L,K,J)=>{if(!J)K.children.has(gi)&&await If(v.join(L,gi),{contentsOnly:!1}),await If(L,{contentsOnly:L===a});else for(let[ne,q]of K.children){let A=J.children.get(ne);await p(v.join(L,ne),q,A)}};for(let[L,K]of l){let J=u.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await p(v.join(L,ne),q,A)}}let d=async(L,K,J)=>{if(!J)K.children.has(gi)&&await If(v.join(L,gi),{contentsOnly:!0}),await If(L,{contentsOnly:K.linkType===gt.HARD});else{vce(K.locator,J.locator)||await If(L,{contentsOnly:K.linkType===gt.HARD});for(let[ne,q]of K.children){let A=J.children.get(ne);await d(v.join(L,ne),q,A)}}};for(let[L,K]of u){let J=l.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await d(v.join(L,ne),q,A)}}let m=new Map,E=[];for(let[L,{locations:K}]of t.locatorMap.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=u.get(ne),V=ne;if(A){for(let W of q)if(V=v.join(V,W),A=A.children.get(W),!A)break;if(A){let W=vce(A.locator,L),X=e.get(A.locator),F=X.target,D=V,he=X.linkType;if(W)m.has(F)||m.set(F,D);else if(F!==D){let pe=S.parseLocator(A.locator);S.isVirtualLocator(pe)&&(pe=S.devirtualizeLocator(pe)),E.push({srcDir:F,dstDir:D,linkType:he,realLocatorHash:pe.locatorHash})}}}}for(let[L,{locations:K}]of e.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=l.get(ne),V=u.get(ne),W=ne,X=e.get(L),F=S.parseLocator(L);S.isVirtualLocator(F)&&(F=S.devirtualizeLocator(F));let D=F.locatorHash,he=X.target,pe=J;if(he===pe)continue;let Ne=X.linkType;for(let Pe of q)V=V.children.get(Pe);if(!A)E.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});else for(let Pe of q)if(W=v.join(W,Pe),A=A.children.get(Pe),!A){E.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});break}}let B=Xi.progressViaCounter(E.length),b=n.reportProgress(B),R=i.configuration.get("nmMode"),H={value:R};try{let L=H.value===Bi.HARDLINKS_GLOBAL?`${dT(i.configuration)}/v1`:null;if(L&&!await T.existsPromise(L)){await T.mkdirpPromise(L);for(let J=0;J<256;J++)await T.mkdirPromise(v.join(L,J.toString(16).padStart(2,"0")))}for(let J of E)(J.linkType===gt.SOFT||!m.has(J.srcDir))&&(m.set(J.srcDir,J.dstDir),await f(_(P({},J),{globalHardlinksStore:L,nmMode:H,packageChecksum:o.get(J.realLocatorHash)||null})));await Promise.all(g),g.length=0;for(let J of E){let ne=m.get(J.srcDir);J.linkType!==gt.SOFT&&J.dstDir!==ne&&await h(ne,J.dstDir,{nmMode:H})}await Promise.all(g),await T.mkdirPromise(a,{recursive:!0});let K=await H6e(e,u,i.cwd,{loadManifest:s});await G6e(c,K,i.cwd),await M6e(i,e,K,H),R==Bi.HARDLINKS_GLOBAL&&H.value==Bi.HARDLINKS_LOCAL&&n.reportWarningOnce(z.NM_HARDLINKS_MODE_DOWNGRADED,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{b.stop()}}async function G6e(t,e,r){for(let i of t.keys()){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);if(!e.has(i)){let n=v.join(i,gi,gT);await T.removePromise(n)}}for(let[i,n]of e){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);let s=v.join(i,gi,gT),o=t.get(i)||new Map;await T.mkdirPromise(s,{recursive:!0});for(let a of o.keys())n.has(a)||(await T.removePromise(v.join(s,a)),process.platform==="win32"&&await T.removePromise(v.join(s,kr(`${a}.cmd`))));for(let[a,l]of n){let c=o.get(a),u=v.join(s,a);c!==l&&(process.platform==="win32"?await(0,Cce.default)(M.fromPortablePath(l),M.fromPortablePath(u),{createPwshFile:!1}):(await T.removePromise(u),await pT(l,u),v.contains(r,await T.realpathPromise(l))!==null&&await T.chmodPromise(l,493)))}}}var CT=class extends jc{constructor(){super(...arguments);this.mode="loose"}makeInstaller(e){return new Sce(e)}},Sce=class extends Cf{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(e){let r=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),i=ice(e,this.opts.project.cwd,r),{tree:n,errors:s}=VC(i,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:u,text:g}of s)this.opts.report.reportError(u,g);return}let o=new Map;e.fallbackPool=o;let a=(u,g)=>{let f=S.parseLocator(g.locator),h=S.stringifyIdent(f);h===u?o.set(u,f.reference):o.set(u,[h,f.reference])},l=v.join(this.opts.project.cwd,wt.nodeModules),c=n.get(l);if(typeof c!="undefined"){if("target"in c)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let u of c.dirList){let g=v.join(l,u),f=n.get(g);if(typeof f=="undefined")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in f)a(u,f);else for(let h of f.dirList){let p=v.join(g,h),d=n.get(p);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in d)a(`${u}/${h}`,d);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var j6e={hooks:{cleanGlobalArtifacts:async t=>{let e=dT(t);await T.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:ge.STRING,values:[Sn.WORKSPACES,Sn.DEPENDENCIES,Sn.NONE],default:Sn.NONE},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:ge.STRING,values:[Bi.CLASSIC,Bi.HARDLINKS_LOCAL,Bi.HARDLINKS_GLOBAL],default:Bi.CLASSIC},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:ge.BOOLEAN,default:!0}},linkers:[fT,CT]},Y6e=j6e;var yM={};it(yM,{default:()=>ZVe,npmConfigUtils:()=>gr,npmHttpUtils:()=>Lt,npmPublishUtils:()=>Rf});var Rce=ie(Or());var ir="npm:";var Lt={};it(Lt,{AuthType:()=>jn,customPackageError:()=>W6e,del:()=>_6e,get:()=>zs,getIdentUrl:()=>zA,handleInvalidAuthenticationError:()=>WA,post:()=>z6e,put:()=>V6e});var Pce=ie(aC()),Dce=ie(require("url"));var gr={};it(gr,{RegistryType:()=>ja,getAuditRegistry:()=>q6e,getAuthConfiguration:()=>ET,getDefaultRegistry:()=>eQ,getPublishRegistry:()=>xce,getRegistryConfiguration:()=>kce,getScopeConfiguration:()=>IT,getScopeRegistry:()=>Ya,normalizeRegistry:()=>To});var ja;(function(i){i.AUDIT_REGISTRY="npmAuditRegistry",i.FETCH_REGISTRY="npmRegistryServer",i.PUBLISH_REGISTRY="npmPublishRegistry"})(ja||(ja={}));function To(t){return t.replace(/\/$/,"")}function q6e(t,{configuration:e}){let r=e.get(ja.AUDIT_REGISTRY);return r!==null?To(r):xce(t,{configuration:e})}function xce(t,{configuration:e}){var r;return((r=t.publishConfig)==null?void 0:r.registry)?To(t.publishConfig.registry):t.name?Ya(t.name.scope,{configuration:e,type:ja.PUBLISH_REGISTRY}):eQ({configuration:e,type:ja.PUBLISH_REGISTRY})}function Ya(t,{configuration:e,type:r=ja.FETCH_REGISTRY}){let i=IT(t,{configuration:e});if(i===null)return eQ({configuration:e,type:r});let n=i.get(r);return n===null?eQ({configuration:e,type:r}):To(n)}function eQ({configuration:t,type:e=ja.FETCH_REGISTRY}){let r=t.get(e);return To(r!==null?r:t.get(ja.FETCH_REGISTRY))}function kce(t,{configuration:e}){let r=e.get("npmRegistries"),i=To(t),n=r.get(i);if(typeof n!="undefined")return n;let s=r.get(i.replace(/^[a-z]+:/,""));return typeof s!="undefined"?s:null}function IT(t,{configuration:e}){if(t===null)return null;let i=e.get("npmScopes").get(t);return i||null}function ET(t,{configuration:e,ident:r}){let i=r&&IT(r.scope,{configuration:e});return(i==null?void 0:i.get("npmAuthIdent"))||(i==null?void 0:i.get("npmAuthToken"))?i:kce(t,{configuration:e})||e}var jn;(function(n){n[n.NO_AUTH=0]="NO_AUTH",n[n.BEST_EFFORT=1]="BEST_EFFORT",n[n.CONFIGURATION=2]="CONFIGURATION",n[n.ALWAYS_AUTH=3]="ALWAYS_AUTH"})(jn||(jn={}));async function WA(t,{attemptedAs:e,registry:r,headers:i,configuration:n}){var s,o;if(((s=t.originalError)==null?void 0:s.name)==="HTTPError"&&((o=t.originalError)==null?void 0:o.response.statusCode)===401)throw new nt(z.AUTHENTICATION_INVALID,`Invalid authentication (${typeof e!="string"?`as ${await J6e(r,i,{configuration:n})}`:`attempted as ${e}`})`)}function W6e(t){var e;return((e=t.response)==null?void 0:e.statusCode)===404?"Package not found":null}function zA(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function zs(t,a){var l=a,{configuration:e,headers:r,ident:i,authType:n,registry:s}=l,o=qr(l,["configuration","headers","ident","authType","registry"]);if(i&&typeof s=="undefined"&&(s=Ya(i.scope,{configuration:e})),i&&i.scope&&typeof n=="undefined"&&(n=1),typeof s!="string")throw new Error("Assertion failed: The registry should be a string");let c=await tQ(s,{authType:n,configuration:e,ident:i});c&&(r=_(P({},r),{authorization:c}));try{return await Zt.get(t.charAt(0)==="/"?`${s}${t}`:t,P({configuration:e,headers:r},o))}catch(u){throw await WA(u,{registry:s,configuration:e,headers:r}),u}}async function z6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.post(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.post(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function V6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.put(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.put(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function _6e(t,l){var c=l,{attemptedAs:e,configuration:r,headers:i,ident:n,authType:s=3,registry:o}=c,a=qr(c,["attemptedAs","configuration","headers","ident","authType","registry"]);if(n&&typeof o=="undefined"&&(o=Ya(n.scope,{configuration:r})),typeof o!="string")throw new Error("Assertion failed: The registry should be a string");let u=await tQ(o,{authType:s,configuration:r,ident:n});u&&(i=_(P({},i),{authorization:u}));try{return await Zt.del(o+t,P({configuration:r,headers:i},a))}catch(g){if(!wT(g))throw await WA(g,{attemptedAs:e,registry:o,configuration:r,headers:i}),g;let f=await yT(),h=P(P({},i),BT(f));try{return await Zt.del(`${o}${t}`,P({configuration:r,headers:h},a))}catch(p){throw await WA(p,{attemptedAs:e,registry:o,configuration:r,headers:i}),p}}}async function tQ(t,{authType:e=2,configuration:r,ident:i}){let n=ET(t,{configuration:r,ident:i}),s=X6e(n,e);if(!s)return null;let o=await r.reduceHook(a=>a.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:i});if(o)return o;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let a=n.get("npmAuthIdent");return a.includes(":")?`Basic ${Buffer.from(a).toString("base64")}`:`Basic ${a}`}if(s&&e!==1)throw new nt(z.AUTHENTICATION_NOT_FOUND,"No authentication configured for request");return null}function X6e(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function J6e(t,e,{configuration:r}){var i;if(typeof e=="undefined"||typeof e.authorization=="undefined")return"an anonymous user";try{return(i=(await Zt.get(new Dce.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username)!=null?i:"an unknown user"}catch{return"an unknown user"}}async function yT(){if(process.env.TEST_ENV)return process.env.TEST_NPM_2FA_TOKEN||"";let{otp:t}=await(0,Pce.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return t}function wT(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch(i){return!1}}function BT(t){return{["npm-otp"]:t}}var QT=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i,params:n}=S.parseRange(e.reference);return!(!Rce.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let{params:i}=S.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await zs(i.__archiveUrl,{configuration:r.project.configuration,ident:e});return await Ai.convertToZip(n,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var bT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!S.tryParseDescriptor(e.range.slice(ir.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){let i=S.parseDescriptor(e.range.slice(ir.length),!0);return r.resolver.getResolutionDependencies(i,r)}async getCandidates(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return await i.resolver.getCandidates(n,r,i)}async getSatisfying(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return i.resolver.getSatisfying(n,r,i)}resolve(e,r){throw new Error("Unreachable")}};var vT=ie(Or()),Fce=ie(require("url"));var Vs=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let i=new Fce.URL(e.reference);return!(!vT.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i;try{i=await zs(Vs.getLocatorUrl(e),{configuration:r.project.configuration,ident:e})}catch(n){i=await zs(Vs.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:r.project.configuration,ident:e})}return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:i}){let n=Ya(e.scope,{configuration:i}),s=Vs.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===n+s||r===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=vT.default.clean(e.reference.slice(ir.length));if(r===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");return`${zA(e)}/-/${e.name}-${r}.tgz`}};var ST=ie(Or());var rQ=S.makeIdent(null,"node-gyp"),Z6e=/\b(node-gyp|prebuild-install)\b/,xT=class{supportsDescriptor(e,r){return e.range.startsWith(ir)?!!qt.validRange(e.range.slice(ir.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i}=S.parseRange(e.reference);return!!ST.default.valid(i)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);let s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=de.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new qt.SemVer(c);if(n.test(u))return u}catch{}return de.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=S.makeLocator(e,`${ir}${c.raw}`),g=s.versions[c.raw].dist.tarball;return Vs.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:S.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);return de.mapAndFilter(r,s=>{try{let{selector:o}=S.parseRange(s,{requireProtocol:ir}),a=new qt.SemVer(o);if(n.test(a))return{reference:s,version:a}}catch{}return de.mapAndFilter.skip}).sort((s,o)=>-s.version.compare(o.version)).map(({reference:s})=>S.makeLocator(e,s))}async resolve(e,r){let{selector:i}=S.parseRange(e.reference),n=ST.default.clean(i);if(n===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");let s=await zs(zA(e),{configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(s.versions,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return reference "${n}"`);let o=new Ze;if(o.load(s.versions[n]),!o.dependencies.has(rQ.identHash)&&!o.peerDependencies.has(rQ.identHash)){for(let a of o.scripts.values())if(a.match(Z6e)){o.dependencies.set(rQ.identHash,S.makeDescriptor(rQ,"latest")),r.report.reportWarningOnce(z.NODE_GYP_INJECTED,`${S.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}return typeof o.raw.deprecated=="string"&&r.report.reportWarningOnce(z.DEPRECATED_PACKAGE,`${S.prettyLocator(r.project.configuration,e)} is deprecated: ${o.raw.deprecated}`),_(P({},e),{version:n,languageName:"node",linkType:gt.HARD,conditions:o.getConditions(),dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin})}};var kT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!Rg.test(e.range.slice(ir.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(ir.length),s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"dist-tags"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data - missing "dist-tags" field');let o=s["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return tag "${n}"`);let a=o[n],l=S.makeLocator(e,`${ir}${a}`),c=s.versions[a].dist.tarball;return Vs.isConventionalTarballUrl(l,c,{configuration:i.project.configuration})?[l]:[S.bindLocator(l,{__archiveUrl:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Unreachable")}};var Rf={};it(Rf,{getGitHead:()=>_Ve,makePublishBody:()=>VVe});var CM={};it(CM,{default:()=>DVe,packUtils:()=>za});var za={};it(za,{genPackList:()=>QQ,genPackStream:()=>dM,genPackageManifest:()=>age,hasPackScripts:()=>hM,prepareForPack:()=>pM});var fM=ie(Nn()),sge=ie(nge()),oge=ie(require("zlib")),EVe=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],yVe=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function hM(t){return!!(Kt.hasWorkspaceScript(t,"prepack")||Kt.hasWorkspaceScript(t,"postpack"))}async function pM(t,{report:e},r){await Kt.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let i=v.join(t.cwd,Ze.fileName);await T.existsPromise(i)&&await t.manifest.loadFile(i,{baseFs:T}),await r()}finally{await Kt.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function dM(t,e){var s,o;typeof e=="undefined"&&(e=await QQ(t));let r=new Set;for(let a of(o=(s=t.manifest.publishConfig)==null?void 0:s.executableFiles)!=null?o:new Set)r.add(v.normalize(a));for(let a of t.manifest.bin.values())r.add(v.normalize(a));let i=sge.default.pack();process.nextTick(async()=>{for(let a of e){let l=v.normalize(a),c=v.resolve(t.cwd,l),u=v.join("package",l),g=await T.lstatPromise(c),f={name:u,mtime:new Date(mr.SAFE_TIME*1e3)},h=r.has(l)?493:420,p,d,m=new Promise((B,b)=>{p=B,d=b}),E=B=>{B?d(B):p()};if(g.isFile()){let B;l==="package.json"?B=Buffer.from(JSON.stringify(await age(t),null,2)):B=await T.readFilePromise(c),i.entry(_(P({},f),{mode:h,type:"file"}),B,E)}else g.isSymbolicLink()?i.entry(_(P({},f),{mode:h,type:"symlink",linkname:await T.readlinkPromise(c)}),E):E(new Error(`Unsupported file type ${g.mode} for ${M.fromPortablePath(l)}`));await m}i.finalize()});let n=(0,oge.createGzip)();return i.pipe(n),n}async function age(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function QQ(t){var g,f,h,p,d,m,E,B;let e=t.project,r=e.configuration,i={accept:[],reject:[]};for(let b of yVe)i.reject.push(b);for(let b of EVe)i.accept.push(b);i.reject.push(r.get("rcFilename"));let n=b=>{if(b===null||!b.startsWith(`${t.cwd}/`))return;let R=v.relative(t.cwd,b),H=v.resolve(Se.root,R);i.reject.push(H)};n(v.resolve(e.cwd,r.get("lockfileFilename"))),n(r.get("cacheFolder")),n(r.get("globalFolder")),n(r.get("installStatePath")),n(r.get("virtualFolder")),n(r.get("yarnPath")),await r.triggerHook(b=>b.populateYarnPaths,e,b=>{n(b)});for(let b of e.workspaces){let R=v.relative(t.cwd,b.cwd);R!==""&&!R.match(/^(\.\.)?\//)&&i.reject.push(`/${R}`)}let s={accept:[],reject:[]},o=(f=(g=t.manifest.publishConfig)==null?void 0:g.main)!=null?f:t.manifest.main,a=(p=(h=t.manifest.publishConfig)==null?void 0:h.module)!=null?p:t.manifest.module,l=(m=(d=t.manifest.publishConfig)==null?void 0:d.browser)!=null?m:t.manifest.browser,c=(B=(E=t.manifest.publishConfig)==null?void 0:E.bin)!=null?B:t.manifest.bin;o!=null&&s.accept.push(v.resolve(Se.root,o)),a!=null&&s.accept.push(v.resolve(Se.root,a)),typeof l=="string"&&s.accept.push(v.resolve(Se.root,l));for(let b of c.values())s.accept.push(v.resolve(Se.root,b));if(l instanceof Map)for(let[b,R]of l.entries())s.accept.push(v.resolve(Se.root,b)),typeof R=="string"&&s.accept.push(v.resolve(Se.root,R));let u=t.manifest.files!==null;if(u){s.reject.push("/*");for(let b of t.manifest.files)Age(s.accept,b,{cwd:Se.root})}return await wVe(t.cwd,{hasExplicitFileList:u,globalList:i,ignoreList:s})}async function wVe(t,{hasExplicitFileList:e,globalList:r,ignoreList:i}){let n=[],s=new Zo(t),o=[[Se.root,[i]]];for(;o.length>0;){let[a,l]=o.pop(),c=await s.lstatPromise(a);if(!cge(a,{globalList:r,ignoreLists:c.isDirectory()?null:l}))if(c.isDirectory()){let u=await s.readdirPromise(a),g=!1,f=!1;if(!e||a!==Se.root)for(let d of u)g=g||d===".gitignore",f=f||d===".npmignore";let h=f?await lge(s,a,".npmignore"):g?await lge(s,a,".gitignore"):null,p=h!==null?[h].concat(l):l;cge(a,{globalList:r,ignoreLists:l})&&(p=[...l,{accept:[],reject:["**/*"]}]);for(let d of u)o.push([v.resolve(a,d),p])}else(c.isFile()||c.isSymbolicLink())&&n.push(v.relative(Se.root,a))}return n.sort()}async function lge(t,e,r){let i={accept:[],reject:[]},n=await t.readFilePromise(v.join(e,r),"utf8");for(let s of n.split(/\n/g))Age(i.reject,s,{cwd:e});return i}function BVe(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=v.resolve(e,t)),r&&(t=`!${t}`),t}function Age(t,e,{cwd:r}){let i=e.trim();i===""||i[0]==="#"||t.push(BVe(i,{cwd:r}))}function cge(t,{globalList:e,ignoreLists:r}){if(bQ(t,e.accept))return!1;if(bQ(t,e.reject))return!0;if(r!==null)for(let i of r){if(bQ(t,i.accept))return!1;if(bQ(t,i.reject))return!0}return!1}function bQ(t,e){let r=e,i=[];for(let n=0;n{await pM(i,{report:l},async()=>{l.reportJson({base:M.fromPortablePath(i.cwd)});let c=await QQ(i);for(let u of c)l.reportInfo(null,M.fromPortablePath(u)),l.reportJson({location:M.fromPortablePath(u)});if(!this.dryRun){let u=await dM(i,c),g=T.createWriteStream(s);u.pipe(g),await new Promise(f=>{g.on("finish",f)})}}),this.dryRun||(l.reportInfo(z.UNNAMED,`Package archive generated in ${ue.pretty(e,s,ue.Type.PATH)}`),l.reportJson({output:M.fromPortablePath(s)}))})).exitCode()}};fm.paths=[["pack"]],fm.usage=ye.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});var gge=fm;function QVe(t,{workspace:e}){let r=t.replace("%s",bVe(e)).replace("%v",vVe(e));return M.toPortablePath(r)}function bVe(t){return t.manifest.name!==null?S.slugifyIdent(t.manifest.name):"package"}function vVe(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var SVe=["dependencies","devDependencies","peerDependencies"],xVe="workspace:",kVe=(t,e)=>{var i,n;e.publishConfig&&(e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of SVe)for(let o of t.manifest.getForScope(s).values()){let a=r.tryWorkspaceByDescriptor(o),l=S.parseRange(o.range);if(l.protocol===xVe)if(a===null){if(r.tryWorkspaceByIdent(o)===null)throw new nt(z.WORKSPACE_NOT_FOUND,`${S.prettyDescriptor(r.configuration,o)}: No local workspace found for this range`)}else{let c;S.areDescriptorsEqual(o,a.anchoredDescriptor)||l.selector==="*"?c=(i=a.manifest.version)!=null?i:"0.0.0":l.selector==="~"||l.selector==="^"?c=`${l.selector}${(n=a.manifest.version)!=null?n:"0.0.0"}`:c=l.selector,e[s][S.stringifyIdent(o)]=c}}},PVe={hooks:{beforeWorkspacePacking:kVe},commands:[gge]},DVe=PVe;var yge=ie(require("crypto")),wge=ie(Ege()),Bge=ie(require("url"));async function VVe(t,e,{access:r,tag:i,registry:n,gitHead:s}){let o=t.project.configuration,a=t.manifest.name,l=t.manifest.version,c=S.stringifyIdent(a),u=(0,yge.createHash)("sha1").update(e).digest("hex"),g=wge.default.fromData(e).toString();typeof r=="undefined"&&(t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?r=t.manifest.publishConfig.access:o.get("npmPublishAccess")!==null?r=o.get("npmPublishAccess"):a.scope?r="restricted":r="public");let f=await za.genPackageManifest(t),h=`${c}-${l}.tgz`,p=new Bge.URL(`${To(n)}/${c}/-/${h}`);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:c,access:r,["dist-tags"]:{[i]:l},versions:{[l]:_(P({},f),{_id:`${c}@${l}`,name:c,version:l,gitHead:s,dist:{shasum:u,integrity:g,tarball:p.toString()}})}}}async function _Ve(t){try{let{stdout:e}=await hr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}var wM={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.BOOLEAN,default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:ge.SECRET,default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:ge.SECRET,default:null}},Qge={npmAuditRegistry:{description:"Registry to query for audit reports",type:ge.STRING,default:null},npmPublishRegistry:{description:"Registry to push packages to",type:ge.STRING,default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.STRING,default:"https://registry.yarnpkg.com"}},XVe={configuration:_(P(P({},wM),Qge),{npmScopes:{description:"Settings per package scope",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:P(P({},wM),Qge)}},npmRegistries:{description:"Settings per registry",type:ge.MAP,normalizeKeys:To,valueDefinition:{description:"",type:ge.SHAPE,properties:P({},wM)}}}),fetchers:[QT,Vs],resolvers:[bT,xT,kT]},ZVe=XVe;var vM={};it(vM,{default:()=>a_e});Ss();var Ho;(function(i){i.All="all",i.Production="production",i.Development="development"})(Ho||(Ho={}));var Xs;(function(s){s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical"})(Xs||(Xs={}));var vQ=[Xs.Info,Xs.Low,Xs.Moderate,Xs.High,Xs.Critical];function bge(t,e){let r=[],i=new Set,n=o=>{i.has(o)||(i.add(o),r.push(o))};for(let o of e)n(o);let s=new Set;for(;r.length>0;){let o=r.shift(),a=t.storedResolutions.get(o);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=t.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function $Ve(t,e){return new Set([...t].filter(r=>!e.has(r)))}function e_e(t,e,{all:r}){let i=r?t.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=bge(t,l),g=bge(t,c);return $Ve(g,u)}function vge(t){let e={};for(let r of t)e[S.stringifyIdent(r)]=S.parseRange(r.range).selector;return e}function Sge(t){if(typeof t=="undefined")return new Set;let e=vQ.indexOf(t),r=vQ.slice(e);return new Set(r)}function t_e(t,e){let r=Sge(e),i={};for(let n of r)i[n]=t[n];return i}function xge(t,e){var i;let r=t_e(t,e);for(let n of Object.keys(r))if((i=r[n])!=null?i:0>0)return!0;return!1}function kge(t,e){var s;let r={},i={children:r},n=Object.values(t.advisories);if(e!=null){let o=Sge(e);n=n.filter(a=>o.has(a.severity))}for(let o of de.sortMap(n,a=>a.module_name))r[o.module_name]={label:o.module_name,value:ue.tuple(ue.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{Issue:{label:"Issue",value:ue.tuple(ue.Type.NO_HINT,o.title)},URL:{label:"URL",value:ue.tuple(ue.Type.URL,o.url)},Severity:{label:"Severity",value:ue.tuple(ue.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ue.tuple(ue.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ue.tuple(ue.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ue.tuple(ue.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ue.tuple(ue.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function Pge(t,e,{all:r,environment:i}){let n=r?t.workspaces:[e],s=[Ho.All,Ho.Production].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=[Ho.All,Ho.Development].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return vge([...o,...l].filter(c=>S.parseRange(c.range).protocol===null))}function Dge(t,e,{all:r}){var s;let i=e_e(t,e,{all:r}),n={};for(let o of t.storedPackages.values())n[S.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:vge(o.dependencies.values()),dev:i.has(S.convertLocatorToDescriptor(o).descriptorHash)};return n}var dm=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=Y.String("--environment",Ho.All,{description:"Which environments to cover",validator:Yi(Ho)});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=Y.String("--severity",Xs.Info,{description:"Minimal severity requested for packages to be displayed",validator:Yi(Xs)})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=Pge(r,i,{all:this.all,environment:this.environment}),s=Dge(r,i,{all:this.all});if(!this.recursive)for(let f of Object.keys(s))Object.prototype.hasOwnProperty.call(n,f)?s[f].requires={}:delete s[f];let o={requires:n,dependencies:s},a=gr.getAuditRegistry(i.manifest,{configuration:e}),l,c=await Fa.start({configuration:e,stdout:this.context.stdout},async()=>{l=await Lt.post("/-/npm/v1/security/audits/quick",o,{authType:Lt.AuthType.BEST_EFFORT,configuration:e,jsonResponse:!0,registry:a})});if(c.hasErrors())return c.exitCode();let u=xge(l.metadata.vulnerabilities,this.severity);return!this.json&&u?(Hs.emitTree(kge(l,this.severity),{configuration:e,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async f=>{f.reportJson(l),u||f.reportInfo(z.EXCEPTION,"No audit suggestions")})).exitCode()}};dm.paths=[["npm","audit"]],dm.usage=ye.Usage({description:"perform a vulnerability audit against the installed packages",details:` - This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). - - For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. - - Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${vQ.map(e=>`\`${e}\``).join(", ")}. - - If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. - - To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them. - `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"]]});var Rge=dm;var BM=ie(Or()),QM=ie(require("util")),Cm=class extends Be{constructor(){super(...arguments);this.fields=Y.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.fields!="undefined"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],s=!1,o=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async a=>{for(let l of this.packages){let c;if(l==="."){let b=r.topLevelWorkspace;if(!b.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(b.cwd,wt.manifest))}`);c=S.makeDescriptor(b.manifest.name,"unknown")}else c=S.parseDescriptor(l);let u=Lt.getIdentUrl(c),g=bM(await Lt.get(u,{configuration:e,ident:c,jsonResponse:!0,customErrorMessage:Lt.customPackageError})),f=Object.keys(g.versions).sort(BM.default.compareLoose),p=g["dist-tags"].latest||f[f.length-1],d=qt.validRange(c.range);if(d){let b=BM.default.maxSatisfying(f,d);b!==null?p=b:(a.reportWarning(z.UNNAMED,`Unmet range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0)}else c.range!=="unknown"&&(a.reportWarning(z.UNNAMED,`Invalid range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0);let m=g.versions[p],E=_(P(P({},g),m),{version:p,versions:f}),B;if(i!==null){B={};for(let b of i){let R=E[b];if(typeof R!="undefined")B[b]=R;else{a.reportWarning(z.EXCEPTION,`The '${b}' field doesn't exist inside ${S.prettyIdent(e,c)}'s informations`),s=!0;continue}}}else this.json||(delete E.dist,delete E.readme,delete E.users),B=E;a.reportJson(B),this.json||n.push(B)}});QM.inspect.styles.name="cyan";for(let a of n)(a!==n[0]||s)&&this.context.stdout.write(` -`),this.context.stdout.write(`${(0,QM.inspect)(a,{depth:Infinity,colors:!0,compact:!1})} -`);return o.exitCode()}};Cm.paths=[["npm","info"]],Cm.usage=ye.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command will fetch information about a package from the npm registry, and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package informations.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react 16.12.0","yarn npm info react@16.12.0"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});var Fge=Cm;function bM(t){if(Array.isArray(t)){let e=[];for(let r of t)r=bM(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let i=bM(t[r]);i&&(e[r]=i)}return e}else return t||null}var Nge=ie(aC()),mm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=await i_e({registry:r,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),o=`/-/user/org.couchdb.user:${encodeURIComponent(s.name)}`,a=await Lt.put(o,s,{attemptedAs:s.name,configuration:e,registry:r,jsonResponse:!0,authType:Lt.AuthType.NO_AUTH});return await r_e(r,a.token,{configuration:e,scope:this.scope}),n.reportInfo(z.UNNAMED,"Successfully logged in")})).exitCode()}};mm.paths=[["npm","login"]],mm.usage=ye.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});var Lge=mm;async function SQ({scope:t,publish:e,configuration:r,cwd:i}){return t&&e?gr.getScopeRegistry(t,{configuration:r,type:gr.RegistryType.PUBLISH_REGISTRY}):t?gr.getScopeRegistry(t,{configuration:r}):e?gr.getPublishRegistry((await rf(r,i)).manifest,{configuration:r}):gr.getDefaultRegistry({configuration:r})}async function r_e(t,e,{configuration:r,scope:i}){let n=o=>a=>{let l=de.isIndexableObject(a)?a:{},c=l[o],u=de.isIndexableObject(c)?c:{};return _(P({},l),{[o]:_(P({},u),{npmAuthToken:e})})},s=i?{npmScopes:n(i)}:{npmRegistries:n(t)};return await fe.updateHomeConfiguration(s)}async function i_e({registry:t,report:e,stdin:r,stdout:i}){if(process.env.TEST_ENV)return{name:process.env.TEST_NPM_USER||"",password:process.env.TEST_NPM_PASSWORD||""};e.reportInfo(z.UNNAMED,`Logging in to ${t}`);let n=!1;t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(e.reportInfo(z.UNNAMED,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),e.reportSeparator();let{username:s,password:o}=await(0,Nge.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i}]);return e.reportSeparator(),{name:s,password:o}}var Ff=new Set(["npmAuthIdent","npmAuthToken"]),Im=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=Y.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=async()=>{var l;let n=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),s=await fe.find(this.context.cwd,this.context.plugins),o=S.makeIdent((l=this.scope)!=null?l:null,"pkg");return!gr.getAuthConfiguration(n,{configuration:s,ident:o}).get("npmAuthToken")};return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{if(this.all&&(await n_e(),n.reportInfo(z.UNNAMED,"Successfully logged out from everything")),this.scope){await Tge("npmScopes",this.scope),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${this.scope}`):n.reportWarning(z.UNNAMED,"Scope authentication settings removed, but some other ones settings still apply to it");return}let s=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish});await Tge("npmRegistries",s),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${s}`):n.reportWarning(z.UNNAMED,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};Im.paths=[["npm","logout"]],Im.usage=ye.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});var Mge=Im;function s_e(t,e){let r=t[e];if(!de.isIndexableObject(r))return!1;let i=new Set(Object.keys(r));if([...Ff].every(s=>!i.has(s)))return!1;for(let s of Ff)i.delete(s);if(i.size===0)return t[e]=void 0,!0;let n=P({},r);for(let s of Ff)delete n[s];return t[e]=n,!0}async function n_e(){let t=e=>{let r=!1,i=de.isIndexableObject(e)?P({},e):{};i.npmAuthToken&&(delete i.npmAuthToken,r=!0);for(let n of Object.keys(i))s_e(i,n)&&(r=!0);if(Object.keys(i).length!==0)return r?i:e};return await fe.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function Tge(t,e){return await fe.updateHomeConfiguration({[t]:r=>{let i=de.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(i,e))return r;let n=i[e],s=de.isIndexableObject(n)?n:{},o=new Set(Object.keys(s));if([...Ff].every(l=>!o.has(l)))return r;for(let l of Ff)o.delete(l);if(o.size===0)return Object.keys(i).length===1?void 0:_(P({},i),{[e]:void 0});let a={};for(let l of Ff)a[l]=void 0;return _(P({},i),{[e]:P(P({},s),a)})}})}var Em=class extends Be{constructor(){super(...arguments);this.access=Y.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=Y.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=Y.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);if(i.manifest.private)throw new me("Private workspaces cannot be published");if(i.manifest.name===null||i.manifest.version===null)throw new me("Workspaces must have valid names and versions to be published on an external registry");await r.restoreInstallState();let n=i.manifest.name,s=i.manifest.version,o=gr.getPublishRegistry(i.manifest,{configuration:e});return(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{var c,u;if(this.tolerateRepublish)try{let g=await Lt.get(Lt.getIdentUrl(n),{configuration:e,registry:o,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(g,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(g.versions,s)){l.reportWarning(z.UNNAMED,`Registry already knows about version ${s}; skipping.`);return}}catch(g){if(((u=(c=g.originalError)==null?void 0:c.response)==null?void 0:u.statusCode)!==404)throw g}await Kt.maybeExecuteWorkspaceLifecycleScript(i,"prepublish",{report:l}),await za.prepareForPack(i,{report:l},async()=>{let g=await za.genPackList(i);for(let m of g)l.reportInfo(null,m);let f=await za.genPackStream(i,g),h=await de.bufferStream(f),p=await Rf.getGitHead(i.cwd),d=await Rf.makePublishBody(i,h,{access:this.access,tag:this.tag,registry:o,gitHead:p});await Lt.put(Lt.getIdentUrl(n),d,{configuration:e,registry:o,ident:n,jsonResponse:!0})}),l.reportInfo(z.UNNAMED,"Package archive published")})).exitCode()}};Em.paths=[["npm","publish"]],Em.usage=ye.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});var Oge=Em;var Uge=ie(Or());var ym=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n;if(typeof this.package!="undefined")n=S.parseIdent(this.package);else{if(!i)throw new rt(r.cwd,this.context.cwd);if(!i.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(i.cwd,wt.manifest))}`);n=i.manifest.name}let s=await wm(n,e),a={children:de.sortMap(Object.entries(s),([l])=>l).map(([l,c])=>({value:ue.tuple(ue.Type.RESOLUTION,{descriptor:S.makeDescriptor(n,l),locator:S.makeLocator(n,c)})}))};return Hs.emitTree(a,{configuration:e,json:this.json,stdout:this.context.stdout})}};ym.paths=[["npm","tag","list"]],ym.usage=ye.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` - This command will list all tags of a package from the npm registry. - - If the package is not specified, Yarn will default to the current workspace. - `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});var Kge=ym;async function wm(t,e){let r=`/-/package${Lt.getIdentUrl(t)}/dist-tags`;return Lt.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Lt.customPackageError})}var Bm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseDescriptor(this.package,!0),s=n.range;if(!Uge.default.valid(s))throw new me(`The range ${ue.pretty(e,n.range,ue.Type.RANGE)} must be a valid semver version`);let o=gr.getPublishRegistry(i.manifest,{configuration:e}),a=ue.pretty(e,n,ue.Type.IDENT),l=ue.pretty(e,s,ue.Type.RANGE),c=ue.pretty(e,this.tag,ue.Type.CODE);return(await Fe.start({configuration:e,stdout:this.context.stdout},async g=>{let f=await wm(n,e);Object.prototype.hasOwnProperty.call(f,this.tag)&&f[this.tag]===s&&g.reportWarning(z.UNNAMED,`Tag ${c} is already set to version ${l}`);let h=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.put(h,s,{configuration:e,registry:o,ident:n,jsonRequest:!0,jsonResponse:!0}),g.reportInfo(z.UNNAMED,`Tag ${c} added to version ${l} of package ${a}`)})).exitCode()}};Bm.paths=[["npm","tag","add"]],Bm.usage=ye.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` - This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. - `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});var Hge=Bm;var Qm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){if(this.tag==="latest")throw new me("The 'latest' tag cannot be removed.");let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseIdent(this.package),s=gr.getPublishRegistry(i.manifest,{configuration:e}),o=ue.pretty(e,this.tag,ue.Type.CODE),a=ue.pretty(e,n,ue.Type.IDENT),l=await wm(n,e);if(!Object.prototype.hasOwnProperty.call(l,this.tag))throw new me(`${o} is not a tag of package ${a}`);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{let g=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.del(g,{configuration:e,registry:s,ident:n,jsonResponse:!0}),u.reportInfo(z.UNNAMED,`Tag ${o} removed from package ${a}`)})).exitCode()}};Qm.paths=[["npm","tag","remove"]],Qm.usage=ye.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` - This command will remove a tag from a package from the npm registry. - `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var Gge=Qm;var bm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r;return this.scope&&this.publish?r=gr.getScopeRegistry(this.scope,{configuration:e,type:gr.RegistryType.PUBLISH_REGISTRY}):this.scope?r=gr.getScopeRegistry(this.scope,{configuration:e}):this.publish?r=gr.getPublishRegistry((await rf(e,this.context.cwd)).manifest,{configuration:e}):r=gr.getDefaultRegistry({configuration:e}),(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{var o,a;let s;try{s=await Lt.get("/-/whoami",{configuration:e,registry:r,authType:Lt.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?S.makeIdent(this.scope,""):void 0})}catch(l){if(((o=l.response)==null?void 0:o.statusCode)===401||((a=l.response)==null?void 0:a.statusCode)===403){n.reportError(z.AUTHENTICATION_INVALID,"Authentication failed - your credentials may have expired");return}else throw l}n.reportInfo(z.UNNAMED,s.username)})).exitCode()}};bm.paths=[["npm","whoami"]],bm.usage=ye.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var jge=bm;var o_e={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:ge.STRING,default:null}},commands:[Rge,Fge,Lge,Mge,Oge,Hge,Kge,Gge,jge]},a_e=o_e;var NM={};it(NM,{default:()=>B_e,patchUtils:()=>SM});var SM={};it(SM,{applyPatchFile:()=>PQ,diffFolders:()=>DM,extractPackageToDisk:()=>PM,extractPatchFlags:()=>Xge,isParentRequired:()=>kM,loadPatchFiles:()=>km,makeDescriptor:()=>E_e,makeLocator:()=>xM,parseDescriptor:()=>Sm,parseLocator:()=>xm,parsePatchFile:()=>kQ});var vm=class extends Error{constructor(e,r){super(`Cannot apply hunk #${e+1}`);this.hunk=r}};var A_e=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Nf(t){return v.relative(Se.root,v.resolve(Se.root,M.toPortablePath(t)))}function l_e(t){let e=t.trim().match(A_e);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var c_e=420,u_e=493,Lr;(function(i){i.Context="context",i.Insertion="insertion",i.Deletion="deletion"})(Lr||(Lr={}));var Yge=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),g_e=t=>({header:l_e(t),parts:[]}),f_e={["@"]:"header",["-"]:Lr.Deletion,["+"]:Lr.Insertion,[" "]:Lr.Context,["\\"]:"pragma",undefined:Lr.Context};function p_e(t){let e=[],r=Yge(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),r.hunks.push(n),n=null)}function a(){o(),e.push(r),r=Yge()}for(let l=0;l0?"patch":"mode change",B=null;switch(E){case"rename":{if(!u||!g)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:i,fromPath:Nf(u),toPath:Nf(g)}),B=g}break;case"file deletion":{let b=n||p;if(!b)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(l),hash:f})}break;case"file creation":{let b=s||d;if(!b)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(c),hash:h})}break;case"patch":case"mode change":B=d||s;break;default:de.assertNever(E);break}B&&o&&a&&o!==a&&e.push({type:"mode change",semverExclusivity:i,path:Nf(B),oldMode:xQ(o),newMode:xQ(a)}),B&&m&&m.length&&e.push({type:"patch",semverExclusivity:i,path:Nf(B),hunks:m,beforeHash:f,afterHash:h})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function xQ(t){let e=parseInt(t,8)&511;if(e!==c_e&&e!==u_e)throw new Error(`Unexpected file mode string: ${t}`);return e}function kQ(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),d_e(p_e(e))}function h_e(t){let e=0,r=0;for(let{type:i,lines:n}of t.parts)switch(i){case Lr.Context:r+=n.length,e+=n.length;break;case Lr.Deletion:e+=n.length;break;case Lr.Insertion:r+=n.length;break;default:de.assertNever(i);break}if(e!==t.header.original.length||r!==t.header.patched.length){let i=n=>n<0?n:`+${n}`;throw new Error(`hunk header integrity check failed (expected @@ ${i(t.header.original.length)} ${i(t.header.patched.length)} @@, got @@ ${i(e)} ${i(r)} @@)`)}}async function Lf(t,e,r){let i=await t.lstatPromise(e),n=await r();if(typeof n!="undefined"&&(e=n),t.lutimesPromise)await t.lutimesPromise(e,i.atime,i.mtime);else if(!i.isSymbolicLink())await t.utimesPromise(e,i.atime,i.mtime);else throw new Error("Cannot preserve the time values of a symlink")}async function PQ(t,{baseFs:e=new Wt,dryRun:r=!1,version:i=null}={}){for(let n of t)if(!(n.semverExclusivity!==null&&i!==null&&!qt.satisfiesWithPrereleases(i,n.semverExclusivity)))switch(n.type){case"file deletion":if(r){if(!e.existsSync(n.path))throw new Error(`Trying to delete a file that doesn't exist: ${n.path}`)}else await Lf(e,v.dirname(n.path),async()=>{await e.unlinkPromise(n.path)});break;case"rename":if(r){if(!e.existsSync(n.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${n.fromPath}`)}else await Lf(e,v.dirname(n.fromPath),async()=>{await Lf(e,v.dirname(n.toPath),async()=>{await Lf(e,n.fromPath,async()=>(await e.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(r){if(e.existsSync(n.path))throw new Error(`Trying to create a file that already exists: ${n.path}`)}else{let s=n.hunk?n.hunk.parts[0].lines.join(` -`)+(n.hunk.parts[0].noNewlineAtEndOfFile?"":` -`):"";await e.mkdirpPromise(v.dirname(n.path),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,mr.SAFE_TIME,mr.SAFE_TIME)}break;case"patch":await Lf(e,n.path,async()=>{await C_e(n,{baseFs:e,dryRun:r})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(qge(n.newMode)!==qge(o))continue;await Lf(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:de.assertNever(n);break}}function qge(t){return(t&64)>0}function Jge(t){return t.replace(/\s+$/,"")}function m_e(t,e){return Jge(t)===Jge(e)}async function C_e({hunks:t,path:e},{baseFs:r,dryRun:i=!1}){let n=await r.statSync(e).mode,o=(await r.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of t){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),d=Math.max(h,p),m=0,E=0,B=null;for(;m<=d;){if(m<=h&&(E=f-m,B=Wge(g,o,E),B!==null)){m=-m;break}if(m<=p&&(E=f+m,B=Wge(g,o,E),B!==null))break;m+=1}if(B===null)throw new vm(t.indexOf(g),g);a.push(B),l+=m,c=E+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:de.assertNever(f);break}await r.writeFilePromise(e,o.join(` -`),{mode:n})}function Wge(t,e,r){let i=[];for(let n of t.parts)switch(n.type){case Lr.Context:case Lr.Deletion:{for(let s of n.lines){let o=e[r];if(o==null||!m_e(o,s))return null;r+=1}n.type===Lr.Deletion&&(i.push({type:"splice",index:r-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case Lr.Insertion:i.push({type:"splice",index:r,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:de.assertNever(n.type);break}return i}var I_e=/^builtin<([^>]+)>$/;function zge(t,e){let{source:r,selector:i,params:n}=S.parseRange(t);if(r===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>M.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?S.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(r);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function Sm(t){let i=zge(t.range,S.parseDescriptor),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceDescriptor:e})}function xm(t){let i=zge(t.reference,S.parseLocator),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceLocator:e})}function Vge({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:i,patchHash:n},s){let o=t!==null?{locator:S.stringifyLocator(t)}:{},a=typeof i!="undefined"?{version:i}:{},l=typeof n!="undefined"?{hash:n}:{};return S.makeRange({protocol:"patch:",source:s(e),selector:r.join("&"),params:P(P(P({},a),l),o)})}function E_e(t,{parentLocator:e,sourceDescriptor:r,patchPaths:i}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,patchPaths:i},S.stringifyDescriptor))}function xM(t,{parentLocator:e,sourcePackage:r,patchPaths:i,patchHash:n}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:i,patchHash:n},S.stringifyLocator))}function _ge({onAbsolute:t,onRelative:e,onBuiltin:r},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(I_e);return s!==null?r(s[1]):v.isAbsolute(i)?t(i):e(i)}function Xge(t){let e=t.startsWith("~");return e&&(t=t.slice(1)),{optional:e}}function kM(t){return _ge({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},t)}async function km(t,e,r){let i=t!==null?await r.fetcher.fetch(t,r):null,n=i&&i.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await de.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=Xge(o),l=await _ge({onAbsolute:async()=>await T.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(v.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await r.project.configuration.firstHook(u=>u.getBuiltinPatch,r.project,c)},o);return _(P({},a),{source:l})})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,` -`));return s}async function PM(t,{cache:e,project:r}){let i=r.storedPackages.get(t.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let n=r.storedChecksums,s=new ei,o=r.configuration.makeFetcher(),a=await o.fetch(t,{cache:e,project:r,fetcher:o,checksums:n,report:s}),l=await T.mktempPromise(),c=v.join(l,"source"),u=v.join(l,"user"),g=v.join(l,".yarn-patch.json");return await Promise.all([T.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),T.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),T.writeJsonPromise(g,{locator:S.stringifyLocator(t),version:i.version})]),T.detachTemp(l),u}async function DM(t,e){let r=M.fromPortablePath(t).replace(/\\/g,"/"),i=M.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await hr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--text",r,i],{cwd:M.toPortablePath(process.cwd()),env:_(P({},process.env),{GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""})});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. -The following error was reported by 'git': -${s}`);let o=r.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${de.escapeRegExp(`/${o(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${de.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(de.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(de.escapeRegExp(`${i}/`),"g"),"")}function Zge(t,{configuration:e,report:r}){for(let i of t.parts)for(let n of i.lines)switch(i.type){case Lr.Context:r.reportInfo(null,` ${ue.pretty(e,n,"grey")}`);break;case Lr.Deletion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`- ${ue.pretty(e,n,ue.Type.REMOVED)}`);break;case Lr.Insertion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`+ ${ue.pretty(e,n,ue.Type.ADDED)}`);break;default:de.assertNever(i.type)}}var RM=class{supports(e,r){return!!e.reference.startsWith("patch:")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async patchPackage(e,r){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=xm(e),a=await km(i,o,r),l=await T.mktempPromise(),c=v.join(l,"current.zip"),u=await r.fetcher.fetch(n,r),g=S.getIdentVendorPath(e),f=await $i(),h=new Jr(c,{libzip:f,create:!0,level:r.project.configuration.get("compressionLevel")});await de.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:d}of a){if(p===null)continue;let m=new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")}),E=new Ft(v.resolve(Se.root,g),{baseFs:m});try{await PQ(kQ(p),{baseFs:E,version:s})}catch(B){if(!(B instanceof vm))throw B;let b=r.project.configuration.get("enableInlineHunks"),R=!b&&!d?" (set enableInlineHunks for details)":"",H=`${S.prettyLocator(r.project.configuration,e)}: ${B.message}${R}`,L=K=>{!b||Zge(B.hunk,{configuration:r.project.configuration,report:K})};if(m.discardAndClose(),d){r.report.reportWarningOnce(z.PATCH_HUNK_FAILED,H,{reportExtra:L});continue}else throw new nt(z.PATCH_HUNK_FAILED,H,L)}m.saveAndClose()}return new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")})}};var y_e=3,FM=class{supportsDescriptor(e,r){return!!e.range.startsWith("patch:")}supportsLocator(e,r){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){let{patchPaths:n}=Sm(e);return n.every(s=>!kM(s))?e:S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:i}=Sm(e);return[i]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=Sm(e),a=await km(n,o,i.fetchOptions),l=r.get(s.descriptorHash);if(typeof l=="undefined")throw new Error("Assertion failed: The dependency should have been resolved");let c=mn.makeHash(`${y_e}`,...a.map(u=>JSON.stringify(u))).slice(0,6);return[xM(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){let{sourceLocator:i}=xm(e),n=await r.resolver.resolve(i,r);return P(P({},n),e)}};var Pm=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=v.resolve(this.context.cwd,M.toPortablePath(this.patchFolder)),s=v.join(n,"../source"),o=v.join(n,"../.yarn-patch.json");if(!T.existsSync(s))throw new me("The argument folder didn't get created by 'yarn patch'");let a=await DM(s,n),l=await T.readJsonPromise(o),c=S.parseLocator(l.locator,!0);if(!r.storedPackages.has(c.locatorHash))throw new me("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(a);return}let u=e.get("patchFolder"),g=v.join(u,S.slugifyLocator(c));await T.mkdirPromise(u,{recursive:!0}),await T.writeFilePromise(g,a);let f=v.relative(r.cwd,g);r.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:S.stringifyIdent(c),description:l.version}},reference:`patch:${S.stringifyLocator(c)}#${f}`}),await r.persist()}};Pm.paths=[["patch-commit"]],Pm.usage=ye.Usage({description:"generate a patch out of a directory",details:"\n This will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n Only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});var $ge=Pm;var Dm=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=S.parseLocator(this.package);if(s.reference==="unknown"){let o=de.mapAndFilter([...r.storedPackages.values()],a=>a.identHash!==s.identHash?de.mapAndFilter.skip:S.isVirtualLocator(a)?de.mapAndFilter.skip:a);if(o.length===0)throw new me("No package found in the project for the given locator");if(o.length>1)throw new me(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): -${o.map(a=>` -- ${S.prettyLocator(e,a)}`).join("")}`);s=o[0]}if(!r.storedPackages.has(s.locatorHash))throw new me("No package found in the project for the given locator");await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async o=>{let a=await PM(s,{cache:n,project:r});o.reportJson({locator:S.stringifyLocator(s),path:M.fromPortablePath(a)}),o.reportInfo(z.UNNAMED,`Package ${S.prettyLocator(e,s)} got extracted with success!`),o.reportInfo(z.UNNAMED,`You can now edit the following folder: ${ue.pretty(e,M.fromPortablePath(a),"magenta")}`),o.reportInfo(z.UNNAMED,`Once you are done run ${ue.pretty(e,`yarn patch-commit ${process.platform==="win32"?'"':""}${M.fromPortablePath(a)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};Dm.paths=[["patch"]],Dm.usage=ye.Usage({description:"prepare a package for patching",details:'\n This command will cause a package to be extracted in a temporary directory (under a folder named "patch-workdir"). This folder will be editable at will; running `yarn patch` inside it will then cause Yarn to generate a patchfile and register it into your top-level manifest (cf the `patch:` protocol).\n '});var efe=Dm;var w_e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:ge.BOOLEAN,default:!1},patchFolder:{description:"Folder where the patch files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/patches"}},commands:[$ge,efe],fetchers:[RM],resolvers:[FM]},B_e=w_e;var TM={};it(TM,{default:()=>S_e});var tfe=ie(Wp()),LM=class{supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="pnpm"}async findPackageLocation(e,r){return nfe(e,{project:r.project})}async findPackageLocator(e,r){let i=ife(),n=r.project.installersCustomData.get(i);if(!n)throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=v.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new rfe(e)}},rfe=class{constructor(e){this.opts=e;this.asyncActions=new afe;this.packageLocations=new Map;this.customData={locatorByPath:new Map}}getCustomDataKey(){return ife()}attachCustomData(e){this.customData=e}async installPackage(e,r,i){switch(e.linkType){case gt.SOFT:return this.installPackageSoft(e,r,i);case gt.HARD:return this.installPackageHard(e,r,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,i){let n=v.resolve(r.packageFs.getRealPath(),r.prefixPath);return this.packageLocations.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,r,i){var u;let n=nfe(e,{project:this.opts.project});this.customData.locatorByPath.set(n,S.stringifyLocator(e)),this.packageLocations.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await T.mkdirPromise(n,{recursive:!0}),await T.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1})}));let o=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e,a={manifest:(u=await Ze.tryFind(r.prefixPath,{baseFs:r.packageFs}))!=null?u:new Ze,misc:{hasBindingGyp:Ws.hasBindingGyp(r)}},l=this.opts.project.getDependencyMeta(o,e.version),c=Ws.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,r){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!ofe(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.packageLocations.get(e.locatorHash);if(typeof n=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(e)})`);let s=v.join(n,wt.nodeModules);r.length>0&&await T.mkdirpPromise(s);let o=await Q_e(s),a=[];for(let[l,c]of r){let u=c;ofe(c,{project:this.opts.project})||(this.opts.report.reportWarning(z.UNNAMED,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=S.devirtualizeLocator(c));let g=this.packageLocations.get(u.locatorHash);if(typeof g=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(c)})`);let f=S.stringifyIdent(l),h=v.join(s,f),p=v.relative(v.dirname(h),g),d=o.get(f);o.delete(f),a.push(Promise.resolve().then(async()=>{if(d){if(d.isSymbolicLink()&&await T.readlinkPromise(h)===p)return;await T.removePromise(h)}await T.mkdirpPromise(v.dirname(h)),process.platform=="win32"?await T.symlinkPromise(g,h,"junction"):await T.symlinkPromise(p,h)}))}for(let l of o.keys())a.push(T.removePromise(v.join(s,l)));await Promise.all(a)}))}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=sfe(this.opts.project),r=new Set;for(let s of this.packageLocations.values())r.add(v.basename(s));let i;try{i=await T.readdirPromise(e)}catch{i=[]}let n=[];for(let s of i)r.has(s)||n.push(T.removePromise(v.join(e,s)));await Promise.all(n),await this.asyncActions.wait()}};function ife(){return JSON.stringify({name:"PnpmInstaller",version:1})}function sfe(t){return v.join(t.cwd,wt.nodeModules,".store")}function nfe(t,{project:e}){let r=S.slugifyLocator(t);return v.join(sfe(e),r)}function ofe(t,{project:e}){return!S.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function Q_e(t){let e=new Map,r=[];try{r=await T.readdirPromise(t,{withFileTypes:!0})}catch(i){if(i.code!=="ENOENT")throw i}try{for(let i of r)if(!i.name.startsWith("."))if(i.name.startsWith("@"))for(let n of await T.readdirPromise(v.join(t,i.name),{withFileTypes:!0}))e.set(`${i.name}/${n.name}`,n);else e.set(i.name,i)}catch(i){if(i.code!=="ENOENT")throw i}return e}function b_e(){let t,e;return{promise:new Promise((i,n)=>{t=i,e=n}),resolve:t,reject:e}}var afe=class{constructor(){this.deferred=new Map;this.promises=new Map;this.limit=(0,tfe.default)(10)}set(e,r){let i=this.deferred.get(e);typeof i=="undefined"&&this.deferred.set(e,i=b_e());let n=this.limit(()=>r());return this.promises.set(e,n),n.then(()=>{this.promises.get(e)===n&&i.resolve()},s=>{this.promises.get(e)===n&&i.reject(s)}),i.promise}reduce(e,r){var n;let i=(n=this.promises.get(e))!=null?n:Promise.resolve();this.set(e,()=>r(i))}async wait(){await Promise.all(this.promises.values())}};var v_e={linkers:[LM]},S_e=v_e;var F0=()=>({modules:new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",F$(vh)],["semver",x_e],["typanion",lu],["yup",k_e],["@yarnpkg/plugin-essentials",hL],["@yarnpkg/plugin-compat",mL],["@yarnpkg/plugin-dlx",IL],["@yarnpkg/plugin-file",xL],["@yarnpkg/plugin-git",fL],["@yarnpkg/plugin-github",PL],["@yarnpkg/plugin-http",FL],["@yarnpkg/plugin-init",ML],["@yarnpkg/plugin-link",GL],["@yarnpkg/plugin-nm",mT],["@yarnpkg/plugin-npm",yM],["@yarnpkg/plugin-npm-cli",vM],["@yarnpkg/plugin-pack",CM],["@yarnpkg/plugin-patch",NM],["@yarnpkg/plugin-pnp",oT],["@yarnpkg/plugin-pnpm",TM]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"])});i0({binaryVersion:Zr||"",pluginConfiguration:F0()});})(); -/*! - * buildToken - * Builds OAuth token prefix (helper function) - * - * @name buildToken - * @function - * @param {GitUrl} obj The parsed Git url object. - * @return {String} token prefix - */ -/*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */ diff --git a/.yarn/releases/yarn-3.2.0.cjs b/.yarn/releases/yarn-3.2.0.cjs new file mode 100644 index 0000000..5926775 --- /dev/null +++ b/.yarn/releases/yarn-3.2.0.cjs @@ -0,0 +1,785 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var afe=Object.create,Oh=Object.defineProperty,Afe=Object.defineProperties,lfe=Object.getOwnPropertyDescriptor,cfe=Object.getOwnPropertyDescriptors,ufe=Object.getOwnPropertyNames,OE=Object.getOwnPropertySymbols,gfe=Object.getPrototypeOf,lQ=Object.prototype.hasOwnProperty,iM=Object.prototype.propertyIsEnumerable;var nM=(t,e,r)=>e in t?Oh(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,N=(t,e)=>{for(var r in e||(e={}))lQ.call(e,r)&&nM(t,r,e[r]);if(OE)for(var r of OE(e))iM.call(e,r)&&nM(t,r,e[r]);return t},te=(t,e)=>Afe(t,cfe(e)),ffe=t=>Oh(t,"__esModule",{value:!0});var Tr=(t,e)=>{var r={};for(var i in t)lQ.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&OE)for(var i of OE(t))e.indexOf(i)<0&&iM.call(t,i)&&(r[i]=t[i]);return r},hfe=(t,e)=>()=>(t&&(e=t(t=0)),e),w=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),ft=(t,e)=>{for(var r in e)Oh(t,r,{get:e[r],enumerable:!0})},pfe=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of ufe(e))!lQ.call(t,i)&&i!=="default"&&Oh(t,i,{get:()=>e[i],enumerable:!(r=lfe(e,i))||r.enumerable});return t},ge=t=>pfe(ffe(Oh(t!=null?afe(gfe(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var PM=w(($Xe,vM)=>{vM.exports=SM;SM.sync=Rfe;var kM=require("fs");function Ffe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{DM.exports=RM;RM.sync=Nfe;var FM=require("fs");function RM(t,e,r){FM.stat(t,function(i,n){r(i,i?!1:NM(n,e))})}function Nfe(t,e){return NM(FM.statSync(t),e)}function NM(t,e){return t.isFile()&&Lfe(t,e)}function Lfe(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=r&c||r&l&&n===o||r&a&&i===s||r&u&&s===0;return g}});var OM=w((rZe,TM)=>{var tZe=require("fs"),XE;process.platform==="win32"||global.TESTING_WINDOWS?XE=PM():XE=LM();TM.exports=vQ;vQ.sync=Tfe;function vQ(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){vQ(t,e||{},function(s,o){s?n(s):i(o)})})}XE(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function Tfe(t,e){try{return XE.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var YM=w((iZe,MM)=>{var Ju=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",UM=require("path"),Ofe=Ju?";":":",KM=OM(),HM=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),jM=(t,e)=>{let r=e.colon||Ofe,i=t.match(/\//)||Ju&&t.match(/\\/)?[""]:[...Ju?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=Ju?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=Ju?n.split(r):[""];return Ju&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},GM=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=jM(t,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(HM(t));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=UM.join(h,t),m=!h&&/^\.[\\\/]/.test(t)?t.slice(0,2)+p:p;u(l(m,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];KM(c+p,{pathExt:s},(m,y)=>{if(!m&&y)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},Mfe=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=jM(t,e),s=[];for(let o=0;o{"use strict";var qM=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};SQ.exports=qM;SQ.exports.default=qM});var VM=w((sZe,WM)=>{"use strict";var zM=require("path"),Ufe=YM(),Kfe=JM();function _M(t,e){let r=t.options.env||process.env,i=process.cwd(),n=t.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch(a){}let o;try{o=Ufe.sync(t.command,{path:r[Kfe({env:r})],pathExt:e?zM.delimiter:void 0})}catch(a){}finally{s&&process.chdir(i)}return o&&(o=zM.resolve(n?t.options.cwd:"",o)),o}function Hfe(t){return _M(t)||_M(t,!0)}WM.exports=Hfe});var XM=w((oZe,kQ)=>{"use strict";var xQ=/([()\][%!^"`<>&|;, *?])/g;function jfe(t){return t=t.replace(xQ,"^$1"),t}function Gfe(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(xQ,"^$1"),e&&(t=t.replace(xQ,"^$1")),t}kQ.exports.command=jfe;kQ.exports.argument=Gfe});var $M=w((aZe,ZM)=>{"use strict";ZM.exports=/^#!(.*)/});var t1=w((AZe,e1)=>{"use strict";var Yfe=$M();e1.exports=(t="")=>{let e=t.match(Yfe);if(!e)return null;let[r,i]=e[0].replace(/#! ?/,"").split(" "),n=r.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var i1=w((lZe,r1)=>{"use strict";var PQ=require("fs"),qfe=t1();function Jfe(t){let e=150,r=Buffer.alloc(e),i;try{i=PQ.openSync(t,"r"),PQ.readSync(i,r,0,e,0),PQ.closeSync(i)}catch(n){}return qfe(r.toString())}r1.exports=Jfe});var a1=w((cZe,n1)=>{"use strict";var Wfe=require("path"),s1=VM(),o1=XM(),zfe=i1(),_fe=process.platform==="win32",Vfe=/\.(?:com|exe)$/i,Xfe=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Zfe(t){t.file=s1(t);let e=t.file&&zfe(t.file);return e?(t.args.unshift(t.file),t.command=e,s1(t)):t.file}function $fe(t){if(!_fe)return t;let e=Zfe(t),r=!Vfe.test(e);if(t.options.forceShell||r){let i=Xfe.test(e);t.command=Wfe.normalize(t.command),t.command=o1.command(t.command),t.args=t.args.map(s=>o1.argument(s,i));let n=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${n}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function ehe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let i={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?i:$fe(i)}n1.exports=ehe});var c1=w((uZe,A1)=>{"use strict";var DQ=process.platform==="win32";function RQ(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function the(t,e){if(!DQ)return;let r=t.emit;t.emit=function(i,n){if(i==="exit"){let s=l1(n,e,"spawn");if(s)return r.call(t,"error",s)}return r.apply(t,arguments)}}function l1(t,e){return DQ&&t===1&&!e.file?RQ(e.original,"spawn"):null}function rhe(t,e){return DQ&&t===1&&!e.file?RQ(e.original,"spawnSync"):null}A1.exports={hookChildProcess:the,verifyENOENT:l1,verifyENOENTSync:rhe,notFoundError:RQ}});var LQ=w((gZe,Wu)=>{"use strict";var u1=require("child_process"),FQ=a1(),NQ=c1();function g1(t,e,r){let i=FQ(t,e,r),n=u1.spawn(i.command,i.args,i.options);return NQ.hookChildProcess(n,i),n}function ihe(t,e,r){let i=FQ(t,e,r),n=u1.spawnSync(i.command,i.args,i.options);return n.error=n.error||NQ.verifyENOENTSync(n.status,i),n}Wu.exports=g1;Wu.exports.spawn=g1;Wu.exports.sync=ihe;Wu.exports._parse=FQ;Wu.exports._enoent=NQ});var h1=w((fZe,f1)=>{"use strict";function nhe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function nc(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,nc)}nhe(nc,Error);nc.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ce=Ce(">>",!1),fe=">&",gt=Ce(">&",!1),Ht=">",Mt=Ce(">",!1),mi="<<<",jt=Ce("<<<",!1),Qr="<&",Ti=Ce("<&",!1),_s="<",Un=Ce("<",!1),Kn=function(C){return{type:"argument",segments:[].concat(...C)}},vr=function(C){return C},Hn="$'",us=Ce("$'",!1),Ia="'",SA=Ce("'",!1),Du=function(C){return[{type:"text",text:C}]},gs='""',kA=Ce('""',!1),ya=function(){return{type:"text",text:""}},Ru='"',xA=Ce('"',!1),PA=function(C){return C},Sr=function(C){return{type:"arithmetic",arithmetic:C,quoted:!0}},jl=function(C){return{type:"shell",shell:C,quoted:!0}},Fu=function(C){return te(N({type:"variable"},C),{quoted:!0})},So=function(C){return{type:"text",text:C}},Nu=function(C){return{type:"arithmetic",arithmetic:C,quoted:!1}},Qh=function(C){return{type:"shell",shell:C,quoted:!1}},vh=function(C){return te(N({type:"variable"},C),{quoted:!1})},oe=function(C){return{type:"glob",pattern:C}},Oi=/^[^']/,ko=_e(["'"],!0,!1),jn=function(C){return C.join("")},Lu=/^[^$"]/,vt=_e(["$",'"'],!0,!1),Gl=`\\ +`,Gn=Ce(`\\ +`,!1),fs=function(){return""},hs="\\",pt=Ce("\\",!1),xo=/^[\\$"`]/,lt=_e(["\\","$",'"',"`"],!1,!1),mn=function(C){return C},v="\\a",Tt=Ce("\\a",!1),Tu=function(){return"a"},Yl="\\b",Sh=Ce("\\b",!1),kh=function(){return"\b"},xh=/^[Ee]/,Ph=_e(["E","e"],!1,!1),Dh=function(){return""},G="\\f",yt=Ce("\\f",!1),DA=function(){return"\f"},$i="\\n",ql=Ce("\\n",!1),$e=function(){return` +`},wa="\\r",Ou=Ce("\\r",!1),SE=function(){return"\r"},Rh="\\t",kE=Ce("\\t",!1),gr=function(){return" "},Yn="\\v",Jl=Ce("\\v",!1),Fh=function(){return"\v"},Vs=/^[\\'"?]/,Ba=_e(["\\","'",'"',"?"],!1,!1),En=function(C){return String.fromCharCode(parseInt(C,16))},Oe="\\x",Mu=Ce("\\x",!1),Wl="\\u",Xs=Ce("\\u",!1),zl="\\U",RA=Ce("\\U",!1),Uu=function(C){return String.fromCodePoint(parseInt(C,16))},Ku=/^[0-7]/,ba=_e([["0","7"]],!1,!1),Qa=/^[0-9a-fA-f]/,it=_e([["0","9"],["a","f"],["A","f"]],!1,!1),Po=ot(),FA="-",_l=Ce("-",!1),Zs="+",Vl=Ce("+",!1),xE=".",Nh=Ce(".",!1),Hu=function(C,b,F){return{type:"number",value:(C==="-"?-1:1)*parseFloat(b.join("")+"."+F.join(""))}},Lh=function(C,b){return{type:"number",value:(C==="-"?-1:1)*parseInt(b.join(""))}},PE=function(C){return N({type:"variable"},C)},Xl=function(C){return{type:"variable",name:C}},DE=function(C){return C},ju="*",NA=Ce("*",!1),Lr="/",RE=Ce("/",!1),$s=function(C,b,F){return{type:b==="*"?"multiplication":"division",right:F}},eo=function(C,b){return b.reduce((F,H)=>N({left:F},H),C)},Gu=function(C,b,F){return{type:b==="+"?"addition":"subtraction",right:F}},LA="$((",R=Ce("$((",!1),q="))",de=Ce("))",!1),He=function(C){return C},Te="$(",Xe=Ce("$(",!1),Et=function(C){return C},Rt="${",qn=Ce("${",!1),Jb=":-",xO=Ce(":-",!1),PO=function(C,b){return{name:C,defaultValue:b}},Wb=":-}",DO=Ce(":-}",!1),RO=function(C){return{name:C,defaultValue:[]}},zb=":+",FO=Ce(":+",!1),NO=function(C,b){return{name:C,alternativeValue:b}},_b=":+}",LO=Ce(":+}",!1),TO=function(C){return{name:C,alternativeValue:[]}},Vb=function(C){return{name:C}},OO="$",MO=Ce("$",!1),UO=function(C){return e.isGlobPattern(C)},KO=function(C){return C},Xb=/^[a-zA-Z0-9_]/,Zb=_e([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),$b=function(){return O()},eQ=/^[$@*?#a-zA-Z0-9_\-]/,tQ=_e(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),HO=/^[(){}<>$|&; \t"']/,Yu=_e(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),rQ=/^[<>&; \t"']/,iQ=_e(["<",">","&",";"," "," ",'"',"'"],!1,!1),FE=/^[ \t]/,NE=_e([" "," "],!1,!1),B=0,Ke=0,TA=[{line:1,column:1}],d=0,E=[],I=0,D;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function O(){return t.substring(Ke,B)}function V(){return It(Ke,B)}function ie(C,b){throw b=b!==void 0?b:It(Ke,B),Mi([ut(C)],t.substring(Ke,B),b)}function Be(C,b){throw b=b!==void 0?b:It(Ke,B),Jn(C,b)}function Ce(C,b){return{type:"literal",text:C,ignoreCase:b}}function _e(C,b,F){return{type:"class",parts:C,inverted:b,ignoreCase:F}}function ot(){return{type:"any"}}function wt(){return{type:"end"}}function ut(C){return{type:"other",description:C}}function nt(C){var b=TA[C],F;if(b)return b;for(F=C-1;!TA[F];)F--;for(b=TA[F],b={line:b.line,column:b.column};Fd&&(d=B,E=[]),E.push(C))}function Jn(C,b){return new nc(C,null,null,b)}function Mi(C,b,F){return new nc(nc.buildMessage(C,b),C,b,F)}function OA(){var C,b;return C=B,b=Gr(),b===r&&(b=null),b!==r&&(Ke=C,b=s(b)),C=b,C}function Gr(){var C,b,F,H,ue;if(C=B,b=Yr(),b!==r){for(F=[],H=je();H!==r;)F.push(H),H=je();F!==r?(H=va(),H!==r?(ue=ps(),ue===r&&(ue=null),ue!==r?(Ke=C,b=o(b,H,ue),C=b):(B=C,C=r)):(B=C,C=r)):(B=C,C=r)}else B=C,C=r;if(C===r)if(C=B,b=Yr(),b!==r){for(F=[],H=je();H!==r;)F.push(H),H=je();F!==r?(H=va(),H===r&&(H=null),H!==r?(Ke=C,b=a(b,H),C=b):(B=C,C=r)):(B=C,C=r)}else B=C,C=r;return C}function ps(){var C,b,F,H,ue;for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();if(b!==r)if(F=Gr(),F!==r){for(H=[],ue=je();ue!==r;)H.push(ue),ue=je();H!==r?(Ke=C,b=l(F),C=b):(B=C,C=r)}else B=C,C=r;else B=C,C=r;return C}function va(){var C;return t.charCodeAt(B)===59?(C=c,B++):(C=r,I===0&&ke(u)),C===r&&(t.charCodeAt(B)===38?(C=g,B++):(C=r,I===0&&ke(f))),C}function Yr(){var C,b,F;return C=B,b=jO(),b!==r?(F=Yge(),F===r&&(F=null),F!==r?(Ke=C,b=h(b,F),C=b):(B=C,C=r)):(B=C,C=r),C}function Yge(){var C,b,F,H,ue,De,Ct;for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();if(b!==r)if(F=qge(),F!==r){for(H=[],ue=je();ue!==r;)H.push(ue),ue=je();if(H!==r)if(ue=Yr(),ue!==r){for(De=[],Ct=je();Ct!==r;)De.push(Ct),Ct=je();De!==r?(Ke=C,b=p(F,ue),C=b):(B=C,C=r)}else B=C,C=r;else B=C,C=r}else B=C,C=r;else B=C,C=r;return C}function qge(){var C;return t.substr(B,2)===m?(C=m,B+=2):(C=r,I===0&&ke(y)),C===r&&(t.substr(B,2)===Q?(C=Q,B+=2):(C=r,I===0&&ke(S))),C}function jO(){var C,b,F;return C=B,b=zge(),b!==r?(F=Jge(),F===r&&(F=null),F!==r?(Ke=C,b=x(b,F),C=b):(B=C,C=r)):(B=C,C=r),C}function Jge(){var C,b,F,H,ue,De,Ct;for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();if(b!==r)if(F=Wge(),F!==r){for(H=[],ue=je();ue!==r;)H.push(ue),ue=je();if(H!==r)if(ue=jO(),ue!==r){for(De=[],Ct=je();Ct!==r;)De.push(Ct),Ct=je();De!==r?(Ke=C,b=M(F,ue),C=b):(B=C,C=r)}else B=C,C=r;else B=C,C=r}else B=C,C=r;else B=C,C=r;return C}function Wge(){var C;return t.substr(B,2)===Y?(C=Y,B+=2):(C=r,I===0&&ke(U)),C===r&&(t.charCodeAt(B)===124?(C=J,B++):(C=r,I===0&&ke(W))),C}function LE(){var C,b,F,H,ue,De;if(C=B,b=eM(),b!==r)if(t.charCodeAt(B)===61?(F=ee,B++):(F=r,I===0&&ke(Z)),F!==r)if(H=qO(),H!==r){for(ue=[],De=je();De!==r;)ue.push(De),De=je();ue!==r?(Ke=C,b=A(b,H),C=b):(B=C,C=r)}else B=C,C=r;else B=C,C=r;else B=C,C=r;if(C===r)if(C=B,b=eM(),b!==r)if(t.charCodeAt(B)===61?(F=ee,B++):(F=r,I===0&&ke(Z)),F!==r){for(H=[],ue=je();ue!==r;)H.push(ue),ue=je();H!==r?(Ke=C,b=ne(b),C=b):(B=C,C=r)}else B=C,C=r;else B=C,C=r;return C}function zge(){var C,b,F,H,ue,De,Ct,bt,Zr,Ei,ds;for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();if(b!==r)if(t.charCodeAt(B)===40?(F=le,B++):(F=r,I===0&&ke(Ae)),F!==r){for(H=[],ue=je();ue!==r;)H.push(ue),ue=je();if(H!==r)if(ue=Gr(),ue!==r){for(De=[],Ct=je();Ct!==r;)De.push(Ct),Ct=je();if(De!==r)if(t.charCodeAt(B)===41?(Ct=T,B++):(Ct=r,I===0&&ke(L)),Ct!==r){for(bt=[],Zr=je();Zr!==r;)bt.push(Zr),Zr=je();if(bt!==r){for(Zr=[],Ei=Th();Ei!==r;)Zr.push(Ei),Ei=Th();if(Zr!==r){for(Ei=[],ds=je();ds!==r;)Ei.push(ds),ds=je();Ei!==r?(Ke=C,b=Ee(ue,Zr),C=b):(B=C,C=r)}else B=C,C=r}else B=C,C=r}else B=C,C=r;else B=C,C=r}else B=C,C=r;else B=C,C=r}else B=C,C=r;else B=C,C=r;if(C===r){for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();if(b!==r)if(t.charCodeAt(B)===123?(F=we,B++):(F=r,I===0&&ke(qe)),F!==r){for(H=[],ue=je();ue!==r;)H.push(ue),ue=je();if(H!==r)if(ue=Gr(),ue!==r){for(De=[],Ct=je();Ct!==r;)De.push(Ct),Ct=je();if(De!==r)if(t.charCodeAt(B)===125?(Ct=re,B++):(Ct=r,I===0&&ke(se)),Ct!==r){for(bt=[],Zr=je();Zr!==r;)bt.push(Zr),Zr=je();if(bt!==r){for(Zr=[],Ei=Th();Ei!==r;)Zr.push(Ei),Ei=Th();if(Zr!==r){for(Ei=[],ds=je();ds!==r;)Ei.push(ds),ds=je();Ei!==r?(Ke=C,b=Qe(ue,Zr),C=b):(B=C,C=r)}else B=C,C=r}else B=C,C=r}else B=C,C=r;else B=C,C=r}else B=C,C=r;else B=C,C=r}else B=C,C=r;else B=C,C=r;if(C===r){for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();if(b!==r){for(F=[],H=LE();H!==r;)F.push(H),H=LE();if(F!==r){for(H=[],ue=je();ue!==r;)H.push(ue),ue=je();if(H!==r){if(ue=[],De=YO(),De!==r)for(;De!==r;)ue.push(De),De=YO();else ue=r;if(ue!==r){for(De=[],Ct=je();Ct!==r;)De.push(Ct),Ct=je();De!==r?(Ke=C,b=he(F,ue),C=b):(B=C,C=r)}else B=C,C=r}else B=C,C=r}else B=C,C=r}else B=C,C=r;if(C===r){for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();if(b!==r){if(F=[],H=LE(),H!==r)for(;H!==r;)F.push(H),H=LE();else F=r;if(F!==r){for(H=[],ue=je();ue!==r;)H.push(ue),ue=je();H!==r?(Ke=C,b=Fe(F),C=b):(B=C,C=r)}else B=C,C=r}else B=C,C=r}}}return C}function GO(){var C,b,F,H,ue;for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();if(b!==r){if(F=[],H=TE(),H!==r)for(;H!==r;)F.push(H),H=TE();else F=r;if(F!==r){for(H=[],ue=je();ue!==r;)H.push(ue),ue=je();H!==r?(Ke=C,b=Ue(F),C=b):(B=C,C=r)}else B=C,C=r}else B=C,C=r;return C}function YO(){var C,b,F;for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();if(b!==r?(F=Th(),F!==r?(Ke=C,b=xe(F),C=b):(B=C,C=r)):(B=C,C=r),C===r){for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();b!==r?(F=TE(),F!==r?(Ke=C,b=xe(F),C=b):(B=C,C=r)):(B=C,C=r)}return C}function Th(){var C,b,F,H,ue;for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();return b!==r?(ve.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(pe)),F===r&&(F=null),F!==r?(H=_ge(),H!==r?(ue=TE(),ue!==r?(Ke=C,b=X(F,H,ue),C=b):(B=C,C=r)):(B=C,C=r)):(B=C,C=r)):(B=C,C=r),C}function _ge(){var C;return t.substr(B,2)===be?(C=be,B+=2):(C=r,I===0&&ke(ce)),C===r&&(t.substr(B,2)===fe?(C=fe,B+=2):(C=r,I===0&&ke(gt)),C===r&&(t.charCodeAt(B)===62?(C=Ht,B++):(C=r,I===0&&ke(Mt)),C===r&&(t.substr(B,3)===mi?(C=mi,B+=3):(C=r,I===0&&ke(jt)),C===r&&(t.substr(B,2)===Qr?(C=Qr,B+=2):(C=r,I===0&&ke(Ti)),C===r&&(t.charCodeAt(B)===60?(C=_s,B++):(C=r,I===0&&ke(Un))))))),C}function TE(){var C,b,F;for(C=B,b=[],F=je();F!==r;)b.push(F),F=je();return b!==r?(F=qO(),F!==r?(Ke=C,b=xe(F),C=b):(B=C,C=r)):(B=C,C=r),C}function qO(){var C,b,F;if(C=B,b=[],F=JO(),F!==r)for(;F!==r;)b.push(F),F=JO();else b=r;return b!==r&&(Ke=C,b=Kn(b)),C=b,C}function JO(){var C,b;return C=B,b=Vge(),b!==r&&(Ke=C,b=vr(b)),C=b,C===r&&(C=B,b=Xge(),b!==r&&(Ke=C,b=vr(b)),C=b,C===r&&(C=B,b=Zge(),b!==r&&(Ke=C,b=vr(b)),C=b,C===r&&(C=B,b=$ge(),b!==r&&(Ke=C,b=vr(b)),C=b))),C}function Vge(){var C,b,F,H;return C=B,t.substr(B,2)===Hn?(b=Hn,B+=2):(b=r,I===0&&ke(us)),b!==r?(F=rfe(),F!==r?(t.charCodeAt(B)===39?(H=Ia,B++):(H=r,I===0&&ke(SA)),H!==r?(Ke=C,b=Du(F),C=b):(B=C,C=r)):(B=C,C=r)):(B=C,C=r),C}function Xge(){var C,b,F,H;return C=B,t.charCodeAt(B)===39?(b=Ia,B++):(b=r,I===0&&ke(SA)),b!==r?(F=efe(),F!==r?(t.charCodeAt(B)===39?(H=Ia,B++):(H=r,I===0&&ke(SA)),H!==r?(Ke=C,b=Du(F),C=b):(B=C,C=r)):(B=C,C=r)):(B=C,C=r),C}function Zge(){var C,b,F,H;if(C=B,t.substr(B,2)===gs?(b=gs,B+=2):(b=r,I===0&&ke(kA)),b!==r&&(Ke=C,b=ya()),C=b,C===r)if(C=B,t.charCodeAt(B)===34?(b=Ru,B++):(b=r,I===0&&ke(xA)),b!==r){for(F=[],H=WO();H!==r;)F.push(H),H=WO();F!==r?(t.charCodeAt(B)===34?(H=Ru,B++):(H=r,I===0&&ke(xA)),H!==r?(Ke=C,b=PA(F),C=b):(B=C,C=r)):(B=C,C=r)}else B=C,C=r;return C}function $ge(){var C,b,F;if(C=B,b=[],F=zO(),F!==r)for(;F!==r;)b.push(F),F=zO();else b=r;return b!==r&&(Ke=C,b=PA(b)),C=b,C}function WO(){var C,b;return C=B,b=ZO(),b!==r&&(Ke=C,b=Sr(b)),C=b,C===r&&(C=B,b=$O(),b!==r&&(Ke=C,b=jl(b)),C=b,C===r&&(C=B,b=aQ(),b!==r&&(Ke=C,b=Fu(b)),C=b,C===r&&(C=B,b=tfe(),b!==r&&(Ke=C,b=So(b)),C=b))),C}function zO(){var C,b;return C=B,b=ZO(),b!==r&&(Ke=C,b=Nu(b)),C=b,C===r&&(C=B,b=$O(),b!==r&&(Ke=C,b=Qh(b)),C=b,C===r&&(C=B,b=aQ(),b!==r&&(Ke=C,b=vh(b)),C=b,C===r&&(C=B,b=sfe(),b!==r&&(Ke=C,b=oe(b)),C=b,C===r&&(C=B,b=nfe(),b!==r&&(Ke=C,b=So(b)),C=b)))),C}function efe(){var C,b,F;for(C=B,b=[],Oi.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(ko));F!==r;)b.push(F),Oi.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(ko));return b!==r&&(Ke=C,b=jn(b)),C=b,C}function tfe(){var C,b,F;if(C=B,b=[],F=_O(),F===r&&(Lu.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(vt))),F!==r)for(;F!==r;)b.push(F),F=_O(),F===r&&(Lu.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(vt)));else b=r;return b!==r&&(Ke=C,b=jn(b)),C=b,C}function _O(){var C,b,F;return C=B,t.substr(B,2)===Gl?(b=Gl,B+=2):(b=r,I===0&&ke(Gn)),b!==r&&(Ke=C,b=fs()),C=b,C===r&&(C=B,t.charCodeAt(B)===92?(b=hs,B++):(b=r,I===0&&ke(pt)),b!==r?(xo.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(lt)),F!==r?(Ke=C,b=mn(F),C=b):(B=C,C=r)):(B=C,C=r)),C}function rfe(){var C,b,F;for(C=B,b=[],F=VO(),F===r&&(Oi.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(ko)));F!==r;)b.push(F),F=VO(),F===r&&(Oi.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(ko)));return b!==r&&(Ke=C,b=jn(b)),C=b,C}function VO(){var C,b,F;return C=B,t.substr(B,2)===v?(b=v,B+=2):(b=r,I===0&&ke(Tt)),b!==r&&(Ke=C,b=Tu()),C=b,C===r&&(C=B,t.substr(B,2)===Yl?(b=Yl,B+=2):(b=r,I===0&&ke(Sh)),b!==r&&(Ke=C,b=kh()),C=b,C===r&&(C=B,t.charCodeAt(B)===92?(b=hs,B++):(b=r,I===0&&ke(pt)),b!==r?(xh.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(Ph)),F!==r?(Ke=C,b=Dh(),C=b):(B=C,C=r)):(B=C,C=r),C===r&&(C=B,t.substr(B,2)===G?(b=G,B+=2):(b=r,I===0&&ke(yt)),b!==r&&(Ke=C,b=DA()),C=b,C===r&&(C=B,t.substr(B,2)===$i?(b=$i,B+=2):(b=r,I===0&&ke(ql)),b!==r&&(Ke=C,b=$e()),C=b,C===r&&(C=B,t.substr(B,2)===wa?(b=wa,B+=2):(b=r,I===0&&ke(Ou)),b!==r&&(Ke=C,b=SE()),C=b,C===r&&(C=B,t.substr(B,2)===Rh?(b=Rh,B+=2):(b=r,I===0&&ke(kE)),b!==r&&(Ke=C,b=gr()),C=b,C===r&&(C=B,t.substr(B,2)===Yn?(b=Yn,B+=2):(b=r,I===0&&ke(Jl)),b!==r&&(Ke=C,b=Fh()),C=b,C===r&&(C=B,t.charCodeAt(B)===92?(b=hs,B++):(b=r,I===0&&ke(pt)),b!==r?(Vs.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(Ba)),F!==r?(Ke=C,b=mn(F),C=b):(B=C,C=r)):(B=C,C=r),C===r&&(C=ife()))))))))),C}function ife(){var C,b,F,H,ue,De,Ct,bt,Zr,Ei,ds,AQ;return C=B,t.charCodeAt(B)===92?(b=hs,B++):(b=r,I===0&&ke(pt)),b!==r?(F=nQ(),F!==r?(Ke=C,b=En(F),C=b):(B=C,C=r)):(B=C,C=r),C===r&&(C=B,t.substr(B,2)===Oe?(b=Oe,B+=2):(b=r,I===0&&ke(Mu)),b!==r?(F=B,H=B,ue=nQ(),ue!==r?(De=Wn(),De!==r?(ue=[ue,De],H=ue):(B=H,H=r)):(B=H,H=r),H===r&&(H=nQ()),H!==r?F=t.substring(F,B):F=H,F!==r?(Ke=C,b=En(F),C=b):(B=C,C=r)):(B=C,C=r),C===r&&(C=B,t.substr(B,2)===Wl?(b=Wl,B+=2):(b=r,I===0&&ke(Xs)),b!==r?(F=B,H=B,ue=Wn(),ue!==r?(De=Wn(),De!==r?(Ct=Wn(),Ct!==r?(bt=Wn(),bt!==r?(ue=[ue,De,Ct,bt],H=ue):(B=H,H=r)):(B=H,H=r)):(B=H,H=r)):(B=H,H=r),H!==r?F=t.substring(F,B):F=H,F!==r?(Ke=C,b=En(F),C=b):(B=C,C=r)):(B=C,C=r),C===r&&(C=B,t.substr(B,2)===zl?(b=zl,B+=2):(b=r,I===0&&ke(RA)),b!==r?(F=B,H=B,ue=Wn(),ue!==r?(De=Wn(),De!==r?(Ct=Wn(),Ct!==r?(bt=Wn(),bt!==r?(Zr=Wn(),Zr!==r?(Ei=Wn(),Ei!==r?(ds=Wn(),ds!==r?(AQ=Wn(),AQ!==r?(ue=[ue,De,Ct,bt,Zr,Ei,ds,AQ],H=ue):(B=H,H=r)):(B=H,H=r)):(B=H,H=r)):(B=H,H=r)):(B=H,H=r)):(B=H,H=r)):(B=H,H=r)):(B=H,H=r),H!==r?F=t.substring(F,B):F=H,F!==r?(Ke=C,b=Uu(F),C=b):(B=C,C=r)):(B=C,C=r)))),C}function nQ(){var C;return Ku.test(t.charAt(B))?(C=t.charAt(B),B++):(C=r,I===0&&ke(ba)),C}function Wn(){var C;return Qa.test(t.charAt(B))?(C=t.charAt(B),B++):(C=r,I===0&&ke(it)),C}function nfe(){var C,b,F,H,ue;if(C=B,b=[],F=B,t.charCodeAt(B)===92?(H=hs,B++):(H=r,I===0&&ke(pt)),H!==r?(t.length>B?(ue=t.charAt(B),B++):(ue=r,I===0&&ke(Po)),ue!==r?(Ke=F,H=mn(ue),F=H):(B=F,F=r)):(B=F,F=r),F===r&&(F=B,H=B,I++,ue=tM(),I--,ue===r?H=void 0:(B=H,H=r),H!==r?(t.length>B?(ue=t.charAt(B),B++):(ue=r,I===0&&ke(Po)),ue!==r?(Ke=F,H=mn(ue),F=H):(B=F,F=r)):(B=F,F=r)),F!==r)for(;F!==r;)b.push(F),F=B,t.charCodeAt(B)===92?(H=hs,B++):(H=r,I===0&&ke(pt)),H!==r?(t.length>B?(ue=t.charAt(B),B++):(ue=r,I===0&&ke(Po)),ue!==r?(Ke=F,H=mn(ue),F=H):(B=F,F=r)):(B=F,F=r),F===r&&(F=B,H=B,I++,ue=tM(),I--,ue===r?H=void 0:(B=H,H=r),H!==r?(t.length>B?(ue=t.charAt(B),B++):(ue=r,I===0&&ke(Po)),ue!==r?(Ke=F,H=mn(ue),F=H):(B=F,F=r)):(B=F,F=r));else b=r;return b!==r&&(Ke=C,b=jn(b)),C=b,C}function sQ(){var C,b,F,H,ue,De;if(C=B,t.charCodeAt(B)===45?(b=FA,B++):(b=r,I===0&&ke(_l)),b===r&&(t.charCodeAt(B)===43?(b=Zs,B++):(b=r,I===0&&ke(Vl))),b===r&&(b=null),b!==r){if(F=[],ve.test(t.charAt(B))?(H=t.charAt(B),B++):(H=r,I===0&&ke(pe)),H!==r)for(;H!==r;)F.push(H),ve.test(t.charAt(B))?(H=t.charAt(B),B++):(H=r,I===0&&ke(pe));else F=r;if(F!==r)if(t.charCodeAt(B)===46?(H=xE,B++):(H=r,I===0&&ke(Nh)),H!==r){if(ue=[],ve.test(t.charAt(B))?(De=t.charAt(B),B++):(De=r,I===0&&ke(pe)),De!==r)for(;De!==r;)ue.push(De),ve.test(t.charAt(B))?(De=t.charAt(B),B++):(De=r,I===0&&ke(pe));else ue=r;ue!==r?(Ke=C,b=Hu(b,F,ue),C=b):(B=C,C=r)}else B=C,C=r;else B=C,C=r}else B=C,C=r;if(C===r){if(C=B,t.charCodeAt(B)===45?(b=FA,B++):(b=r,I===0&&ke(_l)),b===r&&(t.charCodeAt(B)===43?(b=Zs,B++):(b=r,I===0&&ke(Vl))),b===r&&(b=null),b!==r){if(F=[],ve.test(t.charAt(B))?(H=t.charAt(B),B++):(H=r,I===0&&ke(pe)),H!==r)for(;H!==r;)F.push(H),ve.test(t.charAt(B))?(H=t.charAt(B),B++):(H=r,I===0&&ke(pe));else F=r;F!==r?(Ke=C,b=Lh(b,F),C=b):(B=C,C=r)}else B=C,C=r;if(C===r&&(C=B,b=aQ(),b!==r&&(Ke=C,b=PE(b)),C=b,C===r&&(C=B,b=Zl(),b!==r&&(Ke=C,b=Xl(b)),C=b,C===r)))if(C=B,t.charCodeAt(B)===40?(b=le,B++):(b=r,I===0&&ke(Ae)),b!==r){for(F=[],H=je();H!==r;)F.push(H),H=je();if(F!==r)if(H=XO(),H!==r){for(ue=[],De=je();De!==r;)ue.push(De),De=je();ue!==r?(t.charCodeAt(B)===41?(De=T,B++):(De=r,I===0&&ke(L)),De!==r?(Ke=C,b=DE(H),C=b):(B=C,C=r)):(B=C,C=r)}else B=C,C=r;else B=C,C=r}else B=C,C=r}return C}function oQ(){var C,b,F,H,ue,De,Ct,bt;if(C=B,b=sQ(),b!==r){for(F=[],H=B,ue=[],De=je();De!==r;)ue.push(De),De=je();if(ue!==r)if(t.charCodeAt(B)===42?(De=ju,B++):(De=r,I===0&&ke(NA)),De===r&&(t.charCodeAt(B)===47?(De=Lr,B++):(De=r,I===0&&ke(RE))),De!==r){for(Ct=[],bt=je();bt!==r;)Ct.push(bt),bt=je();Ct!==r?(bt=sQ(),bt!==r?(Ke=H,ue=$s(b,De,bt),H=ue):(B=H,H=r)):(B=H,H=r)}else B=H,H=r;else B=H,H=r;for(;H!==r;){for(F.push(H),H=B,ue=[],De=je();De!==r;)ue.push(De),De=je();if(ue!==r)if(t.charCodeAt(B)===42?(De=ju,B++):(De=r,I===0&&ke(NA)),De===r&&(t.charCodeAt(B)===47?(De=Lr,B++):(De=r,I===0&&ke(RE))),De!==r){for(Ct=[],bt=je();bt!==r;)Ct.push(bt),bt=je();Ct!==r?(bt=sQ(),bt!==r?(Ke=H,ue=$s(b,De,bt),H=ue):(B=H,H=r)):(B=H,H=r)}else B=H,H=r;else B=H,H=r}F!==r?(Ke=C,b=eo(b,F),C=b):(B=C,C=r)}else B=C,C=r;return C}function XO(){var C,b,F,H,ue,De,Ct,bt;if(C=B,b=oQ(),b!==r){for(F=[],H=B,ue=[],De=je();De!==r;)ue.push(De),De=je();if(ue!==r)if(t.charCodeAt(B)===43?(De=Zs,B++):(De=r,I===0&&ke(Vl)),De===r&&(t.charCodeAt(B)===45?(De=FA,B++):(De=r,I===0&&ke(_l))),De!==r){for(Ct=[],bt=je();bt!==r;)Ct.push(bt),bt=je();Ct!==r?(bt=oQ(),bt!==r?(Ke=H,ue=Gu(b,De,bt),H=ue):(B=H,H=r)):(B=H,H=r)}else B=H,H=r;else B=H,H=r;for(;H!==r;){for(F.push(H),H=B,ue=[],De=je();De!==r;)ue.push(De),De=je();if(ue!==r)if(t.charCodeAt(B)===43?(De=Zs,B++):(De=r,I===0&&ke(Vl)),De===r&&(t.charCodeAt(B)===45?(De=FA,B++):(De=r,I===0&&ke(_l))),De!==r){for(Ct=[],bt=je();bt!==r;)Ct.push(bt),bt=je();Ct!==r?(bt=oQ(),bt!==r?(Ke=H,ue=Gu(b,De,bt),H=ue):(B=H,H=r)):(B=H,H=r)}else B=H,H=r;else B=H,H=r}F!==r?(Ke=C,b=eo(b,F),C=b):(B=C,C=r)}else B=C,C=r;return C}function ZO(){var C,b,F,H,ue,De;if(C=B,t.substr(B,3)===LA?(b=LA,B+=3):(b=r,I===0&&ke(R)),b!==r){for(F=[],H=je();H!==r;)F.push(H),H=je();if(F!==r)if(H=XO(),H!==r){for(ue=[],De=je();De!==r;)ue.push(De),De=je();ue!==r?(t.substr(B,2)===q?(De=q,B+=2):(De=r,I===0&&ke(de)),De!==r?(Ke=C,b=He(H),C=b):(B=C,C=r)):(B=C,C=r)}else B=C,C=r;else B=C,C=r}else B=C,C=r;return C}function $O(){var C,b,F,H;return C=B,t.substr(B,2)===Te?(b=Te,B+=2):(b=r,I===0&&ke(Xe)),b!==r?(F=Gr(),F!==r?(t.charCodeAt(B)===41?(H=T,B++):(H=r,I===0&&ke(L)),H!==r?(Ke=C,b=Et(F),C=b):(B=C,C=r)):(B=C,C=r)):(B=C,C=r),C}function aQ(){var C,b,F,H,ue,De;return C=B,t.substr(B,2)===Rt?(b=Rt,B+=2):(b=r,I===0&&ke(qn)),b!==r?(F=Zl(),F!==r?(t.substr(B,2)===Jb?(H=Jb,B+=2):(H=r,I===0&&ke(xO)),H!==r?(ue=GO(),ue!==r?(t.charCodeAt(B)===125?(De=re,B++):(De=r,I===0&&ke(se)),De!==r?(Ke=C,b=PO(F,ue),C=b):(B=C,C=r)):(B=C,C=r)):(B=C,C=r)):(B=C,C=r)):(B=C,C=r),C===r&&(C=B,t.substr(B,2)===Rt?(b=Rt,B+=2):(b=r,I===0&&ke(qn)),b!==r?(F=Zl(),F!==r?(t.substr(B,3)===Wb?(H=Wb,B+=3):(H=r,I===0&&ke(DO)),H!==r?(Ke=C,b=RO(F),C=b):(B=C,C=r)):(B=C,C=r)):(B=C,C=r),C===r&&(C=B,t.substr(B,2)===Rt?(b=Rt,B+=2):(b=r,I===0&&ke(qn)),b!==r?(F=Zl(),F!==r?(t.substr(B,2)===zb?(H=zb,B+=2):(H=r,I===0&&ke(FO)),H!==r?(ue=GO(),ue!==r?(t.charCodeAt(B)===125?(De=re,B++):(De=r,I===0&&ke(se)),De!==r?(Ke=C,b=NO(F,ue),C=b):(B=C,C=r)):(B=C,C=r)):(B=C,C=r)):(B=C,C=r)):(B=C,C=r),C===r&&(C=B,t.substr(B,2)===Rt?(b=Rt,B+=2):(b=r,I===0&&ke(qn)),b!==r?(F=Zl(),F!==r?(t.substr(B,3)===_b?(H=_b,B+=3):(H=r,I===0&&ke(LO)),H!==r?(Ke=C,b=TO(F),C=b):(B=C,C=r)):(B=C,C=r)):(B=C,C=r),C===r&&(C=B,t.substr(B,2)===Rt?(b=Rt,B+=2):(b=r,I===0&&ke(qn)),b!==r?(F=Zl(),F!==r?(t.charCodeAt(B)===125?(H=re,B++):(H=r,I===0&&ke(se)),H!==r?(Ke=C,b=Vb(F),C=b):(B=C,C=r)):(B=C,C=r)):(B=C,C=r),C===r&&(C=B,t.charCodeAt(B)===36?(b=OO,B++):(b=r,I===0&&ke(MO)),b!==r?(F=Zl(),F!==r?(Ke=C,b=Vb(F),C=b):(B=C,C=r)):(B=C,C=r)))))),C}function sfe(){var C,b,F;return C=B,b=ofe(),b!==r?(Ke=B,F=UO(b),F?F=void 0:F=r,F!==r?(Ke=C,b=KO(b),C=b):(B=C,C=r)):(B=C,C=r),C}function ofe(){var C,b,F,H,ue;if(C=B,b=[],F=B,H=B,I++,ue=rM(),I--,ue===r?H=void 0:(B=H,H=r),H!==r?(t.length>B?(ue=t.charAt(B),B++):(ue=r,I===0&&ke(Po)),ue!==r?(Ke=F,H=mn(ue),F=H):(B=F,F=r)):(B=F,F=r),F!==r)for(;F!==r;)b.push(F),F=B,H=B,I++,ue=rM(),I--,ue===r?H=void 0:(B=H,H=r),H!==r?(t.length>B?(ue=t.charAt(B),B++):(ue=r,I===0&&ke(Po)),ue!==r?(Ke=F,H=mn(ue),F=H):(B=F,F=r)):(B=F,F=r);else b=r;return b!==r&&(Ke=C,b=jn(b)),C=b,C}function eM(){var C,b,F;if(C=B,b=[],Xb.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(Zb)),F!==r)for(;F!==r;)b.push(F),Xb.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(Zb));else b=r;return b!==r&&(Ke=C,b=$b()),C=b,C}function Zl(){var C,b,F;if(C=B,b=[],eQ.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(tQ)),F!==r)for(;F!==r;)b.push(F),eQ.test(t.charAt(B))?(F=t.charAt(B),B++):(F=r,I===0&&ke(tQ));else b=r;return b!==r&&(Ke=C,b=$b()),C=b,C}function tM(){var C;return HO.test(t.charAt(B))?(C=t.charAt(B),B++):(C=r,I===0&&ke(Yu)),C}function rM(){var C;return rQ.test(t.charAt(B))?(C=t.charAt(B),B++):(C=r,I===0&&ke(iQ)),C}function je(){var C,b;if(C=[],FE.test(t.charAt(B))?(b=t.charAt(B),B++):(b=r,I===0&&ke(NE)),b!==r)for(;b!==r;)C.push(b),FE.test(t.charAt(B))?(b=t.charAt(B),B++):(b=r,I===0&&ke(NE));else C=r;return C}if(D=n(),D!==r&&B===t.length)return D;throw D!==r&&B{"use strict";function ohe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function oc(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,oc)}ohe(oc,Error);oc.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gY&&(Y=S,U=[]),U.push(pe))}function se(pe,X){return new oc(pe,null,null,X)}function Qe(pe,X,be){return new oc(oc.buildMessage(pe,X),pe,X,be)}function he(){var pe,X,be,ce;return pe=S,X=Fe(),X!==r?(t.charCodeAt(S)===47?(be=s,S++):(be=r,J===0&&re(o)),be!==r?(ce=Fe(),ce!==r?(x=pe,X=a(X,ce),pe=X):(S=pe,pe=r)):(S=pe,pe=r)):(S=pe,pe=r),pe===r&&(pe=S,X=Fe(),X!==r&&(x=pe,X=l(X)),pe=X),pe}function Fe(){var pe,X,be,ce;return pe=S,X=Ue(),X!==r?(t.charCodeAt(S)===64?(be=c,S++):(be=r,J===0&&re(u)),be!==r?(ce=ve(),ce!==r?(x=pe,X=g(X,ce),pe=X):(S=pe,pe=r)):(S=pe,pe=r)):(S=pe,pe=r),pe===r&&(pe=S,X=Ue(),X!==r&&(x=pe,X=f(X)),pe=X),pe}function Ue(){var pe,X,be,ce,fe;return pe=S,t.charCodeAt(S)===64?(X=c,S++):(X=r,J===0&&re(u)),X!==r?(be=xe(),be!==r?(t.charCodeAt(S)===47?(ce=s,S++):(ce=r,J===0&&re(o)),ce!==r?(fe=xe(),fe!==r?(x=pe,X=h(),pe=X):(S=pe,pe=r)):(S=pe,pe=r)):(S=pe,pe=r)):(S=pe,pe=r),pe===r&&(pe=S,X=xe(),X!==r&&(x=pe,X=h()),pe=X),pe}function xe(){var pe,X,be;if(pe=S,X=[],p.test(t.charAt(S))?(be=t.charAt(S),S++):(be=r,J===0&&re(m)),be!==r)for(;be!==r;)X.push(be),p.test(t.charAt(S))?(be=t.charAt(S),S++):(be=r,J===0&&re(m));else X=r;return X!==r&&(x=pe,X=h()),pe=X,pe}function ve(){var pe,X,be;if(pe=S,X=[],y.test(t.charAt(S))?(be=t.charAt(S),S++):(be=r,J===0&&re(Q)),be!==r)for(;be!==r;)X.push(be),y.test(t.charAt(S))?(be=t.charAt(S),S++):(be=r,J===0&&re(Q));else X=r;return X!==r&&(x=pe,X=h()),pe=X,pe}if(W=n(),W!==r&&S===t.length)return W;throw W!==r&&S{"use strict";function E1(t){return typeof t=="undefined"||t===null}function Ahe(t){return typeof t=="object"&&t!==null}function lhe(t){return Array.isArray(t)?t:E1(t)?[]:[t]}function che(t,e){var r,i,n,s;if(e)for(s=Object.keys(e),r=0,i=s.length;r{"use strict";function ep(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}ep.prototype=Object.create(Error.prototype);ep.prototype.constructor=ep;ep.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};I1.exports=ep});var B1=w((DZe,y1)=>{"use strict";var w1=Ac();function HQ(t,e,r,i,n){this.name=t,this.buffer=e,this.position=r,this.line=i,this.column=n}HQ.prototype.getSnippet=function(e,r){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,r=r||75,i="",n=this.position;n>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>r/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;or/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),w1.repeat(" ",e)+i+a+s+` +`+w1.repeat(" ",e+this.position-n+i.length)+"^"};HQ.prototype.toString=function(e){var r,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(i+=`: +`+r)),i};y1.exports=HQ});var li=w((RZe,b1)=>{"use strict";var Q1=Vu(),fhe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],hhe=["scalar","sequence","mapping"];function phe(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(i){e[String(i)]=r})}),e}function dhe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(fhe.indexOf(r)===-1)throw new Q1('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=phe(e.styleAliases||null),hhe.indexOf(this.kind)===-1)throw new Q1('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}b1.exports=dhe});var lc=w((FZe,v1)=>{"use strict";var S1=Ac(),nI=Vu(),Che=li();function jQ(t,e,r){var i=[];return t.include.forEach(function(n){r=jQ(n,e,r)}),t[e].forEach(function(n){r.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),r.push(n)}),r.filter(function(n,s){return i.indexOf(s)===-1})}function mhe(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function i(n){t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,r=arguments.length;e{"use strict";var Ehe=li();k1.exports=new Ehe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var D1=w((LZe,P1)=>{"use strict";var Ihe=li();P1.exports=new Ihe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var F1=w((TZe,R1)=>{"use strict";var yhe=li();R1.exports=new yhe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var sI=w((OZe,N1)=>{"use strict";var whe=lc();N1.exports=new whe({explicit:[x1(),D1(),F1()]})});var T1=w((MZe,L1)=>{"use strict";var Bhe=li();function bhe(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function Qhe(){return null}function vhe(t){return t===null}L1.exports=new Bhe("tag:yaml.org,2002:null",{kind:"scalar",resolve:bhe,construct:Qhe,predicate:vhe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var M1=w((UZe,O1)=>{"use strict";var She=li();function khe(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function xhe(t){return t==="true"||t==="True"||t==="TRUE"}function Phe(t){return Object.prototype.toString.call(t)==="[object Boolean]"}O1.exports=new She("tag:yaml.org,2002:bool",{kind:"scalar",resolve:khe,construct:xhe,predicate:Phe,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var K1=w((KZe,U1)=>{"use strict";var Dhe=Ac(),Rhe=li();function Fhe(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function Nhe(t){return 48<=t&&t<=55}function Lhe(t){return 48<=t&&t<=57}function The(t){if(t===null)return!1;var e=t.length,r=0,i=!1,n;if(!e)return!1;if(n=t[r],(n==="-"||n==="+")&&(n=t[++r]),n==="0"){if(r+1===e)return!0;if(n=t[++r],n==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var G1=w((HZe,H1)=>{"use strict";var j1=Ac(),Uhe=li(),Khe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Hhe(t){return!(t===null||!Khe.test(t)||t[t.length-1]==="_")}function jhe(t){var e,r,i,n;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),r*e):r*parseFloat(e,10)}var Ghe=/^[-+]?[0-9]+e/;function Yhe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(j1.isNegativeZero(t))return"-0.0";return r=t.toString(10),Ghe.test(r)?r.replace("e",".e"):r}function qhe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!=0||j1.isNegativeZero(t))}H1.exports=new Uhe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Hhe,construct:jhe,predicate:qhe,represent:Yhe,defaultStyle:"lowercase"})});var GQ=w((jZe,Y1)=>{"use strict";var Jhe=lc();Y1.exports=new Jhe({include:[sI()],implicit:[T1(),M1(),K1(),G1()]})});var YQ=w((GZe,q1)=>{"use strict";var Whe=lc();q1.exports=new Whe({include:[GQ()]})});var _1=w((YZe,J1)=>{"use strict";var zhe=li(),W1=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),z1=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function _he(t){return t===null?!1:W1.exec(t)!==null||z1.exec(t)!==null}function Vhe(t){var e,r,i,n,s,o,a,l=0,c=null,u,g,f;if(e=W1.exec(t),e===null&&(e=z1.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(r,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function Xhe(t){return t.toISOString()}J1.exports=new zhe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:_he,construct:Vhe,instanceOf:Date,represent:Xhe})});var X1=w((qZe,V1)=>{"use strict";var Zhe=li();function $he(t){return t==="<<"||t===null}V1.exports=new Zhe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:$he})});var eU=w((JZe,Z1)=>{"use strict";var cc;try{$1=require,cc=$1("buffer").Buffer}catch(t){}var $1,epe=li(),qQ=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function tpe(t){if(t===null)return!1;var e,r,i=0,n=t.length,s=qQ;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function rpe(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,s=qQ,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return r=n%4*6,r===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):r===18?(a.push(o>>10&255),a.push(o>>2&255)):r===12&&a.push(o>>4&255),cc?cc.from?cc.from(a):new cc(a):a}function ipe(t){var e="",r=0,i,n,s=t.length,o=qQ;for(i=0;i>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]),r=(r<<8)+t[i];return n=s%3,n===0?(e+=o[r>>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]):n===2?(e+=o[r>>10&63],e+=o[r>>4&63],e+=o[r<<2&63],e+=o[64]):n===1&&(e+=o[r>>2&63],e+=o[r<<4&63],e+=o[64],e+=o[64]),e}function npe(t){return cc&&cc.isBuffer(t)}Z1.exports=new epe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:tpe,construct:rpe,predicate:npe,represent:ipe})});var rU=w((WZe,tU)=>{"use strict";var spe=li(),ope=Object.prototype.hasOwnProperty,ape=Object.prototype.toString;function Ape(t){if(t===null)return!0;var e=[],r,i,n,s,o,a=t;for(r=0,i=a.length;r{"use strict";var cpe=li(),upe=Object.prototype.toString;function gpe(t){if(t===null)return!0;var e,r,i,n,s,o=t;for(s=new Array(o.length),e=0,r=o.length;e{"use strict";var hpe=li(),ppe=Object.prototype.hasOwnProperty;function dpe(t){if(t===null)return!0;var e,r=t;for(e in r)if(ppe.call(r,e)&&r[e]!==null)return!1;return!0}function Cpe(t){return t!==null?t:{}}sU.exports=new hpe("tag:yaml.org,2002:set",{kind:"mapping",resolve:dpe,construct:Cpe})});var Zu=w((VZe,aU)=>{"use strict";var mpe=lc();aU.exports=new mpe({include:[YQ()],implicit:[_1(),X1()],explicit:[eU(),rU(),nU(),oU()]})});var lU=w((XZe,AU)=>{"use strict";var Epe=li();function Ipe(){return!0}function ype(){}function wpe(){return""}function Bpe(t){return typeof t=="undefined"}AU.exports=new Epe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Ipe,construct:ype,predicate:Bpe,represent:wpe})});var uU=w((ZZe,cU)=>{"use strict";var bpe=li();function Qpe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),i="";return!(e[0]==="/"&&(r&&(i=r[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function vpe(t){var e=t,r=/\/([gim]*)$/.exec(t),i="";return e[0]==="/"&&(r&&(i=r[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function Spe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function kpe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}cU.exports=new bpe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:Qpe,construct:vpe,predicate:kpe,represent:Spe})});var hU=w(($Ze,gU)=>{"use strict";var oI;try{fU=require,oI=fU("esprima")}catch(t){typeof window!="undefined"&&(oI=window.esprima)}var fU,xpe=li();function Ppe(t){if(t===null)return!1;try{var e="("+t+")",r=oI.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch(i){return!1}}function Dpe(t){var e="("+t+")",r=oI.parse(e,{range:!0}),i=[],n;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function Rpe(t){return t.toString()}function Fpe(t){return Object.prototype.toString.call(t)==="[object Function]"}gU.exports=new xpe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Ppe,construct:Dpe,predicate:Fpe,represent:Rpe})});var tp=w((e$e,pU)=>{"use strict";var dU=lc();pU.exports=dU.DEFAULT=new dU({include:[Zu()],explicit:[lU(),uU(),hU()]})});var LU=w((t$e,rp)=>{"use strict";var Fa=Ac(),CU=Vu(),Npe=B1(),mU=Zu(),Lpe=tp(),HA=Object.prototype.hasOwnProperty,aI=1,EU=2,IU=3,AI=4,JQ=1,Tpe=2,yU=3,Ope=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Mpe=/[\x85\u2028\u2029]/,Upe=/[,\[\]\{\}]/,wU=/^(?:!|!!|![a-z\-]+!)$/i,BU=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function bU(t){return Object.prototype.toString.call(t)}function Ro(t){return t===10||t===13}function uc(t){return t===9||t===32}function yn(t){return t===9||t===32||t===10||t===13}function $u(t){return t===44||t===91||t===93||t===123||t===125}function Kpe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function Hpe(t){return t===120?2:t===117?4:t===85?8:0}function jpe(t){return 48<=t&&t<=57?t-48:-1}function QU(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` +`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function Gpe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var vU=new Array(256),SU=new Array(256);for(var eg=0;eg<256;eg++)vU[eg]=QU(eg)?1:0,SU[eg]=QU(eg);function Ype(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||Lpe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function kU(t,e){return new CU(e,new Npe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function dt(t,e){throw kU(t,e)}function lI(t,e){t.onWarning&&t.onWarning.call(null,kU(t,e))}var xU={YAML:function(e,r,i){var n,s,o;e.version!==null&&dt(e,"duplication of %YAML directive"),i.length!==1&&dt(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&dt(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&dt(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&lI(e,"unsupported YAML version of the document")},TAG:function(e,r,i){var n,s;i.length!==2&&dt(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],wU.test(n)||dt(e,"ill-formed tag handle (first argument) of the TAG directive"),HA.call(e.tagMap,n)&&dt(e,'there is a previously declared suffix for "'+n+'" tag handle'),BU.test(s)||dt(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function jA(t,e,r,i){var n,s,o,a;if(e1&&(t.result+=Fa.repeat(` +`,e-1))}function qpe(t,e,r){var i,n,s,o,a,l,c,u,g=t.kind,f=t.result,h;if(h=t.input.charCodeAt(t.position),yn(h)||$u(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=t.input.charCodeAt(t.position+1),yn(n)||r&&$u(n)))return!1;for(t.kind="scalar",t.result="",s=o=t.position,a=!1;h!==0;){if(h===58){if(n=t.input.charCodeAt(t.position+1),yn(n)||r&&$u(n))break}else if(h===35){if(i=t.input.charCodeAt(t.position-1),yn(i))break}else{if(t.position===t.lineStart&&cI(t)||r&&$u(h))break;if(Ro(h))if(l=t.line,c=t.lineStart,u=t.lineIndent,$r(t,!1,-1),t.lineIndent>=e){a=!0,h=t.input.charCodeAt(t.position);continue}else{t.position=o,t.line=l,t.lineStart=c,t.lineIndent=u;break}}a&&(jA(t,s,o,!1),zQ(t,t.line-l),s=o=t.position,a=!1),uc(h)||(o=t.position+1),h=t.input.charCodeAt(++t.position)}return jA(t,s,o,!1),t.result?!0:(t.kind=g,t.result=f,!1)}function Jpe(t,e){var r,i,n;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(jA(t,i,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)i=t.position,t.position++,n=t.position;else return!0;else Ro(r)?(jA(t,i,n,!0),zQ(t,$r(t,!1,e)),i=n=t.position):t.position===t.lineStart&&cI(t)?dt(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);dt(t,"unexpected end of the stream within a single quoted scalar")}function Wpe(t,e){var r,i,n,s,o,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return jA(t,r,t.position,!0),t.position++,!0;if(a===92){if(jA(t,r,t.position,!0),a=t.input.charCodeAt(++t.position),Ro(a))$r(t,!1,e);else if(a<256&&vU[a])t.result+=SU[a],t.position++;else if((o=Hpe(a))>0){for(n=o,s=0;n>0;n--)a=t.input.charCodeAt(++t.position),(o=Kpe(a))>=0?s=(s<<4)+o:dt(t,"expected hexadecimal character");t.result+=Gpe(s),t.position++}else dt(t,"unknown escape sequence");r=i=t.position}else Ro(a)?(jA(t,r,i,!0),zQ(t,$r(t,!1,e)),r=i=t.position):t.position===t.lineStart&&cI(t)?dt(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}dt(t,"unexpected end of the stream within a double quoted scalar")}function zpe(t,e){var r=!0,i,n=t.tag,s,o=t.anchor,a,l,c,u,g,f={},h,p,m,y;if(y=t.input.charCodeAt(t.position),y===91)l=93,g=!1,s=[];else if(y===123)l=125,g=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),y=t.input.charCodeAt(++t.position);y!==0;){if($r(t,!0,e),y=t.input.charCodeAt(t.position),y===l)return t.position++,t.tag=n,t.anchor=o,t.kind=g?"mapping":"sequence",t.result=s,!0;r||dt(t,"missed comma between flow collection entries"),p=h=m=null,c=u=!1,y===63&&(a=t.input.charCodeAt(t.position+1),yn(a)&&(c=u=!0,t.position++,$r(t,!0,e))),i=t.line,rg(t,e,aI,!1,!0),p=t.tag,h=t.result,$r(t,!0,e),y=t.input.charCodeAt(t.position),(u||t.line===i)&&y===58&&(c=!0,y=t.input.charCodeAt(++t.position),$r(t,!0,e),rg(t,e,aI,!1,!0),m=t.result),g?tg(t,s,f,p,h,m):c?s.push(tg(t,null,f,p,h,m)):s.push(h),$r(t,!0,e),y=t.input.charCodeAt(t.position),y===44?(r=!0,y=t.input.charCodeAt(++t.position)):r=!1}dt(t,"unexpected end of the stream within a flow collection")}function _pe(t,e){var r,i,n=JQ,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=t.input.charCodeAt(t.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(t.kind="scalar",t.result="";g!==0;)if(g=t.input.charCodeAt(++t.position),g===43||g===45)JQ===n?n=g===43?yU:Tpe:dt(t,"repeat of a chomping mode identifier");else if((u=jpe(g))>=0)u===0?dt(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?dt(t,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(uc(g)){do g=t.input.charCodeAt(++t.position);while(uc(g));if(g===35)do g=t.input.charCodeAt(++t.position);while(!Ro(g)&&g!==0)}for(;g!==0;){for(WQ(t),t.lineIndent=0,g=t.input.charCodeAt(t.position);(!o||t.lineIndenta&&(a=t.lineIndent),Ro(g)){l++;continue}if(t.lineIndente)&&l!==0)dt(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(rg(t,e,AI,!0,n)&&(p?f=t.result:h=t.result),p||(tg(t,c,u,g,f,h,s,o),g=f=h=null),$r(t,!0,-1),y=t.input.charCodeAt(t.position)),t.lineIndent>e&&y!==0)dt(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),g=0,f=t.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result)?(t.result=h.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):dt(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):dt(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function ede(t){var e=t.position,r,i,n,s=!1,o;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(o=t.input.charCodeAt(t.position))!==0&&($r(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||o!==37));){for(s=!0,o=t.input.charCodeAt(++t.position),r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);for(i=t.input.slice(r,t.position),n=[],i.length<1&&dt(t,"directive name must not be less than one character in length");o!==0;){for(;uc(o);)o=t.input.charCodeAt(++t.position);if(o===35){do o=t.input.charCodeAt(++t.position);while(o!==0&&!Ro(o));break}if(Ro(o))break;for(r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(r,t.position))}o!==0&&WQ(t),HA.call(xU,i)?xU[i](t,i,n):lI(t,'unknown document directive "'+i+'"')}if($r(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,$r(t,!0,-1)):s&&dt(t,"directives end mark is expected"),rg(t,t.lineIndent-1,AI,!1,!0),$r(t,!0,-1),t.checkLineBreaks&&Mpe.test(t.input.slice(e,t.position))&&lI(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&cI(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,$r(t,!0,-1));return}if(t.position{"use strict";var ip=Ac(),np=Vu(),ide=tp(),nde=Zu(),TU=Object.prototype.toString,OU=Object.prototype.hasOwnProperty,sde=9,sp=10,ode=13,ade=32,Ade=33,lde=34,MU=35,cde=37,ude=38,gde=39,fde=42,UU=44,hde=45,KU=58,pde=61,dde=62,Cde=63,mde=64,HU=91,jU=93,Ede=96,GU=123,Ide=124,YU=125,Ui={};Ui[0]="\\0";Ui[7]="\\a";Ui[8]="\\b";Ui[9]="\\t";Ui[10]="\\n";Ui[11]="\\v";Ui[12]="\\f";Ui[13]="\\r";Ui[27]="\\e";Ui[34]='\\"';Ui[92]="\\\\";Ui[133]="\\N";Ui[160]="\\_";Ui[8232]="\\L";Ui[8233]="\\P";var yde=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function wde(t,e){var r,i,n,s,o,a,l;if(e===null)return{};for(r={},i=Object.keys(e),n=0,s=i.length;n0?t.charCodeAt(s-1):null,f=f&&WU(o,a)}else{for(s=0;si&&t[g+1]!==" ",g=s);else if(!ig(o))return uI;a=s>0?t.charCodeAt(s-1):null,f=f&&WU(o,a)}c=c||u&&s-g-1>i&&t[g+1]!==" "}return!l&&!c?f&&!n(t)?_U:VU:r>9&&zU(t)?uI:c?ZU:XU}function Pde(t,e,r,i){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&yde.indexOf(e)!==-1)return"'"+e+"'";var n=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-n),o=i||t.flowLevel>-1&&r>=t.flowLevel;function a(l){return bde(t,l)}switch(Sde(e,o,t.indent,s,a)){case _U:return e;case VU:return"'"+e.replace(/'/g,"''")+"'";case XU:return"|"+$U(e,t.indent)+eK(JU(e,n));case ZU:return">"+$U(e,t.indent)+eK(JU(kde(e,s),n));case uI:return'"'+xde(e,s)+'"';default:throw new np("impossible error: invalid scalar style")}}()}function $U(t,e){var r=zU(t)?String(e):"",i=t[t.length-1]===` +`,n=i&&(t[t.length-2]===` +`||t===` +`),s=n?"+":i?"":"-";return r+s+` +`}function eK(t){return t[t.length-1]===` +`?t.slice(0,-1):t}function kde(t,e){for(var r=/(\n+)([^\n]*)/g,i=function(){var c=t.indexOf(` +`);return c=c!==-1?c:t.length,r.lastIndex=c,tK(t.slice(0,c),e)}(),n=t[0]===` +`||t[0]===" ",s,o;o=r.exec(t);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` +`:"")+tK(l,e),n=s}return i}function tK(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=r.exec(t);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` +`+t.slice(n,s),n=s+1),o=a;return l+=` +`,t.length-n>e&&o>n?l+=t.slice(n,o)+` +`+t.slice(o+1):l+=t.slice(n),l.slice(1)}function xde(t){for(var e="",r,i,n,s=0;s=55296&&r<=56319&&(i=t.charCodeAt(s+1),i>=56320&&i<=57343)){e+=qU((r-55296)*1024+i-56320+65536),s++;continue}n=Ui[r],e+=!n&&ig(r)?t[s]:n||qU(r)}return e}function Dde(t,e,r){var i="",n=t.tag,s,o;for(s=0,o=r.length;s1024&&(u+="? "),u+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),!!gc(t,e,c,!1,!1)&&(u+=t.dump,i+=u));t.tag=n,t.dump="{"+i+"}"}function Nde(t,e,r,i){var n="",s=t.tag,o=Object.keys(r),a,l,c,u,g,f;if(t.sortKeys===!0)o.sort();else if(typeof t.sortKeys=="function")o.sort(t.sortKeys);else if(t.sortKeys)throw new np("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(t.dump&&sp===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,g&&(f+=VQ(t,e)),!!gc(t,e+1,u,!0,g)&&(t.dump&&sp===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,n+=f));t.tag=s,t.dump=n||"{}"}function rK(t,e,r){var i,n,s,o,a,l;for(n=r?t.explicitTypes:t.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');t.dump=i}return!0}return!1}function gc(t,e,r,i,n,s){t.tag=null,t.dump=r,rK(t,r,!1)||rK(t,r,!0);var o=TU.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=t.duplicates.indexOf(r),c=l!==-1),(t.tag!==null&&t.tag!=="?"||c||t.indent!==2&&e>0)&&(n=!1),c&&t.usedDuplicates[l])t.dump="*ref_"+l;else{if(a&&c&&!t.usedDuplicates[l]&&(t.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(t.dump).length!==0?(Nde(t,e,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(Fde(t,e,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump));else if(o==="[object Array]"){var u=t.noArrayIndent&&e>0?e-1:e;i&&t.dump.length!==0?(Rde(t,u,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(Dde(t,u,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump))}else if(o==="[object String]")t.tag!=="?"&&Pde(t,t.dump,e,s);else{if(t.skipInvalid)return!1;throw new np("unacceptable kind of an object to dump "+o)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function Lde(t,e){var r=[],i=[],n,s;for(ZQ(t,r,i),n=0,s=i.length;n{"use strict";var gI=LU(),sK=nK();function fI(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Or.exports.Type=li();Or.exports.Schema=lc();Or.exports.FAILSAFE_SCHEMA=sI();Or.exports.JSON_SCHEMA=GQ();Or.exports.CORE_SCHEMA=YQ();Or.exports.DEFAULT_SAFE_SCHEMA=Zu();Or.exports.DEFAULT_FULL_SCHEMA=tp();Or.exports.load=gI.load;Or.exports.loadAll=gI.loadAll;Or.exports.safeLoad=gI.safeLoad;Or.exports.safeLoadAll=gI.safeLoadAll;Or.exports.dump=sK.dump;Or.exports.safeDump=sK.safeDump;Or.exports.YAMLException=Vu();Or.exports.MINIMAL_SCHEMA=sI();Or.exports.SAFE_SCHEMA=Zu();Or.exports.DEFAULT_SCHEMA=tp();Or.exports.scan=fI("scan");Or.exports.parse=fI("parse");Or.exports.compose=fI("compose");Or.exports.addConstructor=fI("addConstructor")});var AK=w((n$e,aK)=>{"use strict";var Ode=oK();aK.exports=Ode});var cK=w((s$e,lK)=>{"use strict";function Mde(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function fc(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,fc)}Mde(fc,Error);fc.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[He]:de})))},Y=function(R){return R},U=function(R){return R},J=Vs("correct indentation"),W=" ",ee=gr(" ",!1),Z=function(R){return R.length===LA*Gu},A=function(R){return R.length===(LA+1)*Gu},ne=function(){return LA++,!0},le=function(){return LA--,!0},Ae=function(){return Ou()},T=Vs("pseudostring"),L=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,Ee=Yn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),we=/^[^\r\n\t ,\][{}:#"']/,qe=Yn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),re=function(){return Ou().replace(/^ *| *$/g,"")},se="--",Qe=gr("--",!1),he=/^[a-zA-Z\/0-9]/,Fe=Yn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),Ue=/^[^\r\n\t :,]/,xe=Yn(["\r",` +`," "," ",":",","],!0,!1),ve="null",pe=gr("null",!1),X=function(){return null},be="true",ce=gr("true",!1),fe=function(){return!0},gt="false",Ht=gr("false",!1),Mt=function(){return!1},mi=Vs("string"),jt='"',Qr=gr('"',!1),Ti=function(){return""},_s=function(R){return R},Un=function(R){return R.join("")},Kn=/^[^"\\\0-\x1F\x7F]/,vr=Yn(['"',"\\",["\0",""],"\x7F"],!0,!1),Hn='\\"',us=gr('\\"',!1),Ia=function(){return'"'},SA="\\\\",Du=gr("\\\\",!1),gs=function(){return"\\"},kA="\\/",ya=gr("\\/",!1),Ru=function(){return"/"},xA="\\b",PA=gr("\\b",!1),Sr=function(){return"\b"},jl="\\f",Fu=gr("\\f",!1),So=function(){return"\f"},Nu="\\n",Qh=gr("\\n",!1),vh=function(){return` +`},oe="\\r",Oi=gr("\\r",!1),ko=function(){return"\r"},jn="\\t",Lu=gr("\\t",!1),vt=function(){return" "},Gl="\\u",Gn=gr("\\u",!1),fs=function(R,q,de,He){return String.fromCharCode(parseInt(`0x${R}${q}${de}${He}`))},hs=/^[0-9a-fA-F]/,pt=Yn([["0","9"],["a","f"],["A","F"]],!1,!1),xo=Vs("blank space"),lt=/^[ \t]/,mn=Yn([" "," "],!1,!1),v=Vs("white space"),Tt=/^[ \t\n\r]/,Tu=Yn([" "," ",` +`,"\r"],!1,!1),Yl=`\r +`,Sh=gr(`\r +`,!1),kh=` +`,xh=gr(` +`,!1),Ph="\r",Dh=gr("\r",!1),G=0,yt=0,DA=[{line:1,column:1}],$i=0,ql=[],$e=0,wa;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Ou(){return t.substring(yt,G)}function SE(){return En(yt,G)}function Rh(R,q){throw q=q!==void 0?q:En(yt,G),Wl([Vs(R)],t.substring(yt,G),q)}function kE(R,q){throw q=q!==void 0?q:En(yt,G),Mu(R,q)}function gr(R,q){return{type:"literal",text:R,ignoreCase:q}}function Yn(R,q,de){return{type:"class",parts:R,inverted:q,ignoreCase:de}}function Jl(){return{type:"any"}}function Fh(){return{type:"end"}}function Vs(R){return{type:"other",description:R}}function Ba(R){var q=DA[R],de;if(q)return q;for(de=R-1;!DA[de];)de--;for(q=DA[de],q={line:q.line,column:q.column};de$i&&($i=G,ql=[]),ql.push(R))}function Mu(R,q){return new fc(R,null,null,q)}function Wl(R,q,de){return new fc(fc.buildMessage(R,q),R,q,de)}function Xs(){var R;return R=Uu(),R}function zl(){var R,q,de;for(R=G,q=[],de=RA();de!==r;)q.push(de),de=RA();return q!==r&&(yt=R,q=s(q)),R=q,R}function RA(){var R,q,de,He,Te;return R=G,q=Qa(),q!==r?(t.charCodeAt(G)===45?(de=o,G++):(de=r,$e===0&&Oe(a)),de!==r?(He=Lr(),He!==r?(Te=ba(),Te!==r?(yt=R,q=l(Te),R=q):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r),R}function Uu(){var R,q,de;for(R=G,q=[],de=Ku();de!==r;)q.push(de),de=Ku();return q!==r&&(yt=R,q=c(q)),R=q,R}function Ku(){var R,q,de,He,Te,Xe,Et,Rt,qn;if(R=G,q=Lr(),q===r&&(q=null),q!==r){if(de=G,t.charCodeAt(G)===35?(He=u,G++):(He=r,$e===0&&Oe(g)),He!==r){if(Te=[],Xe=G,Et=G,$e++,Rt=eo(),$e--,Rt===r?Et=void 0:(G=Et,Et=r),Et!==r?(t.length>G?(Rt=t.charAt(G),G++):(Rt=r,$e===0&&Oe(f)),Rt!==r?(Et=[Et,Rt],Xe=Et):(G=Xe,Xe=r)):(G=Xe,Xe=r),Xe!==r)for(;Xe!==r;)Te.push(Xe),Xe=G,Et=G,$e++,Rt=eo(),$e--,Rt===r?Et=void 0:(G=Et,Et=r),Et!==r?(t.length>G?(Rt=t.charAt(G),G++):(Rt=r,$e===0&&Oe(f)),Rt!==r?(Et=[Et,Rt],Xe=Et):(G=Xe,Xe=r)):(G=Xe,Xe=r);else Te=r;Te!==r?(He=[He,Te],de=He):(G=de,de=r)}else G=de,de=r;if(de===r&&(de=null),de!==r){if(He=[],Te=$s(),Te!==r)for(;Te!==r;)He.push(Te),Te=$s();else He=r;He!==r?(yt=R,q=h(),R=q):(G=R,R=r)}else G=R,R=r}else G=R,R=r;if(R===r&&(R=G,q=Qa(),q!==r?(de=_l(),de!==r?(He=Lr(),He===r&&(He=null),He!==r?(t.charCodeAt(G)===58?(Te=p,G++):(Te=r,$e===0&&Oe(m)),Te!==r?(Xe=Lr(),Xe===r&&(Xe=null),Xe!==r?(Et=ba(),Et!==r?(yt=R,q=y(de,Et),R=q):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r),R===r&&(R=G,q=Qa(),q!==r?(de=Zs(),de!==r?(He=Lr(),He===r&&(He=null),He!==r?(t.charCodeAt(G)===58?(Te=p,G++):(Te=r,$e===0&&Oe(m)),Te!==r?(Xe=Lr(),Xe===r&&(Xe=null),Xe!==r?(Et=ba(),Et!==r?(yt=R,q=y(de,Et),R=q):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r),R===r))){if(R=G,q=Qa(),q!==r)if(de=Zs(),de!==r)if(He=Lr(),He!==r)if(Te=xE(),Te!==r){if(Xe=[],Et=$s(),Et!==r)for(;Et!==r;)Xe.push(Et),Et=$s();else Xe=r;Xe!==r?(yt=R,q=y(de,Te),R=q):(G=R,R=r)}else G=R,R=r;else G=R,R=r;else G=R,R=r;else G=R,R=r;if(R===r)if(R=G,q=Qa(),q!==r)if(de=Zs(),de!==r){if(He=[],Te=G,Xe=Lr(),Xe===r&&(Xe=null),Xe!==r?(t.charCodeAt(G)===44?(Et=Q,G++):(Et=r,$e===0&&Oe(S)),Et!==r?(Rt=Lr(),Rt===r&&(Rt=null),Rt!==r?(qn=Zs(),qn!==r?(yt=Te,Xe=x(de,qn),Te=Xe):(G=Te,Te=r)):(G=Te,Te=r)):(G=Te,Te=r)):(G=Te,Te=r),Te!==r)for(;Te!==r;)He.push(Te),Te=G,Xe=Lr(),Xe===r&&(Xe=null),Xe!==r?(t.charCodeAt(G)===44?(Et=Q,G++):(Et=r,$e===0&&Oe(S)),Et!==r?(Rt=Lr(),Rt===r&&(Rt=null),Rt!==r?(qn=Zs(),qn!==r?(yt=Te,Xe=x(de,qn),Te=Xe):(G=Te,Te=r)):(G=Te,Te=r)):(G=Te,Te=r)):(G=Te,Te=r);else He=r;He!==r?(Te=Lr(),Te===r&&(Te=null),Te!==r?(t.charCodeAt(G)===58?(Xe=p,G++):(Xe=r,$e===0&&Oe(m)),Xe!==r?(Et=Lr(),Et===r&&(Et=null),Et!==r?(Rt=ba(),Rt!==r?(yt=R,q=M(de,He,Rt),R=q):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)}else G=R,R=r;else G=R,R=r}return R}function ba(){var R,q,de,He,Te,Xe,Et;if(R=G,q=G,$e++,de=G,He=eo(),He!==r?(Te=it(),Te!==r?(t.charCodeAt(G)===45?(Xe=o,G++):(Xe=r,$e===0&&Oe(a)),Xe!==r?(Et=Lr(),Et!==r?(He=[He,Te,Xe,Et],de=He):(G=de,de=r)):(G=de,de=r)):(G=de,de=r)):(G=de,de=r),$e--,de!==r?(G=q,q=void 0):q=r,q!==r?(de=$s(),de!==r?(He=Po(),He!==r?(Te=zl(),Te!==r?(Xe=FA(),Xe!==r?(yt=R,q=Y(Te),R=q):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r),R===r&&(R=G,q=eo(),q!==r?(de=Po(),de!==r?(He=Uu(),He!==r?(Te=FA(),Te!==r?(yt=R,q=Y(He),R=q):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r),R===r))if(R=G,q=Vl(),q!==r){if(de=[],He=$s(),He!==r)for(;He!==r;)de.push(He),He=$s();else de=r;de!==r?(yt=R,q=U(q),R=q):(G=R,R=r)}else G=R,R=r;return R}function Qa(){var R,q,de;for($e++,R=G,q=[],t.charCodeAt(G)===32?(de=W,G++):(de=r,$e===0&&Oe(ee));de!==r;)q.push(de),t.charCodeAt(G)===32?(de=W,G++):(de=r,$e===0&&Oe(ee));return q!==r?(yt=G,de=Z(q),de?de=void 0:de=r,de!==r?(q=[q,de],R=q):(G=R,R=r)):(G=R,R=r),$e--,R===r&&(q=r,$e===0&&Oe(J)),R}function it(){var R,q,de;for(R=G,q=[],t.charCodeAt(G)===32?(de=W,G++):(de=r,$e===0&&Oe(ee));de!==r;)q.push(de),t.charCodeAt(G)===32?(de=W,G++):(de=r,$e===0&&Oe(ee));return q!==r?(yt=G,de=A(q),de?de=void 0:de=r,de!==r?(q=[q,de],R=q):(G=R,R=r)):(G=R,R=r),R}function Po(){var R;return yt=G,R=ne(),R?R=void 0:R=r,R}function FA(){var R;return yt=G,R=le(),R?R=void 0:R=r,R}function _l(){var R;return R=Xl(),R===r&&(R=Nh()),R}function Zs(){var R,q,de;if(R=Xl(),R===r){if(R=G,q=[],de=Hu(),de!==r)for(;de!==r;)q.push(de),de=Hu();else q=r;q!==r&&(yt=R,q=Ae()),R=q}return R}function Vl(){var R;return R=Lh(),R===r&&(R=PE(),R===r&&(R=Xl(),R===r&&(R=Nh()))),R}function xE(){var R;return R=Lh(),R===r&&(R=Xl(),R===r&&(R=Hu())),R}function Nh(){var R,q,de,He,Te,Xe;if($e++,R=G,L.test(t.charAt(G))?(q=t.charAt(G),G++):(q=r,$e===0&&Oe(Ee)),q!==r){for(de=[],He=G,Te=Lr(),Te===r&&(Te=null),Te!==r?(we.test(t.charAt(G))?(Xe=t.charAt(G),G++):(Xe=r,$e===0&&Oe(qe)),Xe!==r?(Te=[Te,Xe],He=Te):(G=He,He=r)):(G=He,He=r);He!==r;)de.push(He),He=G,Te=Lr(),Te===r&&(Te=null),Te!==r?(we.test(t.charAt(G))?(Xe=t.charAt(G),G++):(Xe=r,$e===0&&Oe(qe)),Xe!==r?(Te=[Te,Xe],He=Te):(G=He,He=r)):(G=He,He=r);de!==r?(yt=R,q=re(),R=q):(G=R,R=r)}else G=R,R=r;return $e--,R===r&&(q=r,$e===0&&Oe(T)),R}function Hu(){var R,q,de,He,Te;if(R=G,t.substr(G,2)===se?(q=se,G+=2):(q=r,$e===0&&Oe(Qe)),q===r&&(q=null),q!==r)if(he.test(t.charAt(G))?(de=t.charAt(G),G++):(de=r,$e===0&&Oe(Fe)),de!==r){for(He=[],Ue.test(t.charAt(G))?(Te=t.charAt(G),G++):(Te=r,$e===0&&Oe(xe));Te!==r;)He.push(Te),Ue.test(t.charAt(G))?(Te=t.charAt(G),G++):(Te=r,$e===0&&Oe(xe));He!==r?(yt=R,q=re(),R=q):(G=R,R=r)}else G=R,R=r;else G=R,R=r;return R}function Lh(){var R,q;return R=G,t.substr(G,4)===ve?(q=ve,G+=4):(q=r,$e===0&&Oe(pe)),q!==r&&(yt=R,q=X()),R=q,R}function PE(){var R,q;return R=G,t.substr(G,4)===be?(q=be,G+=4):(q=r,$e===0&&Oe(ce)),q!==r&&(yt=R,q=fe()),R=q,R===r&&(R=G,t.substr(G,5)===gt?(q=gt,G+=5):(q=r,$e===0&&Oe(Ht)),q!==r&&(yt=R,q=Mt()),R=q),R}function Xl(){var R,q,de,He;return $e++,R=G,t.charCodeAt(G)===34?(q=jt,G++):(q=r,$e===0&&Oe(Qr)),q!==r?(t.charCodeAt(G)===34?(de=jt,G++):(de=r,$e===0&&Oe(Qr)),de!==r?(yt=R,q=Ti(),R=q):(G=R,R=r)):(G=R,R=r),R===r&&(R=G,t.charCodeAt(G)===34?(q=jt,G++):(q=r,$e===0&&Oe(Qr)),q!==r?(de=DE(),de!==r?(t.charCodeAt(G)===34?(He=jt,G++):(He=r,$e===0&&Oe(Qr)),He!==r?(yt=R,q=_s(de),R=q):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)),$e--,R===r&&(q=r,$e===0&&Oe(mi)),R}function DE(){var R,q,de;if(R=G,q=[],de=ju(),de!==r)for(;de!==r;)q.push(de),de=ju();else q=r;return q!==r&&(yt=R,q=Un(q)),R=q,R}function ju(){var R,q,de,He,Te,Xe;return Kn.test(t.charAt(G))?(R=t.charAt(G),G++):(R=r,$e===0&&Oe(vr)),R===r&&(R=G,t.substr(G,2)===Hn?(q=Hn,G+=2):(q=r,$e===0&&Oe(us)),q!==r&&(yt=R,q=Ia()),R=q,R===r&&(R=G,t.substr(G,2)===SA?(q=SA,G+=2):(q=r,$e===0&&Oe(Du)),q!==r&&(yt=R,q=gs()),R=q,R===r&&(R=G,t.substr(G,2)===kA?(q=kA,G+=2):(q=r,$e===0&&Oe(ya)),q!==r&&(yt=R,q=Ru()),R=q,R===r&&(R=G,t.substr(G,2)===xA?(q=xA,G+=2):(q=r,$e===0&&Oe(PA)),q!==r&&(yt=R,q=Sr()),R=q,R===r&&(R=G,t.substr(G,2)===jl?(q=jl,G+=2):(q=r,$e===0&&Oe(Fu)),q!==r&&(yt=R,q=So()),R=q,R===r&&(R=G,t.substr(G,2)===Nu?(q=Nu,G+=2):(q=r,$e===0&&Oe(Qh)),q!==r&&(yt=R,q=vh()),R=q,R===r&&(R=G,t.substr(G,2)===oe?(q=oe,G+=2):(q=r,$e===0&&Oe(Oi)),q!==r&&(yt=R,q=ko()),R=q,R===r&&(R=G,t.substr(G,2)===jn?(q=jn,G+=2):(q=r,$e===0&&Oe(Lu)),q!==r&&(yt=R,q=vt()),R=q,R===r&&(R=G,t.substr(G,2)===Gl?(q=Gl,G+=2):(q=r,$e===0&&Oe(Gn)),q!==r?(de=NA(),de!==r?(He=NA(),He!==r?(Te=NA(),Te!==r?(Xe=NA(),Xe!==r?(yt=R,q=fs(de,He,Te,Xe),R=q):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)):(G=R,R=r)))))))))),R}function NA(){var R;return hs.test(t.charAt(G))?(R=t.charAt(G),G++):(R=r,$e===0&&Oe(pt)),R}function Lr(){var R,q;if($e++,R=[],lt.test(t.charAt(G))?(q=t.charAt(G),G++):(q=r,$e===0&&Oe(mn)),q!==r)for(;q!==r;)R.push(q),lt.test(t.charAt(G))?(q=t.charAt(G),G++):(q=r,$e===0&&Oe(mn));else R=r;return $e--,R===r&&(q=r,$e===0&&Oe(xo)),R}function RE(){var R,q;if($e++,R=[],Tt.test(t.charAt(G))?(q=t.charAt(G),G++):(q=r,$e===0&&Oe(Tu)),q!==r)for(;q!==r;)R.push(q),Tt.test(t.charAt(G))?(q=t.charAt(G),G++):(q=r,$e===0&&Oe(Tu));else R=r;return $e--,R===r&&(q=r,$e===0&&Oe(v)),R}function $s(){var R,q,de,He,Te,Xe;if(R=G,q=eo(),q!==r){for(de=[],He=G,Te=Lr(),Te===r&&(Te=null),Te!==r?(Xe=eo(),Xe!==r?(Te=[Te,Xe],He=Te):(G=He,He=r)):(G=He,He=r);He!==r;)de.push(He),He=G,Te=Lr(),Te===r&&(Te=null),Te!==r?(Xe=eo(),Xe!==r?(Te=[Te,Xe],He=Te):(G=He,He=r)):(G=He,He=r);de!==r?(q=[q,de],R=q):(G=R,R=r)}else G=R,R=r;return R}function eo(){var R;return t.substr(G,2)===Yl?(R=Yl,G+=2):(R=r,$e===0&&Oe(Sh)),R===r&&(t.charCodeAt(G)===10?(R=kh,G++):(R=r,$e===0&&Oe(xh)),R===r&&(t.charCodeAt(G)===13?(R=Ph,G++):(R=r,$e===0&&Oe(Dh)))),R}let Gu=2,LA=0;if(wa=n(),wa!==r&&G===t.length)return wa;throw wa!==r&&G{"use strict";var Yde=t=>{let e=!1,r=!1,i=!1;for(let n=0;n{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(t)?t=t.map(n=>n.trim()).filter(n=>n.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=Yde(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),r(t))};tv.exports=pK;tv.exports.default=pK});var mK=w((u$e,CK)=>{CK.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var hc=w(_n=>{"use strict";var EK=mK(),Fo=process.env;Object.defineProperty(_n,"_vendors",{value:EK.map(function(t){return t.constant})});_n.name=null;_n.isPR=null;EK.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(i){return IK(i)});if(_n[t.constant]=r,r)switch(_n.name=t.name,typeof t.pr){case"string":_n.isPR=!!Fo[t.pr];break;case"object":"env"in t.pr?_n.isPR=t.pr.env in Fo&&Fo[t.pr.env]!==t.pr.ne:"any"in t.pr?_n.isPR=t.pr.any.some(function(i){return!!Fo[i]}):_n.isPR=IK(t.pr);break;default:_n.isPR=null}});_n.isCI=!!(Fo.CI||Fo.CONTINUOUS_INTEGRATION||Fo.BUILD_NUMBER||Fo.RUN_ID||_n.name);function IK(t){return typeof t=="string"?!!Fo[t]:Object.keys(t).every(function(e){return Fo[e]===t[e]})}});var sg={};ft(sg,{KeyRelationship:()=>Cc,applyCascade:()=>fp,base64RegExp:()=>QK,colorStringAlphaRegExp:()=>bK,colorStringRegExp:()=>BK,computeKey:()=>GA,getPrintable:()=>ei,hasExactLength:()=>PK,hasForbiddenKeys:()=>wCe,hasKeyRelationship:()=>lv,hasMaxLength:()=>sCe,hasMinLength:()=>nCe,hasMutuallyExclusiveKeys:()=>BCe,hasRequiredKeys:()=>yCe,hasUniqueItems:()=>oCe,isArray:()=>Vde,isAtLeast:()=>lCe,isAtMost:()=>cCe,isBase64:()=>ECe,isBoolean:()=>Wde,isDate:()=>_de,isDict:()=>Zde,isEnum:()=>nn,isHexColor:()=>mCe,isISO8601:()=>CCe,isInExclusiveRange:()=>gCe,isInInclusiveRange:()=>uCe,isInstanceOf:()=>eCe,isInteger:()=>fCe,isJSON:()=>ICe,isLiteral:()=>qde,isLowerCase:()=>hCe,isNegative:()=>aCe,isNullable:()=>iCe,isNumber:()=>zde,isObject:()=>$de,isOneOf:()=>tCe,isOptional:()=>rCe,isPositive:()=>ACe,isString:()=>gp,isTuple:()=>Xde,isUUID4:()=>dCe,isUnknown:()=>xK,isUpperCase:()=>pCe,iso8601RegExp:()=>Av,makeCoercionFn:()=>dc,makeSetter:()=>kK,makeTrait:()=>SK,makeValidator:()=>St,matchesRegExp:()=>hp,plural:()=>CI,pushError:()=>mt,simpleKeyRegExp:()=>wK,uuid4RegExp:()=>vK});function St({test:t}){return SK(t)()}function ei(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function GA(t,e){var r,i,n;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:wK.test(e)?`${(i=t==null?void 0:t.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=t==null?void 0:t.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function dc(t,e){return r=>{let i=t[e];return t[e]=r,dc(t,e).bind(null,i)}}function kK(t,e){return r=>{t[e]=r}}function CI(t,e,r){return t===1?e:r}function mt({errors:t,p:e}={},r){return t==null||t.push(`${e!=null?e:"."}: ${r}`),!1}function qde(t){return St({test:(e,r)=>e!==t?mt(r,`Expected a literal (got ${ei(t)})`):!0})}function nn(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return St({test:(i,n)=>r.has(i)?!0:mt(n,`Expected a valid enumeration value (got ${ei(i)})`)})}var wK,BK,bK,QK,vK,Av,SK,xK,gp,Jde,Wde,zde,_de,Vde,Xde,Zde,$de,eCe,tCe,fp,rCe,iCe,nCe,sCe,PK,oCe,aCe,ACe,lCe,cCe,uCe,gCe,fCe,hp,hCe,pCe,dCe,CCe,mCe,ECe,ICe,yCe,wCe,BCe,Cc,bCe,lv,Es=hfe(()=>{wK=/^[a-zA-Z_][a-zA-Z0-9_]*$/,BK=/^#[0-9a-f]{6}$/i,bK=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,QK=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,vK=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Av=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,SK=t=>()=>t;xK=()=>St({test:(t,e)=>!0});gp=()=>St({test:(t,e)=>typeof t!="string"?mt(e,`Expected a string (got ${ei(t)})`):!0});Jde=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),Wde=()=>St({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return mt(e,"Unbound coercion result");let i=Jde.get(t);if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return mt(e,`Expected a boolean (got ${ei(t)})`)}return!0}}),zde=()=>St({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return mt(e,"Unbound coercion result");let i;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch(s){}if(typeof n=="number")if(JSON.stringify(n)===t)i=n;else return mt(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return mt(e,`Expected a number (got ${ei(t)})`)}return!0}}),_de=()=>St({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return mt(e,"Unbound coercion result");let i;if(typeof t=="string"&&Av.test(t))i=new Date(t);else{let n;if(typeof t=="string"){let s;try{s=JSON.parse(t)}catch(o){}typeof s=="number"&&(n=s)}else typeof t=="number"&&(n=t);if(typeof n!="undefined")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return mt(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return mt(e,`Expected a date (got ${ei(t)})`)}return!0}}),Vde=(t,{delimiter:e}={})=>St({test:(r,i)=>{var n;if(typeof r=="string"&&typeof e!="undefined"&&typeof(i==null?void 0:i.coercions)!="undefined"){if(typeof(i==null?void 0:i.coercion)=="undefined")return mt(i,"Unbound coercion result");r=r.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,r)])}if(!Array.isArray(r))return mt(i,`Expected an array (got ${ei(r)})`);let s=!0;for(let o=0,a=r.length;o{let r=PK(t.length);return St({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e!="undefined"&&typeof(n==null?void 0:n.coercions)!="undefined"){if(typeof(n==null?void 0:n.coercion)=="undefined")return mt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return mt(n,`Expected a tuple (got ${ei(i)})`);let o=r(i,Object.assign({},n));for(let a=0,l=i.length;aSt({test:(r,i)=>{if(typeof r!="object"||r===null)return mt(i,`Expected an object (got ${ei(r)})`);let n=Object.keys(r),s=!0;for(let o=0,a=n.length;o{let r=Object.keys(t);return St({test:(i,n)=>{if(typeof i!="object"||i===null)return mt(n,`Expected an object (got ${ei(i)})`);let s=new Set([...r,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=mt(Object.assign(Object.assign({},n),{p:GA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(t,l)?t[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c!="undefined"?a=c(u,Object.assign(Object.assign({},n),{p:GA(n,l),coercion:dc(i,l)}))&&a:e===null?a=mt(Object.assign(Object.assign({},n),{p:GA(n,l)}),`Extraneous property (got ${ei(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:kK(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},eCe=t=>St({test:(e,r)=>e instanceof t?!0:mt(r,`Expected an instance of ${t.name} (got ${ei(e)})`)}),tCe=(t,{exclusive:e=!1}={})=>St({test:(r,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)!="undefined"?[]:void 0;for(let c=0,u=t.length;c1?mt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),fp=(t,e)=>St({test:(r,i)=>{var n,s;let o={value:r},a=typeof(i==null?void 0:i.coercions)!="undefined"?dc(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)!="undefined"?[]:void 0;if(!t(r,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l!="undefined")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)!="undefined"){if(o.value!==r){if(typeof(i==null?void 0:i.coercion)=="undefined")return mt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),rCe=t=>St({test:(e,r)=>typeof e=="undefined"?!0:t(e,r)}),iCe=t=>St({test:(e,r)=>e===null?!0:t(e,r)}),nCe=t=>St({test:(e,r)=>e.length>=t?!0:mt(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),sCe=t=>St({test:(e,r)=>e.length<=t?!0:mt(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),PK=t=>St({test:(e,r)=>e.length!==t?mt(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),oCe=({map:t}={})=>St({test:(e,r)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sSt({test:(t,e)=>t<=0?!0:mt(e,`Expected to be negative (got ${t})`)}),ACe=()=>St({test:(t,e)=>t>=0?!0:mt(e,`Expected to be positive (got ${t})`)}),lCe=t=>St({test:(e,r)=>e>=t?!0:mt(r,`Expected to be at least ${t} (got ${e})`)}),cCe=t=>St({test:(e,r)=>e<=t?!0:mt(r,`Expected to be at most ${t} (got ${e})`)}),uCe=(t,e)=>St({test:(r,i)=>r>=t&&r<=e?!0:mt(i,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),gCe=(t,e)=>St({test:(r,i)=>r>=t&&rSt({test:(e,r)=>e!==Math.round(e)?mt(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:mt(r,`Expected to be a safe integer (got ${e})`)}),hp=t=>St({test:(e,r)=>t.test(e)?!0:mt(r,`Expected to match the pattern ${t.toString()} (got ${ei(e)})`)}),hCe=()=>St({test:(t,e)=>t!==t.toLowerCase()?mt(e,`Expected to be all-lowercase (got ${t})`):!0}),pCe=()=>St({test:(t,e)=>t!==t.toUpperCase()?mt(e,`Expected to be all-uppercase (got ${t})`):!0}),dCe=()=>St({test:(t,e)=>vK.test(t)?!0:mt(e,`Expected to be a valid UUID v4 (got ${ei(t)})`)}),CCe=()=>St({test:(t,e)=>Av.test(t)?!1:mt(e,`Expected to be a valid ISO 8601 date string (got ${ei(t)})`)}),mCe=({alpha:t=!1})=>St({test:(e,r)=>(t?BK.test(e):bK.test(e))?!0:mt(r,`Expected to be a valid hexadecimal color string (got ${ei(e)})`)}),ECe=()=>St({test:(t,e)=>QK.test(t)?!0:mt(e,`Expected to be a valid base 64 string (got ${ei(t)})`)}),ICe=(t=xK())=>St({test:(e,r)=>{let i;try{i=JSON.parse(e)}catch(n){return mt(r,`Expected to be a valid JSON string (got ${ei(e)})`)}return t(i,r)}}),yCe=t=>{let e=new Set(t);return St({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?mt(i,`Missing required ${CI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},wCe=t=>{let e=new Set(t);return St({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?mt(i,`Forbidden ${CI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},BCe=t=>{let e=new Set(t);return St({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?mt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Cc||(Cc={}));bCe={[Cc.Forbids]:{expect:!1,message:"forbids using"},[Cc.Requires]:{expect:!0,message:"requires using"}},lv=(t,e,r,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(r),o=bCe[e];return St({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(t)||n.has(a[t]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?mt(l,`Property "${t}" ${o.message} ${CI(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var _K=w((fet,zK)=>{"use strict";zK.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var ag=w((het,dv)=>{"use strict";var HCe=_K(),VK=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,i=()=>{r--,e.length>0&&e.shift()()},n=(a,l,...c)=>{r++;let u=HCe(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{rnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),o};dv.exports=VK;dv.exports.default=VK});var mp=w((det,XK)=>{var jCe="2.0.0",GCe=256,YCe=Number.MAX_SAFE_INTEGER||9007199254740991,qCe=16;XK.exports={SEMVER_SPEC_VERSION:jCe,MAX_LENGTH:GCe,MAX_SAFE_INTEGER:YCe,MAX_SAFE_COMPONENT_LENGTH:qCe}});var Ep=w((Cet,ZK)=>{var JCe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};ZK.exports=JCe});var mc=w((qA,$K)=>{var{MAX_SAFE_COMPONENT_LENGTH:Cv}=mp(),WCe=Ep();qA=$K.exports={};var zCe=qA.re=[],tt=qA.src=[],rt=qA.t={},_Ce=0,kt=(t,e,r)=>{let i=_Ce++;WCe(i,e),rt[t]=i,tt[i]=e,zCe[i]=new RegExp(e,r?"g":void 0)};kt("NUMERICIDENTIFIER","0|[1-9]\\d*");kt("NUMERICIDENTIFIERLOOSE","[0-9]+");kt("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");kt("MAINVERSION",`(${tt[rt.NUMERICIDENTIFIER]})\\.(${tt[rt.NUMERICIDENTIFIER]})\\.(${tt[rt.NUMERICIDENTIFIER]})`);kt("MAINVERSIONLOOSE",`(${tt[rt.NUMERICIDENTIFIERLOOSE]})\\.(${tt[rt.NUMERICIDENTIFIERLOOSE]})\\.(${tt[rt.NUMERICIDENTIFIERLOOSE]})`);kt("PRERELEASEIDENTIFIER",`(?:${tt[rt.NUMERICIDENTIFIER]}|${tt[rt.NONNUMERICIDENTIFIER]})`);kt("PRERELEASEIDENTIFIERLOOSE",`(?:${tt[rt.NUMERICIDENTIFIERLOOSE]}|${tt[rt.NONNUMERICIDENTIFIER]})`);kt("PRERELEASE",`(?:-(${tt[rt.PRERELEASEIDENTIFIER]}(?:\\.${tt[rt.PRERELEASEIDENTIFIER]})*))`);kt("PRERELEASELOOSE",`(?:-?(${tt[rt.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${tt[rt.PRERELEASEIDENTIFIERLOOSE]})*))`);kt("BUILDIDENTIFIER","[0-9A-Za-z-]+");kt("BUILD",`(?:\\+(${tt[rt.BUILDIDENTIFIER]}(?:\\.${tt[rt.BUILDIDENTIFIER]})*))`);kt("FULLPLAIN",`v?${tt[rt.MAINVERSION]}${tt[rt.PRERELEASE]}?${tt[rt.BUILD]}?`);kt("FULL",`^${tt[rt.FULLPLAIN]}$`);kt("LOOSEPLAIN",`[v=\\s]*${tt[rt.MAINVERSIONLOOSE]}${tt[rt.PRERELEASELOOSE]}?${tt[rt.BUILD]}?`);kt("LOOSE",`^${tt[rt.LOOSEPLAIN]}$`);kt("GTLT","((?:<|>)?=?)");kt("XRANGEIDENTIFIERLOOSE",`${tt[rt.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);kt("XRANGEIDENTIFIER",`${tt[rt.NUMERICIDENTIFIER]}|x|X|\\*`);kt("XRANGEPLAIN",`[v=\\s]*(${tt[rt.XRANGEIDENTIFIER]})(?:\\.(${tt[rt.XRANGEIDENTIFIER]})(?:\\.(${tt[rt.XRANGEIDENTIFIER]})(?:${tt[rt.PRERELEASE]})?${tt[rt.BUILD]}?)?)?`);kt("XRANGEPLAINLOOSE",`[v=\\s]*(${tt[rt.XRANGEIDENTIFIERLOOSE]})(?:\\.(${tt[rt.XRANGEIDENTIFIERLOOSE]})(?:\\.(${tt[rt.XRANGEIDENTIFIERLOOSE]})(?:${tt[rt.PRERELEASELOOSE]})?${tt[rt.BUILD]}?)?)?`);kt("XRANGE",`^${tt[rt.GTLT]}\\s*${tt[rt.XRANGEPLAIN]}$`);kt("XRANGELOOSE",`^${tt[rt.GTLT]}\\s*${tt[rt.XRANGEPLAINLOOSE]}$`);kt("COERCE",`(^|[^\\d])(\\d{1,${Cv}})(?:\\.(\\d{1,${Cv}}))?(?:\\.(\\d{1,${Cv}}))?(?:$|[^\\d])`);kt("COERCERTL",tt[rt.COERCE],!0);kt("LONETILDE","(?:~>?)");kt("TILDETRIM",`(\\s*)${tt[rt.LONETILDE]}\\s+`,!0);qA.tildeTrimReplace="$1~";kt("TILDE",`^${tt[rt.LONETILDE]}${tt[rt.XRANGEPLAIN]}$`);kt("TILDELOOSE",`^${tt[rt.LONETILDE]}${tt[rt.XRANGEPLAINLOOSE]}$`);kt("LONECARET","(?:\\^)");kt("CARETTRIM",`(\\s*)${tt[rt.LONECARET]}\\s+`,!0);qA.caretTrimReplace="$1^";kt("CARET",`^${tt[rt.LONECARET]}${tt[rt.XRANGEPLAIN]}$`);kt("CARETLOOSE",`^${tt[rt.LONECARET]}${tt[rt.XRANGEPLAINLOOSE]}$`);kt("COMPARATORLOOSE",`^${tt[rt.GTLT]}\\s*(${tt[rt.LOOSEPLAIN]})$|^$`);kt("COMPARATOR",`^${tt[rt.GTLT]}\\s*(${tt[rt.FULLPLAIN]})$|^$`);kt("COMPARATORTRIM",`(\\s*)${tt[rt.GTLT]}\\s*(${tt[rt.LOOSEPLAIN]}|${tt[rt.XRANGEPLAIN]})`,!0);qA.comparatorTrimReplace="$1$2$3";kt("HYPHENRANGE",`^\\s*(${tt[rt.XRANGEPLAIN]})\\s+-\\s+(${tt[rt.XRANGEPLAIN]})\\s*$`);kt("HYPHENRANGELOOSE",`^\\s*(${tt[rt.XRANGEPLAINLOOSE]})\\s+-\\s+(${tt[rt.XRANGEPLAINLOOSE]})\\s*$`);kt("STAR","(<|>)?=?\\s*\\*");kt("GTE0","^\\s*>=\\s*0.0.0\\s*$");kt("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var Ip=w((met,e2)=>{var VCe=["includePrerelease","loose","rtl"],XCe=t=>t?typeof t!="object"?{loose:!0}:VCe.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};e2.exports=XCe});var bI=w((Eet,t2)=>{var r2=/^[0-9]+$/,i2=(t,e)=>{let r=r2.test(t),i=r2.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:ti2(e,t);t2.exports={compareIdentifiers:i2,rcompareIdentifiers:ZCe}});var Hi=w((Iet,n2)=>{var QI=Ep(),{MAX_LENGTH:s2,MAX_SAFE_INTEGER:vI}=mp(),{re:o2,t:a2}=mc(),$Ce=Ip(),{compareIdentifiers:yp}=bI(),ys=class{constructor(e,r){if(r=$Ce(r),e instanceof ys){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>s2)throw new TypeError(`version is longer than ${s2} characters`);QI("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?o2[a2.LOOSE]:o2[a2.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>vI||this.major<0)throw new TypeError("Invalid major version");if(this.minor>vI||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>vI||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};n2.exports=ys});var Ec=w((yet,A2)=>{var{MAX_LENGTH:eme}=mp(),{re:l2,t:c2}=mc(),u2=Hi(),tme=Ip(),rme=(t,e)=>{if(e=tme(e),t instanceof u2)return t;if(typeof t!="string"||t.length>eme||!(e.loose?l2[c2.LOOSE]:l2[c2.FULL]).test(t))return null;try{return new u2(t,e)}catch(i){return null}};A2.exports=rme});var f2=w((wet,g2)=>{var ime=Ec(),nme=(t,e)=>{let r=ime(t,e);return r?r.version:null};g2.exports=nme});var p2=w((Bet,h2)=>{var sme=Ec(),ome=(t,e)=>{let r=sme(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};h2.exports=ome});var C2=w((bet,d2)=>{var ame=Hi(),Ame=(t,e,r,i)=>{typeof r=="string"&&(i=r,r=void 0);try{return new ame(t,r).inc(e,i).version}catch(n){return null}};d2.exports=Ame});var ws=w((Qet,m2)=>{var E2=Hi(),lme=(t,e,r)=>new E2(t,r).compare(new E2(e,r));m2.exports=lme});var SI=w((vet,I2)=>{var cme=ws(),ume=(t,e,r)=>cme(t,e,r)===0;I2.exports=ume});var B2=w((ket,y2)=>{var w2=Ec(),gme=SI(),fme=(t,e)=>{if(gme(t,e))return null;{let r=w2(t),i=w2(e),n=r.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==i[a])return s+a;return o}};y2.exports=fme});var Q2=w((xet,b2)=>{var hme=Hi(),pme=(t,e)=>new hme(t,e).major;b2.exports=pme});var S2=w((Pet,v2)=>{var dme=Hi(),Cme=(t,e)=>new dme(t,e).minor;v2.exports=Cme});var x2=w((Det,k2)=>{var mme=Hi(),Eme=(t,e)=>new mme(t,e).patch;k2.exports=Eme});var D2=w((Ret,P2)=>{var Ime=Ec(),yme=(t,e)=>{let r=Ime(t,e);return r&&r.prerelease.length?r.prerelease:null};P2.exports=yme});var F2=w((Fet,R2)=>{var wme=ws(),Bme=(t,e,r)=>wme(e,t,r);R2.exports=Bme});var L2=w((Net,N2)=>{var bme=ws(),Qme=(t,e)=>bme(t,e,!0);N2.exports=Qme});var kI=w((Let,T2)=>{var O2=Hi(),vme=(t,e,r)=>{let i=new O2(t,r),n=new O2(e,r);return i.compare(n)||i.compareBuild(n)};T2.exports=vme});var U2=w((Tet,M2)=>{var Sme=kI(),kme=(t,e)=>t.sort((r,i)=>Sme(r,i,e));M2.exports=kme});var H2=w((Oet,K2)=>{var xme=kI(),Pme=(t,e)=>t.sort((r,i)=>xme(i,r,e));K2.exports=Pme});var wp=w((Met,j2)=>{var Dme=ws(),Rme=(t,e,r)=>Dme(t,e,r)>0;j2.exports=Rme});var xI=w((Uet,G2)=>{var Fme=ws(),Nme=(t,e,r)=>Fme(t,e,r)<0;G2.exports=Nme});var mv=w((Ket,Y2)=>{var Lme=ws(),Tme=(t,e,r)=>Lme(t,e,r)!==0;Y2.exports=Tme});var PI=w((Het,q2)=>{var Ome=ws(),Mme=(t,e,r)=>Ome(t,e,r)>=0;q2.exports=Mme});var DI=w((jet,J2)=>{var Ume=ws(),Kme=(t,e,r)=>Ume(t,e,r)<=0;J2.exports=Kme});var Ev=w((Get,W2)=>{var Hme=SI(),jme=mv(),Gme=wp(),Yme=PI(),qme=xI(),Jme=DI(),Wme=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Hme(t,r,i);case"!=":return jme(t,r,i);case">":return Gme(t,r,i);case">=":return Yme(t,r,i);case"<":return qme(t,r,i);case"<=":return Jme(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};W2.exports=Wme});var _2=w((Yet,z2)=>{var zme=Hi(),_me=Ec(),{re:RI,t:FI}=mc(),Vme=(t,e)=>{if(t instanceof zme)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(RI[FI.COERCE]);else{let i;for(;(i=RI[FI.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),RI[FI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;RI[FI.COERCERTL].lastIndex=-1}return r===null?null:_me(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};z2.exports=Vme});var X2=w((qet,V2)=>{"use strict";V2.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Bp=w((Jet,Z2)=>{"use strict";Z2.exports=Gt;Gt.Node=Ic;Gt.create=Gt;function Gt(t){var e=this;if(e instanceof Gt||(e=new Gt),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};Gt.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};Gt.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Gt.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Gt.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Gt;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};Gt.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var eEe=Bp(),yc=Symbol("max"),Ta=Symbol("length"),Ag=Symbol("lengthCalculator"),bp=Symbol("allowStale"),wc=Symbol("maxAge"),Oa=Symbol("dispose"),eH=Symbol("noDisposeOnSet"),Ii=Symbol("lruList"),no=Symbol("cache"),tH=Symbol("updateAgeOnGet"),Iv=()=>1,rH=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[yc]=e.max||Infinity,i=e.length||Iv;if(this[Ag]=typeof i!="function"?Iv:i,this[bp]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[wc]=e.maxAge||0,this[Oa]=e.dispose,this[eH]=e.noDisposeOnSet||!1,this[tH]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[yc]=e||Infinity,Qp(this)}get max(){return this[yc]}set allowStale(e){this[bp]=!!e}get allowStale(){return this[bp]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[wc]=e,Qp(this)}get maxAge(){return this[wc]}set lengthCalculator(e){typeof e!="function"&&(e=Iv),e!==this[Ag]&&(this[Ag]=e,this[Ta]=0,this[Ii].forEach(r=>{r.length=this[Ag](r.value,r.key),this[Ta]+=r.length})),Qp(this)}get lengthCalculator(){return this[Ag]}get length(){return this[Ta]}get itemCount(){return this[Ii].length}rforEach(e,r){r=r||this;for(let i=this[Ii].tail;i!==null;){let n=i.prev;nH(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[Ii].head;i!==null;){let n=i.next;nH(this,e,i,r),i=n}}keys(){return this[Ii].toArray().map(e=>e.key)}values(){return this[Ii].toArray().map(e=>e.value)}reset(){this[Oa]&&this[Ii]&&this[Ii].length&&this[Ii].forEach(e=>this[Oa](e.key,e.value)),this[no]=new Map,this[Ii]=new eEe,this[Ta]=0}dump(){return this[Ii].map(e=>NI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ii]}set(e,r,i){if(i=i||this[wc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[Ag](r,e);if(this[no].has(e)){if(s>this[yc])return lg(this,this[no].get(e)),!1;let l=this[no].get(e).value;return this[Oa]&&(this[eH]||this[Oa](e,l.value)),l.now=n,l.maxAge=i,l.value=r,this[Ta]+=s-l.length,l.length=s,this.get(e),Qp(this),!0}let o=new iH(e,r,s,n,i);return o.length>this[yc]?(this[Oa]&&this[Oa](e,r),!1):(this[Ta]+=o.length,this[Ii].unshift(o),this[no].set(e,this[Ii].head),Qp(this),!0)}has(e){if(!this[no].has(e))return!1;let r=this[no].get(e).value;return!NI(this,r)}get(e){return yv(this,e,!0)}peek(e){return yv(this,e,!1)}pop(){let e=this[Ii].tail;return e?(lg(this,e),e.value):null}del(e){lg(this,this[no].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[no].forEach((e,r)=>yv(this,r,!1))}},yv=(t,e,r)=>{let i=t[no].get(e);if(i){let n=i.value;if(NI(t,n)){if(lg(t,i),!t[bp])return}else r&&(t[tH]&&(i.value.now=Date.now()),t[Ii].unshiftNode(i));return n.value}},NI=(t,e)=>{if(!e||!e.maxAge&&!t[wc])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[wc]&&r>t[wc]},Qp=t=>{if(t[Ta]>t[yc])for(let e=t[Ii].tail;t[Ta]>t[yc]&&e!==null;){let r=e.prev;lg(t,e),e=r}},lg=(t,e)=>{if(e){let r=e.value;t[Oa]&&t[Oa](r.key,r.value),t[Ta]-=r.length,t[no].delete(r.key),t[Ii].removeNode(e)}},iH=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},nH=(t,e,r,i)=>{let n=r.value;NI(t,n)&&(lg(t,r),t[bp]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};$2.exports=rH});var Bs=w((zet,oH)=>{var cg=class{constructor(e,r){if(r=tEe(r),e instanceof cg)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new cg(e.raw,r);if(e instanceof wv)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!AH(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&oEe(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=aH.get(i);if(n)return n;let s=this.options.loose,o=s?ji[ki.HYPHENRANGELOOSE]:ji[ki.HYPHENRANGE];e=e.replace(o,lEe(this.options.includePrerelease)),Wr("hyphen replace",e),e=e.replace(ji[ki.COMPARATORTRIM],iEe),Wr("comparator trim",e,ji[ki.COMPARATORTRIM]),e=e.replace(ji[ki.TILDETRIM],nEe),e=e.replace(ji[ki.CARETTRIM],sEe),e=e.split(/\s+/).join(" ");let a=s?ji[ki.COMPARATORLOOSE]:ji[ki.COMPARATOR],l=e.split(" ").map(f=>aEe(f,this.options)).join(" ").split(/\s+/).map(f=>AEe(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new wv(f,this.options)),c=l.length,u=new Map;for(let f of l){if(AH(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return aH.set(i,g),g}intersects(e,r){if(!(e instanceof cg))throw new TypeError("a Range is required");return this.set.some(i=>lH(i,r)&&e.set.some(n=>lH(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new rEe(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",oEe=t=>t.value==="",lH=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},aEe=(t,e)=>(Wr("comp",t,e),t=fEe(t,e),Wr("caret",t),t=gEe(t,e),Wr("tildes",t),t=hEe(t,e),Wr("xrange",t),t=pEe(t,e),Wr("stars",t),t),on=t=>!t||t.toLowerCase()==="x"||t==="*",gEe=(t,e)=>t.trim().split(/\s+/).map(r=>dEe(r,e)).join(" "),dEe=(t,e)=>{let r=e.loose?ji[ki.TILDELOOSE]:ji[ki.TILDE];return t.replace(r,(i,n,s,o,a)=>{Wr("tilde",t,i,n,s,o,a);let l;return on(n)?l="":on(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:on(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Wr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Wr("tilde return",l),l})},fEe=(t,e)=>t.trim().split(/\s+/).map(r=>CEe(r,e)).join(" "),CEe=(t,e)=>{Wr("caret",t,e);let r=e.loose?ji[ki.CARETLOOSE]:ji[ki.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,l)=>{Wr("caret",t,n,s,o,a,l);let c;return on(s)?c="":on(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:on(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Wr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Wr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Wr("caret return",c),c})},hEe=(t,e)=>(Wr("replaceXRanges",t,e),t.split(/\s+/).map(r=>mEe(r,e)).join(" ")),mEe=(t,e)=>{t=t.trim();let r=e.loose?ji[ki.XRANGELOOSE]:ji[ki.XRANGE];return t.replace(r,(i,n,s,o,a,l)=>{Wr("xRange",t,i,n,s,o,a,l);let c=on(s),u=c||on(o),g=u||on(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Wr("xRange return",i),i})},pEe=(t,e)=>(Wr("replaceStars",t,e),t.trim().replace(ji[ki.STAR],"")),AEe=(t,e)=>(Wr("replaceGTE0",t,e),t.trim().replace(ji[e.includePrerelease?ki.GTE0PRE:ki.GTE0],"")),lEe=t=>(e,r,i,n,s,o,a,l,c,u,g,f,h)=>(on(i)?r="":on(n)?r=`>=${i}.0.0${t?"-0":""}`:on(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,on(c)?l="":on(u)?l=`<${+c+1}.0.0-0`:on(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:t?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),cEe=(t,e,r)=>{for(let i=0;i0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var vp=w((_et,cH)=>{var Sp=Symbol("SemVer ANY"),kp=class{static get ANY(){return Sp}constructor(e,r){if(r=EEe(r),e instanceof kp){if(e.loose===!!r.loose)return e;e=e.value}bv("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Sp?this.value="":this.value=this.operator+this.semver.version,bv("comp",this)}parse(e){let r=this.options.loose?uH[gH.COMPARATORLOOSE]:uH[gH.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new fH(i[2],this.options.loose):this.semver=Sp}toString(){return this.value}test(e){if(bv("Comparator.test",e,this.options.loose),this.semver===Sp||e===Sp)return!0;if(typeof e=="string")try{e=new fH(e,this.options)}catch(r){return!1}return Bv(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof kp))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new hH(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new hH(this.value,r).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Bv(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=Bv(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};cH.exports=kp;var EEe=Ip(),{re:uH,t:gH}=mc(),Bv=Ev(),bv=Ep(),fH=Hi(),hH=Bs()});var xp=w((Vet,pH)=>{var IEe=Bs(),yEe=(t,e,r)=>{try{e=new IEe(e,r)}catch(i){return!1}return e.test(t)};pH.exports=yEe});var CH=w((Xet,dH)=>{var wEe=Bs(),BEe=(t,e)=>new wEe(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));dH.exports=BEe});var EH=w((Zet,mH)=>{var bEe=Hi(),QEe=Bs(),vEe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new QEe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new bEe(i,r))}),i};mH.exports=vEe});var yH=w(($et,IH)=>{var SEe=Hi(),kEe=Bs(),xEe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new kEe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new SEe(i,r))}),i};IH.exports=xEe});var bH=w((ett,wH)=>{var Qv=Hi(),PEe=Bs(),BH=wp(),DEe=(t,e)=>{t=new PEe(t,e);let r=new Qv("0.0.0");if(t.test(r)||(r=new Qv("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i{let a=new Qv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||BH(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||BH(r,s))&&(r=s)}return r&&t.test(r)?r:null};wH.exports=DEe});var vH=w((ttt,QH)=>{var REe=Bs(),FEe=(t,e)=>{try{return new REe(t,e).range||"*"}catch(r){return null}};QH.exports=FEe});var LI=w((rtt,SH)=>{var NEe=Hi(),kH=vp(),{ANY:LEe}=kH,TEe=Bs(),OEe=xp(),xH=wp(),PH=xI(),MEe=DI(),UEe=PI(),KEe=(t,e,r,i)=>{t=new NEe(t,i),e=new TEe(e,i);let n,s,o,a,l;switch(r){case">":n=xH,s=MEe,o=PH,a=">",l=">=";break;case"<":n=PH,s=UEe,o=xH,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(OEe(t,e,i))return!1;for(let c=0;c{h.semver===LEe&&(h=new kH(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(t,f.semver))return!1;if(f.operator===l&&o(t,f.semver))return!1}return!0};SH.exports=KEe});var RH=w((itt,DH)=>{var HEe=LI(),jEe=(t,e,r)=>HEe(t,e,">",r);DH.exports=jEe});var NH=w((ntt,FH)=>{var GEe=LI(),YEe=(t,e,r)=>GEe(t,e,"<",r);FH.exports=YEe});var OH=w((stt,LH)=>{var TH=Bs(),qEe=(t,e,r)=>(t=new TH(t,r),e=new TH(e,r),t.intersects(e));LH.exports=qEe});var UH=w((ott,MH)=>{var JEe=xp(),WEe=ws();MH.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((u,g)=>WEe(u,g,r));for(let u of o)JEe(u,e,r)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var HH=Bs(),TI=vp(),{ANY:vv}=TI,Pp=xp(),Sv=ws(),_Ee=(t,e,r={})=>{if(t===e)return!0;t=new HH(t,r),e=new HH(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=zEe(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},zEe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===vv){if(e.length===1&&e[0].semver===vv)return!0;r.includePrerelease?t=[new TI(">=0.0.0-0")]:t=[new TI(">=0.0.0")]}if(e.length===1&&e[0].semver===vv){if(r.includePrerelease)return!0;e=[new TI(">=0.0.0")]}let i=new Set,n,s;for(let h of t)h.operator===">"||h.operator===">="?n=jH(n,h,r):h.operator==="<"||h.operator==="<="?s=GH(s,h,r):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=Sv(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!Pp(h,String(n),r)||s&&!Pp(h,String(s),r))return null;for(let p of e)if(!Pp(h,String(p),r))return!1;return!0}let a,l,c,u,g=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=jH(n,h,r),a===h&&a!==n)return!1}else if(n.operator===">="&&!Pp(n.semver,String(h),r))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=GH(s,h,r),l===h&&l!==s)return!1}else if(s.operator==="<="&&!Pp(s.semver,String(h),r))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},jH=(t,e,r)=>{if(!t)return e;let i=Sv(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},GH=(t,e,r)=>{if(!t)return e;let i=Sv(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};KH.exports=_Ee});var ti=w((Att,qH)=>{var kv=mc();qH.exports={re:kv.re,src:kv.src,tokens:kv.t,SEMVER_SPEC_VERSION:mp().SEMVER_SPEC_VERSION,SemVer:Hi(),compareIdentifiers:bI().compareIdentifiers,rcompareIdentifiers:bI().rcompareIdentifiers,parse:Ec(),valid:f2(),clean:p2(),inc:C2(),diff:B2(),major:Q2(),minor:S2(),patch:x2(),prerelease:D2(),compare:ws(),rcompare:F2(),compareLoose:L2(),compareBuild:kI(),sort:U2(),rsort:H2(),gt:wp(),lt:xI(),eq:SI(),neq:mv(),gte:PI(),lte:DI(),cmp:Ev(),coerce:_2(),Comparator:vp(),Range:Bs(),satisfies:xp(),toComparators:CH(),maxSatisfying:EH(),minSatisfying:yH(),minVersion:bH(),validRange:vH(),outside:LI(),gtr:RH(),ltr:NH(),intersects:OH(),simplifyRange:UH(),subset:YH()}});var xv=w(OI=>{"use strict";Object.defineProperty(OI,"__esModule",{value:!0});OI.VERSION=void 0;OI.VERSION="9.1.0"});var Yt=w((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(t,e,r){if(r||arguments.length===2)for(var i=0,n=e.length,s;i{(function(t,e){typeof define=="function"&&define.amd?define([],e):typeof MI=="object"&&MI.exports?MI.exports=e():t.regexpToAst=e()})(typeof self!="undefined"?self:JH,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},t.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var m=this.disjunction();this.consumeChar("/");for(var y={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(y,"global");break;case"i":o(y,"ignoreCase");break;case"m":o(y,"multiLine");break;case"u":o(y,"unicode");break;case"y":o(y,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:y,value:m,loc:this.loc(0)}},t.prototype.disjunction=function(){var p=[],m=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(m)}},t.prototype.alternative=function(){for(var p=[],m=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(m)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var m;switch(this.popChar()){case"=":m="Lookahead";break;case"!":m="NegativeLookahead";break}a(m);var y=this.disjunction();return this.consumeChar(")"),{type:m,value:y,loc:this.loc(p)}}l()},t.prototype.quantifier=function(p){var m,y=this.idx;switch(this.popChar()){case"*":m={atLeast:0,atMost:Infinity};break;case"+":m={atLeast:1,atMost:Infinity};break;case"?":m={atLeast:0,atMost:1};break;case"{":var Q=this.integerIncludingZero();switch(this.popChar()){case"}":m={atLeast:Q,atMost:Q};break;case",":var S;this.isDigit()?(S=this.integerIncludingZero(),m={atLeast:Q,atMost:S}):m={atLeast:Q,atMost:Infinity},this.consumeChar("}");break}if(p===!0&&m===void 0)return;a(m);break}if(!(p===!0&&m===void 0))return a(m),this.peekChar(0)==="?"?(this.consumeChar("?"),m.greedy=!1):m.greedy=!0,m.type="Quantifier",m.loc=this.loc(y),m},t.prototype.atom=function(){var p,m=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(m),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` +`),n("\r"),n("\u2028"),n("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},t.prototype.characterClassEscape=function(){var p,m=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,m=!0;break;case"s":p=f;break;case"S":p=f,m=!0;break;case"w":p=g;break;case"W":p=g,m=!0;break}return a(p),{type:"Set",value:p,complement:m}},t.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` +`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var m=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:m}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},t.prototype.characterClass=function(){var p=[],m=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),m=!0);this.isClassAtom();){var y=this.classAtom(),Q=y.type==="Character";if(Q&&this.isRangeDash()){this.consumeChar("-");var S=this.classAtom(),x=S.type==="Character";if(x){if(S.value=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,m){p.length!==void 0?p.forEach(function(y){m.push(y)}):m.push(p)}function o(p,m){if(p[m]===!0)throw"duplicate flag "+m;p[m]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` +`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var m in p){var y=p[m];p.hasOwnProperty(m)&&(y.type!==void 0?this.visit(y):Array.isArray(y)&&y.forEach(function(Q){this.visit(Q)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:t,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var HI=w(ug=>{"use strict";Object.defineProperty(ug,"__esModule",{value:!0});ug.clearRegExpParserCache=ug.getRegExpAst=void 0;var VEe=UI(),KI={},XEe=new VEe.RegExpParser;function ZEe(t){var e=t.toString();if(KI.hasOwnProperty(e))return KI[e];var r=XEe.pattern(e);return KI[e]=r,r}ug.getRegExpAst=ZEe;function $Ee(){KI={}}ug.clearRegExpParserCache=$Ee});var XH=w(Bn=>{"use strict";var eIe=Bn&&Bn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Bn,"__esModule",{value:!0});Bn.canMatchCharCode=Bn.firstCharOptimizedIndices=Bn.getOptimizedStartCodesIndices=Bn.failedOptimizationPrefixMsg=void 0;var WH=UI(),bs=Yt(),zH=HI(),Ma=Pv(),_H="Complement Sets are not supported for first char optimization";Bn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: +`;function tIe(t,e){e===void 0&&(e=!1);try{var r=(0,zH.getRegExpAst)(t),i=jI(r.value,{},r.flags.ignoreCase);return i}catch(s){if(s.message===_H)e&&(0,bs.PRINT_WARNING)(""+Bn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+t.toString()+` > +`)+` Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,bs.PRINT_ERROR)(Bn.failedOptimizationPrefixMsg+` +`+(" Failed parsing: < "+t.toString()+` > +`)+(" Using the regexp-to-ast library version: "+WH.VERSION+` +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}Bn.getOptimizedStartCodesIndices=tIe;function jI(t,e,r){switch(t.type){case"Disjunction":for(var i=0;i=Ma.minOptimizationVal)for(var f=u.from>=Ma.minOptimizationVal?u.from:Ma.minOptimizationVal,h=u.to,p=(0,Ma.charCodeToOptimizedIndex)(f),m=(0,Ma.charCodeToOptimizedIndex)(h),y=p;y<=m;y++)e[y]=y}}});break;case"Group":jI(o.value,e,r);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&Dv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,bs.values)(e)}Bn.firstCharOptimizedIndices=jI;function GI(t,e,r){var i=(0,Ma.charCodeToOptimizedIndex)(t);e[i]=i,r===!0&&rIe(t,e)}function rIe(t,e){var r=String.fromCharCode(t),i=r.toUpperCase();if(i!==r){var n=(0,Ma.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=r.toLowerCase();if(s!==r){var n=(0,Ma.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function VH(t,e){return(0,bs.find)(t.value,function(r){if(typeof r=="number")return(0,bs.contains)(e,r);var i=r;return(0,bs.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function Dv(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?(0,bs.isArray)(t.value)?(0,bs.every)(t.value,Dv):Dv(t.value):!1}var iIe=function(t){eIe(e,t);function e(r){var i=t.call(this)||this;return i.targetCharCodes=r,i.found=!1,i}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case"Lookahead":this.visitLookahead(r);return;case"NegativeLookahead":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){(0,bs.contains)(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?VH(r,this.targetCharCodes)===void 0&&(this.found=!0):VH(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(WH.BaseRegExpVisitor);function nIe(t,e){if(e instanceof RegExp){var r=(0,zH.getRegExpAst)(e),i=new iIe(t);return i.visit(r),i.found}else return(0,bs.find)(e,function(n){return(0,bs.contains)(t,n.charCodeAt(0))})!==void 0}Bn.canMatchCharCode=nIe});var Pv=w(Ze=>{"use strict";var ZH=Ze&&Ze.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Ze,"__esModule",{value:!0});Ze.charCodeToOptimizedIndex=Ze.minOptimizationVal=Ze.buildLineBreakIssueMessage=Ze.LineTerminatorOptimizedTester=Ze.isShortPattern=Ze.isCustomPattern=Ze.cloneEmptyGroups=Ze.performWarningRuntimeChecks=Ze.performRuntimeChecks=Ze.addStickyFlag=Ze.addStartOfInput=Ze.findUnreachablePatterns=Ze.findModesThatDoNotExist=Ze.findInvalidGroupType=Ze.findDuplicatePatterns=Ze.findUnsupportedFlags=Ze.findStartOfInputAnchor=Ze.findEmptyMatchRegExps=Ze.findEndOfInputAnchor=Ze.findInvalidPatterns=Ze.findMissingPatterns=Ze.validatePatterns=Ze.analyzeTokenTypes=Ze.enableSticky=Ze.disableSticky=Ze.SUPPORT_STICKY=Ze.MODES=Ze.DEFAULT_MODE=void 0;var $H=UI(),Ar=Dp(),Ne=Yt(),gg=XH(),ej=HI(),Lo="PATTERN";Ze.DEFAULT_MODE="defaultMode";Ze.MODES="modes";Ze.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function sIe(){Ze.SUPPORT_STICKY=!1}Ze.disableSticky=sIe;function oIe(){Ze.SUPPORT_STICKY=!0}Ze.enableSticky=oIe;function AIe(t,e){e=(0,Ne.defaults)(e,{useSticky:Ze.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(S,x){return x()}});var r=e.tracer;r("initCharCodeToOptimizedIndexMap",function(){aIe()});var i;r("Reject Lexer.NA",function(){i=(0,Ne.reject)(t,function(S){return S[Lo]===Ar.Lexer.NA})});var n=!1,s;r("Transform Patterns",function(){n=!1,s=(0,Ne.map)(i,function(S){var x=S[Lo];if((0,Ne.isRegExp)(x)){var M=x.source;return M.length===1&&M!=="^"&&M!=="$"&&M!=="."&&!x.ignoreCase?M:M.length===2&&M[0]==="\\"&&!(0,Ne.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],M[1])?M[1]:e.useSticky?Fv(x):Rv(x)}else{if((0,Ne.isFunction)(x))return n=!0,{exec:x};if((0,Ne.has)(x,"exec"))return n=!0,x;if(typeof x=="string"){if(x.length===1)return x;var Y=x.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),U=new RegExp(Y);return e.useSticky?Fv(U):Rv(U)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;r("misc mapping",function(){o=(0,Ne.map)(i,function(S){return S.tokenTypeIdx}),a=(0,Ne.map)(i,function(S){var x=S.GROUP;if(x!==Ar.Lexer.SKIPPED){if((0,Ne.isString)(x))return x;if((0,Ne.isUndefined)(x))return!1;throw Error("non exhaustive match")}}),l=(0,Ne.map)(i,function(S){var x=S.LONGER_ALT;if(x){var M=(0,Ne.isArray)(x)?(0,Ne.map)(x,function(Y){return(0,Ne.indexOf)(i,Y)}):[(0,Ne.indexOf)(i,x)];return M}}),c=(0,Ne.map)(i,function(S){return S.PUSH_MODE}),u=(0,Ne.map)(i,function(S){return(0,Ne.has)(S,"POP_MODE")})});var g;r("Line Terminator Handling",function(){var S=ij(e.lineTerminatorCharacters);g=(0,Ne.map)(i,function(x){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Ne.map)(i,function(x){if((0,Ne.has)(x,"LINE_BREAKS"))return x.LINE_BREAKS;if(rj(x,S)===!1)return(0,gg.canMatchCharCode)(S,x.PATTERN)}))});var f,h,p,m;r("Misc Mapping #2",function(){f=(0,Ne.map)(i,Nv),h=(0,Ne.map)(s,tj),p=(0,Ne.reduce)(i,function(S,x){var M=x.GROUP;return(0,Ne.isString)(M)&&M!==Ar.Lexer.SKIPPED&&(S[M]=[]),S},{}),m=(0,Ne.map)(s,function(S,x){return{pattern:s[x],longerAlt:l[x],canLineTerminator:g[x],isCustom:f[x],short:h[x],group:a[x],push:c[x],pop:u[x],tokenTypeIdx:o[x],tokenType:i[x]}})});var y=!0,Q=[];return e.safeMode||r("First Char Optimization",function(){Q=(0,Ne.reduce)(i,function(S,x,M){if(typeof x.PATTERN=="string"){var Y=x.PATTERN.charCodeAt(0),U=Tv(Y);Lv(S,U,m[M])}else if((0,Ne.isArray)(x.START_CHARS_HINT)){var J;(0,Ne.forEach)(x.START_CHARS_HINT,function(ee){var Z=typeof ee=="string"?ee.charCodeAt(0):ee,A=Tv(Z);J!==A&&(J=A,Lv(S,A,m[M]))})}else if((0,Ne.isRegExp)(x.PATTERN))if(x.PATTERN.unicode)y=!1,e.ensureOptimizations&&(0,Ne.PRINT_ERROR)(""+gg.failedOptimizationPrefixMsg+(" Unable to analyze < "+x.PATTERN.toString()+` > pattern. +`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var W=(0,gg.getOptimizedStartCodesIndices)(x.PATTERN,e.ensureOptimizations);(0,Ne.isEmpty)(W)&&(y=!1),(0,Ne.forEach)(W,function(ee){Lv(S,ee,m[M])})}else e.ensureOptimizations&&(0,Ne.PRINT_ERROR)(""+gg.failedOptimizationPrefixMsg+(" TokenType: <"+x.name+`> is using a custom token pattern without providing parameter. +`)+` This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),y=!1;return S},[])}),r("ArrayPacking",function(){Q=(0,Ne.packArray)(Q)}),{emptyGroups:p,patternIdxToConfig:m,charCodeToPatternIdxToConfig:Q,hasCustom:n,canBeOptimized:y}}Ze.analyzeTokenTypes=AIe;function cIe(t,e){var r=[],i=nj(t);r=r.concat(i.errors);var n=sj(i.valid),s=n.valid;return r=r.concat(n.errors),r=r.concat(lIe(s)),r=r.concat(oj(s)),r=r.concat(aj(s,e)),r=r.concat(Aj(s)),r}Ze.validatePatterns=cIe;function lIe(t){var e=[],r=(0,Ne.filter)(t,function(i){return(0,Ne.isRegExp)(i[Lo])});return e=e.concat(lj(r)),e=e.concat(uj(r)),e=e.concat(gj(r)),e=e.concat(fj(r)),e=e.concat(cj(r)),e}function nj(t){var e=(0,Ne.filter)(t,function(n){return!(0,Ne.has)(n,Lo)}),r=(0,Ne.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:Ar.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Ne.difference)(t,e);return{errors:r,valid:i}}Ze.findMissingPatterns=nj;function sj(t){var e=(0,Ne.filter)(t,function(n){var s=n[Lo];return!(0,Ne.isRegExp)(s)&&!(0,Ne.isFunction)(s)&&!(0,Ne.has)(s,"exec")&&!(0,Ne.isString)(s)}),r=(0,Ne.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Ar.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Ne.difference)(t,e);return{errors:r,valid:i}}Ze.findInvalidPatterns=sj;var uIe=/[^\\][\$]/;function lj(t){var e=function(n){ZH(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}($H.BaseRegExpVisitor),r=(0,Ne.filter)(t,function(n){var s=n[Lo];try{var o=(0,ej.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return uIe.test(s.source)}}),i=(0,Ne.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Ar.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ze.findEndOfInputAnchor=lj;function cj(t){var e=(0,Ne.filter)(t,function(i){var n=i[Lo];return n.test("")}),r=(0,Ne.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:Ar.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return r}Ze.findEmptyMatchRegExps=cj;var gIe=/[^\\[][\^]|^\^/;function uj(t){var e=function(n){ZH(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}($H.BaseRegExpVisitor),r=(0,Ne.filter)(t,function(n){var s=n[Lo];try{var o=(0,ej.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return gIe.test(s.source)}}),i=(0,Ne.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Ar.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ze.findStartOfInputAnchor=uj;function gj(t){var e=(0,Ne.filter)(t,function(i){var n=i[Lo];return n instanceof RegExp&&(n.multiline||n.global)}),r=(0,Ne.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Ar.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return r}Ze.findUnsupportedFlags=gj;function fj(t){var e=[],r=(0,Ne.map)(t,function(s){return(0,Ne.reduce)(t,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Ne.contains)(e,a)&&a.PATTERN!==Ar.Lexer.NA&&(e.push(a),o.push(a)),o},[])});r=(0,Ne.compact)(r);var i=(0,Ne.filter)(r,function(s){return s.length>1}),n=(0,Ne.map)(i,function(s){var o=(0,Ne.map)(s,function(l){return l.name}),a=(0,Ne.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:Ar.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Ze.findDuplicatePatterns=fj;function oj(t){var e=(0,Ne.filter)(t,function(i){if(!(0,Ne.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==Ar.Lexer.SKIPPED&&n!==Ar.Lexer.NA&&!(0,Ne.isString)(n)}),r=(0,Ne.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Ar.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return r}Ze.findInvalidGroupType=oj;function aj(t,e){var r=(0,Ne.filter)(t,function(n){return n.PUSH_MODE!==void 0&&!(0,Ne.contains)(e,n.PUSH_MODE)}),i=(0,Ne.map)(r,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:Ar.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Ze.findModesThatDoNotExist=aj;function Aj(t){var e=[],r=(0,Ne.reduce)(t,function(i,n,s){var o=n.PATTERN;return o===Ar.Lexer.NA||((0,Ne.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Ne.isRegExp)(o)&&hIe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Ne.forEach)(t,function(i,n){(0,Ne.forEach)(r,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:Ar.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Ze.findUnreachablePatterns=Aj;function fIe(t,e){if((0,Ne.isRegExp)(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if((0,Ne.isFunction)(e))return e(t,0,[],{});if((0,Ne.has)(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function hIe(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Ne.find)(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function Rv(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}Ze.addStartOfInput=Rv;function Fv(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}Ze.addStickyFlag=Fv;function pIe(t,e,r){var i=[];return(0,Ne.has)(t,Ze.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ze.DEFAULT_MODE+`> property in its definition +`,type:Ar.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Ne.has)(t,Ze.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ze.MODES+`> property in its definition +`,type:Ar.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Ne.has)(t,Ze.MODES)&&(0,Ne.has)(t,Ze.DEFAULT_MODE)&&!(0,Ne.has)(t.modes,t.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Ze.DEFAULT_MODE+": <"+t.defaultMode+`>which does not exist +`,type:Ar.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Ne.has)(t,Ze.MODES)&&(0,Ne.forEach)(t.modes,function(n,s){(0,Ne.forEach)(n,function(o,a){(0,Ne.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> +`),type:Ar.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Ze.performRuntimeChecks=pIe;function dIe(t,e,r){var i=[],n=!1,s=(0,Ne.compact)((0,Ne.flatten)((0,Ne.mapValues)(t.modes,function(l){return l}))),o=(0,Ne.reject)(s,function(l){return l[Lo]===Ar.Lexer.NA}),a=ij(r);return e&&(0,Ne.forEach)(o,function(l){var c=rj(l,a);if(c!==!1){var u=hj(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Ne.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,gg.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:Ar.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Ze.performWarningRuntimeChecks=dIe;function CIe(t){var e={},r=(0,Ne.keys)(t);return(0,Ne.forEach)(r,function(i){var n=t[i];if((0,Ne.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Ze.cloneEmptyGroups=CIe;function Nv(t){var e=t.PATTERN;if((0,Ne.isRegExp)(e))return!1;if((0,Ne.isFunction)(e))return!0;if((0,Ne.has)(e,"exec"))return!0;if((0,Ne.isString)(e))return!1;throw Error("non exhaustive match")}Ze.isCustomPattern=Nv;function tj(t){return(0,Ne.isString)(t)&&t.length===1?t.charCodeAt(0):!1}Ze.isShortPattern=tj;Ze.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r Token Type +`)+(" Root cause: "+e.errMsg+`. +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===Ar.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. +`+(" The problem is in the <"+t.name+`> Token Type +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Ze.buildLineBreakIssueMessage=hj;function ij(t){var e=(0,Ne.map)(t,function(r){return(0,Ne.isString)(r)&&r.length>0?r.charCodeAt(0):r});return e}function Lv(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}Ze.minOptimizationVal=256;var YI=[];function Tv(t){return t255?255+~~(t/255):t}}});var fg=w(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.isTokenType=Ft.hasExtendingTokensTypesMapProperty=Ft.hasExtendingTokensTypesProperty=Ft.hasCategoriesProperty=Ft.hasShortKeyProperty=Ft.singleAssignCategoriesToksMap=Ft.assignCategoriesMapProp=Ft.assignCategoriesTokensProp=Ft.assignTokenDefaultProps=Ft.expandCategories=Ft.augmentTokenTypes=Ft.tokenIdxToClass=Ft.tokenShortNameIdx=Ft.tokenStructuredMatcherNoCategories=Ft.tokenStructuredMatcher=void 0;var ri=Yt();function mIe(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}Ft.tokenStructuredMatcher=mIe;function EIe(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}Ft.tokenStructuredMatcherNoCategories=EIe;Ft.tokenShortNameIdx=1;Ft.tokenIdxToClass={};function IIe(t){var e=pj(t);dj(e),mj(e),Cj(e),(0,ri.forEach)(e,function(r){r.isParent=r.categoryMatches.length>0})}Ft.augmentTokenTypes=IIe;function pj(t){for(var e=(0,ri.cloneArr)(t),r=t,i=!0;i;){r=(0,ri.compact)((0,ri.flatten)((0,ri.map)(r,function(s){return s.CATEGORIES})));var n=(0,ri.difference)(r,e);e=e.concat(n),(0,ri.isEmpty)(n)?i=!1:r=n}return e}Ft.expandCategories=pj;function dj(t){(0,ri.forEach)(t,function(e){Ej(e)||(Ft.tokenIdxToClass[Ft.tokenShortNameIdx]=e,e.tokenTypeIdx=Ft.tokenShortNameIdx++),Ov(e)&&!(0,ri.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Ov(e)||(e.CATEGORIES=[]),Ij(e)||(e.categoryMatches=[]),yj(e)||(e.categoryMatchesMap={})})}Ft.assignTokenDefaultProps=dj;function Cj(t){(0,ri.forEach)(t,function(e){e.categoryMatches=[],(0,ri.forEach)(e.categoryMatchesMap,function(r,i){e.categoryMatches.push(Ft.tokenIdxToClass[i].tokenTypeIdx)})})}Ft.assignCategoriesTokensProp=Cj;function mj(t){(0,ri.forEach)(t,function(e){Mv([],e)})}Ft.assignCategoriesMapProp=mj;function Mv(t,e){(0,ri.forEach)(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),(0,ri.forEach)(e.CATEGORIES,function(r){var i=t.concat(e);(0,ri.contains)(i,r)||Mv(i,r)})}Ft.singleAssignCategoriesToksMap=Mv;function Ej(t){return(0,ri.has)(t,"tokenTypeIdx")}Ft.hasShortKeyProperty=Ej;function Ov(t){return(0,ri.has)(t,"CATEGORIES")}Ft.hasCategoriesProperty=Ov;function Ij(t){return(0,ri.has)(t,"categoryMatches")}Ft.hasExtendingTokensTypesProperty=Ij;function yj(t){return(0,ri.has)(t,"categoryMatchesMap")}Ft.hasExtendingTokensTypesMapProperty=yj;function yIe(t){return(0,ri.has)(t,"tokenTypeIdx")}Ft.isTokenType=yIe});var Uv=w(qI=>{"use strict";Object.defineProperty(qI,"__esModule",{value:!0});qI.defaultLexerErrorProvider=void 0;qI.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,r,i,n){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+r+" characters.")}}});var Dp=w(Bc=>{"use strict";Object.defineProperty(Bc,"__esModule",{value:!0});Bc.Lexer=Bc.LexerDefinitionErrorType=void 0;var so=Pv(),lr=Yt(),wIe=fg(),BIe=Uv(),bIe=HI(),QIe;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(QIe=Bc.LexerDefinitionErrorType||(Bc.LexerDefinitionErrorType={}));var Rp={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:BIe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(Rp);var vIe=function(){function t(e,r){var i=this;if(r===void 0&&(r=Rp),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=(0,lr.merge)(Rp,r);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===Rp.lineTerminatorsPattern)i.config.lineTerminatorsPattern=so.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===Rp.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,lr.isArray)(e)?(s={modes:{}},s.modes[so.DEFAULT_MODE]=(0,lr.cloneArr)(e),s[so.DEFAULT_MODE]=so.DEFAULT_MODE):(o=!1,s=(0,lr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,so.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,so.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,lr.forEach)(s.modes,function(u,g){s.modes[g]=(0,lr.reject)(u,function(f){return(0,lr.isUndefined)(f)})});var a=(0,lr.keys)(s.modes);if((0,lr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,so.validatePatterns)(u,a))}),(0,lr.isEmpty)(i.lexerDefinitionErrors)){(0,wIe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,so.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,lr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,lr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,lr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+c)}(0,lr.forEach)(i.lexerDefinitionWarning,function(u){(0,lr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(so.SUPPORT_STICKY?(i.chopInput=lr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=lr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=lr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=lr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=lr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,lr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(r.ensureOptimizations&&!(0,lr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,bIe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,lr.toFastProperties)(i)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!(0,lr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,lr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}var s=this.tokenizeInternal(e,r);return s},t.prototype.tokenizeInternal=function(e,r){var i=this,n,s,o,a,l,c,u,g,f,h,p,m,y,Q,S,x,M=e,Y=M.length,U=0,J=0,W=this.hasCustom?0:Math.floor(e.length/10),ee=new Array(W),Z=[],A=this.trackStartLines?1:void 0,ne=this.trackStartLines?1:void 0,le=(0,so.cloneEmptyGroups)(this.emptyGroups),Ae=this.trackStartLines,T=this.config.lineTerminatorsPattern,L=0,Ee=[],we=[],qe=[],re=[];Object.freeze(re);var se=void 0;function Qe(){return Ee}function he(vr){var Hn=(0,so.charCodeToOptimizedIndex)(vr),us=we[Hn];return us===void 0?re:us}var Fe=function(vr){if(qe.length===1&&vr.tokenType.PUSH_MODE===void 0){var Hn=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(vr);Z.push({offset:vr.startOffset,line:vr.startLine!==void 0?vr.startLine:void 0,column:vr.startColumn!==void 0?vr.startColumn:void 0,length:vr.image.length,message:Hn})}else{qe.pop();var us=(0,lr.last)(qe);Ee=i.patternIdxToConfig[us],we=i.charCodeToPatternIdxToConfig[us],L=Ee.length;var Ia=i.canModeBeOptimized[us]&&i.config.safeMode===!1;we&&Ia?se=he:se=Qe}};function Ue(vr){qe.push(vr),we=this.charCodeToPatternIdxToConfig[vr],Ee=this.patternIdxToConfig[vr],L=Ee.length,L=Ee.length;var Hn=this.canModeBeOptimized[vr]&&this.config.safeMode===!1;we&&Hn?se=he:se=Qe}Ue.call(this,r);for(var xe;Uc.length){c=a,u=g,xe=gt;break}}}break}}if(c!==null){if(f=c.length,h=xe.group,h!==void 0&&(p=xe.tokenTypeIdx,m=this.createTokenInstance(c,U,p,xe.tokenType,A,ne,f),this.handlePayload(m,u),h===!1?J=this.addToken(ee,J,m):le[h].push(m)),e=this.chopInput(e,f),U=U+f,ne=this.computeNewColumn(ne,f),Ae===!0&&xe.canLineTerminator===!0){var Mt=0,mi=void 0,jt=void 0;T.lastIndex=0;do mi=T.test(c),mi===!0&&(jt=T.lastIndex-1,Mt++);while(mi===!0);Mt!==0&&(A=A+Mt,ne=f-jt,this.updateTokenEndLineColumnLocation(m,h,jt,Mt,A,ne,f))}this.handleModes(xe,Fe,Ue,m)}else{for(var Qr=U,Ti=A,_s=ne,Un=!1;!Un&&U <"+e+">");var n=(0,lr.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();Bc.Lexer=vIe});var JA=w(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.tokenMatcher=xi.createTokenInstance=xi.EOF=xi.createToken=xi.hasTokenLabel=xi.tokenName=xi.tokenLabel=void 0;var oo=Yt(),SIe=Dp(),Kv=fg();function kIe(t){return wj(t)?t.LABEL:t.name}xi.tokenLabel=kIe;function xIe(t){return t.name}xi.tokenName=xIe;function wj(t){return(0,oo.isString)(t.LABEL)&&t.LABEL!==""}xi.hasTokenLabel=wj;var PIe="parent",Bj="categories",bj="label",Qj="group",vj="push_mode",Sj="pop_mode",kj="longer_alt",xj="line_breaks",Pj="start_chars_hint";function Dj(t){return DIe(t)}xi.createToken=Dj;function DIe(t){var e=t.pattern,r={};if(r.name=t.name,(0,oo.isUndefined)(e)||(r.PATTERN=e),(0,oo.has)(t,PIe))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,oo.has)(t,Bj)&&(r.CATEGORIES=t[Bj]),(0,Kv.augmentTokenTypes)([r]),(0,oo.has)(t,bj)&&(r.LABEL=t[bj]),(0,oo.has)(t,Qj)&&(r.GROUP=t[Qj]),(0,oo.has)(t,Sj)&&(r.POP_MODE=t[Sj]),(0,oo.has)(t,vj)&&(r.PUSH_MODE=t[vj]),(0,oo.has)(t,kj)&&(r.LONGER_ALT=t[kj]),(0,oo.has)(t,xj)&&(r.LINE_BREAKS=t[xj]),(0,oo.has)(t,Pj)&&(r.START_CHARS_HINT=t[Pj]),r}xi.EOF=Dj({name:"EOF",pattern:SIe.Lexer.NA});(0,Kv.augmentTokenTypes)([xi.EOF]);function RIe(t,e,r,i,n,s,o,a){return{image:e,startOffset:r,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}xi.createTokenInstance=RIe;function FIe(t,e){return(0,Kv.tokenStructuredMatcher)(t,e)}xi.tokenMatcher=FIe});var bn=w(Vt=>{"use strict";var Ua=Vt&&Vt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Vt,"__esModule",{value:!0});Vt.serializeProduction=Vt.serializeGrammar=Vt.Terminal=Vt.Alternation=Vt.RepetitionWithSeparator=Vt.Repetition=Vt.RepetitionMandatoryWithSeparator=Vt.RepetitionMandatory=Vt.Option=Vt.Alternative=Vt.Rule=Vt.NonTerminal=Vt.AbstractProduction=void 0;var fr=Yt(),NIe=JA(),To=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),(0,fr.forEach)(this.definition,function(r){r.accept(e)})},t}();Vt.AbstractProduction=To;var Rj=function(t){Ua(e,t);function e(r){var i=t.call(this,[])||this;return i.idx=1,(0,fr.assign)(i,(0,fr.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(To);Vt.NonTerminal=Rj;var Fj=function(t){Ua(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.orgText="",(0,fr.assign)(i,(0,fr.pick)(r,function(n){return n!==void 0})),i}return e}(To);Vt.Rule=Fj;var Nj=function(t){Ua(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.ignoreAmbiguities=!1,(0,fr.assign)(i,(0,fr.pick)(r,function(n){return n!==void 0})),i}return e}(To);Vt.Alternative=Nj;var Lj=function(t){Ua(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,fr.assign)(i,(0,fr.pick)(r,function(n){return n!==void 0})),i}return e}(To);Vt.Option=Lj;var Tj=function(t){Ua(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,fr.assign)(i,(0,fr.pick)(r,function(n){return n!==void 0})),i}return e}(To);Vt.RepetitionMandatory=Tj;var Oj=function(t){Ua(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,fr.assign)(i,(0,fr.pick)(r,function(n){return n!==void 0})),i}return e}(To);Vt.RepetitionMandatoryWithSeparator=Oj;var Mj=function(t){Ua(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,fr.assign)(i,(0,fr.pick)(r,function(n){return n!==void 0})),i}return e}(To);Vt.Repetition=Mj;var Uj=function(t){Ua(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,fr.assign)(i,(0,fr.pick)(r,function(n){return n!==void 0})),i}return e}(To);Vt.RepetitionWithSeparator=Uj;var Kj=function(t){Ua(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,fr.assign)(i,(0,fr.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(To);Vt.Alternation=Kj;var JI=function(){function t(e){this.idx=1,(0,fr.assign)(this,(0,fr.pick)(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();Vt.Terminal=JI;function LIe(t){return(0,fr.map)(t,Fp)}Vt.serializeGrammar=LIe;function Fp(t){function e(s){return(0,fr.map)(s,Fp)}if(t instanceof Rj){var r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return(0,fr.isString)(t.label)&&(r.label=t.label),r}else{if(t instanceof Nj)return{type:"Alternative",definition:e(t.definition)};if(t instanceof Lj)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof Tj)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Oj)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Fp(new JI({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof Uj)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Fp(new JI({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof Mj)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof Kj)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof JI){var i={type:"Terminal",name:t.terminalType.name,label:(0,NIe.tokenLabel)(t.terminalType),idx:t.idx};(0,fr.isString)(t.label)&&(i.terminalLabel=t.label);var n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(i.pattern=(0,fr.isRegExp)(n)?n.source:n),i}else{if(t instanceof Fj)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}Vt.serializeProduction=Fp});var zI=w(WI=>{"use strict";Object.defineProperty(WI,"__esModule",{value:!0});WI.RestWalker=void 0;var Hv=Yt(),Qn=bn(),TIe=function(){function t(){}return t.prototype.walk=function(e,r){var i=this;r===void 0&&(r=[]),(0,Hv.forEach)(e.definition,function(n,s){var o=(0,Hv.drop)(e.definition,s+1);if(n instanceof Qn.NonTerminal)i.walkProdRef(n,o,r);else if(n instanceof Qn.Terminal)i.walkTerminal(n,o,r);else if(n instanceof Qn.Alternative)i.walkFlat(n,o,r);else if(n instanceof Qn.Option)i.walkOption(n,o,r);else if(n instanceof Qn.RepetitionMandatory)i.walkAtLeastOne(n,o,r);else if(n instanceof Qn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,r);else if(n instanceof Qn.RepetitionWithSeparator)i.walkManySep(n,o,r);else if(n instanceof Qn.Repetition)i.walkMany(n,o,r);else if(n instanceof Qn.Alternation)i.walkOr(n,o,r);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,r,i){},t.prototype.walkProdRef=function(e,r,i){},t.prototype.walkFlat=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkOption=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkAtLeastOne=function(e,r,i){var n=[new Qn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkAtLeastOneSep=function(e,r,i){var n=Hj(e,r,i);this.walk(e,n)},t.prototype.walkMany=function(e,r,i){var n=[new Qn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkManySep=function(e,r,i){var n=Hj(e,r,i);this.walk(e,n)},t.prototype.walkOr=function(e,r,i){var n=this,s=r.concat(i);(0,Hv.forEach)(e.definition,function(o){var a=new Qn.Alternative({definition:[o]});n.walk(a,s)})},t}();WI.RestWalker=TIe;function Hj(t,e,r){var i=[new Qn.Option({definition:[new Qn.Terminal({terminalType:t.separator})].concat(t.definition)})],n=i.concat(e,r);return n}});var hg=w(_I=>{"use strict";Object.defineProperty(_I,"__esModule",{value:!0});_I.GAstVisitor=void 0;var Oo=bn(),OIe=function(){function t(){}return t.prototype.visit=function(e){var r=e;switch(r.constructor){case Oo.NonTerminal:return this.visitNonTerminal(r);case Oo.Alternative:return this.visitAlternative(r);case Oo.Option:return this.visitOption(r);case Oo.RepetitionMandatory:return this.visitRepetitionMandatory(r);case Oo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(r);case Oo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(r);case Oo.Repetition:return this.visitRepetition(r);case Oo.Alternation:return this.visitAlternation(r);case Oo.Terminal:return this.visitTerminal(r);case Oo.Rule:return this.visitRule(r);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();_I.GAstVisitor=OIe});var Lp=w(Gi=>{"use strict";var MIe=Gi&&Gi.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Gi,"__esModule",{value:!0});Gi.collectMethods=Gi.DslMethodsCollectorVisitor=Gi.getProductionDslName=Gi.isBranchingProd=Gi.isOptionalProd=Gi.isSequenceProd=void 0;var Np=Yt(),kr=bn(),UIe=hg();function KIe(t){return t instanceof kr.Alternative||t instanceof kr.Option||t instanceof kr.Repetition||t instanceof kr.RepetitionMandatory||t instanceof kr.RepetitionMandatoryWithSeparator||t instanceof kr.RepetitionWithSeparator||t instanceof kr.Terminal||t instanceof kr.Rule}Gi.isSequenceProd=KIe;function jv(t,e){e===void 0&&(e=[]);var r=t instanceof kr.Option||t instanceof kr.Repetition||t instanceof kr.RepetitionWithSeparator;return r?!0:t instanceof kr.Alternation?(0,Np.some)(t.definition,function(i){return jv(i,e)}):t instanceof kr.NonTerminal&&(0,Np.contains)(e,t)?!1:t instanceof kr.AbstractProduction?(t instanceof kr.NonTerminal&&e.push(t),(0,Np.every)(t.definition,function(i){return jv(i,e)})):!1}Gi.isOptionalProd=jv;function HIe(t){return t instanceof kr.Alternation}Gi.isBranchingProd=HIe;function jIe(t){if(t instanceof kr.NonTerminal)return"SUBRULE";if(t instanceof kr.Option)return"OPTION";if(t instanceof kr.Alternation)return"OR";if(t instanceof kr.RepetitionMandatory)return"AT_LEAST_ONE";if(t instanceof kr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(t instanceof kr.RepetitionWithSeparator)return"MANY_SEP";if(t instanceof kr.Repetition)return"MANY";if(t instanceof kr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Gi.getProductionDslName=jIe;var jj=function(t){MIe(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.separator="-",r.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},r}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(r){var i=r.terminalType.name+this.separator+"Terminal";(0,Np.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitNonTerminal=function(r){var i=r.nonTerminalName+this.separator+"Terminal";(0,Np.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitOption=function(r){this.dslMethods.option.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.dslMethods.repetitionWithSeparator.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.dslMethods.repetitionMandatory.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.dslMethods.repetitionMandatoryWithSeparator.push(r)},e.prototype.visitRepetition=function(r){this.dslMethods.repetition.push(r)},e.prototype.visitAlternation=function(r){this.dslMethods.alternation.push(r)},e}(UIe.GAstVisitor);Gi.DslMethodsCollectorVisitor=jj;var VI=new jj;function GIe(t){VI.reset(),t.accept(VI);var e=VI.dslMethods;return VI.reset(),e}Gi.collectMethods=GIe});var Yv=w(Mo=>{"use strict";Object.defineProperty(Mo,"__esModule",{value:!0});Mo.firstForTerminal=Mo.firstForBranching=Mo.firstForSequence=Mo.first=void 0;var XI=Yt(),Gj=bn(),Gv=Lp();function ZI(t){if(t instanceof Gj.NonTerminal)return ZI(t.referencedRule);if(t instanceof Gj.Terminal)return Jj(t);if((0,Gv.isSequenceProd)(t))return Yj(t);if((0,Gv.isBranchingProd)(t))return qj(t);throw Error("non exhaustive match")}Mo.first=ZI;function Yj(t){for(var e=[],r=t.definition,i=0,n=r.length>i,s,o=!0;n&&o;)s=r[i],o=(0,Gv.isOptionalProd)(s),e=e.concat(ZI(s)),i=i+1,n=r.length>i;return(0,XI.uniq)(e)}Mo.firstForSequence=Yj;function qj(t){var e=(0,XI.map)(t.definition,function(r){return ZI(r)});return(0,XI.uniq)((0,XI.flatten)(e))}Mo.firstForBranching=qj;function Jj(t){return[t.terminalType]}Mo.firstForTerminal=Jj});var qv=w($I=>{"use strict";Object.defineProperty($I,"__esModule",{value:!0});$I.IN=void 0;$I.IN="_~IN~_"});var Xj=w(Qs=>{"use strict";var YIe=Qs&&Qs.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Qs,"__esModule",{value:!0});Qs.buildInProdFollowPrefix=Qs.buildBetweenProdsFollowPrefix=Qs.computeAllProdsFollows=Qs.ResyncFollowsWalker=void 0;var qIe=zI(),JIe=Yv(),Wj=Yt(),zj=qv(),WIe=bn(),Vj=function(t){YIe(e,t);function e(r){var i=t.call(this)||this;return i.topProd=r,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,i,n){},e.prototype.walkProdRef=function(r,i,n){var s=_j(r.referencedRule,r.idx)+this.topProd.name,o=i.concat(n),a=new WIe.Alternative({definition:o}),l=(0,JIe.first)(a);this.follows[s]=l},e}(qIe.RestWalker);Qs.ResyncFollowsWalker=Vj;function zIe(t){var e={};return(0,Wj.forEach)(t,function(r){var i=new Vj(r).startWalking();(0,Wj.assign)(e,i)}),e}Qs.computeAllProdsFollows=zIe;function _j(t,e){return t.name+e+zj.IN}Qs.buildBetweenProdsFollowPrefix=_j;function _Ie(t){var e=t.terminalType.name;return e+t.idx+zj.IN}Qs.buildInProdFollowPrefix=_Ie});var Tp=w(Ka=>{"use strict";Object.defineProperty(Ka,"__esModule",{value:!0});Ka.defaultGrammarValidatorErrorProvider=Ka.defaultGrammarResolverErrorProvider=Ka.defaultParserErrorProvider=void 0;var pg=JA(),VIe=Yt(),ao=Yt(),Jv=bn(),Zj=Lp();Ka.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,i=t.previous,n=t.ruleName,s=(0,pg.hasTokenLabel)(e),o=s?"--> "+(0,pg.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+r.image+"' <--";return a},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,i=t.previous,n=t.customUserDescription,s=t.ruleName,o="Expecting: ",a=(0,ao.first)(r).image,l=` +but found: '`+a+"'";if(n)return o+n+l;var c=(0,ao.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,ao.map)(c,function(h){return"["+(0,ao.map)(h,function(p){return(0,pg.tokenLabel)(p)}).join(", ")+"]"}),g=(0,ao.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: +`+g.join(` +`);return o+f+l},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,i=t.customUserDescription,n=t.ruleName,s="Expecting: ",o=(0,ao.first)(r).image,a=` +but found: '`+o+"'";if(i)return s+i+a;var l=(0,ao.map)(e,function(u){return"["+(0,ao.map)(u,function(g){return(0,pg.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(Ka.defaultParserErrorProvider);Ka.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+t.name+"<-";return r}};Ka.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(u){return u instanceof Jv.Terminal?u.terminalType.name:u instanceof Jv.NonTerminal?u.nonTerminalName:""}var i=t.name,n=(0,ao.first)(e),s=n.idx,o=(0,Zj.getProductionDslName)(n),a=r(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` + appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` +`),c},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. +`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. +`)+`To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=(0,ao.map)(t.prefixPath,function(n){return(0,pg.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix +`+("in inside <"+t.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`;return i},buildAlternationAmbiguityError:function(t){var e=(0,ao.map)(t.prefixPath,function(n){return(0,pg.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,i},buildEmptyRepetitionError:function(t){var e=(0,Zj.getProductionDslName)(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. +This could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. +`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: +`+(" inside <"+t.topLevelRule.name+`> Rule. + has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=VIe.map(t.leftRecursionPath,function(s){return s.name}),i=e+" --> "+r.concat([e]).join(" --> "),n=`Left Recursion found in grammar. +`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) +`)+(`without consuming any Tokens. The grammar path that causes this is: + `+i+` +`)+` To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof Jv.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return r}}});var tG=w(WA=>{"use strict";var XIe=WA&&WA.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(WA,"__esModule",{value:!0});WA.GastRefResolverVisitor=WA.resolveGrammar=void 0;var ZIe=Xn(),$j=Yt(),$Ie=hg();function eye(t,e){var r=new eG(t,e);return r.resolveRefs(),r.errors}WA.resolveGrammar=eye;var eG=function(t){XIe(e,t);function e(r,i){var n=t.call(this)||this;return n.nameToTopRule=r,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var r=this;(0,$j.forEach)((0,$j.values)(this.nameToTopRule),function(i){r.currTopLevel=i,i.accept(r)})},e.prototype.visitNonTerminal=function(r){var i=this.nameToTopRule[r.nonTerminalName];if(i)r.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,r);this.errors.push({message:n,type:ZIe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:r.nonTerminalName})}},e}($Ie.GAstVisitor);WA.GastRefResolverVisitor=eG});var Mp=w(Mr=>{"use strict";var bc=Mr&&Mr.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Mr,"__esModule",{value:!0});Mr.nextPossibleTokensAfter=Mr.possiblePathsFrom=Mr.NextTerminalAfterAtLeastOneSepWalker=Mr.NextTerminalAfterAtLeastOneWalker=Mr.NextTerminalAfterManySepWalker=Mr.NextTerminalAfterManyWalker=Mr.AbstractNextTerminalAfterProductionWalker=Mr.NextAfterTokenWalker=Mr.AbstractNextPossibleTokensWalker=void 0;var rG=zI(),Ut=Yt(),tye=Yv(),Dt=bn(),iG=function(t){bc(e,t);function e(r,i){var n=t.call(this)||this;return n.topProd=r,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Ut.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Ut.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,i){i===void 0&&(i=[]),this.found||t.prototype.walk.call(this,r,i)},e.prototype.walkProdRef=function(r,i,n){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(r.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Ut.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(rG.RestWalker);Mr.AbstractNextPossibleTokensWalker=iG;var rye=function(t){bc(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(r,i,n){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new Dt.Alternative({definition:s});this.possibleTokTypes=(0,tye.first)(o),this.found=!0}},e}(iG);Mr.NextAfterTokenWalker=rye;var Op=function(t){bc(e,t);function e(r,i){var n=t.call(this)||this;return n.topRule=r,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(rG.RestWalker);Mr.AbstractNextTerminalAfterProductionWalker=Op;var iye=function(t){bc(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,i,n){if(r.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkMany.call(this,r,i,n)},e}(Op);Mr.NextTerminalAfterManyWalker=iye;var nye=function(t){bc(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkManySep.call(this,r,i,n)},e}(Op);Mr.NextTerminalAfterManySepWalker=nye;var sye=function(t){bc(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,i,n){if(r.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOne.call(this,r,i,n)},e}(Op);Mr.NextTerminalAfterAtLeastOneWalker=sye;var oye=function(t){bc(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,i,n)},e}(Op);Mr.NextTerminalAfterAtLeastOneSepWalker=oye;function nG(t,e,r){r===void 0&&(r=[]),r=(0,Ut.cloneArr)(r);var i=[],n=0;function s(c){return c.concat((0,Ut.drop)(t,n+1))}function o(c){var u=nG(s(c),e,r);return i.concat(u)}for(;r.length=0;le--){var Ae=Q.definition[le],T={idx:p,def:Ae.definition.concat((0,Ut.drop)(h)),ruleStack:m,occurrenceStack:y};g.push(T),g.push(o)}else if(Q instanceof Dt.Alternative)g.push({idx:p,def:Q.definition.concat((0,Ut.drop)(h)),ruleStack:m,occurrenceStack:y});else if(Q instanceof Dt.Rule)g.push(aye(Q,p,m,y));else throw Error("non exhaustive match")}}return u}Mr.nextPossibleTokensAfter=Aye;function aye(t,e,r,i){var n=(0,Ut.cloneArr)(r);n.push(t.name);var s=(0,Ut.cloneArr)(i);return s.push(1),{idx:e,def:t.definition,ruleStack:n,occurrenceStack:s}}});var Up=w(tr=>{"use strict";var sG=tr&&tr.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(tr,"__esModule",{value:!0});tr.areTokenCategoriesNotUsed=tr.isStrictPrefixOfPath=tr.containsPath=tr.getLookaheadPathsForOptionalProd=tr.getLookaheadPathsForOr=tr.lookAheadSequenceFromAlternatives=tr.buildSingleAlternativeLookaheadFunction=tr.buildAlternativesLookAheadFunc=tr.buildLookaheadFuncForOptionalProd=tr.buildLookaheadFuncForOr=tr.getProdType=tr.PROD_TYPE=void 0;var cr=Yt(),oG=Mp(),lye=zI(),ey=fg(),zA=bn(),cye=hg(),ci;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(ci=tr.PROD_TYPE||(tr.PROD_TYPE={}));function uye(t){if(t instanceof zA.Option)return ci.OPTION;if(t instanceof zA.Repetition)return ci.REPETITION;if(t instanceof zA.RepetitionMandatory)return ci.REPETITION_MANDATORY;if(t instanceof zA.RepetitionMandatoryWithSeparator)return ci.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof zA.RepetitionWithSeparator)return ci.REPETITION_WITH_SEPARATOR;if(t instanceof zA.Alternation)return ci.ALTERNATION;throw Error("non exhaustive match")}tr.getProdType=uye;function gye(t,e,r,i,n,s){var o=aG(t,e,r),a=Wv(o)?ey.tokenStructuredMatcherNoCategories:ey.tokenStructuredMatcher;return s(o,i,a,n)}tr.buildLookaheadFuncForOr=gye;function fye(t,e,r,i,n,s){var o=AG(t,e,n,r),a=Wv(o)?ey.tokenStructuredMatcherNoCategories:ey.tokenStructuredMatcher;return s(o[0],a,i)}tr.buildLookaheadFuncForOptionalProd=fye;function hye(t,e,r,i){var n=t.length,s=(0,cr.every)(t,function(l){return(0,cr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,cr.map)(l,function(x){return x.GATE}),u=0;u{"use strict";var Vv=Xt&&Xt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Xt,"__esModule",{value:!0});Xt.checkPrefixAlternativesAmbiguities=Xt.validateSomeNonEmptyLookaheadPath=Xt.validateTooManyAlts=Xt.RepetionCollector=Xt.validateAmbiguousAlternationAlternatives=Xt.validateEmptyOrAlternative=Xt.getFirstNoneTerminal=Xt.validateNoLeftRecursion=Xt.validateRuleIsOverridden=Xt.validateRuleDoesNotAlreadyExist=Xt.OccurrenceValidationCollector=Xt.identifyProductionForDuplicates=Xt.validateGrammar=void 0;var nr=Yt(),xr=Yt(),Uo=Xn(),Xv=Lp(),dg=Up(),Eye=Mp(),Ao=bn(),Zv=hg();function wye(t,e,r,i,n){var s=nr.map(t,function(h){return Iye(h,i)}),o=nr.map(t,function(h){return $v(h,h,i)}),a=[],l=[],c=[];(0,xr.every)(o,xr.isEmpty)&&(a=(0,xr.map)(t,function(h){return fG(h,i)}),l=(0,xr.map)(t,function(h){return hG(h,e,i)}),c=dG(t,e,i));var u=yye(t,r,i),g=(0,xr.map)(t,function(h){return pG(h,i)}),f=(0,xr.map)(t,function(h){return gG(h,t,n,i)});return nr.flatten(s.concat(c,o,a,l,u,g,f))}Xt.validateGrammar=wye;function Iye(t,e){var r=new EG;t.accept(r);var i=r.allProductions,n=nr.groupBy(i,CG),s=nr.pick(n,function(a){return a.length>1}),o=nr.map(nr.values(s),function(a){var l=nr.first(a),c=e.buildDuplicateFoundError(t,a),u=(0,Xv.getProductionDslName)(l),g={message:c,type:Uo.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:u,occurrence:l.idx},f=mG(l);return f&&(g.parameter=f),g});return o}function CG(t){return(0,Xv.getProductionDslName)(t)+"_#_"+t.idx+"_#_"+mG(t)}Xt.identifyProductionForDuplicates=CG;function mG(t){return t instanceof Ao.Terminal?t.terminalType.name:t instanceof Ao.NonTerminal?t.nonTerminalName:""}var EG=function(t){Vv(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitNonTerminal=function(r){this.allProductions.push(r)},e.prototype.visitOption=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e.prototype.visitAlternation=function(r){this.allProductions.push(r)},e.prototype.visitTerminal=function(r){this.allProductions.push(r)},e}(Zv.GAstVisitor);Xt.OccurrenceValidationCollector=EG;function gG(t,e,r,i){var n=[],s=(0,xr.reduce)(e,function(a,l){return l.name===t.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});n.push({message:o,type:Uo.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return n}Xt.validateRuleDoesNotAlreadyExist=gG;function Bye(t,e,r){var i=[],n;return nr.contains(e,t)||(n="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+r+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:Uo.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),i}Xt.validateRuleIsOverridden=Bye;function $v(t,e,r,i){i===void 0&&(i=[]);var n=[],s=Kp(e.definition);if(nr.isEmpty(s))return[];var o=t.name,a=nr.contains(s,t);a&&n.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:i}),type:Uo.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=nr.difference(s,i.concat([t])),c=nr.map(l,function(u){var g=nr.cloneArr(i);return g.push(u),$v(t,u,r,g)});return n.concat(nr.flatten(c))}Xt.validateNoLeftRecursion=$v;function Kp(t){var e=[];if(nr.isEmpty(t))return e;var r=nr.first(t);if(r instanceof Ao.NonTerminal)e.push(r.referencedRule);else if(r instanceof Ao.Alternative||r instanceof Ao.Option||r instanceof Ao.RepetitionMandatory||r instanceof Ao.RepetitionMandatoryWithSeparator||r instanceof Ao.RepetitionWithSeparator||r instanceof Ao.Repetition)e=e.concat(Kp(r.definition));else if(r instanceof Ao.Alternation)e=nr.flatten(nr.map(r.definition,function(o){return Kp(o.definition)}));else if(!(r instanceof Ao.Terminal))throw Error("non exhaustive match");var i=(0,Xv.isOptionalProd)(r),n=t.length>1;if(i&&n){var s=nr.drop(t);return e.concat(Kp(s))}else return e}Xt.getFirstNoneTerminal=Kp;var eS=function(t){Vv(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(Zv.GAstVisitor);function fG(t,e){var r=new eS;t.accept(r);var i=r.alternations,n=nr.reduce(i,function(s,o){var a=nr.dropRight(o.definition),l=nr.map(a,function(c,u){var g=(0,Eye.nextPossibleTokensAfter)([c],[],null,1);return nr.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:u}),type:Uo.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(nr.compact(l))},[]);return n}Xt.validateEmptyOrAlternative=fG;function hG(t,e,r){var i=new eS;t.accept(i);var n=i.alternations;n=(0,xr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=nr.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,dg.getLookaheadPathsForOr)(l,t,c,a),g=bye(u,a,t,r),f=IG(u,a,t,r);return o.concat(g,f)},[]);return s}Xt.validateAmbiguousAlternationAlternatives=hG;var yG=function(t){Vv(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e}(Zv.GAstVisitor);Xt.RepetionCollector=yG;function pG(t,e){var r=new eS;t.accept(r);var i=r.alternations,n=nr.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:Uo.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),s},[]);return n}Xt.validateTooManyAlts=pG;function dG(t,e,r){var i=[];return(0,xr.forEach)(t,function(n){var s=new yG;n.accept(s);var o=s.allProductions;(0,xr.forEach)(o,function(a){var l=(0,dg.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,dg.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,xr.isEmpty)((0,xr.flatten)(f))){var h=r.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:Uo.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}Xt.validateSomeNonEmptyLookaheadPath=dG;function bye(t,e,r,i){var n=[],s=(0,xr.reduce)(t,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,xr.forEach)(l,function(u){var g=[c];(0,xr.forEach)(t,function(f,h){c!==h&&(0,dg.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,dg.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=nr.map(s,function(a){var l=(0,xr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:Uo.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function IG(t,e,r,i){var n=[],s=(0,xr.reduce)(t,function(o,a,l){var c=(0,xr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,xr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,xr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});Cg.validateGrammar=Cg.resolveGrammar=void 0;var rS=Yt(),Qye=tG(),vye=tS(),wG=Tp();function Sye(t){t=(0,rS.defaults)(t,{errMsgProvider:wG.defaultGrammarResolverErrorProvider});var e={};return(0,rS.forEach)(t.rules,function(r){e[r.name]=r}),(0,Qye.resolveGrammar)(e,t.errMsgProvider)}Cg.resolveGrammar=Sye;function kye(t){return t=(0,rS.defaults)(t,{errMsgProvider:wG.defaultGrammarValidatorErrorProvider}),(0,vye.validateGrammar)(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}Cg.validateGrammar=kye});var mg=w(vn=>{"use strict";var Hp=vn&&vn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(vn,"__esModule",{value:!0});vn.EarlyExitException=vn.NotAllInputParsedException=vn.NoViableAltException=vn.MismatchedTokenException=vn.isRecognitionException=void 0;var xye=Yt(),bG="MismatchedTokenException",QG="NoViableAltException",vG="EarlyExitException",SG="NotAllInputParsedException",kG=[bG,QG,vG,SG];Object.freeze(kG);function Pye(t){return(0,xye.contains)(kG,t.name)}vn.isRecognitionException=Pye;var ty=function(t){Hp(e,t);function e(r,i){var n=this.constructor,s=t.call(this,r)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),Dye=function(t){Hp(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=bG,s}return e}(ty);vn.MismatchedTokenException=Dye;var Rye=function(t){Hp(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=QG,s}return e}(ty);vn.NoViableAltException=Rye;var Fye=function(t){Hp(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.name=SG,n}return e}(ty);vn.NotAllInputParsedException=Fye;var Nye=function(t){Hp(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=vG,s}return e}(ty);vn.EarlyExitException=Nye});var nS=w(Yi=>{"use strict";Object.defineProperty(Yi,"__esModule",{value:!0});Yi.attemptInRepetitionRecovery=Yi.Recoverable=Yi.InRuleRecoveryException=Yi.IN_RULE_RECOVERY_EXCEPTION=Yi.EOF_FOLLOW_KEY=void 0;var ry=JA(),vs=Yt(),Lye=mg(),Tye=qv(),Oye=Xn();Yi.EOF_FOLLOW_KEY={};Yi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function iS(t){this.name=Yi.IN_RULE_RECOVERY_EXCEPTION,this.message=t}Yi.InRuleRecoveryException=iS;iS.prototype=Error.prototype;var Mye=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,vs.has)(e,"recoveryEnabled")?e.recoveryEnabled:Oye.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=xG)},t.prototype.getTokenToInsert=function(e){var r=(0,ry.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),m=new Lye.MismatchedTokenException(p,u,s.LA(0));m.resyncedTokens=(0,vs.dropRight)(l),s.SAVE_ERROR(m)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,r);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,i){return!(i===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var i=this.getCurrentGrammarPath(e,r),n=this.getNextPossibleTokenTypes(i);return n},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new iS("sad sad panda")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,vs.isEmpty)(r))return!1;var n=this.LA(1),s=(0,vs.find)(r,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(r);return(0,vs.contains)(i,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),i=2;;){var n=r.tokenType;if((0,vs.contains)(e,n))return n;r=this.LA(i),i++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Yi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(i)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,vs.map)(r,function(n,s){return s===0?Yi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(r[s-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=(0,vs.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,vs.flatten)(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===Yi.EOF_FOLLOW_KEY)return[ry.EOF];var r=e.ruleName+e.idxInCallingRule+Tye.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,ry.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,r);return(0,vs.dropRight)(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,i,n,s,o,a){},t.prototype.getCurrentGrammarPath=function(e,r){var i=this.getHumanReadableRuleStack(),n=(0,vs.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:r};return s},t.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,vs.map)(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();Yi.Recoverable=Mye;function xG(t,e,r,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=ry.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(t,e,r,f)}Yi.attemptInRepetitionRecovery=xG});var iy=w(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.getKeyForAutomaticLookahead=Jt.AT_LEAST_ONE_SEP_IDX=Jt.MANY_SEP_IDX=Jt.AT_LEAST_ONE_IDX=Jt.MANY_IDX=Jt.OPTION_IDX=Jt.OR_IDX=Jt.BITS_FOR_ALT_IDX=Jt.BITS_FOR_RULE_IDX=Jt.BITS_FOR_OCCURRENCE_IDX=Jt.BITS_FOR_METHOD_TYPE=void 0;Jt.BITS_FOR_METHOD_TYPE=4;Jt.BITS_FOR_OCCURRENCE_IDX=8;Jt.BITS_FOR_RULE_IDX=12;Jt.BITS_FOR_ALT_IDX=8;Jt.OR_IDX=1<{"use strict";Object.defineProperty(ny,"__esModule",{value:!0});ny.LooksAhead=void 0;var Ha=Up(),lo=Yt(),PG=Xn(),ja=iy(),Qc=Lp(),Kye=function(){function t(){}return t.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,lo.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:PG.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,lo.has)(e,"maxLookahead")?e.maxLookahead:PG.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,lo.isES2015MapSupported)()?new Map:[],(0,lo.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;(0,lo.forEach)(e,function(i){r.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Qc.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,lo.forEach)(s,function(g){var f=g.idx===0?"":g.idx;r.TRACE_INIT(""+(0,Qc.getProductionDslName)(g)+f,function(){var h=(0,Ha.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||r.maxLookahead,g.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),p=(0,ja.getKeyForAutomaticLookahead)(r.fullRuleNameToShort[i.name],ja.OR_IDX,g.idx);r.setLaFuncCache(p,h)})}),(0,lo.forEach)(o,function(g){r.computeLookaheadFunc(i,g.idx,ja.MANY_IDX,Ha.PROD_TYPE.REPETITION,g.maxLookahead,(0,Qc.getProductionDslName)(g))}),(0,lo.forEach)(a,function(g){r.computeLookaheadFunc(i,g.idx,ja.OPTION_IDX,Ha.PROD_TYPE.OPTION,g.maxLookahead,(0,Qc.getProductionDslName)(g))}),(0,lo.forEach)(l,function(g){r.computeLookaheadFunc(i,g.idx,ja.AT_LEAST_ONE_IDX,Ha.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Qc.getProductionDslName)(g))}),(0,lo.forEach)(c,function(g){r.computeLookaheadFunc(i,g.idx,ja.AT_LEAST_ONE_SEP_IDX,Ha.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Qc.getProductionDslName)(g))}),(0,lo.forEach)(u,function(g){r.computeLookaheadFunc(i,g.idx,ja.MANY_SEP_IDX,Ha.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Qc.getProductionDslName)(g))})})})},t.prototype.computeLookaheadFunc=function(e,r,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(r===0?"":r),function(){var l=(0,Ha.buildLookaheadFuncForOptionalProd)(r,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,ja.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,r);a.setLaFuncCache(c,l)})},t.prototype.lookAheadBuilderForOptional=function(e,r,i){return(0,Ha.buildSingleAlternativeLookaheadFunction)(e,r,i)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,i,n){return(0,Ha.buildAlternativesLookAheadFunc)(e,r,i,n)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var i=this.getLastExplicitRuleShortName();return(0,ja.getKeyForAutomaticLookahead)(i,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();ny.LooksAhead=Kye});var RG=w(Ko=>{"use strict";Object.defineProperty(Ko,"__esModule",{value:!0});Ko.addNoneTerminalToCst=Ko.addTerminalToCst=Ko.setNodeLocationFull=Ko.setNodeLocationOnlyOffset=void 0;function Hye(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";Object.defineProperty(_A,"__esModule",{value:!0});_A.defineNameProp=_A.functionName=_A.classNameFromInstance=void 0;var qye=Yt();function Jye(t){return FG(t.constructor)}_A.classNameFromInstance=Jye;var NG="name";function FG(t){var e=t.name;return e||"anonymous"}_A.functionName=FG;function Wye(t,e){var r=Object.getOwnPropertyDescriptor(t,NG);return(0,qye.isUndefined)(r)||r.configurable?(Object.defineProperty(t,NG,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}_A.defineNameProp=Wye});var UG=w(Pi=>{"use strict";Object.defineProperty(Pi,"__esModule",{value:!0});Pi.validateRedundantMethods=Pi.validateMissingCstMethods=Pi.validateVisitor=Pi.CstVisitorDefinitionError=Pi.createBaseVisitorConstructorWithDefaults=Pi.createBaseSemanticVisitorConstructor=Pi.defaultVisit=void 0;var Ss=Yt(),jp=sS();function LG(t,e){for(var r=(0,Ss.keys)(t),i=r.length,n=0;n: + `+(""+s.join(` + +`).replace(/\n/g,` + `)))}}};return r.prototype=i,r.prototype.constructor=r,r._RULE_NAMES=e,r}Pi.createBaseSemanticVisitorConstructor=zye;function _ye(t,e,r){var i=function(){};(0,jp.defineNameProp)(i,t+"BaseSemanticsWithDefaults");var n=Object.create(r.prototype);return(0,Ss.forEach)(e,function(s){n[s]=LG}),i.prototype=n,i.prototype.constructor=i,i}Pi.createBaseVisitorConstructorWithDefaults=_ye;var oS;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(oS=Pi.CstVisitorDefinitionError||(Pi.CstVisitorDefinitionError={}));function TG(t,e){var r=OG(t,e),i=MG(t,e);return r.concat(i)}Pi.validateVisitor=TG;function OG(t,e){var r=(0,Ss.map)(e,function(i){if(!(0,Ss.isFunction)(t[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,jp.functionName)(t.constructor)+" CST Visitor.",type:oS.MISSING_METHOD,methodName:i}});return(0,Ss.compact)(r)}Pi.validateMissingCstMethods=OG;var Vye=["constructor","visit","validateVisitor"];function MG(t,e){var r=[];for(var i in t)(0,Ss.isFunction)(t[i])&&!(0,Ss.contains)(Vye,i)&&!(0,Ss.contains)(e,i)&&r.push({msg:"Redundant visitor method: <"+i+"> on "+(0,jp.functionName)(t.constructor)+` CST Visitor +There is no Grammar Rule corresponding to this method's name. +`,type:oS.REDUNDANT_METHOD,methodName:i});return r}Pi.validateRedundantMethods=MG});var HG=w(sy=>{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.TreeBuilder=void 0;var Eg=RG(),ii=Yt(),KG=UG(),Xye=Xn(),Zye=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,ii.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:Xye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=ii.NOOP,this.cstFinallyStateUpdate=ii.NOOP,this.cstPostTerminal=ii.NOOP,this.cstPostNonTerminal=ii.NOOP,this.cstPostRule=ii.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Eg.setNodeLocationFull,this.setNodeLocationFromNode=Eg.setNodeLocationFull,this.cstPostRule=ii.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=ii.NOOP,this.setNodeLocationFromNode=ii.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Eg.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=Eg.setNodeLocationOnlyOffset,this.cstPostRule=ii.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=ii.NOOP,this.setNodeLocationFromNode=ii.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=ii.NOOP,this.setNodeLocationFromNode=ii.NOOP,this.cstPostRule=ii.NOOP,this.setInitialNodeLocation=ii.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,r){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?(i.endOffset=r.endOffset,i.endLine=r.endLine,i.endColumn=r.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?i.endOffset=r.endOffset:i.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Eg.addTerminalToCst)(i,r,e),this.setNodeLocationFromToken(i.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Eg.addNoneTerminalToCst)(i,r,e),this.setNodeLocationFromNode(i.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if((0,ii.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,KG.createBaseSemanticVisitorConstructor)(this.className,(0,ii.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,ii.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,KG.createBaseVisitorConstructorWithDefaults)(this.className,(0,ii.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();sy.TreeBuilder=Zye});var GG=w(oy=>{"use strict";Object.defineProperty(oy,"__esModule",{value:!0});oy.LexerAdapter=void 0;var jG=Xn(),$ye=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):jG.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?jG.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();oy.LexerAdapter=$ye});var qG=w(ay=>{"use strict";Object.defineProperty(ay,"__esModule",{value:!0});ay.RecognizerApi=void 0;var YG=Yt(),ewe=mg(),aS=Xn(),twe=Tp(),rwe=tS(),iwe=bn(),nwe=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,i){return this.consumeInternal(r,e,i)},t.prototype.subrule=function(e,r,i){return this.subruleInternal(r,e,i)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,i){if(i===void 0&&(i=aS.DEFAULT_RULE_CONFIG),(0,YG.contains)(this.definedRulesNames,e)){var n=twe.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:aS.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,i);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,i){i===void 0&&(i=aS.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,rwe.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,r,i);return this[e]=s,s},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,r),!0}catch(n){if((0,ewe.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return(0,iwe.serializeGrammar)((0,YG.values)(this.gastProductionsCache))},t}();ay.RecognizerApi=nwe});var _G=w(Ay=>{"use strict";Object.defineProperty(Ay,"__esModule",{value:!0});Ay.RecognizerEngine=void 0;var Rr=Yt(),Zn=iy(),ly=mg(),JG=Up(),Ig=Mp(),WG=Xn(),swe=nS(),zG=JA(),Gp=fg(),owe=sS(),awe=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,r){if(this.className=(0,owe.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Gp.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Rr.has)(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if((0,Rr.isArray)(e)){if((0,Rr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if((0,Rr.isArray)(e))this.tokensMap=(0,Rr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Rr.has)(e,"modes")&&(0,Rr.every)((0,Rr.flatten)((0,Rr.values)(e.modes)),Gp.isTokenType)){var i=(0,Rr.flatten)((0,Rr.values)(e.modes)),n=(0,Rr.uniq)(i);this.tokensMap=(0,Rr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Rr.isObject)(e))this.tokensMap=(0,Rr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=zG.EOF;var s=(0,Rr.every)((0,Rr.values)(e),function(o){return(0,Rr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?Gp.tokenStructuredMatcherNoCategories:Gp.tokenStructuredMatcher,(0,Gp.augmentTokenTypes)((0,Rr.values)(this.tokensMap))},t.prototype.defineRule=function(e,r,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Rr.has)(i,"resyncEnabled")?i.resyncEnabled:WG.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Rr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:WG.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<r},t.prototype.orInternal=function(e,r){var i=this.getKeyForAutomaticLookahead(Zn.OR_IDX,r),n=(0,Rr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new ly.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,r,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,i){throw(0,ly.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:i),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},t.prototype.consumeInternalError=function(e,r,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new ly.MismatchedTokenException(n,r,s))},t.prototype.consumeInternalRecovery=function(e,r,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===swe.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},t.prototype.saveRecogState=function(){var e=this.errors,r=(0,Rr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),zG.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();Ay.RecognizerEngine=awe});var XG=w(cy=>{"use strict";Object.defineProperty(cy,"__esModule",{value:!0});cy.ErrorHandler=void 0;var AS=mg(),lS=Yt(),VG=Up(),Awe=Xn(),lwe=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,lS.has)(e,"errorMessageProvider")?e.errorMessageProvider:Awe.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if((0,AS.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,lS.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return(0,lS.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,VG.getLookaheadPathsForOptionalProd)(e,s,r,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new AS.EarlyExitException(u,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,VG.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new AS.NoViableAltException(c,this.LA(1),l))},t}();cy.ErrorHandler=lwe});var eY=w(uy=>{"use strict";Object.defineProperty(uy,"__esModule",{value:!0});uy.ContentAssist=void 0;var ZG=Mp(),$G=Yt(),cwe=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var i=this.gastProductionsCache[e];if((0,$G.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,ZG.nextPossibleTokensAfter)([i],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=(0,$G.first)(e.ruleStack),i=this.getGAstProductions(),n=i[r],s=new ZG.NextAfterTokenWalker(n,e).startWalking();return s},t}();uy.ContentAssist=cwe});var AY=w(gy=>{"use strict";Object.defineProperty(gy,"__esModule",{value:!0});gy.GastRecorder=void 0;var Sn=Yt(),Ho=bn(),uwe=Dp(),tY=fg(),rY=JA(),gwe=Xn(),fwe=iy(),fy={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(fy);var iY=!0,nY=Math.pow(2,fwe.BITS_FOR_OCCURRENCE_IDX)-1,sY=(0,rY.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:uwe.Lexer.NA});(0,tY.augmentTokenTypes)([sY]);var oY=(0,rY.createTokenInstance)(sY,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(oY);var hwe={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},dwe=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var r=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)r(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var r=0;r<10;r++){var i=r>0?r:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return gwe.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var i=new Ho.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),r.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(s){throw n}throw n}},t.prototype.optionInternalRecord=function(e,r){return Yp.call(this,Ho.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){Yp.call(this,Ho.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){Yp.call(this,Ho.RepetitionMandatoryWithSeparator,r,e,iY)},t.prototype.manyInternalRecord=function(e,r){Yp.call(this,Ho.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){Yp.call(this,Ho.RepetitionWithSeparator,r,e,iY)},t.prototype.orInternalRecord=function(e,r){return pwe.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,i){if(hy(r),!e||(0,Sn.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Sn.peek)(this.recordingProdStack),o=e.ruleName,a=new Ho.NonTerminal({idx:r,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?hwe:fy},t.prototype.consumeInternalRecord=function(e,r,i){if(hy(r),!(0,tY.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Sn.peek)(this.recordingProdStack),o=new Ho.Terminal({idx:r,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),oY},t}();gy.GastRecorder=dwe;function Yp(t,e,r,i){i===void 0&&(i=!1),hy(r);var n=(0,Sn.peek)(this.recordingProdStack),s=(0,Sn.isFunction)(e)?e:e.DEF,o=new t({definition:[],idx:r});return i&&(o.separator=e.SEP),(0,Sn.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),fy}function pwe(t,e){var r=this;hy(e);var i=(0,Sn.peek)(this.recordingProdStack),n=(0,Sn.isArray)(t)===!1,s=n===!1?t:t.DEF,o=new Ho.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});(0,Sn.has)(t,"MAX_LOOKAHEAD")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var a=(0,Sn.some)(s,function(l){return(0,Sn.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,Sn.forEach)(s,function(l){var c=new Ho.Alternative({definition:[]});o.definition.push(c),(0,Sn.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,Sn.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),r.recordingProdStack.push(c),l.ALT.call(r),r.recordingProdStack.pop()}),fy}function aY(t){return t===0?"":""+t}function hy(t){if(t<0||t>nY){var e=new Error("Invalid DSL Method idx value: <"+t+`> + `+("Idx value must be a none negative value smaller than "+(nY+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var cY=w(py=>{"use strict";Object.defineProperty(py,"__esModule",{value:!0});py.PerformanceTracer=void 0;var lY=Yt(),Cwe=Xn(),mwe=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if((0,lY.has)(e,"traceInitPerf")){var r=e.traceInitPerf,i=typeof r=="number";this.traceInitMaxIdent=i?r:Infinity,this.traceInitPerf=i?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=Cwe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,lY.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t}();py.PerformanceTracer=mwe});var uY=w(dy=>{"use strict";Object.defineProperty(dy,"__esModule",{value:!0});dy.applyMixins=void 0;function Ewe(t,e){e.forEach(function(r){var i=r.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(t.prototype,n,s):t.prototype[n]=r.prototype[n]}})})}dy.applyMixins=Ewe});var Xn=w(Er=>{"use strict";var gY=Er&&Er.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Er,"__esModule",{value:!0});Er.EmbeddedActionsParser=Er.CstParser=Er.Parser=Er.EMPTY_ALT=Er.ParserDefinitionErrorType=Er.DEFAULT_RULE_CONFIG=Er.DEFAULT_PARSER_CONFIG=Er.END_OF_FILE=void 0;var an=Yt(),Iwe=Xj(),fY=JA(),hY=Tp(),pY=BG(),ywe=nS(),wwe=DG(),Bwe=HG(),bwe=GG(),Qwe=qG(),vwe=_G(),Swe=XG(),kwe=eY(),xwe=AY(),Pwe=cY(),Dwe=uY();Er.END_OF_FILE=(0,fY.createTokenInstance)(fY.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Er.END_OF_FILE);Er.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:hY.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});Er.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var Rwe;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(Rwe=Er.ParserDefinitionErrorType||(Er.ParserDefinitionErrorType={}));function Fwe(t){return t===void 0&&(t=void 0),function(){return t}}Er.EMPTY_ALT=Fwe;var Cy=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(r),i.initLexerAdapter(),i.initLooksAhead(r),i.initRecognizerEngine(e,r),i.initRecoverable(r),i.initTreeBuilder(r),i.initContentAssist(),i.initGastRecorder(r),i.initPerformanceTracer(r),(0,an.has)(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=(0,an.has)(r,"skipValidations")?r.skipValidations:Er.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var r;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,an.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,an.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,pY.resolveGrammar)({rules:(0,an.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,an.isEmpty)(n)&&e.skipValidations===!1){var s=(0,pY.validateGrammar)({rules:(0,an.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,an.values)(e.tokensMap),errMsgProvider:hY.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,an.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,Iwe.computeAllProdsFollows)((0,an.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,an.values)(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,an.isEmpty)(e.definitionErrors))throw r=(0,an.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: + `+r.join(` +------------------------------- +`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();Er.Parser=Cy;(0,Dwe.applyMixins)(Cy,[ywe.Recoverable,wwe.LooksAhead,Bwe.TreeBuilder,bwe.LexerAdapter,vwe.RecognizerEngine,Qwe.RecognizerApi,Swe.ErrorHandler,kwe.ContentAssist,xwe.GastRecorder,Pwe.PerformanceTracer]);var Nwe=function(t){gY(e,t);function e(r,i){i===void 0&&(i=Er.DEFAULT_PARSER_CONFIG);var n=this,s=(0,an.cloneObj)(i);return s.outputCst=!0,n=t.call(this,r,s)||this,n}return e}(Cy);Er.CstParser=Nwe;var Lwe=function(t){gY(e,t);function e(r,i){i===void 0&&(i=Er.DEFAULT_PARSER_CONFIG);var n=this,s=(0,an.cloneObj)(i);return s.outputCst=!1,n=t.call(this,r,s)||this,n}return e}(Cy);Er.EmbeddedActionsParser=Lwe});var CY=w(my=>{"use strict";Object.defineProperty(my,"__esModule",{value:!0});my.createSyntaxDiagramsCode=void 0;var dY=xv();function Twe(t,e){var r=e===void 0?{}:e,i=r.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+dY.VERSION+"/diagrams/":i,s=r.css,o=s===void 0?"https://unpkg.com/chevrotain@"+dY.VERSION+"/diagrams/diagrams.css":s,a=` + + + + + +`,l=` + +`,c=` + + + + +`,u=` +
+`,g=` + +`,f=` + +`;return a+l+c+u+g+f}my.createSyntaxDiagramsCode=Twe});var IY=w(Ve=>{"use strict";Object.defineProperty(Ve,"__esModule",{value:!0});Ve.Parser=Ve.createSyntaxDiagramsCode=Ve.clearCache=Ve.GAstVisitor=Ve.serializeProduction=Ve.serializeGrammar=Ve.Terminal=Ve.Rule=Ve.RepetitionWithSeparator=Ve.RepetitionMandatoryWithSeparator=Ve.RepetitionMandatory=Ve.Repetition=Ve.Option=Ve.NonTerminal=Ve.Alternative=Ve.Alternation=Ve.defaultLexerErrorProvider=Ve.NoViableAltException=Ve.NotAllInputParsedException=Ve.MismatchedTokenException=Ve.isRecognitionException=Ve.EarlyExitException=Ve.defaultParserErrorProvider=Ve.tokenName=Ve.tokenMatcher=Ve.tokenLabel=Ve.EOF=Ve.createTokenInstance=Ve.createToken=Ve.LexerDefinitionErrorType=Ve.Lexer=Ve.EMPTY_ALT=Ve.ParserDefinitionErrorType=Ve.EmbeddedActionsParser=Ve.CstParser=Ve.VERSION=void 0;var Owe=xv();Object.defineProperty(Ve,"VERSION",{enumerable:!0,get:function(){return Owe.VERSION}});var Ey=Xn();Object.defineProperty(Ve,"CstParser",{enumerable:!0,get:function(){return Ey.CstParser}});Object.defineProperty(Ve,"EmbeddedActionsParser",{enumerable:!0,get:function(){return Ey.EmbeddedActionsParser}});Object.defineProperty(Ve,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return Ey.ParserDefinitionErrorType}});Object.defineProperty(Ve,"EMPTY_ALT",{enumerable:!0,get:function(){return Ey.EMPTY_ALT}});var mY=Dp();Object.defineProperty(Ve,"Lexer",{enumerable:!0,get:function(){return mY.Lexer}});Object.defineProperty(Ve,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return mY.LexerDefinitionErrorType}});var yg=JA();Object.defineProperty(Ve,"createToken",{enumerable:!0,get:function(){return yg.createToken}});Object.defineProperty(Ve,"createTokenInstance",{enumerable:!0,get:function(){return yg.createTokenInstance}});Object.defineProperty(Ve,"EOF",{enumerable:!0,get:function(){return yg.EOF}});Object.defineProperty(Ve,"tokenLabel",{enumerable:!0,get:function(){return yg.tokenLabel}});Object.defineProperty(Ve,"tokenMatcher",{enumerable:!0,get:function(){return yg.tokenMatcher}});Object.defineProperty(Ve,"tokenName",{enumerable:!0,get:function(){return yg.tokenName}});var Mwe=Tp();Object.defineProperty(Ve,"defaultParserErrorProvider",{enumerable:!0,get:function(){return Mwe.defaultParserErrorProvider}});var qp=mg();Object.defineProperty(Ve,"EarlyExitException",{enumerable:!0,get:function(){return qp.EarlyExitException}});Object.defineProperty(Ve,"isRecognitionException",{enumerable:!0,get:function(){return qp.isRecognitionException}});Object.defineProperty(Ve,"MismatchedTokenException",{enumerable:!0,get:function(){return qp.MismatchedTokenException}});Object.defineProperty(Ve,"NotAllInputParsedException",{enumerable:!0,get:function(){return qp.NotAllInputParsedException}});Object.defineProperty(Ve,"NoViableAltException",{enumerable:!0,get:function(){return qp.NoViableAltException}});var Uwe=Uv();Object.defineProperty(Ve,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return Uwe.defaultLexerErrorProvider}});var jo=bn();Object.defineProperty(Ve,"Alternation",{enumerable:!0,get:function(){return jo.Alternation}});Object.defineProperty(Ve,"Alternative",{enumerable:!0,get:function(){return jo.Alternative}});Object.defineProperty(Ve,"NonTerminal",{enumerable:!0,get:function(){return jo.NonTerminal}});Object.defineProperty(Ve,"Option",{enumerable:!0,get:function(){return jo.Option}});Object.defineProperty(Ve,"Repetition",{enumerable:!0,get:function(){return jo.Repetition}});Object.defineProperty(Ve,"RepetitionMandatory",{enumerable:!0,get:function(){return jo.RepetitionMandatory}});Object.defineProperty(Ve,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return jo.RepetitionMandatoryWithSeparator}});Object.defineProperty(Ve,"RepetitionWithSeparator",{enumerable:!0,get:function(){return jo.RepetitionWithSeparator}});Object.defineProperty(Ve,"Rule",{enumerable:!0,get:function(){return jo.Rule}});Object.defineProperty(Ve,"Terminal",{enumerable:!0,get:function(){return jo.Terminal}});var EY=bn();Object.defineProperty(Ve,"serializeGrammar",{enumerable:!0,get:function(){return EY.serializeGrammar}});Object.defineProperty(Ve,"serializeProduction",{enumerable:!0,get:function(){return EY.serializeProduction}});var Kwe=hg();Object.defineProperty(Ve,"GAstVisitor",{enumerable:!0,get:function(){return Kwe.GAstVisitor}});function Hwe(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. + It performs no action other than printing this message. + Please avoid using it as it will be completely removed in the future`)}Ve.clearCache=Hwe;var jwe=CY();Object.defineProperty(Ve,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return jwe.createSyntaxDiagramsCode}});var Gwe=function(){function t(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. +See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return t}();Ve.Parser=Gwe});var BY=w((Vtt,yY)=>{var Iy=IY(),Ga=Iy.createToken,wY=Iy.tokenMatcher,cS=Iy.Lexer,Ywe=Iy.EmbeddedActionsParser;yY.exports=t=>{let e=Ga({name:"LogicalOperator",pattern:cS.NA}),r=Ga({name:"Or",pattern:/\|/,categories:e}),i=Ga({name:"Xor",pattern:/\^/,categories:e}),n=Ga({name:"And",pattern:/&/,categories:e}),s=Ga({name:"Not",pattern:/!/}),o=Ga({name:"LParen",pattern:/\(/}),a=Ga({name:"RParen",pattern:/\)/}),l=Ga({name:"Query",pattern:t}),u=[Ga({name:"WhiteSpace",pattern:/\s+/,group:cS.SKIPPED}),r,i,n,o,a,s,e,l],g=new cS(u);class f extends Ywe{constructor(p){super(u);this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let y=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let Q=y,S=this.CONSUME(e),x=this.SUBRULE2(this.atomicExpression);wY(S,r)?y=M=>Q(M)||x(M):wY(S,i)?y=M=>!!(Q(M)^x(M)):y=M=>Q(M)&&x(M)}),y}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:m}=this.CONSUME(l);return y=>y(m)}},{ALT:()=>{this.CONSUME(s);let m=this.SUBRULE(this.atomicExpression);return y=>!m(y)}}])),this.RULE("parenthesisExpression",()=>{let m;return this.CONSUME(o),m=this.SUBRULE(this.expression),this.CONSUME(a),m}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var bY=w(yy=>{var qwe=BY();yy.makeParser=(t=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:r}=qwe(t),i=new r;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};yy.parse=yy.makeParser()});var vY=w((Ztt,QY)=>{"use strict";QY.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var uS=w(($tt,SY)=>{var Jp=vY(),kY={};for(let t of Object.keys(Jp))kY[Jp[t]]=t;var at={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};SY.exports=at;for(let t of Object.keys(at)){if(!("channels"in at[t]))throw new Error("missing channels property: "+t);if(!("labels"in at[t]))throw new Error("missing channel labels property: "+t);if(at[t].labels.length!==at[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=at[t];delete at[t].channels,delete at[t].labels,Object.defineProperty(at[t],"channels",{value:e}),Object.defineProperty(at[t],"labels",{value:r})}at.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(e,r,i),s=Math.max(e,r,i),o=s-n,a,l;s===n?a=0:e===s?a=(r-i)/o:r===s?a=2+(i-e)/o:i===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+s)/2;return s===n?l=0:c<=.5?l=o/(s+n):l=o/(2-s-n),[a,l*100,c*100]};at.rgb.hsv=function(t){let e,r,i,n,s,o=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),g=function(f){return(c-f)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,e=g(o),r=g(a),i=g(l),o===c?n=i-r:a===c?n=1/3+e-i:l===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};at.rgb.hwb=function(t){let e=t[0],r=t[1],i=t[2],n=at.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,i));return i=1-1/255*Math.max(e,Math.max(r,i)),[n,s*100,i*100]};at.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(1-e,1-r,1-i),s=(1-e-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,a=(1-i-n)/(1-n)||0;return[s*100,o*100,a*100,n*100]};function Jwe(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}at.rgb.keyword=function(t){let e=kY[t];if(e)return e;let r=Infinity,i;for(let n of Object.keys(Jp)){let s=Jp[n],o=Jwe(t,s);o.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=e*.4124+r*.3576+i*.1805,s=e*.2126+r*.7152+i*.0722,o=e*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};at.rgb.lab=function(t){let e=at.rgb.xyz(t),r=e[0],i=e[1],n=e[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),a=200*(i-n);return[s,o,a]};at.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let a=2*i-n,l=[0,0,0];for(let c=0;c<3;c++)s=e+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=a+(n-a)*6*s:2*s<1?o=n:3*s<2?o=a+(n-a)*(2/3-s)*6:o=a,l[c]=o*255;return l};at.hsl.hsv=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,a=i===0?2*n/(s+n):2*r/(i+r);return[e,a*100,o*100]};at.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-r),a=255*i*(1-r*s),l=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,l,o];case 1:return[a,i,o];case 2:return[o,i,l];case 3:return[o,a,i];case 4:return[l,o,i];case 5:return[i,o,a]}};at.hsv.hsl=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let a=(2-r)*n;return s=r*n,s/=a<=1?a:2-a,s=s||0,o/=2,[e,s*100,o*100]};at.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*e),a=1-i;s=6*e-o,(o&1)!=0&&(s=1-s);let l=r+s*(a-r),c,u,g;switch(o){default:case 6:case 0:c=a,u=l,g=r;break;case 1:c=l,u=a,g=r;break;case 2:c=r,u=a,g=l;break;case 3:c=r,u=l,g=a;break;case 4:c=l,u=r,g=a;break;case 5:c=a,u=r,g=l;break}return[c*255,u*255,g*255]};at.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n=t[3]/100,s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,a*255]};at.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n,s,o;return n=e*3.2406+r*-1.5372+i*-.4986,s=e*-.9689+r*1.8758+i*.0415,o=e*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};at.xyz.lab=function(t){let e=t[0],r=t[1],i=t[2];e/=95.047,r/=100,i/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(e-r),o=200*(r-i);return[n,s,o]};at.lab.xyz=function(t){let e=t[0],r=t[1],i=t[2],n,s,o;s=(e+16)/116,n=r/500+s,o=s-i/200;let a=s**3,l=n**3,c=o**3;return s=a>.008856?a:(s-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};at.lab.lch=function(t){let e=t[0],r=t[1],i=t[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[e,o,n]};at.lch.lab=function(t){let e=t[0],r=t[1],n=t[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[e,s,o]};at.rgb.ansi16=function(t,e=null){let[r,i,n]=t,s=e===null?at.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};at.hsv.ansi16=function(t){return at.rgb.ansi16(at.hsv.rgb(t),t[2])};at.rgb.ansi256=function(t){let e=t[0],r=t[1],i=t[2];return e===r&&r===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};at.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,i=(e&1)*r*255,n=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[i,n,s]};at.ansi256.rgb=function(t){if(t>=232){let s=(t-232)*10+8;return[s,s,s]}t-=16;let e,r=Math.floor(t/36)/5*255,i=Math.floor((e=t%36)/6)/5*255,n=e%6/5*255;return[r,i,n]};at.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};at.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(a=>a+a).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};at.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.max(Math.max(e,r),i),s=Math.min(Math.min(e,r),i),o=n-s,a,l;return o<1?a=s/(1-o):a=0,o<=0?l=0:n===e?l=(r-i)/o%6:n===r?l=2+(i-e)/o:l=4+(e-r)/o,l/=6,l%=1,[l*360,o*100,a*100]};at.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=r<.5?2*e*r:2*e*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[t[0],i*100,n*100]};at.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=e*r,n=0;return i<1&&(n=(r-i)/(1-i)),[t[0],i*100,n*100]};at.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=e%1*6,o=s%1,a=1-o,l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-r)*i,[(r*n[0]+l)*255,(r*n[1]+l)*255,(r*n[2]+l)*255]};at.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e),n=0;return i>0&&(n=e/i),[t[0],n*100,i*100]};at.hcg.hsl=function(t){let e=t[1]/100,i=t[2]/100*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[t[0],n*100,i*100]};at.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e);return[t[0],(i-e)*100,(1-i)*100]};at.hwb.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=1-r,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[t[0],n*100,s*100]};at.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};at.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};at.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};at.gray.hsl=function(t){return[0,0,t[0]]};at.gray.hsv=at.gray.hsl;at.gray.hwb=function(t){return[0,100,t[0]]};at.gray.cmyk=function(t){return[0,0,0,t[0]]};at.gray.lab=function(t){return[t[0],0,0]};at.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,i=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(i.length)+i};at.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var PY=w((ert,xY)=>{var wy=uS();function Wwe(){let t={},e=Object.keys(wy);for(let r=e.length,i=0;i{var gS=uS(),Xwe=PY(),wg={},Zwe=Object.keys(gS);function $we(t){let e=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function eBe(t){let e=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=t(r);if(typeof n=="object")for(let s=n.length,o=0;o{wg[t]={},Object.defineProperty(wg[t],"channels",{value:gS[t].channels}),Object.defineProperty(wg[t],"labels",{value:gS[t].labels});let e=Xwe(t);Object.keys(e).forEach(i=>{let n=e[i];wg[t][i]=eBe(n),wg[t][i].raw=$we(n)})});DY.exports=wg});var MY=w((rrt,FY)=>{"use strict";var NY=(t,e)=>(...r)=>`[${t(...r)+e}m`,LY=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};5;${i}m`},TY=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};2;${i[0]};${i[1]};${i[2]}m`},By=t=>t,OY=(t,e,r)=>[t,e,r],Bg=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let i=r();return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},fS,bg=(t,e,r,i)=>{fS===void 0&&(fS=RY());let n=i?10:0,s={};for(let[o,a]of Object.entries(fS)){let l=o==="ansi16"?"ansi":o;o===e?s[l]=t(r,n):typeof a=="object"&&(s[l]=t(a[e],n))}return s};function tBe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,i]of Object.entries(e)){for(let[n,s]of Object.entries(i))e[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=e[n],t.set(s[0],s[1]);Object.defineProperty(e,r,{value:i,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="",e.bgColor.close="",Bg(e.color,"ansi",()=>bg(NY,"ansi16",By,!1)),Bg(e.color,"ansi256",()=>bg(LY,"ansi256",By,!1)),Bg(e.color,"ansi16m",()=>bg(TY,"rgb",OY,!1)),Bg(e.bgColor,"ansi",()=>bg(NY,"ansi16",By,!0)),Bg(e.bgColor,"ansi256",()=>bg(LY,"ansi256",By,!0)),Bg(e.bgColor,"ansi16m",()=>bg(TY,"rgb",OY,!0)),e}Object.defineProperty(FY,"exports",{enumerable:!0,get:tBe})});var KY=w((irt,UY)=>{"use strict";UY.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var rBe=require("os"),jY=require("tty"),ks=KY(),{env:ui}=process,VA;ks("no-color")||ks("no-colors")||ks("color=false")||ks("color=never")?VA=0:(ks("color")||ks("colors")||ks("color=true")||ks("color=always"))&&(VA=1);"FORCE_COLOR"in ui&&(ui.FORCE_COLOR==="true"?VA=1:ui.FORCE_COLOR==="false"?VA=0:VA=ui.FORCE_COLOR.length===0?1:Math.min(parseInt(ui.FORCE_COLOR,10),3));function hS(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function pS(t,e){if(VA===0)return 0;if(ks("color=16m")||ks("color=full")||ks("color=truecolor"))return 3;if(ks("color=256"))return 2;if(t&&!e&&VA===void 0)return 0;let r=VA||0;if(ui.TERM==="dumb")return r;if(process.platform==="win32"){let i=rBe.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in ui)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(i=>i in ui)||ui.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in ui)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ui.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in ui)return 1;if(ui.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in ui){let i=parseInt((ui.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ui.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ui.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ui.TERM)||"COLORTERM"in ui?1:r}function iBe(t){let e=pS(t,t&&t.isTTY);return hS(e)}HY.exports={supportsColor:iBe,stdout:hS(pS(!0,jY.isatty(1))),stderr:hS(pS(!0,jY.isatty(2)))}});var qY=w((srt,YY)=>{"use strict";var nBe=(t,e,r)=>{let i=t.indexOf(e);if(i===-1)return t;let n=e.length,s=0,o="";do o+=t.substr(s,i-s)+e+r,s=i+n,i=t.indexOf(e,s);while(i!==-1);return o+=t.substr(s),o},sBe=(t,e,r,i)=>{let n=0,s="";do{let o=t[i-1]==="\r";s+=t.substr(n,(o?i-1:i)-n)+e+(o?`\r +`:` +`)+r,n=i+1,i=t.indexOf(` +`,n)}while(i!==-1);return s+=t.substr(n),s};YY.exports={stringReplaceAll:nBe,stringEncaseCRLFWithFirstIndex:sBe}});var VY=w((ort,JY)=>{"use strict";var oBe=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,WY=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,aBe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,ABe=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,lBe=new Map([["n",` +`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function zY(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):lBe.get(t)||t}function cBe(t,e){let r=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(aBe))r.push(n[2].replace(ABe,(a,l,c)=>l?zY(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`)}return r}function uBe(t){WY.lastIndex=0;let e=[],r;for(;(r=WY.exec(t))!==null;){let i=r[1];if(r[2]){let n=cBe(i,r[2]);e.push([i].concat(n))}else e.push([i])}return e}function _Y(t,e){let r={};for(let n of e)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=t;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}JY.exports=(t,e)=>{let r=[],i=[],n=[];if(e.replace(oBe,(s,o,a,l,c,u)=>{if(o)n.push(zY(o));else if(l){let g=n.join("");n=[],i.push(r.length===0?g:_Y(t,r)(g)),r.push({inverse:a,styles:uBe(l)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(_Y(t,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var IS=w((art,XY)=>{"use strict";var Wp=MY(),{stdout:dS,stderr:CS}=GY(),{stringReplaceAll:gBe,stringEncaseCRLFWithFirstIndex:fBe}=qY(),ZY=["ansi","ansi","ansi256","ansi16m"],Qg=Object.create(null),hBe=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=dS?dS.level:0;t.level=e.level===void 0?r:e.level},$Y=class{constructor(e){return eq(e)}},eq=t=>{let e={};return hBe(e,t),e.template=(...r)=>pBe(e.template,...r),Object.setPrototypeOf(e,by.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=$Y,e.template};function by(t){return eq(t)}for(let[t,e]of Object.entries(Wp))Qg[t]={get(){let r=Qy(this,mS(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};Qg.visible={get(){let t=Qy(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var tq=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of tq)Qg[t]={get(){let{level:e}=this;return function(...r){let i=mS(Wp.color[ZY[e]][t](...r),Wp.color.close,this._styler);return Qy(this,i,this._isEmpty)}}};for(let t of tq){let e="bg"+t[0].toUpperCase()+t.slice(1);Qg[e]={get(){let{level:r}=this;return function(...i){let n=mS(Wp.bgColor[ZY[r]][t](...i),Wp.bgColor.close,this._styler);return Qy(this,n,this._isEmpty)}}}}var dBe=Object.defineProperties(()=>{},te(N({},Qg),{level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}})),mS=(t,e,r)=>{let i,n;return r===void 0?(i=t,n=e):(i=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:i,closeAll:n,parent:r}},Qy=(t,e,r)=>{let i=(...n)=>CBe(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=dBe,i._generator=t,i._styler=e,i._isEmpty=r,i},CBe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:i,closeAll:n}=r;if(e.indexOf("")!==-1)for(;r!==void 0;)e=gBe(e,r.close,r.open),r=r.parent;let s=e.indexOf(` +`);return s!==-1&&(e=fBe(e,n,i,s)),i+e+n},ES,pBe=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let i=e.slice(1),n=[r.raw[0]];for(let s=1;s{"use strict";xs.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;xs.find=(t,e)=>t.nodes.find(r=>r.type===e);xs.exceedsLimit=(t,e,r=1,i)=>i===!1||!xs.isInteger(t)||!xs.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=i;xs.escapeNode=(t,e=0,r)=>{let i=t.nodes[e];!i||(r&&i.type===r||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};xs.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0==0?(t.invalid=!0,!0):!1;xs.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0==0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;xs.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;xs.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);xs.flatten=(...t)=>{let e=[],r=i=>{for(let n=0;n{"use strict";var iq=vy();rq.exports=(t,e={})=>{let r=(i,n={})=>{let s=e.escapeInvalid&&iq.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&iq.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=r(l);return a};return r(t)}});var sq=w((crt,nq)=>{"use strict";nq.exports=function(t){return typeof t=="number"?t-t==0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var hq=w((urt,oq)=>{"use strict";var aq=sq(),vc=(t,e,r)=>{if(aq(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(aq(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i=N({relaxZeros:!0},r);typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=t+":"+e+"="+n+s+o+a;if(vc.cache.hasOwnProperty(l))return vc.cache[l].result;let c=Math.min(t,e),u=Math.max(t,e);if(Math.abs(c-u)===1){let m=t+"|"+e;return i.capture?`(${m})`:i.wrap===!1?m:`(?:${m})`}let g=lq(t)||lq(e),f={min:t,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let m=u<0?Math.abs(u):1;p=Aq(m,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=Aq(c,u,f,i)),f.negatives=p,f.positives=h,f.result=mBe(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),vc.cache[l]=f,f.result};function mBe(t,e,r){let i=yS(t,e,"-",!1,r)||[],n=yS(e,t,"",!1,r)||[],s=yS(t,e,"-?",!0,r)||[];return i.concat(s).concat(n).join("|")}function IBe(t,e){let r=1,i=1,n=cq(t,r),s=new Set([e]);for(;t<=n&&n<=e;)s.add(n),r+=1,n=cq(t,r);for(n=uq(e+1,i)-1;t1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+gq(a.count),o=c+1;continue}r.isPadded&&(g=bBe(c,r,i)),u.string=g+u.pattern+gq(u.count),s.push(u),o=c+1,a=u}return s}function yS(t,e,r,i,n){let s=[];for(let o of t){let{string:a}=o;!i&&!fq(e,"string",a)&&s.push(r+a),i&&fq(e,"string",a)&&s.push(r+a)}return s}function yBe(t,e){let r=[];for(let i=0;ie?1:e>t?-1:0}function fq(t,e,r){return t.some(i=>i[e]===r)}function cq(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function uq(t,e){return t-t%Math.pow(10,e)}function gq(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function wBe(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function lq(t){return/^-?(0+)\d/.test(t)}function bBe(t,e,r){if(!e.isPadded)return t;let i=Math.abs(e.maxLen-String(t).length),n=r.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}vc.cache={};vc.clearCache=()=>vc.cache={};oq.exports=vc});var bS=w((grt,pq)=>{"use strict";var QBe=require("util"),dq=hq(),Cq=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),vBe=t=>e=>t===!0?Number(e):String(e),wS=t=>typeof t=="number"||typeof t=="string"&&t!=="",_p=t=>Number.isInteger(+t),BS=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},SBe=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,kBe=(t,e,r)=>{if(e>0){let i=t[0]==="-"?"-":"";i&&(t=t.slice(1)),t=i+t.padStart(i?e-1:e,"0")}return r===!1?String(t):t},mq=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((o,a)=>oa?1:0),t.positives.sort((o,a)=>oa?1:0);let r=e.capture?"":"?:",i="",n="",s;return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(n=`-(${r}${t.negatives.join("|")})`),i&&n?s=`${i}|${n}`:s=i||n,e.wrap?`(${r}${s})`:s},Eq=(t,e,r,i)=>{if(r)return dq(t,e,N({wrap:!1},i));let n=String.fromCharCode(t);if(t===e)return n;let s=String.fromCharCode(e);return`[${n}-${s}]`},Iq=(t,e,r)=>{if(Array.isArray(t)){let i=r.wrap===!0,n=r.capture?"":"?:";return i?`(${n}${t.join("|")})`:t.join("|")}return dq(t,e,r)},yq=(...t)=>new RangeError("Invalid range arguments: "+QBe.inspect(...t)),wq=(t,e,r)=>{if(r.strictRanges===!0)throw yq([t,e]);return[]},PBe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},DBe=(t,e,r=1,i={})=>{let n=Number(t),s=Number(e);if(!Number.isInteger(n)||!Number.isInteger(s)){if(i.strictRanges===!0)throw yq([t,e]);return[]}n===0&&(n=0),s===0&&(s=0);let o=n>s,a=String(t),l=String(e),c=String(r);r=Math.max(Math.abs(r),1);let u=BS(a)||BS(l)||BS(c),g=u?Math.max(a.length,l.length,c.length):0,f=u===!1&&SBe(t,e,i)===!1,h=i.transform||vBe(f);if(i.toRegex&&r===1)return Eq(mq(t,g),mq(e,g),!0,i);let p={negatives:[],positives:[]},m=S=>p[S<0?"negatives":"positives"].push(Math.abs(S)),y=[],Q=0;for(;o?n>=s:n<=s;)i.toRegex===!0&&r>1?m(n):y.push(kBe(h(n,Q),g,f)),n=o?n-r:n+r,Q++;return i.toRegex===!0?r>1?xBe(p,i):Iq(y,null,N({wrap:!1},i)):y},RBe=(t,e,r=1,i={})=>{if(!_p(t)&&t.length>1||!_p(e)&&e.length>1)return wq(t,e,i);let n=i.transform||(f=>String.fromCharCode(f)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(i.toRegex&&r===1)return Eq(l,c,!1,i);let u=[],g=0;for(;a?s>=o:s<=o;)u.push(n(s,g)),s=a?s-r:s+r,g++;return i.toRegex===!0?Iq(u,null,{wrap:!1,options:i}):u},ky=(t,e,r,i={})=>{if(e==null&&wS(t))return[t];if(!wS(t)||!wS(e))return wq(t,e,i);if(typeof r=="function")return ky(t,e,1,{transform:r});if(Cq(r))return ky(t,e,0,r);let n=N({},i);return n.capture===!0&&(n.wrap=!0),r=r||n.step||1,_p(r)?_p(t)&&_p(e)?DBe(t,e,r,n):RBe(t,e,Math.max(Math.abs(r),1),n):r!=null&&!Cq(r)?PBe(r,n):ky(t,e,1,r)};pq.exports=ky});var Qq=w((frt,Bq)=>{"use strict";var FBe=bS(),bq=vy(),NBe=(t,e={})=>{let r=(i,n={})=>{let s=bq.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(i.isOpen===!0||i.isClose===!0)return l+i.value;if(i.type==="open")return a?l+i.value:"(";if(i.type==="close")return a?l+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":a?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let u=bq.reduce(i.nodes),g=FBe(...u,te(N({},e),{wrap:!1,toRegex:!0}));if(g.length!==0)return u.length>1&&g.length>1?`(${g})`:g}if(i.nodes)for(let u of i.nodes)c+=r(u,i);return c};return r(t)};Bq.exports=NBe});var kq=w((hrt,vq)=>{"use strict";var LBe=bS(),Sq=Sy(),vg=vy(),Sc=(t="",e="",r=!1)=>{let i=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?vg.flatten(e).map(n=>`{${n}}`):e;for(let n of t)if(Array.isArray(n))for(let s of n)i.push(Sc(s,e,r));else for(let s of e)r===!0&&typeof s=="string"&&(s=`{${s}}`),i.push(Array.isArray(s)?Sc(n,s,r):n+s);return vg.flatten(i)},TBe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(n,s={})=>{n.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(n.invalid||n.dollar){a.push(Sc(a.pop(),Sq(n,e)));return}if(n.type==="brace"&&n.invalid!==!0&&n.nodes.length===2){a.push(Sc(a.pop(),["{}"]));return}if(n.nodes&&n.ranges>0){let g=vg.reduce(n.nodes);if(vg.exceedsLimit(...g,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=LBe(...g,e);f.length===0&&(f=Sq(n,e)),a.push(Sc(a.pop(),f)),n.nodes=[];return}let l=vg.encloseBrace(n),c=n.queue,u=n;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let g=0;g{"use strict";xq.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` +`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var Lq=w((drt,Dq)=>{"use strict";var OBe=Sy(),{MAX_LENGTH:Rq,CHAR_BACKSLASH:QS,CHAR_BACKTICK:MBe,CHAR_COMMA:UBe,CHAR_DOT:KBe,CHAR_LEFT_PARENTHESES:HBe,CHAR_RIGHT_PARENTHESES:jBe,CHAR_LEFT_CURLY_BRACE:GBe,CHAR_RIGHT_CURLY_BRACE:YBe,CHAR_LEFT_SQUARE_BRACKET:Fq,CHAR_RIGHT_SQUARE_BRACKET:Nq,CHAR_DOUBLE_QUOTE:qBe,CHAR_SINGLE_QUOTE:JBe,CHAR_NO_BREAK_SPACE:WBe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:zBe}=Pq(),_Be=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},i=typeof r.maxLength=="number"?Math.min(Rq,r.maxLength):Rq;if(t.length>i)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${i})`);let n={type:"root",input:t,nodes:[]},s=[n],o=n,a=n,l=0,c=t.length,u=0,g=0,f,h={},p=()=>t[u++],m=y=>{if(y.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&y.type==="text"){a.value+=y.value;return}return o.nodes.push(y),y.parent=o,y.prev=a,a=y,y};for(m({type:"bos"});u0){if(o.ranges>0){o.ranges=0;let y=o.nodes.shift();o.nodes=[y,{type:"text",value:OBe(o)}]}m({type:"comma",value:f}),o.commas++;continue}if(f===KBe&&g>0&&o.commas===0){let y=o.nodes;if(g===0||y.length===0){m({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){y.pop();let Q=y[y.length-1];Q.value+=a.value+f,a=Q,o.ranges--;continue}m({type:"dot",value:f});continue}m({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(S=>{S.nodes||(S.type==="open"&&(S.isOpen=!0),S.type==="close"&&(S.isClose=!0),S.nodes||(S.type="text"),S.invalid=!0)});let y=s[s.length-1],Q=y.nodes.indexOf(o);y.nodes.splice(Q,1,...o.nodes)}while(s.length>0);return m({type:"eos"}),n};Dq.exports=_Be});var Mq=w((Crt,Tq)=>{"use strict";var Oq=Sy(),VBe=Qq(),XBe=kq(),ZBe=Lq(),$n=(t,e={})=>{let r=[];if(Array.isArray(t))for(let i of t){let n=$n.create(i,e);Array.isArray(n)?r.push(...n):r.push(n)}else r=[].concat($n.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};$n.parse=(t,e={})=>ZBe(t,e);$n.stringify=(t,e={})=>typeof t=="string"?Oq($n.parse(t,e),e):Oq(t,e);$n.compile=(t,e={})=>(typeof t=="string"&&(t=$n.parse(t,e)),VBe(t,e));$n.expand=(t,e={})=>{typeof t=="string"&&(t=$n.parse(t,e));let r=XBe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};$n.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?$n.compile(t,e):$n.expand(t,e);Tq.exports=$n});var Vp=w((mrt,Uq)=>{"use strict";var $Be=require("path"),Go="\\\\/",Kq=`[^${Go}]`,Ya="\\.",e0e="\\+",t0e="\\?",xy="\\/",r0e="(?=.)",Hq="[^/]",vS=`(?:${xy}|$)`,jq=`(?:^|${xy})`,SS=`${Ya}{1,2}${vS}`,i0e=`(?!${Ya})`,n0e=`(?!${jq}${SS})`,s0e=`(?!${Ya}{0,1}${vS})`,o0e=`(?!${SS})`,a0e=`[^.${xy}]`,A0e=`${Hq}*?`,Gq={DOT_LITERAL:Ya,PLUS_LITERAL:e0e,QMARK_LITERAL:t0e,SLASH_LITERAL:xy,ONE_CHAR:r0e,QMARK:Hq,END_ANCHOR:vS,DOTS_SLASH:SS,NO_DOT:i0e,NO_DOTS:n0e,NO_DOT_SLASH:s0e,NO_DOTS_SLASH:o0e,QMARK_NO_DOT:a0e,STAR:A0e,START_ANCHOR:jq},l0e=te(N({},Gq),{SLASH_LITERAL:`[${Go}]`,QMARK:Kq,STAR:`${Kq}*?`,DOTS_SLASH:`${Ya}{1,2}(?:[${Go}]|$)`,NO_DOT:`(?!${Ya})`,NO_DOTS:`(?!(?:^|[${Go}])${Ya}{1,2}(?:[${Go}]|$))`,NO_DOT_SLASH:`(?!${Ya}{0,1}(?:[${Go}]|$))`,NO_DOTS_SLASH:`(?!${Ya}{1,2}(?:[${Go}]|$))`,QMARK_NO_DOT:`[^.${Go}]`,START_ANCHOR:`(?:^|[${Go}])`,END_ANCHOR:`(?:[${Go}]|$)`}),c0e={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};Uq.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:c0e,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:$Be.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?l0e:Gq}}});var Xp=w(kn=>{"use strict";var u0e=require("path"),g0e=process.platform==="win32",{REGEX_BACKSLASH:f0e,REGEX_REMOVE_BACKSLASH:h0e,REGEX_SPECIAL_CHARS:p0e,REGEX_SPECIAL_CHARS_GLOBAL:d0e}=Vp();kn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);kn.hasRegexChars=t=>p0e.test(t);kn.isRegexChar=t=>t.length===1&&kn.hasRegexChars(t);kn.escapeRegex=t=>t.replace(d0e,"\\$1");kn.toPosixSlashes=t=>t.replace(f0e,"/");kn.removeBackslashes=t=>t.replace(h0e,e=>e==="\\"?"":e);kn.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};kn.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:g0e===!0||u0e.sep==="\\";kn.escapeLast=(t,e,r)=>{let i=t.lastIndexOf(e,r);return i===-1?t:t[i-1]==="\\"?kn.escapeLast(t,e,i-1):`${t.slice(0,i)}\\${t.slice(i)}`};kn.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};kn.wrapOutput=(t,e={},r={})=>{let i=r.contains?"":"^",n=r.contains?"":"$",s=`${i}(?:${t})${n}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var Xq=w((Irt,Yq)=>{"use strict";var qq=Xp(),{CHAR_ASTERISK:kS,CHAR_AT:C0e,CHAR_BACKWARD_SLASH:Zp,CHAR_COMMA:m0e,CHAR_DOT:xS,CHAR_EXCLAMATION_MARK:PS,CHAR_FORWARD_SLASH:Jq,CHAR_LEFT_CURLY_BRACE:DS,CHAR_LEFT_PARENTHESES:RS,CHAR_LEFT_SQUARE_BRACKET:E0e,CHAR_PLUS:I0e,CHAR_QUESTION_MARK:Wq,CHAR_RIGHT_CURLY_BRACE:y0e,CHAR_RIGHT_PARENTHESES:zq,CHAR_RIGHT_SQUARE_BRACKET:w0e}=Vp(),_q=t=>t===Jq||t===Zp,Vq=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?Infinity:1)},B0e=(t,e)=>{let r=e||{},i=t.length-1,n=r.parts===!0||r.scanToEnd===!0,s=[],o=[],a=[],l=t,c=-1,u=0,g=0,f=!1,h=!1,p=!1,m=!1,y=!1,Q=!1,S=!1,x=!1,M=!1,Y=!1,U=0,J,W,ee={value:"",depth:0,isGlob:!1},Z=()=>c>=i,A=()=>l.charCodeAt(c+1),ne=()=>(J=W,l.charCodeAt(++c));for(;c0&&(Ae=l.slice(0,u),l=l.slice(u),g-=u),le&&p===!0&&g>0?(le=l.slice(0,g),T=l.slice(g)):p===!0?(le="",T=l):le=l,le&&le!==""&&le!=="/"&&le!==l&&_q(le.charCodeAt(le.length-1))&&(le=le.slice(0,-1)),r.unescape===!0&&(T&&(T=qq.removeBackslashes(T)),le&&S===!0&&(le=qq.removeBackslashes(le)));let L={prefix:Ae,input:t,start:u,base:le,glob:T,isBrace:f,isBracket:h,isGlob:p,isExtglob:m,isGlobstar:y,negated:x,negatedExtglob:M};if(r.tokens===!0&&(L.maxDepth=0,_q(W)||o.push(ee),L.tokens=o),r.parts===!0||r.tokens===!0){let Ee;for(let we=0;we{"use strict";var Py=Vp(),es=Xp(),{MAX_LENGTH:Dy,POSIX_REGEX_SOURCE:b0e,REGEX_NON_SPECIAL_CHARS:Q0e,REGEX_SPECIAL_CHARS_BACKREF:v0e,REPLACEMENTS:$q}=Py,S0e=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch(i){return t.map(n=>es.escapeRegex(n)).join("..")}return r},Sg=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,eJ=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=$q[t]||t;let r=N({},e),i=typeof r.maxLength=="number"?Math.min(Dy,r.maxLength):Dy,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);let s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",l=es.isWindows(e),c=Py.globChars(l),u=Py.extglobChars(c),{DOT_LITERAL:g,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:p,DOTS_SLASH:m,NO_DOT:y,NO_DOT_SLASH:Q,NO_DOTS_SLASH:S,QMARK:x,QMARK_NO_DOT:M,STAR:Y,START_ANCHOR:U}=c,J=X=>`(${a}(?:(?!${U}${X.dot?m:g}).)*?)`,W=r.dot?"":y,ee=r.dot?x:M,Z=r.bash===!0?J(r):Y;r.capture&&(Z=`(${Z})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=es.removePrefix(t,A),n=t.length;let ne=[],le=[],Ae=[],T=s,L,Ee=()=>A.index===n-1,we=A.peek=(X=1)=>t[A.index+X],qe=A.advance=()=>t[++A.index]||"",re=()=>t.slice(A.index+1),se=(X="",be=0)=>{A.consumed+=X,A.index+=be},Qe=X=>{A.output+=X.output!=null?X.output:X.value,se(X.value)},he=()=>{let X=1;for(;we()==="!"&&(we(2)!=="("||we(3)==="?");)qe(),A.start++,X++;return X%2==0?!1:(A.negated=!0,A.start++,!0)},Fe=X=>{A[X]++,Ae.push(X)},Ue=X=>{A[X]--,Ae.pop()},xe=X=>{if(T.type==="globstar"){let be=A.braces>0&&(X.type==="comma"||X.type==="brace"),ce=X.extglob===!0||ne.length&&(X.type==="pipe"||X.type==="paren");X.type!=="slash"&&X.type!=="paren"&&!be&&!ce&&(A.output=A.output.slice(0,-T.output.length),T.type="star",T.value="*",T.output=Z,A.output+=T.output)}if(ne.length&&X.type!=="paren"&&(ne[ne.length-1].inner+=X.value),(X.value||X.output)&&Qe(X),T&&T.type==="text"&&X.type==="text"){T.value+=X.value,T.output=(T.output||"")+X.value;return}X.prev=T,o.push(X),T=X},ve=(X,be)=>{let ce=te(N({},u[be]),{conditions:1,inner:""});ce.prev=T,ce.parens=A.parens,ce.output=A.output;let fe=(r.capture?"(":"")+ce.open;Fe("parens"),xe({type:X,value:be,output:A.output?"":p}),xe({type:"paren",extglob:!0,value:qe(),output:fe}),ne.push(ce)},pe=X=>{let be=X.close+(r.capture?")":""),ce;if(X.type==="negate"){let fe=Z;X.inner&&X.inner.length>1&&X.inner.includes("/")&&(fe=J(r)),(fe!==Z||Ee()||/^\)+$/.test(re()))&&(be=X.close=`)$))${fe}`),X.inner.includes("*")&&(ce=re())&&/^\.[^\\/.]+$/.test(ce)&&(be=X.close=`)${ce})${fe})`),X.prev.type==="bos"&&(A.negatedExtglob=!0)}xe({type:"paren",extglob:!0,value:L,output:be}),Ue("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let X=!1,be=t.replace(v0e,(ce,fe,gt,Ht,Mt,mi)=>Ht==="\\"?(X=!0,ce):Ht==="?"?fe?fe+Ht+(Mt?x.repeat(Mt.length):""):mi===0?ee+(Mt?x.repeat(Mt.length):""):x.repeat(gt.length):Ht==="."?g.repeat(gt.length):Ht==="*"?fe?fe+Ht+(Mt?Z:""):Z:fe?ce:`\\${ce}`);return X===!0&&(r.unescape===!0?be=be.replace(/\\/g,""):be=be.replace(/\\+/g,ce=>ce.length%2==0?"\\\\":ce?"\\":"")),be===t&&r.contains===!0?(A.output=t,A):(A.output=es.wrapOutput(be,A,e),A)}for(;!Ee();){if(L=qe(),L==="\0")continue;if(L==="\\"){let ce=we();if(ce==="/"&&r.bash!==!0||ce==="."||ce===";")continue;if(!ce){L+="\\",xe({type:"text",value:L});continue}let fe=/^\\+/.exec(re()),gt=0;if(fe&&fe[0].length>2&&(gt=fe[0].length,A.index+=gt,gt%2!=0&&(L+="\\")),r.unescape===!0?L=qe():L+=qe(),A.brackets===0){xe({type:"text",value:L});continue}}if(A.brackets>0&&(L!=="]"||T.value==="["||T.value==="[^")){if(r.posix!==!1&&L===":"){let ce=T.value.slice(1);if(ce.includes("[")&&(T.posix=!0,ce.includes(":"))){let fe=T.value.lastIndexOf("["),gt=T.value.slice(0,fe),Ht=T.value.slice(fe+2),Mt=b0e[Ht];if(Mt){T.value=gt+Mt,A.backtrack=!0,qe(),!s.output&&o.indexOf(T)===1&&(s.output=p);continue}}}(L==="["&&we()!==":"||L==="-"&&we()==="]")&&(L=`\\${L}`),L==="]"&&(T.value==="["||T.value==="[^")&&(L=`\\${L}`),r.posix===!0&&L==="!"&&T.value==="["&&(L="^"),T.value+=L,Qe({value:L});continue}if(A.quotes===1&&L!=='"'){L=es.escapeRegex(L),T.value+=L,Qe({value:L});continue}if(L==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&xe({type:"text",value:L});continue}if(L==="("){Fe("parens"),xe({type:"paren",value:L});continue}if(L===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Sg("opening","("));let ce=ne[ne.length-1];if(ce&&A.parens===ce.parens+1){pe(ne.pop());continue}xe({type:"paren",value:L,output:A.parens?")":"\\)"}),Ue("parens");continue}if(L==="["){if(r.nobracket===!0||!re().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Sg("closing","]"));L=`\\${L}`}else Fe("brackets");xe({type:"bracket",value:L});continue}if(L==="]"){if(r.nobracket===!0||T&&T.type==="bracket"&&T.value.length===1){xe({type:"text",value:L,output:`\\${L}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Sg("opening","["));xe({type:"text",value:L,output:`\\${L}`});continue}Ue("brackets");let ce=T.value.slice(1);if(T.posix!==!0&&ce[0]==="^"&&!ce.includes("/")&&(L=`/${L}`),T.value+=L,Qe({value:L}),r.literalBrackets===!1||es.hasRegexChars(ce))continue;let fe=es.escapeRegex(T.value);if(A.output=A.output.slice(0,-T.value.length),r.literalBrackets===!0){A.output+=fe,T.value=fe;continue}T.value=`(${a}${fe}|${T.value})`,A.output+=T.value;continue}if(L==="{"&&r.nobrace!==!0){Fe("braces");let ce={type:"brace",value:L,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};le.push(ce),xe(ce);continue}if(L==="}"){let ce=le[le.length-1];if(r.nobrace===!0||!ce){xe({type:"text",value:L,output:L});continue}let fe=")";if(ce.dots===!0){let gt=o.slice(),Ht=[];for(let Mt=gt.length-1;Mt>=0&&(o.pop(),gt[Mt].type!=="brace");Mt--)gt[Mt].type!=="dots"&&Ht.unshift(gt[Mt].value);fe=S0e(Ht,r),A.backtrack=!0}if(ce.comma!==!0&&ce.dots!==!0){let gt=A.output.slice(0,ce.outputIndex),Ht=A.tokens.slice(ce.tokensIndex);ce.value=ce.output="\\{",L=fe="\\}",A.output=gt;for(let Mt of Ht)A.output+=Mt.output||Mt.value}xe({type:"brace",value:L,output:fe}),Ue("braces"),le.pop();continue}if(L==="|"){ne.length>0&&ne[ne.length-1].conditions++,xe({type:"text",value:L});continue}if(L===","){let ce=L,fe=le[le.length-1];fe&&Ae[Ae.length-1]==="braces"&&(fe.comma=!0,ce="|"),xe({type:"comma",value:L,output:ce});continue}if(L==="/"){if(T.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",o.pop(),T=s;continue}xe({type:"slash",value:L,output:h});continue}if(L==="."){if(A.braces>0&&T.type==="dot"){T.value==="."&&(T.output=g);let ce=le[le.length-1];T.type="dots",T.output+=L,T.value+=L,ce.dots=!0;continue}if(A.braces+A.parens===0&&T.type!=="bos"&&T.type!=="slash"){xe({type:"text",value:L,output:g});continue}xe({type:"dot",value:L,output:g});continue}if(L==="?"){if(!(T&&T.value==="(")&&r.noextglob!==!0&&we()==="("&&we(2)!=="?"){ve("qmark",L);continue}if(T&&T.type==="paren"){let fe=we(),gt=L;if(fe==="<"&&!es.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(T.value==="("&&!/[!=<:]/.test(fe)||fe==="<"&&!/<([!=]|\w+>)/.test(re()))&&(gt=`\\${L}`),xe({type:"text",value:L,output:gt});continue}if(r.dot!==!0&&(T.type==="slash"||T.type==="bos")){xe({type:"qmark",value:L,output:M});continue}xe({type:"qmark",value:L,output:x});continue}if(L==="!"){if(r.noextglob!==!0&&we()==="("&&(we(2)!=="?"||!/[!=<:]/.test(we(3)))){ve("negate",L);continue}if(r.nonegate!==!0&&A.index===0){he();continue}}if(L==="+"){if(r.noextglob!==!0&&we()==="("&&we(2)!=="?"){ve("plus",L);continue}if(T&&T.value==="("||r.regex===!1){xe({type:"plus",value:L,output:f});continue}if(T&&(T.type==="bracket"||T.type==="paren"||T.type==="brace")||A.parens>0){xe({type:"plus",value:L});continue}xe({type:"plus",value:f});continue}if(L==="@"){if(r.noextglob!==!0&&we()==="("&&we(2)!=="?"){xe({type:"at",extglob:!0,value:L,output:""});continue}xe({type:"text",value:L});continue}if(L!=="*"){(L==="$"||L==="^")&&(L=`\\${L}`);let ce=Q0e.exec(re());ce&&(L+=ce[0],A.index+=ce[0].length),xe({type:"text",value:L});continue}if(T&&(T.type==="globstar"||T.star===!0)){T.type="star",T.star=!0,T.value+=L,T.output=Z,A.backtrack=!0,A.globstar=!0,se(L);continue}let X=re();if(r.noextglob!==!0&&/^\([^?]/.test(X)){ve("star",L);continue}if(T.type==="star"){if(r.noglobstar===!0){se(L);continue}let ce=T.prev,fe=ce.prev,gt=ce.type==="slash"||ce.type==="bos",Ht=fe&&(fe.type==="star"||fe.type==="globstar");if(r.bash===!0&&(!gt||X[0]&&X[0]!=="/")){xe({type:"star",value:L,output:""});continue}let Mt=A.braces>0&&(ce.type==="comma"||ce.type==="brace"),mi=ne.length&&(ce.type==="pipe"||ce.type==="paren");if(!gt&&ce.type!=="paren"&&!Mt&&!mi){xe({type:"star",value:L,output:""});continue}for(;X.slice(0,3)==="/**";){let jt=t[A.index+4];if(jt&&jt!=="/")break;X=X.slice(3),se("/**",3)}if(ce.type==="bos"&&Ee()){T.type="globstar",T.value+=L,T.output=J(r),A.output=T.output,A.globstar=!0,se(L);continue}if(ce.type==="slash"&&ce.prev.type!=="bos"&&!Ht&&Ee()){A.output=A.output.slice(0,-(ce.output+T.output).length),ce.output=`(?:${ce.output}`,T.type="globstar",T.output=J(r)+(r.strictSlashes?")":"|$)"),T.value+=L,A.globstar=!0,A.output+=ce.output+T.output,se(L);continue}if(ce.type==="slash"&&ce.prev.type!=="bos"&&X[0]==="/"){let jt=X[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(ce.output+T.output).length),ce.output=`(?:${ce.output}`,T.type="globstar",T.output=`${J(r)}${h}|${h}${jt})`,T.value+=L,A.output+=ce.output+T.output,A.globstar=!0,se(L+qe()),xe({type:"slash",value:"/",output:""});continue}if(ce.type==="bos"&&X[0]==="/"){T.type="globstar",T.value+=L,T.output=`(?:^|${h}|${J(r)}${h})`,A.output=T.output,A.globstar=!0,se(L+qe()),xe({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-T.output.length),T.type="globstar",T.output=J(r),T.value+=L,A.output+=T.output,A.globstar=!0,se(L);continue}let be={type:"star",value:L,output:Z};if(r.bash===!0){be.output=".*?",(T.type==="bos"||T.type==="slash")&&(be.output=W+be.output),xe(be);continue}if(T&&(T.type==="bracket"||T.type==="paren")&&r.regex===!0){be.output=L,xe(be);continue}(A.index===A.start||T.type==="slash"||T.type==="dot")&&(T.type==="dot"?(A.output+=Q,T.output+=Q):r.dot===!0?(A.output+=S,T.output+=S):(A.output+=W,T.output+=W),we()!=="*"&&(A.output+=p,T.output+=p)),xe(be)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Sg("closing","]"));A.output=es.escapeLast(A.output,"["),Ue("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Sg("closing",")"));A.output=es.escapeLast(A.output,"("),Ue("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Sg("closing","}"));A.output=es.escapeLast(A.output,"{"),Ue("braces")}if(r.strictSlashes!==!0&&(T.type==="star"||T.type==="bracket")&&xe({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let X of A.tokens)A.output+=X.output!=null?X.output:X.value,X.suffix&&(A.output+=X.suffix)}return A};eJ.fastpaths=(t,e)=>{let r=N({},e),i=typeof r.maxLength=="number"?Math.min(Dy,r.maxLength):Dy,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);t=$q[t]||t;let s=es.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:g,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:p}=Py.globChars(s),m=r.dot?g:u,y=r.dot?f:u,Q=r.capture?"":"?:",S={negated:!1,prefix:""},x=r.bash===!0?".*?":h;r.capture&&(x=`(${x})`);let M=W=>W.noglobstar===!0?x:`(${Q}(?:(?!${p}${W.dot?c:o}).)*?)`,Y=W=>{switch(W){case"*":return`${m}${l}${x}`;case".*":return`${o}${l}${x}`;case"*.*":return`${m}${x}${o}${l}${x}`;case"*/*":return`${m}${x}${a}${l}${y}${x}`;case"**":return m+M(r);case"**/*":return`(?:${m}${M(r)}${a})?${y}${l}${x}`;case"**/*.*":return`(?:${m}${M(r)}${a})?${y}${x}${o}${l}${x}`;case"**/.*":return`(?:${m}${M(r)}${a})?${o}${l}${x}`;default:{let ee=/^(.*?)\.(\w+)$/.exec(W);if(!ee)return;let Z=Y(ee[1]);return Z?Z+o+ee[2]:void 0}}},U=es.removePrefix(t,S),J=Y(U);return J&&r.strictSlashes!==!0&&(J+=`${a}?`),J};Zq.exports=eJ});var iJ=w((wrt,rJ)=>{"use strict";var k0e=require("path"),x0e=Xq(),FS=tJ(),NS=Xp(),P0e=Vp(),D0e=t=>t&&typeof t=="object"&&!Array.isArray(t),zr=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(f=>zr(f,e,r));return f=>{for(let h of u){let p=h(f);if(p)return p}return!1}}let i=D0e(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let n=e||{},s=NS.isWindows(e),o=i?zr.compileRe(t,e):zr.makeRe(t,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(n.ignore){let u=te(N({},e),{ignore:null,onMatch:null,onResult:null});l=zr(n.ignore,u,r)}let c=(u,g=!1)=>{let{isMatch:f,match:h,output:p}=zr.test(u,o,e,{glob:t,posix:s}),m={glob:t,state:a,regex:o,posix:s,input:u,output:p,match:h,isMatch:f};return typeof n.onResult=="function"&&n.onResult(m),f===!1?(m.isMatch=!1,g?m:!1):l(u)?(typeof n.onIgnore=="function"&&n.onIgnore(m),m.isMatch=!1,g?m:!1):(typeof n.onMatch=="function"&&n.onMatch(m),g?m:!0)};return r&&(c.state=a),c};zr.test=(t,e,r,{glob:i,posix:n}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let s=r||{},o=s.format||(n?NS.toPosixSlashes:null),a=t===i,l=a&&o?o(t):t;return a===!1&&(l=o?o(t):t,a=l===i),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=zr.matchBase(t,e,r,n):a=e.exec(l)),{isMatch:Boolean(a),match:a,output:l}};zr.matchBase=(t,e,r,i=NS.isWindows(r))=>(e instanceof RegExp?e:zr.makeRe(e,r)).test(k0e.basename(t));zr.isMatch=(t,e,r)=>zr(e,r)(t);zr.parse=(t,e)=>Array.isArray(t)?t.map(r=>zr.parse(r,e)):FS(t,te(N({},e),{fastpaths:!1}));zr.scan=(t,e)=>x0e(t,e);zr.compileRe=(t,e,r=!1,i=!1)=>{if(r===!0)return t.output;let n=e||{},s=n.contains?"":"^",o=n.contains?"":"$",a=`${s}(?:${t.output})${o}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let l=zr.toRegex(a,e);return i===!0&&(l.state=t),l};zr.makeRe=(t,e={},r=!1,i=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let n={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(n.output=FS.fastpaths(t,e)),n.output||(n=FS(t,e)),zr.compileRe(n,e,r,i)};zr.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};zr.constants=P0e;rJ.exports=zr});var LS=w((Brt,nJ)=>{"use strict";nJ.exports=iJ()});var ts=w((brt,sJ)=>{"use strict";var oJ=require("util"),aJ=Mq(),Yo=LS(),TS=Xp(),AJ=t=>t===""||t==="./",Pr=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let i=new Set,n=new Set,s=new Set,o=0,a=u=>{s.add(u.output),r&&r.onResult&&r.onResult(u)};for(let u=0;u!i.has(u));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};Pr.match=Pr;Pr.matcher=(t,e)=>Yo(t,e);Pr.isMatch=(t,e,r)=>Yo(e,r)(t);Pr.any=Pr.isMatch;Pr.not=(t,e,r={})=>{e=[].concat(e).map(String);let i=new Set,n=[],s=a=>{r.onResult&&r.onResult(a),n.push(a.output)},o=Pr(t,e,te(N({},r),{onResult:s}));for(let a of n)o.includes(a)||i.add(a);return[...i]};Pr.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oJ.inspect(t)}"`);if(Array.isArray(e))return e.some(i=>Pr.contains(t,i,r));if(typeof e=="string"){if(AJ(t)||AJ(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return Pr.isMatch(t,e,te(N({},r),{contains:!0}))};Pr.matchKeys=(t,e,r)=>{if(!TS.isObject(t))throw new TypeError("Expected the first argument to be an object");let i=Pr(Object.keys(t),e,r),n={};for(let s of i)n[s]=t[s];return n};Pr.some=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=Yo(String(n),r);if(i.some(o=>s(o)))return!0}return!1};Pr.every=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=Yo(String(n),r);if(!i.every(o=>s(o)))return!1}return!0};Pr.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oJ.inspect(t)}"`);return[].concat(e).every(i=>Yo(i,r)(t))};Pr.capture=(t,e,r)=>{let i=TS.isWindows(r),s=Yo.makeRe(String(t),te(N({},r),{capture:!0})).exec(i?TS.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};Pr.makeRe=(...t)=>Yo.makeRe(...t);Pr.scan=(...t)=>Yo.scan(...t);Pr.parse=(t,e)=>{let r=[];for(let i of[].concat(t||[]))for(let n of aJ(String(i),e))r.push(Yo.parse(n,e));return r};Pr.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:aJ(t,e)};Pr.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return Pr.braces(t,te(N({},e),{expand:!0}))};sJ.exports=Pr});var cJ=w((Qrt,lJ)=>{"use strict";lJ.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var gJ=w((vrt,uJ)=>{"use strict";var R0e=cJ();uJ.exports=t=>typeof t=="string"?t.replace(R0e(),""):t});var kJ=w((Yrt,SJ)=>{"use strict";SJ.exports=(...t)=>[...new Set([].concat(...t))]});var XS=w((qrt,xJ)=>{"use strict";var Y0e=require("stream"),PJ=Y0e.PassThrough,q0e=Array.prototype.slice;xJ.exports=J0e;function J0e(){let t=[],e=!1,r=q0e.call(arguments),i=r[r.length-1];i&&!Array.isArray(i)&&i.pipe==null?r.pop():i={};let n=i.end!==!1;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let s=PJ(i);function o(){for(let c=0,u=arguments.length;c0||(e=!1,a())}function f(h){function p(){h.removeListener("merge2UnpipeEnd",p),h.removeListener("end",p),g()}if(h._readableState.endEmitted)return g();h.on("merge2UnpipeEnd",p),h.on("end",p),h.pipe(s,{end:!1}),h.resume()}for(let h=0;h{"use strict";Object.defineProperty(Ty,"__esModule",{value:!0});function W0e(t){return t.reduce((e,r)=>[].concat(e,r),[])}Ty.flatten=W0e;function z0e(t,e){let r=[[]],i=0;for(let n of t)e(n)?(i++,r[i]=[]):r[i].push(n);return r}Ty.splitWhen=z0e});var FJ=w(ZS=>{"use strict";Object.defineProperty(ZS,"__esModule",{value:!0});function _0e(t){return t.code==="ENOENT"}ZS.isEnoentCodeError=_0e});var LJ=w($S=>{"use strict";Object.defineProperty($S,"__esModule",{value:!0});var NJ=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function V0e(t,e){return new NJ(t,e)}$S.createDirentFromStats=V0e});var TJ=w(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});var X0e=require("path"),Z0e=2,$0e=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function ebe(t){return t.replace(/\\/g,"/")}Ng.unixify=ebe;function tbe(t,e){return X0e.resolve(t,e)}Ng.makeAbsolute=tbe;function rbe(t){return t.replace($0e,"\\$2")}Ng.escape=rbe;function ibe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(Z0e)}return t}Ng.removeLeadingDotSegment=ibe});var MJ=w((Vrt,OJ)=>{OJ.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var HJ=w((Xrt,UJ)=>{var nbe=MJ(),KJ={"{":"}","(":")","[":"]"},sbe=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,i=-2,n=-2,s=-2,o=-2;ee&&(o===-1||o>i||(o=t.indexOf("\\",e),o===-1||o>i)))||n!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(n=t.indexOf("}",e),n>e&&(o=t.indexOf("\\",e),o===-1||o>n))||s!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(s=t.indexOf(")",e),s>e&&(o=t.indexOf("\\",e),o===-1||o>s))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(rr&&(o=t.indexOf("\\",r),o===-1||o>s))))return!0;if(t[e]==="\\"){var a=t[e+1];e+=2;var l=KJ[a];if(l){var c=t.indexOf(l,e);c!==-1&&(e=c+1)}if(t[e]==="!")return!0}else e++}return!1},obe=function(t){if(t[0]==="!")return!0;for(var e=0;e{"use strict";var abe=HJ(),Abe=require("path").posix.dirname,lbe=require("os").platform()==="win32",ek="/",cbe=/\\/g,ube=/[\{\[].*[\}\]]$/,gbe=/(^|[^\\])([\{\[]|\([^\)]+$)/,fbe=/\\([\!\*\?\|\[\]\(\)\{\}])/g;jJ.exports=function(e,r){var i=Object.assign({flipBackslashes:!0},r);i.flipBackslashes&&lbe&&e.indexOf(ek)<0&&(e=e.replace(cbe,ek)),ube.test(e)&&(e+=ek),e+="a";do e=Abe(e);while(abe(e)||gbe.test(e));return e.replace(fbe,"$1")}});var ZJ=w(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});var hbe=require("path"),pbe=GJ(),YJ=ts(),dbe=LS(),qJ="**",Cbe="\\",mbe=/[*?]|^!/,Ebe=/\[.*]/,Ibe=/(?:^|[^!*+?@])\(.*\|.*\)/,ybe=/[!*+?@]\(.*\)/,wbe=/{.*(?:,|\.\.).*}/;function WJ(t,e={}){return!JJ(t,e)}ni.isStaticPattern=WJ;function JJ(t,e={}){return!!(e.caseSensitiveMatch===!1||t.includes(Cbe)||mbe.test(t)||Ebe.test(t)||Ibe.test(t)||e.extglob!==!1&&ybe.test(t)||e.braceExpansion!==!1&&wbe.test(t))}ni.isDynamicPattern=JJ;function Bbe(t){return Oy(t)?t.slice(1):t}ni.convertToPositivePattern=Bbe;function bbe(t){return"!"+t}ni.convertToNegativePattern=bbe;function Oy(t){return t.startsWith("!")&&t[1]!=="("}ni.isNegativePattern=Oy;function zJ(t){return!Oy(t)}ni.isPositivePattern=zJ;function Qbe(t){return t.filter(Oy)}ni.getNegativePatterns=Qbe;function vbe(t){return t.filter(zJ)}ni.getPositivePatterns=vbe;function Sbe(t){return pbe(t,{flipBackslashes:!1})}ni.getBaseDirectory=Sbe;function kbe(t){return t.includes(qJ)}ni.hasGlobStar=kbe;function _J(t){return t.endsWith("/"+qJ)}ni.endsWithSlashGlobStar=_J;function xbe(t){let e=hbe.basename(t);return _J(t)||WJ(e)}ni.isAffectDepthOfReadingPattern=xbe;function Pbe(t){return t.reduce((e,r)=>e.concat(VJ(r)),[])}ni.expandPatternsWithBraceExpansion=Pbe;function VJ(t){return YJ.braces(t,{expand:!0,nodupes:!0})}ni.expandBraceExpansion=VJ;function Dbe(t,e){let r=dbe.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.parts.length===0?[t]:r.parts}ni.getPatternParts=Dbe;function XJ(t,e){return YJ.makeRe(t,e)}ni.makeRe=XJ;function Rbe(t,e){return t.map(r=>XJ(r,e))}ni.convertPatternsToRe=Rbe;function Fbe(t,e){return e.some(r=>r.test(t))}ni.matchAny=Fbe});var e3=w(tk=>{"use strict";Object.defineProperty(tk,"__esModule",{value:!0});var Nbe=XS();function Lbe(t){let e=Nbe(t);return t.forEach(r=>{r.once("error",i=>e.emit("error",i))}),e.once("close",()=>$J(t)),e.once("end",()=>$J(t)),e}tk.merge=Lbe;function $J(t){t.forEach(e=>e.emit("close"))}});var t3=w(My=>{"use strict";Object.defineProperty(My,"__esModule",{value:!0});function Tbe(t){return typeof t=="string"}My.isString=Tbe;function Obe(t){return t===""}My.isEmpty=Obe});var Wa=w(Ja=>{"use strict";Object.defineProperty(Ja,"__esModule",{value:!0});var Mbe=RJ();Ja.array=Mbe;var Ube=FJ();Ja.errno=Ube;var Kbe=LJ();Ja.fs=Kbe;var Hbe=TJ();Ja.path=Hbe;var jbe=ZJ();Ja.pattern=jbe;var Gbe=e3();Ja.stream=Gbe;var Ybe=t3();Ja.string=Ybe});var o3=w(za=>{"use strict";Object.defineProperty(za,"__esModule",{value:!0});var Rc=Wa();function qbe(t,e){let r=r3(t),i=i3(t,e.ignore),n=r.filter(l=>Rc.pattern.isStaticPattern(l,e)),s=r.filter(l=>Rc.pattern.isDynamicPattern(l,e)),o=rk(n,i,!1),a=rk(s,i,!0);return o.concat(a)}za.generate=qbe;function rk(t,e,r){let i=n3(t);return"."in i?[ik(".",t,e,r)]:s3(i,e,r)}za.convertPatternsToTasks=rk;function r3(t){return Rc.pattern.getPositivePatterns(t)}za.getPositivePatterns=r3;function i3(t,e){return Rc.pattern.getNegativePatterns(t).concat(e).map(Rc.pattern.convertToPositivePattern)}za.getNegativePatternsAsPositive=i3;function n3(t){let e={};return t.reduce((r,i)=>{let n=Rc.pattern.getBaseDirectory(i);return n in r?r[n].push(i):r[n]=[i],r},e)}za.groupPatternsByBaseDirectory=n3;function s3(t,e,r){return Object.keys(t).map(i=>ik(i,t[i],e,r))}za.convertPatternGroupsToTasks=s3;function ik(t,e,r,i){return{dynamic:i,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Rc.pattern.convertToNegativePattern))}}za.convertPatternGroupToTask=ik});var A3=w(Uy=>{"use strict";Object.defineProperty(Uy,"__esModule",{value:!0});Uy.read=void 0;function Jbe(t,e,r){e.fs.lstat(t,(i,n)=>{if(i!==null){a3(r,i);return}if(!n.isSymbolicLink()||!e.followSymbolicLink){nk(r,n);return}e.fs.stat(t,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){a3(r,s);return}nk(r,n);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),nk(r,o)})})}Uy.read=Jbe;function a3(t,e){t(e)}function nk(t,e){t(null,e)}});var l3=w(Ky=>{"use strict";Object.defineProperty(Ky,"__esModule",{value:!0});Ky.read=void 0;function Wbe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let i=e.fs.statSync(t);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw i}}Ky.read=Wbe});var c3=w(XA=>{"use strict";Object.defineProperty(XA,"__esModule",{value:!0});XA.createFileSystemAdapter=XA.FILE_SYSTEM_ADAPTER=void 0;var Hy=require("fs");XA.FILE_SYSTEM_ADAPTER={lstat:Hy.lstat,stat:Hy.stat,lstatSync:Hy.lstatSync,statSync:Hy.statSync};function zbe(t){return t===void 0?XA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},XA.FILE_SYSTEM_ADAPTER),t)}XA.createFileSystemAdapter=zbe});var g3=w(sk=>{"use strict";Object.defineProperty(sk,"__esModule",{value:!0});var _be=c3(),u3=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=_be.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e!=null?e:r}};sk.default=u3});var Fc=w(ZA=>{"use strict";Object.defineProperty(ZA,"__esModule",{value:!0});ZA.statSync=ZA.stat=ZA.Settings=void 0;var f3=A3(),Vbe=l3(),ok=g3();ZA.Settings=ok.default;function Xbe(t,e,r){if(typeof e=="function"){f3.read(t,ak(),e);return}f3.read(t,ak(e),r)}ZA.stat=Xbe;function Zbe(t,e){let r=ak(e);return Vbe.read(t,r)}ZA.statSync=Zbe;function ak(t={}){return t instanceof ok.default?t:new ok.default(t)}});var p3=w((lit,h3)=>{h3.exports=$be;function $be(t,e){var r,i,n,s=!0;Array.isArray(t)?(r=[],i=t.length):(n=Object.keys(t),r={},i=n.length);function o(l){function c(){e&&e(l,r),e=null}s?process.nextTick(c):c()}function a(l,c,u){r[l]=u,(--i==0||c)&&o(c)}i?n?n.forEach(function(l){t[l](function(c,u){a(l,c,u)})}):t.forEach(function(l,c){l(function(u,g){a(c,u,g)})}):o(null),s=!1}});var Ak=w(jy=>{"use strict";Object.defineProperty(jy,"__esModule",{value:!0});jy.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var Gy=process.versions.node.split(".");if(Gy[0]===void 0||Gy[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var d3=Number.parseInt(Gy[0],10),eQe=Number.parseInt(Gy[1],10),C3=10,tQe=10,rQe=d3>C3,iQe=d3===C3&&eQe>=tQe;jy.IS_SUPPORT_READDIR_WITH_FILE_TYPES=rQe||iQe});var E3=w(Yy=>{"use strict";Object.defineProperty(Yy,"__esModule",{value:!0});Yy.createDirentFromStats=void 0;var m3=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function nQe(t,e){return new m3(t,e)}Yy.createDirentFromStats=nQe});var lk=w(qy=>{"use strict";Object.defineProperty(qy,"__esModule",{value:!0});qy.fs=void 0;var sQe=E3();qy.fs=sQe});var ck=w(Jy=>{"use strict";Object.defineProperty(Jy,"__esModule",{value:!0});Jy.joinPathSegments=void 0;function oQe(t,e,r){return t.endsWith(r)?t+e:t+r+e}Jy.joinPathSegments=oQe});var Q3=w($A=>{"use strict";Object.defineProperty($A,"__esModule",{value:!0});$A.readdir=$A.readdirWithFileTypes=$A.read=void 0;var aQe=Fc(),I3=p3(),AQe=Ak(),y3=lk(),w3=ck();function lQe(t,e,r){if(!e.stats&&AQe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){B3(t,e,r);return}b3(t,e,r)}$A.read=lQe;function B3(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(i,n)=>{if(i!==null){Wy(r,i);return}let s=n.map(a=>({dirent:a,name:a.name,path:w3.joinPathSegments(t,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){uk(r,s);return}let o=s.map(a=>cQe(a,e));I3(o,(a,l)=>{if(a!==null){Wy(r,a);return}uk(r,l)})})}$A.readdirWithFileTypes=B3;function cQe(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(i,n)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){r(i);return}r(null,t);return}t.dirent=y3.fs.createDirentFromStats(t.name,n),r(null,t)})}}function b3(t,e,r){e.fs.readdir(t,(i,n)=>{if(i!==null){Wy(r,i);return}let s=n.map(o=>{let a=w3.joinPathSegments(t,o,e.pathSegmentSeparator);return l=>{aQe.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let g={name:o,path:a,dirent:y3.fs.createDirentFromStats(o,u)};e.stats&&(g.stats=u),l(null,g)})}});I3(s,(o,a)=>{if(o!==null){Wy(r,o);return}uk(r,a)})})}$A.readdir=b3;function Wy(t,e){t(e)}function uk(t,e){t(null,e)}});var P3=w(el=>{"use strict";Object.defineProperty(el,"__esModule",{value:!0});el.readdir=el.readdirWithFileTypes=el.read=void 0;var uQe=Fc(),gQe=Ak(),v3=lk(),S3=ck();function fQe(t,e){return!e.stats&&gQe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?k3(t,e):x3(t,e)}el.read=fQe;function k3(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(i=>{let n={dirent:i,name:i.name,path:S3.joinPathSegments(t,i.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(n.path);n.dirent=v3.fs.createDirentFromStats(n.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return n})}el.readdirWithFileTypes=k3;function x3(t,e){return e.fs.readdirSync(t).map(i=>{let n=S3.joinPathSegments(t,i,e.pathSegmentSeparator),s=uQe.statSync(n,e.fsStatSettings),o={name:i,path:n,dirent:v3.fs.createDirentFromStats(i,s)};return e.stats&&(o.stats=s),o})}el.readdir=x3});var D3=w(tl=>{"use strict";Object.defineProperty(tl,"__esModule",{value:!0});tl.createFileSystemAdapter=tl.FILE_SYSTEM_ADAPTER=void 0;var Lg=require("fs");tl.FILE_SYSTEM_ADAPTER={lstat:Lg.lstat,stat:Lg.stat,lstatSync:Lg.lstatSync,statSync:Lg.statSync,readdir:Lg.readdir,readdirSync:Lg.readdirSync};function hQe(t){return t===void 0?tl.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},tl.FILE_SYSTEM_ADAPTER),t)}tl.createFileSystemAdapter=hQe});var F3=w(gk=>{"use strict";Object.defineProperty(gk,"__esModule",{value:!0});var pQe=require("path"),dQe=Fc(),CQe=D3(),R3=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=CQe.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,pQe.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new dQe.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};gk.default=R3});var zy=w(rl=>{"use strict";Object.defineProperty(rl,"__esModule",{value:!0});rl.Settings=rl.scandirSync=rl.scandir=void 0;var N3=Q3(),mQe=P3(),fk=F3();rl.Settings=fk.default;function EQe(t,e,r){if(typeof e=="function"){N3.read(t,hk(),e);return}N3.read(t,hk(e),r)}rl.scandir=EQe;function IQe(t,e){let r=hk(e);return mQe.read(t,r)}rl.scandirSync=IQe;function hk(t={}){return t instanceof fk.default?t:new fk.default(t)}});var T3=w((Eit,L3)=>{"use strict";function yQe(t){var e=new t,r=e;function i(){var s=e;return s.next?e=s.next:(e=new t,r=e),s.next=null,s}function n(s){r.next=s,r=s}return{get:i,release:n}}L3.exports=yQe});var M3=w((Iit,pk)=>{"use strict";var wQe=T3();function O3(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var i=wQe(BQe),n=null,s=null,o=0,a=null,l={push:m,drain:Wo,saturated:Wo,pause:u,paused:!1,concurrency:r,running:c,resume:h,idle:p,length:g,getQueue:f,unshift:y,empty:Wo,kill:S,killAndDrain:x,error:M};return l;function c(){return o}function u(){l.paused=!0}function g(){for(var Y=n,U=0;Y;)Y=Y.next,U++;return U}function f(){for(var Y=n,U=[];Y;)U.push(Y.value),Y=Y.next;return U}function h(){if(!!l.paused){l.paused=!1;for(var Y=0;Y{"use strict";Object.defineProperty(zo,"__esModule",{value:!0});zo.joinPathSegments=zo.replacePathSegmentSeparator=zo.isAppliedFilter=zo.isFatalError=void 0;function QQe(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}zo.isFatalError=QQe;function vQe(t,e){return t===null||t(e)}zo.isAppliedFilter=vQe;function SQe(t,e){return t.split(/[/\\]/).join(e)}zo.replacePathSegmentSeparator=SQe;function kQe(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}zo.joinPathSegments=kQe});var Ck=w(dk=>{"use strict";Object.defineProperty(dk,"__esModule",{value:!0});var xQe=_y(),U3=class{constructor(e,r){this._root=e,this._settings=r,this._root=xQe.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};dk.default=U3});var Ek=w(mk=>{"use strict";Object.defineProperty(mk,"__esModule",{value:!0});var PQe=require("events"),DQe=zy(),RQe=M3(),Vy=_y(),FQe=Ck(),K3=class extends FQe.default{constructor(e,r){super(e,r);this._settings=r,this._scandir=DQe.scandir,this._emitter=new PQe.EventEmitter,this._queue=RQe(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let i={directory:e,base:r};this._queue.push(i,n=>{n!==null&&this._handleError(n)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(i,n)=>{if(i!==null){r(i,void 0);return}for(let s of n)this._handleEntry(s,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!Vy.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let i=e.path;r!==void 0&&(e.path=Vy.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),Vy.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&Vy.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};mk.default=K3});var j3=w(Ik=>{"use strict";Object.defineProperty(Ik,"__esModule",{value:!0});var NQe=Ek(),H3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new NQe.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{LQe(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{TQe(e,[...this._storage])}),this._reader.read()}};Ik.default=H3;function LQe(t,e){t(e)}function TQe(t,e){t(null,e)}});var Y3=w(yk=>{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});var OQe=require("stream"),MQe=Ek(),G3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new MQe.default(this._root,this._settings),this._stream=new OQe.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};yk.default=G3});var J3=w(wk=>{"use strict";Object.defineProperty(wk,"__esModule",{value:!0});var UQe=zy(),Xy=_y(),KQe=Ck(),q3=class extends KQe.default{constructor(){super(...arguments);this._scandir=UQe.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let n of i)this._handleEntry(n,r)}catch(i){this._handleError(i)}}_handleError(e){if(!!Xy.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let i=e.path;r!==void 0&&(e.path=Xy.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),Xy.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&Xy.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_pushToStorage(e){this._storage.add(e)}};wk.default=q3});var z3=w(Bk=>{"use strict";Object.defineProperty(Bk,"__esModule",{value:!0});var HQe=J3(),W3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new HQe.default(this._root,this._settings)}read(){return this._reader.read()}};Bk.default=W3});var V3=w(bk=>{"use strict";Object.defineProperty(bk,"__esModule",{value:!0});var jQe=require("path"),GQe=zy(),_3=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,jQe.sep),this.fsScandirSettings=new GQe.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};bk.default=_3});var vk=w(_o=>{"use strict";Object.defineProperty(_o,"__esModule",{value:!0});_o.Settings=_o.walkStream=_o.walkSync=_o.walk=void 0;var X3=j3(),YQe=Y3(),qQe=z3(),Qk=V3();_o.Settings=Qk.default;function JQe(t,e,r){if(typeof e=="function"){new X3.default(t,Zy()).read(e);return}new X3.default(t,Zy(e)).read(r)}_o.walk=JQe;function WQe(t,e){let r=Zy(e);return new qQe.default(t,r).read()}_o.walkSync=WQe;function zQe(t,e){let r=Zy(e);return new YQe.default(t,r).read()}_o.walkStream=zQe;function Zy(t={}){return t instanceof Qk.default?t:new Qk.default(t)}});var kk=w(Sk=>{"use strict";Object.defineProperty(Sk,"__esModule",{value:!0});var _Qe=require("path"),VQe=Fc(),Z3=Wa(),$3=class{constructor(e){this._settings=e,this._fsStatSettings=new VQe.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return _Qe.resolve(this._settings.cwd,e)}_makeEntry(e,r){let i={name:r,path:r,dirent:Z3.fs.createDirentFromStats(r,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!Z3.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};Sk.default=$3});var Pk=w(xk=>{"use strict";Object.defineProperty(xk,"__esModule",{value:!0});var XQe=require("stream"),ZQe=Fc(),$Qe=vk(),eve=kk(),eW=class extends eve.default{constructor(){super(...arguments);this._walkStream=$Qe.walkStream,this._stat=ZQe.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let i=e.map(this._getFullEntryPath,this),n=new XQe.PassThrough({objectMode:!0});n._write=(s,o,a)=>this._getEntry(i[s],e[s],r).then(l=>{l!==null&&r.entryFilter(l)&&n.push(l),s===i.length-1&&n.end(),a()}).catch(a);for(let s=0;sthis._makeEntry(n,r)).catch(n=>{if(i.errorFilter(n))return null;throw n})}_getStat(e){return new Promise((r,i)=>{this._stat(e,this._fsStatSettings,(n,s)=>n===null?r(s):i(n))})}};xk.default=eW});var rW=w(Dk=>{"use strict";Object.defineProperty(Dk,"__esModule",{value:!0});var Tg=Wa(),tW=class{constructor(e,r,i){this._patterns=e,this._settings=r,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){let e=Tg.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let i=this._getPatternSegments(r),n=this._splitSegmentsIntoSections(i);this._storage.push({complete:n.length<=1,pattern:r,segments:i,sections:n})}}_getPatternSegments(e){return Tg.pattern.getPatternParts(e,this._micromatchOptions).map(i=>Tg.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:Tg.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return Tg.array.splitWhen(e,r=>r.dynamic&&Tg.pattern.hasGlobStar(r.pattern))}};Dk.default=tW});var nW=w(Rk=>{"use strict";Object.defineProperty(Rk,"__esModule",{value:!0});var tve=rW(),iW=class extends tve.default{match(e){let r=e.split("/"),i=r.length,n=this._storage.filter(s=>!s.complete||s.segments.length>i);for(let s of n){let o=s.sections[0];if(!s.complete&&i>o.length||r.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};Rk.default=iW});var oW=w(Fk=>{"use strict";Object.defineProperty(Fk,"__esModule",{value:!0});var $y=Wa(),rve=nW(),sW=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,i){let n=this._getMatcher(r),s=this._getNegativePatternsRe(i);return o=>this._filter(e,o,n,s)}_getMatcher(e){return new rve.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter($y.pattern.isAffectDepthOfReadingPattern);return $y.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,i,n){let s=this._getEntryLevel(e,r.path);if(this._isSkippedByDeep(s)||this._isSkippedSymbolicLink(r))return!1;let o=$y.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(o,i)?!1:this._isSkippedByNegativePatterns(o,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,r){let i=e.split("/").length;return r.split("/").length-(e===""?0:i)}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!$y.pattern.matchAny(e,r)}};Fk.default=sW});var AW=w(Nk=>{"use strict";Object.defineProperty(Nk,"__esModule",{value:!0});var sd=Wa(),aW=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let i=sd.pattern.convertPatternsToRe(e,this._micromatchOptions),n=sd.pattern.convertPatternsToRe(r,this._micromatchOptions);return s=>this._filter(s,i,n)}_filter(e,r,i){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,i))return!1;let n=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(n,r)&&!this._isMatchToPatterns(e.path,i)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let i=sd.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(i,r)}_isMatchToPatterns(e,r){let i=sd.path.removeLeadingDotSegment(e);return sd.pattern.matchAny(i,r)}};Nk.default=aW});var cW=w(Lk=>{"use strict";Object.defineProperty(Lk,"__esModule",{value:!0});var ive=Wa(),lW=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return ive.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};Lk.default=lW});var fW=w(Tk=>{"use strict";Object.defineProperty(Tk,"__esModule",{value:!0});var uW=Wa(),gW=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=uW.path.makeAbsolute(this._settings.cwd,r),r=uW.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};Tk.default=gW});var ew=w(Ok=>{"use strict";Object.defineProperty(Ok,"__esModule",{value:!0});var nve=require("path"),sve=oW(),ove=AW(),ave=cW(),Ave=fW(),hW=class{constructor(e){this._settings=e,this.errorFilter=new ave.default(this._settings),this.entryFilter=new ove.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new sve.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new Ave.default(this._settings)}_getRootDirectory(e){return nve.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};Ok.default=hW});var dW=w(Mk=>{"use strict";Object.defineProperty(Mk,"__esModule",{value:!0});var lve=Pk(),cve=ew(),pW=class extends cve.default{constructor(){super(...arguments);this._reader=new lve.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=[];return new Promise((s,o)=>{let a=this.api(r,e,i);a.once("error",o),a.on("data",l=>n.push(i.transform(l))),a.once("end",()=>s(n))})}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};Mk.default=pW});var mW=w(Uk=>{"use strict";Object.defineProperty(Uk,"__esModule",{value:!0});var uve=require("stream"),gve=Pk(),fve=ew(),CW=class extends fve.default{constructor(){super(...arguments);this._reader=new gve.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=this.api(r,e,i),s=new uve.Readable({objectMode:!0,read:()=>{}});return n.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",i.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>n.destroy()),s}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};Uk.default=CW});var IW=w(Kk=>{"use strict";Object.defineProperty(Kk,"__esModule",{value:!0});var hve=Fc(),pve=vk(),dve=kk(),EW=class extends dve.default{constructor(){super(...arguments);this._walkSync=pve.walkSync,this._statSync=hve.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let i=[];for(let n of e){let s=this._getFullEntryPath(n),o=this._getEntry(s,n,r);o===null||!r.entryFilter(o)||i.push(o)}return i}_getEntry(e,r,i){try{let n=this._getStat(e);return this._makeEntry(n,r)}catch(n){if(i.errorFilter(n))return null;throw n}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};Kk.default=EW});var wW=w(Hk=>{"use strict";Object.defineProperty(Hk,"__esModule",{value:!0});var Cve=IW(),mve=ew(),yW=class extends mve.default{constructor(){super(...arguments);this._reader=new Cve.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(r,e,i).map(i.transform)}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};Hk.default=yW});var bW=w(od=>{"use strict";Object.defineProperty(od,"__esModule",{value:!0});var Og=require("fs"),Eve=require("os"),Ive=Eve.cpus().length;od.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Og.lstat,lstatSync:Og.lstatSync,stat:Og.stat,statSync:Og.statSync,readdir:Og.readdir,readdirSync:Og.readdirSync};var BW=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,Ive),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,Infinity),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},od.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};od.default=BW});var tw=w((Yit,QW)=>{"use strict";var vW=o3(),yve=dW(),wve=mW(),Bve=wW(),jk=bW(),Nc=Wa();async function Yk(t,e){Mg(t);let r=Gk(t,yve.default,e),i=await Promise.all(r);return Nc.array.flatten(i)}(function(t){function e(o,a){Mg(o);let l=Gk(o,Bve.default,a);return Nc.array.flatten(l)}t.sync=e;function r(o,a){Mg(o);let l=Gk(o,wve.default,a);return Nc.stream.merge(l)}t.stream=r;function i(o,a){Mg(o);let l=[].concat(o),c=new jk.default(a);return vW.generate(l,c)}t.generateTasks=i;function n(o,a){Mg(o);let l=new jk.default(a);return Nc.pattern.isDynamicPattern(o,l)}t.isDynamicPattern=n;function s(o){return Mg(o),Nc.path.escape(o)}t.escapePath=s})(Yk||(Yk={}));function Gk(t,e,r){let i=[].concat(t),n=new jk.default(r),s=vW.generate(i,n),o=new e(n);return s.map(o.read,o)}function Mg(t){if(![].concat(t).every(i=>Nc.string.isString(i)&&!Nc.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}QW.exports=Yk});var kW=w(Lc=>{"use strict";var{promisify:bve}=require("util"),SW=require("fs");async function qk(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await bve(SW[t])(r))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function Jk(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return SW[t](r)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}Lc.isFile=qk.bind(null,"stat","isFile");Lc.isDirectory=qk.bind(null,"stat","isDirectory");Lc.isSymlink=qk.bind(null,"lstat","isSymbolicLink");Lc.isFileSync=Jk.bind(null,"statSync","isFile");Lc.isDirectorySync=Jk.bind(null,"statSync","isDirectory");Lc.isSymlinkSync=Jk.bind(null,"lstatSync","isSymbolicLink")});var FW=w((Jit,Wk)=>{"use strict";var Tc=require("path"),xW=kW(),PW=t=>t.length>1?`{${t.join(",")}}`:t[0],DW=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Tc.isAbsolute(r)?r:Tc.join(e,r)},Qve=(t,e)=>Tc.extname(t)?`**/${t}`:`**/${t}.${PW(e)}`,RW=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Tc.posix.join(t,Qve(r,e.extensions))):e.files?e.files.map(r=>Tc.posix.join(t,`**/${r}`)):e.extensions?[Tc.posix.join(t,`**/*.${PW(e.extensions)}`)]:[Tc.posix.join(t,"**")]};Wk.exports=async(t,e)=>{if(e=N({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async i=>await xW.isDirectory(DW(i,e.cwd))?RW(i,e):i));return[].concat.apply([],r)};Wk.exports.sync=(t,e)=>{if(e=N({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(i=>xW.isDirectorySync(DW(i,e.cwd))?RW(i,e):i);return[].concat.apply([],r)}});var GW=w((Wit,NW)=>{function LW(t){return Array.isArray(t)?t:[t]}var TW="",OW=" ",zk="\\",vve=/^\s+$/,Sve=/^\\!/,kve=/^\\#/,xve=/\r?\n/g,Pve=/^\.*\/|^\.+$/,_k="/",MW=typeof Symbol!="undefined"?Symbol.for("node-ignore"):"node-ignore",Dve=(t,e,r)=>Object.defineProperty(t,e,{value:r}),Rve=/([0-z])-([0-z])/g,Fve=t=>t.replace(Rve,(e,r,i)=>r.charCodeAt(0)<=i.charCodeAt(0)?e:TW),Nve=t=>{let{length:e}=t;return t.slice(0,e-e%2)},Lve=[[/\\?\s+$/,t=>t.indexOf("\\")===0?OW:TW],[/\\\s/g,()=>OW],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6`${e}[^\\/]*`],[/\\\\\\(?=[$.|*+(){^])/g,()=>zk],[/\\\\/g,()=>zk],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,r,i,n)=>e===zk?`\\[${r}${Nve(i)}${n}`:n==="]"&&i.length%2==0?`[${Fve(r)}${i}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],UW=Object.create(null),Tve=(t,e)=>{let r=UW[t];return r||(r=Lve.reduce((i,n)=>i.replace(n[0],n[1].bind(t)),t),UW[t]=r),e?new RegExp(r,"i"):new RegExp(r)},Vk=t=>typeof t=="string",Ove=t=>t&&Vk(t)&&!vve.test(t)&&t.indexOf("#")!==0,Mve=t=>t.split(xve),KW=class{constructor(e,r,i,n){this.origin=e,this.pattern=r,this.negative=i,this.regex=n}},Uve=(t,e)=>{let r=t,i=!1;t.indexOf("!")===0&&(i=!0,t=t.substr(1)),t=t.replace(Sve,"!").replace(kve,"#");let n=Tve(t,e);return new KW(r,t,i,n)},Kve=(t,e)=>{throw new e(t)},_a=(t,e,r)=>Vk(t)?t?_a.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),HW=t=>Pve.test(t);_a.isNotRelative=HW;_a.convert=t=>t;var jW=class{constructor({ignorecase:e=!0}={}){Dve(this,MW,!0),this._rules=[],this._ignorecase=e,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[MW]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(Ove(e)){let r=Uve(e,this._ignorecase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,LW(Vk(e)?Mve(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:o}=s;if(n===o&&i!==n||o&&!i&&!n&&!r)return;s.regex.test(e)&&(i=!o,n=o)}),{ignored:i,unignored:n}}_test(e,r,i,n){let s=e&&_a.convert(e);return _a(s,e,Kve),this._t(s,r,i,n)}_t(e,r,i,n){if(e in r)return r[e];if(n||(n=e.split(_k)),n.pop(),!n.length)return r[e]=this._testOne(e,i);let s=this._t(n.join(_k)+_k,r,i,n);return r[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return LW(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},rw=t=>new jW(t),Hve=()=>!1,jve=t=>_a(t&&_a.convert(t),t,Hve);rw.isPathValid=jve;rw.default=rw;NW.exports=rw;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");_a.convert=t;let e=/^[a-z]:\//i;_a.isNotRelative=r=>e.test(r)||HW(r)}});var qW=w((zit,YW)=>{"use strict";YW.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var ZW=w((_it,Xk)=>{"use strict";var{promisify:Gve}=require("util"),JW=require("fs"),Va=require("path"),WW=tw(),Yve=GW(),ad=qW(),zW=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],qve=Gve(JW.readFile),Jve=t=>e=>e.startsWith("!")?"!"+Va.posix.join(t,e.slice(1)):Va.posix.join(t,e),Wve=(t,e)=>{let r=ad(Va.relative(e.cwd,Va.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(i=>!i.startsWith("#")).map(Jve(r))},_W=t=>{let e=Yve();for(let r of t)e.add(Wve(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},zve=(t,e)=>{if(t=ad(t),Va.isAbsolute(e)){if(ad(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return Va.join(t,e)},VW=(t,e)=>r=>t.ignores(ad(Va.relative(e,zve(e,r.path||r)))),_ve=async(t,e)=>{let r=Va.join(e,t),i=await qve(r,"utf8");return{cwd:e,filePath:r,content:i}},Vve=(t,e)=>{let r=Va.join(e,t),i=JW.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:i}},XW=({ignore:t=[],cwd:e=ad(process.cwd())}={})=>({ignore:t,cwd:e});Xk.exports=async t=>{t=XW(t);let e=await WW("**/.gitignore",{ignore:zW.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(n=>_ve(n,t.cwd))),i=_W(r);return VW(i,t.cwd)};Xk.exports.sync=t=>{t=XW(t);let r=WW.sync("**/.gitignore",{ignore:zW.concat(t.ignore),cwd:t.cwd}).map(n=>Vve(n,t.cwd)),i=_W(r);return VW(i,t.cwd)}});var r8=w((Vit,$W)=>{"use strict";var{Transform:Xve}=require("stream"),Zk=class extends Xve{constructor(){super({objectMode:!0})}},e8=class extends Zk{constructor(e){super();this._filter=e}_transform(e,r,i){this._filter(e)&&this.push(e),i()}},t8=class extends Zk{constructor(){super();this._pushed=new Set}_transform(e,r,i){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),i()}};$W.exports={FilterStream:e8,UniqueStream:t8}});var rx=w((Xit,Oc)=>{"use strict";var i8=require("fs"),iw=kJ(),Zve=XS(),nw=tw(),sw=FW(),$k=ZW(),{FilterStream:$ve,UniqueStream:eSe}=r8(),n8=()=>!1,s8=t=>t[0]==="!",tSe=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},rSe=(t={})=>{if(!t.cwd)return;let e;try{e=i8.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},iSe=t=>t.stats instanceof i8.Stats?t.path:t,ow=(t,e)=>{t=iw([].concat(t)),tSe(t),rSe(e);let r=[];e=N({ignore:[],expandDirectories:!0},e);for(let[i,n]of t.entries()){if(s8(n))continue;let s=t.slice(i).filter(a=>s8(a)).map(a=>a.slice(1)),o=te(N({},e),{ignore:e.ignore.concat(s)});r.push({pattern:n,options:o})}return r},nSe=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r=te(N({},r),{files:t.options.expandDirectories}):typeof t.options.expandDirectories=="object"&&(r=N(N({},r),t.options.expandDirectories)),e(t.pattern,r)},ex=(t,e)=>t.options.expandDirectories?nSe(t,e):[t.pattern],o8=t=>t&&t.gitignore?$k.sync({cwd:t.cwd,ignore:t.ignore}):n8,tx=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=sw.sync(r.ignore)),{pattern:e,options:r}};Oc.exports=async(t,e)=>{let r=ow(t,e),i=async()=>e&&e.gitignore?$k({cwd:e.cwd,ignore:e.ignore}):n8,n=async()=>{let l=await Promise.all(r.map(async c=>{let u=await ex(c,sw);return Promise.all(u.map(tx(c)))}));return iw(...l)},[s,o]=await Promise.all([i(),n()]),a=await Promise.all(o.map(l=>nw(l.pattern,l.options)));return iw(...a).filter(l=>!s(iSe(l)))};Oc.exports.sync=(t,e)=>{let r=ow(t,e),i=[];for(let o of r){let a=ex(o,sw.sync).map(tx(o));i.push(...a)}let n=o8(e),s=[];for(let o of i)s=iw(s,nw.sync(o.pattern,o.options));return s.filter(o=>!n(o))};Oc.exports.stream=(t,e)=>{let r=ow(t,e),i=[];for(let a of r){let l=ex(a,sw.sync).map(tx(a));i.push(...l)}let n=o8(e),s=new $ve(a=>!n(a)),o=new eSe;return Zve(i.map(a=>nw.stream(a.pattern,a.options))).pipe(s).pipe(o)};Oc.exports.generateGlobTasks=ow;Oc.exports.hasMagic=(t,e)=>[].concat(t).some(r=>nw.isDynamicPattern(r,e));Oc.exports.gitignore=$k});var Rn=w((bnt,y8)=>{function CSe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}y8.exports=CSe});var ux=w((Qnt,w8)=>{var mSe=typeof global=="object"&&global&&global.Object===Object&&global;w8.exports=mSe});var Rs=w((vnt,B8)=>{var ESe=ux(),ISe=typeof self=="object"&&self&&self.Object===Object&&self,ySe=ESe||ISe||Function("return this")();B8.exports=ySe});var Q8=w((Snt,b8)=>{var wSe=Rs(),BSe=function(){return wSe.Date.now()};b8.exports=BSe});var S8=w((knt,v8)=>{var bSe=/\s/;function QSe(t){for(var e=t.length;e--&&bSe.test(t.charAt(e)););return e}v8.exports=QSe});var x8=w((xnt,k8)=>{var vSe=S8(),SSe=/^\s+/;function kSe(t){return t&&t.slice(0,vSe(t)+1).replace(SSe,"")}k8.exports=kSe});var Kc=w((Pnt,P8)=>{var xSe=Rs(),PSe=xSe.Symbol;P8.exports=PSe});var N8=w((Dnt,D8)=>{var R8=Kc(),F8=Object.prototype,DSe=F8.hasOwnProperty,RSe=F8.toString,Ed=R8?R8.toStringTag:void 0;function FSe(t){var e=DSe.call(t,Ed),r=t[Ed];try{t[Ed]=void 0;var i=!0}catch(s){}var n=RSe.call(t);return i&&(e?t[Ed]=r:delete t[Ed]),n}D8.exports=FSe});var T8=w((Rnt,L8)=>{var NSe=Object.prototype,LSe=NSe.toString;function TSe(t){return LSe.call(t)}L8.exports=TSe});var Hc=w((Fnt,O8)=>{var M8=Kc(),OSe=N8(),MSe=T8(),USe="[object Null]",KSe="[object Undefined]",U8=M8?M8.toStringTag:void 0;function HSe(t){return t==null?t===void 0?KSe:USe:U8&&U8 in Object(t)?OSe(t):MSe(t)}O8.exports=HSe});var Zo=w((Nnt,K8)=>{function jSe(t){return t!=null&&typeof t=="object"}K8.exports=jSe});var Id=w((Lnt,H8)=>{var GSe=Hc(),YSe=Zo(),qSe="[object Symbol]";function JSe(t){return typeof t=="symbol"||YSe(t)&&GSe(t)==qSe}H8.exports=JSe});var q8=w((Tnt,j8)=>{var WSe=x8(),G8=Rn(),zSe=Id(),Y8=0/0,_Se=/^[-+]0x[0-9a-f]+$/i,VSe=/^0b[01]+$/i,XSe=/^0o[0-7]+$/i,ZSe=parseInt;function $Se(t){if(typeof t=="number")return t;if(zSe(t))return Y8;if(G8(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=G8(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=WSe(t);var r=VSe.test(t);return r||XSe.test(t)?ZSe(t.slice(2),r?2:8):_Se.test(t)?Y8:+t}j8.exports=$Se});var z8=w((Ont,J8)=>{var eke=Rn(),gx=Q8(),W8=q8(),tke="Expected a function",rke=Math.max,ike=Math.min;function nke(t,e,r){var i,n,s,o,a,l,c=0,u=!1,g=!1,f=!0;if(typeof t!="function")throw new TypeError(tke);e=W8(e)||0,eke(r)&&(u=!!r.leading,g="maxWait"in r,s=g?rke(W8(r.maxWait)||0,e):s,f="trailing"in r?!!r.trailing:f);function h(U){var J=i,W=n;return i=n=void 0,c=U,o=t.apply(W,J),o}function p(U){return c=U,a=setTimeout(Q,e),u?h(U):o}function m(U){var J=U-l,W=U-c,ee=e-J;return g?ike(ee,s-W):ee}function y(U){var J=U-l,W=U-c;return l===void 0||J>=e||J<0||g&&W>=s}function Q(){var U=gx();if(y(U))return S(U);a=setTimeout(Q,m(U))}function S(U){return a=void 0,f&&i?h(U):(i=n=void 0,o)}function x(){a!==void 0&&clearTimeout(a),c=0,i=l=n=a=void 0}function M(){return a===void 0?o:S(gx())}function Y(){var U=gx(),J=y(U);if(i=arguments,n=this,l=U,J){if(a===void 0)return p(l);if(g)return clearTimeout(a),a=setTimeout(Q,e),h(l)}return a===void 0&&(a=setTimeout(Q,e)),o}return Y.cancel=x,Y.flush=M,Y}J8.exports=nke});var V8=w((Mnt,_8)=>{var ske=z8(),oke=Rn(),ake="Expected a function";function Ake(t,e,r){var i=!0,n=!0;if(typeof t!="function")throw new TypeError(ake);return oke(r)&&(i="leading"in r?!!r.leading:i,n="trailing"in r?!!r.trailing:n),ske(t,e,{leading:i,maxWait:e,trailing:n})}_8.exports=Ake});var $a=w((Za,vw)=>{"use strict";Object.defineProperty(Za,"__esModule",{value:!0});var nz=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function yke(t){return nz.includes(t)}var wke=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...nz];function Bke(t){return wke.includes(t)}var bke=["null","undefined","string","number","bigint","boolean","symbol"];function Qke(t){return bke.includes(t)}function Jg(t){return e=>typeof e===t}var{toString:sz}=Object.prototype,Sd=t=>{let e=sz.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&_.domElement(t))return"HTMLElement";if(Bke(e))return e},hr=t=>e=>Sd(e)===t;function _(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(_.observable(t))return"Observable";if(_.array(t))return"Array";if(_.buffer(t))return"Buffer";let e=Sd(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}_.undefined=Jg("undefined");_.string=Jg("string");var vke=Jg("number");_.number=t=>vke(t)&&!_.nan(t);_.bigint=Jg("bigint");_.function_=Jg("function");_.null_=t=>t===null;_.class_=t=>_.function_(t)&&t.toString().startsWith("class ");_.boolean=t=>t===!0||t===!1;_.symbol=Jg("symbol");_.numericString=t=>_.string(t)&&!_.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));_.array=(t,e)=>Array.isArray(t)?_.function_(e)?t.every(e):!0:!1;_.buffer=t=>{var e,r,i,n;return(n=(i=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||i===void 0?void 0:i.call(r,t))!==null&&n!==void 0?n:!1};_.nullOrUndefined=t=>_.null_(t)||_.undefined(t);_.object=t=>!_.null_(t)&&(typeof t=="object"||_.function_(t));_.iterable=t=>{var e;return _.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};_.asyncIterable=t=>{var e;return _.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};_.generator=t=>_.iterable(t)&&_.function_(t.next)&&_.function_(t.throw);_.asyncGenerator=t=>_.asyncIterable(t)&&_.function_(t.next)&&_.function_(t.throw);_.nativePromise=t=>hr("Promise")(t);var Ske=t=>{var e,r;return _.function_((e=t)===null||e===void 0?void 0:e.then)&&_.function_((r=t)===null||r===void 0?void 0:r.catch)};_.promise=t=>_.nativePromise(t)||Ske(t);_.generatorFunction=hr("GeneratorFunction");_.asyncGeneratorFunction=t=>Sd(t)==="AsyncGeneratorFunction";_.asyncFunction=t=>Sd(t)==="AsyncFunction";_.boundFunction=t=>_.function_(t)&&!t.hasOwnProperty("prototype");_.regExp=hr("RegExp");_.date=hr("Date");_.error=hr("Error");_.map=t=>hr("Map")(t);_.set=t=>hr("Set")(t);_.weakMap=t=>hr("WeakMap")(t);_.weakSet=t=>hr("WeakSet")(t);_.int8Array=hr("Int8Array");_.uint8Array=hr("Uint8Array");_.uint8ClampedArray=hr("Uint8ClampedArray");_.int16Array=hr("Int16Array");_.uint16Array=hr("Uint16Array");_.int32Array=hr("Int32Array");_.uint32Array=hr("Uint32Array");_.float32Array=hr("Float32Array");_.float64Array=hr("Float64Array");_.bigInt64Array=hr("BigInt64Array");_.bigUint64Array=hr("BigUint64Array");_.arrayBuffer=hr("ArrayBuffer");_.sharedArrayBuffer=hr("SharedArrayBuffer");_.dataView=hr("DataView");_.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;_.urlInstance=t=>hr("URL")(t);_.urlString=t=>{if(!_.string(t))return!1;try{return new URL(t),!0}catch(e){return!1}};_.truthy=t=>Boolean(t);_.falsy=t=>!t;_.nan=t=>Number.isNaN(t);_.primitive=t=>_.null_(t)||Qke(typeof t);_.integer=t=>Number.isInteger(t);_.safeInteger=t=>Number.isSafeInteger(t);_.plainObject=t=>{if(sz.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};_.typedArray=t=>yke(Sd(t));var kke=t=>_.safeInteger(t)&&t>=0;_.arrayLike=t=>!_.nullOrUndefined(t)&&!_.function_(t)&&kke(t.length);_.inRange=(t,e)=>{if(_.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(_.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var xke=1,Pke=["innerHTML","ownerDocument","style","attributes","nodeValue"];_.domElement=t=>_.object(t)&&t.nodeType===xke&&_.string(t.nodeName)&&!_.plainObject(t)&&Pke.every(e=>e in t);_.observable=t=>{var e,r,i,n;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((n=(i=t)["@@observable"])===null||n===void 0?void 0:n.call(i)):!1};_.nodeStream=t=>_.object(t)&&_.function_(t.pipe)&&!_.observable(t);_.infinite=t=>t===Infinity||t===-Infinity;var oz=t=>e=>_.integer(e)&&Math.abs(e%2)===t;_.evenInteger=oz(0);_.oddInteger=oz(1);_.emptyArray=t=>_.array(t)&&t.length===0;_.nonEmptyArray=t=>_.array(t)&&t.length>0;_.emptyString=t=>_.string(t)&&t.length===0;_.nonEmptyString=t=>_.string(t)&&t.length>0;var Dke=t=>_.string(t)&&!/\S/.test(t);_.emptyStringOrWhitespace=t=>_.emptyString(t)||Dke(t);_.emptyObject=t=>_.object(t)&&!_.map(t)&&!_.set(t)&&Object.keys(t).length===0;_.nonEmptyObject=t=>_.object(t)&&!_.map(t)&&!_.set(t)&&Object.keys(t).length>0;_.emptySet=t=>_.set(t)&&t.size===0;_.nonEmptySet=t=>_.set(t)&&t.size>0;_.emptyMap=t=>_.map(t)&&t.size===0;_.nonEmptyMap=t=>_.map(t)&&t.size>0;_.propertyKey=t=>_.any([_.string,_.number,_.symbol],t);_.formData=t=>hr("FormData")(t);_.urlSearchParams=t=>hr("URLSearchParams")(t);var az=(t,e,r)=>{if(!_.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};_.any=(t,...e)=>(_.array(t)?t:[t]).some(i=>az(Array.prototype.some,i,e));_.all=(t,...e)=>az(Array.prototype.every,t,e);var We=(t,e,r,i={})=>{if(!t){let{multipleValues:n}=i,s=n?`received values of types ${[...new Set(r.map(o=>`\`${_(o)}\``))].join(", ")}`:`received value of type \`${_(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${s}.`)}};Za.assert={undefined:t=>We(_.undefined(t),"undefined",t),string:t=>We(_.string(t),"string",t),number:t=>We(_.number(t),"number",t),bigint:t=>We(_.bigint(t),"bigint",t),function_:t=>We(_.function_(t),"Function",t),null_:t=>We(_.null_(t),"null",t),class_:t=>We(_.class_(t),"Class",t),boolean:t=>We(_.boolean(t),"boolean",t),symbol:t=>We(_.symbol(t),"symbol",t),numericString:t=>We(_.numericString(t),"string with a number",t),array:(t,e)=>{We(_.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>We(_.buffer(t),"Buffer",t),nullOrUndefined:t=>We(_.nullOrUndefined(t),"null or undefined",t),object:t=>We(_.object(t),"Object",t),iterable:t=>We(_.iterable(t),"Iterable",t),asyncIterable:t=>We(_.asyncIterable(t),"AsyncIterable",t),generator:t=>We(_.generator(t),"Generator",t),asyncGenerator:t=>We(_.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>We(_.nativePromise(t),"native Promise",t),promise:t=>We(_.promise(t),"Promise",t),generatorFunction:t=>We(_.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>We(_.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>We(_.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>We(_.boundFunction(t),"Function",t),regExp:t=>We(_.regExp(t),"RegExp",t),date:t=>We(_.date(t),"Date",t),error:t=>We(_.error(t),"Error",t),map:t=>We(_.map(t),"Map",t),set:t=>We(_.set(t),"Set",t),weakMap:t=>We(_.weakMap(t),"WeakMap",t),weakSet:t=>We(_.weakSet(t),"WeakSet",t),int8Array:t=>We(_.int8Array(t),"Int8Array",t),uint8Array:t=>We(_.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>We(_.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>We(_.int16Array(t),"Int16Array",t),uint16Array:t=>We(_.uint16Array(t),"Uint16Array",t),int32Array:t=>We(_.int32Array(t),"Int32Array",t),uint32Array:t=>We(_.uint32Array(t),"Uint32Array",t),float32Array:t=>We(_.float32Array(t),"Float32Array",t),float64Array:t=>We(_.float64Array(t),"Float64Array",t),bigInt64Array:t=>We(_.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>We(_.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>We(_.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>We(_.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>We(_.dataView(t),"DataView",t),urlInstance:t=>We(_.urlInstance(t),"URL",t),urlString:t=>We(_.urlString(t),"string with a URL",t),truthy:t=>We(_.truthy(t),"truthy",t),falsy:t=>We(_.falsy(t),"falsy",t),nan:t=>We(_.nan(t),"NaN",t),primitive:t=>We(_.primitive(t),"primitive",t),integer:t=>We(_.integer(t),"integer",t),safeInteger:t=>We(_.safeInteger(t),"integer",t),plainObject:t=>We(_.plainObject(t),"plain object",t),typedArray:t=>We(_.typedArray(t),"TypedArray",t),arrayLike:t=>We(_.arrayLike(t),"array-like",t),domElement:t=>We(_.domElement(t),"HTMLElement",t),observable:t=>We(_.observable(t),"Observable",t),nodeStream:t=>We(_.nodeStream(t),"Node.js Stream",t),infinite:t=>We(_.infinite(t),"infinite number",t),emptyArray:t=>We(_.emptyArray(t),"empty array",t),nonEmptyArray:t=>We(_.nonEmptyArray(t),"non-empty array",t),emptyString:t=>We(_.emptyString(t),"empty string",t),nonEmptyString:t=>We(_.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>We(_.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>We(_.emptyObject(t),"empty object",t),nonEmptyObject:t=>We(_.nonEmptyObject(t),"non-empty object",t),emptySet:t=>We(_.emptySet(t),"empty set",t),nonEmptySet:t=>We(_.nonEmptySet(t),"non-empty set",t),emptyMap:t=>We(_.emptyMap(t),"empty map",t),nonEmptyMap:t=>We(_.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>We(_.propertyKey(t),"PropertyKey",t),formData:t=>We(_.formData(t),"FormData",t),urlSearchParams:t=>We(_.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>We(_.evenInteger(t),"even integer",t),oddInteger:t=>We(_.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>We(_.directInstanceOf(t,e),"T",t),inRange:(t,e)=>We(_.inRange(t,e),"in range",t),any:(t,...e)=>We(_.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>We(_.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(_,{class:{value:_.class_},function:{value:_.function_},null:{value:_.null_}});Object.defineProperties(Za.assert,{class:{value:Za.assert.class_},function:{value:Za.assert.function_},null:{value:Za.assert.null_}});Za.default=_;vw.exports=_;vw.exports.default=_;vw.exports.assert=Za.assert});var Az=w((Gst,Rx)=>{"use strict";var Fx=class extends Error{constructor(e){super(e||"Promise was canceled");this.name="CancelError"}get isCanceled(){return!0}},kd=class{static fn(e){return(...r)=>new kd((i,n,s)=>{r.push(s),e(...r).then(i,n)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,i)=>{this._reject=i;let n=a=>{this._isPending=!1,r(a)},s=a=>{this._isPending=!1,i(a)},o=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(o,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(n,s,o)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new Fx(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(kd.prototype,Promise.prototype);Rx.exports=kd;Rx.exports.CancelError=Fx});var lz=w((Nx,Lx)=>{"use strict";Object.defineProperty(Nx,"__esModule",{value:!0});var Rke=require("tls"),Tx=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let i=typeof r.connect=="function",n=typeof r.secureConnect=="function",s=typeof r.close=="function",o=()=>{i&&r.connect(),t instanceof Rke.TLSSocket&&n&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),s&&t.once("close",r.close)};t.writable&&!t.connecting?o():t.connecting?t.once("connect",o):t.destroyed&&s&&r.close(t._hadError)};Nx.default=Tx;Lx.exports=Tx;Lx.exports.default=Tx});var cz=w((Ox,Mx)=>{"use strict";Object.defineProperty(Ox,"__esModule",{value:!0});var Fke=lz(),Nke=Number(process.versions.node.split(".")[0]),Ux=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=o=>{let a=o.emit.bind(o);o.emit=(l,...c)=>(l==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,o.emit=a),a(l,...c))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||Nke>=13)&&(e.phases.total=Date.now()-e.start)});let i=o=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let a=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};o.prependOnceListener("lookup",a),Fke.default(o,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(o.removeListener("lookup",a),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?i(t.socket):t.prependOnceListener("socket",i);let n=()=>{var o;e.upload=Date.now(),e.phases.request=e.upload-(o=e.secureConnect,o!=null?o:e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?n():t.prependOnceListener("finish",n),t.prependOnceListener("response",o=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,o.timings=e,r(o),o.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};Ox.default=Ux;Mx.exports=Ux;Mx.exports.default=Ux});var Cz=w((Yst,Kx)=>{"use strict";var{V4MAPPED:Lke,ADDRCONFIG:Tke,ALL:uz,promises:{Resolver:gz},lookup:Oke}=require("dns"),{promisify:Hx}=require("util"),Mke=require("os"),Wg=Symbol("cacheableLookupCreateConnection"),jx=Symbol("cacheableLookupInstance"),fz=Symbol("expires"),Uke=typeof uz=="number",hz=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},Kke=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},pz=()=>{let t=!1,e=!1;for(let r of Object.values(Mke.networkInterfaces()))for(let i of r)if(!i.internal&&(i.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Hke=t=>Symbol.iterator in t,dz={ttl:!0},jke={all:!0},Gx=class{constructor({cache:e=new Map,maxTtl:r=Infinity,fallbackDuration:i=3600,errorTtl:n=.15,resolver:s=new gz,lookup:o=Oke}={}){if(this.maxTtl=r,this.errorTtl=n,this._cache=e,this._resolver=s,this._dnsLookup=Hx(o),this._resolver instanceof gz?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=Hx(this._resolver.resolve4.bind(this._resolver)),this._resolve6=Hx(this._resolver.resolve6.bind(this._resolver))),this._iface=pz(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,i<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},i*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,i){if(typeof r=="function"?(i=r,r={}):typeof r=="number"&&(r={family:r}),!i)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(n=>{r.all?i(null,n):i(null,n.address,n.family,n.expires,n.ttl)},i)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let i=await this.query(e);if(r.family===6){let n=i.filter(s=>s.family===6);r.hints&Lke&&(Uke&&r.hints&uz||n.length===0)?Kke(i):i=n}else r.family===4&&(i=i.filter(n=>n.family===4));if(r.hints&Tke){let{_iface:n}=this;i=i.filter(s=>s.family===6?n.has6:n.has4)}if(i.length===0){let n=new Error(`cacheableLookup ENOTFOUND ${e}`);throw n.code="ENOTFOUND",n.hostname=e,n}return r.all?i:i[0]}async query(e){let r=await this._cache.get(e);if(!r){let i=this._pending[e];if(i)r=await i;else{let n=this.queryAndCache(e);this._pending[e]=n,r=await n}}return r=r.map(i=>N({},i)),r}async _resolve(e){let r=async c=>{try{return await c}catch(u){if(u.code==="ENODATA"||u.code==="ENOTFOUND")return[];throw u}},[i,n]=await Promise.all([this._resolve4(e,dz),this._resolve6(e,dz)].map(c=>r(c))),s=0,o=0,a=0,l=Date.now();for(let c of i)c.family=4,c.expires=l+c.ttl*1e3,s=Math.max(s,c.ttl);for(let c of n)c.family=6,c.expires=l+c.ttl*1e3,o=Math.max(o,c.ttl);return i.length>0?n.length>0?a=Math.min(s,o):a=s:a=o,{entries:[...i,...n],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch(r){return{entries:[],cacheTtl:0}}}async _set(e,r,i){if(this.maxTtl>0&&i>0){i=Math.min(i,this.maxTtl)*1e3,r[fz]=Date.now()+i;try{await this._cache.set(e,r,i)}catch(n){this.lookupAsync=async()=>{let s=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw s.cause=n,s}}Hke(this._cache)&&this._tick(i)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,jke);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let i=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,i),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let i=Infinity,n=Date.now();for(let[s,o]of this._cache){let a=o[fz];n>=a?this._cache.delete(s):a("lookup"in r||(r.lookup=this.lookup),e[Wg](r,i))}uninstall(e){if(hz(e),e[Wg]){if(e[jx]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[Wg],delete e[Wg],delete e[jx]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=pz(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};Kx.exports=Gx;Kx.exports.default=Gx});var Iz=w((qst,Yx)=>{"use strict";var Gke=typeof URL=="undefined"?require("url").URL:URL,Yke="text/plain",qke="us-ascii",mz=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),Jke=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let i=r[1].split(";"),n=r[2],s=e?"":r[3],o=!1;i[i.length-1]==="base64"&&(i.pop(),o=!0);let a=(i.shift()||"").toLowerCase(),c=[...i.map(u=>{let[g,f=""]=u.split("=").map(h=>h.trim());return g==="charset"&&(f=f.toLowerCase(),f===qke)?"":`${g}${f?`=${f}`:""}`}).filter(Boolean)];return o&&c.push("base64"),(c.length!==0||a&&a!==Yke)&&c.unshift(a),`data:${c.join(";")},${o?n.trim():n}${s?`#${s}`:""}`},Ez=(t,e)=>{if(e=N({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return Jke(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new Gke(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?!:).|^)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];mz(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])mz(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,"")),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};Yx.exports=Ez;Yx.exports.default=Ez});var Bz=w((Jst,yz)=>{yz.exports=wz;function wz(t,e){if(t&&e)return wz(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(i){r[i]=t[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var bz=Bz();qx.exports=bz(Sw);qx.exports.strict=bz(Qz);Sw.proto=Sw(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Sw(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Qz(this)},configurable:!0})});function Sw(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function Qz(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var Wx=w((zst,vz)=>{var Wke=Jx(),zke=function(){},_ke=function(t){return t.setHeader&&typeof t.abort=="function"},Vke=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},Sz=function(t,e,r){if(typeof e=="function")return Sz(t,null,e);e||(e={}),r=Wke(r||zke);var i=t._writableState,n=t._readableState,s=e.readable||e.readable!==!1&&t.readable,o=e.writable||e.writable!==!1&&t.writable,a=function(){t.writable||l()},l=function(){o=!1,s||r.call(t)},c=function(){s=!1,o||r.call(t)},u=function(p){r.call(t,p?new Error("exited with error code: "+p):null)},g=function(p){r.call(t,p)},f=function(){if(s&&!(n&&n.ended))return r.call(t,new Error("premature close"));if(o&&!(i&&i.ended))return r.call(t,new Error("premature close"))},h=function(){t.req.on("finish",l)};return _ke(t)?(t.on("complete",l),t.on("abort",f),t.req?h():t.on("request",h)):o&&!i&&(t.on("end",a),t.on("close",a)),Vke(t)&&t.on("exit",u),t.on("end",c),t.on("finish",l),e.error!==!1&&t.on("error",g),t.on("close",f),function(){t.removeListener("complete",l),t.removeListener("abort",f),t.removeListener("request",h),t.req&&t.req.removeListener("finish",l),t.removeListener("end",a),t.removeListener("close",a),t.removeListener("finish",l),t.removeListener("exit",u),t.removeListener("end",c),t.removeListener("error",g),t.removeListener("close",f)}};vz.exports=Sz});var Pz=w((_st,kz)=>{var Xke=Jx(),Zke=Wx(),zx=require("fs"),xd=function(){},$ke=/^v?\.0/.test(process.version),kw=function(t){return typeof t=="function"},exe=function(t){return!$ke||!zx?!1:(t instanceof(zx.ReadStream||xd)||t instanceof(zx.WriteStream||xd))&&kw(t.close)},txe=function(t){return t.setHeader&&kw(t.abort)},rxe=function(t,e,r,i){i=Xke(i);var n=!1;t.on("close",function(){n=!0}),Zke(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,exe(t))return t.close(xd);if(txe(t))return t.abort();if(kw(t.destroy))return t.destroy();i(o||new Error("stream was destroyed"))}}},xz=function(t){t()},ixe=function(t,e){return t.pipe(e)},nxe=function(){var t=Array.prototype.slice.call(arguments),e=kw(t[t.length-1]||xd)&&t.pop()||xd;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,i=t.map(function(n,s){var o=s0;return rxe(n,o,a,function(l){r||(r=l),l&&i.forEach(xz),!o&&(i.forEach(xz),e(r))})});return t.reduce(ixe)};kz.exports=nxe});var Rz=w((Vst,Dz)=>{"use strict";var{PassThrough:sxe}=require("stream");Dz.exports=t=>{t=N({},t);let{array:e}=t,{encoding:r}=t,i=r==="buffer",n=!1;e?n=!(r||i):r=r||"utf8",i&&(r=null);let s=new sxe({objectMode:n});r&&s.setEncoding(r);let o=0,a=[];return s.on("data",l=>{a.push(l),n?o=a.length:o+=l.length}),s.getBufferedValue=()=>e?a:i?Buffer.concat(a,o):a.join(""),s.getBufferedLength=()=>o,s}});var Fz=w((Xst,zg)=>{"use strict";var oxe=Pz(),axe=Rz(),_x=class extends Error{constructor(){super("maxBuffer exceeded");this.name="MaxBufferError"}};async function xw(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e=N({maxBuffer:Infinity},e);let{maxBuffer:r}=e,i;return await new Promise((n,s)=>{let o=a=>{a&&(a.bufferedData=i.getBufferedValue()),s(a)};i=oxe(t,axe(e),a=>{if(a){o(a);return}n()}),i.on("data",()=>{i.getBufferedLength()>r&&o(new _x)})}),i.getBufferedValue()}zg.exports=xw;zg.exports.default=xw;zg.exports.buffer=(t,e)=>xw(t,te(N({},e),{encoding:"buffer"}));zg.exports.array=(t,e)=>xw(t,te(N({},e),{array:!0}));zg.exports.MaxBufferError=_x});var Lz=w(($st,Nz)=>{"use strict";var Axe=[200,203,204,206,300,301,404,405,410,414,501],lxe=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],cxe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},uxe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function Vx(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let i of r){let[n,s]=i.split(/\s*=\s*/,2);e[n]=s===void 0?!0:s.replace(/^"|"$/g,"")}return e}function gxe(t){let e=[];for(let r in t){let i=t[r];e.push(i===!0?r:r+"="+i)}if(!!e.length)return e.join(", ")}Nz.exports=class{constructor(e,r,{shared:i,cacheHeuristic:n,immutableMinTimeToLive:s,ignoreCargoCult:o,trustServerDate:a,_fromObject:l}={}){if(l){this._fromObject(l);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=i!==!1,this._trustServerDate=a!==void 0?a:!0,this._cacheHeuristic=n!==void 0?n:.1,this._immutableMinTtl=s!==void 0?s:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=Vx(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=Vx(e.headers["cache-control"]),o&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":gxe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!r.headers["cache-control"]&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&lxe.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||Axe.indexOf(this._status)!==-1))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=Vx(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let i of r)if(e.headers[i]!==this._reqHeaders[i])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let i in e)cxe[i]||(r[i]=e[i]);if(e.connection){let i=e.connection.trim().split(/\s*,\s*/);for(let n of i)delete r[n]}if(r.warning){let i=r.warning.split(/,/).filter(n=>!/^\s*1[0-9][0-9]/.test(n));i.length?r.warning=i.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){return this._trustServerDate?this._serverDate():this._responseTime}_serverDate(){let e=Date.parse(this._resHeaders.date);if(isFinite(e)){let r=8*3600*1e3;if(Math.abs(this._responseTime-e)e&&(e=i)}let r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){let e=parseInt(this._resHeaders.age);return isFinite(e)?e:0}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this._serverDate();if(this._resHeaders.expires){let i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ii)return Math.max(e,(r-i)/1e3*this._cacheHeuristic)}return e}timeToLive(){return Math.max(0,this.maxAge()-this.age())*1e3}stale(){return this.maxAge()<=this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let n=r["if-none-match"].split(/,/).filter(s=>!/^\s*W\//.test(s));n.length?r["if-none-match"]=n.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),!r||!r.headers)throw Error("Response headers missing");let i=!1;if(r.status!==void 0&&r.status!=304?i=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let n={};for(let o in this._resHeaders)n[o]=o in r.headers&&!uxe[o]?r.headers[o]:this._resHeaders[o];let s=Object.assign({},r,{status:this._status,method:this._method,headers:n});return{policy:new this.constructor(e,s,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl,trustServerDate:this._trustServerDate}),modified:!1,matches:!0}}}});var Pw=w((eot,Tz)=>{"use strict";Tz.exports=t=>{let e={};for(let[r,i]of Object.entries(t))e[r.toLowerCase()]=i;return e}});var Uz=w((tot,Oz)=>{"use strict";var fxe=require("stream").Readable,hxe=Pw(),Mz=class extends fxe{constructor(e,r,i,n){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(i instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof n!="string")throw new TypeError("Argument `url` should be a string");super();this.statusCode=e,this.headers=hxe(r),this.body=i,this.url=n}_read(){this.push(this.body),this.push(null)}};Oz.exports=Mz});var Hz=w((rot,Kz)=>{"use strict";var pxe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Kz.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(pxe));for(let i of r)i in e||(e[i]=typeof t[i]=="function"?t[i].bind(t):t[i])}});var Gz=w((iot,jz)=>{"use strict";var dxe=require("stream").PassThrough,Cxe=Hz(),mxe=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new dxe;return Cxe(t,e),t.pipe(e)};jz.exports=mxe});var Yz=w(Xx=>{Xx.stringify=function t(e){if(typeof e=="undefined")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",i=Array.isArray(e);r=i?"[":"{";var n=!0;for(var s in e){var o=typeof e[s]=="function"||!i&&typeof e[s]=="undefined";Object.hasOwnProperty.call(e,s)&&!o&&(n||(r+=","),n=!1,i?e[s]==null?r+="null":r+=t(e[s]):e[s]!==void 0&&(r+=t(s)+":"+t(e[s])))}return r+=i?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e=="undefined"?"null":JSON.stringify(e)};Xx.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var zz=w((sot,qz)=>{"use strict";var Exe=require("events"),Jz=Yz(),Ixe=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(require(e[r]))(t)}return new Map},Wz=class extends Exe{constructor(e,r){super();if(this.opts=Object.assign({namespace:"keyv",serialize:Jz.stringify,deserialize:Jz.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let i=Object.assign({},this.opts);this.opts.store=Ixe(i)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",i=>this.emit("error",i)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:i}=this.opts;return Promise.resolve().then(()=>i.get(e)).then(n=>typeof n=="string"?this.opts.deserialize(n):n).then(n=>{if(n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(e);return}return r&&r.raw?n:n.value}})}set(e,r,i){e=this._getKeyPrefix(e),typeof i=="undefined"&&(i=this.opts.ttl),i===0&&(i=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof i=="number"?Date.now()+i:null;return r={value:r,expires:s},this.opts.serialize(r)}).then(s=>n.set(e,s,i)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};qz.exports=Wz});var Xz=w((oot,_z)=>{"use strict";var yxe=require("events"),Dw=require("url"),wxe=Iz(),Bxe=Fz(),Zx=Lz(),Vz=Uz(),bxe=Pw(),Qxe=Gz(),vxe=zz(),ea=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new vxe({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,i)=>{let n;if(typeof r=="string")n=$x(Dw.parse(r)),r={};else if(r instanceof Dw.URL)n=$x(Dw.parse(r.toString())),r={};else{let[g,...f]=(r.path||"").split("?"),h=f.length>0?`?${f.join("?")}`:"";n=$x(te(N({},r),{pathname:g,search:h}))}r=N(N({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},r),Sxe(n)),r.headers=bxe(r.headers);let s=new yxe,o=wxe(Dw.format(n),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${r.method}:${o}`,l=!1,c=!1,u=g=>{c=!0;let f=!1,h,p=new Promise(y=>{h=()=>{f||(f=!0,y())}}),m=y=>{if(l&&!g.forceRefresh){y.status=y.statusCode;let S=Zx.fromObject(l.cachePolicy).revalidatedPolicy(g,y);if(!S.modified){let x=S.policy.responseHeaders();y=new Vz(l.statusCode,x,l.body,l.url),y.cachePolicy=S.policy,y.fromCache=!0}}y.fromCache||(y.cachePolicy=new Zx(g,y,g),y.fromCache=!1);let Q;g.cache&&y.cachePolicy.storable()?(Q=Qxe(y),(async()=>{try{let S=Bxe.buffer(y);if(await Promise.race([p,new Promise(U=>y.once("end",U))]),f)return;let x=await S,M={cachePolicy:y.cachePolicy.toObject(),url:y.url,statusCode:y.fromCache?l.statusCode:y.statusCode,body:x},Y=g.strictTtl?y.cachePolicy.timeToLive():void 0;g.maxTtl&&(Y=Y?Math.min(Y,g.maxTtl):g.maxTtl),await this.cache.set(a,M,Y)}catch(S){s.emit("error",new ea.CacheError(S))}})()):g.cache&&l&&(async()=>{try{await this.cache.delete(a)}catch(S){s.emit("error",new ea.CacheError(S))}})(),s.emit("response",Q||y),typeof i=="function"&&i(Q||y)};try{let y=e(g,m);y.once("error",h),y.once("abort",h),s.emit("request",y)}catch(y){s.emit("error",new ea.RequestError(y))}};return(async()=>{let g=async h=>{await Promise.resolve();let p=h.cache?await this.cache.get(a):void 0;if(typeof p=="undefined")return u(h);let m=Zx.fromObject(p.cachePolicy);if(m.satisfiesWithoutRevalidation(h)&&!h.forceRefresh){let y=m.responseHeaders(),Q=new Vz(p.statusCode,y,p.body,p.url);Q.cachePolicy=m,Q.fromCache=!0,s.emit("response",Q),typeof i=="function"&&i(Q)}else l=p,h.headers=m.revalidationHeaders(h),u(h)},f=h=>s.emit("error",new ea.CacheError(h));this.cache.once("error",f),s.on("response",()=>this.cache.removeListener("error",f));try{await g(r)}catch(h){r.automaticFailover&&!c&&u(r),s.emit("error",new ea.CacheError(h))}})(),s}}};function Sxe(t){let e=N({},t);return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function $x(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}ea.RequestError=class extends Error{constructor(t){super(t.message);this.name="RequestError",Object.assign(this,t)}};ea.CacheError=class extends Error{constructor(t){super(t.message);this.name="CacheError",Object.assign(this,t)}};_z.exports=ea});var $z=w((aot,Zz)=>{"use strict";var kxe=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];Zz.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(kxe)),i={};for(let n of r)n in e||(i[n]={get(){let s=t[n];return typeof s=="function"?s.bind(t):s},set(s){t[n]=s},enumerable:!0,configurable:!1});return Object.defineProperties(e,i),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var t4=w((Aot,e4)=>{"use strict";var{Transform:xxe,PassThrough:Pxe}=require("stream"),eP=require("zlib"),Dxe=$z();e4.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof eP.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let i=!0,n=new xxe({transform(a,l,c){i=!1,c(null,a)},flush(a){a()}}),s=new Pxe({autoDestroy:!1,destroy(a,l){t.destroy(),l(a)}}),o=r?eP.createBrotliDecompress():eP.createUnzip();return o.once("error",a=>{if(i&&!t.readable){s.end();return}s.destroy(a)}),Dxe(t,s),t.pipe(n).pipe(o).pipe(s),s}});var tP=w((lot,r4)=>{"use strict";var i4=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[i,n]of this.oldCache.entries())this.onEviction(i,n);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};r4.exports=i4});var iP=w((cot,n4)=>{"use strict";var Rxe=require("events"),Fxe=require("tls"),Nxe=require("http2"),Lxe=tP(),gn=Symbol("currentStreamsCount"),s4=Symbol("request"),Fs=Symbol("cachedOriginSet"),_g=Symbol("gracefullyClosing"),Txe=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],Oxe=(t,e,r)=>{let i=0,n=t.length;for(;i>>1;r(t[s],e)?i=s+1:n=s}return i},Mxe=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,rP=(t,e)=>{for(let r of t)r[Fs].lengthe[Fs].includes(i))&&r[gn]+e[gn]<=e.remoteSettings.maxConcurrentStreams&&o4(r)},Uxe=(t,e)=>{for(let r of t)e[Fs].lengthr[Fs].includes(i))&&e[gn]+r[gn]<=r.remoteSettings.maxConcurrentStreams&&o4(e)},a4=({agent:t,isFree:e})=>{let r={};for(let i in t.sessions){let s=t.sessions[i].filter(o=>{let a=o[eA.kCurrentStreamsCount]{t[_g]=!0,t[gn]===0&&t.close()},eA=class extends Rxe{constructor({timeout:e=6e4,maxSessions:r=Infinity,maxFreeSessions:i=10,maxCachedTlsSessions:n=100}={}){super();this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=i,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Lxe({maxSize:n})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let i of Txe)e[i]&&(r+=`:${e[i]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let i=this.queue[e][r];this._sessionsCount{Array.isArray(i)?(i=[...i],n()):i=[{resolve:n,reject:s}];let o=this.normalizeOptions(r),a=eA.normalizeOrigin(e,r&&r.servername);if(a===void 0){for(let{reject:u}of i)u(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(o in this.sessions){let u=this.sessions[o],g=-1,f=-1,h;for(let p of u){let m=p.remoteSettings.maxConcurrentStreams;if(m=m||p[_g]||p.destroyed)continue;h||(g=m),y>f&&(h=p,f=y)}}if(h){if(i.length!==1){for(let{reject:p}of i){let m=new Error(`Expected the length of listeners to be 1, got ${i.length}. +Please report this to https://github.com/szmarczak/http2-wrapper/`);p(m)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=Nxe.connect(e,N({createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u)},r));f[gn]=0,f[_g]=!1;let h=()=>f[gn]{this.tlsSessionCache.set(u,y)}),f.once("error",y=>{for(let{reject:Q}of i)Q(y);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let y=this.sessions[o];y.splice(y.indexOf(f),1),y.length===0&&delete this.sessions[o]}else{let y=new Error("Session closed without receiving a SETTINGS frame");y.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:Q}of i)Q(y);l()}this._tryToCreateNewSession(o,a)});let m=()=>{if(!(!(o in this.queue)||!h())){for(let y of f[Fs])if(y in this.queue[o]){let{listeners:Q}=this.queue[o][y];for(;Q.length!==0&&h();)Q.shift().resolve(f);let S=this.queue[o];if(S[y].listeners.length===0&&(delete S[y],Object.keys(S).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[Fs]=f.originSet,!!h()&&(m(),rP(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let y=new Error("Agent has been destroyed");for(let Q of i)Q.reject(y);f.destroy();return}f[Fs]=f.originSet;{let y=this.sessions;if(o in y){let Q=y[o];Q.splice(Oxe(Q,f,Mxe),0,f)}else y[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),m(),l(),f[gn]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,r,i),i.length=0),f.on("remoteSettings",()=>{m(),rP(this.sessions[o],f)})}),f[s4]=f.request,f.request=(y,Q)=>{if(f[_g])throw new Error("The session is gracefully closing. No new streams are allowed.");let S=f[s4](y,Q);return f.ref(),++f[gn],f[gn]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,S.once("close",()=>{if(p=h(),--f[gn],!f.destroyed&&!f.closed&&(Uxe(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let x=f[gn]===0;x&&f.unref(),x&&(this._freeSessionsCount>this.maxFreeSessions||f[_g])?f.close():(rP(this.sessions[o],f),m())}}),S}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,r,i,n){return new Promise((s,o)=>{this.getSession(e,r,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,r){return eA.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof r.servername=="undefined"&&(r.servername=n),Fxe.connect(i,n,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[gn]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let i of r)i.destroy(e);for(let r of Object.values(this.queue))for(let i of Object.values(r))i.destroyed=!0;this.queue={}}get freeSessions(){return a4({agent:this,isFree:!0})}get busySessions(){return a4({agent:this,isFree:!1})}};eA.kCurrentStreamsCount=gn;eA.kGracefullyClosing=_g;n4.exports={Agent:eA,globalAgent:new eA}});var nP=w((uot,A4)=>{"use strict";var{Readable:Kxe}=require("stream"),l4=class extends Kxe{constructor(e,r){super({highWaterMark:r,autoDestroy:!1});this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};A4.exports=l4});var sP=w((got,c4)=>{"use strict";c4.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var g4=w((fot,u4)=>{"use strict";u4.exports=(t,e,r)=>{for(let i of r)t.on(i,(...n)=>e.emit(i,...n))}});var h4=w((hot,f4)=>{"use strict";f4.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var d4=w((dot,p4)=>{"use strict";var Vg=(t,e,r)=>{p4.exports[e]=class extends t{constructor(...n){super(typeof r=="string"?r:r(n));this.name=`${super.name} [${e}]`,this.code=e}}};Vg(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],i=Array.isArray(r);return i&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${i?"one of":"of"} type ${r}. Received ${typeof t[2]}`});Vg(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);Vg(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);Vg(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);Vg(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);Vg(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var lP=w((Cot,C4)=>{"use strict";var Hxe=require("http2"),{Writable:jxe}=require("stream"),{Agent:m4,globalAgent:Gxe}=iP(),Yxe=nP(),qxe=sP(),Jxe=g4(),Wxe=h4(),{ERR_INVALID_ARG_TYPE:oP,ERR_INVALID_PROTOCOL:zxe,ERR_HTTP_HEADERS_SENT:E4,ERR_INVALID_HTTP_TOKEN:_xe,ERR_HTTP_INVALID_HEADER_VALUE:Vxe,ERR_INVALID_CHAR:Xxe}=d4(),{HTTP2_HEADER_STATUS:I4,HTTP2_HEADER_METHOD:y4,HTTP2_HEADER_PATH:w4,HTTP2_METHOD_CONNECT:Zxe}=Hxe.constants,Wi=Symbol("headers"),aP=Symbol("origin"),AP=Symbol("session"),B4=Symbol("options"),Rw=Symbol("flushedHeaders"),Pd=Symbol("jobs"),$xe=/^[\^`\-\w!#$%&*+.|~]+$/,ePe=/[^\t\u0020-\u007E\u0080-\u00FF]/,b4=class extends jxe{constructor(e,r,i){super({autoDestroy:!1});let n=typeof e=="string"||e instanceof URL;if(n&&(e=qxe(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(i=r,r=n?e:N({},e)):r=N(N({},e),r),r.h2session)this[AP]=r.h2session;else if(r.agent===!1)this.agent=new m4({maxFreeSessions:0});else if(typeof r.agent=="undefined"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new m4({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=Gxe;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new oP("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new zxe(r.protocol,"https:");let s=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,o=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:a}=r;if(r.timeout=void 0,this[Wi]=Object.create(null),this[Pd]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[l,c]of Object.entries(r.headers))this.setHeader(l,c);r.auth&&!("authorization"in this[Wi])&&(this[Wi].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[B4]=r,s===443?(this[aP]=`https://${o}`,":authority"in this[Wi]||(this[Wi][":authority"]=o)):(this[aP]=`https://${o}:${s}`,":authority"in this[Wi]||(this[Wi][":authority"]=`${o}:${s}`)),a&&this.setTimeout(a),i&&this.once("response",i),this[Rw]=!1}get method(){return this[Wi][y4]}set method(e){e&&(this[Wi][y4]=e.toUpperCase())}get path(){return this[Wi][w4]}set path(e){e&&(this[Wi][w4]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,i){if(this._mustNotHaveABody){i(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let n=()=>this._request.write(e,r,i);this._request?n():this[Pd].push(n)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[Pd].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[Rw]||this.destroyed)return;this[Rw]=!0;let e=this.method===Zxe,r=i=>{if(this._request=i,this.destroyed){i.destroy();return}e||Jxe(i,this,["timeout","continue","close","error"]);let n=o=>(...a)=>{!this.writable&&!this.destroyed?o(...a):this.once("finish",()=>{o(...a)})};i.once("response",n((o,a,l)=>{let c=new Yxe(this.socket,i.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=o[I4],c.headers=o,c.rawHeaders=l,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,i,Buffer.alloc(0))?this.emit("close"):i.destroy()):(i.on("data",u=>{!c._dumped&&!c.push(u)&&i.pause()}),i.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),i.once("headers",n(o=>this.emit("information",{statusCode:o[I4]}))),i.once("trailers",n((o,a,l)=>{let{res:c}=this;c.trailers=o,c.rawTrailers=l}));let{socket:s}=i.session;this.socket=s,this.connection=s;for(let o of this[Pd])o();this.emit("socket",this.socket)};if(this[AP])try{r(this[AP].request(this[Wi]))}catch(i){this.emit("error",i)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[aP],this[B4],this[Wi]))}catch(i){this.emit("error",i)}}}getHeader(e){if(typeof e!="string")throw new oP("name","string",e);return this[Wi][e.toLowerCase()]}get headersSent(){return this[Rw]}removeHeader(e){if(typeof e!="string")throw new oP("name","string",e);if(this.headersSent)throw new E4("remove");delete this[Wi][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new E4("set");if(typeof e!="string"||!$xe.test(e)&&!Wxe(e))throw new _xe("Header name",e);if(typeof r=="undefined")throw new Vxe(r,e);if(ePe.test(r))throw new Xxe("header content",e);this[Wi][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let i=()=>this._request.setTimeout(e,r);return this._request?i():this[Pd].push(i),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};C4.exports=b4});var v4=w((mot,Q4)=>{"use strict";var tPe=require("tls");Q4.exports=(t={})=>new Promise((e,r)=>{let i=tPe.connect(t,()=>{t.resolveSocket?(i.off("error",r),e({alpnProtocol:i.alpnProtocol,socket:i})):(i.destroy(),e({alpnProtocol:i.alpnProtocol}))});i.on("error",r)})});var k4=w((Eot,S4)=>{"use strict";var rPe=require("net");S4.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),rPe.isIP(e)?"":e}});var D4=w((Iot,cP)=>{"use strict";var x4=require("http"),uP=require("https"),iPe=v4(),nPe=tP(),sPe=lP(),oPe=k4(),aPe=sP(),Fw=new nPe({maxSize:100}),Dd=new Map,P4=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let i=()=>{t.emit("free",e,r)};e.on("free",i);let n=()=>{t.removeSocket(e,r)};e.on("close",n);let s=()=>{t.removeSocket(e,r),e.off("close",n),e.off("free",i),e.off("agentRemove",s)};e.on("agentRemove",s),t.emit("free",e,r)},APe=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!Fw.has(e)){if(Dd.has(e))return(await Dd.get(e)).alpnProtocol;let{path:r,agent:i}=t;t.path=t.socketPath;let n=iPe(t);Dd.set(e,n);try{let{socket:s,alpnProtocol:o}=await n;if(Fw.set(e,o),t.path=r,o==="h2")s.destroy();else{let{globalAgent:a}=uP,l=uP.Agent.prototype.createConnection;i?i.createConnection===l?P4(i,s,t):s.destroy():a.createConnection===l?P4(a,s,t):s.destroy()}return Dd.delete(e),o}catch(s){throw Dd.delete(e),s}}return Fw.get(e)};cP.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=aPe(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e=te(N(N({ALPNProtocols:["h2","http/1.1"]},t),e),{resolveSocket:!0}),!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let i=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||oPe(e),e.port=e.port||(i?443:80),e._defaultAgent=i?uP.globalAgent:x4.globalAgent;let n=e.agent;if(n){if(n.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=n[i?"https":"http"]}return i&&await APe(e)==="h2"?(n&&(e.agent=n.http2),new sPe(e,r)):x4.request(e,r)};cP.exports.protocolCache=Fw});var F4=w((yot,R4)=>{"use strict";var lPe=require("http2"),cPe=iP(),gP=lP(),uPe=nP(),gPe=D4(),fPe=(t,e,r)=>new gP(t,e,r),hPe=(t,e,r)=>{let i=new gP(t,e,r);return i.end(),i};R4.exports=te(N(te(N({},lPe),{ClientRequest:gP,IncomingMessage:uPe}),cPe),{request:fPe,get:hPe,auto:gPe})});var hP=w(fP=>{"use strict";Object.defineProperty(fP,"__esModule",{value:!0});var N4=$a();fP.default=t=>N4.default.nodeStream(t)&&N4.default.function_(t.getBoundary)});var M4=w(pP=>{"use strict";Object.defineProperty(pP,"__esModule",{value:!0});var L4=require("fs"),T4=require("util"),O4=$a(),pPe=hP(),dPe=T4.promisify(L4.stat);pP.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(O4.default.string(t))return Buffer.byteLength(t);if(O4.default.buffer(t))return t.length;if(pPe.default(t))return T4.promisify(t.getLength.bind(t))();if(t instanceof L4.ReadStream){let{size:r}=await dPe(t.path);return r===0?void 0:r}}});var CP=w(dP=>{"use strict";Object.defineProperty(dP,"__esModule",{value:!0});function CPe(t,e,r){let i={};for(let n of r)i[n]=(...s)=>{e.emit(n,...s)},t.on(n,i[n]);return()=>{for(let n of r)t.off(n,i[n])}}dP.default=CPe});var U4=w(mP=>{"use strict";Object.defineProperty(mP,"__esModule",{value:!0});mP.default=()=>{let t=[];return{once(e,r,i){e.once(r,i),t.push({origin:e,event:r,fn:i})},unhandleAll(){for(let e of t){let{origin:r,event:i,fn:n}=e;r.removeListener(i,n)}t.length=0}}}});var H4=w(Rd=>{"use strict";Object.defineProperty(Rd,"__esModule",{value:!0});Rd.TimeoutError=void 0;var mPe=require("net"),EPe=U4(),K4=Symbol("reentry"),IPe=()=>{},EP=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`);this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};Rd.TimeoutError=EP;Rd.default=(t,e,r)=>{if(K4 in t)return IPe;t[K4]=!0;let i=[],{once:n,unhandleAll:s}=EPe.default(),o=(g,f,h)=>{var p;let m=setTimeout(f,g,g,h);(p=m.unref)===null||p===void 0||p.call(m);let y=()=>{clearTimeout(m)};return i.push(y),y},{host:a,hostname:l}=r,c=(g,f)=>{t.destroy(new EP(g,f))},u=()=>{for(let g of i)g();s()};if(t.once("error",g=>{if(u(),t.listenerCount("error")===0)throw g}),t.once("close",u),n(t,"response",g=>{n(g,"end",u)}),typeof e.request!="undefined"&&o(e.request,c,"request"),typeof e.socket!="undefined"){let g=()=>{c(e.socket,"socket")};t.setTimeout(e.socket,g),i.push(()=>{t.removeListener("timeout",g)})}return n(t,"socket",g=>{var f;let{socketPath:h}=t;if(g.connecting){let p=Boolean(h!=null?h:mPe.isIP((f=l!=null?l:a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup!="undefined"&&!p&&typeof g.address().address=="undefined"){let m=o(e.lookup,c,"lookup");n(g,"lookup",m)}if(typeof e.connect!="undefined"){let m=()=>o(e.connect,c,"connect");p?n(g,"connect",m()):n(g,"lookup",y=>{y===null&&n(g,"connect",m())})}typeof e.secureConnect!="undefined"&&r.protocol==="https:"&&n(g,"connect",()=>{let m=o(e.secureConnect,c,"secureConnect");n(g,"secureConnect",m)})}if(typeof e.send!="undefined"){let p=()=>o(e.send,c,"send");g.connecting?n(g,"connect",()=>{n(t,"upload-complete",p())}):n(t,"upload-complete",p())}}),typeof e.response!="undefined"&&n(t,"upload-complete",()=>{let g=o(e.response,c,"response");n(t,"response",g)}),u}});var G4=w(IP=>{"use strict";Object.defineProperty(IP,"__esModule",{value:!0});var j4=$a();IP.default=t=>{t=t;let e={protocol:t.protocol,hostname:j4.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return j4.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var Y4=w(yP=>{"use strict";Object.defineProperty(yP,"__esModule",{value:!0});var yPe=require("url"),wPe=["protocol","host","hostname","port","pathname","search"];yP.default=(t,e)=>{var r,i;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(i=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&i!==void 0?i:""}`}let n=new yPe.URL(t);if(e.path){let s=e.path.indexOf("?");s===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,s),e.search=e.path.slice(s+1)),delete e.path}for(let s of wPe)e[s]&&(n[s]=e[s].toString());return n}});var J4=w(wP=>{"use strict";Object.defineProperty(wP,"__esModule",{value:!0});var q4=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};wP.default=q4});var bP=w(BP=>{"use strict";Object.defineProperty(BP,"__esModule",{value:!0});var BPe=async t=>{let e=[],r=0;for await(let i of t)e.push(i),r+=Buffer.byteLength(i);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};BP.default=BPe});var z4=w(Yc=>{"use strict";Object.defineProperty(Yc,"__esModule",{value:!0});Yc.dnsLookupIpVersionToFamily=Yc.isDnsLookupIpVersion=void 0;var W4={auto:0,ipv4:4,ipv6:6};Yc.isDnsLookupIpVersion=t=>t in W4;Yc.dnsLookupIpVersionToFamily=t=>{if(Yc.isDnsLookupIpVersion(t))return W4[t];throw new Error("Invalid DNS lookup IP version")}});var QP=w(Nw=>{"use strict";Object.defineProperty(Nw,"__esModule",{value:!0});Nw.isResponseOk=void 0;Nw.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var V4=w(vP=>{"use strict";Object.defineProperty(vP,"__esModule",{value:!0});var _4=new Set;vP.default=t=>{_4.has(t)||(_4.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var X4=w(SP=>{"use strict";Object.defineProperty(SP,"__esModule",{value:!0});var Ir=$a(),bPe=(t,e)=>{if(Ir.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");Ir.assert.any([Ir.default.string,Ir.default.undefined],t.encoding),Ir.assert.any([Ir.default.boolean,Ir.default.undefined],t.resolveBodyOnly),Ir.assert.any([Ir.default.boolean,Ir.default.undefined],t.methodRewriting),Ir.assert.any([Ir.default.boolean,Ir.default.undefined],t.isStream),Ir.assert.any([Ir.default.string,Ir.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry=N({},e.retry):t.retry={calculateDelay:i=>i.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Ir.default.object(r)?(t.retry=N(N({},t.retry),r),t.retry.methods=[...new Set(t.retry.methods.map(i=>i.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Ir.default.number(r)&&(t.retry.limit=r),Ir.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Ir.default.number))),Ir.default.object(t.pagination)){e&&(t.pagination=N(N({},e.pagination),t.pagination));let{pagination:i}=t;if(!Ir.default.function_(i.transform))throw new Error("`options.pagination.transform` must be implemented");if(!Ir.default.function_(i.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!Ir.default.function_(i.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!Ir.default.function_(i.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};SP.default=bPe});var Z4=w(Fd=>{"use strict";Object.defineProperty(Fd,"__esModule",{value:!0});Fd.retryAfterStatusCodes=void 0;Fd.retryAfterStatusCodes=new Set([413,429,503]);var QPe=({attemptCount:t,retryOptions:e,error:r,retryAfter:i})=>{if(t>e.limit)return 0;let n=e.methods.includes(r.options.method),s=e.errorCodes.includes(r.code),o=r.response&&e.statusCodes.includes(r.response.statusCode);if(!n||!s&&!o)return 0;if(r.response){if(i)return e.maxRetryAfter===void 0||i>e.maxRetryAfter?0:i;if(r.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(t-1)*1e3+a};Fd.default=QPe});var Ld=w(qt=>{"use strict";Object.defineProperty(qt,"__esModule",{value:!0});qt.UnsupportedProtocolError=qt.ReadError=qt.TimeoutError=qt.UploadError=qt.CacheError=qt.HTTPError=qt.MaxRedirectsError=qt.RequestError=qt.setNonEnumerableProperties=qt.knownHookEvents=qt.withoutBody=qt.kIsNormalizedAlready=void 0;var $4=require("util"),e_=require("stream"),vPe=require("fs"),al=require("url"),t_=require("http"),kP=require("http"),SPe=require("https"),kPe=cz(),xPe=Cz(),r_=Xz(),PPe=t4(),DPe=F4(),RPe=Pw(),me=$a(),FPe=M4(),i_=hP(),NPe=CP(),n_=H4(),LPe=G4(),s_=Y4(),TPe=J4(),OPe=bP(),o_=z4(),MPe=QP(),Al=V4(),UPe=X4(),KPe=Z4(),xP,Ri=Symbol("request"),Lw=Symbol("response"),Xg=Symbol("responseSize"),Zg=Symbol("downloadedSize"),$g=Symbol("bodySize"),ef=Symbol("uploadedSize"),Tw=Symbol("serverResponsesPiped"),a_=Symbol("unproxyEvents"),A_=Symbol("isFromCache"),PP=Symbol("cancelTimeouts"),l_=Symbol("startedReading"),tf=Symbol("stopReading"),Ow=Symbol("triggerRead"),ll=Symbol("body"),Nd=Symbol("jobs"),c_=Symbol("originalResponse"),u_=Symbol("retryTimeout");qt.kIsNormalizedAlready=Symbol("isNormalizedAlready");var HPe=me.default.string(process.versions.brotli);qt.withoutBody=new Set(["GET","HEAD"]);qt.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function jPe(t){for(let e in t){let r=t[e];if(!me.default.string(r)&&!me.default.number(r)&&!me.default.boolean(r)&&!me.default.null_(r)&&!me.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function GPe(t){return me.default.object(t)&&!("statusCode"in t)}var DP=new TPe.default,YPe=async t=>new Promise((e,r)=>{let i=n=>{r(n)};t.pending||e(),t.once("error",i),t.once("ready",()=>{t.off("error",i),e()})}),qPe=new Set([300,301,302,303,304,307,308]),JPe=["context","body","json","form"];qt.setNonEnumerableProperties=(t,e)=>{let r={};for(let i of t)if(!!i)for(let n of JPe)n in i&&(r[n]={writable:!0,configurable:!0,enumerable:!1,value:i[n]});Object.defineProperties(e,r)};var fi=class extends Error{constructor(e,r,i){var n;super(e);if(Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,i instanceof RP?(Object.defineProperty(this,"request",{enumerable:!1,value:i}),Object.defineProperty(this,"response",{enumerable:!1,value:i[Lw]}),Object.defineProperty(this,"options",{enumerable:!1,value:i.options})):Object.defineProperty(this,"options",{enumerable:!1,value:i}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,me.default.string(r.stack)&&me.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,o=this.stack.slice(s).split(` +`).reverse(),a=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` +`).reverse();for(;a.length!==0&&a[0]===o[0];)o.shift();this.stack=`${this.stack.slice(0,s)}${o.reverse().join(` +`)}${a.reverse().join(` +`)}`}}};qt.RequestError=fi;var FP=class extends fi{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e);this.name="MaxRedirectsError"}};qt.MaxRedirectsError=FP;var NP=class extends fi{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request);this.name="HTTPError"}};qt.HTTPError=NP;var LP=class extends fi{constructor(e,r){super(e.message,e,r);this.name="CacheError"}};qt.CacheError=LP;var TP=class extends fi{constructor(e,r){super(e.message,e,r);this.name="UploadError"}};qt.UploadError=TP;var OP=class extends fi{constructor(e,r,i){super(e.message,e,i);this.name="TimeoutError",this.event=e.event,this.timings=r}};qt.TimeoutError=OP;var Mw=class extends fi{constructor(e,r){super(e.message,e,r);this.name="ReadError"}};qt.ReadError=Mw;var MP=class extends fi{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e);this.name="UnsupportedProtocolError"}};qt.UnsupportedProtocolError=MP;var WPe=["socket","connect","continue","information","upgrade","timeout"],RP=class extends e_.Duplex{constructor(e,r={},i){super({autoDestroy:!1,highWaterMark:0});this[Zg]=0,this[ef]=0,this.requestInitialized=!1,this[Tw]=new Set,this.redirects=[],this[tf]=!1,this[Ow]=!1,this[Nd]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof kP.IncomingMessage&&(this.options.headers=N(N({},c.headers),this.options.headers))});let{json:o,body:a,form:l}=r;if((o||a||l)&&this._lockWrite(),qt.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,i)}catch(c){me.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof vPe.ReadStream&&await YPe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[Ri])===null||c===void 0||c.destroy();return}for(let g of this[Nd])g();this[Nd].length=0,this.requestInitialized=!0}catch(u){if(u instanceof fi){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,r,i){var n,s,o,a,l;let c=r;if(me.default.object(e)&&!me.default.urlInstance(e))r=N(N(N({},i),e),r);else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r=N(N({},i),r),e!==void 0&&(r.url=e),me.default.urlInstance(r.url)&&(r.url=new al.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),me.assert.any([me.default.string,me.default.undefined],r.method),me.assert.any([me.default.object,me.default.undefined],r.headers),me.assert.any([me.default.string,me.default.urlInstance,me.default.undefined],r.prefixUrl),me.assert.any([me.default.object,me.default.undefined],r.cookieJar),me.assert.any([me.default.object,me.default.string,me.default.undefined],r.searchParams),me.assert.any([me.default.object,me.default.string,me.default.undefined],r.cache),me.assert.any([me.default.object,me.default.number,me.default.undefined],r.timeout),me.assert.any([me.default.object,me.default.undefined],r.context),me.assert.any([me.default.object,me.default.undefined],r.hooks),me.assert.any([me.default.boolean,me.default.undefined],r.decompress),me.assert.any([me.default.boolean,me.default.undefined],r.ignoreInvalidCookies),me.assert.any([me.default.boolean,me.default.undefined],r.followRedirect),me.assert.any([me.default.number,me.default.undefined],r.maxRedirects),me.assert.any([me.default.boolean,me.default.undefined],r.throwHttpErrors),me.assert.any([me.default.boolean,me.default.undefined],r.http2),me.assert.any([me.default.boolean,me.default.undefined],r.allowGetBody),me.assert.any([me.default.string,me.default.undefined],r.localAddress),me.assert.any([o_.isDnsLookupIpVersion,me.default.undefined],r.dnsLookupIpVersion),me.assert.any([me.default.object,me.default.undefined],r.https),me.assert.any([me.default.boolean,me.default.undefined],r.rejectUnauthorized),r.https&&(me.assert.any([me.default.boolean,me.default.undefined],r.https.rejectUnauthorized),me.assert.any([me.default.function_,me.default.undefined],r.https.checkServerIdentity),me.assert.any([me.default.string,me.default.object,me.default.array,me.default.undefined],r.https.certificateAuthority),me.assert.any([me.default.string,me.default.object,me.default.array,me.default.undefined],r.https.key),me.assert.any([me.default.string,me.default.object,me.default.array,me.default.undefined],r.https.certificate),me.assert.any([me.default.string,me.default.undefined],r.https.passphrase),me.assert.any([me.default.string,me.default.buffer,me.default.array,me.default.undefined],r.https.pfx)),me.assert.any([me.default.object,me.default.undefined],r.cacheOptions),me.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(i==null?void 0:i.headers)?r.headers=N({},r.headers):r.headers=RPe(N(N({},i==null?void 0:i.headers),r.headers)),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(i==null?void 0:i.searchParams)){let h;if(me.default.string(r.searchParams)||r.searchParams instanceof al.URLSearchParams)h=new al.URLSearchParams(r.searchParams);else{jPe(r.searchParams),h=new al.URLSearchParams;for(let p in r.searchParams){let m=r.searchParams[p];m===null?h.append(p,""):m!==void 0&&h.append(p,m)}}(n=i==null?void 0:i.searchParams)===null||n===void 0||n.forEach((p,m)=>{h.has(m)||h.append(m,p)}),r.searchParams=h}if(r.username=(s=r.username)!==null&&s!==void 0?s:"",r.password=(o=r.password)!==null&&o!==void 0?o:"",me.default.undefined(r.prefixUrl)?r.prefixUrl=(a=i==null?void 0:i.prefixUrl)!==null&&a!==void 0?a:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),me.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=s_.default(r.prefixUrl+r.url,r)}else(me.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=s_.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:h}=r;Object.defineProperty(r,"prefixUrl",{set:m=>{let y=r.url;if(!y.href.startsWith(m))throw new Error(`Cannot change \`prefixUrl\` from ${h} to ${m}: ${y.href}`);r.url=new al.URL(m+y.href.slice(h.length)),h=m},get:()=>h});let{protocol:p}=r.url;if(p==="unix:"&&(p="http:",r.url=new al.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),p!=="http:"&&p!=="https:")throw new MP(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:u}=r;if(u){let{setCookie:h,getCookieString:p}=u;me.assert.function_(h),me.assert.function_(p),h.length===4&&p.length===0&&(h=$4.promisify(h.bind(r.cookieJar)),p=$4.promisify(p.bind(r.cookieJar)),r.cookieJar={setCookie:h,getCookieString:p})}let{cache:g}=r;if(g&&(DP.has(g)||DP.set(g,new r_((h,p)=>{let m=h[Ri](h,p);return me.default.promise(m)&&(m.once=(y,Q)=>{if(y==="error")m.catch(Q);else if(y==="abort")(async()=>{try{(await m).once("abort",Q)}catch(S){}})();else throw new Error(`Unknown HTTP2 promise event: ${y}`);return m}),m},g))),r.cacheOptions=N({},r.cacheOptions),r.dnsCache===!0)xP||(xP=new xPe.default),r.dnsCache=xP;else if(!me.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${me.default(r.dnsCache)}`);me.default.number(r.timeout)?r.timeout={request:r.timeout}:i&&r.timeout!==i.timeout?r.timeout=N(N({},i.timeout),r.timeout):r.timeout=N({},r.timeout),r.context||(r.context={});let f=r.hooks===(i==null?void 0:i.hooks);r.hooks=N({},r.hooks);for(let h of qt.knownHookEvents)if(h in r.hooks)if(me.default.array(r.hooks[h]))r.hooks[h]=[...r.hooks[h]];else throw new TypeError(`Parameter \`${h}\` must be an Array, got ${me.default(r.hooks[h])}`);else r.hooks[h]=[];if(i&&!f)for(let h of qt.knownHookEvents)i.hooks[h].length>0&&(r.hooks[h]=[...i.hooks[h],...r.hooks[h]]);if("family"in r&&Al.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),(i==null?void 0:i.https)&&(r.https=N(N({},i.https),r.https)),"rejectUnauthorized"in r&&Al.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&Al.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&Al.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&Al.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&Al.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&Al.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&Al.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let h in r.agent)if(h!=="http"&&h!=="https"&&h!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${h}\``)}return r.maxRedirects=(l=r.maxRedirects)!==null&&l!==void 0?l:0,qt.setNonEnumerableProperties([i,c],r),UPe.default(r,i)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,i=!me.default.undefined(e.form),n=!me.default.undefined(e.json),s=!me.default.undefined(e.body),o=i||n||s,a=qt.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,o){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,i,n].filter(l=>l).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof e_.Readable)&&!me.default.string(e.body)&&!me.default.buffer(e.body)&&!i_.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(i&&!me.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let l=!me.default.string(r["content-type"]);s?(i_.default(e.body)&&l&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[ll]=e.body):i?(l&&(r["content-type"]="application/x-www-form-urlencoded"),this[ll]=new al.URLSearchParams(e.form).toString()):(l&&(r["content-type"]="application/json"),this[ll]=e.stringifyJson(e.json));let c=await FPe.default(this[ll],e.headers);me.default.undefined(r["content-length"])&&me.default.undefined(r["transfer-encoding"])&&!a&&!me.default.undefined(c)&&(r["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[$g]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:i}=r;this[c_]=e,r.decompress&&(e=PPe(e));let n=e.statusCode,s=e;s.statusMessage=s.statusMessage?s.statusMessage:t_.STATUS_CODES[n],s.url=r.url.toString(),s.requestUrl=this.requestUrl,s.redirectUrls=this.redirects,s.request=this,s.isFromCache=e.fromCache||!1,s.ip=this.ip,s.retryCount=this.retryCount,this[A_]=s.isFromCache,this[Xg]=Number(e.headers["content-length"])||void 0,this[Lw]=e,e.once("end",()=>{this[Xg]=this[Zg],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new Mw(a,this))}),e.once("aborted",()=>{this._beforeError(new Mw({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let o=e.headers["set-cookie"];if(me.default.object(r.cookieJar)&&o){let a=o.map(async l=>r.cookieJar.setCookie(l,i.toString()));r.ignoreInvalidCookies&&(a=a.map(async l=>l.catch(()=>{})));try{await Promise.all(a)}catch(l){this._beforeError(l);return}}if(r.followRedirect&&e.headers.location&&qPe.has(n)){if(e.resume(),this[Ri]&&(this[PP](),delete this[Ri],this[a_]()),(n===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[ll]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new FP(this));return}try{let l=Buffer.from(e.headers.location,"binary").toString(),c=new al.URL(l,i),u=c.toString();decodeURI(u),c.hostname!==i.hostname||c.port!==i.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(c.username=r.username,c.password=r.password),this.redirects.push(u),r.url=c;for(let g of r.hooks.beforeRedirect)await g(r,s);this.emit("redirect",s,r),await this._makeRequest()}catch(l){this._beforeError(l);return}return}if(r.isStream&&r.throwHttpErrors&&!MPe.isResponseOk(s)){this._beforeError(new NP(s));return}e.on("readable",()=>{this[Ow]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[Tw])if(!a.headersSent){for(let l in e.headers){let c=r.decompress?l!=="content-encoding":!0,u=e.headers[l];c&&a.setHeader(l,u)}a.statusCode=n}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:i,url:n}=r;kPe.default(e),this[PP]=n_.default(e,i,n);let s=r.cache?"cacheableResponse":"response";e.once(s,l=>{this._onResponse(l)}),e.once("error",l=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),l=l instanceof n_.TimeoutError?new OP(l,this.timings,this):new fi(l.message,l,this),this._beforeError(l)}),this[a_]=NPe.default(e,this,WPe),this[Ri]=e,this.emit("uploadProgress",this.uploadProgress);let o=this[ll],a=this.redirects.length===0?this:e;me.default.nodeStream(o)?(o.pipe(a),o.once("error",l=>{this._beforeError(new TP(l,this))})):(this._unlockWrite(),me.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((i,n)=>{Object.assign(r,LPe.default(e)),delete r.url;let s,o=DP.get(r.cache)(r,async a=>{a._readableState.autoDestroy=!1,s&&(await s).emit("cacheableResponse",a),i(a)});r.url=e,o.once("error",n),o.once("request",async a=>{s=a,i(s)})})}async _makeRequest(){var e,r,i,n,s;let{options:o}=this,{headers:a}=o;for(let Q in a)if(me.default.undefined(a[Q]))delete a[Q];else if(me.default.null_(a[Q]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${Q}\` header`);if(o.decompress&&me.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=HPe?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){let Q=await o.cookieJar.getCookieString(o.url.toString());me.default.nonEmptyString(Q)&&(o.headers.cookie=Q)}for(let Q of o.hooks.beforeRequest){let S=await Q(o);if(!me.default.undefined(S)){o.request=()=>S;break}}o.body&&this[ll]!==o.body&&(this[ll]=o.body);let{agent:l,request:c,timeout:u,url:g}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),g.hostname==="unix"){let Q=/(?.+?):(?.+)/.exec(`${g.pathname}${g.search}`);if(Q==null?void 0:Q.groups){let{socketPath:S,path:x}=Q.groups;Object.assign(o,{socketPath:S,path:x,host:""})}}let f=g.protocol==="https:",h;o.http2?h=DPe.auto:h=f?SPe.request:t_.request;let p=(e=o.request)!==null&&e!==void 0?e:h,m=o.cache?this._createCacheableRequest:p;l&&!o.http2&&(o.agent=l[f?"https":"http"]),o[Ri]=p,delete o.request,delete o.timeout;let y=o;if(y.shared=(r=o.cacheOptions)===null||r===void 0?void 0:r.shared,y.cacheHeuristic=(i=o.cacheOptions)===null||i===void 0?void 0:i.cacheHeuristic,y.immutableMinTimeToLive=(n=o.cacheOptions)===null||n===void 0?void 0:n.immutableMinTimeToLive,y.ignoreCargoCult=(s=o.cacheOptions)===null||s===void 0?void 0:s.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{y.family=o_.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch(Q){throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(y.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(y.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(y.ca=o.https.certificateAuthority),o.https.certificate&&(y.cert=o.https.certificate),o.https.key&&(y.key=o.https.key),o.https.passphrase&&(y.passphrase=o.https.passphrase),o.https.pfx&&(y.pfx=o.https.pfx));try{let Q=await m(g,y);me.default.undefined(Q)&&(Q=h(g,y)),o.request=c,o.timeout=u,o.agent=l,o.https&&("rejectUnauthorized"in o.https&&delete y.rejectUnauthorized,o.https.checkServerIdentity&&delete y.checkServerIdentity,o.https.certificateAuthority&&delete y.ca,o.https.certificate&&delete y.cert,o.https.key&&delete y.key,o.https.passphrase&&delete y.passphrase,o.https.pfx&&delete y.pfx),GPe(Q)?this._onRequest(Q):this.writable?(this.once("finish",()=>{this._onResponse(Q)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(Q)}catch(Q){throw Q instanceof r_.CacheError?new LP(Q,this):new fi(Q.message,Q,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new fi(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[tf])return;let{options:r}=this,i=this.retryCount+1;this[tf]=!0,e instanceof fi||(e=new fi(e.message,e,this));let n=e,{response:s}=n;(async()=>{if(s&&!s.body){s.setEncoding(this._readableState.encoding);try{s.rawBody=await OPe.default(s),s.body=s.rawBody.toString()}catch(o){}}if(this.listenerCount("retry")!==0){let o;try{let a;s&&"retry-after"in s.headers&&(a=Number(s.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(s.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),o=await r.retry.calculateDelay({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:KPe.default({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:0})})}catch(a){this._error(new fi(a.message,a,this));return}if(o){let a=async()=>{try{for(let l of this.options.hooks.beforeRetry)await l(this.options,n,i)}catch(l){this._error(new fi(l.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",i,e))};this[u_]=setTimeout(a,o);return}}this._error(n)})()}_read(){this[Ow]=!0;let e=this[Lw];if(e&&!this[tf]){e.readableLength&&(this[Ow]=!1);let r;for(;(r=e.read())!==null;){this[Zg]+=r.length,this[l_]=!0;let i=this.downloadProgress;i.percent<1&&this.emit("downloadProgress",i),this.push(r)}}}_write(e,r,i){let n=()=>{this._writeRequest(e,r,i)};this.requestInitialized?n():this[Nd].push(n)}_writeRequest(e,r,i){this[Ri].destroyed||(this._progressCallbacks.push(()=>{this[ef]+=Buffer.byteLength(e,r);let n=this.uploadProgress;n.percent<1&&this.emit("uploadProgress",n)}),this[Ri].write(e,r,n=>{!n&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),i(n)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Ri in this)){e();return}if(this[Ri].destroyed){e();return}this[Ri].end(i=>{i||(this[$g]=this[ef],this.emit("uploadProgress",this.uploadProgress),this[Ri].emit("upload-complete")),e(i)})};this.requestInitialized?r():this[Nd].push(r)}_destroy(e,r){var i;this[tf]=!0,clearTimeout(this[u_]),Ri in this&&(this[PP](),((i=this[Lw])===null||i===void 0?void 0:i.complete)||this[Ri].destroy()),e!==null&&!me.default.undefined(e)&&!(e instanceof fi)&&(e=new fi(e.message,e,this)),r(e)}get _isAboutToError(){return this[tf]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,i;return((r=(e=this[Ri])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!((i=this[c_])===null||i===void 0?void 0:i.complete)}get socket(){var e,r;return(r=(e=this[Ri])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[Xg]?e=this[Zg]/this[Xg]:this[Xg]===this[Zg]?e=1:e=0,{percent:e,transferred:this[Zg],total:this[Xg]}}get uploadProgress(){let e;return this[$g]?e=this[ef]/this[$g]:this[$g]===this[ef]?e=1:e=0,{percent:e,transferred:this[ef],total:this[$g]}}get timings(){var e;return(e=this[Ri])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[A_]}pipe(e,r){if(this[l_])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof kP.ServerResponse&&this[Tw].add(e),super.pipe(e,r)}unpipe(e){return e instanceof kP.ServerResponse&&this[Tw].delete(e),super.unpipe(e),this}};qt.default=RP});var Td=w(ho=>{"use strict";var zPe=ho&&ho.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),_Pe=ho&&ho.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&zPe(e,t,r)};Object.defineProperty(ho,"__esModule",{value:!0});ho.CancelError=ho.ParseError=void 0;var g_=Ld(),f_=class extends g_.RequestError{constructor(e,r){let{options:i}=r.request;super(`${e.message} in "${i.url.toString()}"`,e,r.request);this.name="ParseError"}};ho.ParseError=f_;var h_=class extends g_.RequestError{constructor(e){super("Promise was canceled",{},e);this.name="CancelError"}get isCanceled(){return!0}};ho.CancelError=h_;_Pe(Ld(),ho)});var d_=w(UP=>{"use strict";Object.defineProperty(UP,"__esModule",{value:!0});var p_=Td(),VPe=(t,e,r,i)=>{let{rawBody:n}=t;try{if(e==="text")return n.toString(i);if(e==="json")return n.length===0?"":r(n.toString());if(e==="buffer")return n;throw new p_.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(s){throw new p_.ParseError(s,t)}};UP.default=VPe});var KP=w(cl=>{"use strict";var XPe=cl&&cl.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),ZPe=cl&&cl.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&XPe(e,t,r)};Object.defineProperty(cl,"__esModule",{value:!0});var $Pe=require("events"),eDe=$a(),tDe=Az(),Uw=Td(),C_=d_(),m_=Ld(),rDe=CP(),iDe=bP(),E_=QP(),nDe=["request","response","redirect","uploadProgress","downloadProgress"];function I_(t){let e,r,i=new $Pe.EventEmitter,n=new tDe((o,a,l)=>{let c=u=>{let g=new m_.default(void 0,t);g.retryCount=u,g._noPipe=!0,l(()=>g.destroy()),l.shouldReject=!1,l(()=>a(new Uw.CancelError(g))),e=g,g.once("response",async p=>{var m;if(p.retryCount=u,p.request.aborted)return;let y;try{y=await iDe.default(g),p.rawBody=y}catch(M){return}if(g._isAboutToError)return;let Q=((m=p.headers["content-encoding"])!==null&&m!==void 0?m:"").toLowerCase(),S=["gzip","deflate","br"].includes(Q),{options:x}=g;if(S&&!x.decompress)p.body=y;else try{p.body=C_.default(p,x.responseType,x.parseJson,x.encoding)}catch(M){if(p.body=y.toString(),E_.isResponseOk(p)){g._beforeError(M);return}}try{for(let[M,Y]of x.hooks.afterResponse.entries())p=await Y(p,async U=>{let J=m_.default.normalizeArguments(void 0,te(N({},U),{retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1}),x);J.hooks.afterResponse=J.hooks.afterResponse.slice(0,M);for(let ee of J.hooks.beforeRetry)await ee(J);let W=I_(J);return l(()=>{W.catch(()=>{}),W.cancel()}),W})}catch(M){g._beforeError(new Uw.RequestError(M.message,M,g));return}if(!E_.isResponseOk(p)){g._beforeError(new Uw.HTTPError(p));return}r=p,o(g.options.resolveBodyOnly?p.body:p)});let f=p=>{if(n.isCanceled)return;let{options:m}=g;if(p instanceof Uw.HTTPError&&!m.throwHttpErrors){let{response:y}=p;o(g.options.resolveBodyOnly?y.body:y);return}a(p)};g.once("error",f);let h=g.options.body;g.once("retry",(p,m)=>{var y,Q;if(h===((y=m.request)===null||y===void 0?void 0:y.options.body)&&eDe.default.nodeStream((Q=m.request)===null||Q===void 0?void 0:Q.options.body)){f(m);return}c(p)}),rDe.default(g,i,nDe)};c(0)});n.on=(o,a)=>(i.on(o,a),n);let s=o=>{let a=(async()=>{await n;let{options:l}=r.request;return C_.default(r,o,l.parseJson,l.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(n)),a};return n.json=()=>{let{headers:o}=e.options;return!e.writableFinished&&o.accept===void 0&&(o.accept="application/json"),s("json")},n.buffer=()=>s("buffer"),n.text=()=>s("text"),n}cl.default=I_;ZPe(Td(),cl)});var y_=w(HP=>{"use strict";Object.defineProperty(HP,"__esModule",{value:!0});var sDe=Td();function oDe(t,...e){let r=(async()=>{if(t instanceof sDe.RequestError)try{for(let n of e)if(n)for(let s of n)t=await s(t)}catch(n){t=n}throw t})(),i=()=>r;return r.json=i,r.text=i,r.buffer=i,r.on=i,r}HP.default=oDe});var b_=w(jP=>{"use strict";Object.defineProperty(jP,"__esModule",{value:!0});var w_=$a();function B_(t){for(let e of Object.values(t))(w_.default.plainObject(e)||w_.default.array(e))&&B_(e);return Object.freeze(t)}jP.default=B_});var v_=w(Q_=>{"use strict";Object.defineProperty(Q_,"__esModule",{value:!0})});var GP=w(Ns=>{"use strict";var aDe=Ns&&Ns.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),ADe=Ns&&Ns.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&aDe(e,t,r)};Object.defineProperty(Ns,"__esModule",{value:!0});Ns.defaultHandler=void 0;var S_=$a(),Ls=KP(),lDe=y_(),Kw=Ld(),cDe=b_(),uDe={RequestError:Ls.RequestError,CacheError:Ls.CacheError,ReadError:Ls.ReadError,HTTPError:Ls.HTTPError,MaxRedirectsError:Ls.MaxRedirectsError,TimeoutError:Ls.TimeoutError,ParseError:Ls.ParseError,CancelError:Ls.CancelError,UnsupportedProtocolError:Ls.UnsupportedProtocolError,UploadError:Ls.UploadError},gDe=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:Hw}=Kw.default,k_=(...t)=>{let e;for(let r of t)e=Hw(void 0,r,e);return e},fDe=t=>t.isStream?new Kw.default(void 0,t):Ls.default(t),hDe=t=>"defaults"in t&&"options"in t.defaults,pDe=["get","post","put","patch","head","delete"];Ns.defaultHandler=(t,e)=>e(t);var x_=(t,e)=>{if(t)for(let r of t)r(e)},P_=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(i=>(n,s)=>{let o,a=i(n,l=>(o=s(l),o));if(a!==o&&!n.isStream&&o){let l=a,{then:c,catch:u,finally:g}=l;Object.setPrototypeOf(l,Object.getPrototypeOf(o)),Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)),l.then=c,l.catch=u,l.finally=g}return a});let e=(i,n={},s)=>{var o,a;let l=0,c=u=>t.handlers[l++](u,l===t.handlers.length?fDe:c);if(S_.default.plainObject(i)){let u=N(N({},i),n);Kw.setNonEnumerableProperties([i,n],u),n=u,i=void 0}try{let u;try{x_(t.options.hooks.init,n),x_((o=n.hooks)===null||o===void 0?void 0:o.init,n)}catch(f){u=f}let g=Hw(i,n,s!=null?s:t.options);if(g[Kw.kIsNormalizedAlready]=!0,u)throw new Ls.RequestError(u.message,u,g);return c(g)}catch(u){if(n.isStream)throw u;return lDe.default(u,t.options.hooks.beforeError,(a=n.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...i)=>{let n=[t.options],s=[...t._rawHandlers],o;for(let a of i)hDe(a)?(n.push(a.defaults.options),s.push(...a.defaults._rawHandlers),o=a.defaults.mutableDefaults):(n.push(a),"handlers"in a&&s.push(...a.handlers),o=a.mutableDefaults);return s=s.filter(a=>a!==Ns.defaultHandler),s.length===0&&s.push(Ns.defaultHandler),P_({options:k_(...n),handlers:s,mutableDefaults:Boolean(o)})};let r=async function*(i,n){let s=Hw(i,n,t.options);s.resolveBodyOnly=!1;let o=s.pagination;if(!S_.default.object(o))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:l}=o,c=0;for(;c{let s=[];for await(let o of r(i,n))s.push(o);return s},e.paginate.each=r,e.stream=(i,n)=>e(i,te(N({},n),{isStream:!0}));for(let i of pDe)e[i]=(n,s)=>e(n,te(N({},s),{method:i})),e.stream[i]=(n,s)=>e(n,te(N({},s),{method:i,isStream:!0}));return Object.assign(e,uDe),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:cDe.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=k_,e};Ns.default=P_;ADe(v_(),Ns)});var Gw=w((tA,jw)=>{"use strict";var dDe=tA&&tA.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),D_=tA&&tA.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&dDe(e,t,r)};Object.defineProperty(tA,"__esModule",{value:!0});var CDe=require("url"),R_=GP(),mDe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let i of e){let n=i.split(";");if(n[1].includes("next")){r=n[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new CDe.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:Infinity,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[R_.defaultHandler],mutableDefaults:!1},YP=R_.default(mDe);tA.default=YP;jw.exports=YP;jw.exports.default=YP;jw.exports.__esModule=!0;D_(GP(),tA);D_(KP(),tA)});var T_=w(rf=>{"use strict";var Yot=require("net"),EDe=require("tls"),qP=require("http"),F_=require("https"),IDe=require("events"),qot=require("assert"),yDe=require("util");rf.httpOverHttp=wDe;rf.httpsOverHttp=BDe;rf.httpOverHttps=bDe;rf.httpsOverHttps=QDe;function wDe(t){var e=new rA(t);return e.request=qP.request,e}function BDe(t){var e=new rA(t);return e.request=qP.request,e.createSocket=N_,e.defaultPort=443,e}function bDe(t){var e=new rA(t);return e.request=F_.request,e}function QDe(t){var e=new rA(t);return e.request=F_.request,e.createSocket=N_,e.defaultPort=443,e}function rA(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||qP.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(i,n,s,o){for(var a=L_(n,s,o),l=0,c=e.requests.length;l=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",l),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function l(){s.emit("free",a,o)}function c(u){s.removeSocket(a),a.removeListener("free",l),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};rA.prototype.createSocket=function(e,r){var i=this,n={};i.sockets.push(n);var s=JP({},i.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),ul("making CONNECT request");var o=i.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",l),o.once("connect",c),o.once("error",u),o.end();function a(g){g.upgrade=!0}function l(g,f,h){process.nextTick(function(){c(g,f,h)})}function c(g,f,h){if(o.removeAllListeners(),f.removeAllListeners(),g.statusCode!==200){ul("tunneling socket could not be established, statusCode=%d",g.statusCode),f.destroy();var p=new Error("tunneling socket could not be established, statusCode="+g.statusCode);p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}if(h.length>0){ul("got illegal response body from proxy"),f.destroy();var p=new Error("got illegal response body from proxy");p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}return ul("tunneling connection has established"),i.sockets[i.sockets.indexOf(n)]=f,r(f)}function u(g){o.removeAllListeners(),ul(`tunneling socket could not be established, cause=%s +`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};rA.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function N_(t,e){var r=this;rA.prototype.createSocket.call(r,t,function(i){var n=t.request.getHeader("host"),s=JP({},r.options,{socket:i,servername:n?n.replace(/:.*$/,""):t.host}),o=EDe.connect(0,s);r.sockets[r.sockets.indexOf(i)]=o,e(o)})}function L_(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function JP(t){for(var e=1,r=arguments.length;e{O_.exports=T_()});var z_=w((Jw,XP)=>{var W_=Object.assign({},require("fs")),ZP=function(){var t=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(t=t||__filename),function(e){e=e||{};var r=typeof e!="undefined"?e:{},i,n;r.ready=new Promise(function(d,E){i=d,n=E});var s={},o;for(o in r)r.hasOwnProperty(o)&&(s[o]=r[o]);var a=[],l="./this.program",c=function(d,E){throw E},u=!1,g=!0,f="";function h(d){return r.locateFile?r.locateFile(d,f):f+d}var p,m,y,Q;g&&(u?f=require("path").dirname(f)+"/":f=__dirname+"/",p=function(E,I){var D=ba(E);return D?I?D:D.toString():(y||(y=W_),Q||(Q=require("path")),E=Q.normalize(E),y.readFileSync(E,I?null:"utf8"))},m=function(E){var I=p(E,!0);return I.buffer||(I=new Uint8Array(I)),Ae(I.buffer),I},process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),a=process.argv.slice(2),c=function(d){process.exit(d)},r.inspect=function(){return"[Emscripten Module object]"});var S=r.print||console.log.bind(console),x=r.printErr||console.warn.bind(console);for(o in s)s.hasOwnProperty(o)&&(r[o]=s[o]);s=null,r.arguments&&(a=r.arguments),r.thisProgram&&(l=r.thisProgram),r.quit&&(c=r.quit);var M=16;function Y(d,E){return E||(E=M),Math.ceil(d/E)*E}var U=0,J=function(d){U=d},W;r.wasmBinary&&(W=r.wasmBinary);var ee=r.noExitRuntime||!0;typeof WebAssembly!="object"&&Sr("no native wasm support detected");function Z(d,E,I){switch(E=E||"i8",E.charAt(E.length-1)==="*"&&(E="i32"),E){case"i1":return pe[d>>0];case"i8":return pe[d>>0];case"i16":return be[d>>1];case"i32":return fe[d>>2];case"i64":return fe[d>>2];case"float":return Ht[d>>2];case"double":return Mt[d>>3];default:Sr("invalid type for getValue: "+E)}return null}var A,ne=!1,le;function Ae(d,E){d||Sr("Assertion failed: "+E)}function T(d){var E=r["_"+d];return Ae(E,"Cannot call unknown function "+d+", make sure it is exported"),E}function L(d,E,I,D,O){var V={string:function(nt){var It=0;if(nt!=null&&nt!==0){var ke=(nt.length<<2)+1;It=B(ke),Qe(nt,It,ke)}return It},array:function(nt){var It=B(nt.length);return Ue(nt,It),It}};function ie(nt){return E==="string"?re(nt):E==="boolean"?Boolean(nt):nt}var Be=T(d),Ce=[],_e=0;if(D)for(var ot=0;ot=D);)++O;if(O-E>16&&d.subarray&&we)return we.decode(d.subarray(E,O));for(var V="";E>10,56320|_e&1023)}}return V}function re(d,E){return d?qe(X,d,E):""}function se(d,E,I,D){if(!(D>0))return 0;for(var O=I,V=I+D-1,ie=0;ie=55296&&Be<=57343){var Ce=d.charCodeAt(++ie);Be=65536+((Be&1023)<<10)|Ce&1023}if(Be<=127){if(I>=V)break;E[I++]=Be}else if(Be<=2047){if(I+1>=V)break;E[I++]=192|Be>>6,E[I++]=128|Be&63}else if(Be<=65535){if(I+2>=V)break;E[I++]=224|Be>>12,E[I++]=128|Be>>6&63,E[I++]=128|Be&63}else{if(I+3>=V)break;E[I++]=240|Be>>18,E[I++]=128|Be>>12&63,E[I++]=128|Be>>6&63,E[I++]=128|Be&63}}return E[I]=0,I-O}function Qe(d,E,I){return se(d,X,E,I)}function he(d){for(var E=0,I=0;I=55296&&D<=57343&&(D=65536+((D&1023)<<10)|d.charCodeAt(++I)&1023),D<=127?++E:D<=2047?E+=2:D<=65535?E+=3:E+=4}return E}function Fe(d){var E=he(d)+1,I=Et(E);return I&&se(d,pe,I,E),I}function Ue(d,E){pe.set(d,E)}function xe(d,E){return d%E>0&&(d+=E-d%E),d}var ve,pe,X,be,ce,fe,gt,Ht,Mt;function mi(d){ve=d,r.HEAP8=pe=new Int8Array(d),r.HEAP16=be=new Int16Array(d),r.HEAP32=fe=new Int32Array(d),r.HEAPU8=X=new Uint8Array(d),r.HEAPU16=ce=new Uint16Array(d),r.HEAPU32=gt=new Uint32Array(d),r.HEAPF32=Ht=new Float32Array(d),r.HEAPF64=Mt=new Float64Array(d)}var jt=r.INITIAL_MEMORY||16777216,Qr,Ti=[],_s=[],Un=[],Kn=!1;function vr(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Ia(r.preRun.shift());ko(Ti)}function Hn(){Kn=!0,!r.noFSInit&&!v.init.initialized&&v.init(),fs.init(),ko(_s)}function us(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Du(r.postRun.shift());ko(Un)}function Ia(d){Ti.unshift(d)}function SA(d){_s.unshift(d)}function Du(d){Un.unshift(d)}var gs=0,kA=null,ya=null;function Ru(d){return d}function xA(d){gs++,r.monitorRunDependencies&&r.monitorRunDependencies(gs)}function PA(d){if(gs--,r.monitorRunDependencies&&r.monitorRunDependencies(gs),gs==0&&(kA!==null&&(clearInterval(kA),kA=null),ya)){var E=ya;ya=null,E()}}r.preloadedImages={},r.preloadedAudios={};function Sr(d){r.onAbort&&r.onAbort(d),d+="",x(d),ne=!0,le=1,d="abort("+d+"). Build with -s ASSERTIONS=1 for more info.";var E=new WebAssembly.RuntimeError(d);throw n(E),E}var jl="data:application/octet-stream;base64,";function Fu(d){return d.startsWith(jl)}var So="data:application/octet-stream;base64,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ACgCFC0AAiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQADIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAQgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABSAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAGIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAcgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAJIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAogACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACyAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAMIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAA0gACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ADiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAPIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhRBEGo2AhQgACAAKAIIQQFrIgE2AgggAQ0ACyAAIAAoAhhB8f8DcDYCGCAAIAAoAgxB8f8DcDYCDAwBCwsgACgCEARAA0AgACgCEEEQTwRAIAAgACgCEEEQazYCECAAIAAoAhQtAAAgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AASAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQACIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAMgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAFIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAYgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AByAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAIIAAoAhhqNgIYIAAgACgCGCAAKAIMajYC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NgIYIAEoAgxCADcDICABKAIMQgA3AyggASgCDEEANgIwIAEoAgxBADYCNCABKAIMQQA2AjggASgCDEEANgI8IAEoAgxBADsBQCABKAIMQYCA2I14NgJEIAEoAgxCADcDSCABKAIMQQA7AVAgASgCDEEAOwFSIAEoAgxBADYCVAvSEwEBfyMAQbABayIDJAAgAyAANgKoASADIAE2AqQBIAMgAjYCoAEgA0EANgKQASADIAMoAqQBKAIwQQAQOjYClAEgAyADKAKkASgCOEEAEDo2ApgBAkACQAJAAkAgAygClAFBAkYEQCADKAKYAUEBRg0BCyADKAKUAUEBRgRAIAMoApgBQQJGDQELIAMoApQBQQJHDQEgAygCmAFBAkcNAQsgAygCpAEiACAALwEMQYAQcjsBDAwBCyADKAKkASIAIAAvAQxB/+8DcTsBDCADKAKUAUECRgRAIANB9eABIAMoAqQBKAIwIAMoAqgBQQhqEI4BNgKQASADKAKQAUUEQCADQX82AqwBDAMLCwJAIAMoAqABQYACcQ0AIAMoApgBQQJHDQAgA0H1xgEgAygCpAEoAjggAygCqAFBCGoQjgE2AkggAygCSEUEQCADKAKQARAjIANBfzYCrAEMAwsgAygCSCADKAKQATYCACADIAMoAkg2ApABCwsCQCADKAKkAS8BUkUEQCADKAKkASIAIAAvAQxB/v8DcTsBDAwBCyADKAKkASIAIAAvAQxBAXI7AQwLIAMgAygCpAEgAygCoAEQZUEBcToAhgEgAyADKAKgAUGACnFBgApHBH8gAy0AhgEFQQELQQFxOgCHASADAn9BASADKAKkAS8BUkGBAkYNABpBASADKAKkAS8BUkGCAkYNABogAygCpAEvAVJBgwJGC0EBcToAhQEgAy0AhwFBAXEEQCADIANBIGpCHBApNgIcIAMoAhxFBEAgAygCqAFBCGpBDkEAEBQgAygCkAEQIyADQX82AqwBDAILAkAgAygCoAFBgAJxBEACQCADKAKgAUGACHENACADKAKkASkDIEL/////D1YNACADKAKkASkDKEL/////D1gNAgsgAygCHCADKAKkASkDKBAtIAMoAhwgAygCpAEpAyAQLQwBCwJAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9WDQAgAygCpAEpA0hC/////w9YDQELIAMoAqQBKQMoQv////8PWgRAIAMoAhwgAygCpAEpAygQLQsgAygCpAEpAyBC/////w9aBEAgAygCHCADKAKkASkDIBAtCyADKAKkASkDSEL/////D1oEQCADKAIcIAMoAqQBKQNIEC0LCwsCfyMAQRBrIgAgAygCHDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIcEBYgAygCkAEQIyADQX82AqwBDAILIANBAQJ/IwBBEGsiACADKAIcNgIMAn4gACgCDC0AAEEBcQRAIAAoAgwpAxAMAQtCAAunQf//A3ELIANBIGpBgAYQVTYCjAEgAygCHBAWIAMoAowBIAMoApABNgIAIAMgAygCjAE2ApABCyADLQCFAUEBcQRAIAMgA0EVakIHECk2AhAgAygCEEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAgsgAygCEEECEB8gAygCEEG9EkECEEEgAygCECADKAKkAS8BUkH/AXEQlgEgAygCECADKAKkASgCEEH//wNxEB8CfyMAQRBrIgAgAygCEDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIQEBYgAygCkAEQIyADQX82AqwBDAILIANBgbICQQcgA0EVakGABhBVNgIMIAMoAhAQFiADKAIMIAMoApABNgIAIAMgAygCDDYCkAELIAMgA0HQAGpCLhApIgA2AkwgAEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAQsgAygCTEHxEkH2EiADKAKgAUGAAnEbQQQQQSADKAKgAUGAAnFFBEAgAygCTCADLQCGAUEBcQR/QS0FIAMoAqQBLwEIC0H//wNxEB8LIAMoAkwgAy0AhgFBAXEEf0EtBSADKAKkAS8BCgtB//8DcRAfIAMoAkwgAygCpAEvAQwQHwJAIAMtAIUBQQFxBEAgAygCTEHjABAfDAELIAMoAkwgAygCpAEoAhBB//8DcRAfCyADKAKkASgCFCADQZ4BaiADQZwBahCNASADKAJMIAMvAZ4BEB8gAygCTCADLwGcARAfAkACQCADLQCFAUEBcUUNACADKAKkASkDKEIUWg0AIAMoAkxBABAhDAELIAMoAkwgAygCpAEoAhgQIQsCQAJAIAMoAqABQYACcUGAAkcNACADKAKkASkDIEL/////D1QEQCADKAKkASkDKEL/////D1QNAQsgAygCTEF/ECEgAygCTEF/ECEMAQsCQCADKAKkASkDIEL/////D1QEQCADKAJMIAMoAqQBKQMgpxAhDAELIAMoAkxBfxAhCwJAIAMoAqQBKQMoQv////8PVARAIAMoAkwgAygCpAEpAyinECEMAQsgAygCTEF/ECELCyADKAJMIAMoAqQBKAIwEFFB//8DcRAfIAMgAygCpAEoAjQgAygCoAEQkgFB//8DcSADKAKQAUGABhCSAUH//wNxajYCiAEgAygCTCADKAKIAUH//wNxEB8gAygCoAFBgAJxRQRAIAMoAkwgAygCpAEoAjgQUUH//wNxEB8gAygCTCADKAKkASgCPEH//wNxEB8gAygCTCADKAKkAS8BQBAfIAMoAkwgAygCpAEoAkQQIQJAIAMoAqQBKQNIQv////8PVARAIAMoAkwgAygCpAEpA0inECEMAQsgAygCTEF/ECELCwJ/IwBBEGsiACADKAJMNgIMIAAoAgwtAABBAXFFCwRAIAMoAqgBQQhqQRRBABAUIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCqAEgA0HQAGoCfiMAQRBrIgAgAygCTDYCDAJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALCxA2QQBIBEAgAygCTBAWIAMoApABECMgA0F/NgKsAQwBCyADKAJMEBYgAygCpAEoAjAEQCADKAKoASADKAKkASgCMBCFAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEEQCADKAKoASADKAKQAUGABhCRAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEQIyADKAKkASgCNARAIAMoAqgBIAMoAqQBKAI0IAMoAqABEJEBQQBIBEAgA0F/NgKsAQwCCwsgAygCoAFBgAJxRQRAIAMoAqQBKAI4BEAgAygCqAEgAygCpAEoAjgQhQFBAEgEQCADQX82AqwBDAMLCwsgAyADLQCHAUEBcTYCrAELIAMoAqwBIQAgA0GwAWokACAAC+ACAQF/IwBBIGsiBCQAIAQgADsBGiAEIAE7ARggBCACNgIUIAQgAzYCECAEQRAQGCIANgIMAkAg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AAAgAygCHEHcFmogAygCDEECdGooAgAgAygCHEHYKGpqLQAASg0ADAELIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhxB3BZqIAMoAgxBAnRqKAIANgIAIAMgAygCDDYCFCADIAMoAgxBAXQ2AgwMAQsLIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhA2AgAL1xMBA38jAEEwayICJAAgAiAANgIsIAIgATYCKCACIAIoAigoAgA2AiQgAiACKAIoKAIIKAIANgIgIAIgAigCKCgCCCgCDDYCHCACQX82AhAgAigCLEEANgLQKCACKAIsQb0ENgLUKCACQQA2AhgDQCACKAIYIAIoAhxIBEACQCACKAIkIAIoAhhBAnRqLwEABEAgAiACKAIYIgE2AhAgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQAgBCAANgLQKCAAQQJ0IANqIAE2AgAgAigCGCACKAIsQdgoampBADoAAAwBCyACKAIkIAIoAhhBAnRqQQA7AQILIAIgAigCGEEBajYCGAwBCwsDQCACKAIsKALQKEECSARAAkAgAigCEEECSARAIAIgAigCEEEBaiIANgIQDAELQQAhAAsgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQEgBCABNgLQKCABQQJ0IANqIAA2AgAgAiAANgIMIAIoAiQgAigCDEECdGpBATsBACACKAIMIAIoAixB2ChqakEAOgAAIAIoAiwiACAAKAKoLUEBazYCqC0gAigCIARAIAIoAiwiACAAKAKsLSACKAIgIAIoAgxBAnRqLwECazYCrC0LDAELCyACKAIoIAIoAhA2AgQgAiACKAIsKALQKEECbTYCGANAIAIoAhhBAU4EQCACKAIsIAIoAiQgAigCGBB5IAIgAigCGEEBazYCGAwBCwsgAiACKAIcNgIMA0AgAiACKAIsKALgFjYCGCACKAIsQdwWaiEBIAIoAiwiAygC0CghACADIABBAWs2AtAoIAIoAiwgAEECdCABaigCADYC4BYgAigCLCACKAIkQQEQeSACIAIoAiwoAuAWNgIUIAIoAhghASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIUIQEgAigCLEHcFmohAyACKAIsIgQoAtQoQQFrIQAgBCAANgLUKCAA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AQsgAigCCEEANgIAIAIoAghCADcDECACKAIIQgA3AwggAigCCEIANwMgIAIoAghCADcDGCACKAIIQQA2AiggAigCCEEAOgAsIAIoAgggAikDECACKAIMEI8BQQFxRQRAIAIoAggQJSACQQA2AhwMAQsgAiACKAIINgIcCyACKAIcIQEgAkEgaiQAIAEL1gIBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADQQxqQgQQKTYCCAJAIAMoAghFBEAgA0F/NgIcDAELA0AgAygCFARAIAMoAhQoAgQgAygCEHFBgAZxBEAgAygCCEIAECwaIAMoAgggAygCFC8BCBAfIAMoAgggAygCFC8BChAfAn8jAEEQayIAIAMoAgg2AgwgACgCDC0AAEEBcUULBEAgAygCGEEIakEUQQAQFCADKAIIEBYgA0F/NgIcDAQLIAMoAhggA0EMakIEEDZBAEgEQCADKAIIEBYgA0F/NgIcDAQLIAMoAhQvAQoEQCADKAIYIAMoAhQoAgwgAygCFC8BCq0QNkEASARAIAMoAggQFiADQX82AhwMBQsLCyADIAMoAhQoAgA2AhQMAQsLIAMoAggQFiADQQA2AhwLIAMoAhwhACADQSBqJAAgAAtoAQF/IwBBEGsiAiAANgIMIAIgATYCCCACQQA7AQYDQCACKAIMBEAgAigCDCgCBCACKAIIcUGABnEEQCACIAIoAgwvAQogAi8BBkEEamo7AQYLIAIgAigCDCgCADYCDAwBCwsgAi8BBgvwAQEBfyMAQRBrIgEkACABIAA2AgwgASABKAIMNgIIIAFBADYCBANAIAEoAgwEQAJAAkAgASgCDC8BCEH1xgFGDQAgASgCDC8BCEH14AFGDQAgASgCDC8BCEGBsgJGDQAgASgCDC8BCEEBRw0BCyABIAEoAgwoAgA2AgAgASgCCCABKAIMRgRAIAEgASgCADYCCAsgASgCDEEANgIAIAEoAgwQIyABKAIEBEAgASgCBCABKAIANgIACyABIAEoAgA2AgwMAgsgASABKAIMNgIEIAEgASgCDCgCADYCDAwBCwsgASgCCCEAIAFBEGokACAAC7IEAQF/IwBBQGoiBSQAIAUgADYCOCAFIAE7ATYgBSACNgIwIAUgAzYCLCAFIAQ2AiggBSAFKAI4IAUvATatECkiADYC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IAEoAhBB//8DRgRAIAEgASgCDDYCEAsgASgCCEH//wNGBEAgASABKAIENgIICwJAIAEoApQBQQRxRQ0AIAEoAgggASgCBEYEQCABKAIQIAEoAgxGDQELIAEoApABQRVBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELAkAgASgCEEUEQCABKAIIRQ0BCyABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AyggASABKAKkARAxNwMgIAEpAyggASkDIFIEQCABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AzAgASABKAKkARAxNwOAAQJ/IwBBEGsiBSABKAKkATYCDCAFKAIMLQAAQQFxRQsEQCABKAKQAUEUQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABLQAXQQFxBEAgASgCpAEQFgsCQCABKQOAAUL///////////8AWARAIAEpA4ABIAEpA4ABIAEpAzB8WA0BCyABKAKQAUEEQRYQFCABQQA2AqwBDAELIAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCQASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQMEIWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJI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ECADQcgAEBgiADYCDAJAIABFBEAgAygCEEEBQbSbASgCABAUIANBADYCHAwBCyADKAIMIAMoAhA2AgAgAygCDCADLQAbQQFxOgAEIAMoAgwgAygCFDYCCAJAIAMoAgwoAghBAU4EQCADKAIMKAIIQQlMDQELIAMoAgxBCTYCCAsgAygCDEEAOgAMIAMoAgxBADYCMCADKAIMQQA2AjQgAygCDEEANgI4IAMgAygCDDYCHAsgAygCHCEAIANBIGokACAACzgBAX8jAEEQayIBIAA2AgwgASgCDEEANgIAIAEoAgxBADYCBCABKAIMQQA2AgggASgCDEEAOgAMC+MIAQF/IwBBQGoiAiAANgI4IAIgATYCNCACIAIoAjgoAnw2AjAgAiACKAI4KAI4IAIoAjgoAmxqNgIsIAIgAigCOCgCeDYCICACIAIoAjgoApABNgIcIAICfyACKAI4KAJsIAIoAjgoAixBhgJrSwRAIAIoAjgoAmwgAigCOCgCLEGGAmtrDAELQQALNgIYIAIgAigCOCgCQDYCFCACIAIoAjgoAjQ2AhAgAiACKAI4KAI4IAIoAjgoAmxqQYICajYCDCACIAIoAiwgAigCIEEBa2otAAA6AAsgAiACKAIsIAIoAiBqLQAAOgAKIAIoAjgoAnggAigCOCgCjAFPBEAgAiACKAIwQQJ2NgIwCyACKAIcIAIoAjgoAnRLBEAgAiACKAI4KAJ0NgIcCwNAAkAgAiACKAI4KAI4IAIoAjRqNgIoAkAgAigCKCACKAIgai0AACACLQAKRw0AIAIoAiggAigCIEEBa2otAAAgAi0AC0cNACACKAIoLQAAIAIoAiwtAABHDQAgAiACKAIoIgBBAWo2AiggAC0AASACKAIsLQABRwRADAELIAIgAigCLEECajYCLCACIAIoAihBAWo2AigDQCACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AigCf0EAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEF0gAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQdhogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2AiwMAQsCQCACKAIkRQ0AIAIoAiRBBEYNACACKAIoKAIAKAIEDQAgAigCKCgCbCACKAIoKAJcRw0AIAJBATYCLAwBCyACIAIoAigoAjwgAigCKCgCbGtBAWs2AhQCQCACKAIoKAIAKAIEIAIoAhRNDQAgAigCKCgCXCACKAIoKAIsSA0AIAIoAigiACAAKAJcIAIoAigoAixrNgJcIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBkaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsgAiACKAIoKAIsIAIoAhRqNgIUCyACKAIUIAIoAigoAgAoAgRLBEAgAiACKAIoKAIAKAIENgIUCyACKAIUBEAgAigCKCgCACACKAIoKAI4IAIoAigoAmxqIAIoAhQQdhogAigCKCIAIAIoAhQgACgCbGo2AmwLIAIoAigoAsAtIAIoAigoAmxJBEAgAigCKCACKAIoKAJsNgLALQsgAiACKAIoKAK8LUEqakEDdTYCFCACIAIoAigoAgwgAigCFGtB//8DSwR/Qf//AwUgAigCKCgCDCACKAIUaws2AhQgAgJ/IAIoAhQgAigCKCgCLEsEQCACKAIoKAIsDAELIAIoAhQLNgIgIAIgAigCKCgCbCACKAIoKAJcazYCGAJAIAIoAhggAigCIEkEQCACKAIYRQRAIAIoAiRBBEcNAgsgAigCJEUNASACKAIoKAIAKAIEDQEgAigCGCACKAIUSw0BCyACAn8gAigCGCACKAIUSwRAIAIoAhQMAQsgAigCGAs2AhwgAgJ/QQAgAigCJEEERw0AGkEAIAIoAigoAgAoAgQNABogAigCHCACKAIYRgtBAXE2AhAgAigCKCACKAIoKAI4IAIoAigoAlxqIAIoAhwgAigCEBBdIAIoAigiACACKAIcIAAoAlxqNgJcIAIoAigoAgAQHAsgAkECQQAgAigCEBs2AiwLIAIoAiwhACACQTBqJAAgAAuyAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEHgEQCABQX42AgwMAQsgASABKAIIKAIcKAIENgIEIAEoAggoAhwoAggEQCABKAIIKAIoIAEoAggoAhwoAgggASgCCCgCJBEEAAsgASgCCCgCHCgCRARAIAEoAggoAiggASgCCCgCHCgCRCABKAIIKAIkEQQACyABKAIIKAIc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DQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQLgJ/IAEoAqQBBEAgASgCpAEQLkECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEG8gASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAsIAEEBQTgQfwszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMI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ADYCtC0gASgCFEEERgRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQEQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUECNgIcDAILIAFBAzYCHAwBCyABKAIYKAKgLQRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQAQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUEANgIcDAILCyABQQE2AhwLIAEoAhwhAiABQSBqJAAgAgwBCwJ/IAAoAiwoAogBQQNGBEAgACgCLCECIAAoAjQhAyMAQTBrIgEkACABIAI2AiggASADNgIkAkADQAJAIAEoAigoAnRBggJNBEAgASgCKBBcAkAgASgCKCgCdEGCAksNACABKAIkDQAgAUEANgIsDAQLIAEoAigoAnRFDQELIAEoAihBADYCYAJAIAEoAigoAnRBA0kNACABKAIoKAJsRQ0AIAEgASgCKCgCOCABKAIoKAJsakEBazYCGCABIAEoAhgtAAA2AhwgASgCHCECIAEgASgCGCIDQQFqNgIYAkAgAy0AASACRw0AIAEoAhwhAiABIAEoAhgiA0EBajYCGCADLQABIAJHDQAgASgCHCECIAEgASgCGCIDQQFqNgIYIAMtAAEgAkcNACABIAEoAigoAjggASgCKCgCbGpBggJqNgIUA0AgASgCHCECIAEgASgCGCIDQQFqNgIYAn9BACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABog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AS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIIQQNrNgIIIAEoAghBAksNAAsLIAEoAggEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEoAghBAUsEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAACwsMAgsgASgCDEHAAHFFBEAgASABKAIgIAEvARIgASgCLEEBIAEoAgx0QQFrcWpBAnRqKAEANgEQDAELCyAB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AG5hbgAvZGV2L3VyYW5kb20AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGluZgBpbnZhbGlkIHdpbmRvdyBzaXplAFJlYWQtb25seSBhcmNoaXZlAE5vdCBhIHppcCBhcmNoaXZlAFJlc291cmNlIHN0aWxsIGluIHVzZQBNYWxsb2MgZmFpbHVyZQBpbnZhbGlkIGJsb2NrIHR5cGUARmFpbHVyZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUAQ2FuJ3Qgb3BlbiBmaWxlAE5vIHN1Y2ggZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGZpbGUAQ2FuJ3QgcmVtb3ZlIGZpbGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABzdHJlYW0gZW5kAENvbXByZXNzZWQgZGF0YSBpbnZhbGlkAE11bHRpLWRpc2sgemlwIGFyY2hpdmVzIG5vdCBzdXBwb3J0ZWQAT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQARW5jcnlwdGlvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABFbnRyeSBoYXMgYmVlbiBkZWxldGVkAENvbnRhaW5pbmcgemlwIGFyY2hpdmUgd2FzIGNsb3NlZABDbG9zaW5nIHppcCBhcmNoaXZlIGZhaWxlZABSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQARW50cnkgaGFzIGJlZW4gY2hhbmdlZABObyBwYXNzd29yZCBwcm92aWRlZABXcm9uZyBwYXNzd29yZCBwcm92aWRlZABVbmtub3duIGVycm9yICVkAHJiAHIrYgByd2EAJXMuWFhYWFhYAE5BTgBJTkYAQUUAMS4yLjExAC9wcm9jL3NlbGYvZmQvAC4AKG51bGwpADogAFBLBgcA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0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";Fu(So)||(So=h(So));function Nu(d){try{if(d==So&&W)return new Uint8Array(W);var E=ba(d);if(E)return E;if(m)return m(d);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(I){Sr(I)}}function Qh(d,E){var I,D,O;try{O=Nu(d),D=new WebAssembly.Module(O),I=new WebAssembly.Instance(D,E)}catch(ie){var V=ie.toString();throw x("failed to compile wasm module: "+V),(V.includes("imported Memory")||V.includes("memory import"))&&x("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),ie}return[I,D]}function vh(){var d={a:Qa};function E(O,V){var ie=O.exports;r.asm=ie,A=r.asm.u,mi(A.buffer),Qr=r.asm.pa,SA(r.asm.v),PA("wasm-instantiate")}if(xA("wasm-instantiate"),r.instantiateWasm)try{var I=r.instantiateWasm(d,E);return I}catch(O){return x("Module.instantiateWasm callback failed with error: "+O),!1}var D=Qh(So,d);return E(D[0]),r.asm}var oe,Oi;function ko(d){for(;d.length>0;){var E=d.shift();if(typeof E=="function"){E(r);continue}var I=E.func;typeof I=="number"?E.arg===void 0?Qr.get(I)():Qr.get(I)(E.arg):I(E.arg===void 0?null:E.arg)}}function jn(d,E){var I=new Date(fe[d>>2]*1e3);fe[E>>2]=I.getUTCSeconds(),fe[E+4>>2]=I.getUTCMinutes(),fe[E+8>>2]=I.getUTCHours(),fe[E+12>>2]=I.getUTCDate(),fe[E+16>>2]=I.getUTCMonth(),fe[E+20>>2]=I.getUTCFullYear()-1900,fe[E+24>>2]=I.getUTCDay(),fe[E+36>>2]=0,fe[E+32>>2]=0;var D=Date.UTC(I.getUTCFullYear(),0,1,0,0,0,0),O=(I.getTime()-D)/(1e3*60*60*24)|0;return fe[E+28>>2]=O,jn.GMTString||(jn.GMTString=Fe("GMT")),fe[E+40>>2]=jn.GMTString,E}function Lu(d,E){return jn(d,E)}var vt={splitPath:function(d){var E=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return E.exec(d).slice(1)},normalizeArray:function(d,E){for(var I=0,D=d.length-1;D>=0;D--){var O=d[D];O==="."?d.splice(D,1):O===".."?(d.splice(D,1),I++):I&&(d.splice(D,1),I--)}if(E)for(;I;I--)d.unshift("..");return d},normalize:function(d){var E=d.charAt(0)==="/",I=d.substr(-1)==="/";return d=vt.normalizeArray(d.split("/").filter(function(D){return!!D}),!E).join("/"),!d&&!E&&(d="."),d&&I&&(d+="/"),(E?"/":"")+d},dirname:function(d){var E=vt.splitPath(d),I=E[0],D=E[1];return!I&&!D?".":(D&&(D=D.substr(0,D.length-1)),I+D)},basename:function(d){if(d==="/")return"/";d=vt.normalize(d),d=d.replace(/\/$/,"");var E=d.lastIndexOf("/");return E===-1?d:d.substr(E+1)},extname:function(d){return vt.splitPath(d)[3]},join:function(){var d=Array.prototype.slice.call(arguments,0);return vt.normalize(d.join("/"))},join2:function(d,E){return vt.normalize(d+"/"+E)}};function Gl(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var d=new Uint8Array(1);return function(){return crypto.getRandomValues(d),d[0]}}else if(g)try{var E=require("crypto");return function(){return E.randomBytes(1)[0]}}catch(I){}return function(){Sr("randomDevice")}}var Gn={resolve:function(){for(var d="",E=!1,I=arguments.length-1;I>=-1&&!E;I--){var D=I>=0?arguments[I]:v.cwd();if(typeof D!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!D)return"";d=D+"/"+d,E=D.charAt(0)==="/"}return d=vt.normalizeArray(d.split("/").filter(function(O){return!!O}),!E).join("/"),(E?"/":"")+d||"."},relative:function(d,E){d=Gn.resolve(d).substr(1),E=Gn.resolve(E).substr(1);function I(_e){for(var ot=0;ot<_e.length&&_e[ot]==="";ot++);for(var wt=_e.length-1;wt>=0&&_e[wt]==="";wt--);return ot>wt?[]:_e.slice(ot,wt-ot+1)}for(var D=I(d.split("/")),O=I(E.split("/")),V=Math.min(D.length,O.length),ie=V,Be=0;Be0?E=D.slice(0,O).toString("utf-8"):E=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(E=window.prompt("Input: "),E!==null&&(E+=` +`)):typeof readline=="function"&&(E=readline(),E!==null&&(E+=` +`));if(!E)return null;d.input=RA(E,!0)}return d.input.shift()},put_char:function(d,E){E===null||E===10?(S(qe(d.output,0)),d.output=[]):E!=0&&d.output.push(E)},flush:function(d){d.output&&d.output.length>0&&(S(qe(d.output,0)),d.output=[])}},default_tty1_ops:{put_char:function(d,E){E===null||E===10?(x(qe(d.output,0)),d.output=[]):E!=0&&d.output.push(E)},flush:function(d){d.output&&d.output.length>0&&(x(qe(d.output,0)),d.output=[])}}};function hs(d){for(var E=Y(d,65536),I=Et(E);d=E)){var D=1024*1024;E=Math.max(E,I*(I>>0),I!=0&&(E=Math.max(E,256));var O=d.contents;d.contents=new Uint8Array(E),d.usedBytes>0&&d.contents.set(O.subarray(0,d.usedBytes),0)}},resizeFileStorage:function(d,E){if(d.usedBytes!=E)if(E==0)d.contents=null,d.usedBytes=0;else{var I=d.contents;d.contents=new Uint8Array(E),I&&d.contents.set(I.subarray(0,Math.min(E,d.usedBytes))),d.usedBytes=E}},node_ops:{getattr:function(d){var E={};return E.dev=v.isChrdev(d.mode)?d.id:1,E.ino=d.id,E.mode=d.mode,E.nlink=1,E.uid=0,E.gid=0,E.rdev=d.rdev,v.isDir(d.mode)?E.size=4096:v.isFile(d.mode)?E.size=d.usedBytes:v.isLink(d.mode)?E.size=d.link.length:E.size=0,E.atime=new Date(d.timestamp),E.mtime=new Date(d.timestamp),E.ctime=new Date(d.timestamp),E.blksize=4096,E.blocks=Math.ceil(E.size/E.blksize),E},setattr:function(d,E){E.mode!==void 0&&(d.mode=E.mode),E.timestamp!==void 0&&(d.timestamp=E.timestamp),E.size!==void 0&&pt.resizeFileStorage(d,E.size)},lookup:function(d,E){throw v.genericErrors[44]},mknod:function(d,E,I,D){return pt.createNode(d,E,I,D)},rename:function(d,E,I){if(v.isDir(d.mode)){var D;try{D=v.lookupNode(E,I)}catch(V){}if(D)for(var O in D.contents)throw new v.ErrnoError(55)}delete d.parent.contents[d.name],d.parent.timestamp=Date.now(),d.name=I,E.contents[I]=d,E.timestamp=d.parent.timestamp,d.parent=E},unlink:function(d,E){delete d.contents[E],d.timestamp=Date.now()},rmdir:function(d,E){var I=v.lookupNode(d,E);for(var D in I.contents)throw new v.ErrnoError(55);delete d.contents[E],d.timestamp=Date.now()},readdir:function(d){var E=[".",".."];for(var I in d.contents)!d.contents.hasOwnProperty(I)||E.push(I);return E},symlink:function(d,E,I){var D=pt.createNode(d,E,511|40960,0);return D.link=I,D},readlink:function(d){if(!v.isLink(d.mode))throw new v.ErrnoError(28);return d.link}},stream_ops:{read:function(d,E,I,D,O){var V=d.node.contents;if(O>=d.node.usedBytes)return 0;var ie=Math.min(d.node.usedBytes-O,D);if(ie>8&&V.subarray)E.set(V.subarray(O,O+ie),I);else for(var Be=0;Be0||D+I>2)}catch(I){throw I.code?new v.ErrnoError(lt.convertNodeCode(I)):I}return E.mode},realPath:function(d){for(var E=[];d.parent!==d;)E.push(d.name),d=d.parent;return E.push(d.mount.opts.root),E.reverse(),vt.join.apply(null,E)},flagsForNode:function(d){d&=~2097152,d&=~2048,d&=~32768,d&=~524288;var E=0;for(var I in lt.flagsForNodeMap)d&I&&(E|=lt.flagsForNodeMap[I],d^=I);if(d)throw new v.ErrnoError(28);return E},node_ops:{getattr:function(d){var E=lt.realPath(d),I;try{I=Oe.lstatSync(E)}catch(D){throw D.code?new v.ErrnoError(lt.convertNodeCode(D)):D}return lt.isWindows&&!I.blksize&&(I.blksize=4096),lt.isWindows&&!I.blocks&&(I.blocks=(I.size+I.blksize-1)/I.blksize|0),{dev:I.dev,ino:I.ino,mode:I.mode,nlink:I.nlink,uid:I.uid,gid:I.gid,rdev:I.rdev,size:I.size,atime:I.atime,mtime:I.mtime,ctime:I.ctime,blksize:I.blksize,blocks:I.blocks}},setattr:function(d,E){var I=lt.realPath(d);try{if(E.mode!==void 0&&(Oe.chmodSync(I,E.mode),d.mode=E.mode),E.timestamp!==void 0){var D=new Date(E.timestamp);Oe.utimesSync(I,D,D)}E.size!==void 0&&Oe.truncateSync(I,E.size)}catch(O){throw O.code?new v.ErrnoError(lt.convertNodeCode(O)):O}},lookup:function(d,E){var I=vt.join2(lt.realPath(d),E),D=lt.getMode(I);return lt.createNode(d,E,D)},mknod:function(d,E,I,D){var O=lt.createNode(d,E,I,D),V=lt.realPath(O);try{v.isDir(O.mode)?Oe.mkdirSync(V,O.mode):Oe.writeFileSync(V,"",{mode:O.mode})}catch(ie){throw ie.code?new v.ErrnoError(lt.convertNodeCode(ie)):ie}return O},rename:function(d,E,I){var D=lt.realPath(d),O=vt.join2(lt.realPath(E),I);try{Oe.renameSync(D,O)}catch(V){throw V.code?new v.ErrnoError(lt.convertNodeCode(V)):V}d.name=I},unlink:function(d,E){var I=vt.join2(lt.realPath(d),E);try{Oe.unlinkSync(I)}catch(D){throw D.code?new v.ErrnoError(lt.convertNodeCode(D)):D}},rmdir:function(d,E){var I=vt.join2(lt.realPath(d),E);try{Oe.rmdirSync(I)}catch(D){throw D.code?new v.ErrnoError(lt.convertNodeCode(D)):D}},readdir:function(d){var E=lt.realPath(d);try{return Oe.readdirSync(E)}catch(I){throw I.code?new v.ErrnoError(lt.convertNodeCode(I)):I}},symlink:function(d,E,I){var D=vt.join2(lt.realPath(d),E);try{Oe.symlinkSync(I,D)}catch(O){throw O.code?new v.ErrnoError(lt.convertNodeCode(O)):O}},readlink:function(d){var E=lt.realPath(d);try{return E=Oe.readlinkSync(E),E=Mu.relative(Mu.resolve(d.mount.opts.root),E),E}catch(I){throw I.code?new v.ErrnoError(lt.convertNodeCode(I)):I}}},stream_ops:{open:function(d){var E=lt.realPath(d.node);try{v.isFile(d.node.mode)&&(d.nfd=Oe.openSync(E,lt.flagsForNode(d.flags)))}catch(I){throw I.code?new v.ErrnoError(lt.convertNodeCode(I)):I}},close:function(d){try{v.isFile(d.node.mode)&&d.nfd&&Oe.closeSync(d.nfd)}catch(E){throw E.code?new v.ErrnoError(lt.convertNodeCode(E)):E}},read:function(d,E,I,D,O){if(D===0)return 0;try{return Oe.readSync(d.nfd,lt.bufferFrom(E.buffer),I,D,O)}catch(V){throw new v.ErrnoError(lt.convertNodeCode(V))}},write:function(d,E,I,D,O){try{return Oe.writeSync(d.nfd,lt.bufferFrom(E.buffer),I,D,O)}catch(V){throw new v.ErrnoError(lt.convertNodeCode(V))}},llseek:function(d,E,I){var D=E;if(I===1)D+=d.position;else if(I===2&&v.isFile(d.node.mode))try{var O=Oe.fstatSync(d.nfd);D+=O.size}catch(V){throw new v.ErrnoError(lt.convertNodeCode(V))}if(D<0)throw new v.ErrnoError(28);return D},mmap:function(d,E,I,D,O,V){if(E!==0)throw new v.ErrnoError(28);if(!v.isFile(d.node.mode))throw new v.ErrnoError(43);var ie=hs(I);return lt.stream_ops.read(d,pe,ie,I,D),{ptr:ie,allocated:!0}},msync:function(d,E,I,D,O){if(!v.isFile(d.node.mode))throw new v.ErrnoError(43);if(O&2)return 0;var V=lt.stream_ops.write(d,E,0,D,I,!1);return 0}}},mn={lookupPath:function(d){return{path:d,node:{mode:lt.getMode(d)}}},createStandardStreams:function(){v.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var d=1;d<3;d++)v.streams[d]={fd:d,nfd:d,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(d,E){v.isDir(d)?Oe.mkdirSync(d,E):Oe.writeFileSync(d,"",{mode:E})},mkdir:function(){Oe.mkdirSync.apply(void 0,arguments)},symlink:function(){Oe.symlinkSync.apply(void 0,arguments)},rename:function(){Oe.renameSync.apply(void 0,arguments)},rmdir:function(){Oe.rmdirSync.apply(void 0,arguments)},readdir:function(){Oe.readdirSync.apply(void 0,arguments)},unlink:function(){Oe.unlinkSync.apply(void 0,arguments)},readlink:function(){return Oe.readlinkSync.apply(void 0,arguments)},stat:function(){return Oe.statSync.apply(void 0,arguments)},lstat:function(){return Oe.lstatSync.apply(void 0,arguments)},chmod:function(){Oe.chmodSync.apply(void 0,arguments)},fchmod:function(){Oe.fchmodSync.apply(void 0,arguments)},chown:function(){Oe.chownSync.apply(void 0,arguments)},fchown:function(){Oe.fchownSync.apply(void 0,arguments)},truncate:function(){Oe.truncateSync.apply(void 0,arguments)},ftruncate:function(d,E){if(E<0)throw new v.ErrnoError(28);Oe.ftruncateSync.apply(void 0,arguments)},utime:function(){Oe.utimesSync.apply(void 0,arguments)},open:function(d,E,I,D){typeof E=="string"&&(E=Xs.modeStringToFlags(E));var O=Oe.openSync(d,lt.flagsForNode(E),I),V=D!=null?D:v.nextfd(O),ie={fd:V,nfd:O,position:0,path:d,flags:E,seekable:!0};return v.streams[V]=ie,ie},close:function(d){d.stream_ops||Oe.closeSync(d.nfd),v.closeStream(d.fd)},llseek:function(d,E,I){if(d.stream_ops)return Xs.llseek(d,E,I);var D=E;if(I===1)D+=d.position;else if(I===2)D+=Oe.fstatSync(d.nfd).size;else if(I!==0)throw new v.ErrnoError(xo.EINVAL);if(D<0)throw new v.ErrnoError(xo.EINVAL);return d.position=D,D},read:function(d,E,I,D,O){if(d.stream_ops)return Xs.read(d,E,I,D,O);var V=typeof O!="undefined";!V&&d.seekable&&(O=d.position);var ie=Oe.readSync(d.nfd,lt.bufferFrom(E.buffer),I,D,O);return V||(d.position+=ie),ie},write:function(d,E,I,D,O){if(d.stream_ops)return Xs.write(d,E,I,D,O);d.flags&+"1024"&&v.llseek(d,0,+"2");var V=typeof O!="undefined";!V&&d.seekable&&(O=d.position);var ie=Oe.writeSync(d.nfd,lt.bufferFrom(E.buffer),I,D,O);return V||(d.position+=ie),ie},allocate:function(){throw new v.ErrnoError(xo.EOPNOTSUPP)},mmap:function(d,E,I,D,O,V){if(d.stream_ops)return Xs.mmap(d,E,I,D,O,V);if(E!==0)throw new v.ErrnoError(28);var ie=hs(I);return v.read(d,pe,ie,I,D),{ptr:ie,allocated:!0}},msync:function(d,E,I,D,O){return d.stream_ops?Xs.msync(d,E,I,D,O):(O&2||v.write(d,E,0,D,I),0)},munmap:function(){return 0},ioctl:function(){throw new v.ErrnoError(xo.ENOTTY)}},v={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(d,E){if(d=Gn.resolve(v.cwd(),d),E=E||{},!d)return{path:"",node:null};var I={follow_mount:!0,recurse_count:0};for(var D in I)E[D]===void 0&&(E[D]=I[D]);if(E.recurse_count>8)throw new v.ErrnoError(32);for(var O=vt.normalizeArray(d.split("/").filter(function(ut){return!!ut}),!1),V=v.root,ie="/",Be=0;Be40)throw new v.ErrnoError(32)}}return{path:ie,node:V}},getPath:function(d){for(var E;;){if(v.isRoot(d)){var I=d.mount.mountpoint;return E?I[I.length-1]!=="/"?I+"/"+E:I+E:I}E=E?d.name+"/"+E:d.name,d=d.parent}},hashName:function(d,E){for(var I=0,D=0;D>>0)%v.nameTable.length},hashAddNode:function(d){var E=v.hashName(d.parent.id,d.name);d.name_next=v.nameTable[E],v.nameTable[E]=d},hashRemoveNode:function(d){var E=v.hashName(d.parent.id,d.name);if(v.nameTable[E]===d)v.nameTable[E]=d.name_next;else for(var I=v.nameTable[E];I;){if(I.name_next===d){I.name_next=d.name_next;break}I=I.name_next}},lookupNode:function(d,E){var I=v.mayLookup(d);if(I)throw new v.ErrnoError(I,d);for(var D=v.hashName(d.id,E),O=v.nameTable[D];O;O=O.name_next){var V=O.name;if(O.parent.id===d.id&&V===E)return O}return v.lookup(d,E)},createNode:function(d,E,I,D){var O=new v.FSNode(d,E,I,D);return v.hashAddNode(O),O},destroyNode:function(d){v.hashRemoveNode(d)},isRoot:function(d){return d===d.parent},isMountpoint:function(d){return!!d.mounted},isFile:function(d){return(d&61440)==32768},isDir:function(d){return(d&61440)==16384},isLink:function(d){return(d&61440)==40960},isChrdev:function(d){return(d&61440)==8192},isBlkdev:function(d){return(d&61440)==24576},isFIFO:function(d){return(d&61440)==4096},isSocket:function(d){return(d&49152)==49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(d){var E=v.flagModes[d];if(typeof E=="undefined")throw new Error("Unknown file open mode: "+d);return E},flagsToPermissionString:function(d){var E=["r","w","rw"][d&3];return d&512&&(E+="w"),E},nodePermissions:function(d,E){return v.ignorePermissions?0:E.includes("r")&&!(d.mode&292)||E.includes("w")&&!(d.mode&146)||E.includes("x")&&!(d.mode&73)?2:0},mayLookup:function(d){var E=v.nodePermissions(d,"x");return E||(d.node_ops.lookup?0:2)},mayCreate:function(d,E){try{var I=v.lookupNode(d,E);return 20}catch(D){}return v.nodePermissions(d,"wx")},mayDelete:function(d,E,I){var D;try{D=v.lookupNode(d,E)}catch(V){return V.errno}var O=v.nodePermissions(d,"wx");if(O)return O;if(I){if(!v.isDir(D.mode))return 54;if(v.isRoot(D)||v.getPath(D)===v.cwd())return 10}else if(v.isDir(D.mode))return 31;return 0},mayOpen:function(d,E){return d?v.isLink(d.mode)?32:v.isDir(d.mode)&&(v.flagsToPermissionString(E)!=="r"||E&512)?31:v.nodePermissions(d,v.flagsToPermissionString(E)):44},MAX_OPEN_FDS:4096,nextfd:function(d,E){d=d||0,E=E||v.MAX_OPEN_FDS;for(var I=d;I<=E;I++)if(!v.streams[I])return I;throw new v.ErrnoError(33)},getStream:function(d){return v.streams[d]},createStream:function(d,E,I){v.FSStream||(v.FSStream=function(){},v.FSStream.prototype={object:{get:function(){return this.node},set:function(ie){this.node=ie}},isRead:{get:function(){return(this.flags&2097155)!=1}},isWrite:{get:function(){return(this.flags&2097155)!=0}},isAppend:{get:function(){return this.flags&1024}}});var D=new v.FSStream;for(var O in d)D[O]=d[O];d=D;var V=v.nextfd(E,I);return d.fd=V,v.streams[V]=d,d},closeStream:function(d){v.streams[d]=null},chrdev_stream_ops:{open:function(d){var E=v.getDevice(d.node.rdev);d.stream_ops=E.stream_ops,d.stream_ops.open&&d.stream_ops.open(d)},llseek:function(){throw new v.ErrnoError(70)}},major:function(d){return d>>8},minor:function(d){return d&255},makedev:function(d,E){return d<<8|E},registerDevice:function(d,E){v.devices[d]={stream_ops:E}},getDevice:function(d){return v.devices[d]},getMounts:function(d){for(var E=[],I=[d];I.length;){var D=I.pop();E.push(D),I.push.apply(I,D.mounts)}return E},syncfs:function(d,E){typeof d=="function"&&(E=d,d=!1),v.syncFSRequests++,v.syncFSRequests>1&&x("warning: "+v.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var I=v.getMounts(v.root.mount),D=0;function O(ie){return v.syncFSRequests--,E(ie)}function V(ie){if(ie)return V.errored?void 0:(V.errored=!0,O(ie));++D>=I.length&&O(null)}I.forEach(function(ie){if(!ie.type.syncfs)return V(null);ie.type.syncfs(ie,d,V)})},mount:function(d,E,I){var D=I==="/",O=!I,V;if(D&&v.root)throw new v.ErrnoError(10);if(!D&&!O){var ie=v.lookupPath(I,{follow_mount:!1});if(I=ie.path,V=ie.node,v.isMountpoint(V))throw new v.ErrnoError(10);if(!v.isDir(V.mode))throw new v.ErrnoError(54)}var Be={type:d,opts:E,mountpoint:I,mounts:[]},Ce=d.mount(Be);return Ce.mount=Be,Be.root=Ce,D?v.root=Ce:V&&(V.mounted=Be,V.mount&&V.mount.mounts.push(Be)),Ce},unmount:function(d){var E=v.lookupPath(d,{follow_mount:!1});if(!v.isMountpoint(E.node))throw new v.ErrnoError(28);var I=E.node,D=I.mounted,O=v.getMounts(D);Object.keys(v.nameTable).forEach(function(ie){for(var Be=v.nameTable[ie];Be;){var Ce=Be.name_next;O.includes(Be.mount)&&v.destroyNode(Be),Be=Ce}}),I.mounted=null;var V=I.mount.mounts.indexOf(D);I.mount.mounts.splice(V,1)},lookup:function(d,E){return d.node_ops.lookup(d,E)},mknod:function(d,E,I){var D=v.lookupPath(d,{parent:!0}),O=D.node,V=vt.basename(d);if(!V||V==="."||V==="..")throw new v.ErrnoError(28);var ie=v.mayCreate(O,V);if(ie)throw new v.ErrnoError(ie);if(!O.node_ops.mknod)throw new v.ErrnoError(63);return O.node_ops.mknod(O,V,E,I)},create:function(d,E){return E=E!==void 0?E:438,E&=4095,E|=32768,v.mknod(d,E,0)},mkdir:function(d,E){return E=E!==void 0?E:511,E&=511|512,E|=16384,v.mknod(d,E,0)},mkdirTree:function(d,E){for(var I=d.split("/"),D="",O=0;Othis.length-1||ut<0)){var nt=ut%this.chunkSize,It=ut/this.chunkSize|0;return this.getter(It)[nt]}},V.prototype.setDataGetter=function(ut){this.getter=ut},V.prototype.cacheLength=function(){var ut=new XMLHttpRequest;if(ut.open("HEAD",I,!1),ut.send(null),!(ut.status>=200&&ut.status<300||ut.status===304))throw new Error("Couldn't load "+I+". Status: "+ut.status);var nt=Number(ut.getResponseHeader("Content-length")),It,ke=(It=ut.getResponseHeader("Accept-Ranges"))&&It==="bytes",Jn=(It=ut.getResponseHeader("Content-Encoding"))&&It==="gzip",Mi=1024*1024;ke||(Mi=nt);var OA=function(ps,va){if(ps>va)throw new Error("invalid range ("+ps+", "+va+") or no bytes requested!");if(va>nt-1)throw new Error("only "+nt+" bytes available! programmer error!");var Yr=new XMLHttpRequest;if(Yr.open("GET",I,!1),nt!==Mi&&Yr.setRequestHeader("Range","bytes="+ps+"-"+va),typeof Uint8Array!="undefined"&&(Yr.responseType="arraybuffer"),Yr.overrideMimeType&&Yr.overrideMimeType("text/plain; charset=x-user-defined"),Yr.send(null),!(Yr.status>=200&&Yr.status<300||Yr.status===304))throw new Error("Couldn't load "+I+". Status: "+Yr.status);return Yr.response!==void 0?new Uint8Array(Yr.response||[]):RA(Yr.responseText||"",!0)},Gr=this;Gr.setDataGetter(function(ps){var va=ps*Mi,Yr=(ps+1)*Mi-1;if(Yr=Math.min(Yr,nt-1),typeof Gr.chunks[ps]=="undefined"&&(Gr.chunks[ps]=OA(va,Yr)),typeof Gr.chunks[ps]=="undefined")throw new Error("doXHR failed!");return Gr.chunks[ps]}),(Jn||!nt)&&(Mi=nt=1,nt=this.getter(0).length,Mi=nt,S("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=nt,this._chunkSize=Mi,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!u)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var ie=new V;Object.defineProperties(ie,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var Be={isDevice:!1,contents:ie}}else var Be={isDevice:!1,url:I};var Ce=v.createFile(d,E,Be,D,O);Be.contents?Ce.contents=Be.contents:Be.url&&(Ce.contents=null,Ce.url=Be.url),Object.defineProperties(Ce,{usedBytes:{get:function(){return this.contents.length}}});var _e={},ot=Object.keys(Ce.stream_ops);return ot.forEach(function(wt){var ut=Ce.stream_ops[wt];_e[wt]=function(){return v.forceLoadFile(Ce),ut.apply(null,arguments)}}),_e.read=function(ut,nt,It,ke,Jn){v.forceLoadFile(Ce);var Mi=ut.node.contents;if(Jn>=Mi.length)return 0;var OA=Math.min(Mi.length-Jn,ke);if(Mi.slice)for(var Gr=0;Gr>2]=D.dev,fe[I+4>>2]=0,fe[I+8>>2]=D.ino,fe[I+12>>2]=D.mode,fe[I+16>>2]=D.nlink,fe[I+20>>2]=D.uid,fe[I+24>>2]=D.gid,fe[I+28>>2]=D.rdev,fe[I+32>>2]=0,Oi=[D.size>>>0,(oe=D.size,+Math.abs(oe)>=1?oe>0?(Math.min(+Math.floor(oe/4294967296),4294967295)|0)>>>0:~~+Math.ceil((oe-+(~~oe>>>0))/4294967296)>>>0:0)],fe[I+40>>2]=Oi[0],fe[I+44>>2]=Oi[1],fe[I+48>>2]=4096,fe[I+52>>2]=D.blocks,fe[I+56>>2]=D.atime.getTime()/1e3|0,fe[I+60>>2]=0,fe[I+64>>2]=D.mtime.getTime()/1e3|0,fe[I+68>>2]=0,fe[I+72>>2]=D.ctime.getTime()/1e3|0,fe[I+76>>2]=0,Oi=[D.ino>>>0,(oe=D.ino,+Math.abs(oe)>=1?oe>0?(Math.min(+Math.floor(oe/4294967296),4294967295)|0)>>>0:~~+Math.ceil((oe-+(~~oe>>>0))/4294967296)>>>0:0)],fe[I+80>>2]=Oi[0],fe[I+84>>2]=Oi[1],0},doMsync:function(d,E,I,D,O){var V=X.slice(d,d+I);v.msync(E,V,O,I,D)},doMkdir:function(d,E){return d=vt.normalize(d),d[d.length-1]==="/"&&(d=d.substr(0,d.length-1)),v.mkdir(d,E,0),0},doMknod:function(d,E,I){switch(E&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return v.mknod(d,E,I),0},doReadlink:function(d,E,I){if(I<=0)return-28;var D=v.readlink(d),O=Math.min(I,he(D)),V=pe[E+O];return Qe(D,E,I+1),pe[E+O]=V,O},doAccess:function(d,E){if(E&~7)return-28;var I,D=v.lookupPath(d,{follow:!0});if(I=D.node,!I)return-44;var O="";return E&4&&(O+="r"),E&2&&(O+="w"),E&1&&(O+="x"),O&&v.nodePermissions(I,O)?-2:0},doDup:function(d,E,I){var D=v.getStream(I);return D&&v.close(D),v.open(d,E,0,I,I).fd},doReadv:function(d,E,I,D){for(var O=0,V=0;V>2],Be=fe[E+(V*8+4)>>2],Ce=v.read(d,pe,ie,Be,D);if(Ce<0)return-1;if(O+=Ce,Ce>2],Be=fe[E+(V*8+4)>>2],Ce=v.write(d,pe,ie,Be,D);if(Ce<0)return-1;O+=Ce}return O},varargs:void 0,get:function(){Tt.varargs+=4;var d=fe[Tt.varargs-4>>2];return d},getStr:function(d){var E=re(d);return E},getStreamFromFD:function(d){var E=v.getStream(d);if(!E)throw new v.ErrnoError(8);return E},get64:function(d,E){return d}};function Tu(d,E){try{return d=Tt.getStr(d),v.chmod(d,E),0}catch(I){return(typeof v=="undefined"||!(I instanceof v.ErrnoError))&&Sr(I),-I.errno}}function Yl(d){return fe[Rt()>>2]=d,d}function Sh(d,E,I){Tt.varargs=I;try{var D=Tt.getStreamFromFD(d);switch(E){case 0:{var O=Tt.get();if(O<0)return-28;var V;return V=v.open(D.path,D.flags,0,O),V.fd}case 1:case 2:return 0;case 3:return D.flags;case 4:{var O=Tt.get();return D.flags|=O,0}case 12:{var O=Tt.get(),ie=0;return be[O+ie>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Yl(28),-1;default:return-28}}catch(Be){return(typeof v=="undefined"||!(Be instanceof v.ErrnoError))&&Sr(Be),-Be.errno}}function kh(d,E){try{var I=Tt.getStreamFromFD(d);return Tt.doStat(v.stat,I.path,E)}catch(D){return(typeof v=="undefined"||!(D instanceof v.ErrnoError))&&Sr(D),-D.errno}}function xh(d,E,I){Tt.varargs=I;try{var D=Tt.getStreamFromFD(d);switch(E){case 21509:case 21505:return D.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return D.tty?0:-59;case 21519:{if(!D.tty)return-59;var O=Tt.get();return fe[O>>2]=0,0}case 21520:return D.tty?-28:-59;case 21531:{var O=Tt.get();return v.ioctl(D,E,O)}case 21523:return D.tty?0:-59;case 21524:return D.tty?0:-59;default:Sr("bad ioctl syscall "+E)}}catch(V){return(typeof v=="undefined"||!(V instanceof v.ErrnoError))&&Sr(V),-V.errno}}function Ph(d,E,I){Tt.varargs=I;try{var D=Tt.getStr(d),O=I?Tt.get():0,V=v.open(D,E,O);return V.fd}catch(ie){return(typeof v=="undefined"||!(ie instanceof v.ErrnoError))&&Sr(ie),-ie.errno}}function Dh(d,E){try{return d=Tt.getStr(d),E=Tt.getStr(E),v.rename(d,E),0}catch(I){return(typeof v=="undefined"||!(I instanceof v.ErrnoError))&&Sr(I),-I.errno}}function G(d){try{return d=Tt.getStr(d),v.rmdir(d),0}catch(E){return(typeof v=="undefined"||!(E instanceof v.ErrnoError))&&Sr(E),-E.errno}}function yt(d,E){try{return d=Tt.getStr(d),Tt.doStat(v.stat,d,E)}catch(I){return(typeof v=="undefined"||!(I instanceof v.ErrnoError))&&Sr(I),-I.errno}}function DA(d){try{return d=Tt.getStr(d),v.unlink(d),0}catch(E){return(typeof v=="undefined"||!(E instanceof v.ErrnoError))&&Sr(E),-E.errno}}function $i(d,E,I){X.copyWithin(d,E,E+I)}function ql(d){try{return A.grow(d-ve.byteLength+65535>>>16),mi(A.buffer),1}catch(E){}}function $e(d){var E=X.length;d=d>>>0;var I=2147483648;if(d>I)return!1;for(var D=1;D<=4;D*=2){var O=E*(1+.2/D);O=Math.min(O,d+100663296);var V=Math.min(I,xe(Math.max(d,O),65536)),ie=ql(V);if(ie)return!0}return!1}function wa(d){try{var E=Tt.getStreamFromFD(d);return v.close(E),0}catch(I){return(typeof v=="undefined"||!(I instanceof v.ErrnoError))&&Sr(I),I.errno}}function Ou(d,E){try{var I=Tt.getStreamFromFD(d),D=I.tty?2:v.isDir(I.mode)?3:v.isLink(I.mode)?7:4;return pe[E>>0]=D,0}catch(O){return(typeof v=="undefined"||!(O instanceof v.ErrnoError))&&Sr(O),O.errno}}function SE(d,E,I,D){try{var O=Tt.getStreamFromFD(d),V=Tt.doReadv(O,E,I);return fe[D>>2]=V,0}catch(ie){return(typeof v=="undefined"||!(ie instanceof v.ErrnoError))&&Sr(ie),ie.errno}}function Rh(d,E,I,D,O){try{var V=Tt.getStreamFromFD(d),ie=4294967296,Be=I*ie+(E>>>0),Ce=9007199254740992;return Be<=-Ce||Be>=Ce?-61:(v.llseek(V,Be,D),Oi=[V.position>>>0,(oe=V.position,+Math.abs(oe)>=1?oe>0?(Math.min(+Math.floor(oe/4294967296),4294967295)|0)>>>0:~~+Math.ceil((oe-+(~~oe>>>0))/4294967296)>>>0:0)],fe[O>>2]=Oi[0],fe[O+4>>2]=Oi[1],V.getdents&&Be===0&&D===0&&(V.getdents=null),0)}catch(_e){return(typeof v=="undefined"||!(_e instanceof v.ErrnoError))&&Sr(_e),_e.errno}}function kE(d,E,I,D){try{var O=Tt.getStreamFromFD(d),V=Tt.doWritev(O,E,I);return fe[D>>2]=V,0}catch(ie){return(typeof v=="undefined"||!(ie instanceof v.ErrnoError))&&Sr(ie),ie.errno}}function gr(d){J(d)}function Yn(d){var E=Date.now()/1e3|0;return d&&(fe[d>>2]=E),E}function Jl(){if(Jl.called)return;Jl.called=!0;var d=new Date().getFullYear(),E=new Date(d,0,1),I=new Date(d,6,1),D=E.getTimezoneOffset(),O=I.getTimezoneOffset(),V=Math.max(D,O);fe[iQ()>>2]=V*60,fe[rQ()>>2]=Number(D!=O);function ie(wt){var ut=wt.toTimeString().match(/\(([A-Za-z ]+)\)$/);return ut?ut[1]:"GMT"}var Be=ie(E),Ce=ie(I),_e=Fe(Be),ot=Fe(Ce);O>2]=_e,fe[Yu()+4>>2]=ot):(fe[Yu()>>2]=ot,fe[Yu()+4>>2]=_e)}function Fh(d){Jl();var E=Date.UTC(fe[d+20>>2]+1900,fe[d+16>>2],fe[d+12>>2],fe[d+8>>2],fe[d+4>>2],fe[d>>2],0),I=new Date(E);fe[d+24>>2]=I.getUTCDay();var D=Date.UTC(I.getUTCFullYear(),0,1,0,0,0,0),O=(I.getTime()-D)/(1e3*60*60*24)|0;return fe[d+28>>2]=O,I.getTime()/1e3|0}var Vs=function(d,E,I,D){d||(d=this),this.parent=d,this.mount=d.mount,this.mounted=null,this.id=v.nextInode++,this.name=E,this.mode=I,this.node_ops={},this.stream_ops={},this.rdev=D},Ba=292|73,En=146;if(Object.defineProperties(Vs.prototype,{read:{get:function(){return(this.mode&Ba)===Ba},set:function(d){d?this.mode|=Ba:this.mode&=~Ba}},write:{get:function(){return(this.mode&En)===En},set:function(d){d?this.mode|=En:this.mode&=~En}},isFolder:{get:function(){return v.isDir(this.mode)}},isDevice:{get:function(){return v.isChrdev(this.mode)}}}),v.FSNode=Vs,v.staticInit(),g){var Oe=W_,Mu=require("path");lt.staticInit()}if(g){var Wl=function(d){return function(){try{return d.apply(this,arguments)}catch(E){throw E.code?new v.ErrnoError(xo[E.code]):E}}},Xs=Object.assign({},v);for(var zl in mn)v[zl]=Wl(mn[zl])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");function RA(d,E,I){var D=I>0?I:he(d)+1,O=new Array(D),V=se(d,O,0,O.length);return E&&(O.length=V),O}var Uu=typeof atob=="function"?atob:function(d){var E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",I="",D,O,V,ie,Be,Ce,_e,ot=0;d=d.replace(/[^A-Za-z0-9\+\/\=]/g,"");do ie=E.indexOf(d.charAt(ot++)),Be=E.indexOf(d.charAt(ot++)),Ce=E.indexOf(d.charAt(ot++)),_e=E.indexOf(d.charAt(ot++)),D=ie<<2|Be>>4,O=(Be&15)<<4|Ce>>2,V=(Ce&3)<<6|_e,I=I+String.fromCharCode(D),Ce!==64&&(I=I+String.fromCharCode(O)),_e!==64&&(I=I+String.fromCharCode(V));while(ot0||(vr(),gs>0))return;function E(){Ke||(Ke=!0,r.calledRun=!0,!ne&&(Hn(),i(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),us()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),E()},1)):E()}if(r.run=TA,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return TA(),e}}();typeof Jw=="object"&&typeof XP=="object"?XP.exports=ZP:typeof define=="function"&&define.amd?define([],function(){return ZP}):typeof Jw=="object"&&(Jw.createModule=ZP)});var E5=w((Pat,m5)=>{function GDe(t,e){for(var r=-1,i=t==null?0:t.length,n=Array(i);++r{var YDe=Array.isArray;I5.exports=YDe});var v5=w((Rat,y5)=>{var w5=Kc(),qDe=E5(),JDe=Os(),WDe=Id(),zDe=1/0,B5=w5?w5.prototype:void 0,b5=B5?B5.toString:void 0;function Q5(t){if(typeof t=="string")return t;if(JDe(t))return qDe(t,Q5)+"";if(WDe(t))return b5?b5.call(t):"";var e=t+"";return e=="0"&&1/t==-zDe?"-0":e}y5.exports=Q5});var nf=w((Fat,S5)=>{var _De=v5();function VDe(t){return t==null?"":_De(t)}S5.exports=VDe});var sD=w((Nat,k5)=>{function XDe(t,e,r){var i=-1,n=t.length;e<0&&(e=-e>n?0:n+e),r=r>n?n:r,r<0&&(r+=n),n=e>r?0:r-e>>>0,e>>>=0;for(var s=Array(n);++i{var ZDe=sD();function $De(t,e,r){var i=t.length;return r=r===void 0?i:r,!e&&r>=i?t:ZDe(t,e,r)}x5.exports=$De});var oD=w((Tat,D5)=>{var eRe="\\ud800-\\udfff",tRe="\\u0300-\\u036f",rRe="\\ufe20-\\ufe2f",iRe="\\u20d0-\\u20ff",nRe=tRe+rRe+iRe,sRe="\\ufe0e\\ufe0f",oRe="\\u200d",aRe=RegExp("["+oRe+eRe+nRe+sRe+"]");function ARe(t){return aRe.test(t)}D5.exports=ARe});var F5=w((Oat,R5)=>{function lRe(t){return t.split("")}R5.exports=lRe});var H5=w((Mat,N5)=>{var L5="\\ud800-\\udfff",cRe="\\u0300-\\u036f",uRe="\\ufe20-\\ufe2f",gRe="\\u20d0-\\u20ff",fRe=cRe+uRe+gRe,hRe="\\ufe0e\\ufe0f",pRe="["+L5+"]",aD="["+fRe+"]",AD="\\ud83c[\\udffb-\\udfff]",dRe="(?:"+aD+"|"+AD+")",T5="[^"+L5+"]",O5="(?:\\ud83c[\\udde6-\\uddff]){2}",M5="[\\ud800-\\udbff][\\udc00-\\udfff]",CRe="\\u200d",U5=dRe+"?",K5="["+hRe+"]?",mRe="(?:"+CRe+"(?:"+[T5,O5,M5].join("|")+")"+K5+U5+")*",ERe=K5+U5+mRe,IRe="(?:"+[T5+aD+"?",aD,O5,M5,pRe].join("|")+")",yRe=RegExp(AD+"(?="+AD+")|"+IRe+ERe,"g");function wRe(t){return t.match(yRe)||[]}N5.exports=wRe});var G5=w((Uat,j5)=>{var BRe=F5(),bRe=oD(),QRe=H5();function vRe(t){return bRe(t)?QRe(t):BRe(t)}j5.exports=vRe});var q5=w((Kat,Y5)=>{var SRe=P5(),kRe=oD(),xRe=G5(),PRe=nf();function DRe(t){return function(e){e=PRe(e);var r=kRe(e)?xRe(e):void 0,i=r?r[0]:e.charAt(0),n=r?SRe(r,1).join(""):e.slice(1);return i[t]()+n}}Y5.exports=DRe});var W5=w((Hat,J5)=>{var RRe=q5(),FRe=RRe("toUpperCase");J5.exports=FRe});var tB=w((jat,z5)=>{var NRe=nf(),LRe=W5();function TRe(t){return LRe(NRe(t).toLowerCase())}z5.exports=TRe});var _5=w((Gat,rB)=>{function ORe(){var t=0,e=1,r=2,i=3,n=4,s=5,o=6,a=7,l=8,c=9,u=10,g=11,f=12,h=13,p=14,m=15,y=16,Q=17,S=0,x=1,M=2,Y=3,U=4;function J(A,ne){return 55296<=A.charCodeAt(ne)&&A.charCodeAt(ne)<=56319&&56320<=A.charCodeAt(ne+1)&&A.charCodeAt(ne+1)<=57343}function W(A,ne){ne===void 0&&(ne=0);var le=A.charCodeAt(ne);if(55296<=le&&le<=56319&&ne=1){var Ae=A.charCodeAt(ne-1),T=le;return 55296<=Ae&&Ae<=56319?(Ae-55296)*1024+(T-56320)+65536:T}return le}function ee(A,ne,le){var Ae=[A].concat(ne).concat([le]),T=Ae[Ae.length-2],L=le,Ee=Ae.lastIndexOf(p);if(Ee>1&&Ae.slice(1,Ee).every(function(re){return re==i})&&[i,h,Q].indexOf(A)==-1)return M;var we=Ae.lastIndexOf(n);if(we>0&&Ae.slice(1,we).every(function(re){return re==n})&&[f,n].indexOf(T)==-1)return Ae.filter(function(re){return re==n}).length%2==1?Y:U;if(T==t&&L==e)return S;if(T==r||T==t||T==e)return L==p&&ne.every(function(re){return re==i})?M:x;if(L==r||L==t||L==e)return x;if(T==o&&(L==o||L==a||L==c||L==u))return S;if((T==c||T==a)&&(L==a||L==l))return S;if((T==u||T==l)&&L==l)return S;if(L==i||L==m)return S;if(L==s)return S;if(T==f)return S;var qe=Ae.indexOf(i)!=-1?Ae.lastIndexOf(i)-1:Ae.length-2;return[h,Q].indexOf(Ae[qe])!=-1&&Ae.slice(qe+1,-1).every(function(re){return re==i})&&L==p||T==m&&[y,Q].indexOf(L)!=-1?S:ne.indexOf(n)!=-1?M:T==n&&L==n?S:x}this.nextBreak=function(A,ne){if(ne===void 0&&(ne=0),ne<0)return 0;if(ne>=A.length-1)return A.length;for(var le=Z(W(A,ne)),Ae=[],T=ne+1;T{var MRe=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,iB;function URe(){if(iB)return iB;if(typeof Intl.Segmenter!="undefined"){let t=new Intl.Segmenter("en",{granularity:"grapheme"});return iB=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=_5(),e=new t;return iB=r=>e.splitGraphemes(r)}}V5.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let i=r-e,n="",s=0,o=0;for(;t.length>0;){let a=t.match(MRe)||[t,t,void 0],l=URe()(a[1]),c=Math.min(e-s,l.length);l=l.slice(c);let u=Math.min(i-o,l.length);n+=l.slice(0,u).join(""),s+=c,o+=u,typeof a[2]!="undefined"&&(n+=a[2]),t=t.slice(a[0].length)}return n}});var sf=w((EAt,u6)=>{"use strict";var g6=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]),mAt=u6.exports=t=>t?Object.keys(t).map(e=>[g6.has(e)?g6.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var of=w((IAt,f6)=>{"use strict";var ZRe=require("events"),h6=require("stream"),qd=Bp(),p6=require("string_decoder").StringDecoder,sA=Symbol("EOF"),Jd=Symbol("maybeEmitEnd"),hl=Symbol("emittedEnd"),lB=Symbol("emittingEnd"),cB=Symbol("closed"),d6=Symbol("read"),gD=Symbol("flush"),C6=Symbol("flushChunk"),Nn=Symbol("encoding"),oA=Symbol("decoder"),uB=Symbol("flowing"),Wd=Symbol("paused"),zd=Symbol("resume"),pn=Symbol("bufferLength"),m6=Symbol("bufferPush"),fD=Symbol("bufferShift"),_i=Symbol("objectMode"),Vi=Symbol("destroyed"),E6=global._MP_NO_ITERATOR_SYMBOLS_!=="1",$Re=E6&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),eFe=E6&&Symbol.iterator||Symbol("iterator not implemented"),I6=t=>t==="end"||t==="finish"||t==="prefinish",tFe=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,rFe=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);f6.exports=class y6 extends h6{constructor(e){super();this[uB]=!1,this[Wd]=!1,this.pipes=new qd,this.buffer=new qd,this[_i]=e&&e.objectMode||!1,this[_i]?this[Nn]=null:this[Nn]=e&&e.encoding||null,this[Nn]==="buffer"&&(this[Nn]=null),this[oA]=this[Nn]?new p6(this[Nn]):null,this[sA]=!1,this[hl]=!1,this[lB]=!1,this[cB]=!1,this.writable=!0,this.readable=!0,this[pn]=0,this[Vi]=!1}get bufferLength(){return this[pn]}get encoding(){return this[Nn]}set encoding(e){if(this[_i])throw new Error("cannot set encoding in objectMode");if(this[Nn]&&e!==this[Nn]&&(this[oA]&&this[oA].lastNeed||this[pn]))throw new Error("cannot change encoding");this[Nn]!==e&&(this[oA]=e?new p6(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[oA].write(r)))),this[Nn]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[_i]}set objectMode(e){this[_i]=this[_i]||!!e}write(e,r,i){if(this[sA])throw new Error("write after end");return this[Vi]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[_i]&&!Buffer.isBuffer(e)&&(rFe(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):tFe(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[pn]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof e=="string"&&!this[_i]&&!(r===this[Nn]&&!this[oA].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Nn]&&(e=this[oA].write(e)),this.flowing?(this[pn]!==0&&this[gD](!0),this.emit("data",e)):this[m6](e),this[pn]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(e){if(this[Vi])return null;try{return this[pn]===0||e===0||e>this[pn]?null:(this[_i]&&(e=null),this.buffer.length>1&&!this[_i]&&(this.encoding?this.buffer=new qd([Array.from(this.buffer).join("")]):this.buffer=new qd([Buffer.concat(Array.from(this.buffer),this[pn])])),this[d6](e||null,this.buffer.head.value))}finally{this[Jd]()}}[d6](e,r){return e===r.length||e===null?this[fD]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[pn]-=e),this.emit("data",r),!this.buffer.length&&!this[sA]&&this.emit("drain"),r}end(e,r,i){return typeof e=="function"&&(i=e,e=null),typeof r=="function"&&(i=r,r="utf8"),e&&this.write(e,r),i&&this.once("end",i),this[sA]=!0,this.writable=!1,(this.flowing||!this[Wd])&&this[Jd](),this}[zd](){this[Vi]||(this[Wd]=!1,this[uB]=!0,this.emit("resume"),this.buffer.length?this[gD]():this[sA]?this[Jd]():this.emit("drain"))}resume(){return this[zd]()}pause(){this[uB]=!1,this[Wd]=!0}get destroyed(){return this[Vi]}get flowing(){return this[uB]}get paused(){return this[Wd]}[m6](e){return this[_i]?this[pn]+=1:this[pn]+=e.length,this.buffer.push(e)}[fD](){return this.buffer.length&&(this[_i]?this[pn]-=1:this[pn]-=this.buffer.head.value.length),this.buffer.shift()}[gD](e){do;while(this[C6](this[fD]()));!e&&!this.buffer.length&&!this[sA]&&this.emit("drain")}[C6](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Vi])return;let i=this[hl];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:e,opts:r,ondrain:s=>this[zd]()};return this.pipes.push(n),e.on("drain",n.ondrain),this[zd](),i&&n.opts.end&&n.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[zd]():I6(e)&&this[hl]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[hl]}[Jd](){!this[lB]&&!this[hl]&&!this[Vi]&&this.buffer.length===0&&this[sA]&&(this[lB]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[cB]&&this.emit("close"),this[lB]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==Vi&&this[Vi])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[hl]===!0)return;this[hl]=!0,this.readable=!1,this[oA]&&(r=this[oA].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(e==="close"&&(this[cB]=!0,!this[hl]&&!this[Vi]))return;let i=new Array(arguments.length);if(i[0]=e,i[1]=r,arguments.length>2)for(let n=2;n{e.push(i),this[_i]||(e.dataLength+=i.length)}),r.then(()=>e)}concat(){return this[_i]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[_i]?Promise.reject(new Error("cannot concat in objectMode")):this[Nn]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Vi,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",i=>r(i))})}[$Re](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[sA])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[sA]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},l=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(Vi,l),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[eFe](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Vi]?(e?this.emit("error",e):this.emit(Vi),this):(this[Vi]=!0,this.buffer=new qd,this[pn]=0,typeof this.close=="function"&&!this[cB]&&this.close(),e?this.emit("error",e):this.emit(Vi),this)}static isStream(e){return!!e&&(e instanceof y6||e instanceof h6||e instanceof ZRe&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var B6=w((yAt,w6)=>{var iFe=require("zlib").constants||{ZLIB_VERNUM:4736};w6.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},iFe))});var wD=w(ss=>{"use strict";var hD=require("assert"),pl=require("buffer").Buffer,b6=require("zlib"),Wc=ss.constants=B6(),nFe=of(),Q6=pl.concat,zc=Symbol("_superWrite"),_d=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},sFe=Symbol("opts"),Vd=Symbol("flushFlag"),v6=Symbol("finishFlushFlag"),pD=Symbol("fullFlushFlag"),pr=Symbol("handle"),gB=Symbol("onError"),af=Symbol("sawError"),dD=Symbol("level"),CD=Symbol("strategy"),mD=Symbol("ended"),wAt=Symbol("_defaultFullFlush"),ED=class extends nFe{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[af]=!1,this[mD]=!1,this[sFe]=e,this[Vd]=e.flush,this[v6]=e.finishFlush;try{this[pr]=new b6[r](e)}catch(i){throw new _d(i)}this[gB]=i=>{this[af]||(this[af]=!0,this.close(),this.emit("error",i))},this[pr].on("error",i=>this[gB](new _d(i))),this.once("end",()=>this.close)}close(){this[pr]&&(this[pr].close(),this[pr]=null,this.emit("close"))}reset(){if(!this[af])return hD(this[pr],"zlib binding closed"),this[pr].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[pD]),this.write(Object.assign(pl.alloc(0),{[Vd]:e})))}end(e,r,i){return e&&this.write(e,r),this.flush(this[v6]),this[mD]=!0,super.end(null,null,i)}get ended(){return this[mD]}write(e,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof e=="string"&&(e=pl.from(e,r)),this[af])return;hD(this[pr],"zlib binding closed");let n=this[pr]._handle,s=n.close;n.close=()=>{};let o=this[pr].close;this[pr].close=()=>{},pl.concat=c=>c;let a;try{let c=typeof e[Vd]=="number"?e[Vd]:this[Vd];a=this[pr]._processChunk(e,c),pl.concat=Q6}catch(c){pl.concat=Q6,this[gB](new _d(c))}finally{this[pr]&&(this[pr]._handle=n,n.close=s,this[pr].close=o,this[pr].removeAllListeners("error"))}this[pr]&&this[pr].on("error",c=>this[gB](new _d(c)));let l;if(a)if(Array.isArray(a)&&a.length>0){l=this[zc](pl.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[pr].params(e,r)}finally{this[pr].flush=i}this[pr]&&(this[dD]=e,this[CD]=r)}}}},S6=class extends dl{constructor(e){super(e,"Deflate")}},k6=class extends dl{constructor(e){super(e,"Inflate")}},ID=Symbol("_portable"),x6=class extends dl{constructor(e){super(e,"Gzip");this[ID]=e&&!!e.portable}[zc](e){return this[ID]?(this[ID]=!1,e[9]=255,super[zc](e)):super[zc](e)}},P6=class extends dl{constructor(e){super(e,"Gunzip")}},D6=class extends dl{constructor(e){super(e,"DeflateRaw")}},R6=class extends dl{constructor(e){super(e,"InflateRaw")}},F6=class extends dl{constructor(e){super(e,"Unzip")}},yD=class extends ED{constructor(e,r){e=e||{},e.flush=e.flush||Wc.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Wc.BROTLI_OPERATION_FINISH,super(e,r),this[pD]=Wc.BROTLI_OPERATION_FLUSH}},N6=class extends yD{constructor(e){super(e,"BrotliCompress")}},L6=class extends yD{constructor(e){super(e,"BrotliDecompress")}};ss.Deflate=S6;ss.Inflate=k6;ss.Gzip=x6;ss.Gunzip=P6;ss.DeflateRaw=D6;ss.InflateRaw=R6;ss.Unzip=F6;typeof b6.BrotliCompress=="function"?(ss.BrotliCompress=N6,ss.BrotliDecompress=L6):ss.BrotliCompress=ss.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var Xd=w(fB=>{"use strict";fB.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);fB.code=new Map(Array.from(fB.name).map(t=>[t[1],t[0]]))});var Zd=w((SAt,T6)=>{"use strict";var QAt=Xd(),oFe=of(),BD=Symbol("slurp");T6.exports=class extends oFe{constructor(e,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[BD](r),i&&this[BD](i,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(e):super.write(e.slice(0,i))}[BD](e,r){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(r&&i==="path")&&(this[i]=e[i])}}});var U6=w(bD=>{"use strict";var kAt=bD.encode=(t,e)=>{if(Number.isSafeInteger(t))t<0?AFe(t,e):aFe(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},aFe=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},AFe=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var i=e.length;i>1;i--){var n=t&255;t=Math.floor(t/256),r?e[i-1]=O6(n):n===0?e[i-1]=0:(r=!0,e[i-1]=M6(n))}},xAt=bD.parse=t=>{var e=t[t.length-1],r=t[0],i;if(r===128)i=cFe(t.slice(1,t.length));else if(r===255)i=lFe(t);else throw Error("invalid base256 encoding");if(!Number.isSafeInteger(i))throw Error("parsed number outside of javascript safe integer range");return i},lFe=t=>{for(var e=t.length,r=0,i=!1,n=e-1;n>-1;n--){var s=t[n],o;i?o=O6(s):s===0?o=s:(i=!0,o=M6(s)),o!==0&&(r-=o*Math.pow(256,e-n-1))}return r},cFe=t=>{for(var e=t.length,r=0,i=e-1;i>-1;i--){var n=t[i];n!==0&&(r+=n*Math.pow(256,e-i-1))}return r},O6=t=>(255^t)&255,M6=t=>(255^t)+1&255});var lf=w((DAt,K6)=>{"use strict";var QD=Xd(),Af=require("path").posix,H6=U6(),vD=Symbol("slurp"),os=Symbol("type"),j6=class{constructor(e,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[os]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,i,n):e&&this.set(e)}decode(e,r,i,n){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=_c(e,r,100),this.mode=Cl(e,r+100,8),this.uid=Cl(e,r+108,8),this.gid=Cl(e,r+116,8),this.size=Cl(e,r+124,12),this.mtime=SD(e,r+136,12),this.cksum=Cl(e,r+148,12),this[vD](i),this[vD](n,!0),this[os]=_c(e,r+156,1),this[os]===""&&(this[os]="0"),this[os]==="0"&&this.path.substr(-1)==="/"&&(this[os]="5"),this[os]==="5"&&(this.size=0),this.linkpath=_c(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=_c(e,r+265,32),this.gname=_c(e,r+297,32),this.devmaj=Cl(e,r+329,8),this.devmin=Cl(e,r+337,8),e[r+475]!==0){let o=_c(e,r+345,155);this.path=o+"/"+this.path}else{let o=_c(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=SD(e,r+476,12),this.ctime=SD(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=uFe(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=Vc(e,r,100,s)||this.needPax,this.needPax=ml(e,r+100,8,this.mode)||this.needPax,this.needPax=ml(e,r+108,8,this.uid)||this.needPax,this.needPax=ml(e,r+116,8,this.gid)||this.needPax,this.needPax=ml(e,r+124,12,this.size)||this.needPax,this.needPax=kD(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[os].charCodeAt(0),this.needPax=Vc(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=Vc(e,r+265,32,this.uname)||this.needPax,this.needPax=Vc(e,r+297,32,this.gname)||this.needPax,this.needPax=ml(e,r+329,8,this.devmaj)||this.needPax,this.needPax=ml(e,r+337,8,this.devmin)||this.needPax,this.needPax=Vc(e,r+345,i,o)||this.needPax,e[r+475]!==0?this.needPax=Vc(e,r+345,155,o)||this.needPax:(this.needPax=Vc(e,r+345,130,o)||this.needPax,this.needPax=kD(e,r+476,12,this.atime)||this.needPax,this.needPax=kD(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let l=r;l{let r=100,i=t,n="",s,o=Af.parse(t).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=e?s=[i.substr(0,r-1),n,!0]:(i=Af.join(Af.basename(n),i),n=Af.dirname(n));while(n!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},_c=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),SD=(t,e,r)=>gFe(Cl(t,e,r)),gFe=t=>t===null?null:new Date(t*1e3),Cl=(t,e,r)=>t[e]&128?H6.parse(t.slice(e,e+r)):fFe(t,e,r),hFe=t=>isNaN(t)?null:t,fFe=(t,e,r)=>hFe(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),pFe={12:8589934591,8:2097151},ml=(t,e,r,i)=>i===null?!1:i>pFe[r]||i<0?(H6.encode(i,t.slice(e,e+r)),!0):(dFe(t,e,r,i),!1),dFe=(t,e,r,i)=>t.write(CFe(i,r),e,r,"ascii"),CFe=(t,e)=>mFe(Math.floor(t).toString(8),e),mFe=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",kD=(t,e,r,i)=>i===null?!1:ml(t,e,r,i.getTime()/1e3),EFe=new Array(156).join("\0"),Vc=(t,e,r,i)=>i===null?!1:(t.write(i+EFe,e,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);K6.exports=j6});var pB=w((RAt,G6)=>{"use strict";var IFe=lf(),yFe=require("path"),hB=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new IFe({path:("PaxHeader/"+yFe.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};hB.parse=(t,e,r)=>new hB(wFe(BFe(t),e),r);var wFe=(t,e)=>e?Object.keys(t).reduce((r,i)=>(r[i]=t[i],r),e):t,BFe=t=>t.replace(/\n$/,"").split(` +`).reduce(bFe,Object.create(null)),bFe=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return t;let s=i.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};G6.exports=hB});var dB=w((FAt,Y6)=>{"use strict";Y6.exports=t=>class extends t{warn(e,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),i))}}});var PD=w((NAt,q6)=>{"use strict";var CB=["|","<",">","?",":"],xD=CB.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),QFe=new Map(CB.map((t,e)=>[t,xD[e]])),vFe=new Map(xD.map((t,e)=>[t,CB[e]]));q6.exports={encode:t=>CB.reduce((e,r)=>e.split(r).join(QFe.get(r)),t),decode:t=>xD.reduce((e,r)=>e.split(r).join(vFe.get(r)),t)}});var W6=w((LAt,J6)=>{"use strict";J6.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var OD=w((KAt,z6)=>{"use strict";var _6=of(),V6=pB(),X6=lf(),TAt=Zd(),ra=require("fs"),cf=require("path"),OAt=Xd(),SFe=16*1024*1024,Z6=Symbol("process"),$6=Symbol("file"),eV=Symbol("directory"),DD=Symbol("symlink"),tV=Symbol("hardlink"),$d=Symbol("header"),mB=Symbol("read"),RD=Symbol("lstat"),EB=Symbol("onlstat"),FD=Symbol("onread"),ND=Symbol("onreadlink"),LD=Symbol("openfile"),TD=Symbol("onopenfile"),Xc=Symbol("close"),IB=Symbol("mode"),rV=dB(),kFe=PD(),iV=W6(),yB=rV(class extends _6{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||SFe,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&cf.win32.isAbsolute(e)){let n=cf.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=kFe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||cf.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[EB](this.statCache.get(this.absolute)):this[RD]()}[RD](){ra.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[EB](r)})}[EB](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=xFe(e),this.emit("stat",e),this[Z6]()}[Z6](){switch(this.type){case"File":return this[$6]();case"Directory":return this[eV]();case"SymbolicLink":return this[DD]();default:return this.end()}}[IB](e){return iV(e,this.type==="Directory",this.portable)}[$d](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new X6({path:this.path,linkpath:this.linkpath,mode:this[IB](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new V6({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[eV](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[$d](),this.end()}[DD](){ra.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[ND](r)})}[ND](e){this.linkpath=e.replace(/\\/g,"/"),this[$d](),this.end()}[tV](e){this.type="Link",this.linkpath=cf.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[$d](),this.end()}[$6](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[tV](r)}this.linkCache.set(e,this.absolute)}if(this[$d](),this.stat.size===0)return this.end();this[LD]()}[LD](){ra.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[TD](r)})}[TD](e){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[mB](e,n,0,n.length,0,this.stat.size,r)}[mB](e,r,i,n,s,o,a){ra.read(e,r,i,n,s,(l,c)=>{if(l)return this[Xc](e,()=>this.emit("error",l));this[FD](e,r,i,n,s,o,a,c)})}[Xc](e,r){ra.close(e,r)}[FD](e,r,i,n,s,o,a,l){if(l<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Xc](e,()=>this.emit("error",u))}if(l>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[Xc](e,()=>this.emit("error",u))}if(l===o)for(let u=l;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[mB](e,r,i,n,s,o,a)}}),nV=class extends yB{constructor(e,r){super(e,r)}[RD](){this[EB](ra.lstatSync(this.absolute))}[DD](){this[ND](ra.readlinkSync(this.absolute))}[LD](){this[TD](ra.openSync(this.absolute,"r"))}[mB](e,r,i,n,s,o,a){let l=!0;try{let c=ra.readSync(e,r,i,n,s);this[FD](e,r,i,n,s,o,a,c),l=!1}finally{if(l)try{this[Xc](e,()=>{})}catch(c){}}}[Xc](e,r){ra.closeSync(e),r()}},PFe=rV(class extends _6{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[IB](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(cf.isAbsolute(this.path)&&!this.preservePaths){let n=cf.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new X6({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new V6({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[IB](e){return iV(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});yB.Sync=nV;yB.Tar=PFe;var xFe=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";z6.exports=yB});var xB=w((jAt,sV)=>{"use strict";var MD=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},DFe=of(),RFe=wD(),FFe=Zd(),UD=OD(),NFe=UD.Sync,LFe=UD.Tar,TFe=Bp(),oV=Buffer.alloc(1024),wB=Symbol("onStat"),BB=Symbol("ended"),ia=Symbol("queue"),uf=Symbol("current"),Zc=Symbol("process"),bB=Symbol("processing"),aV=Symbol("processJob"),na=Symbol("jobs"),KD=Symbol("jobDone"),QB=Symbol("addFSEntry"),AV=Symbol("addTarEntry"),HD=Symbol("stat"),jD=Symbol("readdir"),vB=Symbol("onreaddir"),SB=Symbol("pipe"),lV=Symbol("entry"),GD=Symbol("entryOpt"),YD=Symbol("writeEntryClass"),cV=Symbol("write"),qD=Symbol("ondrain"),kB=require("fs"),uV=require("path"),OFe=dB(),JD=OFe(class extends DFe{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[YD]=UD,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new RFe.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[qD]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[qD]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[ia]=new TFe,this[na]=0,this.jobs=+e.jobs||4,this[bB]=!1,this[BB]=!1}[cV](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[BB]=!0,this[Zc](),this}write(e){if(this[BB])throw new Error("write after end");return e instanceof FFe?this[AV](e):this[QB](e),this.flowing}[AV](e){let r=uV.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new MD(e.path,r,!1);i.entry=new LFe(e,this[GD](i)),i.entry.on("end",n=>this[KD](i)),this[na]+=1,this[ia].push(i)}this[Zc]()}[QB](e){let r=uV.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[ia].push(new MD(e,r)),this[Zc]()}[HD](e){e.pending=!0,this[na]+=1;let r=this.follow?"stat":"lstat";kB[r](e.absolute,(i,n)=>{e.pending=!1,this[na]-=1,i?this.emit("error",i):this[wB](e,n)})}[wB](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Zc]()}[jD](e){e.pending=!0,this[na]+=1,kB.readdir(e.absolute,(r,i)=>{if(e.pending=!1,this[na]-=1,r)return this.emit("error",r);this[vB](e,i)})}[vB](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Zc]()}[Zc](){if(!this[bB]){this[bB]=!0;for(let e=this[ia].head;e!==null&&this[na]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[lV](e){this[na]+=1;try{return new this[YD](e.path,this[GD](e)).on("end",()=>this[KD](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[qD](){this[uf]&&this[uf].entry&&this[uf].entry.resume()}[SB](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[QB](o+n)});let r=e.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),gV=class extends JD{constructor(e){super(e);this[YD]=NFe}pause(){}resume(){}[HD](e){let r=this.follow?"statSync":"lstatSync";this[wB](e,kB[r](e.absolute))}[jD](e,r){this[vB](e,kB.readdirSync(e.absolute))}[SB](e){let r=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[QB](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[cV](n)})}};JD.Sync=gV;sV.exports=JD});var Cf=w(eC=>{"use strict";var MFe=of(),UFe=require("events").EventEmitter,Ms=require("fs"),PB=process.binding("fs"),GAt=PB.writeBuffers,KFe=PB.FSReqWrap||PB.FSReqCallback,gf=Symbol("_autoClose"),sa=Symbol("_close"),tC=Symbol("_ended"),or=Symbol("_fd"),fV=Symbol("_finished"),$c=Symbol("_flags"),WD=Symbol("_flush"),zD=Symbol("_handleChunk"),_D=Symbol("_makeBuf"),VD=Symbol("_mode"),DB=Symbol("_needDrain"),ff=Symbol("_onerror"),hf=Symbol("_onopen"),XD=Symbol("_onread"),eu=Symbol("_onwrite"),El=Symbol("_open"),Il=Symbol("_path"),tu=Symbol("_pos"),oa=Symbol("_queue"),pf=Symbol("_read"),hV=Symbol("_readSize"),yl=Symbol("_reading"),RB=Symbol("_remain"),pV=Symbol("_size"),FB=Symbol("_write"),df=Symbol("_writing"),NB=Symbol("_defaultFlag"),ZD=class extends MFe{constructor(e,r){if(r=r||{},super(r),this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[or]=typeof r.fd=="number"?r.fd:null,this[Il]=e,this[hV]=r.readSize||16*1024*1024,this[yl]=!1,this[pV]=typeof r.size=="number"?r.size:Infinity,this[RB]=this[pV],this[gf]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[or]=="number"?this[pf]():this[El]()}get fd(){return this[or]}get path(){return this[Il]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[El](){Ms.open(this[Il],"r",(e,r)=>this[hf](e,r))}[hf](e,r){e?this[ff](e):(this[or]=r,this.emit("open",r),this[pf]())}[_D](){return Buffer.allocUnsafe(Math.min(this[hV],this[RB]))}[pf](){if(!this[yl]){this[yl]=!0;let e=this[_D]();if(e.length===0)return process.nextTick(()=>this[XD](null,0,e));Ms.read(this[or],e,0,e.length,null,(r,i,n)=>this[XD](r,i,n))}}[XD](e,r,i){this[yl]=!1,e?this[ff](e):this[zD](r,i)&&this[pf]()}[sa](){this[gf]&&typeof this[or]=="number"&&(Ms.close(this[or],e=>this.emit("close")),this[or]=null)}[ff](e){this[yl]=!0,this[sa](),this.emit("error",e)}[zD](e,r){let i=!1;return this[RB]-=e,e>0&&(i=super.write(ethis[hf](e,r))}[hf](e,r){this[NB]&&this[$c]==="r+"&&e&&e.code==="ENOENT"?(this[$c]="w",this[El]()):e?this[ff](e):(this[or]=r,this.emit("open",r),this[WD]())}end(e,r){e&&this.write(e,r),this[tC]=!0,!this[df]&&!this[oa].length&&typeof this[or]=="number"&&this[eu](null,0)}write(e,r){return typeof e=="string"&&(e=new Buffer(e,r)),this[tC]?(this.emit("error",new Error("write() after end()")),!1):this[or]===null||this[df]||this[oa].length?(this[oa].push(e),this[DB]=!0,!1):(this[df]=!0,this[FB](e),!0)}[FB](e){Ms.write(this[or],e,0,e.length,this[tu],(r,i)=>this[eu](r,i))}[eu](e,r){e?this[ff](e):(this[tu]!==null&&(this[tu]+=r),this[oa].length?this[WD]():(this[df]=!1,this[tC]&&!this[fV]?(this[fV]=!0,this[sa](),this.emit("finish")):this[DB]&&(this[DB]=!1,this.emit("drain"))))}[WD](){if(this[oa].length===0)this[tC]&&this[eu](null,0);else if(this[oa].length===1)this[FB](this[oa].pop());else{let e=this[oa];this[oa]=[],HFe(this[or],e,this[tu],(r,i)=>this[eu](r,i))}}[sa](){this[gf]&&typeof this[or]=="number"&&(Ms.close(this[or],e=>this.emit("close")),this[or]=null)}},CV=class extends $D{[El](){let e;try{e=Ms.openSync(this[Il],this[$c],this[VD])}catch(r){if(this[NB]&&this[$c]==="r+"&&r&&r.code==="ENOENT")return this[$c]="w",this[El]();throw r}this[hf](null,e)}[sa](){if(this[gf]&&typeof this[or]=="number"){try{Ms.closeSync(this[or])}catch(e){}this[or]=null,this.emit("close")}}[FB](e){try{this[eu](null,Ms.writeSync(this[or],e,0,e.length,this[tu]))}catch(r){this[eu](r,0)}}},HFe=(t,e,r,i)=>{let n=(o,a)=>i(o,a,e),s=new KFe;s.oncomplete=n,PB.writeBuffers(t,e,r,s)};eC.ReadStream=ZD;eC.ReadStreamSync=dV;eC.WriteStream=$D;eC.WriteStreamSync=CV});var nC=w((WAt,mV)=>{"use strict";var jFe=dB(),qAt=require("path"),GFe=lf(),YFe=require("events"),qFe=Bp(),JFe=1024*1024,WFe=Zd(),EV=pB(),zFe=wD(),eR=Buffer.from([31,139]),Us=Symbol("state"),ru=Symbol("writeEntry"),aA=Symbol("readEntry"),tR=Symbol("nextEntry"),IV=Symbol("processEntry"),Ks=Symbol("extendedHeader"),rC=Symbol("globalExtendedHeader"),wl=Symbol("meta"),yV=Symbol("emitMeta"),yr=Symbol("buffer"),AA=Symbol("queue"),iu=Symbol("ended"),wV=Symbol("emittedEnd"),nu=Symbol("emit"),Ln=Symbol("unzip"),LB=Symbol("consumeChunk"),TB=Symbol("consumeChunkSub"),rR=Symbol("consumeBody"),BV=Symbol("consumeMeta"),bV=Symbol("consumeHeader"),OB=Symbol("consuming"),iR=Symbol("bufferConcat"),nR=Symbol("maybeEnd"),iC=Symbol("writing"),Bl=Symbol("aborted"),MB=Symbol("onDone"),su=Symbol("sawValidEntry"),UB=Symbol("sawNullBlock"),KB=Symbol("sawEOF"),_Fe=t=>!0;mV.exports=jFe(class extends YFe{constructor(e){e=e||{},super(e),this.file=e.file||"",this[su]=null,this.on(MB,r=>{(this[Us]==="begin"||this[su]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(MB,e.ondone):this.on(MB,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||JFe,this.filter=typeof e.filter=="function"?e.filter:_Fe,this.writable=!0,this.readable=!1,this[AA]=new qFe,this[yr]=null,this[aA]=null,this[ru]=null,this[Us]="begin",this[wl]="",this[Ks]=null,this[rC]=null,this[iu]=!1,this[Ln]=null,this[Bl]=!1,this[UB]=!1,this[KB]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[bV](e,r){this[su]===null&&(this[su]=!1);let i;try{i=new GFe(e,r,this[Ks],this[rC])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[UB]?(this[KB]=!0,this[Us]==="begin"&&(this[Us]="header"),this[nu]("eof")):(this[UB]=!0,this[nu]("nullBlock"));else if(this[UB]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[ru]=new WFe(i,this[Ks],this[rC]);if(!this[su])if(s.remain){let o=()=>{s.invalid||(this[su]=!0)};s.on("end",o)}else this[su]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[nu]("ignoredEntry",s),this[Us]="ignore",s.resume()):s.size>0&&(this[wl]="",s.on("data",o=>this[wl]+=o),this[Us]="meta"):(this[Ks]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[nu]("ignoredEntry",s),this[Us]=s.remain?"ignore":"header",s.resume()):(s.remain?this[Us]="body":(this[Us]="header",s.end()),this[aA]?this[AA].push(s):(this[AA].push(s),this[tR]())))}}}[IV](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[aA]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[tR]()),r=!1)):(this[aA]=null,r=!1),r}[tR](){do;while(this[IV](this[AA].shift()));if(!this[AA].length){let e=this[aA];!e||e.flowing||e.size===e.remain?this[iC]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[rR](e,r){let i=this[ru],n=i.blockRemain,s=n>=e.length&&r===0?e:e.slice(r,r+n);return i.write(s),i.blockRemain||(this[Us]="header",this[ru]=null,i.end()),s.length}[BV](e,r){let i=this[ru],n=this[rR](e,r);return this[ru]||this[yV](i),n}[nu](e,r,i){!this[AA].length&&!this[aA]?this.emit(e,r,i):this[AA].push([e,r,i])}[yV](e){switch(this[nu]("meta",this[wl]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[Ks]=EV.parse(this[wl],this[Ks],!1);break;case"GlobalExtendedHeader":this[rC]=EV.parse(this[wl],this[rC],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[Ks]=this[Ks]||Object.create(null),this[Ks].path=this[wl].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[Ks]=this[Ks]||Object.create(null),this[Ks].linkpath=this[wl].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[Bl]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[Bl])return;if(this[Ln]===null&&e){if(this[yr]&&(e=Buffer.concat([this[yr],e]),this[yr]=null),e.lengththis[LB](s)),this[Ln].on("error",s=>this.abort(s)),this[Ln].on("end",s=>{this[iu]=!0,this[LB]()}),this[iC]=!0;let n=this[Ln][i?"end":"write"](e);return this[iC]=!1,n}}this[iC]=!0,this[Ln]?this[Ln].write(e):this[LB](e),this[iC]=!1;let r=this[AA].length?!1:this[aA]?this[aA].flowing:!0;return!r&&!this[AA].length&&this[aA].once("drain",i=>this.emit("drain")),r}[iR](e){e&&!this[Bl]&&(this[yr]=this[yr]?Buffer.concat([this[yr],e]):e)}[nR](){if(this[iu]&&!this[wV]&&!this[Bl]&&!this[OB]){this[wV]=!0;let e=this[ru];if(e&&e.blockRemain){let r=this[yr]?this[yr].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[yr]&&e.write(this[yr]),e.end()}this[nu](MB)}}[LB](e){if(this[OB])this[iR](e);else if(!e&&!this[yr])this[nR]();else{if(this[OB]=!0,this[yr]){this[iR](e);let r=this[yr];this[yr]=null,this[TB](r)}else this[TB](e);for(;this[yr]&&this[yr].length>=512&&!this[Bl]&&!this[KB];){let r=this[yr];this[yr]=null,this[TB](r)}this[OB]=!1}(!this[yr]||this[iu])&&this[nR]()}[TB](e){let r=0,i=e.length;for(;r+512<=i&&!this[Bl]&&!this[KB];)switch(this[Us]){case"begin":case"header":this[bV](e,r),r+=512;break;case"ignore":case"body":r+=this[rR](e,r);break;case"meta":r+=this[BV](e,r);break;default:throw new Error("invalid state: "+this[Us])}r{"use strict";var VFe=sf(),vV=nC(),mf=require("fs"),XFe=Cf(),SV=require("path"),zAt=QV.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=VFe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&$Fe(i,e),i.noResume||ZFe(i),i.file&&i.sync?eNe(i):i.file?tNe(i,r):kV(i)},ZFe=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},$Fe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||SV.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(SV.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},eNe=t=>{let e=kV(t),r=t.file,i=!0,n;try{let s=mf.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new vV(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),mf.stat(n,(l,c)=>{if(l)a(l);else{let u=new XFe.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},kV=t=>new vV(t)});var NV=w((ZAt,xV)=>{"use strict";var rNe=sf(),jB=xB(),VAt=require("fs"),PV=Cf(),DV=HB(),RV=require("path"),XAt=xV.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=rNe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?iNe(i,e):i.file?nNe(i,e,r):i.sync?sNe(i,e):oNe(i,e)},iNe=(t,e)=>{let r=new jB.Sync(t),i=new PV.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(i),FV(r,e)},nNe=(t,e,r)=>{let i=new jB(t),n=new PV.WriteStream(t.file,{mode:t.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return sR(i,e),r?s.then(r,r):s},FV=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?DV({file:RV.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},sR=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return DV({file:RV.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>sR(t,e));t.add(r)}t.end()},sNe=(t,e)=>{let r=new jB.Sync(t);return FV(r,e),r},oNe=(t,e)=>{let r=new jB(t);return sR(r,e),r}});var oR=w((tlt,LV)=>{"use strict";var aNe=sf(),TV=xB(),$At=nC(),Hs=require("fs"),OV=Cf(),MV=HB(),UV=require("path"),KV=lf(),elt=LV.exports=(t,e,r)=>{let i=aNe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?ANe(i,e):lNe(i,e,r)},ANe=(t,e)=>{let r=new TV.Sync(t),i=!0,n,s;try{try{n=Hs.openSync(t.file,"r+")}catch(l){if(l.code==="ENOENT")n=Hs.openSync(t.file,"w+");else throw l}let o=Hs.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(l.path,l.mtime)}i=!1,cNe(t,r,s,n,e)}finally{if(i)try{Hs.closeSync(n)}catch(o){}}},cNe=(t,e,r,i,n)=>{let s=new OV.WriteStreamSync(t.file,{fd:i,start:r});e.pipe(s),uNe(e,n)},lNe=(t,e,r)=>{e=Array.from(e);let i=new TV(t),n=(o,a,l)=>{let c=(p,m)=>{p?Hs.close(o,y=>l(p)):l(null,m)},u=0;if(a===0)return c(null,0);let g=0,f=Buffer.alloc(512),h=(p,m)=>{if(p)return c(p);if(g+=m,g<512&&m)return Hs.read(o,f,g,f.length-g,u+g,h);if(u===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(g<512)return c(null,u);let y=new KV(f);if(!y.cksumValid)return c(null,u);let Q=512*Math.ceil(y.size/512);if(u+Q+512>a||(u+=Q+512,u>=a))return c(null,u);t.mtimeCache&&t.mtimeCache.set(y.path,y.mtime),g=0,Hs.read(o,f,0,512,u,h)};Hs.read(o,f,0,512,u,h)},s=new Promise((o,a)=>{i.on("error",a);let l="r+",c=(u,g)=>{if(u&&u.code==="ENOENT"&&l==="r+")return l="w+",Hs.open(t.file,l,c);if(u)return a(u);Hs.fstat(g,(f,h)=>{if(f)return a(f);n(g,h.size,(p,m)=>{if(p)return a(p);let y=new OV.WriteStream(t.file,{fd:g,start:m});i.pipe(y),y.on("error",a),y.on("close",o),HV(i,e)})})};Hs.open(t.file,l,c)});return r?s.then(r,r):s},uNe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?MV({file:UV.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},HV=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return MV({file:UV.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>HV(t,e));t.add(r)}t.end()}});var GV=w((ilt,jV)=>{"use strict";var gNe=sf(),fNe=oR(),rlt=jV.exports=(t,e,r)=>{let i=gNe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),hNe(i),fNe(i,e,r)},hNe=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,i)=>e(r,i)&&!(t.mtimeCache.get(r)>i.mtime):(r,i)=>!(t.mtimeCache.get(r)>i.mtime)}});var JV=w((nlt,YV)=>{var{promisify:qV}=require("util"),bl=require("fs"),pNe=t=>{if(!t)t={mode:511,fs:bl};else if(typeof t=="object")t=N({mode:511,fs:bl},t);else if(typeof t=="number")t={mode:t,fs:bl};else if(typeof t=="string")t={mode:parseInt(t,8),fs:bl};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||bl.mkdir,t.mkdirAsync=qV(t.mkdir),t.stat=t.stat||t.fs.stat||bl.stat,t.statAsync=qV(t.stat),t.statSync=t.statSync||t.fs.statSync||bl.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||bl.mkdirSync,t};YV.exports=pNe});var zV=w((slt,WV)=>{var dNe=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:CNe,parse:mNe}=require("path"),ENe=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=CNe(t),dNe==="win32"){let e=/[*|"<>?:]/,{root:r}=mNe(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};WV.exports=ENe});var $V=w((olt,_V)=>{var{dirname:VV}=require("path"),XV=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?XV(t,VV(e),e):void 0),ZV=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?ZV(t,VV(e),e):void 0}};_V.exports={findMade:XV,findMadeSync:ZV}});var lR=w((alt,e9)=>{var{dirname:t9}=require("path"),aR=(t,e,r)=>{e.recursive=!1;let i=t9(t);return i===t?e.mkdirAsync(t,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(t,e).then(()=>r||t,n=>{if(n.code==="ENOENT")return aR(i,e).then(s=>aR(t,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},AR=(t,e,r)=>{let i=t9(t);if(e.recursive=!1,i===t)try{return e.mkdirSync(t,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(t,e),r||t}catch(n){if(n.code==="ENOENT")return AR(t,e,AR(i,e,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(t).isDirectory())throw n}catch(s){throw n}}};e9.exports={mkdirpManual:aR,mkdirpManualSync:AR}});var n9=w((Alt,r9)=>{var{dirname:i9}=require("path"),{findMade:INe,findMadeSync:yNe}=$V(),{mkdirpManual:wNe,mkdirpManualSync:BNe}=lR(),bNe=(t,e)=>(e.recursive=!0,i9(t)===t?e.mkdirAsync(t,e):INe(e,t).then(i=>e.mkdirAsync(t,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return wNe(t,e);throw n}))),QNe=(t,e)=>{if(e.recursive=!0,i9(t)===t)return e.mkdirSync(t,e);let i=yNe(e,t);try{return e.mkdirSync(t,e),i}catch(n){if(n.code==="ENOENT")return BNe(t,e);throw n}};r9.exports={mkdirpNative:bNe,mkdirpNativeSync:QNe}});var A9=w((llt,s9)=>{var o9=require("fs"),vNe=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,cR=vNe.replace(/^v/,"").split("."),a9=+cR[0]>10||+cR[0]==10&&+cR[1]>=12,SNe=a9?t=>t.mkdir===o9.mkdir:()=>!1,kNe=a9?t=>t.mkdirSync===o9.mkdirSync:()=>!1;s9.exports={useNative:SNe,useNativeSync:kNe}});var h9=w((clt,l9)=>{var Ef=JV(),If=zV(),{mkdirpNative:c9,mkdirpNativeSync:u9}=n9(),{mkdirpManual:g9,mkdirpManualSync:f9}=lR(),{useNative:xNe,useNativeSync:PNe}=A9(),yf=(t,e)=>(t=If(t),e=Ef(e),xNe(e)?c9(t,e):g9(t,e)),DNe=(t,e)=>(t=If(t),e=Ef(e),PNe(e)?u9(t,e):f9(t,e));yf.sync=DNe;yf.native=(t,e)=>c9(If(t),Ef(e));yf.manual=(t,e)=>g9(If(t),Ef(e));yf.nativeSync=(t,e)=>u9(If(t),Ef(e));yf.manualSync=(t,e)=>f9(If(t),Ef(e));l9.exports=yf});var y9=w((ult,p9)=>{"use strict";var js=require("fs"),ou=require("path"),RNe=js.lchown?"lchown":"chown",FNe=js.lchownSync?"lchownSync":"chownSync",d9=js.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),C9=(t,e,r)=>{try{return js[FNe](t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},NNe=(t,e,r)=>{try{return js.chownSync(t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},LNe=d9?(t,e,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):js.chown(t,e,r,i)}:(t,e,r,i)=>i,uR=d9?(t,e,r)=>{try{return C9(t,e,r)}catch(i){if(i.code!=="EISDIR")throw i;NNe(t,e,r)}}:(t,e,r)=>C9(t,e,r),TNe=process.version,m9=(t,e,r)=>js.readdir(t,e,r),ONe=(t,e)=>js.readdirSync(t,e);/^v4\./.test(TNe)&&(m9=(t,e,r)=>js.readdir(t,r));var GB=(t,e,r,i)=>{js[RNe](t,e,r,LNe(t,e,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},E9=(t,e,r,i,n)=>{if(typeof e=="string")return js.lstat(ou.resolve(t,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,E9(t,o,r,i,n)});if(e.isDirectory())gR(ou.resolve(t,e.name),r,i,s=>{if(s)return n(s);let o=ou.resolve(t,e.name);GB(o,r,i,n)});else{let s=ou.resolve(t,e.name);GB(s,r,i,n)}},gR=(t,e,r,i)=>{m9(t,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return GB(t,e,r,i);let o=s.length,a=null,l=c=>{if(!a){if(c)return i(a=c);if(--o==0)return GB(t,e,r,i)}};s.forEach(c=>E9(t,c,e,r,l))})},MNe=(t,e,r,i)=>{if(typeof e=="string")try{let n=js.lstatSync(ou.resolve(t,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&I9(ou.resolve(t,e.name),r,i),uR(ou.resolve(t,e.name),r,i)},I9=(t,e,r)=>{let i;try{i=ONe(t,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return uR(t,e,r);throw n}return i&&i.length&&i.forEach(n=>MNe(t,n,e,r)),uR(t,e,r)};p9.exports=gR;gR.sync=I9});var Q9=w((hlt,fR)=>{"use strict";var w9=h9(),Gs=require("fs"),YB=require("path"),B9=y9(),hR=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},sC=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}},glt=fR.exports=(t,e,r)=>{let i=e.umask,n=e.mode|448,s=(n&i)!=0,o=e.uid,a=e.gid,l=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,u=e.unlink,g=e.cache,f=e.cwd,h=(y,Q)=>{y?r(y):(g.set(t,!0),Q&&l?B9(Q,o,a,S=>h(S)):s?Gs.chmod(t,n,r):r())};if(g&&g.get(t)===!0)return h();if(t===f)return Gs.stat(t,(y,Q)=>{(y||!Q.isDirectory())&&(y=new sC(t,y&&y.code||"ENOTDIR")),h(y)});if(c)return w9(t,{mode:n}).then(y=>h(null,y),h);let m=YB.relative(f,t).split(/\/|\\/);qB(f,m,n,g,u,f,null,h)},qB=(t,e,r,i,n,s,o,a)=>{if(!e.length)return a(null,o);let l=e.shift(),c=t+"/"+l;if(i.get(c))return qB(c,e,r,i,n,s,o,a);Gs.mkdir(c,r,b9(c,e,r,i,n,s,o,a))},b9=(t,e,r,i,n,s,o,a)=>l=>{if(l){if(l.path&&YB.dirname(l.path)===s&&(l.code==="ENOTDIR"||l.code==="ENOENT"))return a(new sC(s,l.code));Gs.lstat(t,(c,u)=>{if(c)a(c);else if(u.isDirectory())qB(t,e,r,i,n,s,o,a);else if(n)Gs.unlink(t,g=>{if(g)return a(g);Gs.mkdir(t,r,b9(t,e,r,i,n,s,o,a))});else{if(u.isSymbolicLink())return a(new hR(t,t+"/"+e.join("/")));a(l)}})}else o=o||t,qB(t,e,r,i,n,s,o,a)},flt=fR.exports.sync=(t,e)=>{let r=e.umask,i=e.mode|448,n=(i&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),l=e.preserve,c=e.unlink,u=e.cache,g=e.cwd,f=y=>{u.set(t,!0),y&&a&&B9.sync(y,s,o),n&&Gs.chmodSync(t,i)};if(u&&u.get(t)===!0)return f();if(t===g){let y=!1,Q="ENOTDIR";try{y=Gs.statSync(t).isDirectory()}catch(S){Q=S.code}finally{if(!y)throw new sC(t,Q)}f();return}if(l)return f(w9.sync(t,i));let p=YB.relative(g,t).split(/\/|\\/),m=null;for(let y=p.shift(),Q=g;y&&(Q+="/"+y);y=p.shift())if(!u.get(Q))try{Gs.mkdirSync(Q,i),m=m||Q,u.set(Q,!0)}catch(S){if(S.path&&YB.dirname(S.path)===g&&(S.code==="ENOTDIR"||S.code==="ENOENT"))return new sC(g,S.code);let x=Gs.lstatSync(Q);if(x.isDirectory()){u.set(Q,!0);continue}else if(c){Gs.unlinkSync(Q),Gs.mkdirSync(Q,i),m=m||Q,u.set(Q,!0);continue}else if(x.isSymbolicLink())return new hR(Q,Q+"/"+p.join("/"))}return f(m)}});var k9=w((plt,v9)=>{var S9=require("assert");v9.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\\/]/).slice(0,-1).reduce((g,f)=>g.length?g.concat(r(g[g.length-1],f)):[f],[]),n=new Set,s=u=>{let g=e.get(u);if(!g)throw new Error("function does not have any path reservations");return{paths:g.paths.map(f=>t.get(f)),dirs:[...g.dirs].map(f=>t.get(f))}},o=u=>{let{paths:g,dirs:f}=s(u);return g.every(h=>h[0]===u)&&f.every(h=>h[0]instanceof Set&&h[0].has(u))},a=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>l(u)),!0),l=u=>{if(!n.has(u))return!1;let{paths:g,dirs:f}=e.get(u),h=new Set;return g.forEach(p=>{let m=t.get(p);S9.equal(m[0],u),m.length===1?t.delete(p):(m.shift(),typeof m[0]=="function"?h.add(m[0]):m[0].forEach(y=>h.add(y)))}),f.forEach(p=>{let m=t.get(p);S9(m[0]instanceof Set),m[0].size===1&&m.length===1?t.delete(p):m[0].size===1?(m.shift(),h.add(m[0])):m[0].delete(u)}),n.delete(u),h.forEach(p=>a(p)),!0};return{check:o,reserve:(u,g)=>{let f=new Set(u.map(h=>i(h)).reduce((h,p)=>h.concat(p)));return e.set(g,{dirs:f,paths:u}),u.forEach(h=>{let p=t.get(h);p?p.push(g):t.set(h,[g])}),f.forEach(h=>{let p=t.get(h);p?p[p.length-1]instanceof Set?p[p.length-1].add(g):p.push(new Set([g])):t.set(h,[new Set([g])])}),a(g)}}}});var D9=w((dlt,x9)=>{var UNe=process.env.__FAKE_PLATFORM__||process.platform,KNe=UNe==="win32",HNe=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:jNe,O_TRUNC:GNe,O_WRONLY:YNe,UV_FS_O_FILEMAP:P9=0}=HNe.constants,qNe=KNe&&!!P9,JNe=512*1024,WNe=P9|GNe|jNe|YNe;x9.exports=qNe?t=>t"w"});var BR=w((Ilt,R9)=>{"use strict";var zNe=require("assert"),Clt=require("events").EventEmitter,_Ne=nC(),$t=require("fs"),VNe=Cf(),lA=require("path"),pR=Q9(),mlt=pR.sync,F9=PD(),XNe=k9(),N9=Symbol("onEntry"),dR=Symbol("checkFs"),L9=Symbol("checkFs2"),CR=Symbol("isReusable"),cA=Symbol("makeFs"),mR=Symbol("file"),ER=Symbol("directory"),JB=Symbol("link"),T9=Symbol("symlink"),O9=Symbol("hardlink"),M9=Symbol("unsupported"),Elt=Symbol("unknown"),U9=Symbol("checkPath"),wf=Symbol("mkdir"),dn=Symbol("onError"),WB=Symbol("pending"),K9=Symbol("pend"),Bf=Symbol("unpend"),IR=Symbol("ended"),yR=Symbol("maybeClose"),wR=Symbol("skip"),oC=Symbol("doChown"),aC=Symbol("uid"),AC=Symbol("gid"),H9=require("crypto"),j9=D9(),zB=()=>{throw new Error("sync function called cb somehow?!?")},ZNe=(t,e)=>{if(process.platform!=="win32")return $t.unlink(t,e);let r=t+".DELETE."+H9.randomBytes(16).toString("hex");$t.rename(t,r,i=>{if(i)return e(i);$t.unlink(r,e)})},$Ne=t=>{if(process.platform!=="win32")return $t.unlinkSync(t);let e=t+".DELETE."+H9.randomBytes(16).toString("hex");$t.renameSync(t,e),$t.unlinkSync(e)},G9=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,_B=class extends _Ne{constructor(e){if(e||(e={}),e.ondone=r=>{this[IR]=!0,this[yR]()},super(e),this.reservations=XNe(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[WB]=0,this[IR]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=lA.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[N9](r))}warn(e,r,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,r,i)}[yR](){this[IR]&&this[WB]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[U9](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(lA.win32.isAbsolute(r)){let i=lA.win32.parse(r);e.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=lA.win32.parse(e.path);e.path=r.root===""?F9.encode(e.path):r.root+F9.encode(e.path.substr(r.root.length))}return lA.isAbsolute(e.path)?e.absolute=e.path:e.absolute=lA.resolve(this.cwd,e.path),!0}[N9](e){if(!this[U9](e))return e.resume();switch(zNe.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[dR](e);case"CharacterDevice":case"BlockDevice":case"FIFO":return this[M9](e)}}[dn](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[Bf](),r.resume())}[wf](e,r,i){pR(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r},i)}[oC](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[aC](e){return G9(this.uid,e.uid,this.processUid)}[AC](e){return G9(this.gid,e.gid,this.processGid)}[mR](e,r){let i=e.mode&4095||this.fmode,n=new VNe.WriteStream(e.absolute,{flags:j9(e.size),mode:i,autoClose:!1});n.on("error",l=>this[dn](l,e));let s=1,o=l=>{if(l)return this[dn](l,e);--s==0&&$t.close(n.fd,c=>{r(),c?this[dn](c,e):this[Bf]()})};n.on("finish",l=>{let c=e.absolute,u=n.fd;if(e.mtime&&!this.noMtime){s++;let g=e.atime||new Date,f=e.mtime;$t.futimes(u,g,f,h=>h?$t.utimes(c,g,f,p=>o(p&&h)):o())}if(this[oC](e)){s++;let g=this[aC](e),f=this[AC](e);$t.fchown(u,g,f,h=>h?$t.chown(c,g,f,p=>o(p&&h)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[dn](l,e)),e.pipe(a)),a.pipe(n)}[ER](e,r){let i=e.mode&4095||this.dmode;this[wf](e.absolute,i,n=>{if(n)return r(),this[dn](n,e);let s=1,o=a=>{--s==0&&(r(),this[Bf](),e.resume())};e.mtime&&!this.noMtime&&(s++,$t.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[oC](e)&&(s++,$t.chown(e.absolute,this[aC](e),this[AC](e),o)),o()})}[M9](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[T9](e,r){this[JB](e,e.linkpath,"symlink",r)}[O9](e,r){this[JB](e,lA.resolve(this.cwd,e.linkpath),"link",r)}[K9](){this[WB]++}[Bf](){this[WB]--,this[yR]()}[wR](e){this[Bf](),e.resume()}[CR](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[dR](e){this[K9]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,i=>this[L9](e,i))}[L9](e,r){this[wf](lA.dirname(e.absolute),this.dmode,i=>{if(i)return r(),this[dn](i,e);$t.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[wR](e),r()):n||this[CR](e,s)?this[cA](null,e,r):s.isDirectory()?e.type==="Directory"?!e.mode||(s.mode&4095)===e.mode?this[cA](null,e,r):$t.chmod(e.absolute,e.mode,o=>this[cA](o,e,r)):$t.rmdir(e.absolute,o=>this[cA](o,e,r)):ZNe(e.absolute,o=>this[cA](o,e,r))})})}[cA](e,r,i){if(e)return this[dn](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[mR](r,i);case"Link":return this[O9](r,i);case"SymbolicLink":return this[T9](r,i);case"Directory":case"GNUDumpDir":return this[ER](r,i)}}[JB](e,r,i,n){$t[i](r,e.absolute,s=>{if(s)return this[dn](s,e);n(),this[Bf](),e.resume()})}},Y9=class extends _B{constructor(e){super(e)}[dR](e){let r=this[wf](lA.dirname(e.absolute),this.dmode,zB);if(r)return this[dn](r,e);try{let i=$t.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[wR](e);if(this[CR](e,i))return this[cA](null,e,zB);try{return i.isDirectory()?e.type==="Directory"?e.mode&&(i.mode&4095)!==e.mode&&$t.chmodSync(e.absolute,e.mode):$t.rmdirSync(e.absolute):$Ne(e.absolute),this[cA](null,e,zB)}catch(n){return this[dn](n,e)}}catch(i){return this[cA](null,e,zB)}}[mR](e,r){let i=e.mode&4095||this.fmode,n=l=>{let c;try{$t.closeSync(o)}catch(u){c=u}(l||c)&&this[dn](l||c,e)},s,o;try{o=$t.openSync(e.absolute,j9(e.size),i)}catch(l){return n(l)}let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[dn](l,e)),e.pipe(a)),a.on("data",l=>{try{$t.writeSync(o,l,0,l.length)}catch(c){n(c)}}),a.on("end",l=>{let c=null;if(e.mtime&&!this.noMtime){let u=e.atime||new Date,g=e.mtime;try{$t.futimesSync(o,u,g)}catch(f){try{$t.utimesSync(e.absolute,u,g)}catch(h){c=f}}}if(this[oC](e)){let u=this[aC](e),g=this[AC](e);try{$t.fchownSync(o,u,g)}catch(f){try{$t.chownSync(e.absolute,u,g)}catch(h){c=c||f}}}n(c)})}[ER](e,r){let i=e.mode&4095||this.dmode,n=this[wf](e.absolute,i);if(n)return this[dn](n,e);if(e.mtime&&!this.noMtime)try{$t.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[oC](e))try{$t.chownSync(e.absolute,this[aC](e),this[AC](e))}catch(s){}e.resume()}[wf](e,r){try{return pR.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[JB](e,r,i,n){try{$t[i+"Sync"](r,e.absolute),e.resume()}catch(s){return this[dn](s,e)}}};_B.Sync=Y9;R9.exports=_B});var _9=w((wlt,q9)=>{"use strict";var eLe=sf(),VB=BR(),J9=require("fs"),W9=Cf(),z9=require("path"),ylt=q9.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=eLe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&tLe(i,e),i.file&&i.sync?rLe(i):i.file?iLe(i,r):i.sync?nLe(i):sLe(i)},tLe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||z9.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(z9.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},rLe=t=>{let e=new VB.Sync(t),r=t.file,i=!0,n,s=J9.statSync(r),o=t.maxReadSize||16*1024*1024;new W9.ReadStreamSync(r,{readSize:o,size:s.size}).pipe(e)},iLe=(t,e)=>{let r=new VB(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),J9.stat(n,(l,c)=>{if(l)a(l);else{let u=new W9.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},nLe=t=>new VB.Sync(t),sLe=t=>new VB(t)});var V9=w(hi=>{"use strict";hi.c=hi.create=NV();hi.r=hi.replace=oR();hi.t=hi.list=HB();hi.u=hi.update=GV();hi.x=hi.extract=_9();hi.Pack=xB();hi.Unpack=BR();hi.Parse=nC();hi.ReadEntry=Zd();hi.WriteEntry=OD();hi.Header=lf();hi.Pax=pB();hi.types=Xd()});var t7=w((Qlt,e7)=>{var QR;e7.exports.getContent=()=>(typeof QR=="undefined"&&(QR=require("zlib").brotliDecompressSync(Buffer.from("W0ISdwE9bQeS320DgM/v/rJIqkB1S3dRtyGA2Swsv6u5umDk4fUhsbltwAy5392lO0dVVZOSExkKxhOa2Kpu//awROkts0ahMEgkCX3MNVCVyD2Wz2U6h7xxFSeLsympT4zG7GnbkEiKnqciN4R102Eu1gNxBrRYkZvmtVC5EmYX6aHkvGlYMFS46pVIPBL6yIiRc1KVyRgb05w8mrL04sZsZPYcKZJiL1x6x3rr10foz/h8qcaG5+lwr9z7UOLQP2oYhjAVrn7vrTTKQiPRRVb4W9p7bNQHy/wVOjPqH/kWwMmtujuIMcEUZklvJjkhNzxah8/7vVp+/e45zX1bVfLk1nPylcobAWI5wwyhuGxWtbKqDZRXiOPc82pDLBiLmtFZH0RpHuwR7NIFV12V8earfX79njg7CBS6AKTksgn3DcyTZ5jufen27qsy4ivWja2rQg7+P81+RTGuSxedEXm3rl4JGPDzWWNVAjZ0JtraFvx/n9rvR9NWFwjt1nKCfE4f3XKZ5DHM/MyP/YyJ6WoHy72/tP6/fgmHx1Q1ZXqZXVDWI1u/3KwnzmyX8fEQIycaY8kPybHdkfxS87VqLRUYrvRC74kzMCdF7fIHudVUIax+jF+qgtj94Xb3FPGH6fSfqISGv8z8Ol56W19VDljCNhWB9AElTnfPyP96S/X/38+X0d6Ax6LVGC6iS4JTB0dt5WqH6X2smBPy8rDt4TSFaVpxUMy9P9Wv33JVnTtxPtnpxk9ReHRvCYIn3R7JRoqFuqwsCUr5UIkDj8pOtzOroJ0jgCf6mPvv8+O9XTFxlft5qrsGehiGVMOo8Q/xpnrCKgkT7UGo1hbrh/zH7oxg/ZClC6If/8P59PmxuytV2xc/z8wdLkMAHZAo/kWswy3VaEkl6cB2czSECfgB9qPG9sdDB6msj8c3ywCDgg1IRTfCHI0KFX8r/b/22i8X74dQ5zyXXFOJtGEqRkB3MXY0CsZTf0E/au88HnqQamrt8c3sLAy/ZCCbBG8R64KoqKjU+mKm9sfD35RlOvnHBxBabCkJzLCpc2s9DQjRS1pnRqb/3lSrjbZ+AxQFUqbINdZXLrPGRrtnbJJY4L33+wv/dwNiG1JoGIpokFoBkFQDgOSOCM11A9IUSM1dgbLkWs3MGZ0xTgTHyIznaA11xrjYRNbm1gXRhBeEF26WXZRekFwSXBp7//veLKteugMRARZLsdhdrfRqdsr2CABMdrUWm334Fe9k/P/dnenuAJgQEWQiIjmMyCSrIpPMEtmsd+973/H9uyPSAUSyEcgkKzPIqqYYkU224AhJjhBitxndYtvLRZCjWCPLZtWL5SxnOf9/lWrf9r2IyMgEQUKkTcnWKVk1DMM6MgFCg1X+wzisi/Huffco472ILyCHMpGZ+EUkgPNFkDwtAMT5Fim/F5kgI5KQnICoqgREVwGU7CLl4VAqVR/ZPVuktLCrqodpXqztqup52Cz/YqmeVfV7nhbL3mx6s+vFbtFWnKYpXSAGV9YSpFKBErAIfbXv4l2Efo7n6WfvbHqu+POuaosC4ahRGRRS57O+sAYUanUIh1s2ITRGGu6n+j7wcUjdVS50GXr6mrGOGZY/wZz1/9gEkx+z+krdFBNjiZFiQxTBggUbYsHSsAIWBEtL9a7P/InX7f97UUGlyNt2ikIPvQcQCPQEemghlFLsZ+7ub4pHZ3YedPP/X1BSClL+6K0LBIQQVlhhzgBKCHMpIMoUJSCyHB1/aQM5f77fFv/H3ZblVhtRgBUYhbqEMQMqYa/3xc+HQbxwjYWooQw+LNyYwWAwxd9p3z/+ndmiyf8QtphiChMMUeFCEENEcECFCCIRQQ9cqHChwvCm2OIU+fz8T9vi/eDSsZgHz6KZIeCnWjTSifdUJ7Zu/T//f2YtYe7nv8WIyQ0C0ZcgEIgKBGLygkAgEBWIir6koqICseU7t+gffHsnZNt+cWIFSREIBII0CAQCQRoEAoEgzQoEYgRixIgRIxZ68eK7PdEPC4XCQiEQCAQCDwKBEsyiTUu4z1sxgHRABaJh/2G3bEl+0Bcmn3ZWhd95FpzddaM8uiaW/P775UPwRWLPl0AwWCrqCDbCT1qg6cp+sUkBDp+FXCK/hYCOax1FpceEDMI8b3HeBRq+nkrYk9B3v0xVBeNmb0aX/gOTMOSATt8tbEjX8ah7Pu5PLlInkUQSESmmst0lxx1IPVRThvB3f/eudkg011Aeg6meqgNHfZx0Rci+mOwTWElLHTLkEnzly+tAPa8AGqSwd73T+GRi0ndwxLMjZiL6LdGArI75wSi09VSyaDFxPylH+KdhSAPVbaQMzQyl/P0BRc+CmusT/QFApUXKIA+vARExxwdl2Rdf3B/eVyfTEKxVRdvVN8fBaRl7UydUkGdwAUmYfSsInXhHxd/cWGxPcnk/dYcY4ZicBKy3d3iKt3khmP0oHL+G2PbzRh3Tt07pXjt+kzyYr6GMr9nnmLyjLNYCw9S/pHscM3LAbtjZsVOxtdPPnL1muyIv2TVvhQi/NbeK31CaAF/Z+biJXfOyze638C1fA+28UpRvkdWzf2WnqjyxtFcnT8fUjUI91f34axGgHGj6fUofZBy766V1XdI9R/zYRmG9g4PLymF9TwIH33obdmB3wLEYEvcDKFJ8JNfRSKjam+2MC9TtzQtCvXlW0Mb+gKJzHkcUmUksOR3ub3X6l7Fsq3Xc77s7/UF/LHd6iS9PHrYFsq1JC+AlYDYE31Q5/e/aGobLXu4Jl9NQkZB8b00YP9bp9A3MiK+Vv5DFAEd6WWbXQKXJbHI40TwwanWFMeUs7kCxC+rPqvtgJGsKhvLMwFgusAW7KbcMl/ZiC3dbuNvi3YZ3Tz9jw1MweHwf0RtMTYqfsaDa6fcP2j1y5ABYfwpzgnqgibGj4KpmjZNZsD5MzSoP04L1UX8glX1oZuUlwpAF7UsGgplF8liBjCNNXIEW1c+CRRWjNWlVBCtuX3ztXHmI3tLLi0BYaXodGUPzDJh3VOYbUSr811yxh2f9oo2XRSKYHwVoWS4qPtYuYd6nRkCdcXwFJtWAN7U2OXmiC/hX/comuEinUUEjybSySG6T8byFtvTxiZtjQicBAUuEYmJlZ4Xmqv5zR+gK1Exui3xSztgiH4gk1EZBv78ZVYjytBRKIFJuDy5cepdcO2gkCa6eqwN1ACSEEtAan8uenDpQSkhYmpx4ME2Oai5HQ4SPIOjQE/+g0j0BHvBBbSwBHuDFZQLpCHuKfAIHhZDIU4wYEKog6CsQfCfSwZeA+zXaKAAeACKnkDjjw1rCBwVGxFPFcSLD0pErGfvmplYSIIKRYw9i4L17jmciqKVYSXUKCWWJYsMlzKp+ShhRO8Ngp9157BeAlYVRImiD3Oe6ihR03hI61SlV54Rdp8LNGJRHzS+/Y/qpEwyZ+3hKBK+hsnYsFv58j6kudzQ/lRVul3uOOap8ObL1eX5vYDfIST91raCUwBFPT613Lxjgq8N7Aol3NTFegT5VlgsF6C8icidvUE4Mff+Aiepeyc97Lp1r/REJ9UFTSJ46WVt6FmQHplZ8/hRGESlb/bLm/c50PwCoHe2W0LJAVezJnCWD2rL/kEKF6Cr2YdXq/qGG0Txe/9NAzLzIgayspUmpqyIoD3IaK5EOH3QgULTdLJ3obj2KOK9fbnGN2OXpdAwn5iQwR6JWbRhRX24zxqij6dsnqFrPhg2XvyJYxzdm+AzgYNWPY4kOQagEGQWJaKDlQa/dqfPpGq8X+pwSla5d+98t4FGDfjr5pez8V+IrTcrwD7dNgZ8cTDAY5HpADrnhuTN8WPfJsPP87J+aZfgXFmsfe8RPc4tSzQ+E81/m+wB/heYcYNQIWHtuu8QRkfIdygrYn8TlnlVpiRmIl0wJ3G6w8gcCfL9RYh+HL8Lxp6u+eunrBvK6B0WAZPOJVe2W0Ytg5Z8SjOk4JBvEhvylrJZYdIPHsHRqK+GuAaJcmUpGlh50pS+M6sviMrdFISQDEZPXa1ElDj5mn6py9iN6DjF3KzncRTT/ETyk5t0ua/wyUZRNpc8G9yNE0751xhbSHJKn+c7d81q5WMQrJT7piRyE6gTTfxHhEbIQVLzQQ8R+w3eKPgfutCr0TV6FhPebIGE1QTwJn1YIltEelxFQ0mj+OKmn9lEzyMbmXiev3WxMTViNUrjh95I84qGiGXMnL78fDb7IugfqYg8HfR8Jt0QKcVSqrFuICtL66Gp5HOAO/EbEezQfuPs7TfEGufXWdpXYIvZvInJKLqNZhoBKKlJDlLDOAaQg8lg5rpZts09dFJ/oP9e6W1L67Kj6GH6mTebW+MtkRDzOQNvb49odEr8vYngDrlNpC2pf/VvUgysFvzTJNO/YA4XX78n/vD+zlyHaCeuxnOp2TRGQM2lzdy/GZpB+n6VRYBX8d5CUTz4Hxa57PW5B48sepeYj+XG83L8P52Q985oTmnnLnbnD89bEgRTxaMykmOfVg1Z5mz7m1NeFAuWJYsqU/ee7sm6AQpkm+m5tSQmgFRj+Ox3LA44sV7pfO4S1ArynaGhLDfICDLpdMEwGydPgG0qUD+bSdlto+52eS92xzVEPP8LwHFVSlVHR25nmSDqjlBhV0kUeFi9u2rc34ROEdzmg0RZaK/1+idlzYYRyLIcmu+qnmfxCQ9TlHVrGVtyF2HGkl5f9tTFh5XRxc+Rl9rtWFRI03iwMvl/XuW2keWh6e2pcZSMKfXz6llflvleKT2z19sU//hAxob5lkk47atU0NvhuRf27w+MIdsEG817ioc3839EU0jIH8XFK7QM0KXIpQqdQUHTNTO0RjR5EyDaZr4cN5w2AO2nkZ+xMzYS7p+RksU9eP4vkQXbcEGH4+EkaptZLJyLp0Kwd13BndUf4GZQfPxf++hZS166TbYPaS/FxkhU+gQTqypZD3mKT7bZQgmcInoLwbY2ok8mOdZTxy7m6paHs1LOqUfjA9cLidjg/KhvjdnUfwWYPhXAZvAdIAR5X9hmllecmLgr9yLN2hMJES2gry0ejcCyWI81WOZVJ8FFXLC/eTIjAAgcHrJBpH8SyxERxZRch9xdpq4KxF0X53jKzEqbICWWeuNnc4VHMRXl/Ziuk1CYezC4qiyzGT93V7/JKv8BrWNFBX1nrn6RTRRLpyUop9kmbAyz1+TltvrsyaoT/QFKfBtcLs3DaPqKw9IH8g67P01Ms42fsnceCIcidHNZBKb8gQ14pz3tKKmfoV0bYH/8Xuitem92ZIaPU4bCSHK6TkCaed9+Cq3rjyQBlNIbXUCKipIoM2SuFq4Jt08edh+DBh3dyQBsk+Kx0yF4AxxYUE5G9VhwoYEKy/Ih6UJJg5nq7gOqdcEjKgrMy7YGoUMHEhL0FXbtOiyAxNHLl20f9XSHERLp/vaVaSPd3fSOLn1bCLRpKx1fr77xVvvNqHeVw/8XBs4FI249eK/gTJhLn0/Urp86OcHhaQr5weO2zZ71OXguvszxVLPqp4MaBGwrqo3bynJpD0j3Adqgu/UV7Ng9DChweZYwESbgT3hdGxZkfrn8yC7nwbXC/tsscNkZ/yontW5yGmDV8Cha/1knfioYuUHtKx9vTFmNZeKK4rIKvgnPT2RDn5zYixAkASp0SYst5pM5nOiy0TR4OcNWEeuFPepiw4pNboa6PYjnC8zJWD8+n09PJd37FeFAG84sGOJACAe7b55BnlLh8BQPhH8HrzJYLJu/kaa8+1jimOogxEqIN8MvY0IdzNu8N2yXwwUPRS2JQITRvg8rQy9PeOEKae8Ewd8lrnEhffBnDxw6qBda//XgGqB5R+HwS+Vynx+CYdvmIpTaWAcjTHmFCddaJiKSmLr4Mr4EBNu9NBKXojBknuDpuOk01PjJbxgVs9GZ87GsWs02hnPRWOS3S9LDTG/F1q9F4ShL8qq4+dv3/dTYN3dq6bfpiCHV1mWts990q7/vQl5jOK17p8pvewtFJ+HwnltbRtM4fBqQP2Q6RURYE4qhKH1IG32GJAYk099nnGuXLRC8Peh7mqYCAxgOT7+8Yz7pL49knzBsJwhE3vMv8/auqf7sElhpb0yqBSznJtycfjn/cpHxndBXpcMeO86ldRa2REt0V/SfcertF24BcYeO/NHTK7m+thj7BGtus+W7kE6pJ0JmRUgCcclZQO/xXp9pHSClxl4TBhnXkhxt1cIzvDNWLDJecB9DZVw28CEwFYTtYJHQKiwGpgXxpoEovTTkRuCMeX8Dt2lijNnFf5SxaRNsm1W5pvPdurxumVgIGSWsfRK1qyGqUPEG7RL22NH6lRVRSBdpgpSeqFU2YB0Umsbyl+mfbkoVlnG/g226nLotUrcwMSNuMJPeAKvPkYcYAivELYGn7jYQYmjNEGHA+WGMmwyH7GwfDyhCh5M+hEqc82wNwGaT2OkgVveQ2dkugvbRRFOycCnccaiYV5q1oYA3W6sSPIDIisop0UeFJSSH3aDUq1HBAobAzvT39ps4/TbjtDtvLeZ8T5UlkcU4d2ZFpH80cCbY7AKXq0IDO8AmdAr3UPOvkGCj8tqxkL+YVdaQvmZB6kaQ5TYzU48nB/JTjuLINMXg+s9GpUM4Sq3UnXC0HK83wiG1TGhlTSCQYTHtxQ5rt8XSMnwF65lfRB/0wpWQYBSp8kiwvW/a/Z1zHeJdJXiOOHSGJ5D431iM6r3KJjmJxNGXD5nQY2QLqWl+mwDg77voZR0Cg5IjDQZ9o6g/9AQC44X8oRL3/JcOD8A3cFF7yID4DiQGEHYgKEGPTSX/Oc9SvL2maK77XejVQB1vpZffAV16HzjbQfycCStcJZFKA8BPh3yjA1GbxkrEnwMvotFtzSG3XKjSmLigH2G7P6kAC2mXKopA30t/jiIu+WukeQ0Ebv2S4Sg7ZO75outRHD/JV3PRR6M9U+h8xhijW1ezYDFF0C0RjiMNfLWRFMWjLdnMNLtI0PTU3u0ORxTLL7eAyPLGwIbX2R8KKtrga0HU1oS9tsFJNx8tYpCa/MIXp+rfeslt7gJ7HLtpLe+ld9j6eE0IOab0QMD5IKE1y50IdFB4zaPWizblwnDoGW5tAajnxjGodK7VymgPr9Dfqhm7loxUhgCZk/VVgi391iE2ENZ85BivqNRGiTIj9fdXIoej1jF3AowJ1SfaIUc/p5SWnMqpGP0SwUqDN8cb496Hh98nL8FkcX3FG203Xf1WeB04RPj01CvcQM1RafAEQwZKaGgNbiM5GJuGN9iqOkge7Vvu2KiffAqlclLmecYcc2oxg/nKcCHlQavdfGosmKPGyPLRQzlLYI6XyVgcsMhHpYFOTvGjfGFE/xJOXEIk3RdJIGouHppfC0T8pgncbwuINySiJDTDPC9xwmb68fycPX91hTGA0LCRHziH1/9b9r0TY+dUvEIwwyrDLkKIgxf2yB4jSFdJ3QpUPI9YI2tXaNYRImfJYEgJgZBhiG/P98vRi3pJOENSP8mR+YeM54fM8+lIJkmv0/XnMUZsOAuITydRp6rWraqiHNzTW1HiVL3zv6TLqcx1nyH+ZCvGWCCM+qRYYcSbke8AoxkXPpmKwJZJ4nyhYQ22B5grEQNT6Z8H1aLuy88I/M/Op2L8C7R66jEmuCQyq+EGXv3ZdUSAuXWPm4N/6n0BmDiUDIm/ee1PqCfOWLgjSleOdnhVTxqEAQMH8p4Y7zTp8uVcdJyGBTjSE9ksR9od0oJ6LK4U2hg56XtOywaZpnJxZctUG9K1OPzclLa8Ec9d891vyyYbowAWNjXJpUj3Ub49Vv/9ZZ2Vau+X8eD7v/lrUVr6bJ0aNBtpHkiwa8Gm9OsJaznVP9/OaqSsCclvQdUcikuKevqi9tShhGFMuJFcvEZkuzbplhcWWQ8Uf7wlpqyOJjr6+7ODdIl188bUEKD18lv49U7Q/NBfBkJefHb/HGgEcN0ZvRp7yizQahvJoWaq18vNpRX51/ac2ejYaQyJfrYtSsTYn/Mf1/CSXyRWY3cacoobZK1yaTHPfOJo3xtBAdJq+Pw54lWcHed7l1aDUOU8GEtSDwekukoDVJIjst8rbUyGCneafY1r0rS4ouW3pSsbQS6pjWa9l1oKR/fgZUv4CxX0FJlNCPP3nPDrd5On6UWv6ypoHkox/TXHl8C7Nbqr0aRWZaz37mL8B3BrfkboE9MVDTm93DyY57D4X4RphluQXbNIeSPoevmyj4IRu9otvrIgcG3apiDoPlh4IJERZ/B7dcBkyDHfEZhr1NGErlZznsSmJRfmJaEMmq8+hf6Zuf+ix/9M4b5ge05pf1HyCmZ1HVZTnwyj8gT07NynqUkRJi2ZNeC5VTtFYCao/mIggKPNh5g6VDARXAk4jj2GpL0ZFUgKFYWg6MN4bV2Ar3yUTIu0sVGO+7oPEEMunJC8UYr77fgAZ7edRgSqt43CiNzHhfoEsTTOirGjCMr1gYUxBKHYtQjFKcMIalKgVDyB6Ss9i1C2DuGeQcQ3EEQQ8H2GXL9/5kJnh0kopgRO6eHzOoJ2dsYfoROKLWkOQxIz+VjhIJ+iUTVN18Gcl1PW1LhQVifQ7McioFaqf1BgJoi92Al9kOeurPpIR6np4WccpX2REktZNUbNMkoZQejGpo9kJYugZoSHb0iqA7xytMZlSSmMxZR9TThbSMQCPhmD4nQBoPPFhdxi84yUYny7QIu4wzj7FgDAOZ0UyDWqH61xO8WjLQ1wgz+tAzvyZfL1g8EaiBlimn/Pwg9N8HDF5RDqk65OkTeSQl3OvJf8QZXnhPM02Ilv5MNXfYpxmCZjwcNqlHofICPDT17CUCwQdGhtTunYKGoJyTJV3fUjZJCHHPn0TWNYDfD9NIQzf2GuwrMCTg1xwkE2Vk74Grb2UO06f+Bu7Degbb5LKG2TAk34HPmQDPiQDoi/8OLgGoziWKzbks0FYq331l/Hy1e4bNQznmPRsqKOHvSno0dF9LNEkUHL1OY8XV+IV2Pn0i2xN3QeIV4j/26r9dKNXEU3dP3XiXeHDaDBM+eN4qBIxhflcbj5l6uowycfn1WvwlLNkSxEOjww1WywYz2ZTFdbj75BIPHbsgXzVThDWbEPtu5T08EPdK+us9hUsP11XgG+usi3hCgMOx9AiEQSZ19nNQnGeW5uFpboAOgOPqWwSJMekF4PRJ9yYUrmUEG56ySbZW0rC5UjEWofUdH7O7bAzavppQzZ9d+1tLhCMki8HW559iy6a1PugU61MYjz2ycNsfyN4Apgu2nqBhe2nI8BTJcbKih4X78AojqVqx4Z8ANZqA5BgPp6aPsM5RgCwpg/wy/lU+YPlN+CMxxDFAJ6WOiGhzb+GpeO6xgTF4ypMFU2W3qqX+hvHPyxnIcXaoXpXp1FgrD4VmCH3oL99akbIak6z9De64P6bAM8z1G5icHaqPkhR16Lv0FBmylxFB0cHUg5S6O0UyQve9cYsFjpqzO5ttDCoL6MWKwL0aX7nXtXiVC0xpE+xpWkGE2imF1QQNCVYJu6Or16oUHK/H2sPtboyVQBO8wFc/o1Wx51Zdl4wEJAcS1EfDPlGWKxn5A1ecvNKsZNf/xFInOByocFeLYinfzcXacCc5RNoItHADLHzsxkKVCCN+WbVfPxrgOF/Tb7wHnYVbHxRNyJLwIhZpG2Z+nITMmv9MlWdHPCOWiZq3BnXQBwMgPjPjj5Nn6j1vGhln5T23/vBEGTlKvKwkt84THnt/qCjPyYE2lZ0wL6y/zkIhiDDkh+igEUvd4/pIz3Ib+9N/hs91v/HU/WkB2ZyInFMKGRDzBok/J6l38SF1d6rGcfVoq58V3DCpRURkYjTIInv5aGEgxzseF+NTknM7dedczgY5fx4FE/MjqpuraRNoinOVyQ+CVOaD0zn1JVjRgrN15UVFWV4z2uhsB/8MFGLodisDLeXocPW/2Y7Y8XBvo7SkaE0SwU6lnGUibj1IsUOGoFEYRzVHbnRnhk1EXqU8u7RtNzOETFLvUCCkPR3Zbygzcs9I4VU5iRBfUuLYIrQJ1Hg2DOh8yyo8TKRlJiZhCQcJ6TWOJ7XrgMQW54rNePPipUExmiOFg40ZMTK4i8XamZbz4BpL0EcP+2V4nhShGbtIYckaE8vUAwPcMxaMHcDb1D7Ly9VqExmVCvovGrY7FmOZfeFMW9B3z/y3JyvzC5qg8TckqiUQCnLS9XJ2O8sI1a2Sru+omKZxY7skQUXENbye144AxwvaYz5v/c58DQxJiHSqdfrBNhcgp/orzvnChJlCrqs57I/3W/a1ceGJYbo+/hYnjWNAw7utKHpi/a7znpo7PPXA3d6EjnM0AzmVVEm2GwLVftDQqPUAp1j4pS/os4C/DbJJ8wFhTlFcQBZna1FHwuPnwmfHE8c7u3iQqWlzQ04NzPmTnLqpE5O2tXUPshFnMw32J85Q5kjbQrf8JwDzlwRNctKC8QcRZFd+adFNKOYy9T0WKEl2PHlzVWMxpraqpwtIvMjwfbgYZ4sZrlqYJHrOh45+UUw+jJTPWJ4Lvl6FF5eEFuceFmG7WBpmOb/+wHeb4z5pU1dwzOgTmVmua9woOztULONCqQzdGlFz88UP4P8YeBM3dOkm55uq1xT9yHyxrxVTuo0W4RVn+KPl1Tqn+AFv35AM7Wz0+7SsG0zBSHsiZeJ1DmpowOZw95HLhwVEmLZlJSn3ZY4bjFSI3+hxmv+zv0df64LR9FqO2aNHesYi7qyoXXShroW6F0C2qTgjBQ86W8nuTvtkL5S7E9enzEeB05/gqeIgzW+/Yv1q3bnZ6G2ysR82xA2rl7rmqxe60TX8nUe0KRhQeE+bPS3sYDQ8HIlP27Gcckld0R1JW6XZiGobdZ/o+kFFF1sjTdvjcSSK97uy/8sJlKc1sq/CZyGcNycLRgtsMkww7tUyGRGwfZRU/Xk6XKmRlqFyd+4DTLDAX2jQJU6tjhXj+RHn++XFZJ0BuC5a7GjGPqJuopNGvcUuWxXuZLFFLkYbWLdMIQq0xbmesexOSntxNbVY51B+ihxZG31F5Wapz0guvP1ddNf6mvrw+xf6e9fzrLhIIsYKgPK6Pn5iT+5yW8+0Z8t9vIGUq1ZDY87mXaIK2IqfK3Oq99wW6OSfiYA0uR5RgeYU9ulXPDSb0PxLPFooJTBHv2iEwotE9G3kp7gIRaCsl5LvsHHJn/yrN4ldDGnt1GnpVvoFyg2gzRM3JJPvPdbGkF/v/9U52msKI6YFHMNYxTi78dMLpSkHeXPaCmp/bmkoroHzzeHd8n+LrKHkJ+iuGBJN874QiXtQkJiUoCwD2LZ6m/WsytUOALWZWfXpIKgiyCgLss/G7OCbcl47RxaWUTmRsOy/umsj6iYNQsp8Brkloh9efBv9F7NrEXUuIsccqKwCJQtpKPOIxEeCFQNkeb1Z9KGYSidk/AoUe39V7scNUOLYoVs83/JjvRiGS/OJo4OXCt+aCBirRXOHw67L/WXkJsQjpbSJURFuvyxVkRbQBdkqwmp0BjYLNBGHJPQZhO3iBQJdVEoa7VWjeEuT0UP0ZSBUgEb4G3ro0MhUlV4F7hR2ina88TQBgDAez0UfiSJi51cJhpMgFVCu5vUS0a9nf+8d9O9HUOD7NMe0OTXz7S9SVYhR2QBPrldnlrYb1Co+4uVM+pK+2p2moY15uCl+wSSUgZYXBmZHcMVW4jSL7HCGpF+YF9nkyA9HFM2Yto6HsA/UgxZoK57Fo6kIauv4emfJSi15pqosf7/A8WVdu1uHp9EyQSA9lvgOYH//zcB5Ph75u11/GWealS5Chax+ECoeshujOSkZuQS3MXHh7m3R+gFEajzfcGIfgtWEBDtwYne8Easb9ZoK5dqK1n3fM/JFdv86zQJ+Us2f1qkQjiNaYI9oqkq0lHCAkKHtG8LhwxeLG0TTaLT21wNBa1a02+i3boftroi79vMb7FzlrKbh10dobfhAC7qcfCLwaomRA77xHZe+IC0unuXvSvtPvlrNovPyb8tPz6D3YP8WNEjAKZwgM+zhoLQXNENqGeH1dbDWAbPaqOqJaMilA0+M3xlGnZGXtX2uyTam6rQpgMsife0VijojnzfAPgaMygcH/dR80bi9EO9SI9N+EMd4cpN7fnT0NM15brz0qEcxqhhgok/PhOCidMtX/uYVH1j4zJjeSuCvYi76BphAxS0a1SKZXnlngjYPqlgSJKpOe0cfjbjbdw52EaTr9XcSP7gemD/wlEYku/PKgbDwFolpHVmTJtKzZSxREDgo7SFK5zL0FJFz6oCBwvGZ+k/x3n9lcjzqdEP8XORBD5QYYgGwhvYcV3seSCGhs30205NTvHOnW3tz7OGKaaF09rQB0ev3h9IJohjrD5onRoOGFZW/QH0QSsnamoepSM5nd/yYJqNDuVYJrPQYpxXFNE8UEuHWX7yKqXWTbuVcgnX05lfYf9VtjtAxA9aLScsrnG7w+bSTybcH6FD07TWb8Dho0XKZKE837z+BG47OZvWQPMeAVrO7HBDSY/K6Uj1K6rl3/54D63ExPBspeWzmOc9ZR/BHoZNk1PCB8tJwg61IKumhjcFhQg9Ck7mWQE1hRNLZpideDx3bmz93cYqlmFySlc8KEFK3/S4V3Svf/Uj9EfwcDF+bokDBxFmRxQS5NB6HFpG9O33x3SvM+mpcOTo/ZdSXs/G0sUBgNhbmSuENn9RqEIi8HBhwNrNR2RdJ1YBFfwkuEZNczOXPp9Wtqoi8SXrRgi3iy6nTldaGXKOxW13/8y5R09La3zTeRC8qNo3L0dwjHaBKKgWpHF6HNMHSNXmH4cvZQtUkZ3kQbw1Jw2OJz2qFZhgALOs96Hp84CXZCAcz6xArBJCo7jqTnnwKS/duFUkJQVVHl9qs5mTuRoD9n+wEbiCZwI8Mipinldb73oL2lAWJsLmJFJAkFCVa6fe57crNryIHFsGnx8FhiBRPX4OAUpEjtbbvStRX1+q4ZoVBd55SqvgVF3O15oAeI6WBldrQ8G7rok3nfpFjT799W2NTuA8DVcuQrTE4oGSszTHtPvJcDkXUi01DGhURWFj7oAM+fQ8/mtAxDV1plMevTNQS3pkXvDA27p6N7Q8AczBP55UsPh1ZLVU4PzXYH7dcwMCTihqRu93Cly/EOKRvmJbsS34lnwD+xOxYVvzrdrsOQAN1299u4HZ/Lv6hT0vB3iMKfX75RvwxN+Ac74BYQGLI8cNZoRMUuB6darFbSSRqTu/3rPKT3kr59EAW2lC1TcMAg+0ORF03h7OKaq3W8vV1hLO4cbdPwotx0v2KHwiiubWF+RKD5CeDMjMS41vBaEs3Ua9AcO1YT8803jh+8xupfJ9k9jcYWPghu0Dl2x+3i2XVbrtSwbaXGnaJJXZWExld4eN2bd85O0ef77wc9OsHyvjmbdBoXoIKSRrKIcT/ko/XyfjI/KSUrNnXinm1c6rqjQm+M+n5V73wkm3mUof6rie2JpJSxTagUld5BWvmzvausaC2NDlf957Q7fq0l73NjxNVvFOe+Tyf/fu6VbNi1ZvfMbluBQv65bRSZ4pxZl77wJm8Vxx3q+aTnJK6amJq5JAq5xgnMfrM5dsoD+ft10eTJonnTNTAmEpM95hJbBnObCrzolu8bjZnQhOko8z4pKGLjwVzfdCDU6FsbAv7spTsVTM7mbabtjl813G5pcswftd412ILMuJXFh+ij3xGCfKDuGA+NHh+aPCahXG4TeetPHLd5/qT9NfqO/1Z74GVp6WskjicBT0L0/uc/YjScE88NcPfGf9iJtfyLMKuAiCSHIQ0ksPeUshVBBXnich4SqgMLZFPRkuNGlAxCvQoPHTZ1GPEVH6XixzR3bQtyMtwvH7OIriFRLtU/BBrnsoE3GFsfI2bByfQUCklEiRLWXQiZe01p1CSeAFDECo6pKY4cyv2DuwpvD1DDMI2lAEEHY7SpZFWJbANBvvTOa1X3TjJkFMuvag3sLwhimdtbmep7zQ56miVjM22pRO3xOa+I/hkUM68W1qlG3iUle/zQ3iR3pS6X9+mGsseLEz9HJtRYx6eBm3vUi08YvDhRJhZoPsJeXSupDiVdrHtpT8N55gkA8bqPjyfLw6FKp4toEvdfOirz07te4+HjtVaDVz4+8sUabr2Nenyaf1hugSeBI8p5pJxxSWUfko8YZVsZq9/EGVIDGeyejrJLGEakmKhtenN2Om0wXIl0F6QHrcqEDBBim4z5K0tlOujthC3LdyXGMY4tU7X/HDz+h/+a2PP9X/L6PPj5PIdWHb1DPJNjoi0s0I648YLbqJxJs9fhKeXMeJLWculcHYruzAkt3goM+UbCrRjgEhlAvJOSHDkCN92VCHKwLrEZgOp8UYgi2Z2ooK6zGRAOi2asdWZ3rc1q+ZwrbvU8v+LKtI0eSDkHbCASlTBXkUfR4lZyRr0w4ek6oY8DcWVDb82t7+nX6pVD5lVTPW6Rhly3TWhRQVKk+vdbhblZitqVS966/9/F5PaXWee/jaL68h4SDfuoGm9Bf/8nptTborYHRMwUQp49RSUFf7JaGA2PQVt/kvOczrBce6+9/b2hSE5dPUngAFwg6Jpt68SB3+z5ZrIhXBAr7Dc8mZibfBgYztRn9yItuAVa4Bxzgcd8/VKj7sloMRZ6D+bFc5C1eL8n7EZHNuKo5nnD1tQBqGTAQvxZ0ww2aXPCd/g/jN+GsDY4lEGv9wwSnS5MTmHTIfXK2YAb4YVl388E/U2svWC8ltvLtHcpWpUYbUToCsq5OrPF/IS/3BaVq5jd2bJnZBgc8W8Vr1CAfItAjWSxY52XBw0hcdnwgUV9EIOnigWp5wp/owl8k5bnSVMxNEBooX5lSRTqqlrthfIrIje69WXz8/E+lHyjvSFh59BXBmgHkI09ezO2tPQRhvX9+fWrZsHe1ANzpocb/dUAys5UsetqJCXmzP823aVSuvDyGsWmYF8TfU4vXTPrPIuoqc2b6nZTmleLm2/FD+4srplf0ck3pu5WswDnVwPuCupJl9YdzZO5dh411NcUV/76sfnmosqUxFqxBPkcRpTLFKSSBx3SF0UZtneImPSRZJstTEpbdRqag8froISgbmuPD2vIKxFmvoNborMe49dJb/lmITIoiZtBxdr7edF3cR0HiZ3u3L4SSzcXT5Njwu3gIDgDI0xZZ8nOEUrRiHPW1gVzzse8T3C8IA+g+lwjH0HW2SmjVCF0Lwfd33D+NB8Vho1k9Bkw0j8wEtyWxS9pNvnLTfRFoquacnXuYrzrjHyJ5O1/9rhy51yGZaO0Pk2i5wBZKifKNdJbZYFUEDoO/ATu8MFdfugtwYQP6eHERTerzjdf9Eh6hjbQnIZro1DV82AwfDupzFle6Q04i7YBY2FeIoDUBkZcNjlSe2XVHPHn94SgWnSDaqvslZAPPqtps71AjT/4SfxeB+6NJ9bLWwWOBi63JlK9URruxeteOt0jxoqMNyaK2hdKH+axLavHYSkC/o2zoYJHlk0P57GtWTkf3dGbZOvVoo6oYFatf+fldLLJ3Jl3FaU5lqzZa1OUfN2RHeZa4YjW5VxzrU0RxR4aBrJqek4J9crCKWO2pgUlI0kpp0DwbICxIJLk5ofSa+VOvhBFaHnzwohrlTi0uLfZfimwsOan3fQFluLUbRI+Tzli9JoGIUZpjxCxZR635iDVZ+3r1bi4TixAW2YnAAIPYLS2Y1LAgn24JzDPhQvwPfoG9AiMaljZGJ5BMJJinAAf0BvQGkdfdej/1WI6L9PzwqlHI2Rr6ESHYzWCW70PDt0l206C+nkNjSzV+kP94DB9qf8T2dXFiom2KIvbBAWSlH/RxOtkzvIKSMJMlNJexwCtd4xhYQfjxfMTBEeGRr6r7r6aTBXaVOSXVCWzkA+6IxEYx7/uFirnCNsGIEVsJzVrGQWN4/v3gDVOgfElP0khj1bSFFWNf93bj2M+URFmZ7EYjy2HOBKkQiY6cHWmnY2hk9qztMFxm/LySJlZCtmUPVSbs4czdmAEqzGoC7YYL4Oz4MVnFhJ9FONcshZHunZ5HRu10rUesLma3/zZl+HkD9Glq29+l8pYWFR1385xqP/HYIlPX8CjX1mtLeHwf3nr6PtQe1PQct33aR+o0g0tXaT4kl9bMoaotbwy89aw/jBNItQ+SqC5K5ufJuYXD1h2PyVdo/tdyG7dx+xym2a6bWWjn+WdzHP6XARVY/k2qw9Xzqwx6WL0N8JTt+62/agVRgK3Vzu/bMpF85y26mPVAeCwAkWcDDyKU7hv3OshxZcGfWyGqo0iIXu/DCvsY6+rKk8OU4UJrbHpP+o80oXS4GXUtbkJFysytsTMnbtJsWtfdyzfmgwTe2SXSM00KBdvrp+xnXVaEmR8DxtNfzc3neeMcTEQ/E5ILc/ASDUFMpgOv311rc0j1TD9lH3lrqdnAuiuK8aOqjIKFfna3vOEuwfBeTIUn8NIKasRMcbz0YFtCFA/GGqoHsjDdaML2MeyK401vRW9zwHqS8veg2WwXiukepA6HzYu22mxSjkqR6mM6ut4YOvL/aAa1n8tJZ9s8tsVlIHO38fCCsrLVr8ETUpdSSOa+1fA3OpgZ1ERi4Ig29QY3zr/vj8A+EcXqor6E5vMNxh/xxPGGdHxXJkP++iQIdR9XWGhwlU8p/lsTyQL0Y99VhLr+BZxBfqSaZBPt5WmvTiPvb7iYUBk1T7c4ojgss4jXznMFwFGpJPu1uF+I+6aQWu+EIaauIpvwCLaRefyb/kK4+KSzrEwwAs1oxoIuEDqCsVkqeDtIjqxbxEzotjm5B7Wi7Thp1Xn6lF3F3oUWaGA94NDn63TsZcVnsvf5khSNsKX/Zy9MvnVJl3lmE1kY7B8N5myzJ6XHqkw9ovxQ+bJ+aYcF5VzaGtl/It2fz+ctkjkyHy8FfRVWfS4OjJvVWsuNQixndgjVor6fYIs8UjC9vuyZcdkhg9q7afh38POyYi/bLlcb+bm1+MWMBbIVKndwl/b6nT0eZ04mkn5qI/RhjpX5PO9qwf/JQN9jnI88Z+3LAan67gNxYXHIxerv8ZzPRAgwwxVtP+iTi0WSmwQ/xEUUTAvIIfiyohIIfjUCSa7Vuc6qxG5UvL9rzbaDCXLQXB+0fEx5kRm/M9Q/5n1R5ej2JL6j+AMHYN3MERPyYhuEPSWosFagg64FDHgtl67xL+SuA036AMHZqaS3Xhdk7PiaYvd6GhceUOjOgKonCmdI7UHnPj40oICQKVnZfnQFen0t8IS8qXADD0LEn5j1TdYTZM470W7jWJvGm4z5sYbE2YAcp5LQYv3mSrKufrihfFe/+t/0DN3QUi4Qofm0/bfMZaS/okEQG4ezDYPkOFLOpsWWSI4nvXpx8l7ZNA5KzPD7Xdqgbp/BurT7x2HLM82tOgZuElDHzdbPAerLYEzUl2+JKNECHxUhlpD2nXw4wprp0wTEz8t0jBt6gNdN7n0ZFeLZ2UJ25b+xuwUN/JD7ct577HFi1d+XX/iWdc0f3dEV/0xtu6bqogi1xGeev1YTLHQVNTCh0eDdDgPFS35XNOomKZi1YelkVhtfJV0Cflim72asY9Hyi8s5jIONE4yJ17hTOXpfCy0UA5ZWgMVP3QFbuXFLtVbjL9GYlXuFf4Fd7rakzO7/YU0uPr9f0kdqVeoLAHeRMmxxIztSAc03DPlLX67RH7+HWcHpfRPv4NqtoFrkINLskNUVYpt+KVPjjoDS8j4Y8C5KZNB1SArLT5ZlXZ6z5JLTl+zZdDoyTbMo3s1q6bXcu1CLJi/vtkWD55Z/eA1pupJkCUU6d/ZYnegDxnO7oLm21HxaHrzfnkTcYuG1tv0rEMMZS4euy/U0wc7kwkmmkisMQIo4OUbivDhpfn+SxX6YV+o8lGOrnry/mto+FSbb/xpYSxRAPE6ZwsWgI/XOivN9rwfEWW01J+3lqmf1LlW3p9aKHK3bw7MzWP7dveg/T5X2YjLRGuYHCuPVDv2GgFEXA8kFBRvrWaWWwBdom8Qed11eBD30NY4hxfleWdDdF8NLHav4Vbw2xHN3dNeyxP40MXhWcA6bBqPVyBWNM7DJQKthUC8+uXXx5r0JFsuhbvEK3WFi+Yj8m0sA880vZEgbidjODUQ0uFz8KpVDCIEeFBpChvmPnw5kd8kWKs9f+mqtWJVPeqY52s88v/ZxnYu50Wcyhn/KrTvHGrnnz+dd0+bEwMPZz3hMaC8aWX7UdkAyE8sq3NhoIYD7aHz5XW++Cmf/0dAz9TetgNkOOk0A5+x4pqyz7idZtQYSTRbbD2mrxJ3krv084kC3jQq9BEkiBOirx7roGtcgE7tlzFjodzd7OBWcaSq293qlP5pXtWiyBavBsDyOslfOSfETKT8CpLvBax49gag34Y8J25VSBOGZ67EZZqVOYd+OvaSec5cHUR6yF4TJ5Xme7W3NBynAH83dmNxPIxwPQh3K0+9BQBnlYQw4hjHOFgweAOiaLiFhbAB6EDrMbHiEu9/Q8b2uIRxk7c2urPt+xO3oXuMdQ9lTON8fkmHuIamNWfTae1abx32FY/PeuDAD0BX1p4GeYheFqMXs6xDOhpzPw7p6i3d3h16DDYSZhoubUULWOjNLFjYoqJMbo9YlrPOU86ButQYi9CAZPH8dW+xsOHrSMFRoXL9FPOvr3M7idumHED5bxwpAhtXboUJsAFR20p9MsSoCDhCXJE5xv/rChhA/IQBXuzeOgpdcHcAh6gEc/8XIl+urwLzx3H6VSo/Ee0EN2cMA+nYr1Tse+HGHfDvSPBBsc6KMKfWIUzsweDaMj7OKA/Xd6/cvQnqGvQmxyoP8YLPj/CCOYbwEfGW6AMcPxSLhm8sqY1krWDDmyLYA6ghaprQbXgFUZBgVGbakWMiAAwvAAawBXIsN7vgph1RckPJNpy5bHODkxlAAUpDyAhggTkLcgLSvO2gFCWGvo2v9A1BQ27mA5SHMGsvd8zYiAyvk6RFiBFX2mOQG+hzKT5gSvAzAW5JXhehAdlbEI67CCAwAAzDnQ56QcsQ6RrI9kA6EVArQkA0UGgoVgZYnal6wAUDPbgWBiAACXgBUCG1rgGqwQ0thjE+7IOsIANgWTzfS65hQsI4IvxZfrAx5rBvI7KAiPHcqq9IHwCY0fcMeExwGNMqlGCosd6pDQ1/jnQiVCDotj1COhH3A2odJzB88VJTP6GfOqVBlv4XmF25nQr7g3oY1Ge2i8RvB078MGFivuesKO8T9Qqj2s0HiDu4GwU1xD6Fmxw65BRP6KuiPsDFcTetFoB41bPM4JuxBXypQh9NBsP1jUQbPD1qJ3aPY5WNRCs36w6A2WfQ0WNbDse7DoFZb9DBadoNmwNddBs+Ng0QssOw0WPcOy82BRDcvGwfCFw7cJNPLzm+Dswu+Xgg6lH4yB93xC1/H4Jsi8cHcp+AHhbRRkJrx9ENx44e2b4MaEt5eCG2X+6ATfvfDHq+C7CX8cBN+VS1WGKVfp6DRjXeBwz59Yr/BnpKRbwWHHk29zHJRt3TIOwoZxhqdrmpn8D7vfDK81hVZ84ec9/dN0xM8z8f9/KdeAFUK7cw0r6axWO0LjIocgkEu4Oyq4MBVFPcBWUYewhNbAnfwSDkN1DkBVbrNY/n8V9l91gBS7tYSC4kjhENF91SAgomQ8wOBI+bzrFHuXFjMMSaizDIqccBXHkbKjIiyhUM//qDW0yEbaQtFpQAI4XocMRtBdekY0hoyiDqS7DW20BOrfpQQHqRZ34i3hqqTPcqV9GfYDtMM/mUKltbCP+IxU9G+rnGBEuwR5uZJLOCasi8NBhekkEMc8sMPKjHnxINY4dQitbG2kkdhqVVfDC11Gji7UsLGyWsvypKZU/n8vIYOiIY6Dw43BIkGJwEwRpEIGh0svsAOS9HtXXkKhbg0YpCWdVMURjYVFgqISvBBC44DFae4fYRkUtaE6F05YNQv0rfrA6+DExpCBzUEUcgmHQQPSD39GKgYyZfy3iGZRLdUoGQsjlPvjJ+CLpb6BL46IWJhuCZUyOtaC5AIzuNKavCowC3F1R6wxGf3SNjrZWM/tL6RJQtdLKH0G+6jPiEBjCkXvSPnNeB0cOQQBER7lEm4ORmgdaEwR/OKoaDc+A5TRSmqAkkf2fgkxnPoiJPCXiMREM3wpRX0HJwqzkWzHHK5jYO+KwuqvF6Hul8XqRQ2ydHxb83HmpZi/L8FmJdjRDe8hm1B9EqEw7RqO4Y2nYOAlfG3mBcI58PA2xQxDxuaQc/o3NknYJhXTItBmGvF6jPEApsPX0wMbC9LO6QHxafY6Nyq2p6ZPDa0EvH8xp844Oo6YYdS1svpMXhDjvp6dsO46Qi9v3iukmSR/F+9+OIh61Ct/VPbKeZmdSB/oJ+FrdBMfI4qGt7bPSCRi56nUgfT1YeBBwnRY/xt6UuASjlFANFuThhgOYSlAlwwZKGdWvdCHFA9jxzc94JtgipjCfs5RX+vBSjwBW6jyJCyA4zqwc2DxGlZHBZS8oV7HZqVluIcjqOEOEwxSzC5AKjPC04hc2mjxUk10c4ccSYo3ciknnIyDY4sVEWLHxxFDHu0QYnj/XqeipOi+MURwlyDj25KQhLYMKHKKX46XpvF1nGW3T8IjwDBsXXMR3kpXv3v+qcqsKIGZ6HEINNXKHXjLWnR9EmOWykaMgj4DI7M2cEiN3+tEEHkSlITHt7OipDRo3l9YWCAHGDK0gEISsTGxFvzWMi6v97XZI4JV40BMnBikWl73SXst6YRny6MY6qwkqfRjFJKJ90GbaCwaMSJZdZylyEHwmT+iYXAI948IelXWVB1S5HcI9P2FhzFB8pmC58YV7I8Mi2daiTiOCVGhEI8Bkn5NDLFLwQVwDNYisHk9wMxiHQtVws5NOvgySqBS70ZZLeAuCi5VcVAoqIOLjTC4MSNE8Numev3kE+WCkjgOBfjrlctUy64zxn+3wPpV5wDbmdMEBXpcriWqIlVbRmwyvZRx0sF1mstL8ZxwxU7kvS7+eHxQivKk1hCu9IAU63e0J+Zsl0i6DwrzJi5vUP2XEaM+v1Ga++5+cC+g0yePiOCEM9GbXAnKYMRa24R6ilRSj7XhCYN6qN/P7u1GAxKIGEqYiuNoCSJQ0HlMIEEZdJ3CFI7ucjKLz2owiNTbWbTrlLdJSfX5TnV/UoPhqIYI3LRMK206c2P3jbyJrbGBFoMoHvn4RnjkhB5wkbdDQsNhywp7qwiRiRRbDKrkmOOu8EovIjdlDHc5td4CpHiuMIbIS0K3L6J7FyjMWOgx0Sam1O6TYPJiofXhCOkLDQdRhy0PHbn3jrv0HnJ1zIL3jVMvJMgD8fzUGnKSYEwwYzQ4O/diLBMiCoEJnIuQDuNmJLchJ3nLBhYOMzMgW+mHj70pls1PBEZs73LRb4sB0+ullXTl2aVXVS9n8EDm+zGvH1iLd5ptR52tirne/sqcYC199OIcxwkVJCZBUUKhB2Q4pBdz4CW0V6c8Uq4EqGYTXPf1jqZPyCDSE7y1aJlQldX1aRwH5wptNHCv6dknPoNU5SaaNaTRDppB55WDgQewEZSr1R3kSAJZoz7LqOEfrTTsG/gTnaGBjtijGCR41Exj6n/tyMATelVcwjE5f6TXswwKot+rm1WkWpLuhufvT6p7qzm/czebBd1XCZqz32+ud24NuNIAsZd3xUQXn1oWGhvQAB3Ql0sqiOzuerYvottZBtFNvj36Fq+abKRHK+40bsCLyN1WI3MnBU37s8J4v91wh8iuPT4RHuPJ2usnn7X1PSKqlTWwQA017EJghmIy74Zd/07S7xtnRgkVFHcNo6MJCzBYTI3OGrx11SDQCVgDT+BujiU6oxc4unrpCDiRfInhWQGn0zKBQV1ixj0tA/vFwZAR+eVYsAvE6T+PwP5OnR85QfoGZ6h0HR+E95a+ymtq3RnM4AloNSA2W0nFol9VzE0rV3AySRDAid+aEJUhLWeO5JfDrBLHIyCb0caIjmY++Rwvd6wPMXREu8YKn514rkzPBWbEgYB5Yce8FIHbx8qkEwaM4HEBh7GFUE6rAK6RWEOmzI/gTNkRdood4ERraVDG3SVU/wADZhgcw74qaUlPxET/nBsnrHZznqI2npMM2+RRjxAUhZnOx0oczFdTZq2YpKycdwVJ67AcPlkJGv+w16rL1h1vipXGDqI4hKzNumzXmexowIlJBGOaLPPUokOsCuK+nvMrVneDs2Uzy8+vwAa0sK57U8eYvD+Bd/9GieMCtmW4Mii6xmL4gMSCSN2WfB37vjkdHz7pMQ4MBVloK85th7IxKpkA12A7AoPaqn3XKQumJuiR3suNOj0TsxRxexlHBbeuJGiKyCMeqHQ+q1yQ2PsqnwARpdyQzoqNM1mDtL6UgSZOKCZo04ZvJZcyJYNBvfa6HCYzd0kXMCTMD0j5rG2yaI7xvgCa1XCPeijyK8mLEbKkTophtxD7Sm5C21M2USV1o/op6uN4ShqBvfGBWYjs6gxNUBD0e65dRdpVit6eDgMUeRop1w6LU4fYVvRdp7nu/pt/k5XP8rJBDJroax+jEUuRwcHyKmmXDQUYahs6KXZFpETXMZrFuEPe3n6Mds6dJPSYJuoARWnCBv9j8SKdIRby/usRYIJ65YCh2J0lzNuAvhKALHvqItgKYLReAsbKtAbkJAFXiFQqbfkVafBHnGCmzHBW3rev/2bg01RB2ZHxL7WYQF8ufLw0dVXdQKg9ziGMU6RtcryqaoR04i9v9KCIgsTmVYXMohfTosk7ZQN/Oxr7xQiDFC3hMMZ84W5fBK2ikMnOX8egTXmJBn0L7I+kPIkDygDdU6NjeL8wv6Ol3b+ImL+joqPKd6JKXi6ygJFnDY5fNjRJPpdsNdJwiTYbkBUh75leURopKm09ItdqnQ19MKhtpOh6gSInlxyJ7vlZjf5AiRaP2kENb1NqcbjI6UixxnVIRT6CiEpN4ACBRUP6gdooG4NQ7qUJ9CTLBBBS6PpR6Ks5XV6I7mMCo1Ddf5ptT/Gs2Ls6vLXjmBXxXikQC+cisK+hM6DQ+GOf1pkuacnKlazTayM0Wo0D2ArSImpUGKuBRZhTrK0GBvM0BmOKma1gZg//xiGjCFq5CagUter+1FpALuDPHxWrz9fTTgxdxCE8Cc87hwU8WZ4h4nssJK9PkQ98u33SlWCy4FNLfi0oz4T/6TWDo8iwL9J37fFTrTdmlK1r11ZhQe+UNWxchN+rGP0aGFL4tzWnUKwmSvM9SAm4roA6Ik8ei4dKsRiHUId3V6oEDitv8NHLRGuJCEhRF8Lj7FVTq21FpA3tdHDUCBzHAEiBoyqRwSfOweAEXAJgMlGgtXzN67O82rhBke7VztFcjoILHuvFFM65uoHrc66NQe9n1VB1YnlQy2pVZY+hqaXqSHZMBG8MnjC0GiB+szHbOHBDMZSMAU8HgyKN6ZFM0Muapw9WEsUO2rwBuyS5GwAh/zAnz/glJifEZAnE8NVYG+cSLAWeh7iS2P7YAaH5TZ0uh0wdWPDir5J8k3hxYTFQHnN0Doc3isRuKUe5ucT7sp6h8M21AjN8lTr9YnCHByiB44GBVYEDflUBrTjslb9+Bvjdr58B9o2hIgLgwYUrjCsSB+tcfLk0KxqvKiBGdhAJxE7DESRohIOJO/xWlCCFskA+MZTbPaicWfDJw1fDUZWw70mLEfliQ+EapaszxbSetoLUR8WnyOH7WYON7sFrOfmVncFdLO8P8PcSx+2RttEpjrB94E8Y4EISeVe0KhaX2j47VqxbnBUqovdFXTsmFPkBP1XSGaZ0pPASOJ4arDUdTA2BO9P6S+VvJw4k5wgh7SQZ7DRDFNIYKcyVNewQkSB4RpxkJtyFox/loDpcPlbcTp0ux0RGZqyMh0RWPyVxsIyqHGOSB878vAC3v5dBirl6uh5gXqkBDeK4QhAEJBAxPs9jZSvNfYyinLbYng/NsRJPRfx+G+RgOUiGEehmIQFF04IXyqgm4ILVelpBV4vAyt4xZt6Wr8XXdjrK1HJGMPqtHVFUO1O+rcjLSxK6H4+6vxsLcqI0Pqmt6i0NYEs2zkygzlltu8XjEE4PRo9rS3oxrhX6/qiKQ5MHAkTqw9zDfIkV4hVM3X/F4vgZXBgzR4+52GEsWQHRwf1gaEKy0/J+Gzgcw7rOUEwD2LUk4pvUK33vnpFkBa5XTMDKDnBxHClYHcTIlcuQ/iIx3CM4dLPqzhovIawc6bRcv9ftiEX6xfYmIxnew4nOYzFMFJU0M4sQaIE9aMPRMhKZydiBhAlJTRfO1WKEEJIhEi/GkOgCPK5jqGmhTTYkDU0Wmk+nhTFptPFuDD+KnfurGP3ky1zQ3cQFj3jXN2G4cr2kikqIxdQhqixNG0yEm27pt60LZZADPNXG1UMM5sXIQ5GDfm8Ee+z6w+GTvtCS6xENxYgPzNV8AEQcfqwr1kVy7/go3hTJzz0p2jjNlgcXRq9y83EKBWHiLkE8jPgwhXIEzbVZzOypO1t1xVG1RDLhjJdT0ZhlXHISJEdLwYL3G1GxKqOgME5uhNul2B0BeFbg78AQhR5nMFM3MC5DxTJi79N7CdRp2f6bwwDPc4YVM6Ukw+ZJnRcJ1Nz14GmTmJsrE5YSLh8VuV+deOme1aLHkgKT33dVY4FFrA+4q+bPj/UxAMKA6AvOdLQI1ZRh9YCWuJB3HO/N47DrVKwDOg1Ab0WSY+/aVj6LC6YzQngPCbmkJX+Mvchrf+LicynbxGR88Le88NOSYyKBz37h2+KSL/7CV3/hjV+UZp/45XzDHlZy0mRMPL62prPabJ+RAQrnNwWs6MwBZP3Ska6gzeIcaGoD8SzqVs1ZhylK5fmFtdVwgPz9joD8AOSjVgpeO7jI/139jOIU97sJzLJ5BAUyoCNErTexMpTyrCOUfh27Lb4oQhKOC2wGQ1KPCeK2GVZ4ESxqBplajnk2MQshTuUIJ9RNDWxtJuzaZZRgY6bND5wBakeolpM+BQXKV9q5Y56yaIK7ihwxKG08zggMijljzMDwZCbaXfloC0H1tNBTGhZVDDpn0PodxWf2iKXI/poC79ODeEOS2r7ISgFF+WevG+p6+y1bfBgC+yoR0Zf31iOGcGUMMcPeDTfhVZ06oXWsIoVEONd4SZQMAQjWVNlL/VM4Nb74sJ1RnmbbubjA19g2+wbOTxARraLT0ttqcVkjof8B1f1lP3c7R/9Gkv/pCIihEg1tHvHNt2qJeMNwmbM12RH8nCGjiKoAUjMrEan87ZEl5VWjpkIrhF0ufTvcj1uK4m/8Z6CvbYmSUVv+BOBqcG9ppP/ZMoJ5mIYIlMhQ9/rrwiSehGY1Zk+mzy9mOCSnjiTsdWzHoOYuEHxig0fjyCtNdIP7o1pYqv52eN8x4sLFyWyf7b2CvQ4M23joQJjvRYZujnZGNgwfd4wJMuamqFQXeDIiS5L26egkuDK4KMPFNQMY3GUUK97+CizsvTszYqycX1YoEdmc6u8DgRAF+09/wHzn2R1frO13Bu2aZtjfsmnFW7vK5AoanlA3bXn0ikF/uNOgrB3S8WiOdYrDgDV9kZIXU60clEmkgtXWapKz9RiDOqcSuXTJ8LcM1T8o4X3zCyLWVqUMyP3rmHcpi9w32KrsW0LXvQpyNDNTL3bZxLhb2TajVvQPs5C0FfdZdT2cc76hDQdWlzlKhbHfGVcop1eKg0M0ghUazBsbszlZdguwFrlouI2rhVt2qLWlD0Cbvi+Eo5qDak0fsBatlRni7XT+UAeEmZJdhCAjoXG+AW1fdstC7XXgEr2HWO90VivnF0JvfyKIwrQ2oYHKNmAr9DsBTfw1/qxDHxcIhhhFBJdETSocFGGRwAb7gjh4AggnnnsuUbxWpooDGofb4sC+7DA05WOeBGKERSicd4vlwB5egTp4m7hXIkeef0I1yo+gMWB5npPxTOgMWsY615GB6Sr2VW3GsmH4y2zgOxAeB/CHpzIrM80Z5ewQROaLckIYKZjrY1v7CCDCbuxL6ks8/AmbrwTyBZ1L75XrgK8P6F6sUlWYjvnavvUHLsiIgYoVOBuW5QqnzA19vRsAskcWHLc1V+cOYW9l4D5IcX0IWmn3gXWK5ZP1HG1eLNtStgfVMJqT8CgBv7YxNY+X3s5RrStdPoMx9LqH+3bGAS1eLa8JDG4P+4c1GU6XUMQ0ubX3nZ3r3fUqXeJgjeiAs4eozDpnIxxo+BX9gjZdQTNP8spLp/3Ttw6qHUJQS4cZGtAcned/za6Q54eIXYuzfZNKu4OFwtfDnV3jeDt3sesHLhOjW2/X/xn2oUd7/g3fUJQcqWCBkBpJOWue+hAgSi4R8xI3O1qAQixOq5QhW20NpaHKxUR8i9AFpmBWDajieH3KFYgAdPIvDp23UBEb8Ohr5allRczofpWBLmtNyyRSVG/HcttaBuw7QMwmIoIfeBNJ/O0kmcLiLWh13kUOKRC7ROiVfMqMOD4adSFa3tE2frdaylcmxttD2n067ipzuEVkxry0xDPNzNLPgbHhqhmF92Mlv3Am8inmmlYJZEms5jMu5akowiYzJR15roceEf1aKxiLFQHhQ+t+A3rn5REMVApYRWuXOH+ZAVLwntej7VohnZaPOLJkqAdu4a6cpfDesbwqipmObhbnOM/2fza0BA4A4VAaZaqhP/zjzUxS5hRyl3YfcA/5m3/oe1+BIb60fGDhd7MyaDNdCaS2VpR2YQzL8hYW1D+wm5XO/3uRYXVW6wsna1qyGpJQf506Gs/yKPd5cV17OyaUiL34zwOuKqHkiqsijx33UsWODINJKczXQo/U1foE0L8FauKLUx+Bt8MMfLU2cTZO7YZSMrfGvnePUuRq3XPpCN6vNh8V9DW8Q1oejCwvoQdfZLVaOF/U3X7QaBYnkfKccGkLqIWirrI2I9AfmFCtt3qzIKiPqLjDiiZgIuYA0r++joZ1X1RVGxVR9GsLCLUII5WCuo0+36LFFvc1vHa+aXQtvjoyTszOkWUHbMmE6UzSOw/MDrSEoOi3WA44KanSUlWPVw9HVBEYbuG8WnyXDRcTza7d7J1sFINpbxPzpGGoLXJtknOGCzS67ZqJfqM9vUXaufJZrYKCIiPh7g9LMIfGHARUdw7LxXCFS9iF9B/SFDdo5eMGzef8CztPgZdgyioIe7iOQfFSSARmFwUt2pvSBFLw7ZUNAS2yd/9IquQWATgHStWpmZZTIh5jcEdgnEsv9EZPJ+mHItwvsb0+tJl+DAge5ZajBby/a7Jt7038O9VLbLt84h/oLoC84USJmtPsWP/LH6Qa6ITjzTn6/O1gPx2wMplYDoZy0HPIrEHjvbu1X6OVRvY8Xxb+gUqJao2H8ZFJUk17odLF7TB25J+qxWhtfJr77RNnI4v0D/QlXaQ0GVISgNO9bNusOtQDOUTY7yPXo9nx06xgCE/XawXnoHgV8xasGJvFdZ7cxVsX0unGB2rxWjwr+zI30nQPGwsKnuutb8B1HfRVPXFMXCwmtLR3ZiJRa6cim2u0tKBTN/5btYCWxIvQUH/SzbITf1iOknXX+ni9qiCDnb+YMffcfrcv/hZ0vxb6y9n1aEj/QfsZLS6zY4ZGdZ2nJz+8ZTHsMkTSkAdsxaXNHghq2ZdoOaqiPbdvV2Cq6pTL3N7xMgAsCrNTFxfUYp8zGp9jf9X/h2c/9v7AFtuwatKEmHO/nCkA22+CAl/VFSK8fTQgroDsey2nW4LtRY28bDn5/iGGFPrns6fIIFEfFfZ/kfxVbDd2YQb5GnG//bpvDu6rKS5uwVBfmLWYYvBqHa4+hkyeYDXRBBepr5hP8AKcdZueMGHIcuxxxkFaO4QQyfOtjzhZS6NzfrnnkHqLceF404kkXj4b325WalEaYx4cViOVERosRn49L4UiedmCfOhVgagJhYqsivgXyoTkSuezQBSqrT2PaTIkumWJnxKV4i+neZyS50dN60Yyc0abMQXfHBfkP523mKmrbyUS3hbLh5f1d05IIGwwFJ2j0oajfKP8CkecQ1V+KH5+RAcTfuvOHMENY4bCrGqhJd4fRyPyQH4sInjMwGaOYMlR4c7qjQdDJaf2rhjiYdDb+pEQVUHbg0huHGsqKCfdRLhrSB1So2BOGSrMeBXDivj6MewIE0xbdEa6i+w4FGqJcitFz+NI6Yx44yhUcdkFi+yKiWns/XL5RpNF/dV7jYpYe0sUTAvtNyGCVtUoC5xoKY6yO5sFhrqjRX3jAPyOy+4tZpYkrh50S6EZw30fUv0qnn9Mez4NuVq/nl3Dsk7+yYa8nNL/uys0GFMvYHDxWdPlog/hKuSzd1yEcTC/sHIBrpPr1KDA3Iu3Z1ezZvnQlZWHjivLijjtk6HCbPXGY1L0Zr80n9rknoY5f8QTjVPoWSaFTiYAUxduYaZLDeCID8QaD9VbhS5d+DvAiEXTJZpXr6/Y/qo4JMe+mmfoCobv0yKXg4/Fozt0ZZxTZQli7gq5fM02C8fRW4j7yN1l19X2QePRLgjnUJoz+a3jWTvMdXyUBPF7Lb8LWULwpnirkNpEPBk7RbalojunR+AmblRZIgg5VKcN6LwpR1/NZXwCAuvEpV6ChC6wq/xehjucTq8Ud7MdIrHSG0weiPWzjrFjSd5f8L2tD1OU39nGRVBdZV+l4MKqhlxantbJuSLDIlnwgnnl6wT87bEGJU+PmL5vDLGCfoefzRXObpTaB/g26XZ1DpGr2U+epLCzrBjG8NgCU1MRlyrNzB0dw5YKy5XhW8qUaUK5ubZJFJz/8OTvUMNqQZ8wAObzxLhFTYh0jVUm1RDZ55/RPsmtltcIpATLtX0qweUj6UaVTVgWAabPKB3ynM11XeEfCDV8ew6iMwQ0AVPacbZeQTvLZLHujiULrR0NVQh35bCZwvN7foIvVZCLLt0AEtV5ooPItzjsOIVZlNgfMJB3PrAIsdAHjldjlIujZzivTTSVoAgQFCspAcjhIXcT7yuJl0AVDja4XozKToGdWuW+UKoZHvNQAzqsUV9CLan+bsj+rUD3A7T0LwIx68QXKwtPAMPmdTgAK9T3HPhRyAWWlfLAWmF42GeS60Fh8rIrtePFxqaG6YmzogePLTTYPXwDxZEKPF9dvAZDVqIkIRETVuvDnr/j8Wz0CNokbo/8Z+w7+LDln30eR4pK0FgfVbzi6MY72Fo9AjJhn7NwUhPeMLtg9DrRmX80tAQ0HNbpyDUiVwbFi5Eb5xwoZLsOhboTg3LiI1aFW9Nq8PZqSg4izIx9U9NQeLstFMILgvgVlMRKWqOkouWyAI89aO+0/W/QP+5G5vk1pRQOjpDAOsvJqf8tubOVOBCw/3uGCu3W/H9oPUAOtKZlR/gZnQGq0VsozVvRGhxD+PPeWJz74XqfLjx21+l9Bd2JA1B7w0t5CtveFp9Ad7HEccc1HsqGEj7LmcWSp1BP1VVFTNzlPtKy9DVay68jHgE8F/KLbW5rUHSQI5PWrtktK1x7hQYQiobrLR+o9DCEjtbF4orxvzFs/4z65V+ntK9Pl22huhazJe0pXytMmQ0xODx2TvDAtfEwBqoYsbGLImHTdrJUfGPCmkZbY5TCcVECq27LsLgMlsM5e1/4gDVUyx3U2k+12pHSsFAdo5z4R+RfVJ3ihV4LSTgcEhKcHh4su3pufOSQO4eS5zlDo+/Patc/JdHRe9O1NRAwMVmsdxW5kFHvJOkRwpayJFAKa5787Vq7P386sFCSCO5q/OnXZPr/a2/vqZs3LeWwxt6hv8LJHRF58nGhON13ge/RiqF9jwYG7BZ5747d1X7JSOS2mLES/2wt7xLwYklR8uAlgo7RJhsEpuVpi8iYgzvUYiwqRyOhCVbScTqYTzDDVOV6xwZaIoVry8v8cYC4nZu7TCrD5IoF1XCPFln2s2NW7Buwe6wZlvkCr/bwvqB7hQFW+QOTekTY5QpwAplh0o2ZjU2Ao4l5bqve4eQW+aTSPDd6cFoopxwuedHInGQwX6W5mI4EnMjYjceIBAUKuTnH6sBZRQmVxUgddA46mOw8dY7GidAhw3LocFzggEcq+94oua65hdRwjrjOGv3wyQGWUyYwT1SlB1nNtB7TtMlMKiy6QBpyB7zgMMg+jrM6mTH2kXrg9nKwO0c5M38/Ef7LqUP4DLdLzda9oEN7iSY5BRxUnzwmSjhzzXm6UexzIpyyGRs3PVPC+enz7kXIPm3Pcly88QD4sJA3w0QHTZBjg0CRdzUvoSBABSCx4r0GhwaYJ/fGlRe599nNC0/VvWeAKE/SUmv1TsnwCRAZ2mzp63E/G9VDAddG0urTscKHgb2bjpalEUlaDnvAP2KO/GojqCLK8qn5FvzphMGfJ/DLuQm+Fv4Js0ZKd5Yw44gggFzvIB6fZVWF/lIErVDbhKbVtQ4k4zRXQxgBsVMdyPNR2QZCw/rZZWeyJUDyEoOweAYRL5WCsqEhFeNeTOxJ/nI2Mc7OtYR5HHS1qRZppB0dhhKboElKrfpbQoOvFhEqLaM6TJuIlHi73p0HR74cFGT7JjikB3ViG9UmpnpySqw5vHN0kjpeFscMOQcG/L6R6l/+iv9wL9Wn9YQrJdqemZZhjXzFdB8RGlNvlbMsPJddWKusTObiK+6R4RlFQLPIsZczxBJv34v6SCNPimrDoKg4jwBbpyegcb0nS9guyt8Y9LxB9FV8WnmbX76ygwFO2xMAU+bcGRjLEyI1XDCxZhFGmdcc02LXlfpxZOGOH5nISzzoyxk0EZ4kxqOHICY1QHNfOdwfFSX/2dlEmRNh9Jsyzs0fUNyWf4CNU1sYK7SfKBLddWh1FK0Kpxm3fUiNJpyKPU+b5RtspEqIJ0FEns0Oz2Inx6wM2XprEfOYlN97IDE/te4z7t1j9zxcu4NTN/XJmXaHpFTfcbjH6z5F0SoBnTjTarStaLJpPawrYVW6ZWJeia7ZrBQA20yEdTe7TXhQ6uIjIhfXCy/+lAy3tHN9eEPR3mF+W90VF7gbkwoo7+dKCrpfTghYzVZTL7rhciIfbSR4uK7S0ss4R912qecpxFWoq40CTMJchluPLsXhyOTUWa0K7bcf7atuIRr5CD5r+o7fPRZg2+UTkyFkfTaPT1RW7AhIQewhEu+Aq1XuE3dN7gIgFUKQk/Qel3CmMUyffeiomsY4feOHjt00ltN4mL5pGuvpyz504TBNd3MtMYZvSrfzqEulJCxN6W7VQ1y6WjLfRtAC2RYR1UYXlM8kMn340KF7Dnmc6as/dOSewxxnGofpm6ZRp2/+0PFhGqvpWz90oZrG22nanGKxQ8WyvLPNapv00D1SPOGHc48QItfw+xri0q1seL+hvhz9V1PCKoiEtujWErZO1ouoO79A9h4MjhACDmRgFibFztoFRFR2Bw01nq/yGq5+MbAJjkwQ+8ZF6rwKQUiRxAsjHSNpUghSDCjUdep44CMySviSlj/AmOi+iDXVGIdFwKWgf7meYNbAxkBCgCYzmdJC6BZq+BID+ifzyv2hkyHIghAS+vtmMOBkj4/NqeFckqSyUnan/Bx9kO2WKC1PW6isbUeU6pRJ8rvePYST+Mic7gBLnFzOC2bYrtVQrLqYdzq5tjTd7mZbh1C/D5BV1TartxapXofrW7eE+wGEwX65ic/C8Qsak+eOqXICXjxv5xY/JW+3GlKOO1nGZN3bcEHCBQmmsJsfYyKxn/xqMGk8GYywbfuY+0Tx7cZVvKW2QkvEX+HC2FGivkEC2UeEh/eg5gByZ2Lm5nmxilO516CVquLk6yI7BGyS+qogLA5PPS/iDLT8ELcpWQN9gIeWrklhS8ryijE5/jTMttn1Qc2vcGIuChe/Kv0NTQkb3l1kC1eG5KpLdOpSME0T62+igQGzTwy+Y/fz/eaYyToybzP2uzosADX9ys4tt2LQGK2j/S7BJlYrCVGuX0gdRdbvSYPqcdnDxKanqn1EMN2ogNxDqichF5fyETDJvjbpRIo8AOQR3+y2VrmF6JZjC7V+cniy+0zVi4hgK1Ie4T3T2nn3SXyOV6ortQ76Yeo3rfuXMrr4tYQfiWUgoKwSicAj+0AdrZkyUv/VbKKX22wMdaX1WTqkBWrapBKhuzWTOJj13HDa1ol2TZU2SVK0xsV+y4SB9ck0UXIH1leVnZNA+GOstQ+B4eYgAYxTrByqHzEDGJ9pq7cnAZL2Kj0LYXntHxBC6utz1oAq1s2/p2fRKv4660A8j4Cfh2zHIpNhd6eoCDAb0j53oqUiRgapDYw0R1L0XjoajqkPOMfgMTx9ah3yNCdxC1iNx5IG2kl/xAjm5j01mnaQ1JG77lsHRluREP5R/hdpO8v72PfAo/wABnP1ZnG1AdQFRzvQAGFsXjNHODY5hInzcd2Fn/CIJftT6eeJnu7jDmriJ+1cixdj0WUCw7isKC04020/wmn1vQ/3ymEX6P+aIm+tbpPDj82dKl+bifBw+eTi4BMrwUx81TpkkmjdC48O0OzA1tj6gmzn0CE0pDcS9ksHJtZBsXRhhi/Y+qqK7Qh1aMZ1EXZCVrqq35HevnwnqbhXnFJFMYV5uqcIAzIvvallX171z+sslHzTpewCbFmo64pH2f2DfZ4XNj822TfqJezFFGNzMCL/83npCPg3VPDKfw2ty/vY2hjXGxXvwwEpi37Og0y7DcyIoFPoKwE1PwQp46VbR5N8HmHAozRrlupJ42k6J9jEnpfA4DlDKFMBCWk+7ktiL3hrLInNHLvkrqR++clW6TmTE+gGPLAFZgv3ZIVCh1jDUgP6DAdTN9s5tGtSsgYrtpwkaKT1GVPD7DVc7q7R6b0UzNi9SLAk7tQKXqubg2AF6+tNBhMEIhRj5sXAlJvLDMyK4sHk7BOWKzl7tc6hTeGrkhdul/D3jeb/7ppOCu7Dv/w+X6/xyhzP0rckKQSEr8Rxi6SsDujO3JNyZI3jDv9cVIaNVg9KlvWM0IXaBcFqjBeTX8dUOBMwf7rKTrGu6btfyYiJHGEQixxyyMn66paEHWAxU+j1MACOHrhwUrpAQhblMOmNCRQ59ELTt3tQe3gTALQtP6w7/os74GAK4MXoIOXqQXUzmEAjom8fSC0Er06Td3Z2OhCIUAuW80SWzp7r8vOwlkIixENd3wuJVsflioFaJsNXRgK8EMWU8ABbsbJQUDHjWnMKLKlarjpCqJo23/GTYwUinpUc8LhokfdZQdU9PAWTamYltdDVl7wE55yp50B1ZgjRRpsGkiT0U4nqhygUIi4YJAKzuHjJMu99gd4OSRXc226t2Yfew9JUYbKGkDNBHGgvfPAKu1wAFrHB4L5RxeKQZgJ6uzvnywtz4UgeBR5FYkFcccmYSFWmSpu5KBaXloovbgqnOQLz3GA6ODH2NYgZJOrl8CXF09kmDItpXVPAj2QuicRse0Y7NhfWT2Qyija0bklZJMLx8pKr4mkyyywj9/dObyOOYB6JRkt/ivlrsdarC/j5zGHEtEjy9u+cOc1Zg4RW8JvwyE7vJeFdb+Fm1Z1zDVVEb/wqpEhr08nTMFWanJPhG3CTDGxsnByjuLaiqzRwtEyU5gwY+r3yZHtTtY0UiJwPMqJBFir1MNzdj4qWcVbtSHdvCcysiolwNGNHZmh1/8XqbwC4hVL5adk1GDuaFoWfU7B19FTfDKduB2XCbFJShUlHmc/BXknZuYSJN06heQSOzNwrCwFzz251/Izem6ZwHudQSb3CtUMw92WcuMC+KpoUc4nl8sRRT79KjdnjYjPBGRvdc1m4B87Y9Q/OKAuHORvns1e4fpjlAWZUwTHoBS8bg1oYksnMRW0u/+BcgvewBLE+tPn6DrGbhd+Z5dETd78viIQ7/zioBn/9+4NgFbDq1L8NW8r8zSvJJcMzTyAmS9T3YiyuJwx3uNJPBkzLc21PKQlX/FxtffR5Gpju/patkivekgMgVDvZJcCKmawwhuZCHAEk2qlu8V0ktrI4VMt46ejcEGVLJuz3L+e2SnATgpv7AIsp4u/Uf2ibG/9i8zYoe2MGAVyqU06Ko5YRqbHuLhEqQwFfA08TquTmrDXh2rgutURR58Cw9dyMBKRR6u6RG6bg1gKFnw1JwZHJU9LjMnBOTcOlQpRBwCKb0e6roydiQqJBCZdK6fV1varsZshHQhQ3GgjDlym3xDYzvP1AW0/alpbxstxyhwjrR0Df21K+oNWpYllS7DoPbFd90rLi5kIh7Wc0ifyvW2S/W0QhaSgY4XC8zWN2RbhztaHvgYow8aQfV44FUlFZXfZ4gkVFYduy6YTWRMCHuGRFbf5wpDaNvNqB8KkhD6cw/NueTGZ6kRmtbDhyER3hQC88ceeEwGf5GnTBjemMPidhyO81fIINu1adeN0cp20bjOstbGG9WZfzTcH8UosFzD9+Ag/3jWJfSeNwmX5+6K2VxFzLBw8fUGBb037OPeNrL60/9Q45oiBnTl3czMR9svNmpAhUg/QVFjwbq4awka9P2LqxL1T4zRR9O99+DnHDHV5derJEXfVES5iGN6ysNAhCykBx82rwrgoBC6ZZ0ijxdYynAsaeaU8Jz/Yroul6ik7awB5QIFHBfKiAenu9ysWPpesOiziX7PGr1LT4FyoKP5Eb67o6bASHiDI199lVb1UcKrUexBiv0oA7Swrp1CFj6XZ2zR5OX/ETvclrFw326HrLdJ9tOQUSOw0e5Zu5MzIiIoQBsHZjVU8vfodXyPnXRQzdUOoJmI7F+eoT2yqc5Dcm+cjs4p9snrE33zh/mMnehjc3Ugr+acj4WFPdmboorLSqXGoSZkJGEg2EZsbqipMb1qDjw+N4yHC3L75mZLVNXfAHM5HUrI1+ICT2EZIeQ0Z4NYL46CyCE/b4SE7E9SoTYvJdbUPLFvO5a6yuqkaz7HLKNdC2+6iy1+54+/goFsxVrDCXBVqEj5xxLbrhlYqulHdWFmA0jOCs8P9gj7p4eEyhFBs2NLlsfkvzYTPuLHcvL2ln4n7VMfnGexGU4joUvm9JiyG+CGaZPv1zFSIcdM5PpF1cmeyizaCTbWz0+YEkqgxG8PUpNbWGfOC+bG39Tj+Plw9aCBfEmKsX2XHdJQCfvxhtXTbtjhLZ6vOmcZ9I7jnCsVzrVKULhqGlGRbhVddPhJW62DMJ2rNw50YP7Tn1zP0dBgp7ioTO/lNvTXhxvYgwU/h+Ml3opFe42IoQUXZP+/J724I8QtpbKRxnmuWEbL19T6zakXjKCrSXwyGzl9n4ALpqRfaUixqwKkm+yVqRHkO55yMwfVKn6hyefRl7zq5a1pc6yv8V4EV/mKlqdU0azczu3biF5NzMqqBhfsPK68ABWZCwVqrKPL/5YSEfosO6sydsnYyHCmmxq94yC52/MARyNcD/qE8IDxHSRK9mFmg2GD0k8hR9m0s7fjFfL+H5bzUn/8QvCWxh1/V+1bPBwxbW4HqnIalwUcPR7Ph6lFlAGNBG3fRxDJk1pHwt00m7v2FjY0ZD3uJnwvzGWNEfEHuTJtv2MmNjj9LDTA6QptIjzygrtfFXs421V+mmtleBrtrGo5v+kJiJ672XyFFCabqhRWAsXGLqB3pD13lB4M823HA2ZGrbyy1UsntFOLve99ccihIegLcUMzFij72QqTQDvcaH8zzXwoTitnHsfIbT0cMObEKl9Cl/+w3RyQ2G8DAq0NnvgfymdYTFluGq8nKJGqO7cpu+QV0coLE2c77JvmCzoF54GGVqhsigr0wc4HxFLsamuCcQJjJqNw1CzDxXzTFsoouhGoRNfuNE3CXOmbqnA9P5I0Bm42t54fG1D+YJEj0cgEI/bhodhkTHqVXREOnBF1eeV/J/HTdgQvTgKOnBNz9F7GBEDGpx6sFB0jZubR5D4qzAQFHCGaosAgSFb9WaMo2EkjAcrYEYsCSzoRz2fymXEZ9EGkBTzio4Yp2YmUMOwfCWkYls7yrENZGhKUxqDXOTzXxnSVEQE4nyXNlUwY1E9lQMyRFtOlN3JSX+rDAyDdloICMQVSnzM16snZAJh2Ptprd0H6YflpAWM5l9NO3iyHkDN5Zj7c0dFu3bSO6LyIRiNTHAzN+vO+BirWDx4GhBXbf45VUpyTD69PIpXEzaKy9lv8hqwnoe/ELKO1Zhgr5zEcGfTlMvcsxNUTxqhgyf5CN4/01cPM/wDrrfb638rwu3aACGGWzCwehN4c4OFwL14mbdzjqqjVdqGC7jY2O8xCmyu0UGry+uzFs1xnQZf5YCQOuCFaDYCLR6rlgTG3HI/6RuLW9QJAv9tLnVjJcldfigjbV7YjTfeIoOFpKf19M2aWnnuCRxry5m29ICz3WzxJv8I8rdg5ZNe1dYqMsa1SERofeQMO27yg8j7uCwo7rw8nJKVNDUiUy3N8tS28hnzxVng08N81k4ZfHtXOFzgrAb6PADtpHaYr21NLVUow9ZVW5r01J2BkYkkIT8WIvY9SMNJ2R+jiKOSEthQNoI5WaeLkhjDY+F65qbxK5j1prKRzum9rFk9823Yqp9pjI03Tha8nszW1GOxj7fKgHKFYTMoB/UFeOORQw/zQzcKu78ykJghqhvMEhJ0vusigMwcen7QPQuBpEgX5oi5YHhLsWeMWfFfv7pYnSHMlHn22Ss5EXh3ftCdAd1IiM0qOVRVQHRva+i+ZC04Rx3mzyafYLpZy11C4vEC7lQwt5yYmS8YjJresnvTnADvY86FIdN4N4JkjlF0ipFNrIm61aT1F5j9MRVbygNyILnuCZxzkQoSdU+NMDMxrML8ePuKULQqKMP74XudQSGX2lsSHziqlTBEHCUoDrmE25toToSwhTau+EU3LM61hmJt9nx4+dvjoVNTsfh9/mp/Huxi9n1vkSSmkM6iwZxA1+LcJq+FwhRa6YTpFqWE/upAL561VAF7R+iUJO5GyobP/ZPeEAbeRWQqNkS1DuZmcFDO1pl/Hj0vqbiyQnjVHZyK5Z5jurUk+UGWQoBPUvryD9rUqo7z4pk4Tj0CWZx1ucYaygKUKtLUM3U8FiLmax2QEjLFNXnOitiJ0YtszTFmiubY7Sf2jnieSU0WSOBTa3A+JJmo0VvGdIMgbNmisZ0XUYG2ChpAUIdB5ZJtwkBUnw/UFoI0jJ3gdXA0fBINgIX61kGHhDLA9Zu0S2awbkvgnam5nSbVqS1XhOAVpwzhvKfdgQGNoruEAX7Ja9wW/9kVuad+4NTNU2cZLF2013sRDB75o/5/Wf2MJtgjZuu1nED9gzrGtfefTzsdzzLbANq86nJ2z8hNO+T0fLoZgzq+GQS3/3Qdc+hyouuwP4kaL1gbij/PgZIdoW8mb0sDiUbxRwkNBnPx4LSIKpnqytjNPslUNUfEOSzcd3L8Y2YMTtfVzvTkfWqKg2YR5qVWdma0+dVbpsZgU/pVOPgiNJEDWJS4EjvNV/apiC2YHhZfvGmK+ndyFxLRofEm7F8gmkuyFTv+cgEVUqGzaRsSsPY3rN0p4aU31PbVl6PIzR+qkmjbyICC7s/iasZ7PMpgu7lKEiWyfcc6qmP8JPpwmQ3liSiRde4CkqQnfcWDkUUEcowlMu1UBbj/e62LVrGPbVE+sADjqM2CyiyCNgsHjl9TMu/AJGpkl1kDDpTp6F3qDwBiqbaZofsQs34yDZFRLtQ6wRNTcTqC5w+IuoaBlpQ4I6820eX5Ax9+NlT6ylSLRfV99HaJZjO+n7DgGaxVZRSLdjidlkisfk1JD/Xs+OpbmzKSPRQwUKJsvpqFZUMEIRG9PzXitu1RlgCP+XJ+M/GhuPGHi59GpG2uPxrGXHDB5j1DsaG9CxhS609lyDpasjb6nad+cxlZMhWJC/x87pfC1Ha872M+Skev3IUi0T4H2qOJCrkYM/K72ioDX2dDDx/jDmoJBUp+6BcKNKR65JhkWB2xObEqJbnBvZmoWFmq9BkOZ+NLZrulilpevpc/iheeJaBa5qyygpl9culQm+VhotLJUfpKUaxMpssG8ocPWRYthYIdMgtrLFXHCFZW8hadQVhtd29DvyK1nHWs5/1m9kVrZeiVOkBDefRHhfZ9LEqgII0osSVfUL8OInq1NQQoJ5sO+7UgSZnBaaHXOAbLBYRfA0I8IcH/U3jw9IfScO9ORWU81kYlV0xynUM1VBwxvKjoeXOaXWmSMcxdIkbWcX121yREMNRv924MSqeX2ePuFx5HWIUV32kn2rvf8QMRWH8gI+9qNACivgCbvdxa63mYaFEIs9WFaMtPBZn4AtrbXWdGyQixD7eUucBQeZ11Z3EU6U5BJWDhMizRPZo5fMnKYPr7Tqt9q8aoj+oVPzfmUTIvRg1jiOQXyggTYUAj+eK/IJ0L1SPnJrIklrELDvsYFyDIqSSN7vYCNlNSTDsW5Ery7ooomLbnz/BSsRASBJSVuMi56nw/VoC9SZfotcR0NrByzXZY75GU6BVJMMdyi71OtgGBBBB+t1Bb/hNHfLHlk7xGaEhZ90UeH8uBtFCqbTlWzcblBMgLwspy4sntHPEpoHINSoVokKauYV0IwiseZh0Ayq5qMt9bFuBIU9fbSkCwsv+F/uLdMxDCXSQV+jVl7iWWhIHF8cZ/EwiY/hN23hvMYMBns16JuFvLkH6j6DREflr7dzhgDQgz3FdK/96z9YcJXNAqbgzi6+r61nQZGesNSxyR6Ie9s4QuH3BIqZNysznhKkjT4YFJXIrhUfg0sLHPKkSfZy0X8zvZ9UcOPyRSOQBFbq1jFV75edTv4fc4BYBwlASCG8cmbgJM4yZp+WC3s4d/ZhqKzx0qeAO5ILecCJ0Vr1kY1njgZa3y+0b/zRa6djA3wmxstGqLl+0/ceT9XycysivPxFydwtZ677GxRMDD0yY6L1rwtywKH/WKZHgZftksK/1WbnpvZDDP8LyllATG5pA8NVOei65/fBqZGvzI0d87zsxZ1MdWl2/dnSXFqTKYMGdma9WETG8c9Fbasz90RjtAmkDsuB0ADuETJAwtD/MeKj7ZbZ03cd+hxWfbJY23ZCcjf6snS0QhB9MR02QUgBup6yN0xHDlFGhGhpXnu8irAVGCiSRGZ4FP3vd/3Op47Tc2tPBqAqIW0q6WwSQ2eOZUlKJxCsxnJAWVucU5MgI00U2i7oB+NkO9nqF2D9Ik+C1DyJKGEHppcVKa3x6BS8TY4GXl3paquTm92CmmK0+zJu9GP0J9rJisj1Z73R7d/MT0j0iXbNMOlSvqR+UQ7shdJMnDKwh61jZyXZmQI0WviDXnPOjfE92p4xynEnvNVBrIBJE7S2vTA/sK4o5fHXzvtCOkWc32dMOhosNLVWndQNLPM+Mtd31qvH15kaRp/jIl1XDB1QBdSRvchYNMP3cyYXiHPzKa5zQOmwP8J1xaZLC3+AJj3Yo/A5wx3FxIzQ6xntnLOk2n5MAyy2yEFzEMsysym9X33DgLFhlhjhY0hL2oCVmyV/esDD4IeBLnz/79qWg+uGy9RlleYE7IA4bXgsdSbddEbMVyTQghGy7zGM7Tt0TnNw2nJNYmdv+7eR0JwZR8H2s5XDPxpE9eloVWGc22mTahszAJ9obNrRm9kon0re9WgFbkTHreEcRIGBVsN6ufT/srdohCIPdvPT7Us8KpjjWY0L40YarlCgm6cMKf4YPGo+qc5hy0Lzc+S5M0NaZc8xMu1d9c2seWlkY9JJRKth0njkPcaSxkCntfwaF5vZ0LZ+Y4QnvcP36L2Q/9R4/S6pjRFnHquoeUsVC09t1PAx5+8/+hoWYwrKAgWscKwBbjAa+9sbFuGcGPiwEYLRrj7Q77DoHx170cqt2A8xHbrH/Gndm0p+zF+bCMqlBLI8DVKT+ACm9risk2rZmogVJ73pgbB1iUDpZpLAHLFRO8KetoaN1rektSUagSCCd70qfft8LNRwrI9e9mg+hZaq5ASYWlZD+xRlyxg7gIv6XPBRpwtEiRsPGRaKneZJBf3h4XwSGdWxQ4flgpfVY9dbjumDlcvezkWhek1jTQFGydQvBUJLbRNzkgnRkXrJXvgxzS/vjWbvl7fevf4bZn2J6pqWFBWfKP8pKWR41jA2FVzszIoMw4BxvbFDY6hZbE/bu7W8LMUkL/bYZNJzKGo31Env4qFYCU9YtFI56xFwnEywp0jK5JZBmsqUJ7an9JG0LJ1w/tMMOEG2RL5gd+DFWx1wGTW15pJaxA0WrkYrJ0PXo+Vl4BIB5AVojd86TylIuDT5itIDdN7BGFQ7Ho9wKLNOHT76tlU/ZZuzJhgGsHhj7cuPKiJwtdz21qKpDyivo78hjFd9WsJK/g0hGCMGhl5T2KJTYu56Y0wlqoP54FgOJ5g9e8Q9/4k6ujIriesFULVli/HX+4f2skoT/K7oKxO+J17AdHm6albrxQo9Z5G6NOENf38PqtjYCUoBezLjFbgxR4u4Qp+7dViL56fa9+v+uZiACA4IwwoCVl1U6JVC6kEu7EIC3FgIOBCzHcEXfFE0M53lPHtKolEhnY1LX/TN8qFlLjLUwrXYhthrbgTHh6np/pcwjTWyaFzAVoi76dgUsTqMlO5p7FVkugdGUSF+MHIuERpReb2Bf6Mn5fAH0/VfeCKR0d2fBy5KZg06ee1OitmFbnxMTaHC2qyYA/fAmsXREl53wTspxCtwGO90SujkNwYH1zCVQtzGJ8NKhlBvxdWTRbiEQHWH6zFifkdR4bXTUCJMXTWkn9gZivqHlvCAPaXDwFv7qMC5RpzAB1/lz5+/JHjVdCmoKYnA5kq33662cw7bCMuNDXfXW2kLtWWGVWcUJffhcpXQVlmEMi7XOBaazW3AeoxcWWc1IJsTKngX7AwWSuF6CErRUJTb124D1eTEjU7zmmtTCQx16DQnydnqiPX29N4AeH6ytPcjmTKa0WB4jRAwIMaW8SowsyqezAgllSXAcZJRwz8CtZP1bc6kB6QGYEjGibVW+h+5B1JifaQho4ASvmwwE9rQpyjqiqVlwxZ810ayoJQeIFOINjL1M0sP67VkNsVAKGhyCvJBl53TdI/5txJL5rkSrn73wzVN1s31Nm7zGNjVVp32wxwl0hRgELRJs15lPywQ/rxUvxNQrj7RNMLW76aPK4UA8DiWu9a/43kkmxudZSorAJ6SMXkVCmmT+JD+3fLJv88LhNKF6S1ndH08as4YTO6TVcxp5CcAnrMpFREPcOFj3IOQD6BBHBjWOcdI9M1aRkb7dbkwwtav3zgZj+IYiDYpA4Sc4zJQ6AU95chHulw2+oZWCtSrTSHMjehBkPd70WZUHjSDV4hRhK/8Cb0zD2kK5HiWD6C7zfzyPYqODJCnFcaQZoWVCQhQGmaU4JVA1AV3YNG040RLanqRjMJYUyp4TYe44UIInnG0WVug7Q5KiTwP7mmLNzAjzZ30am1PPAjULFTQA0DiPMremXsqUo7zYKNMqD6xcGpyZTvkUFeYKAvrp2SSJhxjfXo9kKaCphIzvDWiEyqVi7r/PF0XechTtWkAqyzL8xtUU9RPklC22HK2A4u4SmpP1ULuQorAEyOLKvMVzkUf1jmVH0tHGvrz0z9WoBskUgyaB2uCgMcA+GSyUwtEfN8Q36WS063Uo9HWxiTQmMIr2pmvBIHEL9KMOb7CmA/1BJ113ovFFILGnQzHPuLRqIVhmHc/Tqi+p6YzquCJGdZJj/Uyz44NTvCwUDdfoPqxlUt4GyPm8Bo4X4c9HxsZYK1hd6uBaR24zb7omEUJ2/a6Ia5oApaHjsI/0OCXD3ObTJF9CS/9iZXaeL2g4+eftofdeIWQ50sFeq8YEgudTDBL7YrfXwq8xFrmAZIT0Ituw4IgmbhN/TkGtschMgs606Jfvq1f5/SFROy4AllQ1PpvtW6coBbfEyWOBka7UYCX4I5CNmoMo/rC33B0628Ld2RVJFk6PXnBRn1TxywihXluTXppiLqx3nBKVdMZzO1ReciUi0GigPMHP+P8SGTtOb8xV5qXIpFC7yCtW4jcqZj3cvau9fNKX5bEhWXWmF6809HqvCw1109diRZJMkJDcJWvoDjrHUUWGFP96wSeJyxjZh1uJj5eXjYhD4CGtmLrRDl1cxJM3Osd42kmc9pX1A4uTsg2kK5z6zBPtUgtoU9IR2xKy49EZI8dUsL/ClgFC3Ir3QxcTXd8cai1bjBpEm8OiUVR9Tokhz+JyMud1k4YGRtnm8PVMPgJUHMHbsHEWZkz2Mb+Q4kmYl+9JeysNDH1Rdw6zA0K5b2j2rD53aftoTkKQ4A9g38tEvMI36XUhu27oMNSGi1zXr9vOgFLpotvHfWQEs71qoxYxcAicHqPGNx31MaKb+qXf6Eh+TboQjDpGqPK4ROSf35CtVHNBlqofL/uxPSVrNCjf0d1mWYtEziRRzllgFYmhhQnur4YcdOyuq2gswdqtp66dd+9HVQevhjVZMDaui8ZCTaY1NHtaQTKWh2bwZXkpOS5Hgopl4if2V09KsNJx5ia6d4lFkSuh4KHkOCbQ6+RrTrAAUwzZe1u3ZZs8tAiBi9DJk7LEEOKwhS1rI9YjpFvfK+Qu2Q8BI+diFI1q4pG9MiWTDopNkRHCUsHkbHBoKbXa+o4wrIEDxWLPxgTOspQyN5pYrhjOCUIBP5oHN7L2gZTpappn5uo21ant3wcZG+riuh+NU2bsUrV16d7eXF0SRetk6xTZYWaB3deqGISSoQRGLpAol5eRtOjh5FsjGw9setIx9xNnJxaMdM6nn019GyNvl9pq4xN4oTYTuXwfGBR+eYhEBHwdmX6U8v2mmtvDGXpqEwFZrtmBNSNqoWCQoTUXgyK80xDDyEqA+0w5cdOnaB+dqwV2wJXp6PTci3UeR+0i6PDKdRTBzoyVUY7i4oFdM5aernny0GLb0jjGdBgDoxBED9PlezK1wLh+DBk7wWI6AtsgEqGKW7IE6WcOCUS5QyX4JSA8JyDKN0/CkqpJsPjKVmHP2DMQrtZxik4zKfGVbbBYFYPE+NukEV+gPaSgGp8T6mlnUvhJFFR7Y3220ejKnhc/szq/soPrAjmwLmfb67i+ijznhKeaF9pZVZSR8lqLVXvFO/HtaZeY17dcXJFT2DwFXoFWEuNK0CJynBaNvXZAlobjM0qsGDht9QQN1JZGcxHXo067rshSY+84gzJUS8eid1xAFNL1KUY5b1H8Gu/KwhPCgQechNhBpUFnIlY+iCtPBw7FFkR3wX7UWqPGSNhfUvBxr0l/O4V3+/18jxXFfrrbynHfw3Fgr+nW4Isdd0lOD8ut+bz9PUUEURjyIrk1DLm5m8VnBZ9rUjbk+CmmAiNeWV2MrRlXvnNROcPI/E55w/iAcgkYDkMWzgWhywmG1Yu1ZwpOgSm9Ro39UY7PJYhKHgPikQmkLMp53iIurkZ0bkLNFwuPsFIQ7rnQdo5cNPdJdTXdnrcF0Xs0LI2cRVLufSEMdTNhtCH1jr5fRIp9O9xttbaEhkN2EhO1SGKZdj/oHEj07tV4xCE9Nq058AEXDIy+hjgW6VwSi/aPKNnWpHIERU6IA69pgEtWx4ZKoqJWQH3E6wBV4InyP7NOHvrTo67xqcL+Gjc8XLf96qSmRESHm+thLSVFATgiAHUsoy89+0Z4O1gnjMvBdM/ycEKnjayiClOWuXv8a59DyAE5X6nszfithCHR9WyU5wdmT0yd8LEem/C4QecNOv6hfgJcvI6FsVdr3RI0TytOHVKFyYLsqqDY6VQrmjfiE/YXLNLYqqxjo56WWliABuFhiVVzFSSEosd0oSZBYbJ6G/vFvf2KhEDeWehWRVI8avMYjR2HECYyxrnbUv0TOoB56s+c8JmdKVaK/pz9KeTo8R5OFmXVdie1I5AxyUE312Ck4fXnPm4ExouwUcfMbJhfEefSzEUslZgIuPHfoGkNuIFXh1SVr/G9C8Zac0a7UEVj9vdkOENrOazdcet8H13gGkJF3Y4oGyqQ2QyIg0iMOt/cdYpLDGjAjFEH18PekLKJR/6AqeGCYPfGL+rKjjVlXCW+FA4AaEDApVZLfNkoKoKmMJ55MSKghByxAm0bWvSIZ/KAi6Xe2gR01ft2LoxLgkipLETml+yt7jEesvvKerkBd4K5xDblEcLFN0TeI8u6zbjT5RDOs24UjMVqr7wAvkkrCv5pBL1NaJ7zavJ8ueNthz80NKA/UXR6v5eXEePt5JM9zQ3EZN3/k+UNYcRw2gQ09GHV9LbDfJqEFxFkNAPfwhc0QlefrPqmei1a94j5owd0HgDhWPvDSDmHRzRmWiO+Oo4aV2ENrtIm8oS9uJVq9+NsPtwwj1hrmrcHASj/daoIsHByinthQYTY9OqeF7rF3TmD5Lk3noC2f1P/CC2ZfablMvT4NuMupo8ePfNPNcSVkP1aMo2TUVb32tfUT1YHJuFpKwx0Se7tHtkrl/cozyOBdyyvnx//XnjVpkbx0XtquHXar/KgwmgMOSRxseJGOVrO0l8JxBqRvdeB2g+e1KwR69B9vk0uSEvbKF11egKoVo6/cQ6u8abgkbBOw7APGGSmXAfibU2VzIUPa7vj2XT0Q/s+bhRWQN32WxqOfx/fUQ0Tta6Hu0Af/6Z11Tecu95Bpw0EtSnKnRpAIq3Bq85jKaqv2nmtJLg+rQhOzR3Pfk4GapwhTQjVAVg6HZL3uvJCaBz9vD6jAL2FvWqr3XoiZuKzkerb9ZNh3CqC9U3KsyfTKCKSknqzSJwJ+aijnsosxoWqVdc1GluO7edZY9RsY2sH7Q/OFxyrdvKFJHkW2uaCxAaRquEwfCuRCkP9IYgGjzhQcm1KhzpCt/Rqrdk90AGIu7tkB6tmU4QV23/avQpuNPdQnVZJGUihcI/G6wFLK4/qTrH3y05Swfk+mgjsPFQRMkK81Mc2zph2AW0p6HMA1q0fgRxwHhSrwomPk+pkm7oMH1znhnKvfRn+xKQcPchlz61eFS7tTG5Hmh3NN736/JZNnubWMhTI5vXx3S15bmIkd3ihxmbp6+q7URk39J3/+sOJcjQFJkfyPRaXMyqyaEWA0Uu3Hj9S0UhdKWXBkEEWTZHK6TAp3G8OBXtU+y8cKNLPqCoQh1h3VzFygdQY50psGzL17FHTg1TMzPsIQeHQMoF7Pp3y7Af26AX9PTrybLOT98lOrpM/SZK5jjfUjLANE6nJBQ5etuHu+XJY5lSMopolK7CAMCO7YNwLP0y+VsWqo+Gy3SWWX11sGO72uhqF3jDLIF2BFrTndiL66A+18vXo29Bs1p63wyJ59biV7dwqSd7Dt7O93dcvqqVc0OQk/MHurMW6duiNQF5eTMJ+c4bHVE+xuuGT0yEumpiu43nV8zo2zxefXDv8Yc66Au2D/rC///PcW4aLXociZmjDq2zk7fTi6/Isl2Gv9UjHWazoueCX40+b7sgyUtUSaTK2YzGxk6shdohMPXAlbyd1ke23+6oSeyAvm4jLLXZG33kpnJDma7AU2Cow0rPeLL19Pu/WFnCQ8juec9/FUpXacdzKcZvxFTYDh3PHndt5662TX10Qj1s6y5M6XNEom4wu1nruEI7IImPuHQssz0gHp9mBZ1QyTAudLR3gzy12txBzgqnG8riqHc4mYvDdm+LSShReMDIUNQmqYAWuuWT2flL91BFGFtEUtGAevyTqNCNUHL2sFoXRSc8yZ4YJQQ5O2F6UgmSht102KHXJwhUalyYtNxnngm6+WjVHn+gAllIOFyhABcjhYSoqNF74IPajmN61vzFJgjl1z60NncMEeAwz31PRhGpjt7tE8ZExZ82wys44t0SIz9hIahbhqr4reh41kHfCRpFaZQ6mRA8VFP9KqO71i1bKsjWPj3XD+zeVylSryrOm0mBj64NTAI+kdQJoHFpzaaoC4A+ezNg+9uALL/zNa2HeSwe9EJP9UBI+9TPsG/HU0+Mgt1DHIxY5Aog21q1yQxzLnls/peDk1H19vJyFfb9nYZJkOwTosu/24rh8KepMgKQ/Pi1aEyMGA987OouSGj2vkZN82g5sV+VAIUXaprlEY2SAqG0zuBwQ4m5leZc46wvD6C8Ipg/LG+8hF++Iqvlce+TQlAYk/PRV6qWTe59elBKTwgUW3Q2SRzE/u+nu5BzFi1N+GRd/he5PAXCLjVktEvlzv9dUpQfp8bD55iL6hztSAhQkQH22+ETW6R06e+jrZ603hxAC45qp2hsHOncwwEk22LZDSS7JkqStT7JeQ+lZaQnpZ5CdtbECS/phhSZPCfRm8CMGxVJ4H1gPaPxnCWH1y+7oLwutBaQotFiQkekQi+cKf5Vhz6cbcHYN5nxIwHbStX+rM6jyQQgOuOQ4uW4nZQGKlo87eUWcFxA7m+4H8VwtUSqQWshQCDXgELQZdXo0I6O2xSdfc9tbxyUYD8sNWNlmJVoc9iBSBf3Xq57y4jN5vyrPsWh39QsXhBsVH63GHMrOJOtsk1lvmIvncZR4wPdf+OTwt0laDU7FYeWDO0LYlfpH5UYj9jM0l7SH1Qor17bGz5oz3CAjhpfvoV9O71X0WGYLDJxp7763BppnBdJeiLQn6ZPAqFSdp1YDZW93csd8C32gomtU8aD2K1ewE92I8UT0osItVyFgPELtYp+BnaqeJkd0CtF5Dqs/07gK6mXynHDtPVtZ7cZm6O1gDpCXgJHsIRrb3GJ2woPRObAhJko7pPRfJOszyWVPGsjM9WCsliXjNCT2IY5Y4op1nzywIa7fQjw5gR4tvWTkc3dnLH2Mk/ROsJrOLRApW/meHHxQM4CRkC5QhDZcb8ljmtgxk4TFQh6vr6i4AF4nvnYqFL/6Jy978J5/HuYTIEeCygPM5qyNUsmUGBRxn+PldokubiM9D4JMi7j0Qj7UpHNQQbGgRi3Dm6nGf99V9P55uq8VhA/Qh+BQTPUPjGxCPHMLXrEgr3cHBUuD/vQhMJdmHburfqFWdftqxpb0l5oiu67aNsiI95PKAhDpdzlZ9yLzBO5mHOOMj8wJJccfkj76bH0yjwErWuD9de5AOaXjH89B7MRyn99qBeptR1deMyLNq9I15fXVc4mCvWnjJ//xFMVHwx0f5EdyD2rDno4Bk/CZIhvS13LKeS2OohitOBLsFj+z9tp+Q337Fr2A0gRit+bmfnnszKZsE/OeKTf5XmBM/cbsuoaOPL8y367wQfXXMzSFDuBFEYB6Cq55vXCgtu9x/YDSN+161bquiIogMvcJDpbf/c7uq/SviytWxiTyD8hLStMuUZAOnsnYxp4dQqh+8bsQvH+8MFBw3IkvCenlaUzh2IcXR75lZAly8F01DOiXaFIcN/338J2Yyc6oO1wrzxY6VsiDDC0GG2fvjBIr5G5mQGzEs8upxmoLrHFHnNvKYP8xtX7ctM/l1JM+zkBVkcRM+OkyrokMHQFFd121DTzDGmdkaWPZ0KZ2H1PVCjahFnYes5u3J7+AR/dyeok1oXM5GCBCf1lKRA5nKBKLppifG4JlEhh/m23kVFwxbj5SiQyRr1df5hFbuZjzpEDz8Q88+kG1Pyutv6yOUJ9MIeck+IriO2oKr97j2dGGENkFMOOCK54vMl3g5YeH0fw6vqZNccVK3RDrG6fhwRz0VGp3sMJT2vOmQjelkVt5fAz7cAo6H/Y1tQNfys9fyQjiQhFiRj1PZxdKHo1SoYUXXQ8pgK6wOdjc9cIfXsQFE2+id6/LWGfhSaFZriSSguzpKQzxL8ibBXy7qMym9P5wkJDDhTVXXjmvjqqm6+pfzl9oddHQaJyeiwdNFbm6SoKnSS9me4sOc+fjCpg1ZTtbepVGMzUBRwDjkI2ht6pq7bTIn6Zv2iGhZ6taQ9F5F5kSgXBGmnrExvBSlrpDkRrR2sJOqei7njAHFprzD1zxnx+O3y4G3t049fm9BIWfdEgbZYEiUJU1QEgTWy1UOdH/qZoqUOPW+gzfYU2AKc1G+ljx4DU8nA9iEedvrXpCyKnOZnAS2W9pgTIPfGczRy/46urmkNLU7ZkVRy3XSvgsyDW7rF0GEtFwVNsETGrONxsuJI8ccFu/5UHO+if1N43cv86tI5thcYz+eHbtlXRi7URkgBWPriP6HFXfSTtZltbNFxIui/utWuAEqtSkRon97bcPk/CCjl7seBdFavdch1c5iXk/VV/udev0SYVWWwCH4tagseYSChWsY6FxWrruICj4gj7N3vPVo+QHOXhqJkFzNaX7K+h1L6ReIWljWeSOGQ/euPpl8yBUT9vwCp+AtKbIl+BDAFfS08KWQ6/TiqFxv50n94pmsE6VeMCteY2SS9GOP1r0MbYB64Px9iYsvUf16T36m5HpjImaDpPyyvHEecDiiF1QW7Kw5mnimF85PWhQlZOBemRx+Tq1b5ACR62jvx1/Icz4xPPrrhe+35BjBIH6i49mlK4jfyUcKO3171c51F2qd+PBQEBY9ln3TrB2WGd8+9yaWw6ZOOkN3terVa+IqO4FivARalc3dPqsMtNDQlaoiAAg4OD3X0g0Sw8K22nU3WP7R30DMtYBpTmXbln2PbS0UtzbriD1fDVvUxJ1X+1oCkOCD8dx6dZ90mv2PvCNmSEa5U3kuhhLOF4nd7OKETtkUTu8pFy2A0BBKP5Km1HKww06buHvpNxVeuX5WpZDlCF8aM280E0lyVoaL/U1jZGn3qptAiF2jQmpsN94xZJvz2uDo+b7S69n9ewohqTWjMw/nA5+jmu/iA/i7g8rY9z9m21OzqL82V5pC+cHR0so184VNmnY4hhrl4fCTxwcwMWK/szbtVghBW0+XedOb0mb+nQ6+FTtjXaL+q31k6Imds40JO1RNB09jwAKPhEazRGXLoMCdZKMJTbjfPCJFolotrCKEbxH8yYaPKw4UGrvwtt7NUBjsJ+L3n88ZlA0k/sSpggBPzpoJPVf3SHmQR+GmMNRoCqc6wBKwCReI/wGi5EI+nJsH4WjcBAVPAc/mGjzeQVFg90V6OiYMNQa2kWcPIqyK3QG59YoooOIOLq8Hbomf5g77IroFNQy6NiBn4XpOgj6D/JRD0GWyOftxozQkpt7HSapHvw4AHEYRAZ6zzIuZbevDoWVcVKpW8crFHYfwlgZhetxSl+8kYhFfcQPfhsZ8U6xEzbfGBZrU1fRyFytEwErVNj+aVasTfQ5q4jObjKFpEXdNeENxFiRoa/dyEuD2slxRL97pTQspezPuhocTylyiM4dEaRcROuIsJ9a+mJoUDpgO7qsBzPrCvQmyxWt8iHf4IuCGwi19IboofaaxAF+H/B5zTFsya3KwkrCkOUowFQW6GhuUnOntgBgeVt4XRLSztQOXl1srh43AhvHv93pQ2WzJRKPhBJPVU+pY/ztppvVDwoSdi9gx4OMqJPOgEDFqM10jjDF2lsavCWq/vvG0UFHWprr+tQ5vc54APastNODj+5nAFoUYa/g1jhdUSDZopy5csQtshsJ4d+Ad2L4fjPCR/VvElDqld4guhngoeYR6Y48jLEUfw8Yy/3L2WOBzhaXoy0UsQ+XYAvsy8HokMrU5ypM4b47H19px0LsGpRGF/UKqjMRUc042M8BADfh2jBuiyDx5z62aLwDtbQHkycubPF/S0Ta9ryi0Vsy3ghE31uC4bT9tC82GVGwpBXjcOEQoZkzFB5kQoHY7PLiamo7IeZhKqghhlu4IGtMyiUc2lkmU+C5HWJChlrq/C3qBxRkTtOEwIxuR5B8k4Z0/e4BAz+7FVi3KpziFRSt2b2FhVcq2oMwYaj1VJusq1YIcVtojZn+xlybLkZSh8dJqJ0Xw5rcrVeVTIDGS6QruD6Wo/pgkz63XROj6NQP5HHZDiBHmSYdeKjTX6g6ICRaUzmOIeSMrUzOPpqgTjZg71VA3iUpjTYGYk9ymzGKi4ky7n46T05vcgHx4gVvGik0j3Sm4DJ5kZ8ymm9g3Lja/KyqfKYxUIF32uKwW/ShCrNnyDfQjqEtavZ1JhQAk2lSSUHQLWaspV+LAPBJnN7A/oYLHN5eExOP38Qs5RbAJH42YUt3hOiWRzG1sNfD8619/HcwSnqwaIxw0fgrsgemsPKw8Swyiz9nFpf4YiGYqZFMg3SZXk5v/raWUbpCNo9AwL7VadyL0zpEbm+2r6pypy1jFxF1PlbT+6L8dEm7+MAmiyBjOyfmajPtsomM5y0QPjxucsiFTex783pBF6jiB7qo3BiqeaxtA6zmbM/GjJA1PGrKqlISLmNKTvpoce4xzmVoyPZ2qtUucj3qMtFMw0wG9rIXU9k0ZMuzcVwkoe7EyN1Y3AORO6UpzXKENt219wX5MR1rAtzx+IovrMZF8ZmocPk9RoUnfOGrtUDZjykk8lrC6lJxvIsCTZgruvAE6kV8I+fXvDuW+UwbE+3HXBslgOko1OHV6eCBESyksGfjBVf+fD4KPvsr1pslx5QZy9NyDcNbvscPcqR8kqW8daFT+HMuR7MlorhyJrOPhDSQeBXIJiXW01rMOtBewHJA2B/7+PP2LhRHeLizfY833rr3DEtT/YNcpcyxCZo4VitJxL3ZbPqPnLMvdAhluqKZmvn8aWFFbxSRZjk3sEGTyd6IZzDVUWRTJ0vGPi79e3uCPDSoOcaAvYcNfIt+6EA/KuY+1dpRsIeMTsv55wWyvBJoPANXdwh+HPanHvSBfTOV16RNFNcxp+oIikV9gyaN9P6oHxBzOu2qCfkVp55ddaCjFkOlGZnRxGrZFWJItOP6PUgcd0XISCEW0yqrJSEVG2ZJO4eU+SeS7tZk2Ey89Qd+s28Op+UDj7xyR0YX5HDxi5d2/IEWWos9WIiRcBxtaLHtjDdOUGPNfRC3li26oD63ThrIUTycisds0USKd2qaW1FF9tKm6tD8jr/MiMornm0tmKVt8cFW1+Bcicb+16hW5HQ8PkAEgesqomeJzgUW/IdvD2QSk8Rr3NGZ/gvSbql3GFGXqV53z/DaIeetXvtzonT14n0D1oeYphvuqeGKR86xtLEmpQJMs4IOzpg2+LAJz++DYf8eUKx8PkGpDuFRk+Y8U8YGjsWLpVt5CrOdkEUriLMHaqN344wqYbg+npsbPvYlV7bDOHwgXtEGTqdjkIVPtZUZN+NwihT+MtZ71MPEtyTyRXshnZPR7BpJfckNuz/hkyqqkk+0DkbzuD4dQya4WI9rICC8G/EaCwGAGGkQKDxDrG502qRzL4iF4FmE3Yx6cFMBwADbciafNnjfrlHwzAzIrcEiVH2ennsht0vOaH6Asu8vAc1praKnn+1ROGD36WfrCA46v+BbO103RfrtDwSvrn9PxivKB7jhdEon2QIfvC76PCZmHnqmLPsvMQupHU6OnEuPA2v17PKUcXIPHKfcL7Tppb4KJA6LpLQG21Ndf+qdpvcNNq8xbXc+xTFDzNzO7sS27VfDK+7yoPCDRNgnsIhlCqd+DjWXLGQuJavNjmEx1x7hZAMzzF0fB3EIWJ6OcMF64YVxQalnEAagUSGXdUklGT1LoU2U+XGFhBOLesYU9rKCMNuGizB8fuQbU9pNpHhg5nprMheTNpPO9NppR/uoeKMGcMcGr3Yle/a7GVLFpvXqDWveKymmTDHcb7Q3iTGhsi9Z+4iFwOEetJdyyHWtbqrwughXtSFjTCmOdTS38zXN08HrHDPvr4W64w8tUxf5A8kCPoP4fmwgGDPe1wB/Ip//L1DRHvfbOP/IqaHYH1myBRhtzKG6aFzhQAOtZ50NTjNqUeHN9zRfCHUxSPElFB3MwssWgF3m398Txj/oXjhtcthFsE4fgcXFslmINgogbVFOZ6X3ZDVsWGosuzFslupOBrrlY0VpaBGO5Bd0uBYagqYRbSYgcNqJZ0UwcNtJoI3FZlrqWHrdIT9BEYCMqRo8HCDvSQmfhyyHoPzNdslkkETOMB/nTLKWYqG1PA/GXxajmIDRWFJqS1z36YhARjOBZrweip+1mG2MI3W12NGs8IrU1spWmjmYh/02e2DBjiweUC63hYukcaoSF/g2FcUzKTFtm23wuJQnCFPbS0us/crVvVrsGKP5LLhcSQ8I0JEDGKLkWwUB7OY6w8yMIAzDuP1aNZ2YJI8bUZRwpHUg04owTlcHJTMAjtktRBj8PWj/PARyn+zYnuNtIrwoUuB04wJsYPckEZVO1bNiJYhOrFUXkmbsoLzW22fyWd4dkH0pY+FtDQk2U/ep27SF1gcERmfcuSzP3oUJ2FsWAVQDPKR1m64sczUaVoZmhFzpkqR1JMIrlI+tCdG+TYCVxsEb15Xwkxb3qjdH3c9NVy/Sypkh54AmOZi6KWuPw/GmI1g2aEQN4jOl6yaRpwYrPdty1J3YF0F3cQ+EV3ksVecoPmP1tvk4A9hjDXbprfje6KxSt4yntRxW9mDbWDOLP1anTvySP3zio2nlYWSOjGeaK2LKHD5ac8B9NLwTljuspyQxXOr63BdJ9vBr2GB+4zg7QBpmgtE7TY3EzRMs466a7EG0/Tf9kNZCs7jadH3h6BJ7YtLvDLvvKu2rKWFKIId0RG1MkEIVSkGnG2g0zZth4V2JOnTEvpqbLXO6Ryjt+0PRAA1CQbFoz6o6phuIHLQNUxPotakMYUBPP3Ammv+ADrVyqGm0D+mKWKOxChNtS6Wj6pRM+I1GFC2ZSJt5C1vkcG0OH/kU0+9l0GWVcu1moDrICorqsMQ5RPS/BxIWLTjOxEHzrD2quc/hHarJUP0ioANlJpBWQVd8fyzRu4YRIcZA64XSpDu5SKWYPJjchfjFL9EZkEd2m3gwzerRTMBMQIozqnNiwmj6CSO1xEiQQ25XvUtZg3qkqRoO1FZOgAvVIi2d5OFwsX1uFw964MDpSupt1nHA6aBMoWhr30XqEAmNr3kRRWj4oO9pRVyDtWDym99aEMBK+4KbTjDXynUOErX6CmA/9JclbRJzqZDQ3Lr+yP5To91ayMgoB2zAOIHHcdrSmE08tEuwmIaijies9uWBUJ68l4LOO410UVea4cEw7P4LLMizUIs2LrwdL9AazsJKffx7UJvCWdAXrWeCmaD/VkSwbQrF3SwY9+IgFB16qCV/M3sCD+Tf5nH4Zvn2+cguVLAPIDYXW/+5/kRZZs19NsTNFcgtJfAwLjQ62+qA6KAtT3H7844Z2eMv9nskQvN2OAA3+vNPK+iDxzU5JzndyRyT1B3Yo0ucATRj+usaEjebqOnnqAiFSq0C4LVzLkWRu1TDuniPSH6J/R2PJFGlwazVBwmSj6ziMrN34ntFdFC1vDpoq9dfE7Z2+On6wdLYhvFtNLjalen0nsWekXQ2WD7drhtE3kHsHySp4andX3AsVzKnWnyaXy1MFhmfOn+OpniKUb5KOOii2uro0CAI0gPsnMp2M79t6OZP+ZxGiiB9bkMsS15/WQHb8CAWP0baVlaDWJgScb/x8GtxRMlszlcf82hnrCQdP5rGYZdD3IwyqcpH1S8RxQ/EMNzitIcVbYQ7q+2xuZ4OfcAXX2WecEq2DkHFxb+w3yz3PHr76Dg6sLaDe5vV8tsjz1Zvo1K4YVsnitrB+ZZdhT+cddxO5e43RxuF2yKTcp5Jag1/SxaxZpBylayH2vIP2iWKj7pNOGPa9SMW4lHAoVC9Y6Jz0J1Gg8z77MUbR6aogrJd6vqBfS3w+eYZ6+lwszcn9+Ubpnv85EItVPffwmaujisr/8KCFJ6q9h0GTFffiDtdkOUsbsAihdfwb+fAKsZjedOCGfnfUKW3gsGzx9xameq9EvVQrHSwEPe/Pn8hIr3nwTJx/tc0cB6gh5bOZIr7xzlBRdUYbIuEPSxuj8FkOduKVpXkvk/qaSljwVAzVnCneEKWOApAtf8qhPiciragGLm589qa4CPUMflUBQH8tJ9cZHPwhGWlRsppfTLAUP0bsoxf7dfM+dzIL0fCakP75+WmLQfshFBNtVFnzn6Yqs9Ob888VQ1sTxdX+tULOgIMdRc0IGOnzZQ/dcLgys9t7w72VnV15QKFl6Gho0bdFJ9VbrRuDfOTX5SzH5/XLgtkaHZI4WjpzsXaWcGtCN/9nvgfrcOGgFmrX+P0ljknv1MI26+fScl7rJ2+Puy7eFT5Ab1BT6PlHk45kHSgePpWpND15WAu3xLWHmDMDvn98SP3GcJw2PytLoAoaNvPFfPNPC8UeeozogOCrc4kr3o0AofzviCxkYTwG4bf9rwBYNtw/D4MtCS+XZ+tIf/By6AOZ6K0QOeSNqDlo+M8UMrmfrM6MWPXIeIDEmX/ASLSiPpy7pfLh/33vrgyk/WzgcX4lbOr6ggVw2RedQq/WSOhtr2/uNZxvmfDTcN07vl4RPTqP00J3Cxefevzo8UQcrqkeD8U9+SBjNF1unkKoIPQ1df+6oG6KrIeEVMRk7WKiBpE/Xk4tvhZdS1hm/mE1+EZ4d2ILpYj2BfiY7mzBfAARDtAtbXjXl1owfUYMpieK1QaYLMuw84S+Rlnpucx+/RwVmHZtQ05icNtjlc+xMSIg4vn9q6r8ss7OJBMv17ONa9fg+s5Kx/QthlUoToCLRNYLIgusXzTxQo5jBlY2REx1r4vuwaHWvxzKU2vmRubn2gFMc6YD5rWfOGyW4EZ3qZ1RPi7GqFwzL+/hQrg774zfLst9ow7l8mVb3dK7Bzy4gP7gplZTSSbWFeb8LhIrwDi92IiK+fI4VdwUNt9Yit94ryoll2xTY1whBC9suMrvl80ipWNV1eqv3kHpD3af7bt4P+u5YnSzFW8yzplmcbQXxA74SQHhD4aP+LoK/f2P2+5ys0XVEACk11dakx2DvbNiy539nZ2s3UozGo8B4F5sUdq/ulW6H5W5k+N1OhBq97PsGL99O4ka2tcBNc3TtGKNzspPw17vCV7BC4conGenUaleap4sXkYjSQdMT85Etk36NFdAmdHYiRTHwY59Mx4HNcp1P6YdKudLrhgUOsJI9tID8Mar/vtGcWtYj0+9/fQXHork3z3rGaTD54Yl5R2z4tgWOqCU/FiE4WoMbwXWGgJby0+sBWhymixYyIpImrHxav3figuGMaRYbBSH0ySJiTL7PWwHmPCUi0eFqp/QE8irVhfGo/g3xGxHOPXuE4HAsc6I+O+o27eRW0mHMLZLEzydg7VvIoujr5/2mXZW1AdNV5r6lrNQRIHJQBQizTkbQu1LABgZUXCeQ0QnRRE5HBHquIRq4uJgYXaEw3X+w0gIwvebv4ia3hoPz6E6kPt217VFAVAEXWI3ax24/HR9PplVnsHiM4z16k0Rl/LoWx6CJ0dNlAZQi2ESPe73J04/qlW0uDwY1YDArmhcjvzRbp+W4o0kXWukTFjpmtR+mb7/pmybzJrTUtwvMkZ90ltpXmBmgJJx6ze5cb3lC1v3qNZtTDq67RhIc5apWea8ZCW/tyeBhiMKlpu2c7l7zZZzqlwAVK9cSOalq3Y3toTWcg+rR57P5NK9pvOIQaAczZTEZkRfHHCCdNwnEJDlCEZlrbkVPbElBmoBB+AmpnlHkgatDwfkAiwM910zRTRzlJy4prAASW7sUI715VQflm97tapDgG0EG2xhwrCtj2q1GRNTNrdo/MTz9pKWXNsjA1j0e2RtE/QdcTnncC0kDwlp6VGGPICqWFImqNcCfG5pt4+DnWOaoGtyaiH9nqspUsuB0XybLnvYfu2usOSvowr1BuFODn1WNvuc5OnqkXawZJwbGN9ohR6VTUSmBlv3pA/SjliAeKmaPj9ZoypFdRFlEEyEtfgD92W0j9DLB7hbpUA3UjEOryPET2PVptO57hsJvu2G125DKHuHXsjyCylsvri7V0jfLPGr7To2RnU0l4pyA8QfkwST3joO6JUD+EhRbOWWlUgYeoWze5fyydiEEQMAOFrFZk1CnipPZevW93kKe3MSeIAE9SwVgs25tE+v9IY2HgVh8KqYYZZbAlPXaY4g3C6iQP9lOO0qaymk8JyVCzKdlbJKOrjt7VivtneQIjlPKAiugtWth9HkLh/EOoJo7sn2guIxEUoUogrFggDLgCBqEe8NWbGjSH3IpCqwx6gTgzEIH/UIThIplGthetpofZjtjNJGwDbDg51KJNGWDzj45k1CKnuo3wG7fjfAWyuJ/u2zFcx2FAwv+AFapyH1OymtDX/ZXPQZXjQ0otClWj7xsTyEFHGyQpRZJUWy6PiT+uv483jWnM9xEeOkdmArfs/xn1/9KhcVSlaYqzOxncWH8PkDXCTt2Nuty6AVMJshjeX6BBimk4uThET46+eU15r4xATzTUomswXCXE1iT3i7Vky49dOwVV/+SasIIS+L13enZ5hU9IjnFmZUr7yt1uJ76DsV0ihb/rAuiJ82rKg5d7gQOGMVzTw2Lxe/IulA2BbUG9XZrMsp79of+rdFqMlXwVMFe5joLc1bakpZzScc9ovrdIVFvkWoxr8LscqmSG7Vwif1VxVXyaNYapjKgHbRKco7eVpRr/ryg54mYSlE8XptXnHA9/CQw6OWxkKNXHIwI+Qggp22xcvrxfugW/1636vT0aE5hye/+PewQTNADjOIeOcezz+tps//SSaBapNez9I7vUABFQzA2wAYFTZBGmsB7StbYgz8BY/73j38GDtwykdN3dfTDAKTptA07idJ/dB6jY85AkRMx+ZbPB26QfMFC46Rcj0KZUg85p2lQ7YdajdoZoAJlwJtLAFRXO1sduCjk6PqegmjPu6JR123PofkjU5/XJorbnP8/26Tgo6IqP9xnbESCXXE/8MuUERJhquZHHsUJ3yDmlg9PdXKgLn3+Sh/imYcqxXj3yGAiunP+rQCoAUQqUitakeQYjhl6Vv1grZiC3IBQqunFdMFQ3+J3haXsNI2voVdC8EcDW2S2j2lurjNmIAJNsjfaYJ3YZCr+5UYeSEtIEuPhwn5EypG7mujqtyjsLazeTXJmS0UzLl4tpz5S/I4pQVGNZIhY4++qxvVrHmivu0TgQFfJnJ8fbTkXRzmuTCE7cEf72O8lDPaTns4IgVZ6SAqSzhOwuKcZbrsxW7LHsDX6PLZX8+9ljoRA5pRIyfzyIrSUVuUaElwGQoRNyXJZoWZxZVsK2wVdTJ/YnGrkfrI80Nh/iWudsCqYEzpEwpM0XBSxX+BeryCTnvjR6X2TpHdsmb5bdZK1VfWPr/Bf9ue+Ak5yQwZ5KUHIGdI2rCuVM42KObn36fkyVjjRMpKMmfHtMn4CB4nQW3HtzNK8q6smp6FQjPnW5Q4MCpkwHoHDsOJImfHgdoPtfXA64KuR4dUCU7Imw0TEfPv4J7oSiJ5YaoJeZPXr+LD9XgeqA+4+W7BOnjv0K2EI0Nw/f6PtZC6XoNMG4yn07J/+np64qex6b8KfTVNJELGYux6Uk61yn9ywcrn6txMf59PfRoMqCXnLmo7U5Uj5516/OcbzJsEUYFvE+Ua7u5iGzAEgWdT0cCJK7Axojw5tXBmDoUVg27Jfd5nAHhk+leLm84XgGzEyBS+o8JpjiwsaOFB8dhUwvkNEXFrX7XgqIIAbHJ/zWBL/hQaP1RsXbmut8f8rZ+2ALCWM2TnRLr0GGWdYCT4yni5jPwom9BF3dS50QyKk1NO/eup9lHy9MUuj6jue4tBPr42P1rY7TnyR65ZVOwf3u3L7tPzhiMNCkZN/dysS5OydqvqYJSjxq9nARUNGpftvMRIjKWGq9TZOOOwDQmymAcRueHegc2Qy5ur/eOGrnzS/nwl/cPDbJj+QEXw+rbDxlKD1PAQBYUoQMoOTSz+vnlUR0ps3Kq3yYzxgq/mFI8KG16dxNLW4ThAR1l2bhBEEyjXI6A0sV+lCdbfhpMpSIsdksLj08Ijb/klsZkW7jy+tZc3liKUm8uGYruSrdnQuYFT1h3zatJGwdKaLUWL/ZaGiy9qpy+sczubOdyOpEzmgdWbmOEmn+rjHrZ18XSZ4JBCWug4Ge4dDcV8Rl0jvm+ADy0zqJCs8laP8+DoK76C0S6AiNtJNrYrYfPA0l6sa0ZpkxqVWKPAWxQsEHfsiO7mN4FcUhacw1cd0vSnJM2iF4jKShV6W02mdo3NcwhVAmtBqwFNBCwYmrPMPmBAK/TmwAfR8Jhi4fMQVNad/0FSeH/IYws5eyJtMg7tKbxRGwdJ/30dj9MCGPTD+LgflalmAvQoj/SWNgGxwMEigsuGrWtGVG3I41nenC63ZuRBvOtCJ4qZ3sX2QsXFS6mzYRUEPs2BXWTcOHLOeiEZPrrDMiUhqAQ00zF8UEsLEknn1L00aBKgHvf1E4X/DvtEHskyPTDiFX/kSgtMhJPuL//imt3g3P8NkFR+93TvBp3/EKjBI0GWyuFjxRzPJhGLnnnXrjUP+DSWrqe1eVhoyA2pM/Z/Umr5lDCfjg3pI1v/TKyDRI4ns0082908kuNOQ8kNS2kq+8kCH5HsBfHUwHbNmgXEensd7jXB0SU5663hANN0En7h4bbwEkTAYYrUjnNFj0jEj2jB3zAobWU+IdPzUgBxC5Bxu0uGg+UyPUvh4IYljocUMeC4YAKICmRf2KaCvkZFp7nludgwzeVWH3lRtUwAYi7PDOngCkBkkFIXCX1NkoWAS5sjiQ7b8fxTL/yzbUppWcV928qeCww+VFX9Qt9qKDxb4ITXyOmS6BwSShi6NlNVD4ro6upKSghOtxzMefReESTjBhQVxV/Vlw71R3XrmeSYytOXentxYBxOB++jRavII0TvEGeiPJJl/aJhnWoLBJmgQlUD0K38mo+BxNtrjpnWHrJwd2DK1YFS+Sh3sEm/BKhjDJiEbNS6CcHO01JZK4y6d5lsqLaS0MIz7QjS/FWF80p86WQCbDBBMhe8M9mQRqohozszhV5aLBXnl14ckSItbiYNBkBrslyTBQ8ZIWLmM81xgqoY04JawDOZRWrnIEgJMSDz2/xiSV7IGn2YCn4RyTOb5A7hAe4ek+WSilOcHR5Ka+0WhOXS7357PeOxTUpcOa7x9OFYgOVXsAUsTRZt1He8kx2pNcq3nc2AEqsGOKlZl9J0OAuLSiAU7NG1gA7z0s2snzuUcxJ92a50ZHqB2sA834axL6q97eVEbEkN1fhZiROx2EFsge1k+GK6e08t9GyrblQBFA3BesdQDHiFwLem3K7EpcxgE1I4zTbuWIldp8RAhHOmNXMSSg0O4mSQ9NAheLSAFz5ASyoooaH1P5DMoStsWsD5g2TCtt5CGXh4tSMo7STk2w1vijDBBhoLUUm3mFyTDi7r9qGp0Je9RMrbdQyCyJ1bMp6CKyv42mfGx+PIs7qHUvp3DPh47Mdsgey9getjjccr4pRUkHQesOq6RlBKIKXj5zDRhMCfblzKtA7zJlRIktCQ9HiAYh10eMpSdGj0er6iPYQaWJHf6VwDBEeVh+dbKpYPmctr7/s+4+9Cbo6BmT188Gx6TxY7MJyu7vHy6O3I6NNJPP75uDImLKLH885pAHfNkfccDDzHzA7G3JV1AmF+NyvzCQBC/UB+OeYmIjkWlnOIMK9gyy4o1qy3LX3iGWWr1chEsOUPS7jy4r9rZQaivYLtCk797AY9Z3j4tzrw2pKFrrq+lXFz1+1+bsQDoxubrnDW2FOBooJ0sktwcZrCBEGV2P5eLl/IFTEAUvdaClbM+QoQ92hyv+K4aZ3Qfk7chEGTcQdMSnoNJYfDWJjqPEtzPApagjRtC0xyNVrjo1b5K2b650hLZeP1R60Z7kue+jX81lznPMaPbkrMZPCZctGNXHPHzzaYMn168g3gT50Es3CB9SBBR+9EVUD2AmarHgOP9WKYsr5rOl2f6I9T/T+o3qdgo3AcUJAoOei/lFjbx8Gu0EuM17OlrB8XX8f1kFikBiMgTJ5F+N+Pfg6M+EQsLz0hooYETuhdQiQTAcFLdJ3ynUiwqPCWthNeWRGyOXii+yMI25oRfwQbo6wg6Kor30o4hYpZrsP9lSwTEWJbTVW4ZGO4zaNkLUVZxxEVvblkn2KTt4OuJtK4NUI2fDuJWNgR7sXjrU5Id3q5ueoCsIwwkNSDq/Sfx+ipDv2AfFdh3c3m3vycY3PMnhLXEXWSbXcWHKa4PmN8gx6meHIrSyuzsz26XnJOmGcGwvhhmu7vTuAYinvatHFgkiRWUeTuI/9j7RPBWLrE9kdkwXqT6ZaLrUURRR0jU+59sDkW0yG6qQyh0JHEakKyitQVMHnQA+yMeILcAA5Xpw7g17sOvEDaiMZ8wftpHQQwenOQLq3zsPnSpYYi6u4mJvR7gY6D1spUNhdlR074WHxqOVyru9Bgzaw6OptiAkvqi6om6WTGbxXicqPa3rw0i4CDbCGb+DsFCj12WtnIDoU/b/DLjkIFaplc9ttAKM2lNJGRmonlysfZZzEa6ljApireErzcR9rQyiqxl+UWEfsMofhfH+IC44DbcKlCCjlosGPXQtxWgnNuVPHs+m6XTMdImI01medBZ8TGnyp8vnCVVWoKhxsyRPPWyB5k0CjhHrR98yfUCEImVUjCNNy+EB4SNbxD+G++hyxcHCUAqticM37dtEfWvMGQCTSP8VmoZdRxbE1+wDGAtt1wnDYonxPdpLFHbLqW7f8fhFcgRlQQdwbzjqwe+6thjlrLnbOHEJEJ9Z9klAVkkjxWM9vjWPhRcXzodTw+bmvSD8DPdCe2EW5/TGXHd3p+GWdZyLuoR2EnGsYh7IHJF75TS6Rv0YYbPUJdPxwMxPlXePQxQWDGDM7zz4wadYg/8/W+Tja79sZiMxwWetZXHt3iEYevRs2iZpO5Uyfd0kA1+vzcF8/AjgXYxAYscP+zkMDTTENByvXXzpje21FknFOycayvp+9IRdVMihxTWXEY2s40IfI2daw4J6ynaY6p7GnaqW5rVyPgIZF7O2MEk3ti9p9CXDidWpZWVXlHQQ4mGcFadnLj6xQ6XzBrJEHDmsGsL8aGkMWB2wDZlBNw/O1pozETGva6aR5S3a68/l4XGwqTa6ts3c2oU6u+p6XzJz/oTK51B2yMxrWF74LwlXhCRcYlBq1YUV8KQ7QSVOqCaOrJeM/0ylO6pwDQunntbQdiZMnvZc9NZtFUyiB7lFfOmlPNR4HJ6E4qw+iPZ6QKbsmOXSnzWFW84Y7LHyGgatZjeZyhqEZhvJS3e1UoJpHnMLNCK26HgynGv6KUizW1t3qA9pzo8FY7fFwI1e7FE/367KHnfC2vMsqRW9oKo1XXbKV22YxMya5rNQfr42/+TTLsrSgzKAAQqlaUzHsMJBgMoL5GxDyRmPEjsIy9Kyh3hkeylZHVCXcCAHV6BCjZz4tKFRKjrd1CIQ0i9Eb+85Bh+b3TPkVU9U5l4DLDC1Dr5G9IarpU/+xusfeJS+9B3XYd66u+QOcrG05GjmjRRjcdYFgHNhmPMcNxwJgk9BBBylxjtmchcJ+bm2bwmVWpH/v1Ss6GvZ6oyPVSgPyUyv0354Q+7IQbXNPvSaCVhaCWlysoBvK/tpC43GDp+9j8HXi88bswfdFlczEh1x9jrKJmc4KrxVEpyDdoFk1MDnXEQuw3JDo0+LzsoO7ati+2qSq4MnLthzrq+2F+5rfV7WGgNLXVmfPlefeLmkOoKPNwXlPu0Fwe17X0ChJ/rj4dW6WVyjLUIhQHP/df260E6F75hUgCGhhyRNssGolTnwzr6pcFQqHH9NmkOpUHJ0Ki3l3pAEe7u/307DV+lq75MmFqgYPSvCYiZlkow3zWxJwG7MteXLY3KAc9dI9zuS1VLhEAjModWkZWKGrGpmhwo6REDQffHzkMj4wLoWPbq7+LZhDfxYXUPFJjN6T7OnCu33BRRfaxnZNUciOrhK1cIeafjnD0AeNwj3BBwOmXHA3L4gt/WJV2aHfOC2nX99rOYFDD/6lmLGQDjz/eX3AKcpcdI9ooJX7vEyfT3XgTgmabMlkIz1YZO54bnLHbzZ1cWzhPoKmbhhg/narhztWg3dXNlHrwkjh0qKpqVwMW2Iup2AU7s25fNGPfVmh8eKu4g26E2fUvuPst0T1kVRSuZpSneDedr7GUuZM1m5d/fCB6JDyx3Vr8G5Oyctud/VXuq7auo3vzKrcXD2ripu0NbtBUptXA94m7blTlikZXvzBZ0D5pKoW51pqGGDuJqpthmNt9+C4LU+25lOystF5toZEDNc/eMTkhdfgcyeXDIIsSQxP/+Dd32V/fN4qi5eeEpeL8Z5I2HD5gxvIq4X3TieJtHmlxBnOf3DFONCFNvfC8Q6NYUgkOoIrJDAHV5nnmtUS+6Hs5FYL6kbvpTtoOpqbq+RiZqoFLlqp+mFEY5S6oe3fPZmhMkj8zAlqoSK4AmEr4JihJU6d2d2LtOgckMP50e7oHRl+iKfOiMqAbtRQtu8KaugLNF6bCkoFjMRFI45afBrkhE2N2LnR6Nvk4vIanAP2QPVe9Nz3XBhRcckwkoA5OgsqaxYKFoE7d4Ik6cnlVsexTD1IKJqj6FB5Kirh3taxIH5xOU/0KwfigurOi3Pq+ZyQ66tf+NxGMviXgYxjvudr/j2/jXV2aEfX0X8SclxMPOXpJpK2Lk/LcjGVOT+Wp4IW5OjrnJyX+UyBez7RVn7Fp2wzoNeXeuEXnzCFjLvX7WOQmgi1zRaa0ocnmr9kw3Gu9OgoyYZ1OQz9YePZCuevZIfhao+RKee6HaXWVOQtK+ZlxWRlslJepiefpJTtp6lsYT9MJstPPK9clCTMZu+lz5hoCqi4oAOkuc4FJE2w+rNcbs1kllcRDZaplnQLSvyxOPlVXP+mPU5Xnh4nOaX3Lj+fLJd23wMvmfrdiWEP68/s2ky5G/1x2zXhks4eUVddA32DEoc9CZb3zbli5g3cT1w6z2db3Iey2Q7j3ZrspmmfyT9XNks07OhDUdBlhcaLVxXn3sU4sR2VvGJPieuCg64n8km8LxmrrM0jq4GknyG/tLFk2/MKeL688Uhv7hQNLZXNU1YLPIbBHpmz15QlU+FfxeVv2m0avMfTlisGmYquAQqdxyq41GpxyNL8OfTH8dvDWcYVDdagm3LetGjMVc7/Qzz5addpcDkMucn2ScT7qra3O+S0h1m1zb2UfrVfOYWaPqbW4OEUpGk4/uDQUhvfsU1O0u/r76+IKiybDoNHfUhtl5I9nsvPuRPX3MmEuRou2OHq0tVKNbltjA/2H5oHbEPwDBM76RW3HW8OtiTGCbMJXKa7lJsXcw0FFIo+oCXSAGjrF8321wIJO+LWEmTTnTy/62d0l2ONy1zHE77jZsuc/FGMlm9Q4tUyP4gjPWBBjI/0u2QwFbM9rXnl0KK9zcNJQ4ZYqqNqIPTngVguBcEkHha0NCBBk/9r+VuysUP5/jfbrg4YzUZar6vAVRl+20ve6oBTjNvXTv+Z8Rm+E7XLkK/YK+zwaAfGxOEZEFLiDiKekZ1CCpuTNmogmJwkUYfn+Y7oGmd2w0AH5CyHDJ97a+WHyoqTw0Oneba1NHILZgeXU7gwuzmTdNtXFsZpssazo4S/zW/fC5ocUZUh9JCilSOLwy8rXJ+EyX9xOYkddxDmS1d3QVCxae5BucCTE+xRAiXPF57bJPdoQ/zdvI1h/4wtRUDLrCwwn+KXUEQ8ex9DPmN8XVHIbVwByW0INU89IW4q98CSDhPsu16ESc6/ylxlK757OcBEWU8Q58+tg9u/nmx/wDfHjpWGMeYTTZmRmMgNUcUpEPI+CZJfpeLQO+YJMcTrgwcOsYRveY9UX8oGJAxwdhYwAUBDGrubWi4QNBslnPKTEb7ZXkxurgP7rGNjx1YFicJn3uodkxuD8HfR0LKdtmpPOfP2fB5b9DIuw0ExFWaEXdaKUJsKgC9AfET9noSDd/j2nf/S58uVSJBY0/MS8BxH4AX2RqABv+FBC4jDEfzss7VqUmhNMDrEc+eC9Mx7B7QW/Ya8po8V25okZRtRgAiAoAg2FZCeEW/S9r8Xzqct7G0mQ3FIjOx9mZwwWkS7aOA7wLEAjcnAgbmmNo0SChf1hFE4JIVZXBGTF4TVz27jknnL04dXCpx2VHRHpPa8E7mVK4LVbOF/nJNhUTdYhA5y2HIIxV5qdKkiO45JWe/IBI1bVZA3GgW3caTCjFpG6ijCh9AV+z+J/NGVuKAXb+hRmCE3fSsNye08vMBrnrPKffTgJOY8vdcJHnjL5HiFmTpXk5ixFltxKDPJCZONsZKkRB5QrX/JVLCFqqmge17csKcjAB/kr5Fd4TX5mYgu53ZViAVzuMqLgDYrn6ciLf417kikWnzzA5h8vuWOB8acyWlT//ygQCpfAyS8UFDgH5eVwgzMJXcx8fIKZUJ4Kn1ZnpWsD5RrQqL1nb4wLsETJ3netUfFHPN5XDjIvnxQzAHzD3lgqKyPKqGMT8QH2smwxSUfIwzkzSwRZWcxRAqLvtRMdxh0wLWNJ2GVg32WnpKUebfQqiHa7dUEeZBiK/yIcaF25QjxqEMeci4cUFwMjqoHKV6xnAgw1V7CnmiBryHV/R1Pl65w8bj4tIak4DVyooxvBK+kvyYiPFvVJqaLu5TWZBI5tuDbvxsnNSJYy+fTj7NS9zWnNBkKNlGPs10ul+LF+jxirhoi8eT6i7lC81W9ExiK/RFSofjluERx3a9Vk3DPxC0sePlRRwq1YOUHyamlIKboqYJEuB+KlWNpcH4ic4hJLQhChxBaFJvRIca1Fc5DlsaLTbxP9rIKllTnI6POG4Hie3e6SjHjOzcC6GryC4j7cKlq7H9PiDpd2AJh9YtvxXIGOkIcVs4um/9Yh3nNNoFeb/PQKdYNqHFNQT8M2MPg6ZKlPsGIIn3cQkCXjHCgGVl3qagc4G51xZ6QbEVr0m+35o3bz1ckJtte8aswoFY05nRHYHmR8uvqutMjTHSPiP0JHcgBWi14LGpjxNxxAEZ9AnsATApPAJETZKnkO9IMxeNteVSaHw9iJOwtdhDarPlOQHlCcYAb+/Il34c1VuiF0odgW+CDRmk3kwX/ygiJ2TQ+s3xLEVSd9+fNCltOKTS+aGcqs/HI6C6hDrXbPa5Y8hC7TnPW86TXDXYkRBT5h/6UElBeHuskTFZhWBVGczSdmE7WrODSRD+tKn8oydZC4ILeP8AA0tSiI4rAuhPw13WUEFI+25zZ6yVurY1walUHS5dN/yzA/mOWfuugplaOH518YXWMqVUVtSSn7/GCY61xNnEaAmUljvUBvg5kQQ1sEchq57kNezwI3hwpD56LIRxGnmRVE4as1kBxVFK//08hEHr2P7508Eqo9AGZjyOCZw420BIkOt4SyG5jDuXPerZLH2SV1cD4Loun1MY8WPBbEKrj0TLG9t79UjFQafUjAgR1Hir/cnHeUY0pIprxlGBTvalI6iMdU359iWWNl69z+Aesmq9a1y92zp/GlmH3ZoyPBpLaz9pEd/KCTVCD4kOMicSvCv4vSDrGQIRB5z34PAyxXCxSEcnmHa9KuxGITCNJ47jpDQw61ukzGFCkl4TiYmNI9wFOYHrFNry3E7aa8PwMgu5sRmtwp+8L59d7Fj3rHBiH4VXwkthBTIOHpfUq7aFkXj84IAk+QkLFMIkPHLSHW2/JxGwwB8Rw1U8TBEvP4yzMghK6aNtYucfYB6YDmAEGoqLeI21eEejKh2IXuHAyaCdiEDglsU3VCNX4D6/JonGGEwbSx+JlAOHA4ZA2VcCydy1nqE6oo4sF39SyHiNTPhsuABHUbllMsXY8lZ+G18m2Y1FwFsxg8F3yTzg49MY9Ioy4QlrIfFl3PQlO8yJ8K7VuTOFt9XUGiu1L+LfU2EX5Gyl4T5ZZdPylQJSi695dybd39JaDuZ+KXMgGH15QYsG0UXxDzDi1wsqIKUkzDXEtDWW4+XOOLNgIWozd8/xIoedGVjyAbSiqZMHuOMZyqk52nPxe9VAtl3BVk5t7OM6hQzd7Rj082Hst6flfC+dLlXQU05ycBDw25BYKCmHrZRum7fAA6Y3lzZh7ggOn2JJMmKVSYZ0VHy6xSTobMcMHGlJY1cz1kTPRHe5Ye5bF1WWeksH/b9cTTuCoYffr2oPSQpTUetRljZ1fxt4rxcur3RKSkslx9BwgMia6hz+fs3d7ZgRl+ze4OYPnmU/Weq0cagcdclB7IEz4Gp4CSo9sihRnNcNjTGsYd/bBaaI1AwUZ7EmbWPvVjuinclv0RJ1Pzn3ZY+8y6lriJHqOiJtSsBJ9fFSgSjKZTNoF0wCpqpaoZg30w/dUNKVUe95apanxyNHdmapxJkjm41ZMBjbbJmlKriH2neeXSBHs26TkqJm7cJRxc1kqCJ84XkS9xWLdRlg9WGa7p+SkvnP2oErjkNp1LS+Vekh4mP1BTdbXK/Od3w1RTF39iH7tlUdv3C7ohGBZopbntjgHoVGaIe741J8AB0iP1r77ovKcFAUsVAdHW1eByNcWhHYgghWnjjapro9qD7sC+01LXWg303X64ggy5UAyIaZiCHlD5gfETSz1RJJO/fo+g2yiFlvLYBxDusk6yiIL8aQYum8OtepDcsSTrDrL8kjMu6Z/T7KtNDg60dJqY0B/PypNjlL+XQDGE8+y+MjN02J/RicqkEKZH6yYaqERZNwT+UyysLGx0XhyXWc5z4gtHd5avPj3MeHORj7sf06BaUGWQvhczb5tlGJOcF3wCvqNnK8UWREq/PYPSVXUDfS0KHQ63t6qUGDA/FnJTaLySczBb8PwrLPw/ZJrwOZPCoxlgkUTvME4k1EIEXSz6sCC9Tz8HV88K9TBL1vXgQD//6Fj4BEGzovcn/aKHIhgWYGBHCgJeASfAVVzeVk425RtIlxR2N6Fe+j/8hbZR66Xsznz4TVf1mieVGOmonY50RO5etR7fHAnuW2KILFCLnQaW+0EZ2WSl1484WmwIM9sl1QfQqM/NXOKXsX2nRiLzXsUSaePbETmesuYYDuihTDQ9ZYZCQ662AxYHnc1onkkjMucYPr9SJkS08BL896XYf8b+IfqsA1gLo/PgnTCPHyqE/UE6DQUcG2JLEF0hrQSBxgji/p40I+xawLu4biPBQGsr1M8jNfmctyT+Qy7NBC9KWAiD65A9AlYPRVFF7bD2ZA1UJDAAABBbT76OsH7y5ITJHbEOEQnNIWd0nTUxyr/SugaN4j7x/L8PSfYZ1KJeWljATgJrQ4JlQ30sjKJKCb1dKAvtQIDIJfO7TOCaRpFPDl2E/BqSh/sBX5octTD5SVyJHAa4oC03Vb6xZHR0/RIcFVLmNV0y1B/gp+NQj3g1WSNHXEbsjd8dhDTmiJBBKxsGCBDTrMsXVLKdL1c43Joq61GOy81G/G3CNmqlytxFqqVId64R5nt7UDMh2pYUFZ7BrUPBFVpMdu4pmnx6vnlz0p1mocILQuFZy7cgRM8oBTZY71EiSfQIK6BF8Rdt3VCOEOL7uajtBhNIqdmQuTDvt2zLB2HyeXeqEDEY8DC4X/ov6N8Ebqt8gPf0CFT/4nedEgfG6HvPL1sECNZir6w7dsupAxlSOS6/hRLrNW0W2I+2wXHFRuyLt09Rw3UTbi5f+1Q9Pf4JwJQqCEIPhvMGifZDKR+VrPNKGuEAUZeFUBbFXjCmK3L5Zw9NVFbzeBEdA1yw1GCI5PRjnLCWcvkT4SWIbFBzJnIQhzV0KYj6Hi5mHfJwfVbE4GU4S3IEeHdYm6tD3oHcP7yhWsMXLibf1QoaW0mTi7TcZcSX5+OpM/naKTzWHe3NBZESUNbQqhrVpimnzyk8DgMdkzY/1u3jKwub6+maWs+J9Nr8q7GmNZMivCizJnkgdjlcaeVjuDFg1nARBlQg7HsF+KGiTUxQkqkGyD/qx68kIJ+g6JoK+Xejv1n7iGGznPlAv0/jJmQozB99gZqBernw1o20bOpRZQR6qDFkFJvawT7j/UhXA0LEfCgNA2kHSB7LuoIiGRvNcry0RYIU99bDa4pROO/HxvqI8NjiuNz0r5Dpah2SIHv7aO81X3AafqoGJ93lRTncEJ/u3cu/ME3HhOyp1TDJzeHrNszcxEsUs9Ghe59fT+JvQKO9aiDc8mALXZs7YHIZ8mRl1hVH/gmbHqCgeRw3U6IidDeJCtNPJklRTw0bNTsfRmQCeSTJwEsJhN2D4n8zTTmW9aOUzG5tLO/ThLiGGbwDKQzCKoWWSuFUCn3l9434WkNcJTmSQtv7A8ZnoRqxWAoaA3Qm1Aq5MDZZoaO2cEu99Ks5yc8QQbl0VDbpbBXk0DkXpbLAmE+W4TbDib69BP0y1KYWUSka0fzvIrKkktDmi+KyjhgXOwbNpBFnKR4uOSOQZmvDLT6HPEBlF4VFR62gUc1nq9KgUPj6csq1LKGa5goNNIX0R0+UTc9209oio1FoYCPM6oNmHkbT2SuRkoInLXpiK4XZv1XufnKpjjucp5TxVLOiOr4DR25Z7TMKjPBfzjT3ZH0iAEvnB+KOEcugM6YSZe1XElRmJRvLbyqIMY+ubjdjlVJ2HN9ZysnWM0zW1TdcmlNuJ+l9pEqx8wic4hz1+i1Buse1sxlXPUUFHs5VAXU6W2EHAtwAGiQkuMc6UgwAOYG8y/DsG4oC1VqZtl1NkzZKdk11P5G+vXiJqBdYHZeoQnra56QSH6D3spYPZ9TS51RWP16Wo54YedXOKqRqAXqZBdQGzawHMjN/Lb0hKSIx4AK3C2IKx/SLzWbGSF07gMqR/IqdsTAHFUf0TcidX8LlfgeNRjwqNkPIoItauH7pwx5ju4pwGrzbceCDrpmbgNkQ4PsFiIdDySRvftHOXtbUgBvSEtYstjFBRIMDh4gZXLBSFoRHltx4TZzQ4nwz+bMxpjTlqvPzSzWdqAammKTp5YXxbhgrFv3H1xLW4Td7lbU6+/D//j/FAXd66427ML4cPNQ+K3VGBKChas5h+ZNZVHGhVi5qx8j2RlLFMkRTUtmMStF3bAb0CLro3ZWSZ+eV8pSLabDyFOc3fcH7srkZHoRZCRLtcaESTOCFq3T/kG8Q16JrRRFT6eiFHn6+SUlV2eEB6yk64h76gboxG8X8p/fH2ydrF5eCKVFt+sD5l38fJgV+bEZOkaHQ9wYYk4XS8U4Ic+fzWJBTB1QpF34tzsGj83j+sMOcNTqPNTkodCD31wHVlqIELgAk9hPPHvlXmhUfeqYIgdkqI7EgEDKNoJUDLIzzCF6Ogv7uKUBsUMeZyp/JPRidf4ufRbRU9zQoWMUGVE6FrImnbMaeRp7hNqYJYWxtunPwk0FdGqlqRUhikNv9zNmC9KTirlo7O2WFIIrKaiLQPaBLBEiK2a46SLv6Qy5X2Js/tJfRKQ0EBHZhwvQhA1Z41Cz3LDLsWS1I1Zn8LV+8RWDjIhTfuXJAxplj6yRbNkuRDEetbfwTwdwN6hqf6ojNaDHRKtuN5bKp1azMrIHtHXKzyga1JPkMy8ayipgR5Wz/JAPafY2CsiV/lDqIoFTrh7DzrqIREkeJKiRg4H0w9S5WHHV2WW6NkjLa4+8uRdW8tJ5L4iDVZcdV2iV5IR9t+13xjDRvIzmynk4MEE2zV+VTMORTEAEutCE1B1nbI7AEgwmz7Bz++AXznGhloFVXULMfkmyTY0qSIGwanupHdhcHIzA7YyuZxNrzmAnIQsIayATKvX/e+O68vtZ207QE7hR034H9/CpxHz7h/K1S7r4mhwedCq3xUG1NlM0kQpMK+9hOEyv/x6K+S2cqPOzerCTrMOvJFxa9mdHJSpYLFTM6JemLs7hakmQCBgEQoTeR60jzxFspY7/HFJlLBG+1XbcwCNmdgCMVbEtoiFyM2hE7A1VsptxXY5VmCJjMvcFrqwPb7f6EDvhtNJsm21g25V/EnqJ2S5UX+X8cf8bOhdZQafdeO8i+SjOm//QyBgLv9r631KjsBR7Wjeze4sSyRnUpy3aaqvzVbtHB1TDgF77l+lcoMSmbojYZn6bJJUuh8bwdja2Xrl7PPxYpF1kMVLlntVJd7/EhkXB/0GBgiT2bqMDtUP/zAZBM6kUAA+hR+yRY09d8QjKrujSqhd/81rzcBDo7DrcsWmjVvNP2HBsd4OVoiRBu+0sIPqamtAYCGwP9+zXket6jMzPRKnvc/zuq7Y8cp2EHRzYLCvWmVWiYrQXnYAMea2wXmhq6XZIBwNDLq3zUDpn3OzZNSw/YzukZ5UoNJolj7BBDeLMJkoyc+dbEHIgi3hsOnoEpeQdgD9xn332AtP7Xi20HKBpU3zM87AZoVyfWW/FEQJhQVadJ8gni8kRlrQCZl+GsKYUZ7XmEOOJD3tGdorXx55tpOemi+05HmU038aDFmOiyScbVyEGsKqlufWE8dSsh0n19YjwcEqm59ila9PV8H9YARsxdP8QhAmHbtDOb9Hww3mDFXjlLP994CjVZXUWoA9jQO32lodaYfYbVOasNMMq1Fn8El7RLQMrxmlJMbQO3p/qgFqlyvvjqX5jRVwdGmPA2qlgPMahC4zAPmNHDEcULxqBqY2iNx7HhbbYhqKwkEU6LpfmhEi818jZ8XNcwaic3j5WbhF+9qwRWNsrlYgBcNgk95Caal9C13lPmwvojl9vJMDREfH4GBEceWvNZUWOSRGSzwZlDgbM3XeKn/gkCDerDSKJJj1w424xptLUXm3mq7I5Hzr/NaAnOEGuDBIUmj3Yh2QKl6uIPpjDQULqKnCwAs0iKCaUSmiGIHkyBo1opn3w6mYVFndcGnrHl9Y5gh/FD5zSdv12mfOURqMiNlHDZR3XmWlJVtkAd/etsXRSpAx0cIXH8+pzN0J4DTw21uyQprVPSvdj4m5j52r9Pe2ZfeNtaaxW/v5AbWDp9AcwmLQi2aUvLsIgQ+ZhZIMP5hgCRWm7rUwBnsLZQYv+BG83C4TZEjIICEqm3wuMTWy0OZExmlGzv3UtzpI9hLaj6pMoISUFlsHC7OJbc3PR93PXyP1nhB9/MOm2g1K6C3vJFuh2oFS7tDeX9VOZA7PmKYoFFpdIyioRpeCtFgOGPASvI5/alo2IJ/bFL1SRR5OPEOaqSAefuKLvRZVIRaAnFSHOptcIFZuwXkCPyJGy7CPsW8kVmAIRblaslarhpSNW5HAXsXuo7+4HBSkYhVGgqP3H6iUL4N9oKNRodjDo4TLboWzg0NL1hqtZQs2YkHGwFawKzvOj8V4HU+1sjZviZZaEQEDSo/l2WKpl2W10aa3EU6dPAUqxq+9t5pK6OMq054IUj0AGrZYdU/vLEgCyz9yqOrflbNgrkGIpFRR90nPReqJQ6plWYtARae7BvhpzD9ysoCWLB/aoNJ2bFsRh02V7lBU4dpExu2urAjvXlwD9skUV2DXTfeh2SXzmfaYlK4C7P+3QsO5nFbrRVoAn90DrEFBEh7hCnySGBfgJD0mRpR4GG5ctiPgBMB0W6wrzdplf90llkuGnI/U0vO4tAsbRgW1kWFA8+eHVKDf7V/aB05moi1IDzo0GR+rJEXKIZpouFGPN44SIU9wDDqleqYSEdpXGTRh3K7p/XeDxuvTbjOuSNkaARH+LpqkEoi3Hc+3jbxAx8FYEwg+nPdEGqVpsuxFXMnp6ntQncaEtRk9nYb/0QthVmP6pUTJDzOGmAvQyjpX7LuzZa1uguPKNZk2m8Qq3liVou6G4LIj42XiUx4b/yLdAB6OEPW2SaVkzUV9z8evS4rWz+yNhHeSsQKvt/hdZ5zYjPl/RSULYzgfuQIugMRRY30IEWtc1TxKTWB8T8wmtfxK3juKaibcOIGcoWGcPaX8Z6eXjQoEttSCK8nAa+Eq8hVrBejHFsk1aM8kZ3uTmIsuXmBO/ts38hg33nwe0E0oPofdCTOG/Bug+iiO9lY2RdLZweqkRkGs5N9bEPXFfhwy0TPuIwKQjJUr4TJWS4e/m3GIrntOHoOc6lR7HWfQCmdzHlSjXx4DP2Ti1O26FNNMMIH/H/ng5SqJYlIjB6NyOrqcSnaaKy0VRP050RrvJi2rOdxD6KRBjubuiHHdkTBi1xnB3yIjR0PEvt8H53onHDzKzAsZ4qmVZ+BQi932dQOG3H3TqVKTIfnllNUkvkAmMQnL3qZxy2Agjzso/GYMx9miibL2w1rXkI/FTYPERs/1qd6CT2fPiKexHeXktKmr2DUX8FHu/xFxCnxE3YMVuETqGkiMJceaOeSZQ89J6/1KLofwj4TMqskyQCS/qaxYT7eJEx2uySdQVCG0SqLO3e1zz9Hr6sHcS+xwFbrCYhKrd0q44Oy2VnUB274iaoMDczxrv/iSOsLOOlOvmwlkwBzW2A7jqD1bx95boL0sU2N0Rue8uzNiMCrIf7i54N3E0srtyDWjX3j/qsq/cSFae6Fh5WBiYRm1RWYAu8e0+0k3kiDtVYqbbmxXD3IO8gmhfqRLNsQX3fxfK+8bQxbPE0ifKujjQhJgeP61zLtc/Ee/f02K3sg4FfBXS4QmWZ4zlLqi1YmhBE+ybKx1jY6ULfg7CyishF3tQbVcrlXDgwomuxB+bEH7cmN2qXoY99qB3niLFo+zOuQ21R/UnEqLoHZB1Q0u4uKCPkdsw/davx45m+5Dowk87i4M4ht/45Xzi0zusE51pPuNikOQgkbzm9hkh/JUnRdQ7NkcfMDTynWTyX4zCeUCKBjKIqoZP1hj5wCUFcmowO0NtGppyP+tV4r8ThaYrlDlskGjvr/uO/zd+UDRE0Uh0QNAPq0yJQDQi+bswmAADA1siJWWVIY4iyUrM71956Zw+a3AnXjqT4n6zEAW7SUJyCVwnGA7krdqOiI0qopPE+IvkWOF79QK3k61qwPkk6AiaXw1EZ0VDv6rCaBMl14RhHQis9huYTVAgSax7hQ3asSNOK08TY4FAILVfa116ggOmP2KFMwQRFn+ntvyEXoJqQegQVLcxTghaLpLkTRPGwgHBvTrHqZ3NpJ+N177Wf2YTioDV5WIueOK78w9C6c6v/+0eiiqe7ecBxYPDo08oailcOzAipODrBkfTEWhEvjFCeDW8X8oBM9FUztjEud2R6M8P+7gd34ZrfpbuYQ468cxc6joNgcMBksACvS6aO6PCdvX97G6mPLcDcXDE0WKodwGEUYpTHZG1sp7BaFa7b3senoG46wmPzR7Ly2bAhOD1D+ZGWYxnJ4MG0doOFpC1x6dSdui1VelvDSO23FEPfu+2wroFOFKN3AzqXPoKRojZXGSW/yL8QR+kEbDT/CwEbWnrOGiqZRYoCqKGKfQcdOZ/YNc3bcgfxBSwd05BNCnQsYEeX7MBrPH+RQWbA5qEGt7waxaDB2KXEdpR8ExQheCuh8pHrGB5oVeyBz7LQwEseGzhQ8F8WRy1ayzRLhvmlBvMVa8rdx3HJ+4onV081fzTiYaL6qAynIutJxbvU3BY9NKNtgt0iel+MGCqWwgbRGjVfmBhK4FhXWFboJt2Cu+F4/EGtGKGtW/ZIOpoW1rkrGu7/UFF7BCrnR8W/MoEsec5Ey1iGn/yykXUN9nWMBiZSteRE8jDz8CNnWDABKmBqvLRKcB2R/DvPscWW6DFzqtjLVEsppNriI1rTrnmiMbM7PwGhXdSFNybcaV+9UiCdQXRS2KxwSEDc8KyrLZMLyM6JiRC62G2HOF8MhdjsNh10NFsagdLIEEh4pG2bKyG4hpo0HWEsnLSimONafck7ArZv6mkgRSX8JZ2sYMSc/Vjrpv3cA/3RQATMclKKPWpVM2Gc7rUh70soSjjhordclnKkDLVknKWiUa2Skjkf+jK8gIY5mSVGV2MO9qf3moxX6aRjFH5XOk9nK0O2SSPrrzC0EqNHf6H5Mq4wX2QTB/UL5aH5ANUZ3cEl10fZwmskhAHPQhcqNHy6Hh2dOTnqtxin2HPiPruj+bvfO/yfgaoQiHoHRFQwJGWZzXRpLQUJgUWR8iGMkQRk8PFfFYiRtCOZ3pwd0HiOWFiiWaIRSbozS0MeymKJAhUaNYbnHqRJ86eRj2bSFWPI3CorjaWyJcevVWu5SWzcnHrgnPnxdERQU8tZXi+4EjolwaButEufF0WXj5VDWfztiphmHPgrlLy1zAqYgc1TPTwNPamNYz8RIbja96nkgdqWtmI2+lqeRv+qyO0BXZFQYU/jO1GkehSpVN5yG1b4JGs82KuZhnfgF6SQ9Wn1LBouctRy45DfPNaCE8ZxpWN2aE94i2XIyo02emWgtoaqaZcrjfCdQQoYQX1SDj1HgF16YdzBKfjGbGN1ghYlfkwJA5yZN+cYBrXyzoncaWuM8GJpUJWX+hlQ4dHjYKpZqA/OEgT3wVFBjTq/MoVVm3pn6EJrgw2OL4rZiPKnrMuwF9Yho40S5NXUqKX5wN5V2ZhVGZjeGdJwzhgXCCDHqQ9Zj3UXUoq5Jqx2td9A4yQ2zUahWJldsngtI9eqtSykTqPp5kMgarm5xZddvLkjQ3QJDfg21y1eZN8gn47RQPAjcezwIeJPb4pf2HsTJNz9hyM2putYtLg3rC4h8NRPFQ4+yiRHsFSQpzAmovPT+Ba/pZPvpTYIrS0d53v862kdzliZkPERoWnGqu7TzB5QCj5rfysyUyAmaJ13quSHgTL9/uDAydVTRpNWVuFUsW4FKu7ZZfAaE/bKltZA+P+scHFwchdAUWtnS0JSe5LXUfydsgywBk/RXfstbQPMDYSPdXngOPLj0gpOVRVU+iPwM9A5c99TA71nvMQDske8kz+0baljOsXe8PoqwcIUcpYgZOrketXr2otQVDyJTGQmCo6AsOfqLa2uFlfwz1xf9Z3iLctM2GXsC6jE+/HZ1eM7vsFbL0MiGAsfL+KBpy4b5vGxEUBFdXWec5L3GgwrruVk7xHMahOUpM4ycw7Hr4juWrfauHw0aXk6x6IFcc+EZ4O+RjxbGB/ZkhnWYB7koGcz+cBM9Z7hhk9jAkvAnlZuV6fCUl64XgSOZak+ILSPRIS44YNgvpAmM/KRDJnbVIXpzhxiSiLpSxqijPgn/Opmmucq+p8+9JqCqfp+EfNnTvjugO8/VOqemef3txl6H6WYPm59qxaJ4/7gtXiNC0J3ffc01ltzAILASsPOFlVdxtVKwfzixqiMic3qZgqkp4rzobBDpgk6KZBaUXQcxlzaaiZTFrW/nmaZxsmAGXCA4VcOJ5BwNXWGXw0HQ7E979WdkAZOmKQNqop8aMFInL4NBqrb6pEjil0ixMIVfuKjdMK3pYOMJqAkKawF+p+Jqo4e0e0N2oPYYU61tRnyr6jRgKUOCDbZ1Btg4j8X9VBLoVJZLeHP0BDiIlV26XxObgCJuSFyjO5ZBn1M2LJyhYzLHXzWGxHSygZl7S+hW1HTE+MIr01N/5FOvDFNY5GpPUTbCUOfgY1QXMioOtZzWA82iAHIgFg4YonkOJa4cK2vl2jfmCGTYypkpS0AILvl+YnxKiQZTNOwGPeHOitKI75eIa88w8IUaJ2KK2svDAsMiL3m7bqhVvDJpZ3WksNTPH7d19PpDjnszOV3njheH3W/QH6QqnAK6aP7MuEJt1JKX5wUs3NARf3H5b/NuRAqfpJ8/o33Pn57Olw0g1a0u1tjweBRSFCujF7XZd/0FiQQz6hSg3msijoeONccZSRzeuZXyzdllafa8/0c0272ZHZ80V3RxoLI8krpO5A5HVTYA7iZ9MEcGVO3I1bLIcmU30gMXq35xrg4XSjaMkrpq13F4Ep+OcUZ5VJ8V/651kzixBb0HJl5lmDDh3MJosbDN0bV1AoJn1BODOOCWELB785eMvqdnV2OMQshh1LhZ6oUa/WBfMbgmHg8cst9+0l9x+Ew8xnKDOq/y6QrIhBL5/+f+4oqImT8XsIAEGqws4ymCHDIfbJ+nFW2Ft6D5kbMIKpfx6nLtz22xcAtQN1XGCGQSItPP1Ry8mDcI9vl7Sm059h2FMmr/3ACVFVcUZwZeuioCQPOF7/fyY9CkwisLpSjkduKpSuiY0j3QCY7KgUpPYsvzKRJqdjYglqyGQejT4SkAvrgGKtgC9qWw5YuELvONlENjozAuN/Xbys0k6NXmEu18DRyOaw4apSxbskGfpm5w4BUNeTx9ai3rANjGsS+mCLuAOPfoLBursGzl1Wdm5PyhiYKQnKMI7OibZ1gScW2N+P17fytS7fsWI8t2OQ9w3vPN/ISjRic1abZzBKVSC/fPvpt9NBf24eiYnQcaftvWqbG94Gx49sOjv4y2wNrLMWpjxJiSdmvo8glb6bWvugipbwyEnyMklFLCt+dL6E0j6b2q8FmhunZrOtyktTVC1Oatkbb+TRjxNf3CfdC0nth1b63scxpZy9L0f6tX6j/xt1XFqzqdkfCSd4wdTvrlcQlAsmSVdWlfXTJFVuNrASmEwN6VD3MiuWxhDFyDUnqSUNyjWwOQ1cp15zS3OlDkjGGFdmw0okRxKnUrZqfKL0ZUzMaSPg/OWpiAYXMj1umTgRcybvN2UOG8Pxly/+rHY90dpAMfLr2YrdzWtuVQBPPw3jnta2Io5xuNJiBLIxqt5eD0kNX1d31Wg7OBIhmCPNbhGf7RFZnc8SBONECU8Kz5gekgyKhdzHayiVYbK8lSguTJEY3p847QRTGRQetsE+9gptLZhDFAy3cFgcGouFT5Ex6MD9j4UPzvorvr5n/1MsMSPSjsx8aojhcWouYPmev10hbjthH4bqTRdLlluC1cqsRPMsapceIcuUmpq3CjLohpIrRbFua8MJT3rwLG9tkdV7Ny74TGoUK7TLB5ZL8Q0Z9rkVMP16BsLQ1uuWTvS1OWHofAtrQtYqvd2JLYxpv26ZwcVkc2VMqBjUumAOhaA+lbSkrvAWnaiFYro342OWSUx784kHc9Gd5UpchSfjJMPZ6ZjT+anxlA+qJ3NgKczsQRqDxomxOHcol9BF6e20x0Guyzek+llt9NAz8CyjE7z4mX8r+MaxmOZy6VwRB+fBtaT37ahj3ComQ1H1a6HtMIdcSfVYBiV6AHIGHG/CAwu5UxXWTQe37yyBs95MngWKMYXv0Pv+jGQfO2wOWKtS2j0sCRWd4Ltryezrz8z2z5CGrHZ8d92ofh3VToR3c+5l3c8iY8JKt8atY1QliXdHcqaz6i25gwTMMImoVb+W/Vkn1e02QORU9SCiTDKNhjyobwGAEZ75PyGtEDtu54fACO9xSSFjEnwjSgbnM7pyf8yDEgMAAFxHi9+2m+v9T6CMEsYRvqtQPWuK78SPMU4YBTerZJLvG/yPs4SiEvgZAkT++fasyqwOj5HCpWaAyLFdMyid9roZDG9Dho4eOrSCm7PacgmHIWJ/YlCjARSZoWJsvZ5WacjK+/MVmqezCNU0F5W+rxn4VlGel1QdzoKNLLZlImT5iNn3nbl6dhxVzl6DaudHI3CkzgZBhTd1VTlO5EutWb6wbR54hhqV//RQM9SUyKDTLJjcPUvHTu7UizCLp+/OWOv3E09LooS+OqDX18t27DQkE7rWZa2vC9olhGR6EZfVW3Ipp7BmsNfu9Dm/NvDB37+Ev1INlXLI/aBOBGrXCAbJS7XR+6AxwrkFm9RTVh3ymjVCRdmdy44oElWQ1ef/k4hGcqIN8FJonF4DBETLqjWV2EuVlsmkQVAzRh7Vgb0yu8PHXblvHZ1qUWqcqXtHtS8wC/JDL3e1dhPWgpvJjFJpeTQb6qW201q7AckHJptlFM61vjdhFNdrLO7rhNvBcLc+KsFKJ7FthDZogWwdw6qjGx5InjAKOa7QBoySjMd/FfTccFgjR+tGJ+RRGo0ju5a9OCG2jk17+KiDZR2k+wiuyi/leBS0gaVi7kSn82tQk2ZscCT0n/oj8atMlPnvmDszbrvrkqhjRQbnUDMYBYudghu8lTejRbKREdpRi82nBbPQdFTr5txghIKuynhKZI5cKKjAav4CbxPmfw3h9l4DcMBQa0xS3yABth06VTZJGBTHu6DsPAtVyMg3yPCVsdKSTt2aTkBDF3m/xAdxha3ql3ZX+K3yMk6UOkLkVMdZWOCsU9scZ5OsD8VHscjzTG25obt8NkZwsH9WrZPQVhtHlgbbm1Vq7Dsz+USi/pRgj/XWsBXUe3LKFgI4gwjz2bu3gMJS54zAR4v0DzSGbfgL/iDI6uG0NODIUx6Rvzi9VY1at/KM2Z+FRUCdue6OmhstLVflg16zQ5tz1s9TWy2zbRx76wnPO5jQ81l4NDucsjFkG4DQw0VWOcsMPDcijRccL11/Dp+Wib1ETQ0GY7EWNEyGW+/2VDBFb6B0vM+umQ/DZoiMepBxYA5OPAdufz8gtgOdpkN5yNTIHp38ytlni0GQFTzVRIzeXo/eiXxQ/S7IGsOEleripNqshDLCu+aQOtOodl82fWF3FN0NVSEawSzGjHjVEaLBGYtvrezfEjWP2NF44uYx5ErASbVxKR6Q7Uf5CgXn80G8/MijEnytWeyYZ3na4Ujox/OEgOEgQIdQwyTyjj9YcjtanSKxXMtOZpUR88LEZ8E1mQL1UAOvCzPUSOcisEvtadINFuKF8HbIiMF5n1CcPuuXPextSbitz4/fVnDtKuoy7xgKCh/lBQwNFa0Qev+s2+MfM8rzlx4YgVkCwGR9gYgV9HeI++hppKvMvVLtl4p4Ffy+HZLzA2x7foWOEVLU76uMCaS2nU55OrplerrHD+kk+vRlPc9D1m16AzpqzMgthYVOXiT5IgpxKm1h62TC7tqmxCNROk2oPOemBKlmHYcQcZ2SQl7/4LF2gn0j+9iOjhgALKwVTQp1lIIQLxT7+dkIU7MCQSIdciFCfo4l4WEPVOGZUFPYMgQExe+sSxBxi6Onvc+/2N7obM2xTe+mbkQYxvRg7pNKPX9Zt2okQhRW43if58IzFuaYC02D/jPj1hkGVh0o75g4PNt0JsmRqurIJn7gktfaOsVJw8WrdJijP8GNwo78Vx6RreMz9ZFC2iXWvv35Etm5o7aB84gYeqvWCT3Ot2iLwBdQN51jHkf2qwSrY8E7SaM8iSdb7Q98b7qHapjEyYHx22WDWiZ80N0ZkX9S3Im8EcsU5JB8s9fOgaiBFq9YSMAl07AN1y4OCUVVt2WN8Fz4kL8WdM2+EXa32faE/fwbUkUEVR9diNne1UjIqCjAd7qU7BQINHBrKzbWxxOCsBn2uNVgMtpH/c0VcaP2FW+YGcbGj3K8YUOkrYmJn2JwPm8+DCLd2vxw/tX9YIrkH2AFbNtuYrIzEzXS3Xm7cf4y8z1pEGC0S1ckvgBQfJJifRQODGawq0qupiGegzLMlHyV4EjNZiC1T2aXw5Jzd41+d9WWkqZD6KT2SGTXjrcCn9zueXi2hLX7QErs1qqLDhjQ1auD1WzE990g5chW71k5lYerSXZpAefwNunIqtoNRYFYQwRC+YNNFjwcsZy4Y8GlD4TjRcgMLVk2V5q6rbgBwvF84zUkyeEmzlV59ARzljQ4FCuvnKHkPl3ivcPPoYpgBeezoYKzQtWxcovBCrJ4CeZHEjRdssvCmJo6st9W2RxA/mmpB8FAh7gM4QuOzvjW2VAdivN4gPNwp2472ObqL4npQKYzhrKAISlpLLVUmFHQ9PP/B3Yn9PgbQtyIv6la/bAMWs/peREXE88jS8D7/Na8SPLe6KtpiPXMlxvtFTBxpM3/K1npEyHGZHCXKvhT16CZLv2oZfLAQJiQNwNcSEjEpcisDoO4jMuTzmQq00qBNbFlPPEl4yylfXABYQtxzknGAcMlBGzEObqHO2q3b92JdwRBhYqgURkPcslt2aaMVDFA8Xk+wc/lVFg5AneSxLMK4mr9oAFbH06DA6bwx057qNetXktz04gVKIOCX4iVgEXI8JOAtWEWATuFHMuLYP1wltrbyBtN9jmhXR+yIjvKMAgMYKz5oFkEdPpWw+KPVqMyppywNOOkf5QZDd0A1xNjUQAjePuLUy2Y9bOz4QYZ5YgXx/llMmh2pcvu4R6v8IbRiI4MnMC/8Xr+Ni8Czza3GbQatXYPxuXbDP2KfBL8lZwoS+yynThcYbrpxK+ZnyrblIbJHRGcWI5+sBNS97CSuOeoUNKOVQkLXsCc7k5R7tVHyRbzr2SgoXsTAE02NsuOfZBQBkWgZBNLvIgkJpw0by5sz7T8U6qTtPiYPBbIOKz7TMXPTAvevv6eOJh4uC83sM8nBU7IjGoGgtUZaxRMaJdJbaW/V71OOLydk8A7KiG0hYP+BjF9uEVLRU2hlyGF7yT53jzvqg0IIxpZjOpvJw3Afqrf2EO8XsGWT9i7YDFUtKYdf/hbAPdKC2eJelCmOKBorrjlqEPZdh5WDI/ATy0KdLLxf54lZqK7SMzNVqObTU10s07IcwrFUGXlmBWMjpB9/GHpmK4A/FhT5VBtXNhCcM7fIopcWAUW+20xcWeKp/WAgHQHRGmQ2Od/Og0TbNGs7wt4KOe1D+Ym4aWr1RPIx34Hv7H5AGa3dpbIBaBtFbn08dc1syAR4LH+UITfKnEaNVEAqjY0iYzpWP7xa1KlEVBRLT0ErLSdvRNzg3IBgb+3IdWSoHOql1x9K3OgdddcU+SfLG2J5q3C6jlf2QVdvy4bCuQxf4MbTTSSxB7TTkwT1Fx6M0RIdSChg0AJvtxK6Lnc1k0PlpGpzb6ln2Amv0S0e+ajQw45Y5Ez6Msw8fGXaOgXLrhD78EHXEizRN4aHrYv5ZY5t8QlrCeQ2pqs+OcU3oz2NrRVyfV2Xtr927XaLzyV5GrB9STx/P0YyHMcDb0hxFJ4Z2AAHI7j/Yv0MUhBz1imb2erQt8gbbD3v9/AUsW6sNcxiJUQCYdIcGfVHeVe+znpRThVtkAJnCVX8BEhNgn8mHjK05jAKTtg0ml6AQyABucsUr2waGcp7ivZYyHD0+VsyU43nlnjnKaf/D0wecwd6PifLKKZ9LDkE8UPai27R/XPL5kFLbm1k6+hfAxKyX/eqzV0p7IoEpR5rvJvAkSKVsX0jbyoPAdMZ5r4rCzyJQmusPXOntgB7Q7sE3R+2eR5KnoaTZAiyDGRw3tZuFRMDh2zJrzcxnY3ys7eemGKcjgx4Hl8z1kHIy80hnN4q4pyHA4QEwll+o8+RioMz1cuTMW3BalcjnIFo7iuEd1dKy+dMyXtuwnhciNs0MuekSHLjaOcXWFp+zdKvp77rOFxgpEV0TrnD7FqFl7KQQvTmw6xZBIP/mf4wdxuU9j88WZ0ebWG2KQuOaak/NyXaxZ+JQiyy8urUZQ7W3ybslCQpuUXYLmSKVIMCb3wyruEQ/9Ulvs7j9QeX5GrO35YCFMtkmA0tg/svDH/HhOayf8s7sJ39O+eOfa9BE1G3z3Z4afXs2iqA1C4bMkgyW4Ys8F6NVE8lroEF0sLjvdDSqvVshh/yM4TzgeGC4BXUgMjmi71wUjopoZotFlng9OPeqVo6kMnsSIoPkpsp/xWL2ShdZJRKUmTxUMKUSt3MA5os5SiQ/FdKknfzq45rjlO9FFeOxuPTwzFvRDmweYSMg8KT4VeAG8vZw3vpDU/UTpPUx1Qi05yLn9sXmZ79jInHIyRw+Y1+9w4RRTXfbAgq7vjccyCyMvmspsAqK6yszD7M1k2WZ9LmfQ98sazuxC90EtqbrfluvsPqjJKUVOeUNTdoEMfxQD7t4TeQCEAxh174ssPEWHjNyiuhkFZF6ikTBhaEmHlTcc8P5HC9fyznnkElkKdiJ/ETznAdsLISe2yovFYI612V5d4VlzbclQOia+yPJMqTn4uQ+5PpKpcfXCbL+coGdzwriKvA2wEPIpTGsGOONoZ6LM/pt5DPnN1irJMPwybH93mKTjKwmS/JntwStKZFVxjkUl3mTtypsvAx1b6BMVyxbtELJx7exbqyo5imimQNbmZdDMPppqQAb+1+d3D/tLonIPi4X8+0bITGKPdP43ax7jp7M4RFnGXeZgT6ACEJwDQlsw9S5uX7Nh7JRd4jbB0pGEvZpunwGtJi7kpTNHVOMxAZPaciOQh/UrR1prDTw7gJJLvVQLcpEHPnpMiRWTVLz6TtSUWv9PQKPoElCFOrOvIByJh8MxXfRX/pk+4VfIaIiTJr/qCUzte3oaJvnVYmIR3thU+8pO3JET5PrwsGydmk++IKC6pjWTgnEF3fWcjaMvOLgTCBlKAeo4slwxNVcR7S0uMqRiwqjNFRdGX8Dd5Fmk8joSHmweLop6nua2/2HdchjfyVd1voNtsyw8p0YHVB1mOghDEJKruJGHh4+Lj/s+I2//tCuvM90MGH8Tl33qrnIDXMcw8e968p0hkP9HzGyaVbZi6I3fnC4UgJ63kzo5L5m0dw1JB1BXeLc51DtOE5jA/RfPPzsO2sjLECSvPzaDGqYXk/EWSOeT/Q27Zrbp4PCuNGk0RYieL6xZds9l+6aAjmFgr9jxmpFRI1TQJS5QjAXXy/q0FgvMiJCJ6h4JBQZGgr/pKU7/15/4txTl2ioetn/3uZoGPa6fBYZtqFIRJoXrEiB1A78bzFxPFD1XgvtDqZQkBAlKYAxUrrnplLdPkL2u5TcpiGJpqYLADYZ26orQ7lldVyMt9pf17QQre+U1jmBFOLFkXcT3pwCr9gRgKfw5aKfZi+Zc1CbNcXJxDMnKBgGY658h5BMgqsRPw6PYk4l+03VoqKOgDRL0ALcuxZ/YsBR1NAlcdQBLzX2zIHcDBuOCWelWDFwieNkhbchoTtWqFwrWAUypDB2lX1yk57BHUslRF2AaGSZIlNvKRbpUFiKlmiWQFO4Ql3oT4KBp6pFphqj3NViuc/fC9ABbQky0+AnyB9QcSzzBeo1+8KcWzvApovQoP9Jv5qDiz5zxS6YvAf6jLQVuF3xEJJYuJos5QC1acA8Vkc3Gu7O5cwcuKyk5NgosTMMFBpE6Q49nULBOPo8hnHgygDdEYFkVSEZveyNf6U3IRNPBt1rhg9kWWoxAKsswWBLHClVOI0+G5bVKm987z/ZCRj2x3MCb0uhQDX8ghDIeuY8Germeq97+JhVvnVGzZQWytJUd4A2dbZcRqOvqbTdtTfWMS2SXERhg7/T28h7HMPVwzYAlPAwtveJmSaV3qRDDhYQJKSS5EHQFNghf2TJ10WGv11SanSaCj+O1ECxneLQoGN/cyV3h2R8asK5b0Gslll1u93lWWeSmT+0a41wDCfprNBHm/HZnJVmi8OFXs0L3EIq7rMJNISJsIFab9ui1vkNLqEXwh/XYASZtkciTLOk/9ziD828qU0K/e1d+H3OYTswtvowEOxS2FBAM9KEvxoDD4g8HW6uhF4eEuxirmfGL6nA4UmlWatC1nICF+bjWvQqK2HS9Dn6aMl2hYoF1WzSerXFAXQF4JKh7wgR02DBFmWfPy2OzXKn7K4THugryXuN/bFMsVljaxP64VZibWTBqXaYbm3iv8gKVpzXq+XvF57aE1K+iVfrry7X89mH0dVdN3RgK/x62I0PenSbrt6C210SnV5ymi4IPyRVWWmf3mTpWW5bYyTa95YdyvLXuegbifyDiml6oS4x4zcqG9HuQvY6YVntjRX+aO6z885vyRLLJDtCZ8RNsXjqo2c71J7P2df5htyFW7+OOpRi7E6oGsuMiFF+G9OROZuPjCA98Vnxi8TDx6whsKJHvP5hIhMJJ3F/+z42CH5W7c9VvIf0Sa1GHasK+9s6VxI/uY6mN89W/pfjqtm/lT+LbIVFygVoT8w4bhJXNNJIwRG1bpNpTso4rD46xKkS3undCkyioDuNlZKZaYncX+OVJioxgetggHHVhNmFuHlRt7uzlOPeS/bI6iHmqs544kh/E9LMUrqtscsgZ6a/2oB8oFONbN8INrPNfmUHuubJ94ncMj718ba4kYspBYqEYOz7BAbO7+ilinRODC+PCFqNou1duM6P+azXB2/957C/siz8sA5U6LkpWz7S4TaVzZdYNo/0fTY6xLiqdW3oWlPMzJ+W9oku4w6+53dHZQVYwbjE5htdwcPeFznmW3Sc82JskgYcexTRQnEX+w7VqxZS3VmYqWk2npY8HxSYmhS+niPNHvuybM6cjm+slTQv2BEn+599GhFO9O/FEQrCMdR0JCTi9Lsgwy6sgDBgQ6q4z7MVhgTo77JhHk2SxQyC1Ias60GWe5ZnAZoXvWeIahxcguEg0SmjdD5ap63K19R8Hw/PMC2/VISlZC+/Lnw0Io6aNFymWGUs6l4CntLZ9kCp1Sx/bPbKpDPLfw6m5+rGZnk0elyMrHBSljA2/vjLgow5GIYchsChyV9TbZ82SSdJ2aCiCzdCS977ME/7Uu538Sv5PilcFnL9YMZgetGdMejxzVbBKEUtrVSwlg2UYHQtVFHG+SpMkzeEeRq0jbXCuWpvCee/gSYrn6jPhXRlgzrNxUhn/Fp7JfX4TkQ9IINNwUvf/LrkJA7bY6HjM9jlKMHA55sC4sFDXEVaWI8pyrzMTs3tSFzXRFeaMOik32EisqKHqWxuuU+didHNuUTGnaQ+eKaPCXsvCPt8SKQLWBOQOrntVB8aDOrlPtFiqRFwdetTB2kyEeH3PYyhTadeKTItGHUO38f+8KbQo12k0NhzrB4RuN5jg/EpRet0uiivXZpFS9nvza8bdUbgw4J1lqnA3N8T2VmgqlxNKjhTLWQTaX4nv5WpfqCyPBhPqoMNB5nJ8rR5cW0JAQtunKhX3vvosI7pgy1GKxnNIfFq0ajIfyd8409TfE5K0pzIsBJ2V4Jsn1J3myIxmcJz2cc7WIs1g04NxoqdpG/3iulUqFaYinF0ezaybR638FaqCon5hHcqzZh482+V+HMuhiFeTdefy7Nt8WIdkFoZcp6iSRduLfcfYvRlc9NlHfnY9SbOvX+66cPxeD7fP5cN38eIln3Z4ljWjhd1eU1SBFqTPxITNZ/jhm1BjD8EzFDgIYMdb4O6bnZ/P4VAdj6ttyBXeT7II3VxtD9tufBn/KWEbGpttkCrdrdVRCmNJYmaPs5zxM3PIWCsNTN+LbROeu0bpNU/vQPVVYqO+YiequiG9fm74lUdmCO5uLTmHbg1n3tcu8LNUBum/OA6jwt8tR3dsruF8Bda9UjO7JXIzPIASpmQawpy7KWPgNg8oALA0s49anPbBOYIXg/jSnfllMnjinsHyi7X5sSQOZH8IVNHmdFr0nMyVRMPI2MJtIXO5i/cqgDLTyDm2scl9pdMfjigkSOxw8DfMUU8UXN1uOpKtUSN29nX8kkvHcjH1ZtuZV8W6O/4hak4aqenueAYwBIvkNtrpuOiqFbQd57WuwHsmcZEp3U1raokuk8LBt8danegaMFKt3JWXyqM2HXpYTTRm62YKsG+QN/ePVHxuZ7M1OVgmO6OorGcza3xGs+7YuvNu25pnkka5/V+c/mYunZvcNmeXKKU43YvHbmlGU55QGapeLua6e29nsqFMGY2VxE7ObzeY9lWBWu+4thyJZP2P+RmSL4Gdk0Cazm42nFmq5zJ1r1RTeZ6W/S+UPk1pH9zrg/l9hZziPo6bCXXiEzesDa6KJjtS4ftJn365J0AoVr1hBfS7Qs0NDkqySF58nqCdY6YPEIbvbyJLMWFHX3Y086GOjMGbBy3YRwdPxs74Agz75C97dbsHhpH29acpgyv0ND/XsMg1jfyleX7oHpvxk+6zOvx5WMZUUrdXYxj0q6/n6aZBLxFW32Jm4/xk9aJDDd/SDaCkUmeYxsuEYNDQg+ITSg3FkVI6/QaentBsekY8Q7wCfV2MtIMQzzLN0w4YcbxCE2xp91w5/ZGJ8Fe2HnQ+4G1J5Ms30/1iyJ0fRZORJSgPX32RzUY3yghcPT+eKPI5ngndcVHp1a+LklMH2fQPC5UtPeXdWf2RC95Reh/mSj6+9TBF+0m1lV7xMD1uRflVxfzTcOKolMLuq7srkbsHRqCJkxtG7krL7J9ZW/tffMOIrwtzj1V3RRHOlS77T1D1yIinHonRFFOB2K79OhEOH/Q3vhvEIbmgIvj8I35ftL7QNcKdqtGaRuHVFzFEsB6RDpMlt2zDiscAZ/91+Z74t8lPsk+H3N/1jSorxYRrPrq+whj8NkpgpySivxIwbpRh5//ALdrcJ5GWw+wPWrD0lp/LAHvocaPORBjNjc3qYi6lQHerPU1oEuec0o2WcVa89DzC2DUwKPC8DbzzSWslYCPqwjVzBIsL5yAcYrMydpxq4T0B/16f1S/KMdM8qjdkZ0GkoK5no5dKupgV3frWtOLKygCPU2ruKQcuirMpCZvlaMVEPiUm7wkvXkOD43pUfeJ0rTGOzl8Fvys7cypalPQ8fbSyvmQ17usfN0p6nQ6qW7VNaor84zul2s9miJY6PngAUaYjV1I9tANQpedXFZVwJmw9V35FNTXsBuIoG56OKN7wyp/2DsrU3GPJ918o2byUZxa6km0WtZapV20pGS+4oMa4xurFgKOcC9yKZcR9UbHULxKtdABmCCwrOBctjXiMf5KzyIrvuwPxJFzdLtHsSZvrh1oIo7oH3y4zbgfAaHp3zGqQlE49c2jOXuVp0uqr5JgGMQV9T+A+rbJQxSVer8W0FSPyXJzgZHddfwlMQsnsHxPaOs21iyctUabpIWvIWHrcWYbO2qAB93743k3GOxAjVpu9g1XXOdlWYxRNn28cDp2C9tGE/ecut7xbl1OTqonepCupovHsup2WMWStwapNayeCRphG5sfXzC/EIwJU92JEk/olY7faJKBIA8FKIXlWhcEU35s6c39IImxMEdquuY/4PftDmTOyVa2hHP8paXY9Gj0lShcSoR9pmTuQiYtV15UxlpTcC8Ccy4lk6vhSD/ZpT4F/mVl9iMWJW/LT7D7z3bEfdrLlMVzTRBHXDIlT1ZtrxSodmrFwu66sk0vvz3zwkXq94tFpnPAzULYKJIx9hyF4pj2T7ExcWKxE/i5DFuQzACaYQKm5ttSCtanFS8zSGfF5QlKHW4chppbOu3g0tLsGsDD0ErKR0ZIq8lrsWFhrmsnZE39X3LCBQguYAJsiGxQQ6Tvy+Qze2r18btRWLucO4VmaDVCqhjnOz6t7DeGK/lJk6moa8HHuU7LJy7XmskJnQAYOSQRTQmwUWLg4YsKQ6cvY00jjdsOO49O7BrWtCehF6gXTkyONcma98dVgUbjsiDyzxl9ByqVytO+lfWBFG1RMlduMD+tA7wrgC3l0bXGwQeC1zbj74kSO/MXHzLavPahrt3La63kwIONftF79nX/tHhLi/82bh/7pq8IfOuOBZKBWR+6GxvLtQ1DWUYBqnyUUpjUNuCLjwAfWWrTQ5hoz2trtvtz+LnrPZt55W05kQLUzT76+I3d+k6SPoq+5cUpeQyXDosP2TN8W+i+iU73XxAYv9tt/x/rWPndYToFqLwikMY251CveCPRgr06Z7B4L4GUywm1bB/xUfioW/4WubJ1GOhtWWLWbOMA7R4k5M5PMQTYlffj7evdEPO4/sId7hMouWoFEhNehSP4i6tA5DGyzSjFZKqe8uWkAidhI7v9R7culLE7Uk9ZKXtFfdWcuWBxlCCrlEmndt94P0MDSkvOZ8xCXNv4g2kVGHhSL53gsFEmeb9q+2QgHzb1bOi4i6lwj+t5GJpf9ARP4PSl8Db5lAldk8XOaFiVRTaQAAfl8DhWhypNQjuIyGImkDtK4QRfdKCMT3VlZGnK/rHDGv+XiHM2enGEm7GJnymTEiV7VQIZU4iZ5KnY5UxVMSln9Q3k1oNFijWJLgLvaUEeRIkr7jztLjMZyMvDxNjsy652QgHIwDR46g8i2pOCl+fM5l+iP3vrllQ99RUDktwPOClMlqg67BgpRsH1265eFFG17kgFwnqGbaDtQybVMjNjgxaFjwgafJ62xdWZ5GjVhSTCjUCXWBgZGCdVYsjD1BGP0/9HRkrFQGj/WkbinDNTUouyp6OVLrOSZgOnzEoX9f33qLW+/yNK2wEsH9yDlO1ibxzXnpMe3p6MsaYWW2o9kN1BI79g7EjL6WsH6HNzQxUpEwY7wjq+Cfnz7hT5iY1PwoLF8VnHTvfGRMuZLcr1H1tjxz11ORKacX1e6dPDCg4uMF898fA/lfZ5r+MLLloqz5G15sfT7yApnBvhaUTvvRcZfaa3CeJooyvReyCg05yasFhPZMLmUTN4/dhpdtkRjngSKN5Z82UOYHJ1ili6Ra6zARVfjX6TIaMaIYdqLdna9ZTnyQO9IYBaADuUjTDT4kthrdPxNrbypQVSl6MKdw0YEZR4tdc2nAlMsFC6nfzcvClEtKi2BmjXDMrE/Vkg3g093zYL2+4hExactdVJzq2Az1ttK89UzGvG2bH4660Uc2aOLrj5iVpTtkqj9DXqoZnjQ4x7vucc5m2pwcgG9zFsv25AgB1OJNuy8rmIBaJEqqNYwmJXAv+Fp7+ycWt6CTXujxYAYJFWnwxkAg0mEsqtsjMf+BWi8AVkojW4TMVtqJvcUVlJdVIdC55c3XCinLHPZkhJ1v58PBH1HysmiSntT3PieLW4+CNP8+XjAGKJyos0FO9SoneHEldeI1CjY4qiIozMxq2t4XZfuZLLXhUnZJQ7lCRrBiasfbvxtoCLotKVnbEPvMscdpSDOiCqryBy+7OtA9oj3HLKWIJgdYEea2se4JuSjSnXdJR+4TrTrncA1gtHlPHI3FhTsr4LUlixSnXhnFjpQY4x7eFwGCucABYFE0RM2fd82SBfesgtpR7tHKsCOfqJEYlt1ESykKBLcOkcithlXsu/Duu7BqcOOPAveY2SZu9ZHMOT9JdelH9k4i7x73sxrw+RXGkTL9baM8lxwrMssLy5BIJoN9MN1eFkRajhQOvV9z2WXSF4D9l+Ez9nneCjMlsxhrK6lCi7KLKhf4kyyXsOEthsUHX3y3B2mdLYtKEVQIT/7KJo+JsTO+1Aqp2ULZIwG8yOiWuMHLiEcZUecxd0IpvUmKbGsCeceSOw5HqmwZkYQDJkW8j7T8vW4riHfMlweFIfMKI+NWsRL+boiPhUc505J8km9h9gGawolSUmwWUfWU2iZHZ6w49lyrdja6Q3y4qAQPLP05Ii/qDnwTT31yAO2vEuvSXypzBkQ323tKACBnqPbOVjqA04BHcrih0mTIVpqCvt/U+c1RUC3RpiCjZhjneZc9ogqRD/MlfOPTuiupZNeD5mWJqlkSUUk1uVI9o/5eF1w8kafQsw1d5mkASl2N4/VNnerXZllFNCqWm8xa1hcXLL8XLUqeJ+qZhQkS5ndJa5Z0kMnEianvZ1ZjjfcyGp5nd7JmII3fK2RcVttUec5SimUhlfeeqEGFBkOLWVD9LG7ERvJa2wT0GE3oQVR+8MX1ifXHLKyMConmwUYCOikFvV2YpVodyrXiplCKT2SIlLPPbPF/mQkB7eraV7KwcgEbGAZHGNyg50VSWJd00aLQWGDEAf0ko+XIz16zY1LpbDK3tVKdHR+SJGLK6yn6fvlW3lLfDUYgBD7vTC4POaTIkXcxShiyYHuYnSpE6dhhAYVIpAdqHuAZ6BMFWzmWGWTajHI6PzeF+8+A3JxmyKdnhnW76Lo3OxYTUPvNPrTkZQDrZ9z7+chXj3PsYMPweABTqwCLfIF97+2YhHZ5LzBWqYFdCkY3uvOylEjCSfxUz2B0Qc0nWy2tKYnDXKoAyaund7bEBkW4IBcyocH8gN5U5gTT6R7/tevNHkwt/x7EcQ6cGbJ29BL2pXNS0eVjGZWKayKRFtVLv3uq1QglhZa46yn3foDhuPEXuqFLkz6ktk1saISkcv8o9cmfTuvH4aGxfZbui5/ZXR1D8Xi9EWfz+8ot7y7EQCboqrLYz+VcCIUy1Hd8KRKrUM9+hSQfOBRTsV0Ksz10ww22ozRSi02Ur9ssyDoZSyX30uLbi5BTGpAaWcEd3ACtFzwWXXOdrIt+d3kgazt1dviCAy1FyVXi7oF/JSJOH1ePuLJuW3szynPvjDmzT1PKI61tX0KijgkXN+wx19g84tmz+sKUIhUbF/IYAynif4pREqkbKK0zlqv9yoe7Jn/tcyl4CkblKkFdXwMZKxDJ5GBeN/v+wD8CadJRWKYp1hswJOkrVEmV1YdHkOxBGuWry1AjASFg3TFD77sppiB29vuJCWODfFWIJpdzi2gt0zVYkoESBM80rOMO2PNs/QkTHS4Nycz0r3xwOkxEHvUMoyWK5NxQfSg4I1kgSe1Nt6bPp0Ojdqacuglv8AhtDIYiiXM3OR7VvZG+FtSuDo3i7IYxzYMpr/+pZ+NoGunsaWi8DQ07sKKJHi7QDWShq8PDKo1rMtum8hJvw+9QjdkNBVdVxeuAKGo5n17gwAFPkyavb+gTdZR5ce8a5HL+9Ti4qEwy3GtzJm+sMAitl+REllfMdwSAEotRO6dwo7Zn7lGsXrqm4PY3vOUy48N/rYdLKLvDNk3gsOrOJGLRvzUoKIHs2X3rGkaVljs9Xuri4dQ1KkRneoGJ01DJ+po9NXJhSazD/OWt7PaEUMhUMSSurAhfIutnCF9KhMWAx8sQaTg9MycmHw9NElz9gKS83uhV31+DyehmthQqonrtg7G/liWlkn74KMLK5jsYsZsQS33N08oLCAqLXiVVKnG5zf+Z3cDq0u0qT103cWV+oCV0OIftaRewxP1EvkggtGrENJ1lMfUy27slcz8y9yJLnA1nt3eLt2MayBYjUDwYOx+oFk8OhpLU5ubsjovPIiz0mO6ZzjTXbAt4SaLmhxWQtq4Zp1FSi+1QKRLRtXS0eXWAUYZU7Yu2Q8eWr/U5LAQsoSLrPGABH9yB6jedmEXqb6hKnIgoRsO0ztE+RRqOuLgOXMKus7aZG3zA6jbQi0u+x3AknwfMnlf2rYSWpMjWlYr0ahzv2tLvswiFDZNEZTyQGsD5iqeDNLI2VfSBXtuOE8gDpETXL8eqJrMAWoCwXK3etHC3DOvinVXCz5i0uLQT+GgxwC2FSt4T7q/SgCYhA3vDt67WOFsskv3mXC0G2+lS2DDmBYV3ndVteMGbkAlJ1C/2ZKWEfDDBGzfCawq0vMjLVNdL+BXHU1BR4HiG7t/IgItnIn3Ri0M6G7Y2g4NBEPxZp0sskvFD9BmOOyzhAZN96Z+QpuUPPCI6FpNn1gYN8ZMKbO6/iGnKXxeKjIS1Qw0sowEKwpE7vEHfoCZaOrZKEwHXiGCXaR8tcfYGphUz00JmHox2PdEFF13MK0SX2cQJuy99brDHBqU8rNczp08yeIC65VDMjhm+v6YA+HAtNAwVmWnQK3tuYrJPh6YVPaCTedErs+sVOKBGxjTihNCYKin6uLph75tJLltXNqfMIeYdgDNXW6HzVzpRpYxF7kIGXBLS2aWqR3RmzeM1GbgyTaIeL5bfy0AQDLxxxKpfzRdDJVymWsSJQoYN9UxpSTajlLAQ9FFixvkj56eyvlbmok/GAa6oHlfQMp9Ey0pZGeB3nO+HCvbFuW9ZY//7ytegPbhnnyXOw6lttCzxUvZPNN7EVUNyV+iTQyXMMb2kTp6/6lJaWc8eOTNGLytYXXBOWg7mnuPMqoQNeLHAUOCgHGMEj5gyL7g8N9FWjhdDOXMODEwfpnvmZY75lNyvh4HNN55d+3ijLz6lenT58ydQ5ZO3TpHtjuMM7PqJNGjQPOTxqruukz289g7l1HP7Ir9XRSei997pnXW66gkZka9IEMIDXOR6mSzJDTsN9cRK5nqfTT9aw1SyzoGzq9UxPb+K1zSdwhrRGBV9dTPQa/bgBRfXMhd9sK/+h91vWvqHnh7Sl979p6/c/rcZnzu7B/Rqd1n2fJwrxS/019jf0IcrcAh+p3XhEydSrWN/Vrq/FPcCnsvCUMLvON/Tjn7eonMASYAMQnLxeZ1CyrF8vMljMQJf+5mwe5XE5/KHEE5C9/rjosRbdJ1wHlvuFOA6MttECfcproUXa0FhbDt1sKpNIAM+uATfLKbkx/9oWsGmZ6yY0L+8w6ByrjeuyDiw/FKiCXQyXzka3ahWzEh143srPBDninhiAJE7iWvxW5uZBu4gBW6m9n+qyNLL7vzcynHQWyoecsM6XSGi74NIh7OZG5hosqE2347U52G/XaPNxFR9+ygzm6z+r/7sE5oDJ/1C2S4Mj3Qit0SETd2hEkrBuPeQV4wwCahqcY2qFzhb3L2j9iJbVgibANrGd7L0MDIUkIzOxBlqW6PIbepuTcVzPb5lIy5jCd1N0ulroLWJe92J0Gc0S+y4mgoR7jaFY2KYbU6sFECr6f3swjuH65gccuPkYhUj56BBEkT4KHqoUeTGFKLbb1+r+NCiDMqClWuNorwdLoTk4XzWgru55hee6YtH0c6YJTbqns+7kKLaQT98UpmyF3PUsDCYOOX4/DBBZ0cJo5BNMLvpxe0cPD+HhPvK8zcS26Ule2ISM/vRLR12//M8ucqPvJg4arh9S8gEGJWqaPWLqMKPFzO2nVTmFkuwJv7kZWBUnJVP/bO/celCY8Xf/8en0OCddDJ/9prwb1wS3nkgKQT86WNQH20Ki3/4driuyUYOsNjZBljnlq94YhJizzoXMMyIINCrI+v0o3cBtFgGscsxWekgpa7gNoebBqCjEobDhoArAWzPHXGzfeLSF9qld394DE5Nou/ivrKbopDR/RVRjnPX/sB11ya4LRnn0Bal6s4I6HWZwxEt0ammnTGDHl266iF1myIhj6RUMaUXEgmVpqJWNSGo7lyyxe+nyDlE/hxs2IQOhfbxG2U/+KTEMOnVtiZvxiHvXnbvJNDRaX5Bmuuh3NoxO1J7f+CHmN4DUrH5MlPEzoSxU6OKUcd3idJLcc3MDkxxa+7s/DqkbHqT7PeqK4r4JaKueOmGG0CStYcKxq/dzognG1KLDC6qKpvRdYI0P+JJN77HgdgBL3PF9m6Hu1UsiaD/pLJlnAY8RY3FOILTUumCaBPO7ninLUdOjl6RTogdnA3oQafNU83Mb/B2n3EQa8NtROPq+/Cg6bVRmeJAk9PXe/Fs3xPHIPDOVrKNIfyMmcrttuAQEt2C1/SynEcPA8Z2KdKfFGVoSCAEgg5A4jVP6rEC0DAz3fxNYg0uGrOTmTACqqotVB4llky7BtihViDDph+p7g0VoupwI5WcXGOns3b1NeTDV7QIC+y9MARVweBYMTN0UweDcttmEfRv3SyYU1/9jkMJmrBSF6qwrX26HodCIAtzcKm/Jb9N+x2qrW6dSG/iCTYYXG1KPk8OAmVkoJqQTkrTqvpxQMWgUEgMREIOT/aQPQd63N9EmvMx9oOlgcVeGyS6pTQv4/5Kre8L3TKDPmDFHBG2LK2jRpnFVT+gMOirWzOda8ZRo2SRXWqgUtLNtaLe4lhINorqQMoptEwl0WL7pLD+dgfcYva4E0LvFd7z4C5ZSV6wIfTJCBpCHQWbeHobTSZHSgFDl6sOsogWxD49mhKZVYHELseoXCcHKXNrYCRyv3lvteTgNHNiyqE0vPPaXdinu2LhoWS8dEqJ711hdmhaeeFsS/TJYzl4Jkj8tii+OC0XCGW1Qshmv/XK0gr/dyzFAqJgwW6mLc05VrFe/5RDQ7l2kWIBjlrzk16PfWcpzy1aN87o83DonVevZwv3mdeyDWYavXNqlBCd5Fq8q98zWsirUITPb57t0IYayoPsI2Cm/vPwsiZKYahp0qi5c32/qV3yUGBZT+TtVHG7GGIDc39lUbmR1Jn4TkmccnY5mQptIa4cZErGY3N44jV4JxmTRmWqnVZpHG0zL6HOAFfYZOqS4gudKBy5vZ01DkQYxDjCCuBCL7p+vcTQbvhgV0gLqb1IQ+vdRIxuvrKFY9MMoMdujz6x32MCgCx7bd6HbBAYuhlBtVElUxI7XD0nI5r7jFTJ7TMHBGXROoTnrbqq7QLv1zewaM93XQx1qEGy8qGo1dCfKVOiwxh7daNhK9aqdp1rYudyrzPqH5fnCXBz5yFJwjdGT5vz6whqUFLUzD+caIPBQ0opHHYyVeqgQyYw4ciFaxohOSshJQS1Bh9DgxIUZSLh4GEbVo+1bWcWzZXlUypNWWFf2AfCQnEx+OrQ1p/Z/KxT2Ds/r2RBea36v4OJvIphA/MgZBjFSjC8Wq44Vot3reO951YOpN6+NT2hBsUFy35OWukK2rOxEKO0Up4+VV9rJUJLqgUoRZxtfc3O4dFD/DW/I8Uwkfn5/f+CeuXmSYEuhzVQnvOjzupWwiN05VyLCTpEaRpY6sjXDFZoNWTkZEROxGGncaB3Pr+nQ9dygjfKaC/xvNMxXUuM9hrPu++YrpXumxsazfDemT2vcpjoxMZRTCLScsxoq0Nc6te8iqGTa4K6qDXonjhWHZn9TnnNG6a86X1bM7WCyKc8HDAZPSN8//XQE0ubeXW1a9BtemmFFaKZWh2HW+C31pnqwJTPVLPp5pgqrElKry+ooxPWcPDhJmsd7mWWWzHVBd3sVl5dSjLLoeY8vFemO3qeIyk3HlpMh6HbX9YBbHrA4EagUoc9cjiqDh7EryPFbhqXzK6zVkRucmrI8JlY/IR9R2luLlZeHQkeVA5WD7Aa+aYWft8dfld7xJlb06iF4Z4kxYGpmfHma+f1j7RyYfe+umul1U9GebnIpzaHm5H2NYtqIisOZQgOPOfdyOzn/rmyC/Y+ZQE/rRD6J02Jo0UsQbfCZ+SAK8MP19GaCDu29ANT+JMobzociFHpOx20ZIJJREx097aqDa2OXKuTcct99nKqjxie0MkAk0bDXVfi+fBr70m4hxaoTmPvTPW+K70bjdwayVqwBJX52l6MkWtbziyWG28D1izhvW8tDrpg4unXXbVHF7eZ105u4eFwM3W05Q7LFuJwrnkXu8UzWHX7+bVFDF12mt/jP/yoCEfB3eXeCHQrr1WK3aSqAxmI0t6xxpcWbjzRNS/sQtgNlOF9UqDZ1eaA6gP0qi8frIjB1CIWeTM8TCVcHIaT9Z5kLQlYPsC1AJ4fSlYEJW7fK9fNVQbZvVeLGRnc+6JULNPyBHaTJJVdQsXlrHCaXDK3uBRXEGrmewrMHhuWrIaLaDgakEFQ98tak2aTIjYa8DBC2fNmAhusS9NO0K0rZTsGXV7k+jZofgb1VE6txv3D8/u3s3tK4g1388apI1PookcY2Ek4qnRG9wT8DWRus9nV4O9ivUa7N8xu6wcsMPJJnLV0EUozEdynsGmUFpRO9Xmwy6lDeH/RpP6RvubwNHNpzf0vNDAg1zAVWjfKznXYT4uQ3sUTODkyYiYR5swkOvoCozysJbvq96WilFc67KjtpvINqnQQCDdBCqbn4EzbVbBEi3VjljK30G9dFj9q1xzBwO54NyOOwJFHDLtchBWRSXNgOKpNWhXno7kvedSQ5I9k+m5t4wO/z7O8lqQzVwU+GCq/4No2/DoYtSKgyt9824/+NBH3d3/fEmHJyg3u13ZhD56jSB5u3xN/hBsMnlZkHYIsCRlp5etU+wisWiJEeP8/0osH3Bt54B0RyFkBdqTAKwKgSQy4mBS48wY4TQF3JAA5egBVCvAvKbDRBqhGAXDlAJh2gB8Y4AcyoPc1ICIAvZIHjogAdQLwDxmwMQN2nQBuJhX49g2QWgw4Ig8oiL5JV2wMAAQAMAAQACBIGsZYMjAeyAZG/x4gRAeqSxjDWjm4x5K3Y/Mv+66f3w5vn9k3nmWMmqwbv+68Z5f1eG4f1Tn79N//H4bzt3p4cu4ORYd39zLILQ/9lFRyiyGdlrXeydOvqyOYoRGPYEWueAZ3KIBX8IDCYwEHKA1fcECl+IbLUQM/4RrUHhu4HtuI33AeO8UPTiEMRBCFeWJIQGOUQiJapSVkwR5UQDbYe1J4Roi0gVcclF7gOxxBb/ADjp46+AAnox1SoFM6IM1xC/pC2uDW04C0x9nojNTjTuk/0hA96IpM0HsKkNW4N7pHZvir9IhsxANogWwOjE8pdh7XGh2wNWzgvrDtcW3RGduI3z76j+2Kf3Axqh6/LEqwU/yxaMJuxA+LM0SDK/ABRY5XdT+SC801umCX44cPrqgZb+YeUYYQXi8oA3yB9yhGfHr3O1G5aqqMwxdwqueMiRd2apiMoRf2aiiM4ReWaviM0Rc4quuMJhccqvuMDBdQaoiN8RdmauiMmRdOasSMARcealSMGRcOahSMkRcmaqiMwRfuarSMEhcYatKMLRcZasqMDRe9DE0xw2MzDGHwz2PBjOHwa2MlDDHwJ2NUypHwp2OsyiR0h8OOyuR0Cme0ClgwHqc9DDt058Nkykw1R8M1asYwDMMwjJo8LFociUNe1yiokzsLuVPZtLQ+Zhb2RGaFqYp9nXlYq94XlUuucMUpSKnFGvQhXA5TR4zJet7Pg4uAg+Q454t+is5unizhFI2z9+LSsLlkBOCXeSjBsO3LbWnx4doeAsUtGeISQKTTpDGO3UAXjOunOZP2yQ/ZwB2YnIIqioSRccuuvuWyiRl+RVR1UOXwtlAHrHDTrYN6GRloa70tpx8ek65y8DGRCMTjt/b3udl8ZfjXbkGZ8PmmdintO8+nar8w6CgxQVkr4iQ7NxlDJyf0r25GUxoR/wOMd95VF6MsnNKIMamnvJEMhHO9Lfre+isamdjtciSztgdP58qyqJxIRXmwN8d7E7c4cAWobS6+Mhkh7BYPN079sN4vyzHIFe/jDANYGzNFktpYWH6Y2UyddgQpI/IOgyMWCZBDQXTuySQestk8aRJajKR/ZBpIuXyNjHuzNNNxIeXYdJGnhxQ6RF54xN4BHfopV/3Xcgl3nodmYm1SEPaOvumTkSR9foG7p79CjP71WM+RsCCNKLTHY9nQeeG7q31D8GluRDTyoDleppApKYE6l8RnxQcJrhWUzG/WPrNtX/yYqP++bMhtjqPMAsvo95I0vDGMZ9TGBxbeCjMH6T7VuCRb/D1X8dqriDd0k8k9p9bH71vQBzyxfO5cFvzRJwEf18E0Ddmf526BU/N3Z2Nl0C5CVlCHxEaj0AqF6nkIzZsXxavoCWAJFuIF9rSefNZm2bzo/0MOc02pw1ddDLO9c1PSrmrYlKn1nFIuVCNU4KFIWQjHyV3rKRIxhZ8eUlVIGYIjEu0DGHf7XbgSSMsb3gnPOQ3gQD3f94Lz917EcEI8idX18JkCAy21r6Enlqh/KAS+KXm7KVxR6wlJp0/r5q4qSHeYiPDk3AYiXmMgibwITmHfiUmHKFItJIZfRjwBWZAZByLr0mJOt8Z7+Rcg2NR6Y1wYP2PKHHnhYqN0+peIYY6R1xEsHIl8w7hB2uNuB/zNIF1zRgE6Z3JViPeU+4nnh6EO05d/CfAVC7LC3GqezDZIXPqAZkPubVTIRWvGDBNx3g6Eorxh2IbtR3xgEpkYE0Z6Q4MAcBWhJP1SSgnmHO17EJZy2Om/gG6XmUTwSAua4k6w0Zfh9CWih0SjLlkk+LgoncxuPAhq1pNOMXOwQg1UaUKv+6RjEEjvSRDbOZtiWLM15KmYMOzxrEByx2PgiZfOK1hEicmaLjKqCFpe9rBuUEYW0ZmnaXPXjs2QCF/6+/6tb0qQ6Azax1CvIBk8sq3Rd7Jz17E8A2n662ZBKhMgkL757FmbWlhXoU7PiGdc1ZT9l7C2L6PkmYgEGkJtJonppyZZvGHk6BNmfUVxusMwDMOyhnukzaQgxmH6uncIb/QObu2idZLN0ZjL4yDanLKnnzCRzylphAUSHz1D2PPaZ/aa9UbAfYfw80EVk1K6wqFqAmenAW0+tNx5TkW3YVldeutPp1/HZ9oU4+LxbDglEqYkm8PlCLich7rr5jaWcVxPsvQeIE2BTulV/LibS+cJY2WEM/Y07q7NSVyt95a3hC3PkG0vqmJXDxJ9b7lt+wiXBE5LLtcbGUKvYMwi+3S8VkVnWsccnFPoud8Uwm0g7gl8LIxKReg+pM+OGeij1LeR56G8yxy5sjJAC1M5APnVIrmZLYPj6DaMlgV8tk3jFGoBntVutXuLjv9s6NiIPjo/rox3RFKcPqVLsujnTLKEo8CR/ILwBGdNzzlg94OKC98atH60PVFF3EFEvWuojPEWHi/HbnJ2wERqASCioYiQVxsei2ZHNoYo40NEQ8glMI25W/HL0L23pGrrwB0WMKJ+cpXiGU3AocDVrUCnEatYYjv0ogNmBd8MEyT0dlbuYBRP0ZVSqjPrIeJgkED0+yqw2ApoEicb6282YP5sOyAMe0U6tus/fJazebU61xW13Y7BM+ZNDG1HC1IAQFo0rXSk8qn7hJrBnJ2ccyFYaxWB2l/fIy3TE9UHnULcqGggsckfvyrwuVGgVmUH9pHmo37CXDb+eip3mtvg1gU8zarFwzveerZ14nQV2AO1M65LEOiShCkrt13p98E0Tx7rmV1eGPef6UyWOMQnNyTGievEpQtkfPJJT0jxdLixVZz8ZjfNicX8gtdlslrUoec0F5fK/6AwRjGEV59T+upSZhhAaLjkCo23ITgn2QgdCi14aHORNuGYtkBh1GqOpKMIqfP1ZqprU6DiRO7KSJ+N/DaRjMf9216lMM1bglFM71YJqwQEnbKGpUIwgf0l5NSRgtCRIhVuNbRVQiq35ZlpUan10kgRt6cavSHit+2oAtHlJ999S3g62rXUbqb6mCms1a5HZZ+DcgPZ9FVJa/G//AX5tMTHs2MngwWkgVKiJNUygcgYOA4bv2Tv12MDSBABBlhNWLOb+yzzPNpnURHVyS/BHaGeecrDYnfBfoO3dTBLE7TERwp+C13gsVc8TGQ9GZ769Ts2vp1+UpGZ3+1ibKNNetgAD5fXB780mfQYEU38b0sbC8aovldn9NC4op3ilxS/W6Az2K/IVOXlekEHyRiJtE0g3lAuDcprCNpDJ1i/rBpE6LeVfYY+G52B487RfuWhyqpoDTqqR5J8yJxZWzYa03+d2iQTss4OvVFGAcAJydH2Zn0K0grTxixNnYlv8AFcNdkHYGM9808JH1SiBOH8jM4Rtd2sPgKUC+2r7FuFJqWLy/tnfrXWoB6wm3VaVQ2GYRjGRHaOicigZcz0HhIO1RqVBW7ue7KvViChdVObzVtXeAjbogUbXqKYr+Q7dN4BcBc1wO2EY5ZzbhbahR+90IxJFmoVZ6GqJJRac+FG3h5df688qaDsOYFdsiM4c2eF6gMPxHtUIJLpcCXXlw1HFBdK9IwHbF2i35vIr1xCBFjJ9/tYVyi8X3XVImeM+xeKHByQwzzJHhXi4d8xYBQ6YsvKnGh65gvkoReYyYbEVDww/KUfToOHmG7fOCFW8C0Hj45hxYBVrbGX/Go1+qDJF+BOQY954ZRuqpJGrI1B8Tqo4pYa3ZfdnXhKiwXN7npIloXzQbNfV3eF9ohz6Yv7UZCssOs5kqUrcvF/8u2iaJ9xQIvdh0WkuIW4FKIcjkMMVUbAJ1O9fhOFj6E2OWhqlT2mSo3KmXttYVwCLHapIpnrlj7ZlfETvRcsByYHmPCj3cM9Al40a1TPiBrYss2Vk4E76akwj8xp+842KOQ1Mf14neL+jtzhaowuXeAVk4rmo0tFJITQC7A6gE68TEUNlOzKpw5VFgjvhFdjLZHET7vsFbKbYlKZHnDGLYShGVzBOGC2gBvb4fbJC5SyV04+kPo3lArOgAPglsOYKzM0XH4GEC1y61cPa10qMEPgHuXFqtQMhY0mwvIzHae3JdzEVOU9dmxSC9/Mjegq94AzxpjcrCS0qOuGPIAXO6exAMzi+P8po2cA/9X5sgKRj/fBEpaJfKgGt/Bo3vQjqd2GrPxOB3q/s9C167OdIOEiq/bnYm36pXUXVPFjBImVHWNQZ5kMaE8CsU/uVUm8zPACEPqVsU2wofRP7RGBYsXYvaXAcWZo+W6drrewr2sThEAkEWEMCQv0Ohurq//MqgwAIX+4KAl9Ju0a6mQYrULdpP+El+6YRLIV3vOEpD326NCQ1dwO4m1rMcWtsHI/dpcBankgPoJ5VH+h7vbsHUZGMmojHGsO+L/wITQOoqSQYGVm02jzw0Gxp3apomaFcgX9ix3ZNV4+T3JTOm3m/xCcOXBm3AC3BN9z4HBOw5VUsyZ/5olp3M4gVeuP6LTwTfhmtHv5VkF7j4lqbA1s1kQcWKEhJ6NEeEJ0CjbSSE8aqq3M4CO1d8raw94KcxArS267B76yUfachjS9GQahy4P+XTolVTf+fvCkubJHXngXOT82ND6/lawpSAJCYiuZj/Ww3XgH26b46rjlb9xpu8dr1U6qsq7Le5V1f7UjJ6Dx3ZBDUuR3/cDdIFIkjKPB8QF0LZwV0Pjf+bd2u2FqwZH43nSnoDwYfwfp1InZ0TP1TzSUN2/z6K+XJ82Oh6Y3jCL9kJoOJs/aYyOCvVP/4qViyCeoOwmqAZjiLtcq2sHTVDuAYRiGkcL51jv9Y6aN3ABYGKs4WaiPMjEUFeldzQcMxtFb032xGyiljvzmjii2feT40sHIO9Eku5W/pMEmbNk+UulYCnnC0OJFVCkHmGVsF3Tlke96z2o5hQylmIMpp0izkIFzdINE8FDyJBxwPpmk/erlf1euR61u53jpMEa5ahpg/7UmojpL0sPZenaHUaov81tHf96aVOuOEiexxevRLiW5nSII4/cyGgD7/6nFQCtJsPwNQ8skaNCEDNjlhmVsqZudMrx6hJrN4NTMh6sKu9PbiwGfs2O5zkoGdnsGlGALUilYI4u+L4JkXIGm/pZZCmr6mp/GcTSvBx2HBlpl4+FEVM/EJpr+XJnSKG10ScbtR5OAJ3pttwS5JgkhMQwJmrkm3otYttL00mbINqnQV+L5OeWmkfGV70C9Qk6lpKyOf1D9Rbq3+GaZlURj0fuUTtvbVXkQAl8gkPJL+ussHKD5crDFYSLkvYBn1SyFZ5/sMC+2psvZSkUM6m5IRgifAYvJQjJnWizF/gCXDDtfC93G1Z2XBRsDJVpT3nebyvIDxXWgy5vLnYp4gh2u4OrjgvqnKLHbN4ansec8rEoxwb/GRm78xWxfRBrkiRW7m2fdhNFhH/k2FngwFLBxsnqkwDp9b/PbfHPMURRh9grg5pya8ES2EqN0p+umo7Yn5g3yHOczPuUxzFkgEOpQqn4w5wQyaUappfeZ8HWlWQirML2K9LoXCCUnhvOh6Zc34jeeS4AZn7Bffnq2beBz7Td4tUTmLiQJZIJbC4bYG0h4B01E6bVISAmt0rF9YtF0/Fj9q11M33DlMRgWLLUxHcRNFomIRgdcG4B4XOmSuoUed4I0g+CmPmu4P8UOBy4EHWmvb2bOBCa4OkeJkTpKyX+H6OW6U+go+dkWKJOOVfFt2pHpdurkcSTQnAhoDw2VY6PMn5US/GZrdSWpIksIKwr7Lwdn2Dpg51ZJcAdMQbOxkcPpPRuHidcG3Ei7WG+1oJaOytzYxZOEJAZ8r1EjbkWRvXCznCyVKghTHfyCEGQsFUVcBwdIXk0W2YUpIMFouu71vae/10SRQxSLYgc5C772HqXcNg9ExRx4SrUosLFLXyc85HIKvbpKmMWyl4sI831L77N1gyZNCOLJfoymSSyyXOUGe20kFm86qkZ14vGQ8gSpmV4h8clgOwj9PYDVRDHMicEo9nI+3y21nP+IPHYhp5MycrZ3qeRBbv2/iafFo8v1e62Pn6s91mTu8mepbiQG3KYCT4dQZQ5k4dMrcD9rfdOpPdQX6bEDnajDy2d/tDmWZaYQ37u3ggZzebHrcE/FPlVeD8cLoGwEAaZpiEpXJqbnl3eLl70gyceJchIRbRiGYViU/bmIbPBWVwc1yBc5L5y0kHaoB8Z+9aMqVaOePy/FmOfi0vwGroZqpPW0YybE507giD8aJ5uTxTlQToXyfNkh25mGui28CDrhHuRKOvegjtASt24I1kO3oS3xfc1jEtMhI3oGjHS8Wtbxq56ACV87edIDqRfbjiyTY1DYQrDmE95VEMkwEeRhmcq36B8eN0WdNV0ZahARzALtjA74zHrC2bUkNy/yK7PjtkfGONsDg+I6luMCblB7owU68vLU0F4XbRjiM0u30UEncZP2tD043G1BoQBiTCfszgJbYzRsHimxY3qJN6fvcO5V5ei7VsokEx73iYRyI9NJ92EEFSSHKc+XXXtP0f8bdpmtyCWxczLkdIH6BryR0PvAQBv5yxSbsQdobKalvwRrYlswaxCSkyBaT8UhV+spgR82Q06XZt8jiTQx9fmEmhTGnx5prKCcyUKyaXroqQP7FcvxMGdJ2Os1UC7gsnbqSloqOaESfeNMDyYDQv8foF0jDZAvCRviDGVrIR+mND3SsFQNJULWLrsQJnz3lVAfvn3SQeY1690Lqb8zxVoJmTgMEhxBj42fedFxa1YjpiGzNkaHjQVKfVR22zFdYHmV5zgpRDpY9di7zS08PR31n+RhhskKcLAVKabkMLlEOep40930+KFY3x2zySs65m/mmr6TzDteUTfwIBP+vBSj1GVvuvbQ/acSmqubNY9JjO1CXOw+eQ5vlByyZeAz63EiG7cFZ0ibww0VxCGN0bC5dqrqqBl7gDyZ02xPbuQvkwbpuUk0GcuykcL5e8fDnMUre/IZPJ28XGZfAxgHmdcspWHttyccRQDrvkBcJCvAQbinP+MI3uxlKSW/7vvkOVwbBVUPys+ZyjIqRArwdPLS0xXEoxtTo7eba0/DbEyNHgShmvg6sUB+k+o69MWrv2gpy3H8Q6S/19+peZcxp7UmmPrOPB6jxCOSgwpeaZToCgNR7UDx6i/g2CFd4y4oWtXiQBbhOWtwJWPn/4UDSQk9oolLTs/h2fkjAZWpjLZ+ZtRzeLaCc7KVeDDERhU5xQKREQt/zGmtuTSsal3y8K6L15PcUnWvX+8RzjGzNv/7fO4c/SQJovWAKv3OmfryAJsaWcyrybHorzNcHc/7kOtW0ku5xBolunKQR9YnbRLyawWWgz87TUkQkLQri8QdpI0oN2hxYfauMgsTunCLVczAcqz/2cpZnWQnYXPUi0bZ9/GrpK8LilYNKdMMFfiaQxIU4e9ny78roAlyPkL5OGjQ0GOQyBGaan/tOjQtIC3f4DxoITIC4hPxLwtpgP0q/IYeiSrwQFJCP9zW29syYw9Om6h91B397mueV4g2auJa+iCOxCCGYRhGco/X8RUkWZRdD20+lX6RlWGUFsIo2irJh6Topfq0a3r32U8VuMClu2wIKa7jDCjjzHDATwleTwh5Yn/bOxQvCO1UeVmMlnk/qWh26IgLhgP0rJJAVjsYfiK+VTNOwtt0erhV0pkTOK/VPK4Mn8syrukjZ//A8cH6DxdrXiNB1TRjfuN+JVVJ0Ym1ROSXsKSJsG0Hp+yq+fzszdUxDpFrG1xpBs47o56lnHk684c3I7BGG/ebewpVZ5XCktDa7fP/HSH5uOAnlGUoQ4Ln+vafJpT32TNVVkV4YKrGZKv6tg+rVRBCzeaq8r+P/NufQmcwu1rlHmRRQuEE7RaKkkebrcauHnzO/xAZgZ3iXZ2wayST309m7eylISkMKRRsMQJTyW/IZ7ZoxSi/T3MrNh6GC+LYCNoLmDS9BET/2zcyDr1+kZ6wUyAQXqWIX+sKxlvnpb5VqP4WOHUYOC6/mPQ4lk4cb2Em1OMqCgBhfhNLGBtb9IxU5dsH6aHeSc8RjK65ttIMH2ud80IL4tuBSaVreTttBpR/pZ5W23860aABywDIpvlrfjVeTxL1mH7V47wdEo2QuE/A7eYujctF/2mc7pPB04uSc0+IZZXNDE7/tlXPU5C/iuKqkFiA/OUZv20AvFHupmNniH/jIxi6wRYEWDeXJa/3Fl1s08rR8i9+Eo5u0gaNy2Pic7nrw9qahGHbvd2Dn9DUpmDoaQiDghfPAVZWeXQ2l3kWkUu2UQsEhipLrxJpdTj4zZ+8VdzXSZYsEzcygkyUUNssN+dU9GBbbh6kHqlZ+pDCbpgCzaeEYbWm+UW/I/BuUDU4oOWSNoLotUAoBEBuxX0ESfNwbyqKyIuiz7rCKPG99fZbO9a9qlC/ELoDEKE8B0RJ6/AJ7fO2pgJ5Ef0llEyTQoKO2fUfd6/12ZynVcVZS4FGvXxx33saXUEcvm3DOsAFjC9miy5qytUMzLWa84m95VtQZ5/h4ANZrIVKG5KP/UW0gNoHy103o3m4GjLenMzymGsdOEsLuuSJB2fjLP4GxjxzxxPP2zNTea5ykXml1U+2c4w+DpLMkh7ZcAPw5RqLX8LZx1uuHr2VgUMcOFgjOS628XtRxpueFomf36pya6MItcKAYW/K/8UMRtRuKnA8oFsVC6g4sFcgnO9YT8PuZ/9ATxBN+L3ogpX6AjqX3fgUEnGAAl45LbQzFzo3n0N/4ShC6PNFeQZ5c5ohlBbXRoJ93EocVwDK06JhcM/pTpZNBXX9tvgdUpD2sdEqOeeJ/IzgtiSaz2oH5DKt+SlwyFWgMJnhimZdrFsOHxIyAmG0Ot8xI2OxHneIHA3VBEvFkjOMy4h3cbWaUhbw5y1fteGPYRiGYWQu6wu+Nd2LGTIgcgp1Mx/po/SdVWDqaEJbXAJLgCWMpwWyf5C4LRMjrMCWc3c8ZfpkgA1t7iCNg1/Zdp9pQZkSN0ZZJlRUbvFG9oZcf65DuuB2ersdpZQ0y2NY6OPvY210sin38LJJkE1jcAMqap0A7Jle3DuraksCFyDMD/LGSqgD/m91WDCCAzvchvzL5gmpZQ7q4VfPdlQn9dNKhBt0luHbLHfe7J1kc4Q3JAHBUOPw+HU/A5ZfcORSle5x4KK1J4qZ/GVA7eD888zOD55u4UpSsbJU6YSBeoOt0p1FI/dK/mYqEZLFbtZXj4WC5r6/PIyLLrpM/6tuj7msL9g3smq0ePF0n/XCwEd0+IKiHEVbQ52YilUYTk+xXuaikmn9HGiad5qoNuhOiSem1FzMaQm/arzmm2/pu+Hj5ognj3GhRSgMOPELWPk1IyMpl1aUFM/FCBUuqw3MjLS7fto+dwMw8a49nfj1CcVxPesglTwaQ5KOIdcZkybTM2tdEYZwcUs9eGnLW0W4CsAqAV9LZmbdFzd0GJAEzULpVbfEffJnh0LGv1Oh6XzWKaDPFRg7kk3Oq5LNwS5DDv03E9nQeNQ5RCPKHjMUbkYfMDgj6LftgllKtFT3nskwuhScEI8moOk0vRAp0jz5CNF98N1Cqw8+nmgxGoFTR9DWdC8Gs8v3BLT3B8i+IOIU778/tmoAie7xkooPlxeTrajJ6/sL5xib1LQqvOCGluRFB/SBqBAFAq7dXPYtCz8adC2Msn8XOmpgRL4KhANpq5dM4H4SkZccSEnBudtin+OfsUaFOjS+BjnB9vLXHQuXZkZ2tGNdI2y0T2OCHkDwL0csjvjk6ssYuT+VPw8A++eqqCMKJa26o1FYKfXChO4RRg4DMbM1vcCApDsE9pCvKdluZXx3MbAfAtInO5VBGlExvjHnVb9ApfJMm0lZElj1GcvoN6zQtm8WwrTuYeVlLE5zJ3qtp6L6M0byPQZdqGXDZUroT9LToUAGeneL2YdzyIDIUdkTlCtPg5RrAIZFSrPJXr84Fb199PSNWv2mMaL6Nmpsnonzxx9MwLMSmKd20sNbVUeUda3cyE9tum23ThDV9DnDgym5b9A2XkC7QyatUdGjg3QUwQbBSzTl7Sy4wdehU9SE3wFG3vmpKf8MSjz/Fz0xyNK+fYvEWvKwaJAVO7lm4zhiJNaJNYh9lUh8v06s1qhVGK4zJx5v11BJzeq3cbvJAI57lcOw3CLUhqQG4GZh8VeeIkwKzLbuXqvyLNwf0h1JqirE0SrgxHSzy3UTeb6fJwXyCAY72Tk9DSMS/tTlakMlJlufbjJ8SJ/3Ngnt1KECUywwGsnsXhuIdBiGYTjslspxa2alezV4Bwg7WcvYpMnH6MI9pr8S/jv8zZ2FRCHFx9b7rtgBfiSZCfboJvsvO/sSM2nUgNteEFNHCqua0IIHuBdnfl1ut9sXRW/mk2p5JWC4aFr+L/BbXaOzRplTcJvQJjwUwIoEUrHsB5p5mS3b2XlJ0R6lGmp14bXbbjvrEw/NQir4WAoG4mjHkqaYFCmjDecH69FxxMqxXWoX9ffmNADbh1fU+BqQuBynHdWkBEyGLBsTECUws5kd0ERlxEEh6pRHu7QqhGjQi0DkBQNloENmReETNJjETEHHX6D+/K56bHtR/VZw0XfafQfO8VhKsD172FqFsKtcFBtaIRow4oVy0DN1qWtflHM7235tYwCgfuqWPcymFYmmMPVJZiuU1iYsCp4Q/X/3uSoxiwkGk29df0i+hNr9eyB7ma03M8qWNYoVybvGF9x7smMKAgGHnFKnHvPMfA/r8krzbEJG07yHpJKCV7q+Ka9H6scZRqkdmjt3QLCa5o+Jfix+Wtlp8Ciw4yY/shDIldiAtxvZcHFzM4GJKgACXPWaFJLrUsZgesuZ5MqHmeXH02/V58AKASfGkEwRh8PdJrgCwmwZKAQkY0u8a+gPFyH0g/820HArtGmGvrpEzQi9k43IBKiIVVQG0B9AxaGWcKlhCkPMSe4GJqg/1nmNDCfEguMRCnE5kIkHBJ4UjhRSif6shRL14/UVRzmrX5SFTMlgEGX8SPQhHCki4gVixSi1eak/vxKzPQTl9Lcpz2EGyxwRVHJWhIZVJ0DYH5ZPmfO/WzF3XJv9nptmpIeysn3Vo1hl70gPdGQmG8Rprasobl9b60c8ToFoBIKeqlUzeweRLksgscoOSvAa3fP9aSYrmDeY8MuFEfIU0p/2VvraqJYngTNbOXM8Sddtbhz5zjL6fmQW0RAo75OQY0ZfjlVr2mJLqwG0whKXp+q2VBUHKaBt14nFYgfXXbix7OzknVI4kRdWkHV7v0mtoKY8JPxXuahkHGp696fVdcXql1OTbHKLSsYeFZypj3zMqXpcR0fXSY3KFI3pKPd9OjPwAGeJcE5xSZ6UYvBuCd6V/b88yAlB/fN8XLXU9LALHJkp1Kd0vvoKVN6ycBUIc1N085PrbyXNyw7eBlLxwixWsexmiNM8thPfq8YUrMXQXtujaZIW5vHWNTL931bAJGYbnmnWkkheHWGqXKb/NfYLHocSnsB2yQWNep0KF66lSgT/Q+Z4Qwvr2GduCR+2PhJ81mag4ZxwqgJk4RO9b183X9JJ3AoAmWVOl8BKV33/CgaVVeTnyPtpzAzTi4/88LDKoRXAs88r8tAVAXM+iCp3Pb5nc2mIN3Ai3cd2NDES5Jh+ORCAD+uAbMgAfiMFjr4GyiEGAALQaA1UYQzQo1OiYNuD/zUKE0ewmLRJyJqUfJc6RGFEYcTMaW/62IelM3jk/tb4xIiw5p8YRaTBh9d87czw4WVHPjSUARi/39We519ee9Khsj7gFQaER1+7V+z71ngrZf/2iTG0bP+RcR3f+Q3mHkr411UGW8M8fUx5I85Iy4+zqC8PKDrJBAuMNWwW6ywNlDE2jCsUglAsBKFgS+hKhiFwjBAKt8ZDfwYc7jUHIK52PWAC8BcGOA8gRwKwFgrvMM2xdYcnEy4xLCvSfeLFHaDQFQzKgYj/mv+FuDy6sy16L3ycnbIUuhjQshtmqmI0S+OIvFRJuPKktysK45A5TqEonVyjcuuoLq59yuLQ0K6U+IfL325ti6MnPk6tLN35M7Apr+1Vxad3aZxMXvpwxZVvPNgVNKIOkTiqKO1tULkU1MU/iywOD51KmW9cPjrbFree+ThbZenBj4FQjjWq4smrNI6Xl5795Mq37u2K2uOQJE6pKF38RuWtk7r440sW9++yIgfl5NRtgAmT5xw+ByttYD2SLOriv0pZ96eXJXIzsBSlcehSWmlViRS47uxNWjq7ti3upPK6d0c+kUuu+O1TWfrnr10iNNDXpYYhfSn1T1W8yBV1P26lifxCxcmTvPTqoE6k5urufchK9/7YFTtu6E3dk/2Qm0T+4+LLu6L06842kQzV7bzwpZ0rdXFhp6ybeZAlcrFtdd942tYu+i5DygoTuJLHQ2IxO6NSYysrRHOwMj1frxL3b1G9SM62DebleeTlG9vaOzxKuoQNhQlcyeMhsZidUamxlQ3IhouwZdHz9SpxX6xyZVOvd/ps79FpXXVu9N1rG+nOmlOMs56qxzm/LelZkCDY0eBVG53XX48b+DHntxyzQ9LH+9pvmmqSl82sfLqd2DddsC8zgW2jEVg+BWSzffu//w1HKPk+cVaXhDWKVLawENZsLsDHUaq867kt1ImZog8HbXQcZDol1mRnO0gGIZN1OjN36ss1SMq/DeWHSZus9X0s0hjsGuPevX3uOqLriO8iqfz2KN+16+ScgSM6aqrBmlGoDoTIgqh6S0E5LPbVEYzZRhj0RKjYxJHIVk6PgJImuO7H5uDzCzEHjRLrYGXHMP2z0VACCZxHA8rhPe5AIXTFO1yO7UoRfI7O0x+0wuyjCNsKiAwAAGAgQCLSOCWDtUwikeXDK/Y0x6PEDrDSgSrAXqOZRUOoC8Z9hKw5WZod4G4JXbOHCtYaZXdawGRk5diahhykagFLZGRMcbhaCuTChCAuhB1lIwU7fYiGFLgF9UgNZ9CI1KMHeWSK+xLRxhhrMeM+MtuBt21swQnNKuyR3ORxdnj87Grpy9hW1MCgUsfKDyynOSR2OwDaA+AIAF4AQuYM4AQAogHIh4kdGYfVID96afWJRzsqXo0jz0qHpesV4NQ4InMWFBu6soDPrGEW2N8bmALjwZHxg9BYN7m+0o3HnqaRBOqbnUGsK9weTuncwJnIMTAtj3eMvOlk863/jvsNPDTyS3Nbstg38XNk+38JrHL77kzUEG8IvB4+I8TkWj86DI1tlWs0mp43zBbL151AQe7R9tiqgjbH2cggKJvZMgu1l0tvdD7vOro/9N40S36Ls0jjO2edZDTWDy/Lac4FbDvJN2lD5m6W+1stXf1X9t1b59HmMmTSAniWM+CInkPoelSKKQIsj06BHQojqHPTeGuqUyTwr39Vryqb3rGjmWSzpeyww6Rt7/vo0LAs1W47mcBXczWIO6jgVAeB7fi23Fp0pwavvVOBxzqVKHrjcpubsuLg8txney+XxMl99mgqUc1rpD16o5eo0b/e2pmczxL1vdlX2wDekjuqu/sVAgX6l+eeN88Tr8t/Xi/tP9Nnx5vnkxf6SCL0219zkyf+cs50ASx4h+GPY08B/OFVgGE3AA4AsmdMc/QqgXGfAyZjLwEsVxBJQ6WpvwAHt54B+xlAk1Gq70lZGPQR4L2l5oW9U11G0CcH63xAsZJZYZ/3AWfaJ2Kzxr4CI/kSKdcH1aVls4aof83gOWxw6kXN+xJMnZhdNrBLgJJr3PVPhflmgiRMlws19zF+NHe5YYK8M/MsmI31k5n50TFAyqdGfwsoXkU4e56E6Cqn+tVGn4eTz5HKk1HT6k+9PG+KvmDklq5Gqs6ZColPPlu6Gqlg9S7IhZekoKvRepHf9xnJ83fy+bTqEvGq1Y8x7yeff9ZVxxtzz1uyOvm83svzutWTLj+8Pim/CnnhaifM7OTzywvzxLv5b88A8DCcSJl4rRvQGKNBQ1oj1ZqIaq+Ke9IYguBAFsMkUMXIEEhIvFOcSVm9vRAEHoCRCrx/ITR5nCjuSLljqzNQH8OaZ3phZFpTQ/AEdKTsYoR/IB9jj5Y0QGo1RdTEXgmkgBgKEDdsOCuVUsBssCZSctv+BrhZpl+xwTqcAQHrqI5PNuIYHo9WcU30N1RgTcJ/KmLKm0D2bXJ7rWC8ZVpFy4tI+m8PKWEe1n1wnefowqhuzelnBNUKkt3qkXM7VQxEdIsVG9ZsG8P28envXmMNBt//Ox8nN5o7YIOa9l9aK9FfUoRkk34VFUkjaE2uGt+2l/e5N7ew8RHtTRx0hn7tx1bgydl2b8Mf38mr//PBAWu+kf9FVF8Wf/bg1HlU8iGBpMHe+4n1w9v/51S8lnLGWgf/Nl5ekzLj7SoXnfb1bpN7tx+Tsr/EhV+o0TCPkeD+KenPxX6hrUpPwvWrmOVx2RxWe2yebAyMct9v0+e7VcD57q8vJcknHb6XB19LfrCfqBo+ROPTpD9c+Vf1DEkxKpcHe3QX8nry6iqczBkeNpMiCqtXaLUaLtCwaDFtXwSUDFlfE1FzxLAS3yF1A7gpS4boZfB7ub7lgJrpkM4sUFv6lhzqTZmw3CvtMHxxI3vu3W0ronqPwYFKO/KwECBi4mQ1PaADHKHFMwueWFiRC21gm2Ur1PsQzhd6cOM5dBGDRVvm9XF3jU2piOWkGdnhQG60oAN8jWTKRQzOGVNNnoCjEP4TVHRXzrLYwnCCeYFHGBFSedo0qbxR7ajOz4qQhHo59MSwBTpMxKUNbHKJd/26SjO1moF03kfpEKHggFBkRes7nO59dMgHXuRatJvbzutkwiPHV55h3dOOagRiyGaWRE7WFzxMDWYPff+CfFa4rlhB6geRifrlyMDCpJV85USieitR0KRvC6OCH4GMtiw6IoZJHgaSZkMzbO8ka91c2tChh056Z8mDrIBpOUDAYQ9TJrif+8uO95tjtWahzFSbR1/6wpwxrkl8K0JGJRlw5gL2mttvZZsZFssoOccbDgSlbKUrxu8t3weKW9Odgsf90cb/ByrJ90T1om7mgi44qQCVNYkHUUsjXVR+QGEhDZd52W3t7vRc2XXp7mbXl7qHe5iJoz3FWlWr6QB14nKzcEwFrVa0M0IUMGEurZ8lQiVttYSTOzy/NIcRPuksN42XVt143qG5laUVFt4NoPoibQTA4oOrWdbqzDfD6tAOcamz1kqqnckKzw/BDB+RQXF3/n9Lnaw1h9l1+KO9X8SdkFoG7eQqyuH5/0GcKrEvwFsqWmxwFNgT67A+TIpwJbEn55Flbg1HhJVCvILvxCKhluWI1L2aR7vxKMFPFankyG1woSHd5kQDM3RgOUruOLDAM908hssEjd3HrI2z3VUZ8IqpNZjtb1p5txg14kghlosbVqA4aWQ0I48Eo0k+0tR76yx2rYnteV/NawZZgl3o6dAiD35EvrnQvZwQzgQEbFe2gecteBK5jUVzV1RdhJ2MRop6NCoftQ2lH8T+cel7lNU7Ks5IY3NsYl7RpdfKXQqm8uheA1A7GUEryIBG7gMuEDK+BYt64v29IbwJyjorB0eSmkIRPGdIUOioLRaVV3V5mOyc3xgjwGGJi7Ymp+FTv3LjZdgLp9vQ0MrOdDANubVHJYZHzfHn86D6XGz0oWKStrYNKu7df8RCF7mf6ifll41zs7272cfRymnh5cKxY8M6d4WRpL7gP0A150LLsCtvrWnux5XLB9Eeh0kvMTyJPRUb3KWbvNlfAaXilXhIaEWUy3N4lm4adoUs9AXL5DOMDLT+7D3zCLsjubVlSIHx7lXzH96SUkhrjjMqXptJcod8aEBak/K14DKtYJtH+F7KTYL6osPp6q3EykIDXH4FzJ7VErvVilxvsEDLKTTqP8CrwUe5WyA/u4U9+kPFz4gDnhX+GtJCS3NXoNNKVPCfhdrmsWgdaTtuGvWIIa7rDD2N3lIpP+l7UGdlzT6jkqWnVixVZt3wV9P/cm0g5EMTv+3N55/fUl/+mg4Bi35ePz+u7+61k7VOMTJ/Ttt6/muc1l31oeD5J31eTkF5ql/+ujusPcH5+/Tjl+71xX6FH/1tVn5FWP+XfXxunybX8LoVsXo7NZ+vPUKxbT+arULsuRivf2ZJ903Xz/Q1fP39WUR/JtTUXMXykJ6Xp4/8PwXD+u+SX+qFXPz3b91TlDT/RMvpbf5/ZdPn4kg4CIGHx4Fq/kaAhw853FG6qe4eYYE78bOuFlhI68/pLBk4I5VVrq08Fn24ep5JKXpC7XlcA1S4fOBAoXlutQrb62q/hFPP+e5KTB9vOBIPI2p9s1yW7kgeFe/KJjzDglYRcGQd/YjANRQT9FPlnBcz+wiXafKv64B9YkwFcTSRzx8cYbGu6cL7DGGHXDp6HZBWHzfHvuQGgkakBFFP2qeIdvKZT1wm3W0FzJJwsU//3C7LtFoFQroKlW1KpRH+B6Eyal7Kw8LacUJMdQnQsopT+0rHzEoLYc1VXnU+mVUgh9EW2uZjW8trx+w//pWciubNDCXJNTRBfqW4GzMePlmz5ZBWl7NQ7oFbsJczofw4QthcCSBxD6rrKwu1GnELCFZQzmqJTe8XqZ9UYrfoCUj7QD6exvcwyN/9g34weayyRFudDBHKG5yuEsYX+a0sB8enLrYx/+YYTNW5aP4wyqWRt0zgUNB1/nw0t+Coxjt+btGWt5fyEZFVHC7/23b7mwMb6XAXF02S03iJF2+/QW7n8Mhi1jj2zCPbZ+SDDo+8YWCgew7QfLih23BjrrSQd22eYn3RiCl9iqcgTkeEROE4H9rfS0R/oQRJPzAgB25/U7QT9qAbKa6SSURro9PPZfx+HLVLg2HaBP+SArhGRqSFBUtdlxT/gg9YnP/hxMr7IinBkjwK58mUxNRjVIxZ1vQBj7Her7yguwGpunAc0d37/fEVf1u+sXpa/3b/++18elNP7T8ef1v0PVZ7Pf7LY73MybgaF8kFG3qy2vvH4zpxe/Uby8XyoJYAgQw7ZiAOxLN8cNAupKQ8jV1m8SI2D2sVh13mv5j3HDYzlMDD4FJ7HPD4uKencHh8Psa/vjD7OrhBGARHKzT6wXvCI7V0LMkcmNBmSJM4xALaifSPRJdIQs1TjTaRpJgdRFdfAQ65xc8H4F/LivDxKQ/1teClQRvbZE8qIWWFoah0wAaeVgukLBzORPYG87VyKq7QSjoqeFRxloV0B9vOYuzXsjdYgJ9SuuaQMYvrVqhnsBJosOqlbGHjEeYtSeZmBVEMooMxG+4xoE5Ffh5PKPxi/05aeHUSjXkSsTyPBdEaC8vkEyQpT45L2Y1uqQi8d+4HPxE+qxYzL1+OljFsoDIZyIa9FABEnPZqEj54AILBdPSZ8EyC9qIBFvoS/G1rJnPjyELR5kcvRLwXPwIHzO3CISVxw6DHEzh6GG9wyAkqrbgfjZitsXjVaGg5I3Xag4QE2N0/hJT4mPxe50pdTDWtwCUzCAUix7cc16k8LlVH3e5xyMK2xFFh/9nG+KU0uOc+xA4Z3EN1fYts4RBxCVyIgPeNDcHd5+Xgxo7aVXJIha/zGBY6fmkU5RnBDXqQHKHpKY7vAydIX8RLwC49+kfNPdD9+dyeUO42osG5Z8OGyQhXt9dYZTU4bzCXfBNlVnrNVDiOUteqFL6+r8BGmQ9p8LbM1ZOLDkzAkEAuDxxBvKYlvUuqT+TACx5HpyBzhhbU9LkvSZJnYG//FaHDUv3RifV7stE+6Gse2L/uPJMjw3k6yiNbuNJDX9urtJi1oH4Fui2Und9q3jqhSOprF4KMJCWArjesyYV3CZoUSyzaINnmGCp6BDS0IRdIjjMXs+1IX3vH2CPIPzbKuj6LICJsROOI2zD4i+G+sHRtSVtXVsPqYlYWTeLYywMWJUWshcieVVNySbCqhaJSfnFQHt0CFp2y+AjNKGnBgh0J+kJVHv5OUrhbfVriQeaohrFX7QItbly9ksP6TawjC4qt2SxqEdxVEZUfyLp0AXwQrpDkLsEBl6AONlRFjfAa4kYy2lvodmgWYbgE1apWW3UkVgrHfybGubX4HF9Dcw1ci6XF6I/BrTsouGh9sXgI8UNcD3pY6cVEyT7Okyk1sIpMMVXKw6xJzBFjD+kZummhhyRzgu+1KaseoM9ERWIYsXhhefG4G3w6PXRxF4wES54zRyI3zBZb21+ZLhPMRAcA7qGcxLEv/YUCpJjVvD8Pf2zqApSXF+lPba6xWcvTj07DBT8Y821JI27gu4RyAjpIkURKHa/fKyJ1JvRMOn0eXwe4Xi1QJ8iJkmPoq4XXjc/xG2cW//JvQq/BTRDzLSdQc45ue13FFbJ+Tp8JmR73wBPFJ40TkCaiUD/h3aGq6r4YzJL9S8XbXrzaNbGBpWzdQrHruPcjcmDa3lW6bGA1B0wwY/VfRvjoqM+1BSKZMq1PMZgwEvtPbmfXqzegVuuQe3KK1AmG2Tj7OtJlwTCjlpcrPYrl2ICHe0Pn/Sh4ooDdwSyzT0b74g0BaPyyeLeNUWaGbtcQzsVwLIxpvg+wEcmsSJilNl8iJakC1OZyOp/3j2Ouo9o+mfbHTZRqCp/wV4plOzilfIklo/LtfjSabuIYC6l+cpyXyBFmHXUce7YtqV9t79wEp69Ft5tuaybrEd2Cop492+5HU2LHmGPOjil5oA5y78FcvrJFT0UJH6S+httYmCfRQo3HnFMPRPsKPbqfDF1KBQaC4hPY0OOb4U5zswR23CYvw7Q3dd0mNxaxfD/1dyOpwJR6KVHjy0XgCwips7j3Pj1F5TimzJOyon+BNxrXVFO5JvhSk8Ze7s/PSj+gjzTCs9ZTPgqPAV0ArmUEuBrkdtRKiNaE9zjoy4hHrhcmafGhUeOmrq093wkUO4q6If/APXtM2r4DIlARZ2GsXyBQwpkmADFCMpRB1XtWSJvhuaYR/VyORVxcfCtkK6G67vv2f0QRHyNrz16j5Cv0/rzUuHDOe/GRwCEbhBgzaT9NS3ZdlbgZlSb/NHbDt96Q76ySos/fxKjDmawi4E9g7PfOSRLeh91LhEdyN7EvcbxIkA+HeWkn/tcRs+VZ5eS0lPiLiqYLYHBLzRJ3l4fZP+tHF9OdruBm04960cMQsBT8lzHJsWJ3uyQDAFPJEML07lcVhTdmmIdE5a5C1NEKq2WYaHByPcRZi/sS3y1lIrREsWMcPJ3y0kSP7AW2brfOb5fDOgtkJdreJWLqJC3Dj+57rWGcSGwDi7X2A2dtO4ccqs0y4g54sEdYGEcbgpK/Ee9kn8wpdfayg2ajLGa6qNtOXdfV8surXHvsy8xVglNM05zw0Df95YUEg2kaiAKDOjfrBQRLjvG0yFhP2OteSSK/3cR6UB59unMSd3p5OYHGR4wo+QgF0905jukRQDy+g4kCvydnAYVIRIOID1mR4/QKH7jFowtenLRU5kzT1NoWHNtHwBwV1YfOh5YZAkOcGGzurUOZEvw2nGdkhesQ/eHe9cwuVZWYNHnFuEFnu41Kxo8EKX7lsXgRULw0yvFpJrZYRx9u8AeevBLbXdXIV9ESeXV5kJeAL/KAgqBvt33qEA/3moisBzYS/9R1vz3pL3zqa1L7MME4kozxNrasq6938qIT1D2uD3UkwOtqItjnxvDbq7ZegHHNFEiNqL7isnLe5WE4/+O/rhywcsNEU3KjuWWsM7rdUMinc8CmK62lYH9GeeVMDGpckacGRzUGrg4tkUrufWzhugvHTgL0zfUIFczJ/OZdXpT6nAiLqyWB2QuOGIW7nH3l0F6AhPtKZZ/aDIqiZlzpml+xOAxGy2oKaAEmt2Dg4m84ndS7dPqZ0VVZeoaWyl7DKDlBdeMVK9tTG7AHXQSTzwG8NvKLxmrsobu2FrA+Zski19Rv+DpFxZ/JAnAdOUTl+XBeW+HxOj/tGIr8ksgG86VjCe5WKZSHl2mrNAa7tE3/JA0v8YFbojnztpJzzfxVvBWdHXn+EfgjA0b4VBVrkU4mX79uReGG0GCyNkCln1V13lzzmZIcSKJdYSRfbrwzaVEuXpmz3u/8KNJ7tRclGmZo39/e+IUpGs4XtEp9MH4I5qkfLVrk+PYA4raxDlMHxWiwK0omjNTvWUTYCS8nGnbE0sG2Ix1cO3ZJR7mdL2/kAJrtubgwlnM2qjvGDrYihwAiOSJ9lB19j0SGRFqo8B5lBTZNVAoHaDJyt8FWa3Nrd8DjmRmvp2FSg/VBN7pneOisCtHBEACYWosMOxJhpdHveVBjbK5ruzRGmEqjhhrtzhewvWBeucULHXb2RVlkfH+MgqSPiyEj224qjR1BDVKpGDkCARbHKi5WuwJjx8kORg37uK5xsK2V6gqGYYbcjot42WlfvsfLCpApe79+bImD3oO/QxvD6rC9wDTKcgLwrjMlhEq0hE3B1MXKVM2G5h1q5a7KIUmOKG1pzkJe6I5MMDRhI1kHPKqMvBVB1WV03O9OL8nitncrQidlIh1wShOVkhgrL0V7VV0KwmiJEePiIHZo3A+NxGn1h5HL0aKx6AzVhykZgFKHi1ETpas+weB7vWdnLJHNkjVnH1BZ38vaa5Afgumxx/05Td44GUPue6Tq/ofLeYCZ98tGpYjoDm1UN8mHo1gUw0pXlLi7G/CjoXgFo67s2rikpUfKSJgsdzsgp8o+UUYBGm3iC9jsHjvnlFRPyHKXapsxddKAjZ53m3sg2EnlE67AsWQW1cPLsJPKHSwe6SN5ObcT58zanwaED8Bx4p6QwdwT1cUmByrxDNq6JyzP55zGsskswiPYGkwdvByXnjYTrcLZYxDFb6IhOG9UDBmTErbgGrWuoVg5chRF5zfsMpbG7w0oMLTEwLyTVYZ5zkuTGb2EFawnPUgaYppkQLCmJZHMQr5KuOOlzDP3T8leznsAATsz2AMIJOttxqy1yfmN0fYFu0EMdoht63GuRY204DcEnaD75AUKdgpZ4baSdCrjDHYv09YYBzuiiRL2LQ/F3pQfR1aDsgQ23mRLdv+xCEQbkFvyenn1KX/cm27Zd8pNhVYYnS4Ze15/1EDn168FXq6d2DUiLt4bE0WH+3PpTR/xRi7BRXdJ/jGkfAuOF16OrojiQF80Blt9V2lECwD/HThhAMQYai2AMPzLK1kvma93ztUCgElT9unveCiAQP+XfZdwJj0DYL/Dh/X0UK0+2ALOYT73dE//k7Cjv3SKu3Jtv7kLmfvsTYS91RmJjVtqtAHAcJFSyoJeotqC93YvKOVv30po0hK+zKsnxzWrQQMr8BQyGvnVCou6hTmnywXw8RILmne9+RP8ZbWPLRQMnndbeLg56mfsGlWuYZooAaZGQPSqgKum6c8n47K8LZ62aqUji2CqBadqbwMkZpYEeKrcPmzMhMiTlG8CxPEZJ2nA0U3dhV/yIgJ7CUUIlFuHqei+/iNR2u/4VSHH3LlTEeVGvcum6ztiS4eBW5Ew/Dn29kbaYEeQz27VtbaxicryJRJddx+Pm5D6nJBcf07LCT4mMuonxuLj5BLOjohxhkLv7ZLN4/uOFe40uGHFx6RisILPMwnvKghls/zRZzh0rfjEhGmH3gtELEtxRCiArlA2VoDNdLeIyWQQUMbNFbrXvXi1Sb9rCh42C0HUJATWVRMMFwS7dGsRtRsuo7yaUXEaiMzhwpAHYhaIPFypsuQLVUqCv7u8ay75b4fK560L+4YFM2Bp47qTO50Wo+EXBrr6YPDutVFlDOpTHJ+epgSBcrKspDuf8eUos17iImaKH1NYn/o+ogmEFoo9382nqVV1xf311+Vrc2eFtys5dcK9M/uHFNIbLCy+vv9im8yCzpUkvLKc74XcUcUsd3bx9Y/+FWRUf+CLA9yeGhkgnRL6aaNwgMynnjEO/rSZc4HzZN8S5MJaGjVR8jRhlQ+u1ywvjSIMR09bmZkM1kd49PRUOslXIN4013F4d9MoMyc5kqcoK7WleG2OhLuUfGXxRclqtOqzS+FKVt2ZSB+sfuWgiEpuEM7Glp94VKKQ8g3bPk3f5IldlM8fLUWkuliUMSrKaA4F0UaFEcZ4TzOd2XK9Dk7s8ylHpgPYXy9oAIR84L5Qrnrzzq65SvSoemZFjiXjLAaeBvj/XQzJP2ZtuBt/wx1fctcqsSy+cPtXdEPPz0DfrcLl5WzV67/fnH2RrxMuKZ7SMwUUJi2oNCvV8WpGKDNIafq2ro2rluteROx+VtLDHd2fhHRK2DPG1V8p/rB7oSsww/vZMA/Uo4HVrSiOK1jFFvFWJ6W8Unaa+2EGwIZVqTskcSifeXiFD7LXxa3Q7UPshEozuw3kWlvAsrKHBLO6DmPFaD1sTCyZZtAG1r865KNgY61Z7OqY52yw/QPzG7BV1qQO+SYwr9YkdjVT9YJ7E0rNWKhvzIiBHGuEXnD7fELzzFNTL+tsW8M89zqk2NVK8Y9m94bNdUzJkCetnsPc10ODU52E1WtKMfAkmngIwynExXN4+4B5ff4HuEdnNqzbJt0rqFxdwg3lzM3eE40Gt0MQwp2WfdwQspBUFTzzH+gkWZQ99RXVwa96cCRR0tW6sffx1NQAOqQNiDFF7tS3TCS60oxR5wXjHndItuyzN/cgh63hGjSRBmbw4LIp/QW4d2rsz6JiccSzchlb44H1dal12yZnU/dR8Y8wIwmUPBY4O/8ULPIsRbBbmZ+071VzUCZUJClbx0USOJ1pMtEggvQyRRThp4qUhKLRNPPCoQxC6y/9RNbMpKKqf2EiVnnV+J4CBDSfoQTZJIAV0GxZk+yiIr/W90mTC07TtJ10rEysRmawLSSe5C/2OY6WZj2z60xqr6OyOL0zr4j5nxVxk+3SDwUsmxk+YO2q63Sg+JAVbwnW/18sBsuMnh2oXyyvmN9RDyan8bRHS3V+EjPOtMoVqU2lohdPqorXi1QEV+G4zaAxlO6dS6Nemsfu8mAr8AH35SOxrAXvux6X8H3kVpgjR4JaaV6KKtIPNZXzRIW9fVnokCViqZOMPiY/2o/3VdMDDe4RD1v3vwpImhGMQ/rM8U1iQm/VpPKUykWpEsFyZa0r9f/ZxVlxK6028LyYvdbmqNbbniuiHMk0W8bwaNMPW/H7jhSbho/3IH/BI+M4dbjoeUou6q71Gd+DrncZuCgbCaM9+b8+ryD3VTQWXab6tirFO660571D4MH1kyXPCIpbotlILMnVKD5qLsFijouZ7Q8rV73KrPAWeQ9v9tYMRyulFIwAqHBzhhsdXav3AbiZmsHw17ta30n9qXwicnoCJJa69upuEiVx91d5LvzTu1yPp2wyq9LTuMZl1kxR5VL1ZNM56Rb0HYgXHMC/oS3RMMTx8Q/06d4drMCD1fKpGCPBH19aN5YUgquT/CUSfRJ2pH6Zbt45+cfNfIqGVTWgrv1XOhlZn57QJme9d7+7pvN8jgA5H6r5xJtdX/sfDUtS/tJNL+5Ez1RNIX0DSDMd9pDIJpi/FgvqNsNJkEy4ZzMpxCnGCu443qWObNRPHAbINsbMkWVtZUYnyapvMBBH2ux/Nd/ouRLLJ/vA+hYIS0neH9nuePOup8Rl0nsXCTbl21KRgzaXIJ6Tjn2FV87+phLkak0pNrxIicje9lgOox5U2faEomNyNupsqpDBUgl5pNFXexljUqN5wY5HY27gtwT1E5EKK5dIp0zvilty6kozDHrzxeAcBrpJBBZLxsr6YWl/plaHLJUJBxKsJM1sVJasd6GOSYSNzJI1hZ1VSfTdZ9L0SQ9ap01fvfIo+VF2YmdhYp+CLjNK+9lrEo/8K5uIXiaBHe1e+HYiIoyFEyt8FIR9POwL99ir2MhWPtuMTkfmy3kzx8wYAEICJICz1zU6ddX2VRV6EcdCRlCK4qITA5siWyELzKUn4qAEk/SOlO54c3/53HGfXi9HSWZMdPXgC2EuxkVSbQgqs2FoM6f9R63fZ+HeFQyb63LeGUeryewMZdXG+ljZ/3Gx55XDztqeXtOorzYUJ6OsPQL2AETVzCMJ/O3zFHNJz5eeeQl9WNFE4pDRRVZ8OAtek5jc3DNOiJhbf46XuwuM3MEUzxwKObxWsb/KTJapJKihDNKO3FgwNj6BLE77YBgqOwFB2YyedljDwPgi1K2e95Q/K+qdI6mIMhZF670gJ8renNj9eDtqDx8kQ2RWDmnK6Q5sQBCIzL9pxRalF1R+BP9BFMe+ed1v+tcPVHT/nN0uSAGCvBzw1ZC+TxCr0ExA83WqVx+sgyp+3anZgEFLnNcfP48W7Nj7kIA+yf7Nwv1hpEMQp9nx5CauF4OhxSwf8RTbR3sfJrz8/9GxvGiQdQyCBpc4SxPZzMJ5n7EmQYJucqK60z9SK+E2jhRSVnTZxLdZPQvZaiybq/GehTB4EgXrxCAUkzpBgcxWezF/BnQePi9c7yZcQJYINjSylATWXcKVoMAfB0hVsa1ZhiXDsQ4nXayuSw/WI7biM7Iew4T05oyejCNDpWfnYL0L4DnWhhrKxzvQ2XBJpdme59vyYeT3Q5t7q4gkUYzXimFIU49vpD49uzVyplhCpCT8DFkSi8uQtpOjsJJ42ODsmzmzxZycaIWW1xlwioMdm59ZnN1Cl3KhRyb4u4LfB8Touqa7QNIssGhdjcpJzVDEwu99gN2H1Hws2HFO4W3H08PXhNVQTBG3kQj6m1wyml1YucRoy8n/D0P0b4EJhq6NjLgU688v1jJXZNjxdpVzCBRjH0AFybmcVIXThppeCz5uk8lc1TUgwEplBVUNppo/YEf1N+172FrSXi3R5gSvOfClFc8XVPUj9bxPpSNdVRbDIpXG0ZGWZa7FgtQk5Gy6+VcAEahoSTE8yQBs46cxvoJUbvLkvZ1D4eQtrJZ7VqcDEllb4kN06PCfxrxDTWh1LnRE5m5g8CGWRzelnKInMv3dOXHyvstiKZ89AdTX7gXR7eKmQYHjLZNBil0ow2eVLY+4UCmZz+RMLrv+ZynORg2LoZ5XH284+qQdSzrevYIii0H5MUk5bVFuBa1NwZUqz5rK9hOy5xfJnPE+g7xrDExXTYnBrzAL5CY2z/QQZKfUHZQyacoRmBCx3X11QG548WxWZMhKalIiZJbHIp3oZlnEka5XJAI8Rz39t1vT0rPo6j6rzh4gJZDsQokakzk0CeJVyHbR+Vf9bKA9ZxLsOGP+TZ7zaw/jO+YNpFzKYWZ21Ko+tZUTuvLPE9PScENRgpzzwOJlFOOMdEPMz1JxbBXK5dnvBhR0xdQk9WhlaQESE7Vj/OCJyG/sWY1BgxzT23zyUgBoAOgRdprueznH4TUv8fSoR2r1wvC5FKpI2Eh/CZsDOZkzwZQW7674kaZKkSYw4nSdrd5akH/L8flmeP8sJfGxVcoj8S5g1qBp+VEdIcwpsplSSUOfDG3z3URMQifLkc1YIw+wGloqrsV65mPlD+uy5rM2mghIiZ4LjkSx/0hFg4H0DprVqqOW1HZPU/Kpo1nN3n9CK2g2HAePWhVEEpQB7c5JGuz3PH/vexyqp5K8qf2IrBgs+Z9SuX2sST4fypQ3piOZ8/sk+Jtpw5SrqV03mu2T2MHhYXiZUU6eoZ3znUzI7sif/SvziL01AA7K4pgxjZlfXKn2Ph7nLIP/mFGa0XQlQzVismQrrS3XzIHcsXs8oxjJdTpZZoImdq/fmLvnxXT56KmyoJTMXf0kHYtJKleNSJZxy/fk6bCcr30D4fKrQKfaL5+PvrtOX14h6+e/o08eXX0AH+LrqP4pD2hwMpoRDLL61DgHDWdXcz78argEZmpJUhCRIRXyYPS3NaPLY5nMS9rHND/g7zg+Unss5OWkGo7aOKglz306hXcrtqWzcOsP4OuU0zrV7pDP+NdotJJhoJm+FA0PWxeC4SG3qtapWxhSvB6Nu6Bl63wyL9bTND/gb6of2Og5pelK1OzcpqHR5S7WMLInAu6C5Ee/i7rAM8uS0f9xh6A4vscjUyA9Q/q1WDrbMzSR2lssIjY/FpFAuWUeER+CUPE5SQ9nduSHo1MB8eR/1Xd6NDwCngJKW6dXG6pOkytBqTo9PZfTUtPGCCYv11fzRQFNLepmqd2CbIPtCaDFbycVczFOlSCrIekg4vh0P8o58uTAx+xEFpL1uddeDcQZlHNPovp79gyQgFTHMkl6PL1BQcr2mfMPS9nEO55Xgsn0C0r2YoNSTHgXdHPbckEi0hJ0oX5Mcu1cn1LYzxw/LGSWUq8wL8RZR7JNC2itfC1mUxaONLOcOzaHzaFDOVYgr13hYMDxtxk9txDrfP38lp/3RtoFgV6G/QgZLbBeDacpjukZ5mxo/ja9i0EVl+VfKqoH9VRJ6BFr5YJ/kcZqJ/TK13985G1IdrshjkLYhsZxPmHBt+gRat/rjj6xHPHs/fNgyjlkFtUD2JtwWYbXEouFCioOEL3M8Nypp4j8t9Vvy3quXHafj8tbTgblDkj88p60i1ojpTn/+UqilTM6MuVAjP4+xTuS5rDG8SEmTr4aWs9KVmmHI0jIzWI5ggcy+j3RRA2pFokwStsNOJIi1gAa8zE92mPkq/5V2n4ScyPnJW1FsQcKY/HnTFoCPro3L1YvaOyv37NaRkseTKrn5Cwa3vh2NCPNXYjvP14S+Ve5YJxU1mDoba2VqJWWAiLFPLeybvsIPbjLMjEkuxSEN1CJ7NRQXynJYGKD4fAIUr+naGw8KJQ8Lk5nCj0spdGL8umLY4khRGs8nID0/DUFMMncNAIZKIMrvi5drfTc3HkLEroJOX7ZPUB9Mje7o14ZfyYY/sKrRFL6VnmAEzwnB9tHBQBG6bGZ8ET/UomIgG+yvqpL6pCDnDlS0wy2TNgPGYuXovJXGsnTdx4TFNkMoOR/dUNu5ZWc9pRyV7/dAiUddzlyljtNSuZffSG39XWiqVKq2RfVWxe8FIt7dXEatSB/gnktwM6Akj68lk7b3GjUUsjMk9Lz5ET3N04zv36FUqXRL7/4Fw5uvt5MR6s7na0t0fPDnVaKh7czf6wt0XJQaKi53aIOZ8JD10ZPlGvXVVWBgXXbVqxO4Yp+tLDULg0aZWLe8WaTheD27eY6sKYNi/mrUhiMbTqrQvhxVAMhUzDujZXSpaFVd+WNvXaV3Mz+308jFgNTCoiHvMpi5628S06tvWKGr9F6q/ZER6fIF2COFI91nxNxguN8sGxM9f3JKvO4P3rSEloRploFTREQwtzAShEwYf3k4cAgfwQNvj8K5p5PONBPGVjR8pCU/HAOVi4xT2DwJVljCcqEVihdCHuFxo8Uv9GUgCF4dhm22ceZcqHteDJt+0yq2/S0+5zX+0alSPIj1A/X1Sdl9nPy7VD4xfJ4aEVjnLvOYx81/0MQm0f6rpbOnGvcb0vxnWErSJ/aQdKkbEVbHVrds9Q+W86TG/deJ/kw2pV3mNNvS5PerrQywbdi4Z253yNSeSU2EMyrgphx9jnCaR6G1Cv9pqvOd7OpdV1ZcjfiWxxDMmthFlIVzcMlnOJ0e5AM7QwRbr02aCDhD1mDk3EwqVYpNUbmcdSYYHYDHQ+PWXmgjpIK1JAlMDCE01qtv4OhRN8yfBw321QIE2Vy9Fn3Pv6onhf0zbFFtugA4iwbeqMA3rbHBMjg5m8IehwRW6gY1Je5RAAWfurbzWQi21t8DMezUqy6IOAY44r9E0RFb5PaPD2bnFafWZ5LenbgwLIk6Oxn1sqprkQNv8v0HJFy6RwaEFcCihXIYDpvWjGGnjQJNt0yldB78BcEbRJetEt2OcGchL3IaPj2Uf2PKAVC1cyOZWPHRz/eX3dJNsdMwJuS87SaiZnWXRqk0PMUPvnxroaVJ8nZ/3juXaIDcNuWEbK48tYevRVW/S6r5z22HuRH5WW51Mu8Es7/Q6Xk5trNbPaFbS7jiotAcmlm0pWIcxcwqgx1LNnLXosVfxvZyaNRNMsDAVZ3ka/KN1heSCYMVrKdovI2RlpyyiQhuRf1lVhvz+68waJilBI80FLDfNWl3D8+NY6iAoCIZQCDzyzVtyNKbuOps4kK6oeWnguzeCyxUPW1KHZ4aSKSFmJiJGF3LTaTk3ZEtEaBNcRqlV1KuTOwLsBoFvTbNTi5/Kpl8vHUWB9PpgJmkKWsWTKKmFnmF7RHXcZQcH87u8sxKx31/JtBZcOXl2sOtTTT6NZ9tAlrPH2kSUc5Gwx0kvtYTkE3dV58LZiXLK4NdDNhT2KSQLKKbzExVfBCNo0qVUm8Esi/GC+vrzmwY192guk9S5+VBm85vZekEJF+Vp5AkvZySMo0LVDvkQSpwRAekHSoohsuyNR0lkJr6536sHNdjtP6jPaP+pKddwAvqgbYE1KkPE7DIHFB/dmIp9lyBMIrCjCxAlTfAuv6p3PzIdWrqNz/ujMd5SD0sN97FhDTZ5PJDVl9goGkbDa+jevDWAUlpSV3ZC5kiBCAYz2pWbxfPow2yKJS9h9VB3TdFp2lf9AwbObfjGjKuOaNFDykX37H7qqo8Bhc6FUJdmaspnnvFW5FqjelgXphjfkEjyKqZeBVEz6s6XOvuKzy4I7DyodQBeRhnbVnHlmhInRJ4gJJnDXDCeyKE7IGPKs5RLWWqghXbxTEXPTIz0gf2AyWvjEHsYg2XDgjfXrej1d2ahUWSaxDI6O07cyDZmJ/6uHobnnhWkLTNr0TIkzP9w+Wjv/DkjuDV0auwUzVQu3n3Zdz3DAkD37+VLqDZm65/CVymZCZ0QTmmifMjZkxQXPOD8IlPAbHBZMJoyX+hVRTHY8Df9Av7TSLC8JsnJT0LY6cWZup93wPFcNk3zpwc6aTUprXx/ZEacfJl9UqwfammUkhjLJsVYP6GpZzOSO0rL72pso0VWleCEb/CtWXHgodPvV2cLPe1Fv1cOE3BO3VCL0KM4g3dzCOJdug7HZJv2kiZbWMmOzV8YRwSPDQSaZVpMz1o3Bywo8300k1vHziqZDddNTy4OcTSlNJtifheB6Ow9LQKp2I4zIeLOOEXMUwm+r/E6fcgBkw3Nk3hMdkNhFrBA5GwR6EQYQRQOV4+olta8UpOshi/SCODbT5gA92FahRnNBRrUseaEfiopXcwUQ2fCf+2EABlDQO1CTEbPPt78A+hZALSfcXcwNvx5x4sAQFldSvuh8HwYVwI0TOGlfrUtbd4de6BsuMRPUMMfEEb9v0IilMuPo0hyqXUXqE/7MXWXADBusVNMt+53YGadzOnQbQvI/BafZoUZoQ6VZGG8No1ElT2xfFq7fyBNKytCTP5YhImbZwbheMA5HYnXUbZZvgAIbtgau6WycWfuvml3Ndqrzt75VL54L1tZKq+FhXvegSZr+ZCbJPcKFUfQk0kiAjBoJhfH2EJq4Ma45ISb74/50jq1xsDhURWp6kgRnyH9gDHZGfM21wSB15NRKnTBA74WMzkvzdbvLPND+72NUhQNsJ9NMIm4aXcpdFTDrzdVutxm0ZqleR9yYje2pjzd2Sw2CZUr8x+TUK5ujn/GWXoiYZChlhrh0UPx4H4pQbn9DBfVEwTBKabPElVH/eSzdKdhahavthok+29tvV7TdzUM9r7a80DN3V0cGzp8yAOWHhP7n0k/e6/0pdwcDmGPulijHr18/gyJ5bsQhTcBAxswz0UYM+gSFH7Lu3HOiCeyKfoWnKfVB2zZZL6CyK7pLI9+UHFKxll8rKS72E+khqy5EbEysQFQx66q8e77a0iU4oEZ1BErc2ECjE3fjquU1JaPuc3ghqYtJiqNYjCCjvIvOVBtAZo8U7MM1QJ8YzYW1UJQw+gmmh5p6ofs22uE9VZBf5EElRJvu78AxdjzMVqdAFU+cjCqUzuJzpoSbblxuAzmhZvAXk2fsHvssDJlPcmv6kVOpKJl09VvjZBd0NTVARkhDqb7PXwi3W+z0Nnh4C4QD2d2p9mCCysplwCmGO4hqpsJ1kjC3d0s2bzVemZyCXqUjJTAh+ItLaOBNkdF5PCbaH6O20aqe531cAHlBD//lK4sAPxYXi9yx2iHPdDKUKbKl+hikNTzTljlbgBdWZI+bv/G0z8u5OcL/p3Ho5gYiJObY3+DecWIyPRBYdQhCzS44OmXnk9PC8OFl0Go35Prp8yz3FMcZT6NE3cPSimlNw0A2nv0Kx3bVvxlzZWQQ/Ru0+rbK7VYndg3g/PTP4+quEQxqE4/ql6MGSxLcnrTPXLRyEruRNaRsR9hQ9J14Zef2N4q/Wxupx8GTGjIhezRwDmfvDgQ+S7tlX/ZoKZg+8xdtRWQefpTWpu2CqvnLQ/sEiYzoQ/DvDs4M/cKn++mq6vzDe5bzmAcO5+xf542OjzVsuSlDGw16QDH5H/9+v/sAa/3D7x8SjWnwlu0zSLOoPIl0hI/46/OwYJa761V54hMfmi34LLd1GkflXW9mV0aFUPdUd4tXKJhUaOMQz9ayvg7W9i3FgaZ2DmsMWHBL6ruZstFm/KWKqKW7Lf7lNt/7dmRSOAPJAAB1LRPW1wvmljMpb2USQS+Lcc4ZyT+hGxzhv3Xqgy1ZXPVGnp5eqEWooocuUKkcWZi37Pa0zwhxZ+1QuKYHxpaxb2tJJooQm9Z1Qk7izSom6KJBIiiR65UF6MAmFPOYtyl6LSBD3yJ9g2f9r+Hyo6BcTrV7RCCYaRyPSL1Qlt79sijXLY/af5XCTFHOtak69AYLrNOLsHZc65+A46YkZmALPDFci3f1a3z08a5ieCPUKU5uHHnhf8Hly09MaRP9xZ8nQOi514f4ueRS6RMq8t7bEqNV6EnFEsRWGFls+uuPoNV6PKSI3ke0XDd2ekXlngk6RmSfDOpIrPqXFyylTrk9oFuIPRxgPJH0KHcfl8Wwu3cQO+ov+6sZufHFi+FNGW8hhKUu171GkY1y1EuUEnYQVM5M3j30LWFGTMONzLgcjpNKViC2r2lHq5lF+8mWuzHm6VrLdB4++LQEXcfnjQLCyoCsOTJFNPk38kHYbbsz0c6tgcGdW5nNWNQxhfxv7PfUUXqU0xQWMz1fZ1JlwxsQDOxrRldNbZi16Dr9Zc2KJEs6+l1YY1hNkSB/G/av2tgFY+Ul1yq+RjGtv5C/s60W7l7yd+6cckpCydfjbM/+SUnf+aQXTawv8hGt/TzIJKXbz2IyhZIN5KSPkZqad3UfReiIceA1UF+tvDts1Lv/9qfNL8j7Xr+o3lpFeyPM6lnGCTJnm9lZTA/1X26fRpAwdNKDjTEqI6Cp3FX5CHAuvCWeke/jEDhzLhafYZU1Rd7s+FTAUp3oQBt4KfDnE0D1bjL3fdg/7psd2oYGrXJr6OAUdtGaJlWnGaFd2Zmg3py8Nu4tQejP4hk6EtjPfzXn/yHq2rN4/pP0G+x9jL4EAnhTY42tBd4lapf04E8B8Qyu4bbHE/B5PXSiMqkA74F/tXcOFTUOdKc6rXG/nJoX0IG5zmwp4W3afAaa+O+mB9Rfl1XznwzkN1a5opr7Zcjvn79+gNvhJf9k287ppoP5uKHfsfrTH3aEz5fV32glhBpRUNoZ3I6hXqfAPUjQQueGZfvtZ49Xmf0jLUNaRBeyBESYEuvMAokKHgjpFpVWWcdTeoZghS3zoEzv+9y56QlV38M5rgq/4cl42MC3T3v950cQF79Y0vwUPhdsSoPNTljePr1z6dVakhmmgcIqX2VUy0Kr4wcjBYY/+OWZsd1RQLzNHPcBFKJCpyNWqcyg3b8ee7vuu518GOj3Hax5qr3Dp6ITKBoUTTFDVq6xM6PeVbPmx3Rtr13tfglTNg4QaJDKj4+7YyPKWBL0bkpMZ272yYi1/B7hvvaAfy2HVChGLF+2Dr68+p/Kq4qq9z7v+X1HpkHfYcB3qrSJ/xhCujudER1TxkhaNPuRaOjCEYt3TEXe+f8q/XrOS4Nbv1+L3EF4na/p7cF5X1urvodZw7r9C9EdJ/bBtw+BR6+iU5RXVkAovUaGtZtXLyFEbrmeGfcM/zyTmbac+paVru478vb8gkK81Vnwh2R8dZijU2OIpicZn9oM0OXcYPhjGkDKk8AlK1k+JSx9OziqbEnQ0SJu7Pl1Z5/q5BuLW1c2+f8B7OJeBksgNvn+ACh7GDTRAEH+auIlZZuUdLdwQxmfKknr2pRzGftH/7ubbk/NKvHi17JW2W3xLtGWpSAtVcMPxRH+A+88ejkf9kFY17deVx9i/F1++LxYaH4nr2ySQmTlna5+7nRuQf8ypPXHe60GS3kT69JWTZb8BzH+DvOj/UAjFmIbO5DoaxIc18goQQo47eURXD/GPQovW12Z0GW8jcoVLLZ6zDpK31v3YD8X52ao7++8X480RfgXe2IoXVUHxRiNwrXEpsWrfL9WVG++W8Out1KXkdt6XXjmjzjz4n6Dw18xFWtPw4tyaxpC/qTocDsG6VkXOV9Lbyd00MmJkarUe1inWAXcdiX4Xt1/P+M2yF1fDugaGjkOTHx07C+vqGH9vECni3pCr2KVEv6eeu35Dnczz/t3i5lABpdl7PLmeenxc2qzKW5qu39R/hzozOOnR3qn+fAzxPrqw5H5Nh5uraw2zZyPRqxDBaj4OMv60nVZ8HaA6BMw3vM15h1NSf9W0ES/7KV0dEtrRl7+4gn+DyktwGzZ+SO2OhW6XCdsU+7fid11HvL+9pxfn8q44kufovoLv5ztIAvgpXnde/ZFuYintg2RsabV/A+H49b6OQGES5XMcwR3NsrpPAxrS87ME/4UPBHUVlzi9jIO8P55zGGMHqWCmFWw2yE8NGeO6b7uvftOOyWPcjLPPpi6ximsHmjHyKaZkZCSpsMGodSGBXz3KNJ2ClYNIbpNTUbA2eWMa8keKm+U82IK4m/Wop5QuN+tTNyJfbjbY456zNxhy0NLdZiP2wrwxt2A4H5IisLkTC2+Tda5daHohdMOQrq/OSlaBINFrczmhIXHXFve1ZyA0X1sqnRsi/tWVupcG2BUsEbHTCezaelnJQGjfxAHIt/xr7O0QPTB8rxWuny0MU8eubPcrL5WVH9BH6WbsCBOQIZn7H5eUZ4mXs9ABG0NGitufnswVqjgTuW7lcyxNBSpxZr84ZMEA0+1fwRGXhkyeamIkev3vUWzdBZCmlmESXyuXlEzwLVxwmCyjayF0cZYADwXzrkk2S6DDJq5VwZmzSrRg7XZqJCm59kqeFW/HFPyQrlu1OySbJP4Cv+TvMu6li1p3ypAo2ows4kOr5fzGnZRuI4Q3Wwmw0db6nxIi00d0ec0jx5oNotEjHUeIo0cib59uObJ24lskdlKjKOwLOG0HRfzOvvldm/QFMb9zWPnG8wn3C9hLdY5rXekrK912TmthkKeQpTco5d6NpdfNBxwbfa/rV30s46tmgyft8dp7TCh289KmKsbosiCWnxdsDh2kXgUdP6UXFFaGxzcpmdRoXKl/hBwUevW4dJadap+3zvt5CHJq3y6ALeWgYZfX97fnShZmLS0dLamHot7l30V1H7O///YfP6V/o6dO8r+e9reh6x51VFeiRjh0LxzhCEcuDUfFwdn0+crzCjbT5BNh0lMzUmgbwvegmE6y3oQRURmv5MhZs45StHoxq/RrX8Fg4UDoc8pXvhBP7JGlSPaP78Ukk5P7o0dPBrE0gJINhUHNQp91aJOub6rEjwD1E1XPLLaD5ndxEl2zCI8nGYUPtspCNMQMbLDvR0PjVHhLOCHnNQNo8Mid++dn/Or8gibvCvoJNszSK/dXDmyW6t79yVkrV1ffFiaqi+uZv+WFASiCtfKm807cLhnIch0xOt4QDEopQgyZ07vNW2f8q7j558cKR/jWMpj4lX5n+HVfYJMyaRa8A0y48sBc4QhXLuMXyYCkTB6MWnHZOURKkFD1fgd7nBjeCCg6IBcbggE3WEXQWFH8evEnn8eYNuBXeU1SMnm7oh/bXwbrytwPhixZYVMV+1+XgcIyjf/6lmwIQmQhA87nJvyoj9xYY0hl6iyfjzW4DeEOojl3SsvpxhA5EM7kvOLtlXZoriCR66Aj9NCycZHH4xU7x7ACIJzr9rtfbrBmi1ger7exxy542GiCVJ5OPmDlBLa6IJynQ77yOzvAEQzxLG28ce0E2houIZyn5SB13K7QSmZ6/6NNNroqCGfd6cuh3JhXwojn8MEsnG6MK2klM7k7XQ+YsXtDhFuFzFD+SN+7lYZE3h0fYuTGuDKxaG6E9x7bN3BxmQcERk++dOM1pHK1fqx0C1yBEc/jydeZ51et0AB5gPw19Txb2YqsZGbg3rLiYfN+hlHIB/QAiTeqK2nEc0ObaGH5R561tVaQyuMzdS8PtyvtK+RmNnhxZSBTh8fnrrwxrGwsmplSX+LWbooVEM7SEpOQHJ6GdCO/grRioLN8NPkYzAH0nrm9wPEw5QWVCjELMLHwzn/F9sm6OZl8x7W0aAuku2kCv//dZTqwoRq2CprzkBGZA9wuQRgzkrIBodl8lQYaF2Qjw+ECDifakqnvSAzI5TJBj5MNnBa0nF97wCXKpHKQvYIPqDD70HBAiIS0dEPCEw9dJRUy/hdBSS4rEmlgvH+o0S9P6u6UUqE05/vjRHNqf9Z30wd8ifw/U4YRWGJmgzOWR9nMucGPP+Qgjj6Cg/yKqXS35RIF8MuP7pSjxSFKcg5GB/PDG3carM8nySor0L7+0W/uc4WpXqfsJOrGA+d+Zdc2KeTJOphq4Y6kc6eB160tc/fxQOoRKI+PEL14RAUb+G1wquUPas6HYuHPhLDXBooA9gBQaHQ0ILRQGFhdg3XD4X7hOWB8ZwjyM2UN83EdxmD8TgLcPuGYx+KOIdChBDaHr1K6IpTRERiei8NFy1qORUrfpSyANqTtFEjV8p5lMlPGPL/lybgkaZwQHx1TRLKWdsKrODwSTfPyIx/kjcczEK02aVNvfSVSj0gL5lzDJYvXdyMMSbmNFabDhYnccugYx+JTgGl7kYrbJzizvnoUy6ZnAc+cHyKTq86YkzABrb9TjnJkHN/MekkoTdJ80malicFThiebUKfhgO+/+7+UHNCk7ARxdPoZxaGSP9aGdCvytC2SpyU6LRaaUGWsS3ZZuTwYx/FnZiEHVta0dLcIEHgSCtrdkTRKFU2sNg6S5bKqhVhvzLAt+fVSCUzki96cJMNB1oY0jn7KyITsqmdF2uS6CG++uiPpVGlK3QJpPXSZApDFu4CL5rMrBNCYnYVSh1P6gqSnlg9QR0XaMLrMcQBKDReoXXjgDnHc5WbntkA6ac35fJuopVv0BvErDCLtYw1aLlhopn7OjIVyVVKQxqzyKx9+X3UOlJR0J1nA78vO1M+oN9sM5tQzCPQXKJePvuhcvh/dfs97vkturJluOHtcak/DJ3gJTtCw2IzlJgxD2a/yNKKjP6fAqUySc7Zv7ckQDA2bG960a7fCpjy9xl4OqNW2IsxAuzhTYcFeDFzPeFBVPgg8e2W8+6gbZzqJ4aczZjYvBRTJkpkO6uP3LsoqjuOzNuPLptvSzq1/FVivw9l9wnLfp1dEd0VlAOZ2vxUvIUVA90GpGB2v4FA6me5vMlyVxDjDLW0nFJK3QjwCWeDsipD+0eSq9tkJ/4TcnLsraCgni6Bm6JpzKT9OUREZFCj1pSs97+Kq2JhX2lTD/ENjJ8nEyjW3IXV4f0Dbuzcy+Zcvmq9ij12V0YY+lq+CvznGole7EBmdqS5hGZjzkor8mFJ+L0QHt757lbY08XgAVENub8JYeaK8vobb1wMSNMpyW7E+yuv/7oZBO8+//FzKmuQAcYx24zmAvFmKGUYHtSCLLxCl5Tvuxk4P1EOF6Oe1PoS5TV8vAhv0b2EdkkVwSZJwOmlamAnH90OHJHq8WujwXi7YUcVq59tRE81TrsUzY4PlwrBhvYOXUj8q+6+QAaBHJhCfvpOgkNoXaRJkb27J7KU0bm+tEGi3Tcj+JjeqN7KHgD688I7Cz8x9JJARdGoOLJ+IRMVhBxCm7QQzV1QYwyO2doaLQPVEgJgqN3QhxhEg7hDZ9IUY49DBFoplBsZm3pzKiDhW3zBpDc0FNug35qsYSGJgc6IVRQrKd7AwhNj9dxjIS6gW7SUBEWJgGOG7PKdB0n83SFKH0+AulsfMUyXPOWyCv7ghaVDaWJRYsFC+Ll37O9tTuV7Qt0xLU2EZimTYIB1gWiHW7dPwqpliWMnv+xRnyBDOS0Jgp3D09Vw8GAFHsQBySWaJR0Jv/oX5DAG4RIC8qtXcYH4MLE14aW7znhsn2A2c5PAzDuYdACSgpaquWDg4cVkEkQ5wqTOcQ7zGA0CRqNO+YLSSdQcD6wPQYgENVAXEQwKIBgVCksfD1C7m8ysEvkWEctPfgaoKoLSCDRKsQ2x9fvhPG1DtxyZ4grNbHnMUh5e4AsKCcoLpkIvAOIqiKGlIaaSNoQgbEQgfGSiHDyjFboVhAYCwB8BS/BY0AbGGlEa6HQr3T82tWnzbIUG6fBsZEp81C7bycYqUPgCVPGDf8EguxMQzFWX5NNxdcq18+5XiAdd1BbzZI+auyS76A7jMKcQygGWlHptPB2AQBLDv/gZaY5H74NNAerxuYQPQUDyqa/KsByTyHAEIJAH13HEAVKmtGwG2+ngOLFh27KDjhIiEKybsQ2GYFFbfz3MToDJ9l1lo1QckBPMBrcwnGWONDZAkpvsVBzpZ1FASGjKexbJ8tGw/KStqHErkcHx7Z0lmKXvjSanSUIWBWX308Wo7EWRKh5/bSAyQhj+m+oGRFgAqiIraADQ8JQByeJOE/It0TvIBOzwJofpxZRztWgzpIjJeYCK2/pGQrIbTuFCQMnULshy92zoQSVN2DyIwHwBUcoHLw6DTjgwzNXb3n6ePWvdU7UHoBGQDzMscQHYK7YBOYoAj0FUw4T0dCU1NIUvtFVCL0HUpP0oKp+4yJfK+/Rf2qGBdVs2Krs1C7lN5qC2KMITQQth97ww2I3eaHI4AoU6jYpoAgh9AEGpWjtdmUwXat7GN+gWeVKnDHy1I/tuEn83F57+QBMEthOFFSglbimDjjPo3H6mppl7RcTJ/lZsYkL3M7EndT8XQ1EOowfKhnXtKnSk4EqmAf6UTh2HeOdl9dg4CBy2Rbqg2G6GNgCSw2o5EvPxQZFYRcDnbKge3q7kkm9pgj77D0lyYsOJQs8qo/RVqSv5oQ5MEb3XIb35Z+mj098troz2jtT3oxivdFveaW+iWtNnr2nits+nTJMLJy01jm2p48zPTPh7+mpsKMqtfVspxDEMTIEi7Iy8wtDoOUdSEYPkgf5uU09Ioxe07j+XEAlwqcWk8sADRqfqiZNSycJlO2n1mMUqTz1K4/ZPO/Xy28yy7/P7+a8JdQqei+oKtb9mamAYGNEb9KkDWQvl3oypoqkMHfcs2ON39GAfpqTwzceY9neANvRkC9a+BVK90oUS6VWUFJKgbNh+Cd2GTApvJqr7H4k+tyUR8nqSIuYABkFWe95YknAIyqo8b0FXkvx1C0DRKn5nLtMqAoe78W3fZsmmpGgd1HLXrN2JqrAs11w9yFZhyrl7IgSwx7gSz2F4yMcoypqWFMLFdG7egNuhnZXeBQrvXNvOjR2X6qSsHpzkqPKoi1CofC3rZeINb0m7nfkeKvSlJN0RnZCu7izk4TWyHUcHr2JGuaBWsS6YVnUH765JT5gz0T+q8EXbi1faf199qo7edc0yn0Yag0WiSmzh0Gc1h99t4f0eqYWGJ7eAQiSafdQV2FaUlPqa4jTZujqUCKuJtBzPbgJZNOKTbhrQnQFLNivaclqfMGT4Ht6NF8Y6eqeptRQFtoo8J82edn2uWZ3kVgBFnBK0YHRopoMCYK0gvCtVAptW6DGYRZIRn2hxkW0pK07QYV+wRxwapRL2FCWNYQwhADxz+XfavoIqLdCMrQXRWci1m9NMSeCYnogqe+5jOk3uPznB6hr3iJ7Qe3cnZjAk/LiS3CdNljYqAlrT6iUMaYP1OASaaSADuXlAzmBLiB9B+S2tuWCy20L9bgXEK/ubFFd0gxvcinVscqOYx2ggSfgROfD9VusK98bCS5UIsoxzH+kTosgamhKmEblGJ8+LqUkMq+dYPXftZpDbSkkEeY0m1IdOtlgTmBnIcyYwDUr7jVUO1vjJkP/JcillxQ52FTzZ8J8GSoUgCSmlqVOUj796urdGoqrAU4nW4DrNhUsqUsxWvzh3gNspZKfvQuGWz3NCtdo5Eg845zbPzFJ0uVKXFWXSukmihZOHlZ/Tz4cwRvKFVr1IeZD2R5NVQrgaOZNrsATEtUPGvd0IKzWVT/jYhDIUhAR2XaafXGTm56xcWozVHKTMdkKxNN/aVkeN1R86NyeqD1ah8c440EHkRfxeNSxSgRPRQ23h6eOy+NpstLSYxgNPHmryjQWl4Iu9/pCleFUY4DIgpx7x5lAA9LnJSkzhcE7CEWHOMk2xBJhLW0taACtkLBMa5NI0zjEwAbR3rAI6SKvs/Apm6aK3H6ybSynsQessI+OytNgkwPqvHByfFSJuFoJEYsTPTPJ0zTH8+yJyTtq5Q40n9HLSPFIC8hBM+8egr68IY+SVQmFQrlYkeYzQZhY1BuVQ96YeX1MurS22sZ8z0ZMV65yBma8u/DQpm1OOSwIxEPctd+GeB5ro5ERZj2RK3GIcXCtcvSUmdMnpJ1QIUiIZjA4BVaohaHiwQHtvsmAQr24xIcZeuyls4/pJz6rtMKJlMQGO8jpOaYGMaC6vrjpVNSiYjg6rpNgHg1bz5TkLh8Mq+M4xIFkQEifNkQgj7Upa40025Mzbeno9cIeAUfV5+c+Sf9DZD5nJBVYv8ms0gnxFgF2ZSn7rP942dudFt9ZmCtL3IDfdfeuKPfm/LnnmB2+iUtONivFoJbNmkBGCUqIfiVMEvopAJot6k5pxG2JwDjUqxixxBD2Q7AbyCgSGpdD75PlJi9zwvFcqNZ4CFYkTCoBzy48jZiGSL1YS2CpSPTLCTgG2RsHWo8OKFxhgSLIdyThRqnJFBjDOZ2bVqjtHVnF6HFcdDM8SdLFYrRH7Cnq1Y7WiDm/NyQ8IIA1/jyJkb1K5tGUypk1pGk3xEBkW60JqJ1ARFOwtJExV+FTtSmYdMYRjolh6iOCj6sUGMUnGMWaQ2n4JNkFgqxegNVLYWCQ0x9kcQt4QDzNBEFVzhSqdaHVoYN4L+FYhK0rkpO8cHnvMvSiRiYC3KSphQdZZHd+yQztehiWS9XpoOIn2Uq9VAWBH/z2tSXWsVvW72iF5KvxuZ8RtEpyPHhevLS9TRfMbbRKkkXTAel3TjEzow45FM9T8KULOrQYM5UJyrLNiyjYWisqufBkmQnDDqPEo0D/cQJTr7N+NyHRINpZ8eXdseYJiqWVcVEHlHdWyIGKsZPeJtRO32mKJtHkpuImRWRiLmb1n8671E25AY47ZWaaUNUInI7N5TY43FPQ6lftQWNaAZoEJIAME8v5NirA8ChZAHXJdL0M3cXKmtKnGLCqVc1a4VdoF4M0mjHWfUwsx9SKlv9tIrEJXbivfvIkWC7uLJFtox9d/EqbZdqn15tFxZs3u1kLK6DloSP1VHc0WTOPBmCfgHyiR9QMzNfhRu38oRJQqh/YpsrvlIuEmA2EmMa1D9bQQkRlF8YYrSf05YpnLbWQqfDRVCZOxqOsk5jiyS8W6l/Dy6kBjU+mIYXE6SgysND4EBHtzLCexZ8+neKagNzVBnv7mO6juUq1P4y3MQ1zNo1EGDOF/r/balflHqLkm39Sfe10hMPdZOBSvSSERkOfZM1cVg1Hvb2e0D1lANo6uYw6EthlZCdDlS3MF9fgK8Kxf95waTF8whPceDaxAUCwq6uYj+a+3wMoXpk7Pqhv+qg7OXNy1YTS4D7nxFsMknosnGva+zqYhWzXCBsktu6zm1e3Xaq1OzZPZ+oKuUG2m0Pkd//UWOqWgXlDvqXZf0mrkKrOh5MXl1Q54C+GYO4343T4na+2z1bmS8RM2+lOTcZ3frK4SoWhJ9X/cOeR2bwOtqV1kFW7czd04nw1bGQbxT5K+Yntmxk/7+G0euGMwqZtV1N0UL7cSV8u0LU90/65z7rmRroRr2z6E3hkh1rUcDw8L3QOEW3BY9OYJ9st+9+sc//JEBex+m/RqEuvtOT+StCk3KlL2+7Y33bLKqtzsYifezsT8OVWwtGfoLVBhhxH8CXctIZ1oFNYFr7Aeo0K1iF/D4k06VlBOGs0aKJqYad9uATgibwIVUfy7lZnDNStwATH2LT5JCf32WxM6GyyMO+zxNsO3kSqXyBeUkGNyBwKjM1F9/tWNiHWToi6gg9uCOX6QYFhjmCQf97HX9VIvFUj9K15mAIb5sHNbVij5jnL38EQZ/3hV8NQNp9+LFYyAt5L+EBcnkau36MipcmzvjFGkoQBI+cwTPtWNFQEJKcpgW8ferBAVELVshu93WX9sY2/i1mtgBl9DLCH9knfYfmUiFkPq+pRRvkH9SPXKXC60gXw6yKC1qvbNaf5djmi0t4kr0SzrWW9J8zjFfFUu7cwAjUHLBn+1ItxvJg1jhBAUuvMmcHWp/DQy+a5Oh47v4Uax7Ns+bNX1X119icbX+vsj+5hdfc2Mny2WybY2zjbSe8FfGQCVObbMFPcCCrUu+u2QoKfj70vDRjbP6jMXHgpRrW8+PlNY/P6gkt1wwVzVsvZGJDmisb0rZjdKWRzO+VAQ/sj4XnqHtfHl0OAtfqYZeeOuIPrENPbZlGiTYG7cu/ZKdkefePILX/bL1DJ/ghh5sXrGHXljWc7W9XnrT1QUrb0tdn+6GG8PvB51TvEWVpGHLuJ/OvD4DDnS5VZr40yNbTZsV3fw8PyPV/bLV1gRGL9JNric//n7I9bm2K8rUl4O7NmVzUCIqoXGBZgDsGoEtrSDnZ3xxLValSliYUf5fo1tZmA2IqE7Q5Ir/Dl6Poevf/hoQXb0V28ozvMyAXah4mjH93jrHe81gjGUsuZ2KBgySQ+tRqdDALoJbeSsQnGQyZkyhJX7M0JG9hBup0xZ30VOGRg+HWas5ypdvWUUcJae3xWx9+uLpy5kSzXuOXV1inwNvFYceZXh3kJIkwOJ3vC0CiISIOtvyaF06PixkIUoqhMjffgkKhVj1W+2Gga0y4MkhTqBGxEh6PBg3g6sSxL3k3u1ZIixcph1luGMR1hcovSkABQhg5oQbD3JmCRtTiKb2gRNiphXgZRwaMix1bUhPXsIC5Ppl4oCVsQWPp0omKTpsgyHqhA4eiUQ5nG8sfVzhcfb0sggFaTxCqIjFmeAt4PKI5HBnIZN//VbzCWcLQrwjNeqoyjgc7XOxZzSFWN+tEvApSfbjMg50caKO5W2T4wyO9dRSXUeXhyg7wgkK7ciABFxqZaSV0+0I0xEH28pvm+55X3GoyJ0dy0qyCaXZwhiq7zhJbSgd3vHwxbIfJKbr6cSxNBoA5qTf5pwCT7mtLyHnBb3aPMWS0IgwfI40wGVeMjSFb8S9GTGzXXG9T11aZAcHtBCTBQWySnBbEv3+uMr642mSdMoPw+1OZXydEaXPXIU2cSdq9dcdcrZY1684jDMGLu68yjAqNMjuckqlCBPaKE159D3nAqFjKUHysEy0zzaR1kA/Z2bykY5W4BkiHIC+M5LFfpTt1NZyEkIE6LSrk8r11y02Qv1cp+BsqTLJrj/NpWRbEM/qY83W7ibdV6P0dBzrCNKT1kQr62z3EhFR2eiM+QTPRdrbzNBHv24/k3pHU+b0ih1Ir29dW6IuDB2QeUaJek5Dva0YkbpkF88omkPhmQBAR6kEyYQScDlYdbRxthrPLvmgKRJ9fUp4E2QkcTiZi7aVRhCbRYuUXSj/5V8ihWoLCcJDFZlIL1uXLjwgBTjKGoQvVJBYjJWPmqXfAT2gIt/QaqstYTbdgAx0k06HtgqLocbrGKIT35HURWHPGwwUDfH+827JWjeg2DOvkpzlDtxQmjItfeKsMQkdZxRS0uDzuXIaxAUfDmij7JDox88UXT2zgox6yyEIGoZpqvl82R9G/OjVH1pzCHTPF9VliKLK/Evw/Jve2kCA0Mi7BK34tiKaZ2Dgz4sXPJVnNGRwZvh1GF+vWkVEUhfZuYpz8KwvzvMdOobgiev51BfjEQ5focLwpqgNGDHwkH6wR8tv+/8fMY7kB41jsxo66hPbNJKpx78ZTSqOrcPAy7C9nMtzO0eh64Ff3HPJtYRKcFFTopjS58Mhif7Q9A8FIoAiWsHfo7MSXkv+EZ+LsLDBJ0YfyAAjBsoP2vI/qZvTUWZsKd1sIlEdX7SFz0SoXDdqZf5HwtA0UxtOZA03Gy4p0o0mWql0TOZ3SmK4dfE7nnVeuTubIFG4lUC3H7juVz/7LB9ueEKqWf2z+2lwueJnj9y+/02I3fzMBjeLe978soBhbgWp7vceKchlQfcHpSu5kJz5kbqrMq/7E70CJQt1f46/ezGffgkmUQru6CqZnRzourRQkGAG6R5Tct382xT/GfA65P0k3h28flym/9+6gVbanfJ5U1ikOydmLi1kt+9eWBAqr9JJIFjNJovBRnGwdP0YU1kE/GoF1cfHmPR0i7Jg7J9Q3v1IdI9aKFZ57J/qsymuV3enwvXXcRJm+owJd107tIslLv9JC4EO1FLLeKfuZun3a3zoV3KavbVcvRxM8m7tQBpww6QJTCcfKzs2y8C8t9GfICM7BkqFxKThcrlafmFWRf0Scx2yd6qRQb8YOb4xpah+54no6+Msydu86VmGtPMKZTOfxyYIaOXViAEizqebLfEjtKju+A4fpq+PCTFSqpsTchQLX5OXiAhP7sCDuMtTAXgQBU94wpN7y1M9JhU0grTOZiV81ejyIGviN6TSSVblvQsY5AoQyAmayRWHON3FtPCQf8SHxSkBRMJSEVYQflIM8HYRsu5b4H9EbFVdU2VCnhV+qjIVX1Mcb2zskS1sS/xU8auwDq7ydbxvwmKXcT8Nx4Q5VJqKy/Xy366kvLBKqPUCBxPm6PDaPK3TTJMxKZhqQcTwyoVZtNFfa0hM+YZt8whJ7VIy2xMa7bFSQ33+LudFM7MFW7HlpoKXcbA/tqhFNvNnQwwz8gq2KyKopBIqLRUgx71hTOFLg3O1AwRAjM69zpmnp/ZJdO7ZrITGtPHbp1NKgl4xMz4bKCrox81rkBVFIqPWyuTWcUB9r54tJgiJ4Y6oXnTEZJAP993q7/KBSZv6spJOKYo5gdxZs3OqkAxk1Rq0000fo6ME9dh9tZERYsUL5A11LeVxO3yssvu3lheuNX1lEuBjLYzw5I9DOm1cZC1gnbqKFDGb2E88Tods3zrrWPxx3wTY7HgAhrbmIqIRxVSWewEcIzwHLv1C7C0JwSp2q+6tWip/mcgUSj3KfQ+WSoIN8oNwUL6rtFOLYsdrdOM76+LeTg99DSTVghdXES+b7vXq0FF8HvsSeYWDUo6kJmZeQtpI7PQ3qIejgRIFWc8BoI8lRiZK6wLprMEj1sm4iul/h8d0UCk9aegFi/FxXEk3k3mU9ta6a9iLqkTndFM7+sEl1Xz/b9bZPawiQ5N+wqSz957kzn3sshVzPwodWbXif9ScfKMSPEC2EexRFB79IcLlqrB9eLOLkWjA1XOU0wlx6Na59egqr6CSJsdCxdhcdkGXPqTINhBSJM89nTWVNay5LQXTvbXbbX5PcMBu6FCLtx/gKEG5IWMmKqqoGT1ThiktosSNxXpTzLmmUJrqJXjKhRMjoGh9O5Kq1dgSVJWh8IwlNlLfQqi3TfcvR/aPaNMKTsBFavmDfjOkv1yTfD8Y3faje0rJg13DyrDUuSxLQTTrVE5MqET1vVJRkU3kw/RYbib74tvqEtLLK+VkxYciEg6u1HI9MLbxVM8MU5hAJCER0C2WcFY28rlrdRP1fsl4jC53Xx0VcoQrgdFZM4T3fsvmMXtm/KhXKahvYAvFCqvcmHgB74sxZRz3jF9PCKAgkgKWeqHWTyw5Yh+CNX4Xe54JKz9u+GMDIaOOBKz6gqqE0yjsain3//7pE7OTQr5xI9YNvdupHDSEjDpnothuDBb1OzgK3bkK7P2tmMzghcFB1PaIkUZcsPdboZyzwJ8NeKvEwi7baOX96IH+qQ0RT+WpzCHBfT3ZRrzPuM+QTRujrm2HhPYTmpJQUVbekb9TvhoxzH1VtHbsmDUh8vYQ45eieher4VhG6ijZWsDNVStPICrJPcyW93IOIfJ6jG6WO6Cy6lPFlnIYOoHC6d6Qvdv38sa1a0ZYBnUd302I8Ch8loI9ym8n2bj3ETCfgVsYiXsEB3eCufSF6wo7z8zNupU99FF49dQ/crU4yw1y3IejxVDl6vGzTKDT2totD4i2vmbwAvAMKSDgKIuuo9vNmSPE7WsfYyT85sr2zAG3lWPMT3ActOhbo401e1GRHS54ZgOyv6gaUM/nfq6ooV1Xv48wDUKd2sVPsPIHoo2bO15GqjabNc9vJtjs2ee/KdFqfL9x7XgFNBxn03W14w7AZlxp4WF+zv0hfgJ1aJUAVvLEhJvrpTOAnY1g0NdTFcuBQN3rtHLymzUfAWKSU6+oq/2b8m3/GIfEIoLz5Z2gouQoQaRC0HzhWp5uYzVXfyUXiqmUL/BeUx3EFZ0YpFReagYwQK9ujKpRpw+5/D4zR9YrDGdAcsREfim5TiSN632AnoyYn3GXyrdaEkWLqv3bgOMzdfbRqVJD/YOb1biYRsaewhWoRq1cYlq0adNp24PEZbcuSVo8N/SfZLmKTmO693Ujszo00zpSposnHV3WPxor7dFbFbVWTXlycic6kPs/CTsNzUfYOgopCzXajqHMFTEkSlQ/+Yxgzrvv60H8bh336Wyy+lSrInPu/7DbPFFGRtVRFX9UUG05YDCynJl9W5i3RRgQGU+v2UbJo2jNYiQa6+qRwmu0t7m1/pPsOnP3g3T3D7m7O1jVoWWgyVqp/CEwE+fpQah8YNGXsOq/ZMcZidf9VmaGqdd+FrU182iCs/5MRKW0jVl3jLDriATLTayZwuW8l0qNF4aEVuhOG4KwSuI5bkLkOczz25iEb3cojF8uS98Nnj0yKLBvHTq31DoVNyH5v/BT19/LzECLXBxg5dlJ8oPSoBXlyhEP+JoLl+xrcyxrcoRZSSvUfPvkLNkl28vub3pSfGQEHqAbrpzTSY2Ib/PJEoO1h31ky8gCCSp4NBU+AWJjy8axKo0ZeNeVvbifQ/Dz6gew/vRtdmjvV2i/UYSpYpM4VTA+6ZGzD7gkbQf6Ou+6YxYGXSQ6Ksyqej6l+x7gtwFR8vzcYQUsoKZuyNHdAim3XwPSGZ0jUOF2uphL1Wf12G4b8GyHkJVSd22Y5GPJ9SC+lD9djv4HF2BAyxV+QhodniPWYsmhLuZRAkKRoc8K226Xr1hoF48UPfOUoJ4EwR7Sg/6tN7PWsBv9Zoi+ZwLJ1yRhRl18/DwwZcoUIf5Vx5uceKkNDz8dJQ8+uiIhxnkWGuaVEJIWQfxMm9F5Ro+sUX5bSCwehcNAwJrSJ3XkyBZFE/b8YuZx6C4i+yfbgnBJ3NIPn0GRrUZp2PesdVpTguWPRfz1A9o0Nm5bD41LuXV8NwphE3IQxPFJcCKKyo4fy1gLNt6UpQkflOSAG6+6p9YxaRoPZCZ6zizNTkxzt9a9da/e2H9sbSxnhPSFopg0Xzlp4K1fdK/A4ZXmhyhPCxbb+JZiYJq7yM4ZV3ZNS+l6sDHxZ6lFuw1Eo7fdiZHy+0ktD3Bd5J6grPcSqsz/juFmz84x3deaCEXjTa6qwfEyHpRP9qWcUwj2O4fy1M51HpHLQPTLLi7a+f61xr4AtWP9rJ5JMw++nj66VO72DHsvbLs9xd9X5Jw1Op+SMl1UBqOch6WbxzdpSMpi29cfn0RjwHYkBglYROttJ13sjSvm7kzCg/Uq+mogajZPU4jLcdWVra9gQpCBkaqNqAJsem/dJmB+jQjY5Lboeaw7TAf4mTNTGunSzs0UyvbjlhUgdCuGv+gvbh0LC1tG/qpeYWXv3wUUYpRvcSz6DNzNQsajtFt7ew8rGybU4E5B6s1jOpRMN992Pi2w4fq2W85XWmw4CAyEegUn2ZLuUT/u2Mr5/3IjxqPXY/xlu2ZVnfoqP4pKGPF2dNcdOBYUeM8D9271UZuwcsYjjfA/iEu1e/crPXTq8a8hi4da+2jfg9DPAQsfIBxlZVa9EXzmYQ46/fKmeKuI84oGJ70w6qUv0InQqp+eKxo+PEcadyK5Yjo3k+aE0vrUC5j1z239cDnSdskKxZiHGttLUG2k3pXaG8YG/AvN3Z7XITgK9aU77cqfIcKcj9pwAOPQUuQyTU4SfvotLYcyg+4T9g+NY9xgkqah0QVW0IbXov7XPcKhZ7tA7wsUYHjqhbig2c14PMbz8JPX3Tu7f8xE4c2fssNky22yW5qlagLZXAdgtxpg39wWCjNHUo+8PeEp90tOBvtOc24Jj6rfolcQureKnES+OF+c5RZHKvLiGXHMLns73LF+68Lo3U8W3/2uO1CZbhCaEl/y2mUfGZSs1DK2vBXy1zuGflzeX9znUopKxrjseGChfh9D3lN8+zqRNCXN3oLPkUssD8rFfyTOf3j7cLFAz5LRm570z949i+iCdbg8dcXdgMTXuh+Ry/7dr74aOECh5J4g3t4Ulqy5FqPAEb5w2F2eogJ0xh4KiUjJ/lYZPulPXAzNte6vZK9Ixm4TVG4WI+RckyMaWeiAMkKDk0WAyyHDZ4lJDDzy81bG06hFjmGgc8MUZh3/qSsMY9ZjvcnMBHcx0xyfSbsONcfF7JHbTaVCIj+yxzqdJjZKez3tjBxYu9Cpv+3UyHpBmrfyvbhRJV/B4tg9I5HlYFdRY1VodPFQD72kS49F+14dLl3AHr1APGlEkYeNWOzTwT5gkimSSL/eh7N0E46dZPi3cPRAA8KXB9O8vl7pFdxGZBIIloMPxUeQlnJjn8/MO6fx5ySHXKY86SWzJVXOMSNBNOrQVmxiB97dLROPscz3hBYuo2o2gfwrv7dvY9DMm1SDNNmeZ007GPUB2STVZv7SwMKT2qJ6dpd1PwkGYKnLEOHbhLEMsNM67blQDliTnytE98NT7/qXCFPo99BwxAVM8LNNMFPAVWZqqZYXydX+P7PlC+pDbHk+rCb76VsUk6WzwHpHOw4UZZ4lk54/mlJeOxOUs9v5d9ELJWVyr1YXqOKsfVsWyTn9s+keZZyzkKA6mefCDcMywdcXGDClaF7NFiM8MHKcGlTSp2KwKS4usAEECkf2cyyCofMZw8tNDw6VDqyrLceHW6UoVKHaG4ZuBVrCCk9LdwOmKzGPfMlvzAQ6LTguAHCMxFb1iZN1H6Av+TJ5O0ebJGRwQ3xHlhUgry2lcRvV1YCYG+F5LF4xwkepnxDV0rsP3BQcIp0FUIn325bP6yqKK7E4iaEtCx4z2hXtQpcIx0Qu+g2cVQ1XSsBqydiURR+1eqHlKtMUVvUm6RKcgdkYNaGlS+mRnRZCdtGGUMt/u3wsDoKx4NdULXyEUyY482tHSaxP+fVjGxIADGD+Ce8d10kI63xwBiViZH4k4f3N5V/2fPo25/JVsqqIkNnp4rCN3Sejic5CZ0lVf1M/OWPsIKfvIhk2G3qNHSGSJigqQmXIS0LF+zgFKNdDEIlDgLBPl/zZbo8aMWIgShWZQ9SCFagoPGHovGZ5dk8XiihdCDreYz9jeuipQML66sKJUMASVfjgblQZLFbnqIgpqx9/YBz8GR/A0ZhHFYcYR4ln3kpwKlpYISP2O1nmhE47FnoaB7ReRnk3hBDPqIbmxbEvchjTCxgOIBYfIvC8/h14I54F1+Apu9tVo8nsCsIOWz1kcsLXtGeOszbdJaGVW1qirIHi0zLcw0I5MNYKlrsmc7BekgOh2wV1nbJxQoYWTOrLEfpi3uzSDO3jgk76FvUQE4zTfQDHIxhjCuEd0Wdx3lIZ0yOkGu7EgW2VZ5OvGL+wjRZsI90nx/sdcaJ96zL9zX2BVHvDnb8cEzdSUoo3wegOe7bBRwldxQeQ88+PKIWf1cIzGU39YCHNYce1x6SKD/VZDWPb701SofTfP+DFCuM85x0Zad4hqK1gmETOs0k8vz0LyFlVHSiAYuCEjfINJjNNYemtoGQVkR9esSmZOXbsWRlRKwud9mg3Y9yKwb8k+FimwDSWnKZOVHsi470ml5tP+sWbLTTThlgE6OdcQInQb9HiQso6KP7wa/BHa0SNszUwxVw383MEfp3+AS+cItkOGZy6e7w/iKL8ZqEScYGs16Lj3aKI+gV4Ak8kc27q44DqtYEd/10063sOZkUfU70tdxJv3BRrxUzd1J2dvptW5k7oTfL9mbVpfu1Zv4mmw0A3/pTgtEX+JOG00lrzho+bQKeYZdwSh7BDXc7GyggjFN1KnIu0Hib91rUgmaj6z6Llbp5n5/szgVsxp//4WwUQL7ObaPUa/7buX7PWP/UmPiupUYuvXWNGw/1pbj+sTxjgbDHJPX6P1gu3/Eiafq2/Xn2/ZiO/bvMeKBu1/JrKUdevyU819vG40twR2A5GZN9YbDP8blq8QB3qGvz4JMnrFdYjhcdcPZlVUVc5gpTM5HKiqQQW510rlxlnoepJ2588V0kUy9Y2aR7ZgvbrfiMoe3Sbe6bhkhNkk7ut4Y/N86BXaSc7XDHDLsQY1K/L1/+h8hoVg9FpPRlu/4hIcLSZScO/zncef/BJzK8ceSfPWbyFYqkwaec295ivY1rkSSXofpe+w4yQROLwGDAUrIwXhRylMce5ocjEyT/WAh3V2CYi+mMJqKfY65euZlf8hezpfYG3CnXJ35dP3E3O1My81+n3rRIsMDn/gTryU+zoL7LHBbmAhEZ1+0f9p379sRmVPTsymZhwuUjSV73H3O4NCJ15P/c+cIkEwfMghE6QEzWXD+ysW1vwLBtYVWBTHeK2jx3QRCQd+FAEB/zlTZxr/36nW7CfYTbIXFLbuB2tnRP4vL4MdnFLGMpRTCr6yScod9SwO7/Sd4yFrVsK03iOLcLWzdk22pBp8qABSr00jEBls2o5G3BMj6F5Xb/UODlQT2htaMhYrRI32g+vvd1bgu2mvw4ZDapNBc2mzeU6GbgpTvqb3BrjXZ9F9qzxfs0sbd3BAR8qtgaFQ1UJsYSgrY1fTUEyyUbClnANfsNzI6E1+/REbzeVOFviyvUiLW/agrSctTwYDfnYriUiG8ibki3zWoSqIQLz6Duok2fPSi2jReWg+PXvJE1FiyVrspuVLTN1N3nhwgSRInDFJ8VmWvMGim9H59o/flw5CWAjLKrkDIkEovduM35N8mdH6Luym8sJQRUH8hcNcwvnFdE8ZHZtcnglUJY+kAU0CNjnA/n5eLCm39vudK9FFQlXO97mLtR82X/6fsVWKLKRsjx81tLwrbJ2llyGQwaoDnR/QDCtI3LYA8ag0qCDrqOSaigTKTWPU0m7v3tb1OaNiJm3GSrCHGk7jXIszlxa/4YUr6Ag/HiE8M89LfC3pbeHGonNKNGoOX3qxcHOyVq9CypKvfOcPittdGerPNuAR6KlI63rsS10OEmU1WrFgDlNJbhL5tTHTv3joXXV8CGSYltG9owDvX6oiilxaCaCMj8QfYfagMNS/9adGKfSQGW2hYIAcwTibKKSZZx+DF8sEhvgvTUiXGwYC2+MX8+dzXkQbrwjzb3UfduwnwrCczWqxtj/rJYKN3MVuyqNrcG6f6mQ0fJZHQFjQaGYTEKAUnm2ILPDbk1wDQIDkkagTskUKJgKrJfxgAXZbW4q1jgItkmTh2z8s2fK6iDy9vA5+96ucFTIASLBqDxPsKRHytJf+riQilR/S2WzPcoijtt4slgyaAsRDMMm+9pxqx4I+GaqeoRfnK+/Z7oLNtqShEVnKPTlTAX9thbUIjxYrsFlQzIhiXPQAWlRPLVKw5QMB+aSYY9Qt3Gdk0gpi5RwvB64f7wa7gXH56GaCl1Mok12vXZqAF87bpCZU9xW3ABRhbTN+Q2WY/Sxm/cFY7VO+8ONFUlBtQaxXOfazGZust0c6YqTH598QKErkI0K5CmHuEFhFMui/C7+8KKCWQ/FDAC0v6poSaNjVfA9fygLFErBZ02BTmztRlRbcTNSX1TEwhXVfkRBHvpUFffwkwNqxKgCxCpKLJDGRZ8wU4tf9edy9iO0+Mbm5uaoBJR/phs5Woi41YsO7Ib3LlbRhbs1SrJP2PQUJtUs2w2E2Q4vp0cQkwSVlkKlZegY1e+w1huiBHsDcR+ds6GhGWamglLJkNF+9Vg6nD5uwoR76wsojswi/H523ulSwQFFR8vfPixZ7Vl1HVsesYJyiaacW0Qj5SdVDK2n7XbeHK6mS0STSe2hHFl5Skvf97Z5wI3N8Fs1KPqH7mWrfZLa5kDUELxHFkGjXjObzIPTotPAxFhdXvmNdEsZTh/aEjEnMDpCM4mKh0WRtkJEJnsmIMblRuH3uBi4MPEsN2Gh+SmHERAYEMJ7iB06HfFguWbubVy7HSXPWh4mXUXs59IV8g+DZ2kCL0XU/G3rne4+g3kKKiHkBL6fPPGtEIr7zl38Z9MVfzwnTgCF6OlgrPBJtL3/+4edt2/LBe2LuOAtFWc/KYoYtj8EWy5IoXG+6Ylo98dYg4qKgF9JEgIRw56SuJCLaOdH3vgLSowUqdv7tlsHDtQEYVZcsr2PSIQ5tIBTcY63gXwkLvtKXq+EJ1yZsAWeSogspR8AeikARyC4QZi51sjApmQDHouwTMOGHgkRj1v7AYgYAY57Art/wwrAhagq4fgIjgoLZ2YDNZLQu9m7mf27eZ63wdY+O0dW7dF0YbcDNVJY9zYilaw+sbrujDX/6EpTnMOmXyAx1aqo60v8fu7nW9/dU1n18r/js8jxY8UeToiEHtkt/UQ0TLkUUI2MqDHFgZ22lKQr+YOOLiA69LEtz8sAlQUSuLGCTCI2BhOhYjmYUDtZDkg0mrNx0iaO3T1FTrQUd7BCK8sSdAwfENM2vBuQjhr9+pCFk9HoqdOqtDd32jrF2ToQ+NoWbrI89WZlrisMoHSEtzsCRtGJNOCihDOjeUWkE0fFAjTJVEVvcZ02NXIRA4S9OObAA5uppqMVAglNeZBgnhkiHrsHI7uxALrzDnYZN0DfMcjltg0wsZ9TRhmr4mUGNslF0BkBEDW7JA2zbf0KxqkMFfUub05PR8kIkau4gOnPaZeuiQi64qKReG4GesQRUsb+COhHNiDiomHi7f26JGBE/vRB4+BUGIkeuG8+jRnrQ42dGCWmYWdjyv1NAnghy9N0ZX1YR/aaU5AVQfDst6das4bRK33zHXIwONfgbnbhGY8wa67CbLn4UEllSOhNvA2K9sUsHGFhH6m3NYnto4BbLrVd9MSNCiPXeEcc0lKn415NNqHxHoiFTHORCxFdzFjXPlyOUGs481rr0smZiIaJJP22nnT99jHEV7cl9dQJJ+ekUFloJJ2atqGn+/ZT5Mm2h/FAnpxaypMDYEUCxw9mkDCksnZjRlyISQAs7qhBUHMocPrwTqES5O7THbNRQY0kpbL3pHmt32MVU8VG6FNs0qz/AzwkzO9vS+6DDedaZ6wM1uzLnzD7WCoWbRVDgo7sL9vHD90O+7qzqRpaL3CjQl3BD+fMS9OtlnflWLYJ2cTxYyxJhA1Y9qN+Ll3Uw0KsV02YTq98kgig0QihrZBRO3rr5bIBpfM+LTGw6Z2O2iD8S6TAfKQuyFwqHdjByW3Bbappo9A9tVqKwQHH/L3N4SzVFBppirCxy5J5Tf/0Xt/mWatxB0cmz1Tpdj4vQXd9AN3jn1s7jIQKt9b1rNgIKT2jXSprKcmeOW3CBFd2PeUNpyIJhU/mZBUMSMeJuMl6wYVodqXZzRm0l0iFJnOCCz8kLFzBsznZL7qotP0CURcJ1yl3iUocGCsKbrjYR+v+WQN7HM7G+9JO+a8FnZ8Rg/H6DIv3BqlGAyYvkJcgYd64aM0iiQ2aeYsTU0oE35VlbFu8+9U8KCS5fHMaxujqI2rnedaPDxWjWzs/S8Z7d0hVSf+fACprxQhGTE7CNRAPbKuBfEwvjyug3D0MFpb4a5YB1ngvm3OCwPqJyksi/6Wkg+qkxfknFUpJoq2a+g5HJ4G5UdYfGnw/n8CYaO2IGfAYTpv8kFIFA2MJEMJ5+NdcfuIUGSUajx7VWTgDXmrsTaRrmzjGP19j6ro8upWx61xh3KT+g0oGWKAKo7FpiTNi88jtiE1DBcUt9jCrr1sfCXpra3TwLLFm1Qjd1PBcHUAMFeAHzp/lzfU2iMAhAAZIQ2D4QbCbvgda1Kq1F8VzEOyd6qii4/iASzts6tGtrQKlLIIwTiLtHUM6jBt32BhmvhHj8Nj5V1Z2kuroVpDS3c8LnorukpnpANjh61Gh11bdW/P8enthlspbIhf+HocXzY2UIYhiQAUKYD05y5eQBx8j46FMOBLQvdRjG47QxhEjwim9Ewf03kYBm8b8iDCu/8AEyO50z0yD0o6q37bm6s55v+qZeJyYuO+6/UYWwhW1tKC5HBrHqBzcbVKknMe6u6BCzhy+v7N2Qzx9bws8P3A7W48n99jnp2u3K3aFzxwn3tZ6SQoPjNOlQJA+vzJ810dCGZFTf2/kg2ymDTtrtYlxH9n1vf7/QAvtdG+/wApKuV3lW6FEXYpytsV3WaOkeyBzDoYrp3hAyvThKiEQd2SPc/cRbDvEzwx2NeWxxBQX6h2M2ozodEYaq6ykoPgRD9us2EgBeYMbRXe/YoFIUorvDSpyKn2vp+U5V5Fe1BBg1GWUaSqMACf9RAqaZFh4+kPys7Tq8BJwWYK4Kv84+pKVGeKungc/nRJQK/EUyBv6B2qaSbcFm4xgjQI08frUOZNO2RZu4ZAPwRyym7kYtGc1ZHdIormtUvosJgSplJhjhD4gU1B2VStboI3CWVLfMDlg1HjKevxN7hFUotcI8zcUE52iku5uPXrFyXYjbNdhbeQCU2YbedesGhAcBLXRWpoTFn9fEFyOXryxc8pXhADL58/viX8BL7tplWOQYnTnHrwD3thPhBSgfcwXjwaxVO0YZ91G95GCJeCvIHJimFj4Z5ZlaekhYVMTKW/+JI1GZ+QgZhtrREaL18eBsidV0nuLppBUYRf3rjjZVhuGs0RKnjAnyHitAmrMBmqDU6NBm/OrAf9QrumttpdCuAykzwaR7Kwfh61aJ5cmrGx+ZNht0BHk5gONloegJUtNsVKqGeV0ntEDKnCZD+uJ1Wktr7Yx+8tXlR3ot0vDAhj8K44DA6Ql+MN7RrbnscEOtO7ZUeH/uJCcRbkBEbeEUk3nQcZ2FkYKYiOU8/uWSNwSkMdQ1Ogfptj6NX5UGCbdV6qHLFqikJV4TijywFQDmTxD9zzu5IxhiGdaiU6fxHgcOL2Tnf6VbHnrOK5VtAut/7S527swc8Y3Lc1/sRUGtOMfT4aNm6K3dR3GsD3uiFHnB0shOeWgATNN322GJxht1AJE3PU13OlxzKmCxQam/pksgQ73xONVrdnJulwb0Jyr46uJTVs4i6VU1WpBg3HZ71BgkdXpHVgBSPTWu5+Oi53A3Kjk2mm44zj3qAzI43INLJ+z1miKp3SAk8OvnKm4qkQnicEVqa3eTpKHiZi6zahm5Ntei6rXDwJF3aTwLsSdRPHYrg9T3DAVdbdPjUFRkMXZOOvp2cssGzvwHyjsTRiE+fbsyKhYo96wO4I21Gu4XyhBmVOh5slgqhEUP6lZoyZyeUNsrMYlMEGI/0ixpBPnqIF4IZsLQxpAdLNK6Jc6QdrfEWZmm1OLZ/2Kojc6EoyRT2I/hhgkI/uNtvQof4WPpGoUgW3dlSvkWom6NgqYaDDUDENi/yJpej8m8pNjfUQa5kNdymVzjVub7SE660TKie1gR5MHU/ksfcxuDxn76DkUtOYddddF6vULWMYeYkKZToTUHjdkMo1/SNxG6CQtPRXRmRHa2sCPozpYGLVpzhE3NKvQxnw8o4+BrEZPPz+SkMnbkVYcLxmh6H/jVDZhavvi7+9is+y/UQtV+7VdOP1Zt7SMy+LI9tz0zQqhjWTw7ZoY4tJOZ2AhIXK9xDwjM1AVveE8mIlbwJqiuImgN6HIgBsDUGPVMWOwMmUMUgrUZZiaDOxFEtfkEZp3ZWooppXoE/20PAkyI4KN03uYA19o1TCjsKbu3g78YGqwD0xG8Jw9W2UKDf5YxxxbiHrL7QhiuRIgvI/dF/jrQD+jCgcMVypq0raj2E7z64pUEre1h4oAjsstqI+SkDYyH0UFdhvrFewRqt3yc63yCY7ywZ+Jt95oPPck32qis+vaRoW6gpMiFSuGVqjUsTFuBUgbEMniRHScH23+F6+psWMnpW/yZrBZM59s8j69+8m7PkBt/aeO2bmbaS49+x2brJndkbJezZbXVcUJFkb7KaXfLvfzgYS+iB/8jxZzG9Py53MLSP5LMWgVjN8lfnQOo08LY/1+ozYOmED+c/mNaqePwLwAJxKEr5MqPoc8ZBq9Fugg4eOf5McdI1O3StA/vrlQ+ie+s2FRfo+KAqmgRcVKj/ftGG1muY/2kbizHazdOXxWTW+ZcKMESCHDMGLA3ROFCsjxVsNFiPQ8oZPZM3qG6fgw2rqH1e/eL0TKKk3mxRTLm2HFYrP4xt2vD9uMNXSypiRj1Oattfk530LXx1nk5hU2zlMSdmqz87tUGXsJD7gN+yBvuT5x0Gvej1XTTr0X1jz/FFJjOuLH2aI8/6SPA550fSGo5MifMlFloU58ckufPXLY4d0u5LtSlzfnP8NmmbRck53JQnFZFhg/qpNu6IgNcMiqdhhsFDasFbvm+gLNg/SSWmySSx6QJ6gWDqox7gBIqf5pks8nEP5UTkTEGHOGoG3fyj1tL+sOE7yzgA02NKzYLjqMIE4nvJCDcoRnBdwAfaJvTZUPDN9kA4h3zoyaObchIqiCXRHWKmUc23rPNjCyjgee9KrlEmpCyn/5RkKW/0AEYzuWhzykzPRtI/ozLiexL7XSiAQNxTg3IAi1LhTznDFfs8fLdZFyXXx3zVazxNBCZusrabVI8/OPe/noSOlSNJs/O8qeE+oBwWYg7LGxufKMI7H4t7VyX/gMPhuQzZfszf++iP/yChUJs4i/i64j+cAMwo2+WI9I0APyHsfkdEaV+Dc86fk6kktrHFbVh/SqjHo5bIU9svp+BCWJvGRi0//hZbLkpzCR7gZuCXERvPVGjtiCZzvgig080eTkJhv5qjOKY/6sqTHpPPhr0gRW13Zgxv8goed9QLxFs80n4X/f0SfeFfcDbcxWx+LBSqRtLOVU4qahf3rjSDiC3iluqLDQg/JHQtUDWnCM3N+I+6h+24Zn4E5p6ISaT9SqPqN/1Kc4fx2Br6vhifWs6Xh9qYUOPQfrONoqVXcIryE51I3liFY3oTIn8HPNSplyugksHjGkGIk/4BANjwVDYRDYj5atmxwtIZ/YvN1yq4Mcld2v3JwuMQwyXg3IKjNQIsnaDkfNwgkPm9KG44IpY7iltY7DuQSjAUqKoJ/KfAhh65VEfRCuQiniqrBmzSFyVSYfJsHWiucO1Wv6L6r0/Wi2DtkfDZjGW4l1aVj1qtT3j6TKlJW9OKlKqvB/kUQoRq5/dJ69xJ47yBtir1K1s/Q2ChwMRV9oNjp+QZVcWMoag5V+ohAgx8yvE7wQEQ8P9G8QZQ5DaeMaga092Ff7mnZckSl5kwTMMjke6rMNRVk8uEU08GNxj6DQ0PZE8i6/itwmVP2AiOotvKyti1by4kGnchCRf4yarhUnCvvo35iSfVzA8gcspPhlsPFBvdniOjYK47stLS1HsbpYKNVfuu6FMdHtJukVtdQS/eMgctREHt/lYG+I9cjfLZX9XnFb8FaeKUaVYzwO2qJ7MM3+OD1gtUQTCZ6TWOzshxT/g/+EdLO/XGQPhV6hRpe3IBN5aLf/zDfy/WXZtiPlydfCXkJESi9IhXt5Ji7dCktnMFbfDCM98IUFmLlCyrpJbEhlwM8kc2vMLlxn+r9e7hU5zZQqMXZwA0Haew8QFUrp7r06atGRSW1vVsaDVdMVMIsd5Xl4UGFj3pQa1x+y9LaNaXP9pLr2a7FLn7unMOB+tLVIMu9GndZtnTR7ZboyyYfqAwxFQTyOMH9EmbC4UCq+ZE2ZkEZmgkNMSKdYk1qv5m66Yp0yW1KTSADD7dBWWcZgAr5NphpTBb5I2Vd2N/Cpsa9rf1m0/3oa2K4Pnjogiy1Ypehjd2eKLNYW+OyZc3dVpV6d7N7/vuJ/cXSXClXKEbXNubtYhqlQRMXpTEVETgeLZfDx7x5SzdmRJDDF7bBHZytF+hZzt5dzLNSPAWBTkB1dOWlw0a3gwimA6JsBSBdLqvfn9/n6enWMRV8n4gLI+dmqaEKktn9241XGExVxvWtqbbMnR5fjRycy3G0h1OWdlmG4mktxN15C7gCgKDCb3TlVUuPDFsqzo9QjminRbc5IP7nqmDI75gKmS5LX50Nu0TdwpwQtQJ8OBDfB3ftwDiMMyw9BJCfCJkDhXE1ELLCZMEcnggxnBCGAYDKVi1Njk1gphAKpG+r9nQWwQCNNeCD9DdnOVGCbvdsmkD9H//zWx950G3q7YZ9t9jD78BZoS/Ii8ae3n6126ZZiaRMeqTMWbg7XEOLMKKN2f1hYY03KRUj7g1upeBNNWOyjmbNDqbtqsSwMaRdONpbFPfzhUlFLiu/46Pj/5upv2uP73ezV4Bxylf01bu7LQSHlwXqOZlpTrag0FyWi+Dfc52HCQcxqmJ3XQr2epAogxwAG7+9aVw8fPQv+xavS+q5bEGpSGeWpY6m/QwY0A/uXQYufcscEGuTPnm1BIhuXG1bZkGh7AItSMrAjVD6U6VCjF9egl5yct13St/gDzZ9jJmxWm8pNGw+G5hpRSSoOCm4u1nDaEI6z1mgRmi+yvWzrLIlItd1Re05loQw4LD8Duj1ECRAaxxVnpc34pq/4EBmfautEVRtpQQcJEnQl4XIp1Ijn4PU5p9NEtK4R3HnW7yZ3bEOJfZwrc6Sg/62W/JDm970QqjsiAQTVtEPPasQh9wpgVy/0um+j5NCj7vkJIc63W+9gXzVekvIBtrzjVSW8w4Tjhoi7s2FU+d6idl00qlfgNYpwxevyYD3eT52rzGemuY++pBoaaTdCgI88IPBr5DMmoghohFpEEPJNP0fYx4uQNS5CRHd7gS/FihEWhYU+RCYiYK0ZVAktklB86Ed8dPWIrvRnRHbgo3eCCBEvP2IPRSDaGbm3yJIPNEJ1SOV0ayOxdo6tCLucvUUUzNFq1gQKO3DxvDCUtSG3TtduCJoAFIBQi/BF3x0sjE0mqMpjfpvn16l+18je0Qb/YgFXcRZP1WC17jbes1A8HsnsDyQsUebk4KZzxtzmA6WvauNaDvy2bmPh3RH4nu19r61ece9UCIZG1MEmZN5Hw+BQ4eMnN9seWC6cJS2fzgc1wK/qsM+IWvoNfA1hLA8VxD2/0Nz1kDPcIZ8reTAWtP6+njSeMAw3rvAJgx8TRDZYI5EOHuKL6KLamWBMyvjCAZSjgdKeNNMsJ3GF4bJgXzoQY2pcUmEMgbBvELg7Sodw80+DdR+S6CySf2wdEJsrAhtSXlo9ARjr5gPQ27iDa7dpmMDVBJ6QCcRxza0FTy0jQrFgc/++rTcPvnp2rtcCmlTnWwyYSHf4a9IICkdPvWBgycQBXkegj04L2o9LzkVpNpFRflkOFU4Ky834wg+ffU/a1Zd9Wpga8pOj3xf+tL+wqzFFnBeL439C3fiyh/Ymq/NBGkeu980aA4Yn3FQPZCRLca528LSmHDCIstaUwRJpEaMhjQEF7x2WHB0Immf9NP5M6ply4CJbx7Va7vQ6O9sOpcFCPfS15dWqnv09aYPXc2NNeNwRNGGbq1hQS88gsIxMm2v4jEevP/wQFlUTseF0w1Ut/YZ8ZAVbxfbrFGObYpr1Zj3LhZDCunL4oWNbyhZjwVkm1uVJ47UWVxcz1no8DpM6Ax6JAywdN8i6ChKb5kq9Mu5k2mBJmKgHV9PEKuJ4GXmRfV7GpmCEJWrwiG1tjHmkZOUSvBpgCtvZ8ERV5bW6Y0xq/RHenfzovcvftryYvE6B6q6lLmH6I5K0O413SMgVkkO4V73XLc9G83AFM0g9ReUZJrczl8J3m8F9X5IlFZ7A+LsP510gRP3GUtampI4ZX+dSn1xts9hpG78zuVHr3pCOgJMKqbeUDHlfRDEpIoIXHicjMGFYFrddeDJfCTzBSR7s9p1gCE8yTCE+dW13nVlMgpSdYACEAbjWUROqOzXttU03yvIlZ/i+aqCF/kcRmktJSBTeWvCMXv1xpLm5yNkkuGqmRsFyMQbfgjEzs/UoOgzYEjqmg64r0JToQAOeN12bcnSrV+nvBzzpJ5Mx8z+B7lUw7DzG4rdGX/x3Hlw23xeLe2G2l1U48Qkwuux32xN9AwbWSDOgVg2pb6I3f2O3z295Nla5YbWfTc7HXu9Rm78jx0dqPS8i+WVNTgqDc/JAzvNSH49FWSlkbj+lqX3x22grM4Ng5+s7kJmnsvEiTdb7ei7G69vy+DAhaexTtONWn1P6It9Vs9uONDeCVz61uuA9ura4nyipcPVDp5FRlSEPG4F54MSNUvsB5/64wZP09sfbKjCTTsHxN7Ef7IVZI057G3hgJM2ZsyXjJax0jPiH+HU0VUBc7HQ9eweUyrbM1RL4uBaf8vixj9d+N0l5SE6vbBpx1j+He0IBn+7auGun07LcdXOx/zYbchqZ2JNmw91VWIFqT7Oh0eSmTVOsqphnNyld0heMbpr8S3PbtawmacuGlOm+LKUHR6SYUx92Rz6fNGt1/zrO+I9Oh0w9R2ub9FyFHXQs7l3LwNVXcmRr67XblWDUDkODHR+caeK9Cz/C3FO1bcpJqZtsBKgYOyKXqEEc2BPmms1OuB4bI15YQPs0kwNrUxO3EjL13/iFp4+U6Id+AuOkfUZOE2N8QkEnPuqtqXaciJGus1X/gG35ar2aNimb1W7auG7cXZfXzWvT1XG05044zSkW6mgwZEaG5ZLdfiwJd4CDkN7Kt6vTRtO6fTXehqTv4h0hVldulNXPq2yPlyRcM1No/2iX/NUSKkru42VRJMt03ciWExy1Uwb7hDigfYeLNhvJRtUmOxu1co021e6ueDze3heFuYuihChkdnGyjsgdouBPbE4kXseGN8GUvGhFNou5AOKGNWw0boINYMFfPYK46hrEQbjnYm7pDZGFY0pwwLFIs8cDiuSEWN9XbzFGeh/81SKtvw4dDC7ZoOd2uGVGk3b5GLnkHUv1anbxvmGWAkMdF4v+b0Lwis3Q/k+dfcuZGvJV9j0n7ArvX8kJj9Uyz5P8vxwxruBHt2/ZnUZlf2OOVllOZiZudgqGluUQSzQ0PM7uUizDH0riopzMmcMRPjXrrhvWZu8mDvsjrlau1FPTkzBP5vuCijkIh7+AYl4wcoFOTUP7pCm/UPUArXq63D9/AhqCyk/yS0zMyuSk7ExBM6znpnHnK95JwWV3KL4SHDLrNy7CL1bRUcAiphmvPGP7I4q+2KND8A/lk5/dWzB51WRPbNJg3Abb0clI8Y+dc7hIIfv+mKxpmPHswzxbjEoS+npO8yxtYZvSFrFplalySxpxaGdItrHJ4DcvG+xQyHTrcdspBWsRH3v+QfKbXbDeyvo3fA88/dzxN1h62U3M+PJDJjJGYUf8VYvPpvmO8EpuE3nqtBJPpUzqagPlvXjc1ZNx14HTglV9olWxXCLlT+u4w1imk0MMEL+Dtc/9uJ5q8z7wPG92JMm/yBDVMXgofYtRm3Nijqp+Voe9Tlse+IsAPcKdOmpFbzc3cXMTJQltV6v4oWrjquEoMDdZ+B78eHu54a3jhjeOu7d8uCgt6jMc/yzK2OAiln7RXDpfbn9bgtsRnWayVwnb9k45S+dtnKfM3txsWfl5vEYPuv8wSf9hssHDRJyW7CsZO22z4tgI3Gw4/KLT4B89aNwfbjLs3W26lQ9O6dGsoq12RTbDWWztcuPLE161DGrLctCSo+Z8mJrj1IGTbuqmuXOyRPgSWpcRvncIB/fmjafbDSzOxGVpFIDWX5g3r9j9KXea8+QF9zN0eC9TWA2Jdy5xJ7XpkWHMJu/Pm/RrGiQWQGXp9MVyJwGbBHc/lN2EELz473A62PoJDceZWW0eq8pN8eCw1/RG3b27U08WWm12FW6AOoa/ilsWmxBsMZ5wZZR9D9QB4jED2Igbxugl2lEIkCjJFA0CL82DcOmRm+xZMYbQN1+zCs1qPhdcfZGX0xCF4E22E6lHsprIO6JdLkYoOpTkBP2smEebMlj2fnL5/BNaeO2r3cvqjXtlR3aYhPq0NYQuUZSqTQeTO8iuXMG/g7VW2NB5vQ4zeWL3o1f1GidYTayZrF7/MRP749ESjKFdLlkOwCAa0wacD3jzGypu1ILGRXMo9DLiRRWJVEgtsIaoH79kl1jViyp4zA2vdL16wRNC6XKxwJCl5WFo/BYeZi8CI0yngxa29ouFPdHrg1RQ7tzkgOmQ0ZSneDhd7ZHqNarrzFdgC5XRLMm1SZBq41dgKAnyKYmOsn930osMyq4f8ruO7O+V3yJ20CJbtDlI7vVnmJ0iv/4NwNvN7cpHHKBV891s7ouAP9JDpHtEj6nerPKpvHplNsU2N+9sr+ZTBUFRgz8v956DzsvBBTFVUivbJyuYNHRJC54XKs9qKp3FjFE91TncKjwdzBGtOInhdqk/rI/6rmkj3+BlgxdZ6npOPcbcuGgsOEtT7H1G5ADV3pPkWERoE8aIzUc1prpTf5JHiucYkJOIvCTJn+H6YGqySWYcjTtbPpCjS4KRd1KtJqzKlZyKj4RvDl/cItqfYJeH7QKhEhJ5yjXZK8Mnlbz/q8aAu1oNq349EgDuC2HJGsJg45eJ0jTKJSXy+5iU2aNEo+MSP8XuIH1cY0pMFA2Iz7CO203sL5eUJaxUo/v0PA7lNiWf18MIlPBdMwEGChpOraa2kdAhdyOF9v/Q3cLDmo/EkFE1mz5pIUchCg7GYAqdScMDa2laTBo2GPLyDaV6p4zJN7v2FkfqzVn72EQL7FGQSe0UQaA3PzLR4zs4W6z95QdqYvPpL4vsQX+iMou6dyqJyQ6cEyYAvaYrvD50BA/Xb9cTt1HIuYdSkbi39eewg7hshPuCkTeVsGDq0t3Zy2Y7kD/OZ1YHqVWIblhkzHAa1baqN5wR7E4L9tGAbgpBVZozkySugDJxBR4fbS8mBA0MrIdNbJbCuNb9BfwHM2BiBd6I7Kg3Ty1mcBYvYF+uaq/Km8BciGH6WQnBzZ4esxaLZfDY+k9uaJ7U0GoWF0hlgah9X5jUofjRuC9EgvLsGWSKLtxGwwHC7EAj90pJk+/fDa8ivEzlWwzNH64qzizPZWGfyKJBmRcn2YrOb/S1+zUrlQsEKTljGUmtRVxTbqYRmjaP7UyORt+fLic4WvI1E8vycjKaIfLyhQtgFn0nhy14xdolK+cu8jZWna/zkBmcXPoLrq8blK6ptIFfFS+fX3uXkGLeEAM4znlHB89idYtPV9VGavUr1fY4j5WQ53AMI45FuZa4v7Tr2JDJVC3vAkprGXTi3RV69y6Xx4/KWw2ctf7er3SIZPKI+UCnKobM0qYQDC/iyO1WZba5k4beAa+T+71SLahVPe6wPzNf4WxEPq4SUFNKzkU4cKrY6qNkPeLtpkUGSkZe+Db25UxqG3p6l0D3m7fNKqXk36+o+cHLCbGRPsuiur9C8bA7qAHcULOE3VNFm8vJQc8QGsZ0vJAQdhS93ujpsuVcJrs8cTa0JXXK9YrxEOKGr8PySBs9dNLHmIDRKG+m15U0Y1OVrofFK4JzFsClkS9eyqXFLMIUH5QQuWarzhjXeX45dhiHr8cCEwzheXYse/ZnY74Exij4NclR7OfQDoEWs20IMCAzdIY+bqp3sZelChaVLG5yFiu8aC4U6RQumWRSGtSegWYcrN54Eqa8a8azD0Ix+ayoTWbyepWXlpuXbYKaF5AAqt/N9uWb0Zy7TPr8uZthNVjh63bZCRMhAraN6ufthvZIpgjFDg0vmqreGKLd9YVOWeSj9cAks5pyGPNEMJaC2KuOecileboMfh0E0dlUnZ7yhRGhTBas8ctY8BAUwFyG6kdo94Eg28Qy9XQiKGO+tvuKAGxvBXSRotYCTydW7LMSOuzIzvS4S6SwdATkc4hOCqryfK9vZG5Jc0q4B7cMaJo3bU8E8FBmkjneWi0F4kc+Dji4NzsxAzzGoi8rFuHmDFMxQl3JbwC5GkVV4vVVaG9tSMQvhTiZZLM0lD+aKlXULxqkp9ovkzwRjl88AL4AZO1p9kNOfmnHKjdpk9yJg1hJFxRJvjHyhDDsqgvr15RIDh81LZ2RaTGZyn7z0Hs9mzn9S4svUEie7gVrmpPeDKadvLsU1nGsByPKib4bVDAsvoChgbe3S6sgccEYm9hezQ+ZUXstB4mIA/vai9tcrB6UiZru+ZNgnXhAzTx/mW+4fLWnWZTo67aNVUYZdea0eCfJT62pi0a2DYzLIsSTIgJrVXoYwiCgxlPdEkmTaNALqINQyqifg71an7GTbm2tM9uCS0QzIJj1mQ/EZmaLVgkRHn4FZ+WrKtmFkdoFETUTGMpt6LWjdxxSsR+7OuQgIN+GRxdRahdPBB0YNSwEWdnsPT7sa/W8Zdd0SxJqzCRXWtlnxHorzzO9KOWu9QsDcY+mtCcn3Kd+wcBoHCczsLq3FkdRG5jv9dVSCQLRjlQcWPeC50cHtqRJukmb68e9/ZRGKynJUSIuQyvwmQHDRQMhZoACW7JC6l87C/TbP22Zq6qL1veuR/n8jyAwgPahCupDEQegiisHYJAICuSMeYxPbOjT/7idDwf/cuN/wWkTPPYcuQw5Spvxdwoardw+ZGdrrpWu8X1cRFV8L5crftUkr9EiMyb8D8BTd88aztIpd5qMpxmEywRvSwWUQjkQnBe5Nx1Lbv/Rhya4950pSLL0UKHfcD304FYjj51D3z2I1aTD38oPC7N6DGbVQ08b3FuBBWySIDAU1dBGlgRTU+ZmCX/a3ODaByqwoM7qhE/tIqo5FZPWwO4wreO7T5NDGbXlsKgUtGxwK6qgduN9NcX1zKSwYuUVa42+WB+h9vg3ULekFy+0NjQp6M4/X1Q76KVsB9Vl3xbq4r1L68n69XD5jTi/N44G9GZw4z82Ce62PERKhI6sVy7hURtfVstPAOf3UkigJLgeGLa0SMVzKa0nztJ5fBOnojLKx2q/4wuiF+xH3Z1uvzOc+EIKDczdeS7qRxEl6+VbHFRe6GZQdfa+u8LOBHRYHbSV9USDc4yj49zg7cgwCH8rSYQchsJwkLl3H/Xg9uOPtLbUSG9r9+Tk5OuJBr1x/EUwkmk27G29S2gRo0/8efZgoFT4dcqsNNRZwKXyNkdKJ6wDchJiaivA8K+Wh6VSvQuZ0q/+kXv2YbL02cUvZphZR/p6Nvzcs0hMQXz9DeuuSIZ5ZFpsPlOorpysTql86LnjQREqm5dfrxWnoJRbEMtSOUimaNUTItKTBX+DU+AdkZT6ql5F38SgtGT4bgiQ8w1JGk/UgUxWGs22T/1aTY9gdmzqtiucj+YrOzddRrlQdkE63bcDSdE+jCt+eTRjsRuJcDbicYamDlr0yCQrt+/ht4tr1Hk7mnxyGvCxTRZDY928T+/de0olC8FZNxQIyhpxRXqtsxPQM4c1ay+XCfYenCwPHuirY8P6XYWZ/pbBTgaqwqOKlR+JoVuBKEwP/+6Ml9iBdBo9oRsxLYDHnciqMV4HDmL6NO5Ojv7jjq26zgTlWwixUvyaiZFF4/r1w2SM8kO6+GNyPSmPl98lg+Lwn2LRtwn5HC7j3DYg6P6lfj104RvVw808ri0/q2ONhUCZJ8AUhTN0luWfZ8rYdyZziCQEMAOflfXV8hk7BHR2QfJrIfjG1NAzwFBKS/9lwwW64rNek7pjVdQy7SsKQZ7wX3HwF0o+T3Gw4hgkQh1/pjdxPeDZrqOQeVO1B5gZt2TPDPS0z6DBoDzsq0fRlZioE+v+HzniPvbAPmtha/iKXaJRqxBcXUlDgWX7Hz2enHr/XeV4C+9TDJjYKHRo50Qb6CUW4/iJSawEhKBYKjjEWUIY59klMgecfrb6+6KIEOH47xJ34ZlUXJhxiZn1N/x8jgdMnQivuS51XDK5wg1OeoL7wi6ZrDhmSAfFwyCXvES0FZf/8iyD9T1GMlMiBYjtOdluxflnZZtCUMqgku5YJayUXVqHH1Op3H3TMh3MbiMCZd6p/DTcwnbMygUT3ePcUmsZnpY7Obz59/dmy2ndHW7Qr/UEuPzvx0GaO95DcuooyjyqrW/NdMi29xkR65CaGqFuNvAh8CaYPkq+sh55apbfQ8MswE11C/aQQtA5f2WKJ0/tkzv0IdTNUdvHdA1MP1nRZC8bTrtw+h9OZ9kVsI2zqmAnoKqsRnhTLfWj+fbI8X8sCsJsr50XgJW9wpxd/jXels1IuddE0c4zjYWvtMNtDweZRyHwNXidu0b1CSP5UNdkOum7/1IJp0D3dJnBnDUzzWEW9IQ/U5gAi2K3Wic37JYqRvww2il6tOeguYqdgptHQE9HiOGrncJtXVumjQraZe4T0BqF4PGVTQ/ZGH6GPRNetOvi4TiX0QVsu9ApuI19vp3dAvq4B4rQM3a0ORVM8dVKbKRqG16fnsQcP+n3k2zclj+bCwUvQqXwY1t/LrywT/2DdQHkQTJLvOei8/fTTw4OhAKktp8txPtQpEimeqB5BPljOqYHWYWG6Scq9tCtYHsA5TjCXFXNhdyFDl4UDj8PSOIOxcvUvfG1qBS2nDYE/AQ2CsgRqKoSQhJjECfqgKgKvlrbJqgLScNtFTSPgkD1Ko10jUkQh5syAd5FrPaN2kpTMGiDzdGHDqcHG5PrLk8oV8n3y3yNk22p2AxEOvkvm+xovDancudE+flnluntBcts3ik2bav4QuGWRV6MLRx1wKdIm0H5mjulgAIwAozsqoVksxg3BHe+0ApYOMlKIRR4Zm5Q0uU0k+1zVNu7wSreeWVpouqRn4mIWqEvHe8mbRBlmhLK1Dd0G8sLlCiUnITMciVouw0t1+4U+tiy7i7foZK99ocHbgAfGQDLbWUSzfiM2iCPnViv9juQQfFeqgeBit1NVLpx1ncCuiK17Yelsd67IGoxRWlVcSQ3u8EpLrZU7Q37UPbxQA78azltk0np/ZV8TdP4WmlgRa8dnj/1YAFFfmtdKdrMRh6o6fI/XqlecvqLi/WohFuUWpfEYiEjqvM97l+4xtwX06rEq5wU/eRlxA3lmbJzdrCk1qy5YwTqsO8/SqUOTtbl8mREVJHS0Pt0pZz6qoiuAHiql0BVACzmPBNvkajez0SNO+uP1g+bE9GZPcG9KgfbsdKwZPL3RAm55jrGxImen5QBpBlfS+WIXsV4yd0QrXeipVk3kow7smzYWAvT3zk1IWiFB+qliiODIsdT/+fvs9v3PbDER2e7/Tt5lPjFZCg9UcIURSOOUt3loTw+EM2oJkStVmjEhbt+nRsInsdEnNWfpRBJMcCLvdQC4cj76+w3HGb0nIKy6tEsaz/q6FrE38PdNgVIvEB7aiRDY/8AHmWpZxAvLFM+NuTRx2e8L1K+w9wzSQfafGuh2W/hYJmJorDi17CieUHk40ehgVSIvbxckuyomfYT7T9WieOkzkhKtZyD/5d7viRaUUtsBX8Bv+Sssnast1ecJ1+oR87Qt/63grAvF3IB2cjRm7CqAMzPNN9HqdD/4Ru2FXuu+FkPe2UkjbEa2AJJVYdLoL+Xhb2BKZPFJppxPN9o7c6kuejVLXhry7o8izam0Qi2nMPoJZavLB9JwDtj6b/ZOzBhdqw2b2r8+6O5xD0ZsndsqxsKnxHyStaji+3HBkL/72VOLiSmPFywNa2J5dGqYrF3hy47xrSHZEZIdeiN7oWCUDDdl91ykrQUZUe75Uk33Yx7rqFfK818dToI/ucYCj+xlElEGph1oerzvJT9x8F1uacyxhRZ7z67DmqyaHC4/8AQ3sxMPW7RUxkxROomjOLI6d/sq7DQjljqJ1OtTGGZO7Myzq1FTUKk9Fzo9qcXX4a8IVT7u68xlhD3X7O5QNWf+FTU+4CY3hiBaG0NU2vkoWQYaHx8PJjh8F2nXcPfOBPFJXnGr6J40n3zNYYdoX2aO01dFGn/0M6RhJFLJbxHDgJ1OWlCHhv7UQ8dCoaFTjXYRj+mxKYRjGKvlPCrYShWqWQU0qOfczzFQJ+UYvSlTVF6oSWMIXty5phxMDxTbIOLYqd2T4k+Jtcdc9Ekh7KJQ7Jwd0N1/6T9mT2F4/qpTk6baFQT0tVzcuTgKMfxH+bpSMMERFc8jQfk7Bvqz6/3rWM5Tck61n/KF/Hfj1PQLU9mBen8/rDoiKJiOCoyHV+WhJptZLpJPr+NrH9NkZwRzXkanKnpUFd4PC5oAjwnpqY2Y5LExaTy+rk5Pcq4V1XqG+1hEy8Z/fpFLfzYou8Zu9XRXRP9SOQsg88qMfz3+khGhETRo47p7H+g0IjJ7+d6xXf+dzC5OYa+KqrUMupGVZuQi/Ub5+9L+5eSxF9Dr5583vyP5f02Nb52kMVwZAwoisFeMzcYevW7N+w0bjj6DTgmBeSyoC9c5EZ+tdEaAHDkAMVSQO580GFXiW/tMG+WzcEt2JNJxaaUdHF/w5u2W/nqCpgXUxLcZEBuHNOGwLPs6MlHKqj4VarMECWhk4uUvK6Yf8+CqLRtjLps1kzELCOleVoWUFCNDwU9TShI/O4paEhHfoB+YpSjJ/tPQWUhRhBBvdW7Tl8Hwy+jhMWtgr+HrHUTH7l1wEd4T/dU9tSt2/M+4e/aHr60OxnSOTat0hOqSaaLm/VwTzxF1jgmhXTfhSI01/Z30s/qowytgvuNbtwQSO1FtXRhUF6y4GkGtQLT34wLesnPqF/NMOQBddVL48fCPm90UwZSlaiFaTFB+6k0FzoPU/gSc/9gQ83vS1LnKzf5+Jy7PR7MwR1VZ2jz5RKWCGDShNwRmO3dzPLmLLLnCgRJPZ0y5DCUrRZYiqwbsymZ/S0tsxKzyhpUUbNmV1BygsZs9CpCmTJfs6waHhzxzSv7u/RZP++HM8RouA4snsMVEOiw0oyBIx4WzCmnVI3mhXBI8yXMjpM0kPor6dNqSvfh/uGLovc7Ggj6UCDGlE5jJgAyEKkJlpNMVcdOfdaVN/c9jg//qdPXJ0dwmaWUzVbTMcH1PhrqUQBFxGekGZjgO26k0hFpVLtCYszNL5SYfUdCiBMLnSnow83uJ11Rt7v92Bv6jiqLgxX/VP4f0ubqqnAmI2DlKCibM60ZiqScX0eLXQssNaz+VJkygD4T+R+oNr93bWCVJAAptQCWGgMvcRyv9iXybhLx6mdxD19vBRDsXTyTA3nKR7qB60ytzTq0nX9kXx5s7KLX6e8zNbB8gDlOVvsem2kQsmTmvh0IR3bgEHUk1WRG/roTtwI/qo2632Xx3zMjRWT2GaTPFqycM41sHcCpU9K6Hhglw9i/Y9qC/UgYdbQeL+L2S4jZVFMbkceEjZ1Jx4V5lJODki+DNHq9kXwjNpCcBqAbov8F+Z5WE0neqmY/ugVtessZkfLByrOWBfdJO4Ra7uWbbZ5S+wb4/IRw+PZwNdj3ayNADoDQMiEwYJXhQwAehwPyQt85lYjZd2y3UKM4c/9KMj1DEUbCdCR3r2w2ylPv+VbztUUEZzJ8R+LDJIzrCpeY38YATodmBtIoce76fpYetMx70lM+S3oruau3D7z6Kn/k1Il7HKy0R4GwqTuB73ujC72tu1nO5YOj2Y0hI2Sd4pgUN2M6DT55c6TIf7BHNNIp+8GgP8ja1EfOcrMBaMHQxK2jLXijNNw/K9JNV31xb9EWttRBGeEGPWOhB1qNleHpUCvtjDaJNhbRwJgmavjK1AxjyLpuyVxonoOQPfXLjLwCTjuqsxwXKXNJhSCfce9wLr9jsfbu9gQ3thxi1Ewr8nNnP4PngbJReQDbQZa0qO7EeTcNxnEVTGXJZFwpF/slZbDfNy2KS3GuFsmM1y4C/Ugk8kIwzRDNsyPfYPNtQ7LxfuZG3mefXKnscyyrJY24xJMqma7GjaIimXxmpE5JdcMgXaIGbTk9VfTcUmh8LjQmy4h2PVhySoCurJmmJNWN1yKEBEB+PGejouP0qvs5aytfiqtcqKZFPEOLeSKw3UyIEn6fqlNRWOdd6u7I7M/xL1WEkXQWisyiWotMJ7lywE4MRU900XzF63H4az5/qWcK1r5H+FAP1K0Gn8JMW37Qqs8q2c7hboZuLs5x/u6nu9RW3x8qmCnbN3rp3tS7OZa79lGT7aXsw9XuWNcrH0Mhw4p3JZVNIoMCHAiVG4R2txPuMfj/k15BBBSQIiZqf8S36ZVpvXY1qEYE03taOtBpohyJ8xmLzV7Al6GyDnwdvaUzU5w5ReQlquwyGTgKKaU9wJGwoSlP8ucouXtfQZvw6lKu0Dfw8TcCmAzzvYGZseptgXerFoKJ/eS9ZPPeSD8czrUPbKA6j/Ha7oeOWAZrxse9UQQtZ237+9bm6vZHtPkhbRiwwLUN2zkFXNmwDAb4uEf4wAaHNY7cP+Mi1yAR18OmAnpGCscXeMQhk4DPw/B1G1SiRlgOyBcPEfaGs6Kr01V7/Vr3L9wQ2RSw+gcPEK1jaNLenHG85NralFjSMyKJvam75u7mVtjS+RTEGCPHCGQLRGGmRUYkGBWmUK7dUzgo+wrs7ejvpiQBvgrQpSNfn8BD8RVJ7y30I2WQCz6MmYnhy8R3dY8PvUBdv/oS8lkMKv2V4HjZcwshI2iPvb7tbDcJV9srzytbAjxgfVPuiGoUP697XNeUOyYr8BDORgfOVRYbRM6gmL3M6vS414e0moPAUWB1u/6bsW8TCnIcmZot1oNt9aYkw9UpSb4Yxid86Z212T5m3nlXgxRvh1Hbkp13m1j3fzYC1WdbSwAFSthSyPh+GpCv3dOB5wZ1OByAI98CrBvMAfG2HXO4AOSmDiNSyM5suWvPna23FwHrtyg7ZFfyB4rZRsyuNKF8/nKzBfZJhzG7ys8jPdGSwGrYKHz60qpxGQdn1dbNrvLxOZ93f63R/cVAIqtvBuUy73B9Z/S7rYMUG3suGf/mFw7PFhcD+VXFUbntpSaflpdZoijWNzpaoqTor/z+5e60gcKt0w6nFE+CzXw0iRodnBus4bW+J66tTlAh6B/OXDmib1aeilZ5nyYVFzQv/cD0L+iaVbE9fPXRWs19evJdPT7890wJk/gxYQwfKUcXpIHFyVwMIuNtLC56N6Pe+wAQu0HiQd0wbTN1XPBk9fsvEpYfISa/VDv+LTYFmUI7og6LCPda+6qb4onQT3I1rtopbg8HOxI6OBZ1f1QphfZq26UBd4A0+HJvjYWMln2PPjVFhnrA+LTQ4TzTaF2wePSr3iT/z5NApiLt159kuJHnckVWx3cR9H6Je7hTf3jA/wuLx7khdPuTzIw6R/9/h+Nov2ZsqZ4Zj+B+TZYfWHQc7Mdb1pGua7FTxiRrvbizZrItlKmWffX5fLffpHgX+DsNxY2LIbYp+ov0Q8G5Ur/au6ZUvS9E+3GYIN2LEBJ4nf0nKL6ffJSRns9wrHAMz9pSwhjrKNBhzJuqDUcsruFLDnweQTmhK3oxAF6YETkOtgDA5qP2boGC4TpBwy53/S+81Oi77LMl6gJI7BB9Mxylashhk0UXJxkx4Wu0/PotN1gg8xUEh769RsmvNQK1/gG82bJhuOFBiRrRjbXIrG5oRlSNQ7TkPHIuh14mR/wPL4Ax10JM1SorDS5mzEGF51juHd6xU0fU3C5bO5FuYp0nZXfjTmnDYoVpeJF2lL3aDHvj8uBANVf/F4cm31CI5A0cld5r1QhX1vFyJFTDd86i3O7KSSX+H7//oRod5hftA38BqA6eV2opywn0BXM0oOWAeN9Y9sspymdl8YrJWrx2egQkvhCaBnIx0KpbTqYdksEa5DgVHco46BahnfuOh/n/iPb/d5utnWHV/eHi8Iy69as0wvSnMM72X+LLHrkgzhf3Bcbx1B9W5HS4ua6LsYT+7dz49JUJQzw8t7x4Oos/5imVeqhMnxCyYnrL8uVFhEf4sMWYxM6PTUjhtzGN2DwAB1dqcD+jTGdusETz0JCEDPf1uljsWgQTSnWpCGt2qBgzolrzLhvVq3aYUs5iEa5dn8wgJhzpisKqEaMYjcd1MmStgqYcvJOcrP4mqBd50lkNbeZaflk4TzwYEaCHtXhNMzZyaB+LKQLjWYXpOgzGpfK8GQD87UOSE31KxfxxVToJyGXF6L+cn5RaQ3R5yW7X9CtNmPFML0MMdbsQsZB6x55LhmRj5YG/s2+ZwOSWYOsoqgB/+z8zPV6vR0tFxHjtqCheMLvAxUD/Qte+1o6s7PtbPPKJVgsAdWGlL9oXfhp3JlthHADcqYVoOOOKbqqKZYxIVUTOwC366icZN47pIGIkpoHKOnFoYU/ltU+blZyXYoyWMSn3ksqqYrgydln7BsPnIHjrH1QjGjlSlB9GYzJUIISpeg41R79bCf50g3OTqEcbPYQuqsEtmdtJQ2j1jhFy45WOUOjnMERZgdoRYUxHbuh14fESaGY0IVTJZ4iLh19hyk002xgaq1B/awLHNIRVMhEbcGAymKOx2aFHgBUyoQJRZgLGLkSeFmy6mkIAkxvjOMG/kHqaEbVxcIhtVykxtpwojy6jEJbjbJCpRtShzwYMtWBRP3F60KGzT++dMDQPMvkhSqumbhmeyEv2Q+szDrbjbjziUNBW2/PWx/emsw83R2/MqkZIO4+1hbQu95siHgGu51cUva3BQ96lsZNF9FELXnWDEBd9LV6vMVt4sgBp/FS1Xm6QWSJjDPAwT+p6cWO+aVtjmS1lmezR7HA0QJ8hZcI0tFE2JCAPZ7PrQrUiUpzWtHn21LKbuqPn6QaVGBoSsJjkN2kRcMUsNeIJTshkpH1zwkf6eEPlaXO4uyONSqMG09m+/4aXL67Bk76zXQeZP+wJ3aJXBmqEaeEtYa3un00Y/EPP7gZjNtAk3SIXUoz/3lbHTe1IpBsXUBfFZ9PKldkQGsxxnwI6fHJ/Rte/xWlgmv5gQBvFbkrd6eaPLp/JZ/ejcyXOv0sSHrXjM2+O21dlHoUMmlS3h4m4EbHDolKn9y3DORv1YbjTvet8oVdWrHUEUyQuTF0TsrQjfcv2P1KocYfhmcLdg+eglHAvOQFwax6AKOpfKJZ1uEIRAl5hzAm2L35LSPiEtUKYZQyK4kW/7WiM3poL6qjdqKuXrwaIUCIsFRIHDKqK+EnFCRs2SGuKlUx8ndBhO1OkDr3FQrG4rYoNypQmIb6JcvcU7cuS5VTCT0D141OTdQ7lUBjYCymeSMaAeBjNgabqMlxTXBss/6FcWivhb5YykuPdeDU6tfTLZTwfU8OMEm3VwTgzPFY9geuU9nR1SJs4+jcftVvp7nlQQIQjiKwNsYpBnjRMl+G0g7NOxQHh3yq38xIHNSSjmUkbZmw75Y3a5O5oYuabtKvavtGikoi4k1nIb4MMupnZ0zx6hfcA+KY+icnVByRgqSlhAHmeHbqcODKdKz80Gjzff665k79xO+2Z4NuYcUyId9DtLbiHXkEMTYarvADHXj5x8XGI19SI4M99Avfr3pfcRkhDPqeJDGHEbFBB1luf5Rr9juNpYcK9USt7nlel7VfRzNK+supOtrC1yUsDBNFymXp4KhhndorDtTvZAMPbF2fuIhrHhJ5EeuEYLJ480wVKL+Jwyj+DisspD8HIAZ44izCChRMW9j2R3Z+ezavzXR6c3W4JcDe73eqHWYwarK+5gMw4GcoYNHjcqpuYWJXiZ5umIW23IiB2UVL4CdK2k7oKwWWQYB3PJR8DPDvLz65TrXNIxemK7V081RAAFGQ/8q1+vnSQM+/QW/4l9TqnvpyIx3y9zEphcKnK4GJc4IXkbkzRW23o+wc8bs6rUbtz6pCThPWCk1JR3/skkab0YcLplPwWytIAIAD4mE8FonRgI0NiAIhQz5BkiWvfTahzYl5okBmsK7BxgdkAD8a1oePXDeT26RBRVrkcsy0xvKrjUCWca33LI2QaeUsKQvBkBjopMlQOW9zw3j+JgtS6VLoluiPApJx8y+Kbb+GlOvZHxhq1PghnymcDvj7bt5wbFyNqdMq6gtg2Edc7MCHWz7xgAO9zhAkYcFDCyr1U2j8XeCCWhRs9MumiBOTq4wxQyGLKJUBZw8w52Cmrj5o8s5QfPRmYSyu8Zl+1u/FbBZ8/2mhbT1lmh6lc/zRXH6Ujc4Cj9kqhoRP4K84zIun9XJkMNIdPK9As0TkcJBGDfai7lxx+kK+kCLXpiCVrRbRvdJkjhMWlWYVNaAvqQOVaDklyi+lxbCrx33XMMscHsXbVr5T1PW1RZIAUJOBFoRvB0noHOB1eJRL19AEgcKAY5Jf3eNjUSjbzJC40JdWGlHx20o8JlQ64MXCnitYWu59jTE0FPeyuDA+ypx3WN22d+k6Mo9iYwas2QJDqRwIMGBBUwxsk3AN8YWE+8v+HVYL9cNa3O5Efr7uxxJWxnH302uG5x/3UH5jF9L0YieRH9tHtwuxvH+xiOJb3bA7d4KiakeJEfM0ADR92Z0XAzxiJGjxC3xy2EDRfXVnn5TqOGoYgdLB+UlRYRvgeO0lDgeM9z/x2fwcwCYucmu4bbCCdDvo2cMHBMOh4P4fC1bM/pA1zCZDj1HtzhuA7we2+kUBap9izsNQOsR22w//vm2JPysNFtWKM6IS7ptkFrR5Zo3DYoTX0Ogt7fFw7NNU+KzBunAho77HxMFinvIQDZeWO95gVWqA2C+XokRYbr5++pItgGK5hGaMiETu3rdVFVmxJ6Bh5cvWHEXkQeNYe8W64Q1vEGn2nZEhSLQPNyY0R4rSMWlw2m0uYOoRRc0BYnvppMxSJsycrWuH0pi5DXTgKORzFKfATqNL+e+s2OcGFMZVqkQ+1kSNqjQw56mzGRI5GNSuh7IWSVRUVS008b8Q89TktS30bhl26rFLCgTrtirMJQULdT0ThXUvBGnk6WxHpzYKHI9h4yTvTSOeBBQ1iRh8uGuUIRw1mf9pPsPeG4+9vB5PdBpY12QjTdvN603qTesP6POfYgx3uEZPFqrUUVU2ObyzKL1IINSGS8n/BCFzfyHrPYxS+CMtZrWfAWqmN3puUjaeb11uoN5luNDW/Tc8PnNbTixXeP22oYoxjyDidxt0kJuXyh6d64qyodhnY32y5B4KkAm494rVGg3U5a6dU4Oqm2lfqPUm5LJIxLfcIVQWURcyNgfq6QLSBGGpfXPDUReyqmvbXxliq1jVm3F17KlPYtlEt0QbPv84WN27orVMGFVnMCjndN1qi811dHd52B4oJatc2tr1vvR23qXLv5mZ1yZVVzp3NymtB+1P0vU+FpskGO2MNesB18QQ04465D8TDdJaKlQWINT13xYyFHMdvEK61fwi1+bC2tfc3Cz9RGzASwAZ8paE7ulaZnEKH+ooqCWBPdCmX7HtkMirIcWFaSSATu0UTOygolpbHJeAUW+/Yca6HzIB1A5qaq9frIGYn3Zo1z0ZO0RrFTSAwDYo4zhv03loypH7izteBDnhx3qMGiBijFg5DXV0PPcjQ04s6LpEv8FMucUsVZ6iR/jN897nOQBAxLewRB4QR22An7tpF7SJe7INl3a9wiR4fsPcOv1lu+ZbeKJT0SMRnY7+rkXPMTo2T1ytfVQgeZLncGJB9Sz6r3WDNbSgPYJz6zHBz1L0Ft7vLrD7Gu+A0UrSHVGM3zFO+5bHX8T5AAakrpIKyStykndtqCZUPCGlxiJQb7EyyZIYFONvBUAiGSDI8oyh1HhVO8VWungqHGpAd2UYVVbTeWB91r0D55c5TyClue/FGD9b14erynlDDxsZse/xusjtBJ0Nbd1rVQIuy/gKKxP35kTOrj9FpjMa79hacb1kIl0DSvD4UIV+F3AwnSlCPyKayMHr8UUhDv/R3aOJ+C1M7GHs6vzZSHL0/GkS3MZXXvnoYSjCh2VwjcrFtdjmp2Z18mkrFLgDNLDKs7GczbN6hxkEuDME86n6HYKi8IARxxth4ku+QxoKEVdtU1+LVsWVEFoObbQVcq1e3q1sQiR/OOCqpReqpn6p06cw3q7MraqJBFYsEAIOyQeAL36LwOsORG4N4NLjLNCOMtlvWeccWtfogapsvwNSL4tvd16SuzGl46oYNWAgy6dnC9oGnCyXmD06VUbKo67+SU52Lmjl5DP0CQ2eH81GFycJA+8kWaM4nptFzh8P8z3+Wgsm9NKTpwt5VKT5RaVyF2NFOHfyye5m0PIhxjWcTe8vhQzuSQcnNjm1tymvnmgJONUv5z1icS8YjAA8ySXF4/VjvugjF8KVghBPcZMAQ/4jYJ4NFBA5Ba12HTO6dtsllZ4yqPuLQ64ME6syVeIXWG3s4WHHOyvgUD6mUGPIwHCrHamakF8EJk92gaxuhXfEuifoJKe07S+GOBshgtwwWbiY0j4GyRHjbdrg1bajGk+axOr/liMcF1Fzio1wDgsATGD0smNI5stQji/VxBvIoYyDaawnutok2gUrObapMsGcPZM+7S+Dk6/Z1zNMVJF/hhvV45DFGn70ZrlSZsHBftja7SEjrYTArKrKzk+wmDzOCGjQ9opB7aWp75fpy60P9yRyvpFmrM6hGWwzWpRmDsr6IdIcALnWeFYxr+AIVfuMa6bdizwkhyVoxXBZrgwJ2f+SGfpIlMEbmJpB1nYFS9eCKxV6bLfVb7q/2k2qcNfHcsWFFq3DiWqkhyUY/dJx1Obvh1EbqQzlXJEF1E6xhn2b2ZV/6hnXhLv4l9jmIHZMisBEk0RhzdY8DNMms7A2AazMY+nCEe6ufFPuxR8yUy7CLCWXAv2II6ggn6HdcEa25DZ+IUBrcApRDhOfQpR7ycWrj1Mbi6I6bCVgCMpnoANvL/FK5Ur1jH8CJ1e2NXCfpButxRMvBKTELY5PQgHiUJsgPOKk8frDK+sfva3V3nVt6e0rCt2MjW2NNYkTSR0DUZ5Mg81X8Xn+I6JPlEQhgRQUWTvqOMIZbnVa5nrR2ueRvOfmnOkw+UrRh6yA8/SirY13KbCdLsKFTBKlL3aNs3rkVC4s/6EwlrFaQZaQ5WkDYTcm6pAsWej008rfImtSm9bY2L1vNHYQyeOWHOulLn8DvPH4g1eMLIHrX74leaBaxc6mAD891EtMLTS691AqeU4E+9wAK0zxRZ4Es2mAvWcMCkc0nJdID8SqTLDTo4AmOLZytqSkv+ltLnU52RLdQofETYXLb8vJyXxJ0xCMv+Tfdctq8a3kcCOvpdQl9+4RTrfSYST9bW51+Jd25gvxa1qRDh8uCAl2bRsdv/ZV/lfjZ3oYCxKUDl3uslDgcSF7p7FS2EqQriH9BGmmqMVUWMyb/TLfG3FptCrO5Og5zZ+MZTom0mi0hgneNjNUnt46Vq5jiKXF1htXCmYW77WNLSz5zt3Uuv4WDvV5EV/oYTmdKvB2izCyzKfp04lGums6su9UJUbyTsMPhgfbjDZfju2KhFe/358U8lJOEyFdOCgEqSBOzUpOTp8Sc+K36qIkkjrPE7/Nf0Ar+pNeeFrPb36hio8zWbzjT77eiFpgi89L4AOHlm2aYvGGyMaJEotNtksBjYVwy4xcNNLd8UGt875k55bDnVsY8z6TdRL8f4uOzU8XwbZaf6rgdDuEgX2mr59+T1Z9fZIf109OTpkrHo393Qb2b/SAntdk8e5Sbq4mOZIUYU9uB05SostP0wOmA7zE8//soQ8tr/e3UeH9mvVOQaQTDSlSoRqvUWtl7EC34U9dbgaW5Hin7D9GQnK3SiQi3i8JY1VjEoEb3C86BWpqBGH6vGRTDu89FkNzePkDiTqRUv/FqbS+WOnCKLpsKTVxJeNF81X9/N3g/u758E6RutoRpX9i6SnhRtLyLbJ6F1s8TNZZTcoB9TXBaB8jt9PpsAkK/nI4+GMtsijgTI68nvxK4L/EClrfZonJ305kBX+/idbyOVartZyf2M5WW5i0lpTxaEKf73c46f3sIKB7DMxQq/g8=","base64")).toString()),QR)});var a7=w((vR,o7)=>{(function(t,e){typeof vR=="object"?o7.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(vR,function(){function t(n,s){var o=s?"\u2514":"\u251C";return n?o+="\u2500 ":o+="\u2500\u2500\u2510",o}function e(n,s){var o=[];for(var a in n)!n.hasOwnProperty(a)||s&&typeof n[a]=="function"||o.push(a);return o}function r(n,s,o,a,l,c,u){var g="",f=0,h,p,m=a.slice(0);if(m.push([s,o])&&a.length>0&&(a.forEach(function(Q,S){S>0&&(g+=(Q[1]?" ":"\u2502")+" "),!p&&Q[0]===s&&(p=!0)}),g+=t(n,o)+n,l&&(typeof s!="object"||s instanceof Date)&&(g+=": "+s),p&&(g+=" (circular ref.)"),u(g)),!p&&typeof s=="object"){var y=e(s,c);y.forEach(function(Q){h=++f===y.length,r(Q,s[Q],h,m,l,c,u)})}}var i={};return i.asLines=function(n,s,o,a){var l=typeof o!="function"?o:!1;r(".",n,!1,[],s,l,a||o)},i.asTree=function(n,s,o){var a="";return r(".",n,!1,[],s,o,function(l){a+=l+` +`}),a},i})});var gA=w(xR=>{"use strict";Object.defineProperty(xR,"__esModule",{value:!0});xR.default=f7;function f7(){}f7.prototype={diff:function(e,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(m){return n?(setTimeout(function(){n(void 0,m)},0),!0):m}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var a=r.length,l=e.length,c=1,u=a+l,g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],r,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(r),count:r.length}]);function h(){for(var m=-1*c;m<=c;m+=2){var y=void 0,Q=g[m-1],S=g[m+1],x=(S?S.newPos:0)-m;Q&&(g[m-1]=void 0);var M=Q&&Q.newPos+1=a&&x+1>=l)return o(fLe(s,y.components,r,e,s.useLongestToken));g[m]=y}c++}if(n)(function m(){setTimeout(function(){if(c>u)return n();h()||m()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,r,i){var n=e[e.length-1];n&&n.added===r&&n.removed===i?e[e.length-1]={count:n.count+1,added:r,removed:i}:e.push({count:1,added:r,removed:i})},extractCommon:function(e,r,i,n){for(var s=r.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1h.length?m:h}),c.value=t.join(u)}else c.value=t.join(r.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&t.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function hLe(t){return{newPos:t.newPos,components:t.components.slice(0)}}});var p7=w(lC=>{"use strict";Object.defineProperty(lC,"__esModule",{value:!0});lC.diffChars=pLe;lC.characterDiff=void 0;var CLe=dLe(gA());function dLe(t){return t&&t.__esModule?t:{default:t}}var h7=new CLe.default;lC.characterDiff=h7;function pLe(t,e,r){return h7.diff(t,e,r)}});var DR=w(PR=>{"use strict";Object.defineProperty(PR,"__esModule",{value:!0});PR.generateOptions=mLe;function mLe(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}});var m7=w(bf=>{"use strict";Object.defineProperty(bf,"__esModule",{value:!0});bf.diffWords=ELe;bf.diffWordsWithSpace=ILe;bf.wordDiff=void 0;var wLe=yLe(gA()),BLe=DR();function yLe(t){return t&&t.__esModule?t:{default:t}}var d7=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,C7=/\S/,cC=new wLe.default;bf.wordDiff=cC;cC.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!C7.test(t)&&!C7.test(e)};cC.tokenize=function(t){for(var e=t.split(/(\s+|[()[\]{}'"]|\b)/),r=0;r{"use strict";Object.defineProperty(Qf,"__esModule",{value:!0});Qf.diffLines=bLe;Qf.diffTrimmedLines=QLe;Qf.lineDiff=void 0;var SLe=vLe(gA()),kLe=DR();function vLe(t){return t&&t.__esModule?t:{default:t}}var XB=new SLe.default;Qf.lineDiff=XB;XB.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var i=0;i{"use strict";Object.defineProperty(uC,"__esModule",{value:!0});uC.diffSentences=xLe;uC.sentenceDiff=void 0;var DLe=PLe(gA());function PLe(t){return t&&t.__esModule?t:{default:t}}var RR=new DLe.default;uC.sentenceDiff=RR;RR.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};function xLe(t,e,r){return RR.diff(t,e,r)}});var I7=w(gC=>{"use strict";Object.defineProperty(gC,"__esModule",{value:!0});gC.diffCss=RLe;gC.cssDiff=void 0;var NLe=FLe(gA());function FLe(t){return t&&t.__esModule?t:{default:t}}var FR=new NLe.default;gC.cssDiff=FR;FR.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};function RLe(t,e,r){return FR.diff(t,e,r)}});var w7=w(vf=>{"use strict";Object.defineProperty(vf,"__esModule",{value:!0});vf.diffJson=LLe;vf.canonicalize=$B;vf.jsonDiff=void 0;var y7=TLe(gA()),OLe=ZB();function TLe(t){return t&&t.__esModule?t:{default:t}}function e0(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e0=function(r){return typeof r}:e0=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},e0(t)}var MLe=Object.prototype.toString,au=new y7.default;vf.jsonDiff=au;au.useLongestToken=!0;au.tokenize=OLe.lineDiff.tokenize;au.castInput=function(t){var e=this.options,r=e.undefinedReplacement,i=e.stringifyReplacer,n=i===void 0?function(s,o){return typeof o=="undefined"?r:o}:i;return typeof t=="string"?t:JSON.stringify($B(t,null,null,n),n," ")};au.equals=function(t,e){return y7.default.prototype.equals.call(au,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function LLe(t,e,r){return au.diff(t,e,r)}function $B(t,e,r,i,n){e=e||[],r=r||[],i&&(t=i(n,t));var s;for(s=0;s{"use strict";Object.defineProperty(fC,"__esModule",{value:!0});fC.diffArrays=ULe;fC.arrayDiff=void 0;var HLe=KLe(gA());function KLe(t){return t&&t.__esModule?t:{default:t}}var hC=new HLe.default;fC.arrayDiff=hC;hC.tokenize=function(t){return t.slice()};hC.join=hC.removeEmpty=function(t){return t};function ULe(t,e,r){return hC.diff(t,e,r)}});var t0=w(NR=>{"use strict";Object.defineProperty(NR,"__esModule",{value:!0});NR.parsePatch=jLe;function jLe(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.split(/\r\n|[\n\v\f\r\x85]/),i=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],n=[],s=0;function o(){var c={};for(n.push(c);s{"use strict";Object.defineProperty(LR,"__esModule",{value:!0});LR.default=GLe;function GLe(t,e,r){var i=!0,n=!1,s=!1,o=1;return function a(){if(i&&!s){if(n?o++:i=!1,t+o<=r)return o;s=!0}if(!n)return s||(i=!0),e<=t-o?-o++:(n=!0,a())}}});var S7=w(r0=>{"use strict";Object.defineProperty(r0,"__esModule",{value:!0});r0.applyPatch=Q7;r0.applyPatches=YLe;var v7=t0(),JLe=qLe(b7());function qLe(t){return t&&t.__esModule?t:{default:t}}function Q7(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string"&&(e=(0,v7.parsePatch)(e)),Array.isArray(e)){if(e.length>1)throw new Error("applyPatch only works with a single input.");e=e[0]}var i=t.split(/\r\n|[\n\v\f\r\x85]/),n=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],s=e.hunks,o=r.compareLine||function(T,L,Ee,we){return L===we},a=0,l=r.fuzzFactor||0,c=0,u=0,g,f;function h(T,L){for(var Ee=0;Ee0?we[0]:" ",re=we.length>0?we.substr(1):we;if(qe===" "||qe==="-"){if(!o(L+1,i[L],qe,re)&&(a++,a>l))return!1;L++}}return!0}for(var p=0;p0?ee[0]:" ",A=ee.length>0?ee.substr(1):ee,ne=U.linedelimiters[W];if(Z===" ")J++;else if(Z==="-")i.splice(J,1),n.splice(J,1);else if(Z==="+")i.splice(J,0,A),n.splice(J,0,ne),J++;else if(Z==="\\"){var le=U.lines[W-1]?U.lines[W-1][0]:null;le==="+"?g=!0:le==="-"&&(f=!0)}}}if(g)for(;!i[i.length-1];)i.pop(),n.pop();else f&&(i.push(""),n.push(` +`));for(var Ae=0;Ae{"use strict";Object.defineProperty(pC,"__esModule",{value:!0});pC.structuredPatch=k7;pC.createTwoFilesPatch=x7;pC.createPatch=WLe;var zLe=ZB();function TR(t){return XLe(t)||VLe(t)||_Le()}function _Le(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function VLe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function XLe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e0?l(U.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(Y=f).push.apply(Y,TR(M.map(function(Ae){return(x.added?"+":"-")+Ae}))),x.added?p+=M.length:h+=M.length}else{if(u)if(M.length<=o.context*2&&S=a.length-2&&M.length<=o.context){var A=/\n$/.test(r),ne=/\n$/.test(i),le=M.length==0&&f.length>Z.oldLines;!A&&le&&f.splice(Z.oldLines,0,"\\ No newline at end of file"),(!A&&!le||!ne)&&f.push("\\ No newline at end of file")}c.push(Z),u=0,g=0,f=[]}h+=M.length,p+=M.length}},y=0;y{"use strict";Object.defineProperty(i0,"__esModule",{value:!0});i0.arrayEqual=ZLe;i0.arrayStartsWith=P7;function ZLe(t,e){return t.length!==e.length?!1:P7(t,e)}function P7(t,e){if(e.length>t.length)return!1;for(var r=0;r{"use strict";Object.defineProperty(n0,"__esModule",{value:!0});n0.calcLineCount=R7;n0.merge=$Le;var eTe=OR(),tTe=t0(),MR=D7();function Sf(t){return nTe(t)||iTe(t)||rTe()}function rTe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function iTe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function nTe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{"use strict";Object.defineProperty(HR,"__esModule",{value:!0});HR.convertChangesToDMP=ATe;function ATe(t){for(var e=[],r,i,n=0;n{"use strict";Object.defineProperty(jR,"__esModule",{value:!0});jR.convertChangesToXML=lTe;function lTe(t){for(var e=[],r=0;r"):i.removed&&e.push(""),e.push(cTe(i.value)),i.added?e.push(""):i.removed&&e.push("")}return e.join("")}function cTe(t){var e=t;return e=e.replace(/&/g,"&"),e=e.replace(//g,">"),e=e.replace(/"/g,"""),e}});var _7=w(Kr=>{"use strict";Object.defineProperty(Kr,"__esModule",{value:!0});Object.defineProperty(Kr,"Diff",{enumerable:!0,get:function(){return uTe.default}});Object.defineProperty(Kr,"diffChars",{enumerable:!0,get:function(){return gTe.diffChars}});Object.defineProperty(Kr,"diffWords",{enumerable:!0,get:function(){return q7.diffWords}});Object.defineProperty(Kr,"diffWordsWithSpace",{enumerable:!0,get:function(){return q7.diffWordsWithSpace}});Object.defineProperty(Kr,"diffLines",{enumerable:!0,get:function(){return J7.diffLines}});Object.defineProperty(Kr,"diffTrimmedLines",{enumerable:!0,get:function(){return J7.diffTrimmedLines}});Object.defineProperty(Kr,"diffSentences",{enumerable:!0,get:function(){return fTe.diffSentences}});Object.defineProperty(Kr,"diffCss",{enumerable:!0,get:function(){return hTe.diffCss}});Object.defineProperty(Kr,"diffJson",{enumerable:!0,get:function(){return W7.diffJson}});Object.defineProperty(Kr,"canonicalize",{enumerable:!0,get:function(){return W7.canonicalize}});Object.defineProperty(Kr,"diffArrays",{enumerable:!0,get:function(){return pTe.diffArrays}});Object.defineProperty(Kr,"applyPatch",{enumerable:!0,get:function(){return z7.applyPatch}});Object.defineProperty(Kr,"applyPatches",{enumerable:!0,get:function(){return z7.applyPatches}});Object.defineProperty(Kr,"parsePatch",{enumerable:!0,get:function(){return dTe.parsePatch}});Object.defineProperty(Kr,"merge",{enumerable:!0,get:function(){return CTe.merge}});Object.defineProperty(Kr,"structuredPatch",{enumerable:!0,get:function(){return GR.structuredPatch}});Object.defineProperty(Kr,"createTwoFilesPatch",{enumerable:!0,get:function(){return GR.createTwoFilesPatch}});Object.defineProperty(Kr,"createPatch",{enumerable:!0,get:function(){return GR.createPatch}});Object.defineProperty(Kr,"convertChangesToDMP",{enumerable:!0,get:function(){return mTe.convertChangesToDMP}});Object.defineProperty(Kr,"convertChangesToXML",{enumerable:!0,get:function(){return ETe.convertChangesToXML}});var uTe=ITe(gA()),gTe=p7(),q7=m7(),J7=ZB(),fTe=E7(),hTe=I7(),W7=w7(),pTe=B7(),z7=S7(),dTe=t0(),CTe=j7(),GR=OR(),mTe=G7(),ETe=Y7();function ITe(t){return t&&t.__esModule?t:{default:t}}});var o0=w((Cct,V7)=>{var yTe=Os(),wTe=Id(),BTe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,bTe=/^\w*$/;function QTe(t,e){if(yTe(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||wTe(t)?!0:bTe.test(t)||!BTe.test(t)||e!=null&&t in Object(e)}V7.exports=QTe});var a0=w((mct,X7)=>{var vTe=Hc(),STe=Rn(),kTe="[object AsyncFunction]",xTe="[object Function]",PTe="[object GeneratorFunction]",DTe="[object Proxy]";function RTe(t){if(!STe(t))return!1;var e=vTe(t);return e==xTe||e==PTe||e==kTe||e==DTe}X7.exports=RTe});var $7=w((Ect,Z7)=>{var FTe=Rs(),NTe=FTe["__core-js_shared__"];Z7.exports=NTe});var rX=w((Ict,eX)=>{var YR=$7(),tX=function(){var t=/[^.]+$/.exec(YR&&YR.keys&&YR.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function LTe(t){return!!tX&&tX in t}eX.exports=LTe});var qR=w((yct,iX)=>{var TTe=Function.prototype,OTe=TTe.toString;function MTe(t){if(t!=null){try{return OTe.call(t)}catch(e){}try{return t+""}catch(e){}}return""}iX.exports=MTe});var sX=w((wct,nX)=>{var UTe=a0(),KTe=rX(),HTe=Rn(),jTe=qR(),GTe=/[\\^$.*+?()[\]{}|]/g,YTe=/^\[object .+?Constructor\]$/,qTe=Function.prototype,JTe=Object.prototype,WTe=qTe.toString,zTe=JTe.hasOwnProperty,_Te=RegExp("^"+WTe.call(zTe).replace(GTe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function VTe(t){if(!HTe(t)||KTe(t))return!1;var e=UTe(t)?_Te:YTe;return e.test(jTe(t))}nX.exports=VTe});var aX=w((Bct,oX)=>{function XTe(t,e){return t==null?void 0:t[e]}oX.exports=XTe});var vl=w((bct,AX)=>{var ZTe=sX(),$Te=aX();function eOe(t,e){var r=$Te(t,e);return ZTe(r)?r:void 0}AX.exports=eOe});var dC=w((Qct,lX)=>{var tOe=vl(),rOe=tOe(Object,"create");lX.exports=rOe});var gX=w((vct,cX)=>{var uX=dC();function iOe(){this.__data__=uX?uX(null):{},this.size=0}cX.exports=iOe});var hX=w((Sct,fX)=>{function nOe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}fX.exports=nOe});var dX=w((kct,pX)=>{var sOe=dC(),oOe="__lodash_hash_undefined__",aOe=Object.prototype,AOe=aOe.hasOwnProperty;function lOe(t){var e=this.__data__;if(sOe){var r=e[t];return r===oOe?void 0:r}return AOe.call(e,t)?e[t]:void 0}pX.exports=lOe});var mX=w((xct,CX)=>{var cOe=dC(),uOe=Object.prototype,gOe=uOe.hasOwnProperty;function fOe(t){var e=this.__data__;return cOe?e[t]!==void 0:gOe.call(e,t)}CX.exports=fOe});var IX=w((Pct,EX)=>{var hOe=dC(),pOe="__lodash_hash_undefined__";function dOe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=hOe&&e===void 0?pOe:e,this}EX.exports=dOe});var wX=w((Dct,yX)=>{var COe=gX(),mOe=hX(),EOe=dX(),IOe=mX(),yOe=IX();function kf(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{function wOe(){this.__data__=[],this.size=0}BX.exports=wOe});var xf=w((Fct,QX)=>{function BOe(t,e){return t===e||t!==t&&e!==e}QX.exports=BOe});var CC=w((Nct,vX)=>{var bOe=xf();function QOe(t,e){for(var r=t.length;r--;)if(bOe(t[r][0],e))return r;return-1}vX.exports=QOe});var kX=w((Lct,SX)=>{var vOe=CC(),SOe=Array.prototype,kOe=SOe.splice;function xOe(t){var e=this.__data__,r=vOe(e,t);if(r<0)return!1;var i=e.length-1;return r==i?e.pop():kOe.call(e,r,1),--this.size,!0}SX.exports=xOe});var PX=w((Tct,xX)=>{var POe=CC();function DOe(t){var e=this.__data__,r=POe(e,t);return r<0?void 0:e[r][1]}xX.exports=DOe});var RX=w((Oct,DX)=>{var ROe=CC();function FOe(t){return ROe(this.__data__,t)>-1}DX.exports=FOe});var NX=w((Mct,FX)=>{var NOe=CC();function LOe(t,e){var r=this.__data__,i=NOe(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}FX.exports=LOe});var mC=w((Uct,LX)=>{var TOe=bX(),OOe=kX(),MOe=PX(),UOe=RX(),KOe=NX();function Pf(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var HOe=vl(),jOe=Rs(),GOe=HOe(jOe,"Map");TX.exports=GOe});var UX=w((Hct,OX)=>{var MX=wX(),YOe=mC(),qOe=A0();function JOe(){this.size=0,this.__data__={hash:new MX,map:new(qOe||YOe),string:new MX}}OX.exports=JOe});var HX=w((jct,KX)=>{function WOe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}KX.exports=WOe});var EC=w((Gct,jX)=>{var zOe=HX();function _Oe(t,e){var r=t.__data__;return zOe(e)?r[typeof e=="string"?"string":"hash"]:r.map}jX.exports=_Oe});var YX=w((Yct,GX)=>{var VOe=EC();function XOe(t){var e=VOe(this,t).delete(t);return this.size-=e?1:0,e}GX.exports=XOe});var JX=w((qct,qX)=>{var ZOe=EC();function $Oe(t){return ZOe(this,t).get(t)}qX.exports=$Oe});var zX=w((Jct,WX)=>{var eMe=EC();function tMe(t){return eMe(this,t).has(t)}WX.exports=tMe});var VX=w((Wct,_X)=>{var rMe=EC();function iMe(t,e){var r=rMe(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}_X.exports=iMe});var l0=w((zct,XX)=>{var nMe=UX(),sMe=YX(),oMe=JX(),aMe=zX(),AMe=VX();function Df(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var $X=l0(),lMe="Expected a function";function JR(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(lMe);var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],s=r.cache;if(s.has(n))return s.get(n);var o=t.apply(this,i);return r.cache=s.set(n,o)||s,o};return r.cache=new(JR.Cache||$X),r}JR.Cache=$X;ZX.exports=JR});var rZ=w((Vct,tZ)=>{var cMe=eZ(),uMe=500;function gMe(t){var e=cMe(t,function(i){return r.size===uMe&&r.clear(),i}),r=e.cache;return e}tZ.exports=gMe});var nZ=w((Xct,iZ)=>{var fMe=rZ(),hMe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,pMe=/\\(\\)?/g,dMe=fMe(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(hMe,function(r,i,n,s){e.push(n?s.replace(pMe,"$1"):i||r)}),e});iZ.exports=dMe});var Rf=w((Zct,sZ)=>{var CMe=Os(),mMe=o0(),EMe=nZ(),IMe=nf();function yMe(t,e){return CMe(t)?t:mMe(t,e)?[t]:EMe(IMe(t))}sZ.exports=yMe});var lu=w(($ct,oZ)=>{var wMe=Id(),BMe=1/0;function bMe(t){if(typeof t=="string"||wMe(t))return t;var e=t+"";return e=="0"&&1/t==-BMe?"-0":e}oZ.exports=bMe});var IC=w((eut,aZ)=>{var QMe=Rf(),vMe=lu();function SMe(t,e){e=QMe(e,t);for(var r=0,i=e.length;t!=null&&r{var kMe=vl(),xMe=function(){try{var t=kMe(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();AZ.exports=xMe});var Ff=w((rut,lZ)=>{var cZ=WR();function PMe(t,e,r){e=="__proto__"&&cZ?cZ(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}lZ.exports=PMe});var c0=w((iut,uZ)=>{var DMe=Ff(),RMe=xf(),FMe=Object.prototype,NMe=FMe.hasOwnProperty;function LMe(t,e,r){var i=t[e];(!(NMe.call(t,e)&&RMe(i,r))||r===void 0&&!(e in t))&&DMe(t,e,r)}uZ.exports=LMe});var yC=w((nut,gZ)=>{var TMe=9007199254740991,OMe=/^(?:0|[1-9]\d*)$/;function MMe(t,e){var r=typeof t;return e=e==null?TMe:e,!!e&&(r=="number"||r!="symbol"&&OMe.test(t))&&t>-1&&t%1==0&&t{var UMe=c0(),KMe=Rf(),HMe=yC(),hZ=Rn(),jMe=lu();function GMe(t,e,r,i){if(!hZ(t))return t;e=KMe(e,t);for(var n=-1,s=e.length,o=s-1,a=t;a!=null&&++n{var YMe=IC(),qMe=zR(),JMe=Rf();function WMe(t,e,r){for(var i=-1,n=e.length,s={};++i{function zMe(t,e){return t!=null&&e in Object(t)}CZ.exports=zMe});var IZ=w((Aut,EZ)=>{var _Me=Hc(),VMe=Zo(),XMe="[object Arguments]";function ZMe(t){return VMe(t)&&_Me(t)==XMe}EZ.exports=ZMe});var wC=w((lut,yZ)=>{var wZ=IZ(),$Me=Zo(),BZ=Object.prototype,e1e=BZ.hasOwnProperty,t1e=BZ.propertyIsEnumerable,r1e=wZ(function(){return arguments}())?wZ:function(t){return $Me(t)&&e1e.call(t,"callee")&&!t1e.call(t,"callee")};yZ.exports=r1e});var u0=w((cut,bZ)=>{var i1e=9007199254740991;function n1e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=i1e}bZ.exports=n1e});var _R=w((uut,QZ)=>{var s1e=Rf(),o1e=wC(),a1e=Os(),A1e=yC(),l1e=u0(),c1e=lu();function u1e(t,e,r){e=s1e(e,t);for(var i=-1,n=e.length,s=!1;++i{var g1e=mZ(),f1e=_R();function h1e(t,e){return t!=null&&f1e(t,e,g1e)}vZ.exports=h1e});var kZ=w((fut,SZ)=>{var p1e=dZ(),d1e=VR();function C1e(t,e){return p1e(t,e,function(r,i){return d1e(t,i)})}SZ.exports=C1e});var g0=w((hut,xZ)=>{function m1e(t,e){for(var r=-1,i=e.length,n=t.length;++r{var DZ=Kc(),E1e=wC(),I1e=Os(),RZ=DZ?DZ.isConcatSpreadable:void 0;function y1e(t){return I1e(t)||E1e(t)||!!(RZ&&t&&t[RZ])}PZ.exports=y1e});var TZ=w((dut,NZ)=>{var w1e=g0(),B1e=FZ();function LZ(t,e,r,i,n){var s=-1,o=t.length;for(r||(r=B1e),n||(n=[]);++s0&&r(a)?e>1?LZ(a,e-1,r,i,n):w1e(n,a):i||(n[n.length]=a)}return n}NZ.exports=LZ});var MZ=w((Cut,OZ)=>{var b1e=TZ();function Q1e(t){var e=t==null?0:t.length;return e?b1e(t,1):[]}OZ.exports=Q1e});var KZ=w((mut,UZ)=>{function v1e(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}UZ.exports=v1e});var XR=w((Eut,HZ)=>{var S1e=KZ(),jZ=Math.max;function k1e(t,e,r){return e=jZ(e===void 0?t.length-1:e,0),function(){for(var i=arguments,n=-1,s=jZ(i.length-e,0),o=Array(s);++n{function x1e(t){return function(){return t}}GZ.exports=x1e});var f0=w((yut,qZ)=>{function P1e(t){return t}qZ.exports=P1e});var zZ=w((wut,JZ)=>{var D1e=YZ(),WZ=WR(),R1e=f0(),F1e=WZ?function(t,e){return WZ(t,"toString",{configurable:!0,enumerable:!1,value:D1e(e),writable:!0})}:R1e;JZ.exports=F1e});var VZ=w((But,_Z)=>{var N1e=800,L1e=16,T1e=Date.now;function O1e(t){var e=0,r=0;return function(){var i=T1e(),n=L1e-(i-r);if(r=i,n>0){if(++e>=N1e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}_Z.exports=O1e});var ZR=w((but,XZ)=>{var M1e=zZ(),U1e=VZ(),K1e=U1e(M1e);XZ.exports=K1e});var $Z=w((Qut,ZZ)=>{var H1e=MZ(),j1e=XR(),G1e=ZR();function Y1e(t){return G1e(j1e(t,void 0,H1e),t+"")}ZZ.exports=Y1e});var t$=w((vut,e$)=>{var q1e=kZ(),J1e=$Z(),W1e=J1e(function(t,e){return t==null?{}:q1e(t,e)});e$.exports=W1e});var h$=w((wft,u$)=>{"use strict";var AF;try{AF=Map}catch(t){}var lF;try{lF=Set}catch(t){}function g$(t,e,r){if(!t||typeof t!="object"||typeof t=="function")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t);if(Array.isArray(t))return t.map(f$);if(AF&&t instanceof AF)return new Map(Array.from(t.entries()));if(lF&&t instanceof lF)return new Set(Array.from(t.values()));if(t instanceof Object){e.push(t);var i=Object.create(t);r.push(i);for(var n in t){var s=e.findIndex(function(o){return o===t[n]});i[n]=s>-1?r[s]:g$(t[n],e,r)}return i}return t}function f$(t){return g$(t,[],[])}u$.exports=f$});var vC=w(cF=>{"use strict";Object.defineProperty(cF,"__esModule",{value:!0});cF.default=rUe;var iUe=Object.prototype.toString,nUe=Error.prototype.toString,sUe=RegExp.prototype.toString,oUe=typeof Symbol!="undefined"?Symbol.prototype.toString:()=>"",aUe=/^Symbol\((.*)\)(.*)$/;function AUe(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function p$(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return AUe(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return oUe.call(t).replace(aUe,"Symbol($1)");let i=iUe.call(t).slice(8,-1);return i==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):i==="Error"||t instanceof Error?"["+nUe.call(t)+"]":i==="RegExp"?sUe.call(t):null}function rUe(t,e){let r=p$(t,e);return r!==null?r:JSON.stringify(t,function(i,n){let s=p$(this[i],e);return s!==null?s:n},2)}});var fA=w(Bi=>{"use strict";Object.defineProperty(Bi,"__esModule",{value:!0});Bi.default=Bi.array=Bi.object=Bi.boolean=Bi.date=Bi.number=Bi.string=Bi.mixed=void 0;var d$=lUe(vC());function lUe(t){return t&&t.__esModule?t:{default:t}}var C$={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:r,originalValue:i})=>{let n=i!=null&&i!==r,s=`${t} must be a \`${e}\` type, but the final value was: \`${(0,d$.default)(r,!0)}\``+(n?` (cast from the value \`${(0,d$.default)(i,!0)}\`).`:".");return r===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};Bi.mixed=C$;var m$={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};Bi.string=m$;var E$={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};Bi.number=E$;var I$={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};Bi.date=I$;var y$={isValue:"${path} field must be ${value}"};Bi.boolean=y$;var w$={noUnknown:"${path} field has unspecified keys: ${unknown}"};Bi.object=w$;var B$={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};Bi.array=B$;var cUe=Object.assign(Object.create(null),{mixed:C$,string:m$,number:E$,date:I$,object:w$,array:B$,boolean:y$});Bi.default=cUe});var Q$=w((Qft,b$)=>{var uUe=Object.prototype,gUe=uUe.hasOwnProperty;function fUe(t,e){return t!=null&&gUe.call(t,e)}b$.exports=fUe});var SC=w((vft,v$)=>{var hUe=Q$(),pUe=_R();function dUe(t,e){return t!=null&&pUe(t,e,hUe)}v$.exports=dUe});var Lf=w(C0=>{"use strict";Object.defineProperty(C0,"__esModule",{value:!0});C0.default=void 0;var CUe=t=>t&&t.__isYupSchema__;C0.default=CUe});var x$=w(m0=>{"use strict";Object.defineProperty(m0,"__esModule",{value:!0});m0.default=void 0;var mUe=S$(SC()),EUe=S$(Lf());function S$(t){return t&&t.__esModule?t:{default:t}}var k$=class{constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,mUe.default)(r,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!r.then&&!r.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:i,then:n,otherwise:s}=r,o=typeof i=="function"?i:(...a)=>a.every(l=>l===i);this.fn=function(...a){let l=a.pop(),c=a.pop(),u=o(...a)?n:s;if(!!u)return typeof u=="function"?u(c):c.concat(u.resolve(l))}}resolve(e,r){let i=this.refs.map(s=>s.getValue(r==null?void 0:r.value,r==null?void 0:r.parent,r==null?void 0:r.context)),n=this.fn.apply(e,i.concat(e,r));if(n===void 0||n===e)return e;if(!(0,EUe.default)(n))throw new TypeError("conditions must return a schema object");return n.resolve(r)}},IUe=k$;m0.default=IUe});var gF=w(uF=>{"use strict";Object.defineProperty(uF,"__esModule",{value:!0});uF.default=yUe;function yUe(t){return t==null?[]:[].concat(t)}});var cu=w(E0=>{"use strict";Object.defineProperty(E0,"__esModule",{value:!0});E0.default=void 0;var wUe=P$(vC()),BUe=P$(gF());function P$(t){return t&&t.__esModule?t:{default:t}}function fF(){return fF=Object.assign||function(t){for(var e=1;e(0,wUe.default)(r[s])):typeof e=="function"?e(r):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,r,i,n){super();this.name="ValidationError",this.value=r,this.path=i,this.type=n,this.errors=[],this.inner=[],(0,BUe.default)(e).forEach(s=>{kC.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,kC)}};E0.default=kC});var I0=w(hF=>{"use strict";Object.defineProperty(hF,"__esModule",{value:!0});hF.default=QUe;var pF=vUe(cu());function vUe(t){return t&&t.__esModule?t:{default:t}}var SUe=t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}};function QUe(t,e){let{endEarly:r,tests:i,args:n,value:s,errors:o,sort:a,path:l}=t,c=SUe(e),u=i.length,g=[];if(o=o||[],!u)return o.length?c(new pF.default(o,s,l)):c(null,s);for(let f=0;f{function kUe(t){return function(e,r,i){for(var n=-1,s=Object(e),o=i(e),a=o.length;a--;){var l=o[t?a:++n];if(r(s[l],l,s)===!1)break}return e}}D$.exports=kUe});var dF=w((Fft,F$)=>{var xUe=R$(),PUe=xUe();F$.exports=PUe});var L$=w((Nft,N$)=>{function DUe(t,e){for(var r=-1,i=Array(t);++r{function RUe(){return!1}T$.exports=RUe});var PC=w((xC,Tf)=>{var FUe=Rs(),NUe=O$(),M$=typeof xC=="object"&&xC&&!xC.nodeType&&xC,U$=M$&&typeof Tf=="object"&&Tf&&!Tf.nodeType&&Tf,LUe=U$&&U$.exports===M$,K$=LUe?FUe.Buffer:void 0,TUe=K$?K$.isBuffer:void 0,OUe=TUe||NUe;Tf.exports=OUe});var j$=w((Tft,H$)=>{var MUe=Hc(),UUe=u0(),KUe=Zo(),HUe="[object Arguments]",jUe="[object Array]",GUe="[object Boolean]",YUe="[object Date]",qUe="[object Error]",JUe="[object Function]",WUe="[object Map]",zUe="[object Number]",_Ue="[object Object]",VUe="[object RegExp]",XUe="[object Set]",ZUe="[object String]",$Ue="[object WeakMap]",eKe="[object ArrayBuffer]",tKe="[object DataView]",rKe="[object Float32Array]",iKe="[object Float64Array]",nKe="[object Int8Array]",sKe="[object Int16Array]",oKe="[object Int32Array]",aKe="[object Uint8Array]",AKe="[object Uint8ClampedArray]",lKe="[object Uint16Array]",cKe="[object Uint32Array]",wr={};wr[rKe]=wr[iKe]=wr[nKe]=wr[sKe]=wr[oKe]=wr[aKe]=wr[AKe]=wr[lKe]=wr[cKe]=!0;wr[HUe]=wr[jUe]=wr[eKe]=wr[GUe]=wr[tKe]=wr[YUe]=wr[qUe]=wr[JUe]=wr[WUe]=wr[zUe]=wr[_Ue]=wr[VUe]=wr[XUe]=wr[ZUe]=wr[$Ue]=!1;function uKe(t){return KUe(t)&&UUe(t.length)&&!!wr[MUe(t)]}H$.exports=uKe});var y0=w((Oft,G$)=>{function gKe(t){return function(e){return t(e)}}G$.exports=gKe});var w0=w((DC,Of)=>{var fKe=ux(),Y$=typeof DC=="object"&&DC&&!DC.nodeType&&DC,RC=Y$&&typeof Of=="object"&&Of&&!Of.nodeType&&Of,hKe=RC&&RC.exports===Y$,CF=hKe&&fKe.process,pKe=function(){try{var t=RC&&RC.require&&RC.require("util").types;return t||CF&&CF.binding&&CF.binding("util")}catch(e){}}();Of.exports=pKe});var B0=w((Mft,q$)=>{var dKe=j$(),CKe=y0(),J$=w0(),W$=J$&&J$.isTypedArray,mKe=W$?CKe(W$):dKe;q$.exports=mKe});var mF=w((Uft,z$)=>{var EKe=L$(),IKe=wC(),yKe=Os(),wKe=PC(),BKe=yC(),bKe=B0(),QKe=Object.prototype,vKe=QKe.hasOwnProperty;function SKe(t,e){var r=yKe(t),i=!r&&IKe(t),n=!r&&!i&&wKe(t),s=!r&&!i&&!n&&bKe(t),o=r||i||n||s,a=o?EKe(t.length,String):[],l=a.length;for(var c in t)(e||vKe.call(t,c))&&!(o&&(c=="length"||n&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||BKe(c,l)))&&a.push(c);return a}z$.exports=SKe});var b0=w((Kft,_$)=>{var kKe=Object.prototype;function xKe(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||kKe;return t===r}_$.exports=xKe});var EF=w((Hft,V$)=>{function PKe(t,e){return function(r){return t(e(r))}}V$.exports=PKe});var Z$=w((jft,X$)=>{var DKe=EF(),RKe=DKe(Object.keys,Object);X$.exports=RKe});var eee=w((Gft,$$)=>{var FKe=b0(),NKe=Z$(),LKe=Object.prototype,TKe=LKe.hasOwnProperty;function OKe(t){if(!FKe(t))return NKe(t);var e=[];for(var r in Object(t))TKe.call(t,r)&&r!="constructor"&&e.push(r);return e}$$.exports=OKe});var FC=w((Yft,tee)=>{var MKe=a0(),UKe=u0();function KKe(t){return t!=null&&UKe(t.length)&&!MKe(t)}tee.exports=KKe});var Mf=w((qft,ree)=>{var HKe=mF(),jKe=eee(),GKe=FC();function YKe(t){return GKe(t)?HKe(t):jKe(t)}ree.exports=YKe});var IF=w((Jft,iee)=>{var qKe=dF(),JKe=Mf();function WKe(t,e){return t&&qKe(t,e,JKe)}iee.exports=WKe});var see=w((Wft,nee)=>{var zKe=mC();function _Ke(){this.__data__=new zKe,this.size=0}nee.exports=_Ke});var aee=w((zft,oee)=>{function VKe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}oee.exports=VKe});var lee=w((_ft,Aee)=>{function XKe(t){return this.__data__.get(t)}Aee.exports=XKe});var uee=w((Vft,cee)=>{function ZKe(t){return this.__data__.has(t)}cee.exports=ZKe});var fee=w((Xft,gee)=>{var $Ke=mC(),e2e=A0(),t2e=l0(),r2e=200;function i2e(t,e){var r=this.__data__;if(r instanceof $Ke){var i=r.__data__;if(!e2e||i.length{var n2e=mC(),s2e=see(),o2e=aee(),a2e=lee(),A2e=uee(),l2e=fee();function Uf(t){var e=this.__data__=new n2e(t);this.size=e.size}Uf.prototype.clear=s2e;Uf.prototype.delete=o2e;Uf.prototype.get=a2e;Uf.prototype.has=A2e;Uf.prototype.set=l2e;hee.exports=Uf});var dee=w(($ft,pee)=>{var c2e="__lodash_hash_undefined__";function u2e(t){return this.__data__.set(t,c2e),this}pee.exports=u2e});var mee=w((eht,Cee)=>{function g2e(t){return this.__data__.has(t)}Cee.exports=g2e});var Iee=w((tht,Eee)=>{var f2e=l0(),h2e=dee(),p2e=mee();function Q0(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new f2e;++e{function d2e(t,e){for(var r=-1,i=t==null?0:t.length;++r{function C2e(t,e){return t.has(e)}Bee.exports=C2e});var yF=w((nht,Qee)=>{var m2e=Iee(),E2e=wee(),I2e=bee(),y2e=1,w2e=2;function B2e(t,e,r,i,n,s){var o=r&y2e,a=t.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(t),u=s.get(e);if(c&&u)return c==e&&u==t;var g=-1,f=!0,h=r&w2e?new m2e:void 0;for(s.set(t,e),s.set(e,t);++g{var b2e=Rs(),Q2e=b2e.Uint8Array;vee.exports=Q2e});var kee=w((oht,See)=>{function v2e(t){var e=-1,r=Array(t.size);return t.forEach(function(i,n){r[++e]=[n,i]}),r}See.exports=v2e});var Pee=w((aht,xee)=>{function S2e(t){var e=-1,r=Array(t.size);return t.forEach(function(i){r[++e]=i}),r}xee.exports=S2e});var Lee=w((Aht,Dee)=>{var Ree=Kc(),Fee=wF(),k2e=xf(),x2e=yF(),P2e=kee(),D2e=Pee(),R2e=1,F2e=2,N2e="[object Boolean]",L2e="[object Date]",T2e="[object Error]",O2e="[object Map]",M2e="[object Number]",U2e="[object RegExp]",K2e="[object Set]",H2e="[object String]",j2e="[object Symbol]",G2e="[object ArrayBuffer]",Y2e="[object DataView]",Nee=Ree?Ree.prototype:void 0,BF=Nee?Nee.valueOf:void 0;function q2e(t,e,r,i,n,s,o){switch(r){case Y2e:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case G2e:return!(t.byteLength!=e.byteLength||!s(new Fee(t),new Fee(e)));case N2e:case L2e:case M2e:return k2e(+t,+e);case T2e:return t.name==e.name&&t.message==e.message;case U2e:case H2e:return t==e+"";case O2e:var a=P2e;case K2e:var l=i&R2e;if(a||(a=D2e),t.size!=e.size&&!l)return!1;var c=o.get(t);if(c)return c==e;i|=F2e,o.set(t,e);var u=x2e(a(t),a(e),i,n,s,o);return o.delete(t),u;case j2e:if(BF)return BF.call(t)==BF.call(e)}return!1}Dee.exports=q2e});var bF=w((lht,Tee)=>{var J2e=g0(),W2e=Os();function z2e(t,e,r){var i=e(t);return W2e(t)?i:J2e(i,r(t))}Tee.exports=z2e});var Mee=w((cht,Oee)=>{function _2e(t,e){for(var r=-1,i=t==null?0:t.length,n=0,s=[];++r{function V2e(){return[]}Uee.exports=V2e});var v0=w((ght,Kee)=>{var X2e=Mee(),Z2e=QF(),$2e=Object.prototype,eHe=$2e.propertyIsEnumerable,Hee=Object.getOwnPropertySymbols,tHe=Hee?function(t){return t==null?[]:(t=Object(t),X2e(Hee(t),function(e){return eHe.call(t,e)}))}:Z2e;Kee.exports=tHe});var vF=w((fht,jee)=>{var rHe=bF(),iHe=v0(),nHe=Mf();function sHe(t){return rHe(t,nHe,iHe)}jee.exports=sHe});var qee=w((hht,Gee)=>{var Yee=vF(),oHe=1,aHe=Object.prototype,AHe=aHe.hasOwnProperty;function lHe(t,e,r,i,n,s){var o=r&oHe,a=Yee(t),l=a.length,c=Yee(e),u=c.length;if(l!=u&&!o)return!1;for(var g=l;g--;){var f=a[g];if(!(o?f in e:AHe.call(e,f)))return!1}var h=s.get(t),p=s.get(e);if(h&&p)return h==e&&p==t;var m=!0;s.set(t,e),s.set(e,t);for(var y=o;++g{var cHe=vl(),uHe=Rs(),gHe=cHe(uHe,"DataView");Jee.exports=gHe});var _ee=w((dht,zee)=>{var fHe=vl(),hHe=Rs(),pHe=fHe(hHe,"Promise");zee.exports=pHe});var Xee=w((Cht,Vee)=>{var dHe=vl(),CHe=Rs(),mHe=dHe(CHe,"Set");Vee.exports=mHe});var $ee=w((mht,Zee)=>{var EHe=vl(),IHe=Rs(),yHe=EHe(IHe,"WeakMap");Zee.exports=yHe});var LC=w((Eht,ete)=>{var SF=Wee(),kF=A0(),xF=_ee(),PF=Xee(),DF=$ee(),tte=Hc(),Kf=qR(),rte="[object Map]",wHe="[object Object]",ite="[object Promise]",nte="[object Set]",ste="[object WeakMap]",ote="[object DataView]",BHe=Kf(SF),bHe=Kf(kF),QHe=Kf(xF),vHe=Kf(PF),SHe=Kf(DF),uu=tte;(SF&&uu(new SF(new ArrayBuffer(1)))!=ote||kF&&uu(new kF)!=rte||xF&&uu(xF.resolve())!=ite||PF&&uu(new PF)!=nte||DF&&uu(new DF)!=ste)&&(uu=function(t){var e=tte(t),r=e==wHe?t.constructor:void 0,i=r?Kf(r):"";if(i)switch(i){case BHe:return ote;case bHe:return rte;case QHe:return ite;case vHe:return nte;case SHe:return ste}return e});ete.exports=uu});var hte=w((Iht,ate)=>{var RF=NC(),kHe=yF(),xHe=Lee(),PHe=qee(),Ate=LC(),lte=Os(),cte=PC(),DHe=B0(),RHe=1,ute="[object Arguments]",gte="[object Array]",S0="[object Object]",FHe=Object.prototype,fte=FHe.hasOwnProperty;function NHe(t,e,r,i,n,s){var o=lte(t),a=lte(e),l=o?gte:Ate(t),c=a?gte:Ate(e);l=l==ute?S0:l,c=c==ute?S0:c;var u=l==S0,g=c==S0,f=l==c;if(f&&cte(t)){if(!cte(e))return!1;o=!0,u=!1}if(f&&!u)return s||(s=new RF),o||DHe(t)?kHe(t,e,r,i,n,s):xHe(t,e,l,r,i,n,s);if(!(r&RHe)){var h=u&&fte.call(t,"__wrapped__"),p=g&&fte.call(e,"__wrapped__");if(h||p){var m=h?t.value():t,y=p?e.value():e;return s||(s=new RF),n(m,y,r,i,s)}}return f?(s||(s=new RF),PHe(t,e,r,i,n,s)):!1}ate.exports=NHe});var FF=w((yht,pte)=>{var LHe=hte(),dte=Zo();function Cte(t,e,r,i,n){return t===e?!0:t==null||e==null||!dte(t)&&!dte(e)?t!==t&&e!==e:LHe(t,e,r,i,Cte,n)}pte.exports=Cte});var Ete=w((wht,mte)=>{var THe=NC(),OHe=FF(),MHe=1,UHe=2;function KHe(t,e,r,i){var n=r.length,s=n,o=!i;if(t==null)return!s;for(t=Object(t);n--;){var a=r[n];if(o&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++n{var HHe=Rn();function jHe(t){return t===t&&!HHe(t)}Ite.exports=jHe});var wte=w((bht,yte)=>{var GHe=NF(),YHe=Mf();function qHe(t){for(var e=YHe(t),r=e.length;r--;){var i=e[r],n=t[i];e[r]=[i,n,GHe(n)]}return e}yte.exports=qHe});var LF=w((Qht,Bte)=>{function JHe(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}Bte.exports=JHe});var Qte=w((vht,bte)=>{var WHe=Ete(),zHe=wte(),_He=LF();function VHe(t){var e=zHe(t);return e.length==1&&e[0][2]?_He(e[0][0],e[0][1]):function(r){return r===t||WHe(r,t,e)}}bte.exports=VHe});var k0=w((Sht,vte)=>{var XHe=IC();function ZHe(t,e,r){var i=t==null?void 0:XHe(t,e);return i===void 0?r:i}vte.exports=ZHe});var kte=w((kht,Ste)=>{var $He=FF(),eje=k0(),tje=VR(),rje=o0(),ije=NF(),nje=LF(),sje=lu(),oje=1,aje=2;function Aje(t,e){return rje(t)&&ije(e)?nje(sje(t),e):function(r){var i=eje(r,t);return i===void 0&&i===e?tje(r,t):$He(e,i,oje|aje)}}Ste.exports=Aje});var Pte=w((xht,xte)=>{function lje(t){return function(e){return e==null?void 0:e[t]}}xte.exports=lje});var Rte=w((Pht,Dte)=>{var cje=IC();function uje(t){return function(e){return cje(e,t)}}Dte.exports=uje});var Nte=w((Dht,Fte)=>{var gje=Pte(),fje=Rte(),hje=o0(),pje=lu();function dje(t){return hje(t)?gje(pje(t)):fje(t)}Fte.exports=dje});var TF=w((Rht,Lte)=>{var Cje=Qte(),mje=kte(),Eje=f0(),Ije=Os(),yje=Nte();function wje(t){return typeof t=="function"?t:t==null?Eje:typeof t=="object"?Ije(t)?mje(t[0],t[1]):Cje(t):yje(t)}Lte.exports=wje});var OF=w((Fht,Tte)=>{var Bje=Ff(),bje=IF(),Qje=TF();function vje(t,e){var r={};return e=Qje(e,3),bje(t,function(i,n,s){Bje(r,n,e(i,n,s))}),r}Tte.exports=vje});var TC=w((Nht,Ote)=>{"use strict";function gu(t){this._maxSize=t,this.clear()}gu.prototype.clear=function(){this._size=0,this._values=Object.create(null)};gu.prototype.get=function(t){return this._values[t]};gu.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var Sje=/[^.^\]^[]+|(?=\[\]|\.\.)/g,Mte=/^\d+$/,kje=/^\d/,xje=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,Pje=/^\s*(['"]?)(.*?)(\1)\s*$/,MF=512,Ute=new gu(MF),Kte=new gu(MF),Hte=new gu(MF);Ote.exports={Cache:gu,split:KF,normalizePath:UF,setter:function(t){var e=UF(t);return Kte.get(t)||Kte.set(t,function(i,n){for(var s=0,o=e.length,a=i;s{"use strict";Object.defineProperty(OC,"__esModule",{value:!0});OC.create=Lje;OC.default=void 0;var Tje=TC(),x0={context:"$",value:"."};function Lje(t,e){return new P0(t,e)}var P0=class{constructor(e,r={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===x0.context,this.isValue=this.key[0]===x0.value,this.isSibling=!this.isContext&&!this.isValue;let i=this.isContext?x0.context:this.isValue?x0.value:"";this.path=this.key.slice(i.length),this.getter=this.path&&(0,Tje.getter)(this.path,!0),this.map=r.map}getValue(e,r,i){let n=this.isContext?i:this.isValue?e:r;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,r){return this.getValue(e,r==null?void 0:r.parent,r==null?void 0:r.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};OC.default=P0;P0.prototype.__isYupRef=!0});var jte=w(jF=>{"use strict";Object.defineProperty(jF,"__esModule",{value:!0});jF.default=Oje;var Mje=GF(OF()),D0=GF(cu()),Uje=GF(fu());function GF(t){return t&&t.__esModule?t:{default:t}}function R0(){return R0=Object.assign||function(t){for(var e=1;e=0)&&(r[n]=t[n]);return r}function Oje(t){function e(r,i){let{value:n,path:s="",label:o,options:a,originalValue:l,sync:c}=r,u=Kje(r,["value","path","label","options","originalValue","sync"]),{name:g,test:f,params:h,message:p}=t,{parent:m,context:y}=a;function Q(U){return Uje.default.isRef(U)?U.getValue(n,m,y):U}function S(U={}){let J=(0,Mje.default)(R0({value:n,originalValue:l,label:o,path:U.path||s},h,U.params),Q),W=new D0.default(D0.default.formatError(U.message||p,J),n,J.path,U.type||g);return W.params=J,W}let x=R0({path:s,parent:m,type:g,createError:S,resolve:Q,options:a,originalValue:l},u);if(!c){try{Promise.resolve(f.call(x,n,x)).then(U=>{D0.default.isError(U)?i(U):U?i(null,U):i(S())})}catch(U){i(U)}return}let M;try{var Y;if(M=f.call(x,n,x),typeof((Y=M)==null?void 0:Y.then)=="function")throw new Error(`Validation test of type: "${x.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(U){i(U);return}D0.default.isError(M)?i(M):M?i(null,M):i(S())}return e.OPTIONS=t,e}});var YF=w(MC=>{"use strict";Object.defineProperty(MC,"__esModule",{value:!0});MC.getIn=Gte;MC.default=void 0;var Hje=TC(),jje=t=>t.substr(0,t.length-1).substr(1);function Gte(t,e,r,i=r){let n,s,o;return e?((0,Hje.forEach)(e,(a,l,c)=>{let u=l?jje(a):a;if(t=t.resolve({context:i,parent:n,value:r}),t.innerType){let g=c?parseInt(u,10):0;if(r&&g>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);n=r,r=r&&r[g],t=t.innerType}if(!c){if(!t.fields||!t.fields[u])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t._type}")`);n=r,r=r&&r[u],t=t.fields[u]}s=u,o=l?"["+a+"]":"."+a}),{schema:t,parent:n,parentPath:s}):{parent:n,parentPath:e,schema:t}}var Gje=(t,e,r,i)=>Gte(t,e,r,i).schema,Yje=Gje;MC.default=Yje});var qte=w(F0=>{"use strict";Object.defineProperty(F0,"__esModule",{value:!0});F0.default=void 0;var Yte=qje(fu());function qje(t){return t&&t.__esModule?t:{default:t}}var N0=class{constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let r of this.list)e.push(r);for(let[,r]of this.refs)e.push(r.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){Yte.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){Yte.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,r){if(this.list.has(e))return!0;let i,n=this.refs.values();for(;i=n.next(),!i.done;)if(r(i.value)===e)return!0;return!1}clone(){let e=new N0;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,r){let i=this.clone();return e.list.forEach(n=>i.add(n)),e.refs.forEach(n=>i.add(n)),r.list.forEach(n=>i.delete(n)),r.refs.forEach(n=>i.delete(n)),i}};F0.default=N0});var pA=w(L0=>{"use strict";Object.defineProperty(L0,"__esModule",{value:!0});L0.default=void 0;var Jte=hA(h$()),Hf=fA(),Jje=hA(x$()),Wte=hA(I0()),T0=hA(jte()),zte=hA(vC()),Wje=hA(fu()),zje=YF(),_je=hA(gF()),_te=hA(cu()),Vte=hA(qte());function hA(t){return t&&t.__esModule?t:{default:t}}function Ys(){return Ys=Object.assign||function(t){for(var e=1;e{this.typeError(Hf.mixed.notType)}),this.type=(e==null?void 0:e.type)||"mixed",this.spec=Ys({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e==null?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let r=Object.create(Object.getPrototypeOf(this));return r.type=this.type,r._typeError=this._typeError,r._whitelistError=this._whitelistError,r._blacklistError=this._blacklistError,r._whitelist=this._whitelist.clone(),r._blacklist=this._blacklist.clone(),r.exclusiveTests=Ys({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,Jte.default)(Ys({},this.spec,e)),r}label(e){var r=this.clone();return r.spec.label=e,r}meta(...e){if(e.length===0)return this.spec.meta;let r=this.clone();return r.spec.meta=Object.assign(r.spec.meta||{},e[0]),r}withMutation(e){let r=this._mutate;this._mutate=!0;let i=e(this);return this._mutate=r,i}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let r=this,i=e.clone(),n=Ys({},r.spec,i.spec);return i.spec=n,i._typeError||(i._typeError=r._typeError),i._whitelistError||(i._whitelistError=r._whitelistError),i._blacklistError||(i._blacklistError=r._blacklistError),i._whitelist=r._whitelist.merge(e._whitelist,e._blacklist),i._blacklist=r._blacklist.merge(e._blacklist,e._whitelist),i.tests=r.tests,i.exclusiveTests=r.exclusiveTests,i.withMutation(s=>{e.tests.forEach(o=>{s.test(o.OPTIONS)})}),i}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let r=this;if(r.conditions.length){let i=r.conditions;r=r.clone(),r.conditions=[],r=i.reduce((n,s)=>s.resolve(n,e),r),r=r.resolve(e)}return r}cast(e,r={}){let i=this.resolve(Ys({value:e},r)),n=i._cast(e,r);if(e!==void 0&&r.assert!==!1&&i.isType(n)!==!0){let s=(0,zte.default)(e),o=(0,zte.default)(n);throw new TypeError(`The value of ${r.path||"field"} could not be cast to a value that satisfies the schema type: "${i._type}". + +attempted value: ${s} +`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,r){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,r={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=r,u=e;l||(u=this._cast(u,Ys({assert:!1},r)));let g={value:u,path:s,options:r,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,Wte.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,Wte.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,r,i){let n=this.resolve(Ys({},r,{value:e}));return typeof i=="function"?n._validate(e,r,i):new Promise((s,o)=>n._validate(e,r,(a,l)=>{a?o(a):s(l)}))}validateSync(e,r){let i=this.resolve(Ys({},r,{value:e})),n;return i._validate(e,Ys({},r,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,r){return this.validate(e,r).then(()=>!0,i=>{if(_te.default.isError(i))return!1;throw i})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(i){if(_te.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,Jte.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=Hf.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Hf.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=Hf.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,T0.default)(r),s=r.exclusive||r.name&&i.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(i.exclusiveTests[r.name]=!!r.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===r.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let i=this.clone(),n=(0,_je.default)(e).map(s=>new Wje.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new Jje.default(n,r)),i}typeError(e){var r=this.clone();return r._typeError=(0,T0.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=Hf.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,T0.default)({message:r,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,r=Hf.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,T0.default)({message:r,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:i}=e.spec;return{meta:i,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};L0.default=Aa;Aa.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])Aa.prototype[`${t}At`]=function(e,r,i={}){let{parent:n,parentPath:s,schema:o}=(0,zje.getIn)(this,e,r,i.context);return o[t](n&&n[s],Ys({},i,{parent:n,path:e}))};for(let t of["equals","is"])Aa.prototype[t]=Aa.prototype.oneOf;for(let t of["not","nope"])Aa.prototype[t]=Aa.prototype.notOneOf;Aa.prototype.optional=Aa.prototype.notRequired});var Zte=w(UC=>{"use strict";Object.defineProperty(UC,"__esModule",{value:!0});UC.create=Xte;UC.default=void 0;var Xje=Vje(pA());function Vje(t){return t&&t.__esModule?t:{default:t}}var qF=Xje.default,Zje=qF;UC.default=Zje;function Xte(){return new qF}Xte.prototype=qF.prototype});var jf=w(O0=>{"use strict";Object.defineProperty(O0,"__esModule",{value:!0});O0.default=void 0;var $je=t=>t==null;O0.default=$je});var ire=w(KC=>{"use strict";Object.defineProperty(KC,"__esModule",{value:!0});KC.create=$te;KC.default=void 0;var eGe=ere(pA()),tre=fA(),rre=ere(jf());function ere(t){return t&&t.__esModule?t:{default:t}}function $te(){return new M0}var M0=class extends eGe.default{constructor(){super({type:"boolean"});this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=tre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,rre.default)(r)||r===!0}})}isFalse(e=tre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,rre.default)(r)||r===!1}})}};KC.default=M0;$te.prototype=M0.prototype});var ore=w(HC=>{"use strict";Object.defineProperty(HC,"__esModule",{value:!0});HC.create=nre;HC.default=void 0;var la=fA(),dA=sre(jf()),tGe=sre(pA());function sre(t){return t&&t.__esModule?t:{default:t}}var rGe=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,iGe=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,nGe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,sGe=t=>(0,dA.default)(t)||t===t.trim(),oGe={}.toString();function nre(){return new U0}var U0=class extends tGe.default{constructor(){super({type:"string"});this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===oGe?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=la.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,dA.default)(i)||i.length===this.resolve(e)}})}min(e,r=la.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,dA.default)(i)||i.length>=this.resolve(e)}})}max(e,r=la.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(i){return(0,dA.default)(i)||i.length<=this.resolve(e)}})}matches(e,r){let i=!1,n,s;return r&&(typeof r=="object"?{excludeEmptyString:i=!1,message:n,name:s}=r:n=r),this.test({name:s||"matches",message:n||la.string.matches,params:{regex:e},test:o=>(0,dA.default)(o)||o===""&&i||o.search(e)!==-1})}email(e=la.string.email){return this.matches(rGe,{name:"email",message:e,excludeEmptyString:!0})}url(e=la.string.url){return this.matches(iGe,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=la.string.uuid){return this.matches(nGe,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=la.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:sGe})}lowercase(e=la.string.lowercase){return this.transform(r=>(0,dA.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,dA.default)(r)||r===r.toLowerCase()})}uppercase(e=la.string.uppercase){return this.transform(r=>(0,dA.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,dA.default)(r)||r===r.toUpperCase()})}};HC.default=U0;nre.prototype=U0.prototype});var lre=w(jC=>{"use strict";Object.defineProperty(jC,"__esModule",{value:!0});jC.create=are;jC.default=void 0;var hu=fA(),pu=Are(jf()),aGe=Are(pA());function Are(t){return t&&t.__esModule?t:{default:t}}var AGe=t=>t!=+t;function are(){return new K0}var K0=class extends aGe.default{constructor(){super({type:"number"});this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!AGe(e)}min(e,r=hu.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,pu.default)(i)||i>=this.resolve(e)}})}max(e,r=hu.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,pu.default)(i)||i<=this.resolve(e)}})}lessThan(e,r=hu.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(i){return(0,pu.default)(i)||ithis.resolve(e)}})}positive(e=hu.number.positive){return this.moreThan(0,e)}negative(e=hu.number.negative){return this.lessThan(0,e)}integer(e=hu.number.integer){return this.test({name:"integer",message:e,test:r=>(0,pu.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,pu.default)(e)?e:e|0)}round(e){var r,i=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(i.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+i.join(", "));return this.transform(n=>(0,pu.default)(n)?n:Math[e](n))}};jC.default=K0;are.prototype=K0.prototype});var cre=w(JF=>{"use strict";Object.defineProperty(JF,"__esModule",{value:!0});JF.default=lGe;var cGe=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function lGe(t){var e=[1,4,5,6,7,10,11],r=0,i,n;if(n=cGe.exec(t)){for(var s=0,o;o=e[s];++s)n[o]=+n[o]||0;n[2]=(+n[2]||1)-1,n[3]=+n[3]||1,n[7]=n[7]?String(n[7]).substr(0,3):0,(n[8]===void 0||n[8]==="")&&(n[9]===void 0||n[9]==="")?i=+new Date(n[1],n[2],n[3],n[4],n[5],n[6],n[7]):(n[8]!=="Z"&&n[9]!==void 0&&(r=n[10]*60+n[11],n[9]==="+"&&(r=0-r)),i=Date.UTC(n[1],n[2],n[3],n[4],n[5]+r,n[6],n[7]))}else i=Date.parse?Date.parse(t):NaN;return i}});var fre=w(GC=>{"use strict";Object.defineProperty(GC,"__esModule",{value:!0});GC.create=WF;GC.default=void 0;var uGe=H0(cre()),ure=fA(),gre=H0(jf()),gGe=H0(fu()),fGe=H0(pA());function H0(t){return t&&t.__esModule?t:{default:t}}var zF=new Date(""),hGe=t=>Object.prototype.toString.call(t)==="[object Date]";function WF(){return new YC}var YC=class extends fGe.default{constructor(){super({type:"date"});this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,uGe.default)(e),isNaN(e)?zF:new Date(e))})})}_typeCheck(e){return hGe(e)&&!isNaN(e.getTime())}prepareParam(e,r){let i;if(gGe.default.isRef(e))i=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);i=n}return i}min(e,r=ure.date.min){let i=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,gre.default)(n)||n>=this.resolve(i)}})}max(e,r=ure.date.max){var i=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,gre.default)(n)||n<=this.resolve(i)}})}};GC.default=YC;YC.INVALID_DATE=zF;WF.prototype=YC.prototype;WF.INVALID_DATE=zF});var pre=w((Wht,hre)=>{function pGe(t,e,r,i){var n=-1,s=t==null?0:t.length;for(i&&s&&(r=t[++n]);++n{function dGe(t){return function(e){return t==null?void 0:t[e]}}dre.exports=dGe});var Ere=w((_ht,mre)=>{var CGe=Cre(),mGe={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},EGe=CGe(mGe);mre.exports=EGe});var yre=w((Vht,Ire)=>{var IGe=Ere(),yGe=nf(),wGe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,BGe="\\u0300-\\u036f",bGe="\\ufe20-\\ufe2f",QGe="\\u20d0-\\u20ff",vGe=BGe+bGe+QGe,SGe="["+vGe+"]",kGe=RegExp(SGe,"g");function xGe(t){return t=yGe(t),t&&t.replace(wGe,IGe).replace(kGe,"")}Ire.exports=xGe});var Bre=w((Xht,wre)=>{var PGe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function DGe(t){return t.match(PGe)||[]}wre.exports=DGe});var Qre=w((Zht,bre)=>{var RGe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function FGe(t){return RGe.test(t)}bre.exports=FGe});var Yre=w(($ht,vre)=>{var Sre="\\ud800-\\udfff",NGe="\\u0300-\\u036f",LGe="\\ufe20-\\ufe2f",TGe="\\u20d0-\\u20ff",OGe=NGe+LGe+TGe,kre="\\u2700-\\u27bf",xre="a-z\\xdf-\\xf6\\xf8-\\xff",MGe="\\xac\\xb1\\xd7\\xf7",UGe="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",KGe="\\u2000-\\u206f",HGe=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Pre="A-Z\\xc0-\\xd6\\xd8-\\xde",jGe="\\ufe0e\\ufe0f",Dre=MGe+UGe+KGe+HGe,Rre="['\u2019]",Fre="["+Dre+"]",GGe="["+OGe+"]",Nre="\\d+",YGe="["+kre+"]",Lre="["+xre+"]",Tre="[^"+Sre+Dre+Nre+kre+xre+Pre+"]",qGe="\\ud83c[\\udffb-\\udfff]",JGe="(?:"+GGe+"|"+qGe+")",WGe="[^"+Sre+"]",Ore="(?:\\ud83c[\\udde6-\\uddff]){2}",Mre="[\\ud800-\\udbff][\\udc00-\\udfff]",Gf="["+Pre+"]",zGe="\\u200d",Ure="(?:"+Lre+"|"+Tre+")",_Ge="(?:"+Gf+"|"+Tre+")",Kre="(?:"+Rre+"(?:d|ll|m|re|s|t|ve))?",Hre="(?:"+Rre+"(?:D|LL|M|RE|S|T|VE))?",jre=JGe+"?",Gre="["+jGe+"]?",VGe="(?:"+zGe+"(?:"+[WGe,Ore,Mre].join("|")+")"+Gre+jre+")*",XGe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ZGe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",$Ge=Gre+jre+VGe,eYe="(?:"+[YGe,Ore,Mre].join("|")+")"+$Ge,tYe=RegExp([Gf+"?"+Lre+"+"+Kre+"(?="+[Fre,Gf,"$"].join("|")+")",_Ge+"+"+Hre+"(?="+[Fre,Gf+Ure,"$"].join("|")+")",Gf+"?"+Ure+"+"+Kre,Gf+"+"+Hre,ZGe,XGe,Nre,eYe].join("|"),"g");function rYe(t){return t.match(tYe)||[]}vre.exports=rYe});var Jre=w((ept,qre)=>{var iYe=Bre(),nYe=Qre(),sYe=nf(),oYe=Yre();function aYe(t,e,r){return t=sYe(t),e=r?void 0:e,e===void 0?nYe(t)?oYe(t):iYe(t):t.match(e)||[]}qre.exports=aYe});var _F=w((tpt,Wre)=>{var AYe=pre(),lYe=yre(),cYe=Jre(),uYe="['\u2019]",gYe=RegExp(uYe,"g");function fYe(t){return function(e){return AYe(cYe(lYe(e).replace(gYe,"")),t,"")}}Wre.exports=fYe});var _re=w((rpt,zre)=>{var hYe=_F(),pYe=hYe(function(t,e,r){return t+(r?"_":"")+e.toLowerCase()});zre.exports=pYe});var Xre=w((ipt,Vre)=>{var dYe=tB(),CYe=_F(),mYe=CYe(function(t,e,r){return e=e.toLowerCase(),t+(r?dYe(e):e)});Vre.exports=mYe});var $re=w((npt,Zre)=>{var EYe=Ff(),IYe=IF(),yYe=TF();function wYe(t,e){var r={};return e=yYe(e,3),IYe(t,function(i,n,s){EYe(r,e(i,n,s),i)}),r}Zre.exports=wYe});var tie=w((spt,VF)=>{VF.exports=function(t){return eie(BYe(t),t)};VF.exports.array=eie;function eie(t,e){var r=t.length,i=new Array(r),n={},s=r,o=bYe(e),a=QYe(t);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)n[s]||l(t[s],s,new Set);return i;function l(c,u,g){if(g.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch(m){f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!n[u]){n[u]=!0;var h=o.get(c)||new Set;if(h=Array.from(h),u=h.length){g.add(c);do{var p=h[--u];l(p,a.get(p),g)}while(u);g.delete(c)}i[--r]=c}}}function BYe(t){for(var e=new Set,r=0,i=t.length;r{"use strict";Object.defineProperty(XF,"__esModule",{value:!0});XF.default=vYe;var SYe=j0(SC()),kYe=j0(tie()),xYe=TC(),PYe=j0(fu()),DYe=j0(Lf());function j0(t){return t&&t.__esModule?t:{default:t}}function vYe(t,e=[]){let r=[],i=[];function n(s,o){var a=(0,xYe.split)(s)[0];~i.indexOf(a)||i.push(a),~e.indexOf(`${o}-${a}`)||r.push([o,a])}for(let s in t)if((0,SYe.default)(t,s)){let o=t[s];~i.indexOf(s)||i.push(s),PYe.default.isRef(o)&&o.isSibling?n(o.path,s):(0,DYe.default)(o)&&"deps"in o&&o.deps.forEach(a=>n(a,s))}return kYe.default.array(i,r).reverse()}});var nie=w(ZF=>{"use strict";Object.defineProperty(ZF,"__esModule",{value:!0});ZF.default=RYe;function iie(t,e){let r=Infinity;return t.some((i,n)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(i))!==-1)return r=n,!0}),r}function RYe(t){return(e,r)=>iie(t,e)-iie(t,r)}});var uie=w(qC=>{"use strict";Object.defineProperty(qC,"__esModule",{value:!0});qC.create=sie;qC.default=void 0;var oie=ca(SC()),aie=ca(_re()),FYe=ca(Xre()),NYe=ca($re()),LYe=ca(OF()),TYe=TC(),Aie=fA(),OYe=ca(rie()),lie=ca(nie()),MYe=ca(I0()),UYe=ca(cu()),$F=ca(pA());function ca(t){return t&&t.__esModule?t:{default:t}}function Yf(){return Yf=Object.assign||function(t){for(var e=1;eObject.prototype.toString.call(t)==="[object Object]";function KYe(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(i=>r.indexOf(i)===-1)}var HYe=(0,lie.default)([]),G0=class extends $F.default{constructor(e){super({type:"object"});this.fields=Object.create(null),this._sortErrors=HYe,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch(n){i=null}return this.isType(i)?i:null}),e&&this.shape(e)})}_typeCheck(e){return cie(e)||typeof e=="function"}_cast(e,r={}){var i;let n=super._cast(e,r);if(n===void 0)return this.getDefault();if(!this._typeCheck(n))return n;let s=this.fields,o=(i=r.stripUnknown)!=null?i:this.spec.noUnknown,a=this._nodes.concat(Object.keys(n).filter(g=>this._nodes.indexOf(g)===-1)),l={},c=Yf({},r,{parent:l,__validating:r.__validating||!1}),u=!1;for(let g of a){let f=s[g],h=(0,oie.default)(n,g);if(f){let p,m=n[g];c.path=(r.path?`${r.path}.`:"")+g,f=f.resolve({value:m,context:r.context,parent:l});let y="spec"in f?f.spec:void 0,Q=y==null?void 0:y.strict;if(y==null?void 0:y.strip){u=u||g in n;continue}p=!r.__validating||!Q?f.cast(n[g],c):n[g],p!==void 0&&(l[g]=p)}else h&&!o&&(l[g]=n[g]);l[g]!==n[g]&&(u=!0)}return u?l:n}_validate(e,r={},i){let n=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:l=this.spec.abortEarly,recursive:c=this.spec.recursive}=r;o=[{schema:this,value:a},...o],r.__validating=!0,r.originalValue=a,r.from=o,super._validate(e,r,(u,g)=>{if(u){if(!UYe.default.isError(u)||l)return void i(u,g);n.push(u)}if(!c||!cie(g)){i(n[0]||null,g);return}a=a||g;let f=this._nodes.map(h=>(p,m)=>{let y=h.indexOf(".")===-1?(r.path?`${r.path}.`:"")+h:`${r.path||""}["${h}"]`,Q=this.fields[h];if(Q&&"validate"in Q){Q.validate(g[h],Yf({},r,{path:y,from:o,strict:!0,parent:g,originalValue:a[h]}),m);return}m(null)});(0,MYe.default)({sync:s,tests:f,value:g,errors:n,endEarly:l,sort:this._sortErrors,path:r.path},i)})}clone(e){let r=super.clone(e);return r.fields=Yf({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),i=r.fields;for(let[n,s]of Object.entries(this.fields)){let o=i[n];o===void 0?i[n]=s:o instanceof $F.default&&s instanceof $F.default&&(i[n]=s.concat(o))}return r.withMutation(()=>r.shape(i))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let i=this.fields[r];e[r]="default"in i?i.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(!!this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let i=this.clone(),n=Object.assign(i.fields,e);if(i.fields=n,i._sortErrors=(0,lie.default)(Object.keys(n)),r.length){Array.isArray(r[0])||(r=[r]);let s=r.map(([o,a])=>`${o}-${a}`);i._excludedEdges=i._excludedEdges.concat(s)}return i._nodes=(0,OYe.default)(n,i._excludedEdges),i}pick(e){let r={};for(let i of e)this.fields[i]&&(r[i]=this.fields[i]);return this.clone().withMutation(i=>(i.fields={},i.shape(r)))}omit(e){let r=this.clone(),i=r.fields;r.fields={};for(let n of e)delete i[n];return r.withMutation(()=>r.shape(i))}from(e,r,i){let n=(0,TYe.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,oie.default)(s,e)&&(o=Yf({},s),i||delete o[e],o[r]=n(s)),o})}noUnknown(e=!0,r=Aie.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let i=this.test({name:"noUnknown",exclusive:!0,message:r,test(n){if(n==null)return!0;let s=KYe(this.schema,n);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return i.spec.noUnknown=e,i}unknown(e=!0,r=Aie.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,NYe.default)(r,(i,n)=>e(n)))}camelCase(){return this.transformKeys(FYe.default)}snakeCase(){return this.transformKeys(aie.default)}constantCase(){return this.transformKeys(e=>(0,aie.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,LYe.default)(this.fields,r=>r.describe()),e}};qC.default=G0;function sie(t){return new G0(t)}sie.prototype=G0.prototype});var fie=w(JC=>{"use strict";Object.defineProperty(JC,"__esModule",{value:!0});JC.create=gie;JC.default=void 0;var eN=qf(jf()),jYe=qf(Lf()),GYe=qf(vC()),tN=fA(),YYe=qf(I0()),qYe=qf(cu()),JYe=qf(pA());function qf(t){return t&&t.__esModule?t:{default:t}}function Y0(){return Y0=Object.assign||function(t){for(var e=1;e{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch(i){r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let i=super._cast(e,r);if(!this._typeCheck(i)||!this.innerType)return i;let n=!1,s=i.map((o,a)=>{let l=this.innerType.cast(o,Y0({},r,{path:`${r.path||""}[${a}]`}));return l!==o&&(n=!0),l});return n?s:i}_validate(e,r={},i){var n,s;let o=[],a=r.sync,l=r.path,c=this.innerType,u=(n=r.abortEarly)!=null?n:this.spec.abortEarly,g=(s=r.recursive)!=null?s:this.spec.recursive,f=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(h,p)=>{if(h){if(!qYe.default.isError(h)||u)return void i(h,p);o.push(h)}if(!g||!c||!this._typeCheck(p)){i(o[0]||null,p);return}f=f||p;let m=new Array(p.length);for(let y=0;yc.validate(Q,x,Y)}(0,YYe.default)({sync:a,path:l,value:p,errors:o,endEarly:u,tests:m},i)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,jYe.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,GYe.default)(e));return r.innerType=e,r}length(e,r=tN.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,eN.default)(i)||i.length===this.resolve(e)}})}min(e,r){return r=r||tN.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,eN.default)(i)||i.length>=this.resolve(e)}})}max(e,r){return r=r||tN.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,eN.default)(i)||i.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(i,n,s)=>!e(i,n,s):i=>!!i;return this.transform(i=>i!=null?i.filter(r):i)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};JC.default=q0;gie.prototype=q0.prototype});var hie=w(WC=>{"use strict";Object.defineProperty(WC,"__esModule",{value:!0});WC.create=WYe;WC.default=void 0;var _Ye=zYe(Lf());function zYe(t){return t&&t.__esModule?t:{default:t}}function WYe(t){return new rN(t)}var rN=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,i={})=>{let n=this.builder(r,i);if(!(0,_Ye.default)(n))throw new TypeError("lazy() functions must return a valid schema");return n.resolve(i)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,i){return this._resolve(e,r).validate(e,r,i)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,i){return this._resolve(r,i).validateAt(e,r,i)}validateSyncAt(e,r,i){return this._resolve(r,i).validateSyncAt(e,r,i)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},VYe=rN;WC.default=VYe});var pie=w(iN=>{"use strict";Object.defineProperty(iN,"__esModule",{value:!0});iN.default=XYe;var $Ye=ZYe(fA());function ZYe(t){return t&&t.__esModule?t:{default:t}}function XYe(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{$Ye.default[e][r]=t[e][r]})})}});var sN=w(Br=>{"use strict";Object.defineProperty(Br,"__esModule",{value:!0});Br.addMethod=eqe;Object.defineProperty(Br,"MixedSchema",{enumerable:!0,get:function(){return die.default}});Object.defineProperty(Br,"mixed",{enumerable:!0,get:function(){return die.create}});Object.defineProperty(Br,"BooleanSchema",{enumerable:!0,get:function(){return nN.default}});Object.defineProperty(Br,"bool",{enumerable:!0,get:function(){return nN.create}});Object.defineProperty(Br,"boolean",{enumerable:!0,get:function(){return nN.create}});Object.defineProperty(Br,"StringSchema",{enumerable:!0,get:function(){return Cie.default}});Object.defineProperty(Br,"string",{enumerable:!0,get:function(){return Cie.create}});Object.defineProperty(Br,"NumberSchema",{enumerable:!0,get:function(){return mie.default}});Object.defineProperty(Br,"number",{enumerable:!0,get:function(){return mie.create}});Object.defineProperty(Br,"DateSchema",{enumerable:!0,get:function(){return Eie.default}});Object.defineProperty(Br,"date",{enumerable:!0,get:function(){return Eie.create}});Object.defineProperty(Br,"ObjectSchema",{enumerable:!0,get:function(){return Iie.default}});Object.defineProperty(Br,"object",{enumerable:!0,get:function(){return Iie.create}});Object.defineProperty(Br,"ArraySchema",{enumerable:!0,get:function(){return yie.default}});Object.defineProperty(Br,"array",{enumerable:!0,get:function(){return yie.create}});Object.defineProperty(Br,"ref",{enumerable:!0,get:function(){return tqe.create}});Object.defineProperty(Br,"lazy",{enumerable:!0,get:function(){return rqe.create}});Object.defineProperty(Br,"ValidationError",{enumerable:!0,get:function(){return iqe.default}});Object.defineProperty(Br,"reach",{enumerable:!0,get:function(){return nqe.default}});Object.defineProperty(Br,"isSchema",{enumerable:!0,get:function(){return wie.default}});Object.defineProperty(Br,"setLocale",{enumerable:!0,get:function(){return sqe.default}});Object.defineProperty(Br,"BaseSchema",{enumerable:!0,get:function(){return oqe.default}});var die=du(Zte()),nN=du(ire()),Cie=du(ore()),mie=du(lre()),Eie=du(fre()),Iie=du(uie()),yie=du(fie()),tqe=fu(),rqe=hie(),iqe=zC(cu()),nqe=zC(YF()),wie=zC(Lf()),sqe=zC(pie()),oqe=zC(pA());function zC(t){return t&&t.__esModule?t:{default:t}}function Bie(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Bie=function(){return t},t}function du(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Bie();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=i?Object.getOwnPropertyDescriptor(t,n):null;s&&(s.get||s.set)?Object.defineProperty(r,n,s):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}function eqe(t,e,r){if(!t||!(0,wie.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}});var kie=w((Qpt,VC)=>{"use strict";var lqe=process.env.TERM_PROGRAM==="Hyper",cqe=process.platform==="win32",Qie=process.platform==="linux",oN={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},vie=Object.assign({},oN,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),Sie=Object.assign({},oN,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:Qie?"\u25B8":"\u276F",pointerSmall:Qie?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});VC.exports=cqe&&!lqe?vie:Sie;Reflect.defineProperty(VC.exports,"common",{enumerable:!1,value:oN});Reflect.defineProperty(VC.exports,"windows",{enumerable:!1,value:vie});Reflect.defineProperty(VC.exports,"other",{enumerable:!1,value:Sie})});var Co=w((vpt,aN)=>{"use strict";var uqe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),gqe=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,xie=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=s=>{let o=s.open=`[${s.codes[0]}m`,a=s.close=`[${s.codes[1]}m`,l=s.regex=new RegExp(`\\u001b\\[${s.codes[1]}m`,"g");return s.wrap=(c,u)=>{c.includes(a)&&(c=c.replace(l,a+o));let g=o+c+a;return u?g.replace(/\r*\n/g,`${a}$&${o}`):g},s},r=(s,o,a)=>typeof s=="function"?s(o):s.wrap(o,a),i=(s,o)=>{if(s===""||s==null)return"";if(t.enabled===!1)return s;if(t.visible===!1)return"";let a=""+s,l=a.includes(` +`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=r(t.styles[o[c]],a,l);return a},n=(s,o,a)=>{t.styles[s]=e({name:s,codes:o}),(t.keys[a]||(t.keys[a]=[])).push(s),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(c){t.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,t),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=gqe,t.hasColor=t.hasAnsi=s=>(t.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&t.ansiRegex.test(s)),t.alias=(s,o)=>{let a=typeof o=="string"?t[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),t.styles[s]=a,a.stack=[s]),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(l){t.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,t),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},t.theme=s=>{if(!uqe(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))t.alias(o,s[o]);return t},t.alias("unstyle",s=>typeof s=="string"&&s!==""?(t.ansiRegex.lastIndex=0,s.replace(t.ansiRegex,"")):""),t.alias("noop",s=>s),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=kie(),t.define=n,t};aN.exports=xie();aN.exports.create=xie});var Xi=w(Lt=>{"use strict";var fqe=Object.prototype.toString,qs=Co(),Pie=!1,AN=[],Die={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};Lt.longest=(t,e)=>t.reduce((r,i)=>Math.max(r,e?i[e].length:i.length),0);Lt.hasColor=t=>!!t&&qs.hasColor(t);var W0=Lt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Lt.nativeType=t=>fqe.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");Lt.isAsyncFn=t=>Lt.nativeType(t)==="asyncfunction";Lt.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";Lt.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;Lt.scrollDown=(t=[])=>[...t.slice(1),t[0]];Lt.scrollUp=(t=[])=>[t.pop(),...t];Lt.reorder=(t=[])=>{let e=t.slice();return e.sort((r,i)=>r.index>i.index?1:r.index{let i=t.length,n=r===i?0:r<0?i-1:r,s=t[e];t[e]=t[n],t[n]=s};Lt.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};Lt.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};Lt.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:i=` +`+r,width:n=80}=e;n-=((i+r).match(/[^\S\n]/g)||[]).length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=t.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),r+c.join(i)};Lt.unmute=t=>{let e=t.stack.find(i=>qs.keys.color.includes(i));return e?qs[e]:t.stack.find(i=>i.slice(2)==="bg")?qs[e.slice(2)]:i=>i};Lt.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";Lt.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>qs.keys.color.includes(i));if(e){let i=qs["bg"+Lt.pascal(e)];return i?i.black:t}let r=t.stack.find(i=>i.slice(0,2)==="bg");return r?qs[r.slice(2).toLowerCase()]||t:qs.none};Lt.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>qs.keys.color.includes(i)),r=t.stack.find(i=>i.slice(0,2)==="bg");if(e&&!r)return qs[Die[e]||e];if(r){let i=r.slice(2).toLowerCase(),n=Die[i];return n&&qs["bg"+Lt.pascal(n)]||t}return qs.none};Lt.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=r<10?"0"+r:r;return n+":"+s+" "+i};Lt.set=(t={},e="",r)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:r;return!Lt.isObject(a)&&s{let i=t[e]==null?e.split(".").reduce((n,s)=>n&&n[s],t):t[e];return i==null?r:i};Lt.mixin=(t,e)=>{if(!W0(t))return e;if(!W0(e))return t;for(let r of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,r);if(i.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&W0(i.value)){let n=Object.getOwnPropertyDescriptor(t,r);W0(n.value)?t[r]=Lt.merge({},t[r],e[r]):Reflect.defineProperty(t,r,i)}else Reflect.defineProperty(t,r,i);else Reflect.defineProperty(t,r,i)}return t};Lt.merge=(...t)=>{let e={};for(let r of t)Lt.mixin(e,r);return e};Lt.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let i of Object.keys(r)){let n=r[i];typeof n=="function"?Lt.define(t,i,n.bind(e)):Lt.define(t,i,n)}};Lt.onExit=t=>{let e=(r,i)=>{Pie||(Pie=!0,AN.forEach(n=>n()),r===!0&&process.exit(128+i))};AN.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),AN.push(t)};Lt.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};Lt.defineExport=(t,e,r)=>{let i;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():r()}})}});var Rie=w(Wf=>{"use strict";Wf.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};Wf.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};Wf.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};Wf.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};Wf.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var Lie=w((xpt,Fie)=>{"use strict";var Nie=require("readline"),hqe=Rie(),pqe=/^(?:\x1b)([a-zA-Z0-9])$/,dqe=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,Cqe={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function mqe(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function Eqe(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var z0=(t="",e={})=>{let r,i=N({name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t},e);if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=""+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=i.sequence||""),i.sequence=i.sequence||t||i.name,t==="\r")i.raw=void 0,i.name="return";else if(t===` +`)i.name="enter";else if(t===" ")i.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x7F"||t==="\b")i.name="backspace",i.meta=t.charAt(0)==="";else if(t===""||t==="")i.name="escape",i.meta=t.length===2;else if(t===" "||t===" ")i.name="space",i.meta=t.length===2;else if(t<="")i.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")i.name="number";else if(t.length===1&&t>="a"&&t<="z")i.name=t;else if(t.length===1&&t>="A"&&t<="Z")i.name=t.toLowerCase(),i.shift=!0;else if(r=pqe.exec(t))i.meta=!0,i.shift=/^[A-Z]$/.test(r[1]);else if(r=dqe.exec(t)){let n=[...t];n[0]===""&&n[1]===""&&(i.option=!0);let s=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),o=(r[3]||r[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=Cqe[s],i.shift=mqe(s)||i.shift,i.ctrl=Eqe(s)||i.ctrl}return i};z0.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let i=Nie.createInterface({terminal:!0,input:r});Nie.emitKeypressEvents(r,i);let n=(a,l)=>e(a,z0(a,l),i),s=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",n),i.resume(),()=>{r.isTTY&&r.setRawMode(s),r.removeListener("keypress",n),i.pause(),i.close()}};z0.action=(t,e,r)=>{let i=N(N({},hqe),r);return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};Fie.exports=z0});var Oie=w((Ppt,Tie)=>{"use strict";Tie.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let i=e[r];typeof i=="number"&&(i={interval:i}),Iqe(t,r,i)}};function Iqe(t,e,r={}){let i=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=r.interval||120;i.frames=r.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,t.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),t.once("close",()=>i.stop()),i.stop}});var Kie=w((Dpt,Mie)=>{"use strict";var{define:yqe,width:wqe}=Xi(),Uie=class{constructor(e){let r=e.options;yqe(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=wqe(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e=N({},this);return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};Mie.exports=Uie});var jie=w((Rpt,Hie)=>{"use strict";var lN=Xi(),Fi=Co(),cN={default:Fi.noop,noop:Fi.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||lN.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||lN.complement(this.primary)},primary:Fi.cyan,success:Fi.green,danger:Fi.magenta,strong:Fi.bold,warning:Fi.yellow,muted:Fi.dim,disabled:Fi.gray,dark:Fi.dim.gray,underline:Fi.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};cN.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(Fi.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(Fi.visible=t.styles.visible);let e=lN.merge({},cN,t.styles);delete e.merge;for(let r of Object.keys(Fi))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>Fi[r]});for(let r of Object.keys(Fi.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>Fi[r]});return e};Hie.exports=cN});var Yie=w((Fpt,Gie)=>{"use strict";var uN=process.platform==="win32",CA=Co(),Bqe=Xi(),gN=te(N({},CA.symbols),{upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:CA.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:CA.symbols.question,submitted:CA.symbols.check,cancelled:CA.symbols.cross},separator:{pending:CA.symbols.pointerSmall,submitted:CA.symbols.middot,cancelled:CA.symbols.middot},radio:{off:uN?"( )":"\u25EF",on:uN?"(*)":"\u25C9",disabled:uN?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]});gN.merge=t=>{let e=Bqe.merge({},CA.symbols,gN,t.symbols);return delete e.merge,e};Gie.exports=gN});var Jie=w((Npt,qie)=>{"use strict";var bqe=jie(),Qqe=Yie(),vqe=Xi();qie.exports=t=>{t.options=vqe.merge({},t.options.theme,t.options),t.symbols=Qqe.merge(t.options),t.styles=bqe.merge(t.options)}});var Xie=w((Wie,zie)=>{"use strict";var _ie=process.env.TERM_PROGRAM==="Apple_Terminal",Sqe=Co(),fN=Xi(),mo=zie.exports=Wie,Nr="[",Vie="\x07",hN=!1,Sl=mo.code={bell:Vie,beep:Vie,beginning:`${Nr}G`,down:`${Nr}J`,esc:Nr,getPosition:`${Nr}6n`,hide:`${Nr}?25l`,line:`${Nr}2K`,lineEnd:`${Nr}K`,lineStart:`${Nr}1K`,restorePosition:Nr+(_ie?"8":"u"),savePosition:Nr+(_ie?"7":"s"),screen:`${Nr}2J`,show:`${Nr}?25h`,up:`${Nr}1J`},Cu=mo.cursor={get hidden(){return hN},hide(){return hN=!0,Sl.hide},show(){return hN=!1,Sl.show},forward:(t=1)=>`${Nr}${t}C`,backward:(t=1)=>`${Nr}${t}D`,nextLine:(t=1)=>`${Nr}E`.repeat(t),prevLine:(t=1)=>`${Nr}F`.repeat(t),up:(t=1)=>t?`${Nr}${t}A`:"",down:(t=1)=>t?`${Nr}${t}B`:"",right:(t=1)=>t?`${Nr}${t}C`:"",left:(t=1)=>t?`${Nr}${t}D`:"",to(t,e){return e?`${Nr}${e+1};${t+1}H`:`${Nr}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Cu.left(-t):t>0?Cu.right(t):"",r+=e<0?Cu.up(-e):e>0?Cu.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:i,input:n,prompt:s,size:o,value:a}=t;if(i=fN.isPrimitive(i)?String(i):"",n=fN.isPrimitive(n)?String(n):"",a=fN.isPrimitive(a)?String(a):"",o){let l=mo.cursor.up(o)+mo.cursor.to(s.length),c=n.length-r;return c>0&&(l+=mo.cursor.left(c)),l}if(a||e){let l=!n&&!!i?-i.length:-n.length+r;return e&&(l-=e.length),n===""&&i&&!s.includes(i)&&(l+=i.length),mo.cursor.move(l)}}},pN=mo.erase={screen:Sl.screen,up:Sl.up,down:Sl.down,line:Sl.line,lineEnd:Sl.lineEnd,lineStart:Sl.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return pN.line+Cu.to(0);let r=s=>[...Sqe.unstyle(s)].length,i=t.split(/\r?\n/),n=0;for(let s of i)n+=1+Math.floor(Math.max(r(s)-1,0)/e);return(pN.line+Cu.prevLine()).repeat(n-1)+pN.line+Cu.to(0)}});var zf=w((Lpt,Zie)=>{"use strict";var kqe=require("events"),$ie=Co(),dN=Lie(),xqe=Oie(),Pqe=Kie(),Dqe=Jie(),Tn=Xi(),mu=Xie(),_0=class extends kqe{constructor(e={}){super();this.name=e.name,this.type=e.type,this.options=e,Dqe(this),xqe(this),this.state=new Pqe(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=Fqe(this.options.margin),this.setMaxListeners(0),Rqe(this)}async keypress(e,r={}){this.keypressed=!0;let i=dN.action(e,dN(e,r),this.options.actions);this.state.keypress=i,this.emit("keypress",e,i),this.emit("state",this.state.clone());let n=this.options[i.action]||this[i.action]||this.dispatch;if(typeof n=="function")return await n.call(this,e,i);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(mu.code.beep)}cursorHide(){this.stdout.write(mu.cursor.hide()),Tn.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(mu.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(mu.cursor.down(e)+mu.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:i}=this.sections(),{cursor:n,initial:s="",input:o="",value:a=""}=this,l=this.state.size=i.length,c={after:r,cursor:n,initial:s,input:o,prompt:e,size:l,value:a},u=mu.cursor.restore(c);u&&this.stdout.write(u)}sections(){let{buffer:e,input:r,prompt:i}=this.state;i=$ie.unstyle(i);let n=$ie.unstyle(e),s=n.indexOf(i),o=n.slice(0,s),l=n.slice(s).split(` +`),c=l[0],u=l[l.length-1],f=(i+(r?" "+r:"")).length,h=fe.call(this,this.value),this.result=()=>i.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let n=r.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=r&&r[e]!=null?r[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,r,i);return!g&&r&&r[e]?this.resolve(c,s,r,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,i=this.state;return i.timer=r,Tn.isObject(e)&&(e=e[i.status]||e.pending),Tn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return Tn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,i=this.state;i.timer=r;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return Tn.isObject(s)&&(s=s[i.status]||s.pending),Tn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,r){let i=await this.element("pointer",e,r);if(typeof i=="string"&&Tn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===r,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=Tn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,r){let i=await this.element("indicator",e,r);if(typeof i=="string"&&Tn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return Tn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return Tn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return Tn.resolve(this,e,...r)}get base(){return _0.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Tn.height(this.stdout,25)}get width(){return this.options.columns||Tn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,i=[r,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function Rqe(t){let e=n=>t[n]===void 0||typeof t[n]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(t.options)){if(r.includes(n)||/^on[A-Z]/.test(n))continue;let s=t.options[n];typeof s=="function"&&e(n)?i.includes(n)||(t[n]=s.bind(t)):typeof t[n]!="function"&&(t[n]=s)}}function Fqe(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=n=>n%2==0?` +`:" ",i=[];for(let n=0;n<4;n++){let s=r(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}Zie.exports=_0});var rne=w((Tpt,ene)=>{"use strict";var Nqe=Xi(),tne={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return tne.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};ene.exports=(t,e={})=>{let r=Nqe.merge({},tne,e.roles);return r[t]||r.default}});var XC=w((Opt,ine)=>{"use strict";var Lqe=Co(),Tqe=zf(),Oqe=rne(),V0=Xi(),{reorder:CN,scrollUp:Mqe,scrollDown:Uqe,isObject:nne,swap:Kqe}=V0,sne=class extends Tqe{constructor(e){super(e);this.cursorHide(),this.maxSelected=e.maxSelected||Infinity,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");nne(r)&&(r=Object.keys(r)),Array.isArray(r)?(i!=null&&(this.index=this.findIndex(i)),r.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(r=i),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l(this.state.loadingChoices=!1,o))}async toChoice(e,r,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=Oqe(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,V0.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,Lqe.unstyle(e.message).length));let o=N({},e);return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,i){let n=await this.toChoice(e,r,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,r,i){let n=N({name:"New choice name?",editable:!0,newChoice:!0},e),s=await this.addChoice(n,r,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(n=>this.toggle(n,r));let i=e.parent;for(;i;){let n=i.choices.filter(s=>this.isDisabled(s));i.enabled=n.every(s=>s.enabled===!0),i=i.parent}return one(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=i=>{let n=Number(i);if(n>this.choices.length-1)return this.alert();let s=this.focused,o=this.choices.find(a=>n===a.index);if(!o.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(o)===-1){let a=CN(this.choices),l=a.indexOf(o);if(s.index>l){let c=a.slice(l,l+this.limit),u=a.filter(g=>!c.includes(g));this.choices=c.concat(u)}else{let c=l-this.limit+1;this.choices=a.slice(c).concat(a.slice(0,c))}}return this.index=this.choices.indexOf(o),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(i=>{let n=this.choices.length,s=this.num,o=(a=!1,l)=>{clearTimeout(this.numberTimeout),a&&(l=r(s)),this.num="",i(l)};if(s==="0"||s.length===1&&Number(s+"0")>n)return o(!0);if(Number(s)>n)return o(!1,this.alert());this.numberTimeout=setTimeout(()=>o(!0),this.delay)})}home(){return this.choices=CN(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=CN(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===0?this.alert():e>r&&i===0?this.scrollUp():(this.index=(i-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===r-1?this.alert():e>r&&i===r-1?this.scrollDown():(this.index=(i+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=Mqe(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=Uqe(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){Kqe(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(i=>e[i]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(i=>!this.isDisabled(i));return e.enabled&&r.every(i=>this.isEnabled(i))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((i,n)=>(i[n]=this.find(n,r),i),{})}filter(e,r){let i=(a,l)=>[a.name,l].includes(e),n=typeof e=="function"?e:i,o=(this.options.multiple?this.state._choices:this.choices).filter(n);return r?o.map(a=>a[r]):o}find(e,r){if(nne(e))return r?e[r]:e;let i=(o,a)=>[o.name,a].includes(e),n=typeof e=="function"?e:i,s=this.choices.find(n);if(s)return r?s[r]:s}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(o=>o.newChoice))return this.alert();let{reorder:r,sort:i}=this.options,n=this.multiple===!0,s=this.selected;return s===void 0?this.alert():(Array.isArray(s)&&r!==!1&&i!==!0&&(s=V0.reorder(s)),this.value=n?s.map(o=>o.name):s.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(i=>i.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let i=this.find(r);i&&(this.initial=i.index,this.focus(i,!0))}}}get choices(){return one(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:i}=this,n=e.limit||this._limit||r.limit||i.length;return Math.min(n,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function one(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(V0.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let i=r.choices.filter(n=>!t.isDisabled(n));r.enabled=i.every(n=>n.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}ine.exports=sne});var kl=w((Mpt,ane)=>{"use strict";var Hqe=XC(),mN=Xi(),Ane=class extends Hqe{constructor(e){super(e);this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let i=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!mN.hasColor(i)&&(i=this.styles.strong(i)),this.resolve(i,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await this.indicator(e,r)+(e.pad||""),o=await this.resolve(e.hint,this.state,e,r);o&&!mN.hasColor(o)&&(o=this.styles.muted(o));let a=this.indent(e),l=await this.choiceMessage(e,r),c=()=>[this.margin[3],a+n+s,l,this.margin[1],o].filter(Boolean).join(" ");return e.role==="heading"?c():e.disabled?(mN.hasColor(l)||(l=this.styles.disabled(l)),c()):(i&&(l=this.styles.em(l)),c())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(s,o)=>await this.renderChoice(s,o)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let i=this.margin[0]+r.join(` +`),n;return this.options.choicesHeader&&(n=await this.resolve(this.options.choicesHeader,this.state)),[n,i].filter(Boolean).join(` +`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,i="",n=await this.header(),s=await this.prefix(),o=await this.separator(),a=await this.message();this.options.promptLine!==!1&&(i=[s,a,o,""].join(" "),this.state.prompt=i);let l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();l&&(i+=l),c&&!i.includes(c)&&(i+=" "+c),e&&!l&&!u.trim()&&this.multiple&&this.emptyError!=null&&(i+=this.styles.danger(this.emptyError)),this.clear(r),this.write([n,i,u,g].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};ane.exports=Ane});var une=w((Upt,lne)=>{"use strict";var jqe=kl(),Gqe=(t,e)=>{let r=t.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(r),o=e(i.slice(s,s+r.length));return s>=0?i.slice(0,s)+o+i.slice(s+r.length):i}},cne=class extends jqe{constructor(e){super(e);this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:i}=this.state;return this.input=i.slice(0,r)+e+i.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let i=e.toLowerCase();return r.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=Gqe(this.input,e),i=this.choices;this.choices=i.map(n=>te(N({},n),{message:r(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};lne.exports=cne});var IN=w((Kpt,gne)=>{"use strict";var EN=Xi();gne.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||t.styles.placeholder,l=EN.inverse(t.styles.primary),c=m=>l(t.styles.black(m)),u=r,g=" ",f=c(g);if(t.blink&&t.blink.off===!0&&(c=m=>m,f=""),s&&n===0&&i===""&&r==="")return c(g);if(s&&n===0&&(r===i||r===""))return c(i[0])+a(i.slice(1));i=EN.isPrimitive(i)?`${i}`:"",r=EN.isPrimitive(r)?`${r}`:"";let h=i&&i.startsWith(r)&&i!==r,p=h?c(i[r.length]):f;if(n!==r.length&&s===!0&&(u=r.slice(0,n)+c(r[n])+r.slice(n+1),p=""),s===!1&&(p=""),h){let m=t.styles.unstyle(u+p);return u+p+a(i.slice(m.length))}return u+p}});var X0=w((Hpt,fne)=>{"use strict";var Yqe=Co(),qqe=kl(),Jqe=IN(),hne=class extends qqe{constructor(e){super(te(N({},e),{multiple:!0}));this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:i,input:n}=r;return r.value=r.input=n.slice(0,i)+e+n.slice(i),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:i}=e;return e.value=e.input=i.slice(0,r-1)+i.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:i}=e;if(i[r]===void 0)return this.alert();let n=`${i}`.slice(0,r)+`${i}`.slice(r+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:i}=e;return r&&r.startsWith(i)&&i!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let i=await this.resolve(e.separator,this.state,e,r)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,m=this.index===r,y=e.validate||(()=>!0),Q=await this.choiceSeparator(e,r),S=e.message;this.align==="right"&&(S=S.padStart(this.longest+1," ")),this.align==="left"&&(S=S.padEnd(this.longest+1," "));let x=this.values[a]=c||o,M=c?"success":"dark";await y.call(e,x,this.state)!==!0&&(M="danger");let U=n[M](await this.indicator(e,r))+(e.pad||""),J=this.indent(e),W=()=>[J,U,S+Q,c,p].filter(Boolean).join(" ");if(i.submitted)return S=Yqe.unstyle(S),c=g(c),p="",W();if(e.format)c=await e.format.call(this,c,e,r);else{let ee=this.styles.muted;c=Jqe(this,{input:c,initial:o,pos:s,showCursor:m,color:ee})}return this.isValue(c)||(c=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,x,e,r)),m&&(S=f(S)),e.error?c+=(c?" ":"")+h(e.error.trim()):e.hint&&(c+=(c?" ":"")+u(e.hint.trim())),W()}async submit(){return this.value=this.values,super.base.submit.call(this)}};fne.exports=hne});var yN=w((jpt,pne)=>{"use strict";var Wqe=X0(),zqe=()=>{throw new Error("expected prompt to have a custom authenticate method")},dne=(t=zqe)=>{class e extends Wqe{constructor(i){super(i)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(i){return dne(i)}}return e};pne.exports=dne()});var Ene=w((Gpt,Cne)=>{"use strict";var _qe=yN();function Vqe(t,e){return t.username===this.options.username&&t.password===this.options.password}var mne=(t=Vqe)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(i){return this.options.showPassword?i:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(i.length))}}];class r extends _qe.create(t){constructor(n){super(te(N({},n),{choices:e}))}static create(n){return mne(n)}}return r};Cne.exports=mne()});var Z0=w((Ypt,Ine)=>{"use strict";var Xqe=zf(),{isPrimitive:Zqe,hasColor:$qe}=Xi(),yne=class extends Xqe{constructor(e){super(e);this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:i}=this;return i.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return Zqe(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return $qe(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=this.styles.muted(this.default),a=[i,s,o,n].filter(Boolean).join(" ");this.state.prompt=a;let l=await this.header(),c=this.value=this.cast(e),u=await this.format(c),g=await this.error()||await this.hint(),f=await this.footer();g&&!a.includes(g)&&(u+=" "+g),a+=" "+u,this.clear(r),this.write([l,a,f].filter(Boolean).join(` +`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};Ine.exports=yne});var bne=w((qpt,wne)=>{"use strict";var eJe=Z0(),Bne=class extends eJe{constructor(e){super(e);this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};wne.exports=Bne});var Sne=w((Jpt,Qne)=>{"use strict";var tJe=kl(),rJe=X0(),_f=rJe.prototype,vne=class extends tJe{constructor(e){super(te(N({},e),{multiple:!0}));this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():_f.dispatch.call(this,e,r)}append(e,r){return _f.append.call(this,e,r)}delete(e,r){return _f.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?_f.next.call(this):super.next()}prev(){return this.focused.editable?_f.prev.call(this):super.prev()}async indicator(e,r){let i=e.indicator||"",n=e.editable?i:super.indicator(e,r);return await this.resolve(n,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?_f.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let i=r.parent?this.value[r.parent.name]:this.value;if(r.editable?i=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(i=r.enabled===!0),e=await r.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};Qne.exports=vne});var Eu=w((Wpt,kne)=>{"use strict";var iJe=zf(),nJe=IN(),{isPrimitive:sJe}=Xi(),xne=class extends iJe{constructor(e){super(e);this.initial=sJe(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let i=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!i||i.name!=="return")?this.append(` +`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:i}=this.state;this.input=`${i}`.slice(0,r)+e+`${i}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),i=this.input.slice(e),n=r.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):nJe(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),i=await this.separator(),n=await this.message(),s=[r,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(` +`)),this.restore()}};kne.exports=xne});var Dne=w((zpt,Pne)=>{"use strict";var oJe=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),$0=t=>oJe(t).filter(Boolean);Pne.exports=(t,e={},r="")=>{let{past:i=[],present:n=""}=e,s,o;switch(t){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:$0([r,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:$0([...s,r]),present:o};case"save":return{past:$0([...i,r]),present:""};case"remove":return o=$0(i.filter(a=>a!==r)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${t}"`)}}});var wN=w((_pt,Rne)=>{"use strict";var aJe=Eu(),Fne=Dne(),Nne=class extends aJe{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let i=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=Fne(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=Fne("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};Rne.exports=Nne});var One=w((Vpt,Lne)=>{"use strict";var AJe=Eu(),Tne=class extends AJe{format(){return""}};Lne.exports=Tne});var Kne=w((Xpt,Mne)=>{"use strict";var lJe=Eu(),Une=class extends lJe{constructor(e={}){super(e);this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};Mne.exports=Une});var Gne=w((Zpt,Hne)=>{"use strict";var cJe=kl(),jne=class extends cJe{constructor(e){super(te(N({},e),{multiple:!0}))}};Hne.exports=jne});var BN=w(($pt,Yne)=>{"use strict";var uJe=Eu(),qne=class extends uJe{constructor(e={}){super(N({style:"number"},e));this.min=this.isValue(e.min)?this.toNumber(e.min):-Infinity,this.max=this.isValue(e.max)?this.toNumber(e.max):Infinity,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,i=this.toNumber(this.input);return i>this.max+r?this.alert():(this.input=`${i+r}`,this.render())}down(e){let r=e||this.minor,i=this.toNumber(this.input);return ithis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};Yne.exports=qne});var Wne=w((edt,Jne)=>{Jne.exports=BN()});var Vne=w((tdt,zne)=>{"use strict";var gJe=Eu(),_ne=class extends gJe{constructor(e){super(e);this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};zne.exports=_ne});var ese=w((rdt,Xne)=>{"use strict";var fJe=Co(),hJe=XC(),Zne=Xi(),$ne=class extends hJe{constructor(e={}){super(e);this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` + `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let i=0;i=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){if(this.scaleKey===!1||this.state.submitted)return"";let e=this.scale.map(i=>` ${i.name} - ${i.message}`);return["",...e].map(i=>this.styles.muted(i)).join(` +`)}renderScaleHeading(e){let r=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-r.join("").length,n=Math.round(i/(r.length-1)),o=r.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,r,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,i);let n=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let i=e.scale.map(s=>this.scaleIndicator(e,s,r)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await e.hint;s&&!Zne.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,r),u=await this.renderScale(e,r),g=this.margin[1]+this.margin[3];this.scaleLength=fJe.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=Zne.wordWrap(c,{width:this.widths[0],newline:a}).split(` +`).map(p=>o(p)+this.margin[1]);return i&&(u=this.styles.info(u),h=h.map(p=>this.styles.info(p))),h[0]+=u,this.linebreak&&h.push(""),[l+n,h.join(` +`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(n,s)=>await this.renderChoice(n,s)),r=await Promise.all(e),i=await this.renderScaleHeading();return this.margin[0]+[i,...r.map(n=>n.join(" "))].join(` +`)}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o="";this.options.promptLine!==!1&&(o=[i,s,n,""].join(" "),this.state.prompt=o);let a=await this.header(),l=await this.format(),c=await this.renderScaleKey(),u=await this.error()||await this.hint(),g=await this.renderChoices(),f=await this.footer(),h=this.emptyError;l&&(o+=l),u&&!o.includes(u)&&(o+=" "+u),e&&!l&&!g.trim()&&this.multiple&&h!=null&&(o+=this.styles.danger(h)),this.clear(r),this.write([a,o,c,g,f].filter(Boolean).join(` +`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};Xne.exports=$ne});var nse=w((idt,tse)=>{"use strict";var rse=Co(),pJe=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",ise=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=pJe(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},dJe=async(t={},e={},r=i=>i)=>{let i=new Set,n=t.fields||[],s=t.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});uM.name===Q.key);Q.field=n.find(M=>M.name===Q.key),x||(x=new ise(Q),a.push(x)),x.lines.push(Q.line-1);continue}let m=o[o.length-1];m.type==="text"&&m.line===c?m.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};tse.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),i=N(N({},e.values),e.initial),{tabstops:n,items:s,keys:o}=await dJe(e,i),a=bN("result",t,e),l=bN("format",t,e),c=bN("validate",t,e,!0),u=t.isValue.bind(t);return async(g={},f=!1)=>{let h=0;g.required=r,g.items=s,g.keys=o,g.output="";let p=async(S,x,M,Y)=>{let U=await c(S,x,M,Y);return U===!1?"Invalid field "+M.name:U};for(let S of n){let x=S.value,M=S.key;if(S.type!=="template"){x&&(g.output+=x);continue}if(S.type==="template"){let Y=s.find(Z=>Z.name===M);e.required===!0&&g.required.add(Y.name);let U=[Y.input,g.values[Y.value],Y.value,x].find(u),W=(Y.field||{}).message||S.inner;if(f){let Z=await p(g.values[M],g,Y,h);if(Z&&typeof Z=="string"||Z===!1){g.invalid.set(M,Z);continue}g.invalid.delete(M);let A=await a(g.values[M],g,Y,h);g.output+=rse.unstyle(A);continue}Y.placeholder=!1;let ee=x;x=await l(x,g,Y,h),U!==x?(g.values[M]=U,x=t.styles.typing(U),g.missing.delete(W)):(g.values[M]=void 0,U=`<${W}>`,x=t.styles.primary(U),Y.placeholder=!0,g.required.has(M)&&g.missing.add(W)),g.missing.has(W)&&g.validating&&(x=t.styles.warning(U)),g.invalid.has(M)&&g.validating&&(x=t.styles.danger(U)),h===g.index&&(ee!==x?x=t.styles.underline(x):x=t.styles.heading(rse.unstyle(x))),h++}x&&(g.output+=x)}let m=g.output.split(` +`).map(S=>" "+S),y=s.length,Q=0;for(let S of s)g.invalid.has(S.name)&&S.lines.forEach(x=>{m[x][0]===" "&&(m[x]=g.styles.danger(g.symbols.bullet)+m[x].slice(1))}),t.isValue(g.values[S.name])&&Q++;return g.completed=(Q/y*100).toFixed(0),g.output=m.join(` +`),g.output}};function bN(t,e,r,i){return(n,s,o,a)=>typeof o.field[t]=="function"?o.field[t].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var ase=w((ndt,sse)=>{"use strict";var CJe=Co(),mJe=nse(),EJe=zf(),ose=class extends EJe{constructor(e){super(e);this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await mJe(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:i,size:n}=this.state,s=[this.options.newline,` +`].find(S=>S!=null),o=await this.prefix(),a=await this.separator(),l=await this.message(),c=[o,l,a].filter(Boolean).join(" ");this.state.prompt=c;let u=await this.header(),g=await this.error()||"",f=await this.hint()||"",h=i?"":await this.interpolate(this.state),p=this.state.key=r[e]||"",m=await this.format(p),y=await this.footer();m&&(c+=" "+m),f&&!m&&this.state.completed===0&&(c+=" "+f),this.clear(n);let Q=[u,c,h,y,g.trim()];this.write(Q.filter(Boolean).join(s)),this.restore()}getItem(e){let{items:r,keys:i,index:n}=this.state,s=r.find(o=>o.name===i[n]);return s&&s.input!=null&&(this.input=s.input,this.cursor=s.cursor),s}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:i,values:n}=this.state;if(e.size){let a="";for(let[l,c]of e)a+=`Invalid ${l}: ${c} +`;return this.state.error=a,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let o=CJe.unstyle(i).split(` +`).map(a=>a.slice(1)).join(` +`);return this.value={values:n,result:o},super.submit()}};sse.exports=ose});var cse=w((sdt,Ase)=>{"use strict";var IJe="(Use + to sort)",yJe=kl(),lse=class extends yJe{constructor(e){super(te(N({},e),{reorder:!1,sort:!0,multiple:!0}));this.state.hint=[this.options.hint,IJe].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let i=await super.renderChoice(e,r),n=this.symbols.identicalTo+" ",s=this.index===r&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${r+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Ase.exports=lse});var fse=w((odt,use)=>{"use strict";var wJe=XC(),gse=class extends wJe{constructor(e={}){super(e);if(this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(i=>this.styles.muted(i)),this.state.header=r.join(` + `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let i of r)i.scale=BJe(5,this.options),i.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],i=r.selected;return e.scale.forEach(n=>n.selected=!1),r.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=x=>(x?this.styles.success("\u25C9"):"\u25EF")+o,u=r+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,r),h=this.indent(e),p=h+e.scale.map((x,M)=>c(M===e.scaleIdx)).join(a),m=x=>x===e.scaleIdx?g(x):x,y=h+e.scale.map((x,M)=>m(M)).join(l),Q=()=>[u,f].filter(Boolean).join(" "),S=()=>[Q(),p,y," "].filter(Boolean).join(` +`);return i&&(p=this.styles.cyan(p),y=this.styles.cyan(y)),S()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(i,n)=>await this.renderChoice(i,n)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` +`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=[i,s,n].filter(Boolean).join(" ");this.state.prompt=o;let a=await this.header(),l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();(l||!c)&&(o+=" "+l),c&&!o.includes(c)&&(o+=" "+c),e&&!l&&!u&&this.multiple&&this.type!=="form"&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([o,a,u,g].filter(Boolean).join(` +`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function BJe(t,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>N({},i));let r=[];for(let i=1;i{hse.exports=wN()});var mse=w((Adt,dse)=>{"use strict";var bJe=Z0(),Cse=class extends bJe{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([r,c,l].filter(Boolean).join(` +`)),this.write(this.margin[2]),this.restore()}};dse.exports=Cse});var yse=w((ldt,Ese)=>{"use strict";var QJe=kl(),Ise=class extends QJe{constructor(e){super(e);if(typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let i=await super.toChoices(e,r);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Ese.exports=Ise});var Bse=w(QN=>{"use strict";var wse=Xi(),Ci=(t,e)=>{wse.defineExport(QN,t,e),wse.defineExport(QN,t.toLowerCase(),e)};Ci("AutoComplete",()=>une());Ci("BasicAuth",()=>Ene());Ci("Confirm",()=>bne());Ci("Editable",()=>Sne());Ci("Form",()=>X0());Ci("Input",()=>wN());Ci("Invisible",()=>One());Ci("List",()=>Kne());Ci("MultiSelect",()=>Gne());Ci("Numeral",()=>Wne());Ci("Password",()=>Vne());Ci("Scale",()=>ese());Ci("Select",()=>kl());Ci("Snippet",()=>ase());Ci("Sort",()=>cse());Ci("Survey",()=>fse());Ci("Text",()=>pse());Ci("Toggle",()=>mse());Ci("Quiz",()=>yse())});var Qse=w((udt,bse)=>{bse.exports={ArrayPrompt:XC(),AuthPrompt:yN(),BooleanPrompt:Z0(),NumberPrompt:BN(),StringPrompt:Eu()}});var $C=w((gdt,vse)=>{"use strict";var Sse=require("assert"),vN=require("events"),xl=Xi(),ua=class extends vN{constructor(e,r){super();this.options=xl.merge({},e),this.answers=N({},r)}register(e,r){if(xl.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}Sse.equal(typeof r,"function","expected a function");let i=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[i]=r:this.prompts[i]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(xl.merge({},this.options,r))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=xl.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=xl;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];Sse(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](r),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),r.autofill&&l!=null?(a.value=a.input=l,r.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||zf()}static get prompts(){return Bse()}static get types(){return Qse()}static get prompt(){let e=(r,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(r)};return xl.mixinEmitter(e,new vN),e}};xl.mixinEmitter(ua,new vN);var SN=ua.prompts;for(let t of Object.keys(SN)){let e=t.toLowerCase(),r=i=>new SN[t](i).run();ua.prompt[e]=r,ua[e]=r,ua[t]||Reflect.defineProperty(ua,t,{get:()=>SN[t]})}var ZC=t=>{xl.defineExport(ua,t,()=>ua.types[t])};ZC("ArrayPrompt");ZC("AuthPrompt");ZC("BooleanPrompt");ZC("NumberPrompt");ZC("StringPrompt");vse.exports=ua});var Kse=w((tCt,Use)=>{function PJe(t,e){for(var r=-1,i=t==null?0:t.length;++r{var DJe=c0(),RJe=Ff();function FJe(t,e,r,i){var n=!r;r||(r={});for(var s=-1,o=e.length;++s{var NJe=Xf(),LJe=Mf();function TJe(t,e){return t&&NJe(e,LJe(e),t)}jse.exports=TJe});var qse=w((nCt,Yse)=>{function OJe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}Yse.exports=OJe});var Wse=w((sCt,Jse)=>{var MJe=Rn(),UJe=b0(),KJe=qse(),HJe=Object.prototype,jJe=HJe.hasOwnProperty;function GJe(t){if(!MJe(t))return KJe(t);var e=UJe(t),r=[];for(var i in t)i=="constructor"&&(e||!jJe.call(t,i))||r.push(i);return r}Jse.exports=GJe});var Zf=w((oCt,zse)=>{var YJe=mF(),qJe=Wse(),JJe=FC();function WJe(t){return JJe(t)?YJe(t,!0):qJe(t)}zse.exports=WJe});var Vse=w((aCt,_se)=>{var zJe=Xf(),_Je=Zf();function VJe(t,e){return t&&zJe(e,_Je(e),t)}_se.exports=VJe});var FN=w((om,$f)=>{var XJe=Rs(),Xse=typeof om=="object"&&om&&!om.nodeType&&om,Zse=Xse&&typeof $f=="object"&&$f&&!$f.nodeType&&$f,ZJe=Zse&&Zse.exports===Xse,$se=ZJe?XJe.Buffer:void 0,eoe=$se?$se.allocUnsafe:void 0;function $Je(t,e){if(e)return t.slice();var r=t.length,i=eoe?eoe(r):new t.constructor(r);return t.copy(i),i}$f.exports=$Je});var NN=w((ACt,toe)=>{function e3e(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{var t3e=Xf(),r3e=v0();function i3e(t,e){return t3e(t,r3e(t),e)}roe.exports=i3e});var eb=w((cCt,noe)=>{var n3e=EF(),s3e=n3e(Object.getPrototypeOf,Object);noe.exports=s3e});var LN=w((uCt,soe)=>{var o3e=g0(),a3e=eb(),A3e=v0(),l3e=QF(),c3e=Object.getOwnPropertySymbols,u3e=c3e?function(t){for(var e=[];t;)o3e(e,A3e(t)),t=a3e(t);return e}:l3e;soe.exports=u3e});var aoe=w((gCt,ooe)=>{var g3e=Xf(),f3e=LN();function h3e(t,e){return g3e(t,f3e(t),e)}ooe.exports=h3e});var loe=w((fCt,Aoe)=>{var p3e=bF(),d3e=LN(),C3e=Zf();function m3e(t){return p3e(t,C3e,d3e)}Aoe.exports=m3e});var uoe=w((hCt,coe)=>{var E3e=Object.prototype,I3e=E3e.hasOwnProperty;function y3e(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&I3e.call(t,"index")&&(r.index=t.index,r.input=t.input),r}coe.exports=y3e});var tb=w((pCt,goe)=>{var foe=wF();function w3e(t){var e=new t.constructor(t.byteLength);return new foe(e).set(new foe(t)),e}goe.exports=w3e});var poe=w((dCt,hoe)=>{var B3e=tb();function b3e(t,e){var r=e?B3e(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}hoe.exports=b3e});var Coe=w((CCt,doe)=>{var Q3e=/\w*$/;function v3e(t){var e=new t.constructor(t.source,Q3e.exec(t));return e.lastIndex=t.lastIndex,e}doe.exports=v3e});var woe=w((mCt,moe)=>{var Eoe=Kc(),Ioe=Eoe?Eoe.prototype:void 0,yoe=Ioe?Ioe.valueOf:void 0;function S3e(t){return yoe?Object(yoe.call(t)):{}}moe.exports=S3e});var TN=w((ECt,Boe)=>{var k3e=tb();function x3e(t,e){var r=e?k3e(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Boe.exports=x3e});var Qoe=w((ICt,boe)=>{var P3e=tb(),D3e=poe(),R3e=Coe(),F3e=woe(),N3e=TN(),L3e="[object Boolean]",T3e="[object Date]",O3e="[object Map]",M3e="[object Number]",U3e="[object RegExp]",K3e="[object Set]",H3e="[object String]",j3e="[object Symbol]",G3e="[object ArrayBuffer]",Y3e="[object DataView]",q3e="[object Float32Array]",J3e="[object Float64Array]",W3e="[object Int8Array]",z3e="[object Int16Array]",_3e="[object Int32Array]",V3e="[object Uint8Array]",X3e="[object Uint8ClampedArray]",Z3e="[object Uint16Array]",$3e="[object Uint32Array]";function eWe(t,e,r){var i=t.constructor;switch(e){case G3e:return P3e(t);case L3e:case T3e:return new i(+t);case Y3e:return D3e(t,r);case q3e:case J3e:case W3e:case z3e:case _3e:case V3e:case X3e:case Z3e:case $3e:return N3e(t,r);case O3e:return new i;case M3e:case H3e:return new i(t);case U3e:return R3e(t);case K3e:return new i;case j3e:return F3e(t)}}boe.exports=eWe});var koe=w((yCt,voe)=>{var tWe=Rn(),Soe=Object.create,rWe=function(){function t(){}return function(e){if(!tWe(e))return{};if(Soe)return Soe(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();voe.exports=rWe});var ON=w((wCt,xoe)=>{var iWe=koe(),nWe=eb(),sWe=b0();function oWe(t){return typeof t.constructor=="function"&&!sWe(t)?iWe(nWe(t)):{}}xoe.exports=oWe});var Doe=w((BCt,Poe)=>{var aWe=LC(),AWe=Zo(),lWe="[object Map]";function cWe(t){return AWe(t)&&aWe(t)==lWe}Poe.exports=cWe});var Loe=w((bCt,Roe)=>{var uWe=Doe(),gWe=y0(),Foe=w0(),Noe=Foe&&Foe.isMap,fWe=Noe?gWe(Noe):uWe;Roe.exports=fWe});var Ooe=w((QCt,Toe)=>{var hWe=LC(),pWe=Zo(),dWe="[object Set]";function CWe(t){return pWe(t)&&hWe(t)==dWe}Toe.exports=CWe});var Hoe=w((vCt,Moe)=>{var mWe=Ooe(),EWe=y0(),Uoe=w0(),Koe=Uoe&&Uoe.isSet,IWe=Koe?EWe(Koe):mWe;Moe.exports=IWe});var Joe=w((SCt,joe)=>{var yWe=NC(),wWe=Kse(),BWe=c0(),bWe=Gse(),QWe=Vse(),vWe=FN(),SWe=NN(),kWe=ioe(),xWe=aoe(),PWe=vF(),DWe=loe(),RWe=LC(),FWe=uoe(),NWe=Qoe(),LWe=ON(),TWe=Os(),OWe=PC(),MWe=Loe(),UWe=Rn(),KWe=Hoe(),HWe=Mf(),jWe=Zf(),GWe=1,YWe=2,qWe=4,Goe="[object Arguments]",JWe="[object Array]",WWe="[object Boolean]",zWe="[object Date]",_We="[object Error]",Yoe="[object Function]",VWe="[object GeneratorFunction]",XWe="[object Map]",ZWe="[object Number]",qoe="[object Object]",$We="[object RegExp]",e8e="[object Set]",t8e="[object String]",r8e="[object Symbol]",i8e="[object WeakMap]",n8e="[object ArrayBuffer]",s8e="[object DataView]",o8e="[object Float32Array]",a8e="[object Float64Array]",A8e="[object Int8Array]",l8e="[object Int16Array]",c8e="[object Int32Array]",u8e="[object Uint8Array]",g8e="[object Uint8ClampedArray]",f8e="[object Uint16Array]",h8e="[object Uint32Array]",dr={};dr[Goe]=dr[JWe]=dr[n8e]=dr[s8e]=dr[WWe]=dr[zWe]=dr[o8e]=dr[a8e]=dr[A8e]=dr[l8e]=dr[c8e]=dr[XWe]=dr[ZWe]=dr[qoe]=dr[$We]=dr[e8e]=dr[t8e]=dr[r8e]=dr[u8e]=dr[g8e]=dr[f8e]=dr[h8e]=!0;dr[_We]=dr[Yoe]=dr[i8e]=!1;function rb(t,e,r,i,n,s){var o,a=e&GWe,l=e&YWe,c=e&qWe;if(r&&(o=n?r(t,i,n,s):r(t)),o!==void 0)return o;if(!UWe(t))return t;var u=TWe(t);if(u){if(o=FWe(t),!a)return SWe(t,o)}else{var g=RWe(t),f=g==Yoe||g==VWe;if(OWe(t))return vWe(t,a);if(g==qoe||g==Goe||f&&!n){if(o=l||f?{}:LWe(t),!a)return l?xWe(t,QWe(o,t)):kWe(t,bWe(o,t))}else{if(!dr[g])return n?t:{};o=NWe(t,g,a)}}s||(s=new yWe);var h=s.get(t);if(h)return h;s.set(t,o),KWe(t)?t.forEach(function(y){o.add(rb(y,e,r,y,t,s))}):MWe(t)&&t.forEach(function(y,Q){o.set(Q,rb(y,e,r,Q,t,s))});var p=c?l?DWe:PWe:l?jWe:HWe,m=u?void 0:p(t);return wWe(m||t,function(y,Q){m&&(Q=y,y=t[Q]),BWe(o,Q,rb(y,e,r,Q,t,s))}),o}joe.exports=rb});var MN=w((kCt,Woe)=>{var p8e=Joe(),d8e=1,C8e=4;function m8e(t){return p8e(t,d8e|C8e)}Woe.exports=m8e});var _oe=w((xCt,zoe)=>{var E8e=zR();function I8e(t,e,r){return t==null?t:E8e(t,e,r)}zoe.exports=I8e});var tae=w((LCt,eae)=>{function y8e(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}eae.exports=y8e});var iae=w((TCt,rae)=>{var w8e=IC(),B8e=sD();function b8e(t,e){return e.length<2?t:w8e(t,B8e(e,0,-1))}rae.exports=b8e});var sae=w((OCt,nae)=>{var Q8e=Rf(),v8e=tae(),S8e=iae(),k8e=lu();function x8e(t,e){return e=Q8e(e,t),t=S8e(t,e),t==null||delete t[k8e(v8e(e))]}nae.exports=x8e});var aae=w((MCt,oae)=>{var P8e=sae();function D8e(t,e){return t==null?!0:P8e(t,e)}oae.exports=D8e});var dae=w((hmt,pae)=>{pae.exports={name:"@yarnpkg/cli",version:"3.2.0",license:"BSD-2-Clause",main:"./sources/index.ts",dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/shell":"workspace:^",chalk:"^3.0.0","ci-info":"^3.2.0",clipanion:"^3.2.0-rc.4",semver:"^7.1.2",tslib:"^1.13.0",typanion:"^3.3.0",yup:"^0.32.9"},devDependencies:{"@types/semver":"^7.1.0","@types/yup":"^0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",types:"./lib/index.d.ts",bin:null},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=12 <14 || 14.2 - 14.9 || >14.10.0"}}});var VN=w((Jyt,rAe)=>{"use strict";rAe.exports=function(e,r){r===!0&&(r=0);var i=e.indexOf("://"),n=e.substring(0,i).split("+").filter(Boolean);return typeof r=="number"?n[r]:n}});var XN=w((Wyt,iAe)=>{"use strict";var Z8e=VN();function nAe(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=Z8e(t);return t=t.substring(t.indexOf("://")+3),nAe(e)?!0:t.indexOf("@"){"use strict";var $8e=VN(),eze=XN(),tze=require("querystring");function rze(t){t=(t||"").trim();var e={protocols:$8e(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),i=-1,n=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(eze(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split("/"),e.protocol!=="file"?e.resource=s.shift():e.resource="",n=e.resource.split("@"),n.length===2&&(e.user=n[0],e.resource=n[1]),n=e.resource.split(":"),n.length===2&&(e.resource=n[0],n[1]?(e.port=Number(n[1]),isNaN(e.port)&&(e.port=null,s.unshift(n[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),n=e.pathname.split("#"),n.length===2&&(e.pathname=n[0],e.hash=n[1]),n=e.pathname.split("?"),n.length===2&&(e.pathname=n[0],e.search=n[1]),e.query=tze.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}sAe.exports=rze});var lAe=w((_yt,aAe)=>{"use strict";var ize="text/plain",nze="us-ascii",AAe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),sze=(t,{stripHash:e})=>{let r=/^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:i,data:n,hash:s}=r.groups,o=i.split(";");s=e?"":s;let a=!1;o[o.length-1]==="base64"&&(o.pop(),a=!0);let l=(o.shift()||"").toLowerCase(),u=[...o.map(g=>{let[f,h=""]=g.split("=").map(p=>p.trim());return f==="charset"&&(h=h.toLowerCase(),h===nze)?"":`${f}${h?`=${h}`:""}`}).filter(Boolean)];return a&&u.push("base64"),(u.length!==0||l&&l!==ize)&&u.unshift(l),`data:${u.join(";")},${a?n.trim():n}${s?`#${s}`:""}`},oze=(t,e)=>{if(e=N({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),t=t.trim(),/^data:/i.test(t))return sze(t,e);if(/^view-source:/i.test(t))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash?n.hash="":e.stripTextFragment&&(n.hash=n.hash.replace(/#?:~:text.*?$/i,"")),n.pathname&&(n.pathname=n.pathname.replace(/(?0){let o=n.pathname.split("/"),a=o[o.length-1];AAe(a,e.removeDirectoryIndex)&&(o=o.slice(0,o.length-1),n.pathname=o.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)(?:[a-z\-\d]{1,63})\.(?:[a-z.\-\d]{2,63})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let o of[...n.searchParams.keys()])AAe(o,e.removeQueryParameters)&&n.searchParams.delete(o);e.removeQueryParameters===!0&&(n.search=""),e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,""));let s=t;return t=n.toString(),!e.removeSingleSlash&&n.pathname==="/"&&!s.endsWith("/")&&n.hash===""&&(t=t.replace(/\/$/,"")),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&e.removeSingleSlash&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};aAe.exports=oze});var uAe=w((Vyt,cAe)=>{"use strict";var aze=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Aze=oAe(),lze=lAe();function cze(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":aze(e))!=="object"&&(e={stripHash:!1}),t=lze(t,e));var r=Aze(t);return r}cAe.exports=cze});var hAe=w((Xyt,gAe)=>{"use strict";var uze=uAe(),fAe=XN();function gze(t){var e=uze(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),fAe(e.protocols)||fAe(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}gAe.exports=gze});var dAe=w((Zyt,pAe)=>{"use strict";var fze=hAe();function ZN(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=fze(t),r=e.resource.split("."),i=null;switch(e.toString=function(l){return ZN.stringify(this,l)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}else{i=e.name.split("/"),i.length===2?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}else{i=e.name.split("/"),i.length===5?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}default:i=e.name.split("/");var n=i.length-1;if(i.length>=2){var s=i.indexOf("blob",2),o=i.indexOf("tree",2),a=i.indexOf("commit",2);n=s>0?s-1:o>0?o-1:a>0?a-1:n,e.owner=i.slice(0,n).join("/"),e.name=i[n],a&&(e.commit=i[n+2])}e.ref="",e.filepathtype="",e.filepath="",i.length>n+2&&["blob","tree"].indexOf(i[n+1])>=0&&(e.filepathtype=i[n+1],e.ref=i[n+2],i.length>n+3&&(e.filepath=i.slice(n+3).join("/"))),e.organization=e.owner;break}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}ZN.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",i=t.user||"git",n=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+i+"@"+t.resource+r+"/"+t.full_name+n:i+"@"+t.resource+":"+t.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+t.resource+r+"/"+t.full_name+n;case"http":case"https":var s=t.token?hze(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+t.full_name+n;default:return t.href}};function hze(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}pAe.exports=ZN});var kL=w((nbt,UAe)=>{var Fze=Ff(),Nze=xf();function Lze(t,e,r){(r!==void 0&&!Nze(t[e],r)||r===void 0&&!(e in t))&&Fze(t,e,r)}UAe.exports=Lze});var HAe=w((sbt,KAe)=>{var Tze=FC(),Oze=Zo();function Mze(t){return Oze(t)&&Tze(t)}KAe.exports=Mze});var YAe=w((obt,jAe)=>{var Uze=Hc(),Kze=eb(),Hze=Zo(),jze="[object Object]",Gze=Function.prototype,Yze=Object.prototype,GAe=Gze.toString,qze=Yze.hasOwnProperty,Jze=GAe.call(Object);function Wze(t){if(!Hze(t)||Uze(t)!=jze)return!1;var e=Kze(t);if(e===null)return!0;var r=qze.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&GAe.call(r)==Jze}jAe.exports=Wze});var xL=w((abt,qAe)=>{function zze(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}qAe.exports=zze});var WAe=w((Abt,JAe)=>{var _ze=Xf(),Vze=Zf();function Xze(t){return _ze(t,Vze(t))}JAe.exports=Xze});var $Ae=w((lbt,zAe)=>{var _Ae=kL(),Zze=FN(),$ze=TN(),e4e=NN(),t4e=ON(),VAe=wC(),XAe=Os(),r4e=HAe(),i4e=PC(),n4e=a0(),s4e=Rn(),o4e=YAe(),a4e=B0(),ZAe=xL(),A4e=WAe();function l4e(t,e,r,i,n,s,o){var a=ZAe(t,r),l=ZAe(e,r),c=o.get(l);if(c){_Ae(t,r,c);return}var u=s?s(a,l,r+"",t,e,o):void 0,g=u===void 0;if(g){var f=XAe(l),h=!f&&i4e(l),p=!f&&!h&&a4e(l);u=l,f||h||p?XAe(a)?u=a:r4e(a)?u=e4e(a):h?(g=!1,u=Zze(l,!0)):p?(g=!1,u=$ze(l,!0)):u=[]:o4e(l)||VAe(l)?(u=a,VAe(a)?u=A4e(a):(!s4e(a)||n4e(a))&&(u=t4e(l))):g=!1}g&&(o.set(l,u),n(u,l,i,s,o),o.delete(l)),_Ae(t,r,u)}zAe.exports=l4e});var rle=w((cbt,ele)=>{var c4e=NC(),u4e=kL(),g4e=dF(),f4e=$Ae(),h4e=Rn(),p4e=Zf(),d4e=xL();function tle(t,e,r,i,n){t!==e&&g4e(e,function(s,o){if(n||(n=new c4e),h4e(s))f4e(t,e,o,r,tle,i,n);else{var a=i?i(d4e(t,o),s,o+"",t,e,n):void 0;a===void 0&&(a=s),u4e(t,o,a)}},p4e)}ele.exports=tle});var nle=w((ubt,ile)=>{var C4e=f0(),m4e=XR(),E4e=ZR();function I4e(t,e){return E4e(m4e(t,e,C4e),t+"")}ile.exports=I4e});var ole=w((gbt,sle)=>{var y4e=xf(),w4e=FC(),B4e=yC(),b4e=Rn();function Q4e(t,e,r){if(!b4e(r))return!1;var i=typeof e;return(i=="number"?w4e(r)&&B4e(e,r.length):i=="string"&&e in r)?y4e(r[e],t):!1}sle.exports=Q4e});var Ale=w((fbt,ale)=>{var v4e=nle(),S4e=ole();function k4e(t){return v4e(function(e,r){var i=-1,n=r.length,s=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(s=t.length>3&&typeof s=="function"?(n--,s):void 0,o&&S4e(r[0],r[1],o)&&(s=n<3?void 0:s,n=1),e=Object(e);++i{var x4e=rle(),P4e=Ale(),D4e=P4e(function(t,e,r){x4e(t,e,r)});lle.exports=D4e});var vle=w((EQt,Qle)=>{var GL;Qle.exports=()=>(typeof GL=="undefined"&&(GL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),GL)});var Rle=w(qL=>{function nh(t,e){if(typeof t=="string")return t;if(t){let r,i;if(Array.isArray(t)){for(r=0;r0)return(f=nh(n[g],u))?f.replace("*",c.substring(g.length-1)):bu(i,c,1)}return bu(i,c)}}function o_e(t,e={}){let r=0,i,n=e.browser,s=e.fields||["module","main"];for(n&&!s.includes("browser")&&s.unshift("browser");r{var zL;Mle.exports=()=>(typeof zL=="undefined"&&(zL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),zL)});var Wle=w((tT,rT)=>{(function(t){tT&&typeof tT=="object"&&typeof rT!="undefined"?rT.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window!="undefined"?window.isWindows=t():typeof global!="undefined"?global.isWindows=t():typeof self!="undefined"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var Xle=w((iSt,zle)=>{"use strict";iT.ifExists=E_e;var oh=require("util"),Js=require("path"),_le=Wle(),I_e=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,y_e={createPwshFile:!0,createCmdFile:_le(),fs:require("fs")},w_e=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function Vle(t){let e=N(N({},y_e),t),r=e.fs;return e.fs_={chmod:r.chmod?oh.promisify(r.chmod):async()=>{},mkdir:oh.promisify(r.mkdir),readFile:oh.promisify(r.readFile),stat:oh.promisify(r.stat),unlink:oh.promisify(r.unlink),writeFile:oh.promisify(r.writeFile)},e}async function iT(t,e,r){let i=Vle(r);await i.fs_.stat(t),await B_e(t,e,i)}function E_e(t,e,r){return iT(t,e,r).catch(()=>{})}function b_e(t,e){return e.fs_.unlink(t).catch(()=>{})}async function B_e(t,e,r){let i=await S_e(t,r);return await Q_e(e,r),v_e(t,e,i,r)}function Q_e(t,e){return e.fs_.mkdir(Js.dirname(t),{recursive:!0})}function v_e(t,e,r,i){let n=Vle(i),s=[{generator:P_e,extension:""}];return n.createCmdFile&&s.push({generator:x_e,extension:".cmd"}),n.createPwshFile&&s.push({generator:D_e,extension:".ps1"}),Promise.all(s.map(o=>k_e(t,e+o.extension,r,o.generator,n)))}function R_e(t,e){return b_e(t,e)}function N_e(t,e){return F_e(t,e)}async function S_e(t,e){let n=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(I_e);if(!n){let s=Js.extname(t).toLowerCase();return{program:w_e.get(s)||null,additionalArgs:""}}return{program:n[1],additionalArgs:n[2]}}async function k_e(t,e,r,i,n){let s=n.preserveSymlinks?"--preserve-symlinks":"",o=[r.additionalArgs,s].filter(a=>a).join(" ");return n=Object.assign({},n,{prog:r.program,args:o}),await R_e(e,n),await n.fs_.writeFile(e,i(t,e,n),"utf8"),N_e(e,n)}function x_e(t,e,r){let n=Js.relative(Js.dirname(e),t).split("/").join("\\"),s=Js.isAbsolute(n)?`"${n}"`:`"%~dp0\\${n}"`,o,a=r.prog,l=r.args||"",c=nT(r.nodePath).win32;a?(o=`"%~dp0\\${a}.exe"`,n=s):(a=s,l="",n="");let u=r.progArgs?`${r.progArgs.join(" ")} `:"",g=c?`@SET NODE_PATH=${c}\r +`:"";return o?g+=`@IF EXIST ${o} (\r + ${o} ${l} ${n} ${u}%*\r +) ELSE (\r + @SETLOCAL\r + @SET PATHEXT=%PATHEXT:;.JS;=;%\r + ${a} ${l} ${n} ${u}%*\r +)\r +`:g+=`@${a} ${l} ${n} ${u}%*\r +`,g}function P_e(t,e,r){let i=Js.relative(Js.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=Js.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=r.args||"",l=nT(r.nodePath).posix;n?(s=`"$basedir/${r.prog}"`,i=o):(n=o,a="",i="");let c=r.progArgs?`${r.progArgs.join(" ")} `:"",u=`#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") + +case \`uname\` in + *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; +esac + +`,g=r.nodePath?`export NODE_PATH="${l}" +`:"";return s?u+=`${g}if [ -x ${s} ]; then + exec ${s} ${a} ${i} ${c}"$@" +else + exec ${n} ${a} ${i} ${c}"$@" +fi +`:u+=`${g}${n} ${a} ${i} ${c}"$@" +exit $? +`,u}function D_e(t,e,r){let i=Js.relative(Js.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=Js.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=r.args||"",c=nT(r.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${r.prog}$exe"`,i=a):(s=a,l="",i="");let f=r.progArgs?`${r.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +${r.nodePath?`$env_node_path=$env:NODE_PATH +$env:NODE_PATH="${u}" +`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +}`;return r.nodePath&&(h+=` else { + $env:NODE_PATH="${g}" +}`),o?h+=` +$ret=0 +if (Test-Path ${o}) { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${o} ${l} ${i} ${f}$args + } else { + & ${o} ${l} ${i} ${f}$args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & ${s} ${l} ${i} ${f}$args + } else { + & ${s} ${l} ${i} ${f}$args + } + $ret=$LASTEXITCODE +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $ret +`:h+=` +# Support pipeline input +if ($MyInvocation.ExpectingInput) { + $input | & ${s} ${l} ${i} ${f}$args +} else { + & ${s} ${l} ${i} ${f}$args +} +${r.nodePath?`$env:NODE_PATH=$env_node_path +`:""}exit $LASTEXITCODE +`,h}function F_e(t,e){return e.fs_.chmod(t,493)}function nT(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Js.delimiter):Array.from(t),r={};for(let i=0;i`/mnt/${a.toLowerCase()}`):e[i];r.win32=r.win32?`${r.win32};${n}`:n,r.posix=r.posix?`${r.posix}:${s}`:s,r[i]={win32:n,posix:s}}return r}zle.exports=iT});var IT=w((Ukt,Cce)=>{Cce.exports=require("stream")});var yce=w((Kkt,mce)=>{"use strict";function Ece(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function e5e(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return mb.alloc(0);for(var i=mb.allocUnsafe(r>>>0),n=this.head,s=0;n;)o5e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(a===o.length?s+=o:s+=o.slice(0,r),r-=a,r===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(r){var i=mb.allocUnsafe(r),n=this.head,s=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,a=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,a),r-=a,r===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:s5e,value:function(r,i){return yT(this,e5e({},i,{depth:0,customInspect:!1}))}}]),t}()});var BT=w((Hkt,wce)=>{"use strict";function a5e(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(wT,this,t)):process.nextTick(wT,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(s){!e&&s?r._writableState?r._writableState.errorEmitted?process.nextTick(Eb,r):(r._writableState.errorEmitted=!0,process.nextTick(Bce,r,s)):process.nextTick(Bce,r,s):e?(process.nextTick(Eb,r),e(s)):process.nextTick(Eb,r)}),this)}function Bce(t,e){wT(t,e),Eb(t)}function Eb(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function A5e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function wT(t,e){t.emit("error",e)}function l5e(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}wce.exports={destroy:a5e,undestroy:A5e,errorOrDestroy:l5e}});var Nl=w((jkt,bce)=>{"use strict";var Qce={};function Ws(t,e,r){r||(r=Error);function i(s,o,a){return typeof e=="string"?e:e(s,o,a)}class n extends r{constructor(o,a,l){super(i(o,a,l))}}n.prototype.name=r.name,n.prototype.code=t,Qce[t]=n}function vce(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(i=>String(i)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function c5e(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function u5e(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function g5e(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Ws("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Ws("ERR_INVALID_ARG_TYPE",function(t,e,r){let i;typeof e=="string"&&c5e(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";let n;if(u5e(t," argument"))n=`The ${t} ${i} ${vce(e,"type")}`;else{let s=g5e(t,".")?"property":"argument";n=`The "${t}" ${s} ${i} ${vce(e,"type")}`}return n+=`. Received type ${typeof r}`,n},TypeError);Ws("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Ws("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Ws("ERR_STREAM_PREMATURE_CLOSE","Premature close");Ws("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Ws("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Ws("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Ws("ERR_STREAM_WRITE_AFTER_END","write after end");Ws("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Ws("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Ws("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");bce.exports.codes=Qce});var bT=w((Gkt,Sce)=>{"use strict";var f5e=Nl().codes.ERR_INVALID_OPT_VALUE;function h5e(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function p5e(t,e,r,i){var n=h5e(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var s=i?r:"highWaterMark";throw new f5e(s,n)}return Math.floor(n)}return t.objectMode?16:16*1024}Sce.exports={getHighWaterMark:p5e}});var kce=w((Ykt,QT)=>{typeof Object.create=="function"?QT.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:QT.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var Ll=w((qkt,vT)=>{try{if(ST=require("util"),typeof ST.inherits!="function")throw"";vT.exports=ST.inherits}catch(t){vT.exports=kce()}var ST});var Pce=w((Jkt,xce)=>{xce.exports=require("util").deprecate});var PT=w((Wkt,Dce)=>{"use strict";Dce.exports=jr;function Rce(t){var e=this;this.next=null,this.entry=null,this.finish=function(){d5e(e,t)}}var lh;jr.WritableState=_m;var C5e={deprecate:Pce()},Fce=IT(),Ib=require("buffer").Buffer,m5e=global.Uint8Array||function(){};function E5e(t){return Ib.from(t)}function I5e(t){return Ib.isBuffer(t)||t instanceof m5e}var kT=BT(),y5e=bT(),w5e=y5e.getHighWaterMark,Tl=Nl().codes,B5e=Tl.ERR_INVALID_ARG_TYPE,b5e=Tl.ERR_METHOD_NOT_IMPLEMENTED,Q5e=Tl.ERR_MULTIPLE_CALLBACK,v5e=Tl.ERR_STREAM_CANNOT_PIPE,S5e=Tl.ERR_STREAM_DESTROYED,k5e=Tl.ERR_STREAM_NULL_VALUES,x5e=Tl.ERR_STREAM_WRITE_AFTER_END,P5e=Tl.ERR_UNKNOWN_ENCODING,ch=kT.errorOrDestroy;Ll()(jr,Fce);function D5e(){}function _m(t,e,r){lh=lh||vu(),t=t||{},typeof r!="boolean"&&(r=e instanceof lh),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=w5e(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){R5e(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Rce(this)}_m.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(_m.prototype,"buffer",{get:C5e.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}})();var yb;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(yb=Function.prototype[Symbol.hasInstance],Object.defineProperty(jr,Symbol.hasInstance,{value:function(e){return yb.call(this,e)?!0:this!==jr?!1:e&&e._writableState instanceof _m}})):yb=function(e){return e instanceof this};function jr(t){lh=lh||vu();var e=this instanceof lh;if(!e&&!yb.call(jr,this))return new jr(t);this._writableState=new _m(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),Fce.call(this)}jr.prototype.pipe=function(){ch(this,new v5e)};function F5e(t,e){var r=new x5e;ch(t,r),process.nextTick(e,r)}function N5e(t,e,r,i){var n;return r===null?n=new k5e:typeof r!="string"&&!e.objectMode&&(n=new B5e("chunk",["string","Buffer"],r)),n?(ch(t,n),process.nextTick(i,n),!1):!0}jr.prototype.write=function(t,e,r){var i=this._writableState,n=!1,s=!i.objectMode&&I5e(t);return s&&!Ib.isBuffer(t)&&(t=E5e(t)),typeof e=="function"&&(r=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=D5e),i.ending?F5e(this,r):(s||N5e(this,i,t,r))&&(i.pendingcb++,n=L5e(this,i,s,t,e,r)),n};jr.prototype.cork=function(){this._writableState.corked++};jr.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Nce(this,t))};jr.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new P5e(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(jr.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function T5e(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=Ib.from(e,r)),e}Object.defineProperty(jr.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L5e(t,e,r,i,n,s){if(!r){var o=T5e(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length{"use strict";var G5e=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};Oce.exports=pa;var Mce=DT(),RT=PT();Ll()(pa,Mce);for(FT=G5e(RT.prototype),wb=0;wb{var bb=require("buffer"),BA=bb.Buffer;function Kce(t,e){for(var r in t)e[r]=t[r]}BA.from&&BA.alloc&&BA.allocUnsafe&&BA.allocUnsafeSlow?Uce.exports=bb:(Kce(bb,NT),NT.Buffer=uh);function uh(t,e,r){return BA(t,e,r)}Kce(BA,uh);uh.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return BA(t,e,r)};uh.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=BA(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};uh.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return BA(t)};uh.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return bb.SlowBuffer(t)}});var OT=w(jce=>{"use strict";var LT=Hce().Buffer,Gce=LT.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function J5e(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function W5e(t){var e=J5e(t);if(typeof e!="string"&&(LT.isEncoding===Gce||!Gce(t)))throw new Error("Unknown encoding: "+t);return e||t}jce.StringDecoder=Xm;function Xm(t){this.encoding=W5e(t);var e;switch(this.encoding){case"utf16le":this.text=_5e,this.end=V5e,e=4;break;case"utf8":this.fillLast=z5e,e=4;break;case"base64":this.text=X5e,this.end=Z5e,e=3;break;default:this.write=$5e,this.end=e6e;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=LT.allocUnsafe(e)}Xm.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function i6e(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function n6e(t,e,r){if((e[0]&192)!=128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!=128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!=128)return t.lastNeed=2,"\uFFFD"}}function z5e(t){var e=this.lastTotal-this.lastNeed,r=n6e(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function r6e(t,e){var r=i6e(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function t6e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function _5e(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function V5e(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function X5e(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Z5e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function $5e(t){return t.toString(this.encoding)}function e6e(t){return t&&t.length?this.write(t):""}});var Qb=w((Vkt,Yce)=>{"use strict";var qce=Nl().codes.ERR_STREAM_PREMATURE_CLOSE;function s6e(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";var vb;function Ol(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var A6e=Qb(),Ml=Symbol("lastResolve"),Su=Symbol("lastReject"),Zm=Symbol("error"),Sb=Symbol("ended"),ku=Symbol("lastPromise"),MT=Symbol("handlePromise"),xu=Symbol("stream");function Ul(t,e){return{value:t,done:e}}function l6e(t){var e=t[Ml];if(e!==null){var r=t[xu].read();r!==null&&(t[ku]=null,t[Ml]=null,t[Su]=null,e(Ul(r,!1)))}}function c6e(t){process.nextTick(l6e,t)}function u6e(t,e){return function(r,i){t.then(function(){if(e[Sb]){r(Ul(void 0,!0));return}e[MT](r,i)},i)}}var g6e=Object.getPrototypeOf(function(){}),f6e=Object.setPrototypeOf((vb={get stream(){return this[xu]},next:function(){var e=this,r=this[Zm];if(r!==null)return Promise.reject(r);if(this[Sb])return Promise.resolve(Ul(void 0,!0));if(this[xu].destroyed)return new Promise(function(o,a){process.nextTick(function(){e[Zm]?a(e[Zm]):o(Ul(void 0,!0))})});var i=this[ku],n;if(i)n=new Promise(u6e(i,this));else{var s=this[xu].read();if(s!==null)return Promise.resolve(Ul(s,!1));n=new Promise(this[MT])}return this[ku]=n,n}},Ol(vb,Symbol.asyncIterator,function(){return this}),Ol(vb,"return",function(){var e=this;return new Promise(function(r,i){e[xu].destroy(null,function(n){if(n){i(n);return}r(Ul(void 0,!0))})})}),vb),g6e),h6e=function(e){var r,i=Object.create(f6e,(r={},Ol(r,xu,{value:e,writable:!0}),Ol(r,Ml,{value:null,writable:!0}),Ol(r,Su,{value:null,writable:!0}),Ol(r,Zm,{value:null,writable:!0}),Ol(r,Sb,{value:e._readableState.endEmitted,writable:!0}),Ol(r,MT,{value:function(s,o){var a=i[xu].read();a?(i[ku]=null,i[Ml]=null,i[Su]=null,s(Ul(a,!1))):(i[Ml]=s,i[Su]=o)},writable:!0}),r));return i[ku]=null,A6e(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var s=i[Su];s!==null&&(i[ku]=null,i[Ml]=null,i[Su]=null,s(n)),i[Zm]=n;return}var o=i[Ml];o!==null&&(i[ku]=null,i[Ml]=null,i[Su]=null,o(Ul(void 0,!0))),i[Sb]=!0}),e.on("readable",c6e.bind(null,i)),i};Wce.exports=h6e});var Zce=w((Zkt,_ce)=>{"use strict";function Vce(t,e,r,i,n,s,o){try{var a=t[s](o),l=a.value}catch(c){r(c);return}a.done?e(l):Promise.resolve(l).then(i,n)}function p6e(t){return function(){var e=this,r=arguments;return new Promise(function(i,n){var s=t.apply(e,r);function o(l){Vce(s,i,n,o,a,"next",l)}function a(l){Vce(s,i,n,o,a,"throw",l)}o(void 0)})}}function Xce(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function C6e(t){for(var e=1;e{"use strict";$ce.exports=Kt;var gh;Kt.ReadableState=eue;var $kt=require("events").EventEmitter,tue=function(e,r){return e.listeners(r).length},$m=IT(),kb=require("buffer").Buffer,I6e=global.Uint8Array||function(){};function y6e(t){return kb.from(t)}function w6e(t){return kb.isBuffer(t)||t instanceof I6e}var UT=require("util"),xt;UT&&UT.debuglog?xt=UT.debuglog("stream"):xt=function(){};var B6e=yce(),KT=BT(),b6e=bT(),Q6e=b6e.getHighWaterMark,xb=Nl().codes,v6e=xb.ERR_INVALID_ARG_TYPE,S6e=xb.ERR_STREAM_PUSH_AFTER_EOF,k6e=xb.ERR_METHOD_NOT_IMPLEMENTED,x6e=xb.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,fh,HT,jT;Ll()(Kt,$m);var eE=KT.errorOrDestroy,GT=["error","close","destroy","pause","resume"];function P6e(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function eue(t,e,r){gh=gh||vu(),t=t||{},typeof r!="boolean"&&(r=e instanceof gh),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=Q6e(this,t,"readableHighWaterMark",r),this.buffer=new B6e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(fh||(fh=OT().StringDecoder),this.decoder=new fh(t.encoding),this.encoding=t.encoding)}function Kt(t){if(gh=gh||vu(),!(this instanceof Kt))return new Kt(t);var e=this instanceof gh;this._readableState=new eue(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),$m.call(this)}Object.defineProperty(Kt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});Kt.prototype.destroy=KT.destroy;Kt.prototype._undestroy=KT.undestroy;Kt.prototype._destroy=function(t,e){e(t)};Kt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=kb.from(t,e),e=""),i=!0),rue(this,t,e,!1,i)};Kt.prototype.unshift=function(t){return rue(this,t,null,!0,!1)};function rue(t,e,r,i,n){xt("readableAddChunk",e);var s=t._readableState;if(e===null)s.reading=!1,R6e(t,s);else{var o;if(n||(o=D6e(s,e)),o)eE(t,o);else if(s.objectMode||e&&e.length>0)if(typeof e!="string"&&!s.objectMode&&Object.getPrototypeOf(e)!==kb.prototype&&(e=y6e(e)),i)s.endEmitted?eE(t,new x6e):YT(t,s,e,!0);else if(s.ended)eE(t,new S6e);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||e.length!==0?YT(t,s,e,!1):qT(t,s)):YT(t,s,e,!1)}else i||(s.reading=!1,qT(t,s))}return!s.ended&&(s.length=iue?t=iue:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function nue(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=F6e(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}Kt.prototype.read=function(t){xt("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return xt("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?JT(this):Pb(this),null;if(t=nue(t,e),t===0&&e.ended)return e.length===0&&JT(this),null;var i=e.needReadable;xt("need readable",i),(e.length===0||e.length-t0?n=sue(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&JT(this)),n!==null&&this.emit("data",n),n};function R6e(t,e){if(xt("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?Pb(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,oue(t)))}}function Pb(t){var e=t._readableState;xt("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(xt("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(oue,t))}function oue(t){var e=t._readableState;xt("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,WT(t)}function qT(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(N6e,t,e))}function N6e(t,e){for(;!e.reading&&!e.ended&&(e.length1&&aue(i.pipes,t)!==-1)&&!c&&(xt("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(y){xt("onerror",y),m(),t.removeListener("error",f),tue(t,"error")===0&&eE(t,y)}P6e(t,"error",f);function h(){t.removeListener("finish",p),m()}t.once("close",h);function p(){xt("onfinish"),t.removeListener("close",h),m()}t.once("finish",p);function m(){xt("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(xt("pipe resume"),r.resume()),t};function L6e(t){return function(){var r=t._readableState;xt("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&tue(t,"data")&&(r.flowing=!0,WT(t))}}Kt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var s=0;s0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,xt("on readable",i.length,i.reading),i.length?Pb(this):i.reading||process.nextTick(T6e,this)),r};Kt.prototype.addListener=Kt.prototype.on;Kt.prototype.removeListener=function(t,e){var r=$m.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(Aue,this),r};Kt.prototype.removeAllListeners=function(t){var e=$m.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(Aue,this),e};function Aue(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T6e(t){xt("readable nexttick read 0"),t.read(0)}Kt.prototype.resume=function(){var t=this._readableState;return t.flowing||(xt("resume"),t.flowing=!t.readableListening,O6e(this,t)),t.paused=!1,this};function O6e(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(M6e,t,e))}function M6e(t,e){xt("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),WT(t),e.flowing&&!e.reading&&t.read(0)}Kt.prototype.pause=function(){return xt("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(xt("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function WT(t){var e=t._readableState;for(xt("flow",e.flowing);e.flowing&&t.read()!==null;);}Kt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(xt("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(xt("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var a=e.push(o);a||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(a){return function(){return t[a].apply(t,arguments)}}(n));for(var s=0;s=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function JT(t){var e=t._readableState;xt("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(U6e,e,t))}function U6e(t,e){if(xt("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(Kt.from=function(t,e){return jT===void 0&&(jT=Zce()),jT(Kt,t,e)});function aue(t,e){for(var r=0,i=t.length;r{"use strict";lue.exports=bA;var Db=Nl().codes,K6e=Db.ERR_METHOD_NOT_IMPLEMENTED,H6e=Db.ERR_MULTIPLE_CALLBACK,j6e=Db.ERR_TRANSFORM_ALREADY_TRANSFORMING,G6e=Db.ERR_TRANSFORM_WITH_LENGTH_0,Rb=vu();Ll()(bA,Rb);function Y6e(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new H6e);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";uue.exports=tE;var gue=zT();Ll()(tE,gue);function tE(t){if(!(this instanceof tE))return new tE(t);gue.call(this,t)}tE.prototype._transform=function(t,e,r){r(null,t)}});var mue=w((ixt,hue)=>{"use strict";var _T;function J6e(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var pue=Nl().codes,W6e=pue.ERR_MISSING_ARGS,z6e=pue.ERR_STREAM_DESTROYED;function due(t){if(t)throw t}function _6e(t){return t.setHeader&&typeof t.abort=="function"}function V6e(t,e,r,i){i=J6e(i);var n=!1;t.on("close",function(){n=!0}),_T===void 0&&(_T=Qb()),_T(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,_6e(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new z6e("pipe"))}}}function Cue(t){t()}function X6e(t,e){return t.pipe(e)}function Z6e(t){return!t.length||typeof t[t.length-1]!="function"?due:t.pop()}function $6e(){for(var t=arguments.length,e=new Array(t),r=0;r0;return V6e(o,l,c,function(u){n||(n=u),u&&s.forEach(Cue),!l&&(s.forEach(Cue),i(n))})});return e.reduce(X6e)}hue.exports=$6e});var hh=w((zs,rE)=>{var iE=require("stream");process.env.READABLE_STREAM==="disable"&&iE?(rE.exports=iE.Readable,Object.assign(rE.exports,iE),rE.exports.Stream=iE):(zs=rE.exports=DT(),zs.Stream=iE||zs,zs.Readable=zs,zs.Writable=PT(),zs.Duplex=vu(),zs.Transform=zT(),zs.PassThrough=fue(),zs.finished=Qb(),zs.pipeline=mue())});var yue=w((nxt,Eue)=>{"use strict";var{Buffer:Qo}=require("buffer"),Iue=Symbol.for("BufferList");function mr(t){if(!(this instanceof mr))return new mr(t);mr._init.call(this,t)}mr._init=function(e){Object.defineProperty(this,Iue,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};mr.prototype._new=function(e){return new mr(e)};mr.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let i=0;ithis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};mr.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};mr.prototype.copy=function(e,r,i,n){if((typeof i!="number"||i<0)&&(i=0),(typeof n!="number"||n>this.length)&&(n=this.length),i>=this.length||n<=0)return e||Qo.alloc(0);let s=!!e,o=this._offset(i),a=n-i,l=a,c=s&&r||0,u=o[1];if(i===0&&n===this.length){if(!s)return this._bufs.length===1?this._bufs[0]:Qo.concat(this._bufs,this.length);for(let g=0;gf)this._bufs[g].copy(e,c,u),c+=f;else{this._bufs[g].copy(e,c,u,u+l),c+=f;break}l-=f,u&&(u=0)}return e.length>c?e.slice(0,c):e};mr.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let i=this._offset(e),n=this._offset(r),s=this._bufs.slice(i[0],n[0]+1);return n[1]===0?s.pop():s[s.length-1]=s[s.length-1].slice(0,n[1]),i[1]!==0&&(s[0]=s[0].slice(i[1])),this._new(s)};mr.prototype.toString=function(e,r,i){return this.slice(r,i).toString(e)};mr.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};mr.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let i=this._offset(e),n=i[0],s=i[1];for(;n=t.length){let l=o.indexOf(t,s);if(l!==-1)return this._reverseOffset([n,l]);s=o.length-t.length+1}else{let l=this._reverseOffset([n,s]);if(this._match(l,t))return l;s++}s=0}return-1};mr.prototype._match=function(t,e){if(this.length-t{"use strict";var VT=hh().Duplex,eVe=Ll(),nE=yue();function Zi(t){if(!(this instanceof Zi))return new Zi(t);if(typeof t=="function"){this._callback=t;let e=function(i){this._callback&&(this._callback(i),this._callback=null)}.bind(this);this.on("pipe",function(i){i.on("error",e)}),this.on("unpipe",function(i){i.removeListener("error",e)}),t=null}nE._init.call(this,t),VT.call(this)}eVe(Zi,VT);Object.assign(Zi.prototype,nE.prototype);Zi.prototype._new=function(e){return new Zi(e)};Zi.prototype._write=function(e,r,i){this._appendBuffer(e),typeof i=="function"&&i()};Zi.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Zi.prototype.end=function(e){VT.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Zi.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Zi.prototype._isBufferList=function(e){return e instanceof Zi||e instanceof nE||Zi.isBufferList(e)};Zi.isBufferList=nE.isBufferList;Fb.exports=Zi;Fb.exports.BufferListStream=Zi;Fb.exports.BufferList=nE});var $T=w(ph=>{var tVe=Buffer.alloc,rVe="0000000000000000000",iVe="7777777777777777777",Bue="0".charCodeAt(0),bue=Buffer.from("ustar\0","binary"),nVe=Buffer.from("00","binary"),sVe=Buffer.from("ustar ","binary"),oVe=Buffer.from(" \0","binary"),aVe=parseInt("7777",8),sE=257,XT=263,AVe=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},lVe=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},cVe=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},Que=function(t,e,r,i){for(;re?iVe.slice(0,e)+" ":rVe.slice(0,e-t.length)+t+" "};function uVe(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],i=t.length-1;i>0;i--){var n=t[i];e?r.push(n):r.push(255-n)}var s=0,o=r.length;for(i=0;i=Math.pow(10,r)&&r++,e+r+t};ph.decodeLongPath=function(t,e){return dh(t,0,t.length,e)};ph.encodePax=function(t){var e="";t.name&&(e+=ZT(" path="+t.name+` +`)),t.linkname&&(e+=ZT(" linkpath="+t.linkname+` +`));var r=t.pax;if(r)for(var i in r)e+=ZT(" "+i+"="+r[i]+` +`);return Buffer.from(e)};ph.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var n=r.indexOf("/");if(n===-1)return null;i+=i?"/"+r.slice(0,n):r.slice(0,n),r=r.slice(n+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(i)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(Kl(t.mode&aVe,6),100),e.write(Kl(t.uid,6),108),e.write(Kl(t.gid,6),116),e.write(Kl(t.size,11),124),e.write(Kl(t.mtime.getTime()/1e3|0,11),136),e[156]=Bue+cVe(t.type),t.linkname&&e.write(t.linkname,157),bue.copy(e,sE),nVe.copy(e,XT),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(Kl(t.devmajor||0,6),329),e.write(Kl(t.devminor||0,6),337),i&&e.write(i,345),e.write(Kl(vue(e),6),148),e)};ph.decode=function(t,e,r){var i=t[156]===0?0:t[156]-Bue,n=dh(t,0,100,e),s=Hl(t,100,8),o=Hl(t,108,8),a=Hl(t,116,8),l=Hl(t,124,12),c=Hl(t,136,12),u=lVe(i),g=t[157]===0?null:dh(t,157,100,e),f=dh(t,265,32),h=dh(t,297,32),p=Hl(t,329,8),m=Hl(t,337,8),y=vue(t);if(y===8*32)return null;if(y!==Hl(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(bue.compare(t,sE,sE+6)===0)t[345]&&(n=dh(t,345,155,e)+"/"+n);else if(!(sVe.compare(t,sE,sE+6)===0&&oVe.compare(t,XT,XT+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:m}}});var Fue=w((axt,Sue)=>{var kue=require("util"),gVe=wue(),oE=$T(),xue=hh().Writable,Pue=hh().PassThrough,Due=function(){},Rue=function(t){return t&=511,t&&512-t},fVe=function(t,e){var r=new Nb(t,e);return r.end(),r},hVe=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},Nb=function(t,e){this._parent=t,this.offset=e,Pue.call(this,{autoDestroy:!1})};kue.inherits(Nb,Pue);Nb.prototype.destroy=function(t){this._parent.destroy(t)};var QA=function(t){if(!(this instanceof QA))return new QA(t);xue.call(this,t),t=t||{},this._offset=0,this._buffer=gVe(),this._missing=0,this._partial=!1,this._onparse=Due,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=Rue(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(Rue(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=oE.decodePax(r.slice(0,f)),r.consume(f),s()},l=function(){var f=e._header.size;e._pax=oE.decodePax(r.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=oE.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=oE.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=oE.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(p){e.emit("error",p)}if(r.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=hVe(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,fVe(e,f),n);return}e._stream=new Nb(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};kue.inherits(QA,xue);QA.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};QA.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};QA.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=Due,this._overflow?this._write(this._overflow,void 0,t):t()}};QA.prototype._write=function(t,e,r){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(t.length&&(this._partial=!0),t.lengths&&(o=t.slice(s),t=t.slice(0,s)),i?i.end(t):n.append(t),this._overflow=o,this._onparse()}};QA.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};Sue.exports=QA});var Lue=w((Axt,Nue)=>{Nue.exports=require("fs").constants||require("constants")});var Kue=w((lxt,Tue)=>{var Ch=Lue(),Oue=Wx(),Lb=Ll(),pVe=Buffer.alloc,Mue=hh().Readable,mh=hh().Writable,dVe=require("string_decoder").StringDecoder,Tb=$T(),CVe=parseInt("755",8),mVe=parseInt("644",8),Uue=pVe(1024),eO=function(){},tO=function(t,e){e&=511,e&&t.push(Uue.slice(0,512-e))};function EVe(t){switch(t&Ch.S_IFMT){case Ch.S_IFBLK:return"block-device";case Ch.S_IFCHR:return"character-device";case Ch.S_IFDIR:return"directory";case Ch.S_IFIFO:return"fifo";case Ch.S_IFLNK:return"symlink"}return"file"}var Ob=function(t){mh.call(this),this.written=0,this._to=t,this._destroyed=!1};Lb(Ob,mh);Ob.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};Ob.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Mb=function(){mh.call(this),this.linkname="",this._decoder=new dVe("utf-8"),this._destroyed=!1};Lb(Mb,mh);Mb.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};Mb.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var aE=function(){mh.call(this),this._destroyed=!1};Lb(aE,mh);aE.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};aE.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var da=function(t){if(!(this instanceof da))return new da(t);Mue.call(this,t),this._drain=eO,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};Lb(da,Mue);da.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=eO);var i=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=EVe(t.mode)),t.mode||(t.mode=t.type==="directory"?CVe:mVe),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var n=this.push(e);return tO(i,t.size),n?process.nextTick(r):this._drain=r,new aE}if(t.type==="symlink"&&!t.linkname){var s=new Mb;return Oue(s,function(a){if(a)return i.destroy(),r(a);t.linkname=s.linkname,i._encode(t),r()}),s}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new aE;var o=new Ob(this);return this._stream=o,Oue(o,function(a){if(i._stream=null,a)return i.destroy(),r(a);if(o.written!==t.size)return i.destroy(),r(new Error("size mismatch"));tO(i,t.size),i._finalizing&&i.finalize(),r()}),o}};da.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(Uue),this.push(null))};da.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};da.prototype._encode=function(t){if(!t.pax){var e=Tb.encode(t);if(e){this.push(e);return}}this._encodePax(t)};da.prototype._encodePax=function(t){var e=Tb.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(Tb.encode(r)),this.push(e),tO(this,e.length),r.size=t.size,r.type=t.type,this.push(Tb.encode(r))};da.prototype._read=function(t){var e=this._drain;this._drain=eO,e()};Tue.exports=da});var Hue=w(rO=>{rO.extract=Fue();rO.pack=Kue()});var ege=w((Rxt,Vue)=>{"use strict";var Eh=class{constructor(e,r,i){this.__specs=e||{},Object.keys(this.__specs).forEach(n=>{if(typeof this.__specs[n]=="string"){let s=this.__specs[n],o=this.__specs[s];if(o){let a=o.aliases||[];a.push(n,s),o.aliases=[...new Set(a)],this.__specs[n]=o}else throw new Error(`Alias refers to invalid key: ${s} -> ${n}`)}}),this.__opts=r||{},this.__providers=Zue(i.filter(n=>n!=null&&typeof n=="object")),this.__isFiggyPudding=!0}get(e){return AO(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[i,n]of this.entries())e.call(r,n,i,this)}toJSON(){let e={};return this.forEach((r,i)=>{e[i]=r}),e}*entries(e){for(let i of Object.keys(this.__specs))yield[i,this.get(i)];let r=e||this.__opts.other;if(r){let i=new Set;for(let n of this.__providers){let s=n.entries?n.entries(r):RVe(n);for(let[o,a]of s)r(o)&&!i.has(o)&&(i.add(o),yield[o,a])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Eh(this.__specs,this.__opts,Zue(this.__providers).concat(e)),Xue)}};try{let t=require("util");Eh.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch(t){}function FVe(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function AO(t,e,r){let i=t.__specs[e];if(r&&!i&&(!t.__opts.other||!t.__opts.other(e)))FVe(e);else{i||(i={});let n;for(let s of t.__providers){if(n=$ue(e,s),n===void 0&&i.aliases&&i.aliases.length){for(let o of i.aliases)if(o!==e&&(n=$ue(o,s),n!==void 0))break}if(n!==void 0)break}return n===void 0&&i.default!==void 0?typeof i.default=="function"?i.default(t):i.default:n}}function $ue(t,e){let r;return e.__isFiggyPudding?r=AO(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var Xue={has(t,e){return e in t.__specs&&AO(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Eh.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};Vue.exports=NVe;function NVe(t,e){function r(...i){return new Proxy(new Eh(t,e,i),Xue)}return r}function Zue(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function RVe(t){return Object.keys(t).map(e=>[e,t[e]])}});var ige=w((Fxt,Ca)=>{"use strict";var lE=require("crypto"),LVe=ege(),TVe=require("stream").Transform,tge=["sha256","sha384","sha512"],OVe=/^[a-z0-9+/]+(?:=?=?)$/i,MVe=/^([^-]+)-([^?]+)([?\S*]*)$/,UVe=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,KVe=/^[\x21-\x7E]+$/,Cn=LVe({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>HVe},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),Pu=class{get isHash(){return!0}constructor(e,r){r=Cn(r);let i=!!r.strict;this.source=e.trim();let n=this.source.match(i?UVe:MVe);if(!n||i&&!tge.some(o=>o===n[1]))return;this.algorithm=n[1],this.digest=n[2];let s=n[3];this.options=s?s.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=Cn(e),e.strict&&!(tge.some(i=>i===this.algorithm)&&this.digest.match(OVe)&&(this.options||[]).every(i=>i.match(KVe))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Ih=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=Cn(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(i=>this[i].map(n=>Pu.prototype.toString.call(n,e)).filter(n=>n.length).join(r)).filter(i=>i.length).join(r)}concat(e,r){r=Cn(r);let i=typeof e=="string"?e:cE(e,r);return ma(`${this.toString(r)} ${i}`,r)}hexDigest(){return ma(this,{single:!0}).hexDigest()}match(e,r){r=Cn(r);let i=ma(e,r),n=i.pickAlgorithm(r);return this[n]&&i[n]&&this[n].find(s=>i[n].find(o=>s.digest===o.digest))||!1}pickAlgorithm(e){e=Cn(e);let r=e.pickAlgorithm,i=Object.keys(this);if(!i.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return i.reduce((n,s)=>r(n,s)||n)}};Ca.exports.parse=ma;function ma(t,e){if(e=Cn(e),typeof t=="string")return lO(t,e);if(t.algorithm&&t.digest){let r=new Ih;return r[t.algorithm]=[t],lO(cE(r,e),e)}else return lO(cE(t,e),e)}function lO(t,e){return e.single?new Pu(t,e):t.trim().split(/\s+/).reduce((r,i)=>{let n=new Pu(i,e);if(n.algorithm&&n.digest){let s=n.algorithm;r[s]||(r[s]=[]),r[s].push(n)}return r},new Ih)}Ca.exports.stringify=cE;function cE(t,e){return e=Cn(e),t.algorithm&&t.digest?Pu.prototype.toString.call(t,e):typeof t=="string"?cE(ma(t,e),e):Ih.prototype.toString.call(t,e)}Ca.exports.fromHex=jVe;function jVe(t,e,r){r=Cn(r);let i=r.options&&r.options.length?`?${r.options.join("?")}`:"";return ma(`${e}-${Buffer.from(t,"hex").toString("base64")}${i}`,r)}Ca.exports.fromData=GVe;function GVe(t,e){e=Cn(e);let r=e.algorithms,i=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((n,s)=>{let o=lE.createHash(s).update(t).digest("base64"),a=new Pu(`${s}-${o}${i}`,e);if(a.algorithm&&a.digest){let l=a.algorithm;n[l]||(n[l]=[]),n[l].push(a)}return n},new Ih)}Ca.exports.fromStream=YVe;function YVe(t,e){e=Cn(e);let r=e.Promise||Promise,i=cO(e);return new r((n,s)=>{t.pipe(i),t.on("error",s),i.on("error",s);let o;i.on("integrity",a=>{o=a}),i.on("end",()=>n(o)),i.on("data",()=>{})})}Ca.exports.checkData=qVe;function qVe(t,e,r){if(r=Cn(r),e=ma(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let i=e.pickAlgorithm(r),n=lE.createHash(i).update(t).digest("base64"),s=ma({algorithm:i,digest:n}),o=s.match(e,r);if(o||!r.error)return o;if(typeof r.size=="number"&&t.length!==r.size){let a=new Error(`data size mismatch when checking ${e}. + Wanted: ${r.size} + Found: ${t.length}`);throw a.code="EBADSIZE",a.found=t.length,a.expected=r.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${t.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}Ca.exports.checkStream=JVe;function JVe(t,e,r){r=Cn(r);let i=r.Promise||Promise,n=cO(r.concat({integrity:e}));return new i((s,o)=>{t.pipe(n),t.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}Ca.exports.integrityStream=cO;function cO(t){t=Cn(t);let e=t.integrity&&ma(t.integrity,t),r=e&&Object.keys(e).length,i=r&&e.pickAlgorithm(t),n=r&&e[i],s=Array.from(new Set(t.algorithms.concat(i?[i]:[]))),o=s.map(lE.createHash),a=0,l=new TVe({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=t.options&&t.options.length?`?${t.options.join("?")}`:"",u=ma(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),t),g=r&&u.match(e,t);if(typeof t.size=="number"&&a!==t.size){let f=new Error(`stream size mismatch when checking ${e}. + Wanted: ${t.size} + Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=t.size,f.sri=e,l.emit("error",f)}else if(t.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}Ca.exports.create=WVe;function WVe(t){t=Cn(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",i=e.map(lE.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new Pu(`${a}-${l}${r}`,t);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Ih)}}}var zVe=new Set(lE.getHashes()),rge=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>zVe.has(t));function HVe(t,e){return rge.indexOf(t.toLowerCase())>=rge.indexOf(e.toLowerCase())?t:e}});var QC={};ft(QC,{BuildType:()=>As,Cache:()=>Nt,Configuration:()=>ye,DEFAULT_LOCK_FILENAME:()=>wx,DEFAULT_RC_FILENAME:()=>yx,FormatType:()=>Di,InstallMode:()=>di,LightReport:()=>uA,LinkType:()=>Qt,Manifest:()=>At,MessageName:()=>$,MultiFetcher:()=>yd,PackageExtensionStatus:()=>qi,PackageExtensionType:()=>yi,Project:()=>ze,ProjectLookup:()=>ol,Report:()=>Ji,ReportError:()=>ct,SettingsType:()=>Ie,StreamReport:()=>Je,TAG_REGEXP:()=>Gg,TelemetryManager:()=>bC,ThrowReport:()=>pi,VirtualFetcher:()=>Bd,Workspace:()=>BC,WorkspaceFetcher:()=>bd,WorkspaceResolver:()=>si,YarnVersion:()=>Ur,execUtils:()=>Fr,folderUtils:()=>hx,formatUtils:()=>ae,hashUtils:()=>Dn,httpUtils:()=>ir,miscUtils:()=>Se,nodeUtils:()=>qg,parseMessageName:()=>BI,scriptUtils:()=>Zt,semverUtils:()=>Wt,stringifyMessageName:()=>YA,structUtils:()=>P,tgzUtils:()=>wi,treeUtils:()=>as});var Fr={};ft(Fr,{EndStrategy:()=>is,ExecError:()=>xx,PipeError:()=>Qw,execvp:()=>Eke,pipevp:()=>$o});var Zh={};ft(Zh,{AliasFS:()=>Pa,CwdFS:()=>_t,DEFAULT_COMPRESSION_LEVEL:()=>ic,FakeFS:()=>KA,Filename:()=>Pt,JailFS:()=>Da,LazyFS:()=>zh,LinkStrategy:()=>jh,NoFS:()=>zE,NodeFS:()=>ar,PortablePath:()=>Me,PosixFS:()=>_h,ProxiedFS:()=>bi,VirtualFS:()=>Jr,ZipFS:()=>Ai,ZipOpenFS:()=>ms,constants:()=>Dr,extendFs:()=>VE,normalizeLineEndings:()=>$l,npath:()=>j,opendir:()=>qE,patchFs:()=>bQ,ppath:()=>k,statUtils:()=>uQ,toFilename:()=>qr,xfs:()=>K});var Dr={};ft(Dr,{SAFE_TIME:()=>cQ,S_IFDIR:()=>Sa,S_IFLNK:()=>xa,S_IFMT:()=>zn,S_IFREG:()=>ka});var zn=61440,Sa=16384,ka=32768,xa=40960,cQ=456789e3;var uQ={};ft(uQ,{BigIntStatsEntry:()=>Uh,DEFAULT_MODE:()=>Mh,DirEntry:()=>sM,StatEntry:()=>MA,areStatsEqual:()=>fQ,clearStats:()=>ME,convertToBigIntStats:()=>UE,makeDefaultStats:()=>Kh,makeEmptyStats:()=>dfe});var gQ=ge(require("util"));var Mh=ka|420,sM=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&zn)===Sa}isFIFO(){return!1}isFile(){return(this.mode&zn)===ka}isSocket(){return!1}isSymbolicLink(){return(this.mode&zn)===xa}},MA=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=Mh;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&zn)===Sa}isFIFO(){return!1}isFile(){return(this.mode&zn)===ka}isSocket(){return!1}isSymbolicLink(){return(this.mode&zn)===xa}},Uh=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(Mh);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(zn))===BigInt(Sa)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(zn))===BigInt(ka)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(zn))===BigInt(xa)}};function Kh(){return new MA}function dfe(){return ME(Kh())}function ME(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):gQ.types.isDate(r)&&(t[e]=new Date(0))}return t}function UE(t){let e=new Uh;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let i=t[r];typeof i=="number"?e[r]=BigInt(i):gQ.types.isDate(i)&&(e[r]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function fQ(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,i=e;return!(r.atimeNs!==i.atimeNs||r.mtimeNs!==i.mtimeNs||r.ctimeNs!==i.ctimeNs||r.birthtimeNs!==i.birthtimeNs)}var HE=ge(require("fs"));var Hh=ge(require("path")),oM;(function(i){i[i.File=0]="File",i[i.Portable=1]="Portable",i[i.Native=2]="Native"})(oM||(oM={}));var Me={root:"/",dot:"."},Pt={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",rc:".yarnrc.yml"},j=Object.create(Hh.default),k=Object.create(Hh.default.posix);j.cwd=()=>process.cwd();k.cwd=()=>hQ(process.cwd());k.resolve=(...t)=>t.length>0&&k.isAbsolute(t[0])?Hh.default.posix.resolve(...t):Hh.default.posix.resolve(k.cwd(),...t);var aM=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};j.fromPortablePath=AM;j.toPortablePath=hQ;j.contains=(t,e)=>aM(j,t,e);k.contains=(t,e)=>aM(k,t,e);var Cfe=/^([a-zA-Z]:.*)$/,mfe=/^\/\/(\.\/)?(.*)$/,Efe=/^\/([a-zA-Z]:.*)$/,Ife=/^\/unc\/(\.dot\/)?(.*)$/;function AM(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(Efe))t=e[1];else if(r=t.match(Ife))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function hQ(t){if(process.platform!=="win32")return t;t=t.replace(/\\/g,"/");let e,r;return(e=t.match(Cfe))?t=`/${e[1]}`:(r=t.match(mfe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t}function KE(t,e){return t===j?AM(e):hQ(e)}function qr(t){if(j.parse(t).dir!==""||k.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var jE=new Date(cQ*1e3),jh;(function(r){r.Allow="allow",r.ReadOnly="readOnly"})(jh||(jh={}));async function lM(t,e,r,i,n){let s=t.pathUtils.normalize(e),o=r.pathUtils.normalize(i),a=[],l=[],{atime:c,mtime:u}=n.stableTime?{atime:jE,mtime:jE}:await r.lstatPromise(o);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[c,u]});let g=typeof t.lutimesPromise=="function"?t.lutimesPromise.bind(t):t.utimesPromise.bind(t);await pQ(a,l,g,t,s,r,o,te(N({},n),{didParentExist:!0}));for(let f of a)await f();await Promise.all(l.map(f=>f()))}async function pQ(t,e,r,i,n,s,o,a){var h,p;let l=a.didParentExist?await yfe(i,n):null,c=await s.lstatPromise(o),{atime:u,mtime:g}=a.stableTime?{atime:jE,mtime:jE}:c,f;switch(!0){case c.isDirectory():f=await wfe(t,e,r,i,n,l,s,o,c,a);break;case c.isFile():f=await Bfe(t,e,r,i,n,l,s,o,c,a);break;case c.isSymbolicLink():f=await bfe(t,e,r,i,n,l,s,o,c,a);break;default:throw new Error(`Unsupported file type (${c.mode})`)}return(f||((h=l==null?void 0:l.mtime)==null?void 0:h.getTime())!==g.getTime()||((p=l==null?void 0:l.atime)==null?void 0:p.getTime())!==u.getTime())&&(e.push(()=>r(n,u,g)),f=!0),(l===null||(l.mode&511)!=(c.mode&511))&&(e.push(()=>i.chmodPromise(n,c.mode&511)),f=!0),f}async function yfe(t,e){try{return await t.lstatPromise(e)}catch(r){return null}}async function wfe(t,e,r,i,n,s,o,a,l,c){if(s!==null&&!s.isDirectory())if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=!1;s===null&&(t.push(async()=>{try{await i.mkdirPromise(n,{mode:l.mode})}catch(h){if(h.code!=="EEXIST")throw h}}),u=!0);let g=await o.readdirPromise(a),f=c.didParentExist&&!s?te(N({},c),{didParentExist:!1}):c;if(c.stableSort)for(let h of g.sort())await pQ(t,e,r,i,i.pathUtils.join(n,h),o,o.pathUtils.join(a,h),f)&&(u=!0);else(await Promise.all(g.map(async p=>{await pQ(t,e,r,i,i.pathUtils.join(n,p),o,o.pathUtils.join(a,p),f)}))).some(p=>p)&&(u=!0);return u}var dQ=new WeakMap;function CQ(t,e,r,i,n){return async()=>{await t.linkPromise(r,e),n===jh.ReadOnly&&(i.mode&=~146,await t.chmodPromise(e,i.mode))}}function Qfe(t,e,r,i,n){let s=dQ.get(t);return typeof s=="undefined"?async()=>{try{await t.copyFilePromise(r,e,HE.default.constants.COPYFILE_FICLONE_FORCE),dQ.set(t,!0)}catch(o){if(o.code==="ENOSYS"||o.code==="ENOTSUP")dQ.set(t,!1),await CQ(t,e,r,i,n)();else throw o}}:s?async()=>t.copyFilePromise(r,e,HE.default.constants.COPYFILE_FICLONE_FORCE):CQ(t,e,r,i,n)}async function Bfe(t,e,r,i,n,s,o,a,l,c){var f;if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=(f=c.linkStrategy)!=null?f:null,g=i===o?u!==null?Qfe(i,n,a,l,u):async()=>i.copyFilePromise(a,n,HE.default.constants.COPYFILE_FICLONE):u!==null?CQ(i,n,a,l,u):async()=>i.writeFilePromise(n,await o.readFilePromise(a));return t.push(async()=>g()),!0}async function bfe(t,e,r,i,n,s,o,a,l,c){if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;return t.push(async()=>{await i.symlinkPromise(KE(i.pathUtils,await o.readlinkPromise(a)),n)}),!0}function Cs(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function GE(t){return Cs("EBUSY",t)}function Gh(t,e){return Cs("ENOSYS",`${t}, ${e}`)}function UA(t){return Cs("EINVAL",`invalid argument, ${t}`)}function en(t){return Cs("EBADF",`bad file descriptor, ${t}`)}function to(t){return Cs("ENOENT",`no such file or directory, ${t}`)}function Do(t){return Cs("ENOTDIR",`not a directory, ${t}`)}function Yh(t){return Cs("EISDIR",`illegal operation on a directory, ${t}`)}function YE(t){return Cs("EEXIST",`file already exists, ${t}`)}function In(t){return Cs("EROFS",`read-only filesystem, ${t}`)}function cM(t){return Cs("ENOTEMPTY",`directory not empty, ${t}`)}function uM(t){return Cs("EOPNOTSUPP",`operation not supported, ${t}`)}function gM(){return Cs("ERR_DIR_CLOSED","Directory handle was closed")}var mQ=class extends Error{constructor(e,r){super(e);this.name="Libzip Error",this.code=r}};var fM=class{constructor(e,r,i={}){this.path=e;this.nextDirent=r;this.opts=i;this.closed=!1}throwIfClosed(){if(this.closed)throw gM()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e!="undefined"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e!="undefined"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}};function qE(t,e,r,i){let n=()=>{let s=r.shift();return typeof s=="undefined"?null:Object.assign(t.statSync(t.pathUtils.join(e,s)),{name:s})};return new fM(e,n,i)}var hM=ge(require("os"));var KA=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let i=[e];for(;i.length>0;){let n=i.shift();if((await this.lstatPromise(n)).isDirectory()){let o=await this.readdirPromise(n);if(r)for(let a of o.sort())i.push(this.pathUtils.join(n,a));else throw new Error("Not supported")}else yield n}}async removePromise(e,{recursive:r=!0,maxRetries:i=5}={}){let n;try{n=await this.lstatPromise(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(r){let s=await this.readdirPromise(e);await Promise.all(s.map(o=>this.removePromise(this.pathUtils.resolve(e,o))))}for(let s=0;s<=i;s++)try{await this.rmdirPromise(e);break}catch(o){if(o.code!=="EBUSY"&&o.code!=="ENOTEMPTY")throw o;ssetTimeout(a,s*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let i;try{i=this.lstatSync(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(i.isDirectory()){if(r)for(let n of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,n));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:i}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let n=e.split(this.pathUtils.sep);for(let s=2;s<=n.length;++s){let o=n.slice(0,s).join(this.pathUtils.sep);if(!this.existsSync(o)){try{await this.mkdirPromise(o)}catch(a){if(a.code==="EEXIST")continue;throw a}if(r!=null&&await this.chmodPromise(o,r),i!=null)await this.utimesPromise(o,i[0],i[1]);else{let a=await this.statPromise(this.pathUtils.dirname(o));await this.utimesPromise(o,a.atime,a.mtime)}}}}mkdirpSync(e,{chmod:r,utimes:i}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let n=e.split(this.pathUtils.sep);for(let s=2;s<=n.length;++s){let o=n.slice(0,s).join(this.pathUtils.sep);if(!this.existsSync(o)){try{this.mkdirSync(o)}catch(a){if(a.code==="EEXIST")continue;throw a}if(r!=null&&this.chmodSync(o,r),i!=null)this.utimesSync(o,i[0],i[1]);else{let a=this.statSync(this.pathUtils.dirname(o));this.utimesSync(o,a.atime,a.mtime)}}}}async copyPromise(e,r,{baseFs:i=this,overwrite:n=!0,stableSort:s=!1,stableTime:o=!1,linkStrategy:a=null}={}){return await lM(this,e,i,r,{overwrite:n,stableSort:s,stableTime:o,linkStrategy:a})}copySync(e,r,{baseFs:i=this,overwrite:n=!0}={}){let s=i.lstatSync(r),o=this.existsSync(e);if(s.isDirectory()){this.mkdirpSync(e);let l=i.readdirSync(r);for(let c of l)this.copySync(this.pathUtils.join(e,c),i.pathUtils.join(r,c),{baseFs:i,overwrite:n})}else if(s.isFile()){if(!o||n){o&&this.removeSync(e);let l=i.readFileSync(r);this.writeFileSync(e,l)}}else if(s.isSymbolicLink()){if(!o||n){o&&this.removeSync(e);let l=i.readlinkSync(r);this.symlinkSync(KE(this.pathUtils,l),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${s.mode.toString(8).padStart(6,"0")})`);let a=s.mode&511;this.chmodSync(e,a)}async changeFilePromise(e,r,i={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,i):this.changeFileTextPromise(e,r,i)}async changeFileBufferPromise(e,r,{mode:i}={}){let n=Buffer.alloc(0);try{n=await this.readFilePromise(e)}catch(s){}Buffer.compare(n,r)!==0&&await this.writeFilePromise(e,r,{mode:i})}async changeFileTextPromise(e,r,{automaticNewlines:i,mode:n}={}){let s="";try{s=await this.readFilePromise(e,"utf8")}catch(a){}let o=i?$l(s,r):r;s!==o&&await this.writeFilePromise(e,o,{mode:n})}changeFileSync(e,r,i={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,i):this.changeFileTextSync(e,r,i)}changeFileBufferSync(e,r,{mode:i}={}){let n=Buffer.alloc(0);try{n=this.readFileSync(e)}catch(s){}Buffer.compare(n,r)!==0&&this.writeFileSync(e,r,{mode:i})}changeFileTextSync(e,r,{automaticNewlines:i=!1,mode:n}={}){let s="";try{s=this.readFileSync(e,"utf8")}catch(a){}let o=i?$l(s,r):r;s!==o&&this.writeFileSync(e,o,{mode:n})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(i){if(i.code==="EXDEV")await this.copyPromise(r,e),await this.removePromise(e);else throw i}}moveSync(e,r){try{this.renameSync(e,r)}catch(i){if(i.code==="EXDEV")this.copySync(r,e),this.removeSync(e);else throw i}}async lockPromise(e,r){let i=`${e}.flock`,n=1e3/60,s=Date.now(),o=null,a=async()=>{let l;try{[l]=await this.readJsonPromise(i)}catch(c){return Date.now()-s<500}try{return process.kill(l,0),!0}catch(c){return!1}};for(;o===null;)try{o=await this.openPromise(i,"wx")}catch(l){if(l.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(i);continue}catch(c){}if(Date.now()-s<60*1e3)await new Promise(c=>setTimeout(c,n));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${i})`)}else throw l}await this.writePromise(o,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(o),await this.unlinkPromise(i)}catch(l){}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} +`)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} +`)}async preserveTimePromise(e,r){let i=await this.lstatPromise(e),n=await r();typeof n!="undefined"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,r){let i=this.lstatSync(e),n=r();typeof n!="undefined"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},ec=class extends KA{constructor(){super(k)}};function vfe(t){let e=t.match(/\r?\n/g);if(e===null)return hM.EOL;let r=e.filter(n=>n===`\r +`).length,i=e.length-r;return r>i?`\r +`:` +`}function $l(t,e){return e.replace(/\r?\n/g,vfe(t))}var qu=ge(require("fs")),EQ=ge(require("stream")),mM=ge(require("util")),IQ=ge(require("zlib"));var pM=ge(require("fs"));var ar=class extends ec{constructor(e=pM.default){super();this.realFs=e,typeof this.realFs.lutimes!="undefined"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Me.root}resolve(e){return k.resolve(e)}async openPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.open(j.fromPortablePath(e),r,i,this.makeCallback(n,s))})}openSync(e,r,i){return this.realFs.openSync(j.fromPortablePath(e),r,i)}async opendirPromise(e,r){return await new Promise((i,n)=>{typeof r!="undefined"?this.realFs.opendir(j.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.opendir(j.fromPortablePath(e),this.makeCallback(i,n))}).then(i=>Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,r){let i=typeof r!="undefined"?this.realFs.opendirSync(j.fromPortablePath(e),r):this.realFs.opendirSync(j.fromPortablePath(e));return Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,r,i=0,n=0,s=-1){return await new Promise((o,a)=>{this.realFs.read(e,r,i,n,s,(l,c)=>{l?a(l):o(c)})})}readSync(e,r,i,n,s){return this.realFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return await new Promise((o,a)=>typeof r=="string"?this.realFs.write(e,r,i,this.makeCallback(o,a)):this.realFs.write(e,r,i,n,s,this.makeCallback(o,a)))}writeSync(e,r,i,n,s){return typeof r=="string"?this.realFs.writeSync(e,r,i):this.realFs.writeSync(e,r,i,n,s)}async closePromise(e){await new Promise((r,i)=>{this.realFs.close(e,this.makeCallback(r,i))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let i=e!==null?j.fromPortablePath(e):e;return this.realFs.createReadStream(i,r)}createWriteStream(e,r){let i=e!==null?j.fromPortablePath(e):e;return this.realFs.createWriteStream(i,r)}async realpathPromise(e){return await new Promise((r,i)=>{this.realFs.realpath(j.fromPortablePath(e),{},this.makeCallback(r,i))}).then(r=>j.toPortablePath(r))}realpathSync(e){return j.toPortablePath(this.realFs.realpathSync(j.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(j.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(j.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((i,n)=>{this.realFs.access(j.fromPortablePath(e),r,this.makeCallback(i,n))})}existsSync(e){return this.realFs.existsSync(j.fromPortablePath(e))}async statPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.stat(j.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.stat(j.fromPortablePath(e),this.makeCallback(i,n))})}statSync(e,r){return r?this.realFs.statSync(j.fromPortablePath(e),r):this.realFs.statSync(j.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.fstat(e,r,this.makeCallback(i,n)):this.realFs.fstat(e,this.makeCallback(i,n))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.lstat(j.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.lstat(j.fromPortablePath(e),this.makeCallback(i,n))})}lstatSync(e,r){return r?this.realFs.lstatSync(j.fromPortablePath(e),r):this.realFs.lstatSync(j.fromPortablePath(e))}async chmodPromise(e,r){return await new Promise((i,n)=>{this.realFs.chmod(j.fromPortablePath(e),r,this.makeCallback(i,n))})}chmodSync(e,r){return this.realFs.chmodSync(j.fromPortablePath(e),r)}async chownPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.chown(j.fromPortablePath(e),r,i,this.makeCallback(n,s))})}chownSync(e,r,i){return this.realFs.chownSync(j.fromPortablePath(e),r,i)}async renamePromise(e,r){return await new Promise((i,n)=>{this.realFs.rename(j.fromPortablePath(e),j.fromPortablePath(r),this.makeCallback(i,n))})}renameSync(e,r){return this.realFs.renameSync(j.fromPortablePath(e),j.fromPortablePath(r))}async copyFilePromise(e,r,i=0){return await new Promise((n,s)=>{this.realFs.copyFile(j.fromPortablePath(e),j.fromPortablePath(r),i,this.makeCallback(n,s))})}copyFileSync(e,r,i=0){return this.realFs.copyFileSync(j.fromPortablePath(e),j.fromPortablePath(r),i)}async appendFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?j.fromPortablePath(e):e;i?this.realFs.appendFile(o,r,i,this.makeCallback(n,s)):this.realFs.appendFile(o,r,this.makeCallback(n,s))})}appendFileSync(e,r,i){let n=typeof e=="string"?j.fromPortablePath(e):e;i?this.realFs.appendFileSync(n,r,i):this.realFs.appendFileSync(n,r)}async writeFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?j.fromPortablePath(e):e;i?this.realFs.writeFile(o,r,i,this.makeCallback(n,s)):this.realFs.writeFile(o,r,this.makeCallback(n,s))})}writeFileSync(e,r,i){let n=typeof e=="string"?j.fromPortablePath(e):e;i?this.realFs.writeFileSync(n,r,i):this.realFs.writeFileSync(n,r)}async unlinkPromise(e){return await new Promise((r,i)=>{this.realFs.unlink(j.fromPortablePath(e),this.makeCallback(r,i))})}unlinkSync(e){return this.realFs.unlinkSync(j.fromPortablePath(e))}async utimesPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.utimes(j.fromPortablePath(e),r,i,this.makeCallback(n,s))})}utimesSync(e,r,i){this.realFs.utimesSync(j.fromPortablePath(e),r,i)}async lutimesPromiseImpl(e,r,i){let n=this.realFs.lutimes;if(typeof n=="undefined")throw Gh("unavailable Node binding",`lutimes '${e}'`);return await new Promise((s,o)=>{n.call(this.realFs,j.fromPortablePath(e),r,i,this.makeCallback(s,o))})}lutimesSyncImpl(e,r,i){let n=this.realFs.lutimesSync;if(typeof n=="undefined")throw Gh("unavailable Node binding",`lutimes '${e}'`);n.call(this.realFs,j.fromPortablePath(e),r,i)}async mkdirPromise(e,r){return await new Promise((i,n)=>{this.realFs.mkdir(j.fromPortablePath(e),r,this.makeCallback(i,n))})}mkdirSync(e,r){return this.realFs.mkdirSync(j.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.rmdir(j.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.rmdir(j.fromPortablePath(e),this.makeCallback(i,n))})}rmdirSync(e,r){return this.realFs.rmdirSync(j.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((i,n)=>{this.realFs.link(j.fromPortablePath(e),j.fromPortablePath(r),this.makeCallback(i,n))})}linkSync(e,r){return this.realFs.linkSync(j.fromPortablePath(e),j.fromPortablePath(r))}async symlinkPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.symlink(j.fromPortablePath(e.replace(/\/+$/,"")),j.fromPortablePath(r),i,this.makeCallback(n,s))})}symlinkSync(e,r,i){return this.realFs.symlinkSync(j.fromPortablePath(e.replace(/\/+$/,"")),j.fromPortablePath(r),i)}async readFilePromise(e,r){return await new Promise((i,n)=>{let s=typeof e=="string"?j.fromPortablePath(e):e;this.realFs.readFile(s,r,this.makeCallback(i,n))})}readFileSync(e,r){let i=typeof e=="string"?j.fromPortablePath(e):e;return this.realFs.readFileSync(i,r)}async readdirPromise(e,r){return await new Promise((i,n)=>{(r==null?void 0:r.withFileTypes)?this.realFs.readdir(j.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(i,n)):this.realFs.readdir(j.fromPortablePath(e),this.makeCallback(s=>i(s),n))})}readdirSync(e,r){return(r==null?void 0:r.withFileTypes)?this.realFs.readdirSync(j.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(j.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,i)=>{this.realFs.readlink(j.fromPortablePath(e),this.makeCallback(r,i))}).then(r=>j.toPortablePath(r))}readlinkSync(e){return j.toPortablePath(this.realFs.readlinkSync(j.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((i,n)=>{this.realFs.truncate(j.fromPortablePath(e),r,this.makeCallback(i,n))})}truncateSync(e,r){return this.realFs.truncateSync(j.fromPortablePath(e),r)}watch(e,r,i){return this.realFs.watch(j.fromPortablePath(e),r,i)}watchFile(e,r,i){return this.realFs.watchFile(j.fromPortablePath(e),r,i)}unwatchFile(e,r){return this.realFs.unwatchFile(j.fromPortablePath(e),r)}makeCallback(e,r){return(i,n)=>{i?r(i):e(n)}}};var dM=ge(require("events"));var tc;(function(r){r.Change="change",r.Stop="stop"})(tc||(tc={}));var rc;(function(i){i.Ready="ready",i.Running="running",i.Stopped="stopped"})(rc||(rc={}));function CM(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var qh=class extends dM.EventEmitter{constructor(e,r,{bigint:i=!1}={}){super();this.status=rc.Ready;this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=e,this.path=r,this.bigint=i,this.lastStats=this.stat()}static create(e,r,i){let n=new qh(e,r,i);return n.start(),n}start(){CM(this.status,rc.Ready),this.status=rc.Running,this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(tc.Change,this.lastStats,this.lastStats)},3)}stop(){CM(this.status,rc.Running),this.status=rc.Stopped,this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(tc.Stop)}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch(e){let r=this.bigint?new Uh:new MA;return ME(r)}}makeInterval(e){let r=setInterval(()=>{let i=this.stat(),n=this.lastStats;fQ(i,n)||(this.lastStats=i,this.emit(tc.Change,i,n))},e.interval);return e.persistent?r:r.unref()}registerChangeListener(e,r){this.addListener(tc.Change,e),this.changeListeners.set(e,this.makeInterval(r))}unregisterChangeListener(e){this.removeListener(tc.Change,e);let r=this.changeListeners.get(e);typeof r!="undefined"&&clearInterval(r),this.changeListeners.delete(e)}unregisterAllChangeListeners(){for(let e of this.changeListeners.keys())this.unregisterChangeListener(e)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let e of this.changeListeners.values())e.ref();return this}unref(){for(let e of this.changeListeners.values())e.unref();return this}};var JE=new WeakMap;function WE(t,e,r,i){let n,s,o,a;switch(typeof r){case"function":n=!1,s=!0,o=5007,a=r;break;default:({bigint:n=!1,persistent:s=!0,interval:o=5007}=r),a=i;break}let l=JE.get(t);typeof l=="undefined"&&JE.set(t,l=new Map);let c=l.get(e);return typeof c=="undefined"&&(c=qh.create(t,e,{bigint:n}),l.set(e,c)),c.registerChangeListener(a,{persistent:s,interval:o}),c}function Jh(t,e,r){let i=JE.get(t);if(typeof i=="undefined")return;let n=i.get(e);typeof n!="undefined"&&(typeof r=="undefined"?n.unregisterAllChangeListeners():n.unregisterChangeListener(r),n.hasChangeListeners()||(n.stop(),i.delete(e)))}function Wh(t){let e=JE.get(t);if(typeof e!="undefined")for(let r of e.keys())Jh(t,r)}var ic="mixed";function Sfe(t){if(typeof t=="string"&&String(+t)===t)return+t;if(Number.isFinite(t))return t<0?Date.now()/1e3:t;if(mM.types.isDate(t))return t.getTime()/1e3;throw new Error("Invalid time")}function EM(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Ai=class extends ec{constructor(e,r){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;this.libzip=r.libzip;let i=r;if(this.level=typeof i.level!="undefined"?i.level:ic,e!=null||(e=EM()),typeof e=="string"){let{baseFs:o=new ar}=i;this.baseFs=o,this.path=e}else this.path=null,this.baseFs=null;if(r.stats)this.stats=r.stats;else if(typeof e=="string")try{this.stats=this.baseFs.statSync(e)}catch(o){if(o.code==="ENOENT"&&i.create)this.stats=Kh();else throw o}else this.stats=Kh();let n=this.libzip.malloc(4);try{let o=0;if(typeof e=="string"&&i.create&&(o|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),r.readOnly&&(o|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof e=="string")this.zip=this.libzip.open(j.fromPortablePath(e),o,n);else{let a=this.allocateUnattachedSource(e);try{this.zip=this.libzip.openFromSource(a,o,n),this.lzSource=a}catch(l){throw this.libzip.source.free(a),l}}if(this.zip===0){let a=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(a,this.libzip.getValue(n,"i32")),this.makeLibzipError(a)}}finally{this.libzip.free(n)}this.listings.set(Me.root,new Set);let s=this.libzip.getNumEntries(this.zip,0);for(let o=0;oe)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(r,r+e);return Buffer.from(n)}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw GE("archive closed, close");Wh(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let e=this.baseFs.existsSync(this.path)||this.stats.mode===Mh?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,EM(),{mode:e});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof e!="undefined"&&this.baseFs.chmodSync(this.path,e)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(e){return k.resolve(Me.root,e)}async openPromise(e,r,i){return this.openSync(e,r,i)}openSync(e,r,i){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:e}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(e,r){return this.opendirSync(e,r)}opendirSync(e,r={}){let i=this.resolveFilename(`opendir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw to(`opendir '${e}'`);let n=this.listings.get(i);if(!n)throw Do(`opendir '${e}'`);let s=[...n],o=this.openSync(i,"r");return qE(this,i,s,{onClose:()=>{this.closeSync(o)}})}async readPromise(e,r,i,n,s){return this.readSync(e,r,i,n,s)}readSync(e,r,i=0,n=r.byteLength,s=-1){let o=this.fds.get(e);if(typeof o=="undefined")throw en("read");let a=s===-1||s===null?o.cursor:s,l=this.readFileSync(o.p);l.copy(r,i,a,a+n);let c=Math.max(0,Math.min(l.length-a,n));return(s===-1||s===null)&&(o.cursor+=c),c}async writePromise(e,r,i,n,s){return typeof r=="string"?this.writeSync(e,r,s):this.writeSync(e,r,i,n,s)}writeSync(e,r,i,n,s){throw typeof this.fds.get(e)=="undefined"?en("read"):new Error("Unimplemented")}async closePromise(e){return this.closeSync(e)}closeSync(e){if(typeof this.fds.get(e)=="undefined")throw en("read");this.fds.delete(e)}createReadStream(e,{encoding:r}={}){if(e===null)throw new Error("Unimplemented");let i=this.openSync(e,"r"),n=Object.assign(new EQ.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(o,a)=>{clearImmediate(s),this.closeSync(i),a(o)}}),{close(){n.destroy()},bytesRead:0,path:e}),s=setImmediate(async()=>{try{let o=await this.readFilePromise(e,r);n.bytesRead=o.length,n.end(o)}catch(o){n.destroy(o)}});return n}createWriteStream(e,{encoding:r}={}){if(this.readOnly)throw In(`open '${e}'`);if(e===null)throw new Error("Unimplemented");let i=[],n=this.openSync(e,"w"),s=Object.assign(new EQ.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(o,a)=>{try{o?a(o):(this.writeFileSync(e,Buffer.concat(i),r),a(null))}catch(l){a(l)}finally{this.closeSync(n)}}}),{bytesWritten:0,path:e,close(){s.destroy()}});return s.on("data",o=>{let a=Buffer.from(o);s.bytesWritten+=a.length,i.push(a)}),s}async realpathPromise(e){return this.realpathSync(e)}realpathSync(e){let r=this.resolveFilename(`lstat '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw to(`lstat '${e}'`);return r}async existsPromise(e){return this.existsSync(e)}existsSync(e){if(!this.ready)throw GE(`archive closed, existsSync '${e}'`);if(this.symlinkCount===0){let i=k.resolve(Me.root,e);return this.entries.has(i)||this.listings.has(i)}let r;try{r=this.resolveFilename(`stat '${e}'`,e)}catch(i){return!1}return this.entries.has(r)||this.listings.has(r)}async accessPromise(e,r){return this.accessSync(e,r)}accessSync(e,r=qu.constants.F_OK){let i=this.resolveFilename(`access '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw to(`access '${e}'`);if(this.readOnly&&r&qu.constants.W_OK)throw In(`access '${e}'`)}async statPromise(e,r){return this.statSync(e,r)}statSync(e,r){let i=this.resolveFilename(`stat '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw to(`stat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw Do(`stat '${e}'`);return this.statImpl(`stat '${e}'`,i,r)}async fstatPromise(e,r){return this.fstatSync(e,r)}fstatSync(e,r){let i=this.fds.get(e);if(typeof i=="undefined")throw en("fstatSync");let{p:n}=i,s=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(s)&&!this.listings.has(s))throw to(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(s))throw Do(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,s,r)}async lstatPromise(e,r){return this.lstatSync(e,r)}lstatSync(e,r){let i=this.resolveFilename(`lstat '${e}'`,e,!1);if(!this.entries.has(i)&&!this.listings.has(i))throw to(`lstat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw Do(`lstat '${e}'`);return this.statImpl(`lstat '${e}'`,i,r)}statImpl(e,r,i={}){let n=this.entries.get(r);if(typeof n!="undefined"){let s=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.stats.uid,l=this.stats.gid,c=this.libzip.struct.statSize(s)>>>0,u=512,g=Math.ceil(c/u),f=(this.libzip.struct.statMtime(s)>>>0)*1e3,h=f,p=f,m=f,y=new Date(h),Q=new Date(p),S=new Date(m),x=new Date(f),M=this.listings.has(r)?Sa:this.isSymbolicLink(n)?xa:ka,Y=M===Sa?493:420,U=M|this.getUnixMode(n,Y)&511,J=this.libzip.struct.statCrc(s),W=Object.assign(new MA,{uid:a,gid:l,size:c,blksize:u,blocks:g,atime:y,birthtime:Q,ctime:S,mtime:x,atimeMs:h,birthtimeMs:p,ctimeMs:m,mtimeMs:f,mode:U,crc:J});return i.bigint===!0?UE(W):W}if(this.listings.has(r)){let s=this.stats.uid,o=this.stats.gid,a=0,l=512,c=0,u=this.stats.mtimeMs,g=this.stats.mtimeMs,f=this.stats.mtimeMs,h=this.stats.mtimeMs,p=new Date(u),m=new Date(g),y=new Date(f),Q=new Date(h),S=Sa|493,x=0,M=Object.assign(new MA,{uid:s,gid:o,size:a,blksize:l,blocks:c,atime:p,birthtime:m,ctime:y,mtime:Q,atimeMs:u,birthtimeMs:g,ctimeMs:f,mtimeMs:h,mode:S,crc:x});return i.bigint===!0?UE(M):M}throw new Error("Unreachable")}getUnixMode(e,r){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?r:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(e){let r=this.listings.get(e);if(r)return r;this.registerListing(k.dirname(e)).add(k.basename(e));let n=new Set;return this.listings.set(e,n),n}registerEntry(e,r){this.registerListing(k.dirname(e)).add(k.basename(e)),this.entries.set(e,r)}unregisterListing(e){this.listings.delete(e);let r=this.listings.get(k.dirname(e));r==null||r.delete(k.basename(e))}unregisterEntry(e){this.unregisterListing(e);let r=this.entries.get(e);this.entries.delete(e),typeof r!="undefined"&&(this.fileSources.delete(r),this.isSymbolicLink(r)&&this.symlinkCount--)}deleteEntry(e,r){if(this.unregisterEntry(e),this.libzip.delete(this.zip,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(e,r,i=!0){if(!this.ready)throw GE(`archive closed, ${e}`);let n=k.resolve(Me.root,r);if(n==="/")return Me.root;let s=this.entries.get(n);if(i&&s!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(s)){let o=this.getFileSource(s).toString();return this.resolveFilename(e,k.resolve(k.dirname(n),o),!0)}else return n;for(;;){let o=this.resolveFilename(e,k.dirname(n),!0),a=this.listings.has(o),l=this.entries.has(o);if(!a&&!l)throw to(e);if(!a)throw Do(e);if(n=k.resolve(o,k.basename(n)),!i||this.symlinkCount===0)break;let c=this.libzip.name.locate(this.zip,n.slice(1));if(c===-1)break;if(this.isSymbolicLink(c)){let u=this.getFileSource(c).toString();n=k.resolve(k.dirname(n),u)}else break}return n}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:i,byteLength:n}=this.allocateBuffer(e),s=this.libzip.source.fromUnattachedBuffer(i,n,0,!0,r);if(s===0)throw this.libzip.free(r),this.makeLibzipError(r);return s}allocateSource(e){let{buffer:r,byteLength:i}=this.allocateBuffer(e),n=this.libzip.source.fromBuffer(this.zip,r,i,0,!0);if(n===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(e,r){let i=Buffer.isBuffer(r)?r:Buffer.from(r),n=k.relative(Me.root,e),s=this.allocateSource(r);try{let o=this.libzip.file.add(this.zip,n,s,this.libzip.ZIP_FL_OVERWRITE);if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let a=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,o,0,a,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(o,i),o}catch(o){throw this.libzip.source.free(s),o}}isSymbolicLink(e){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&zn)===xa}getFileSource(e,r={asyncDecompress:!1}){let i=this.fileSources.get(e);if(typeof i!="undefined")return i;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let o=this.libzip.struct.statCompSize(n),a=this.libzip.struct.statCompMethod(n),l=this.libzip.malloc(o);try{let c=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(c===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let u=this.libzip.fread(c,l,o,0);if(u===-1)throw this.makeLibzipError(this.libzip.file.getError(c));if(uo)throw new Error("Overread");let g=this.libzip.HEAPU8.subarray(l,l+o),f=Buffer.from(g);if(a===0)return this.fileSources.set(e,f),f;if(r.asyncDecompress)return new Promise((h,p)=>{IQ.default.inflateRaw(f,(m,y)=>{m?p(m):(this.fileSources.set(e,y),h(y))})});{let h=IQ.default.inflateRawSync(f);return this.fileSources.set(e,h),h}}finally{this.libzip.fclose(c)}}finally{this.libzip.free(l)}}async chmodPromise(e,r){return this.chmodSync(e,r)}chmodSync(e,r){if(this.readOnly)throw In(`chmod '${e}'`);r&=493;let i=this.resolveFilename(`chmod '${e}'`,e,!1),n=this.entries.get(i);if(typeof n=="undefined")throw new Error(`Assertion failed: The entry should have been registered (${i})`);let o=this.getUnixMode(n,ka|0)&~511|r;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,o<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async chownPromise(e,r,i){return this.chownSync(e,r,i)}chownSync(e,r,i){throw new Error("Unimplemented")}async renamePromise(e,r){return this.renameSync(e,r)}renameSync(e,r){throw new Error("Unimplemented")}async copyFilePromise(e,r,i){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=await this.getFileSource(n,{asyncDecompress:!0}),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}copyFileSync(e,r,i=0){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=this.getFileSource(n),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}prepareCopyFile(e,r,i=0){if(this.readOnly)throw In(`copyfile '${e} -> '${r}'`);if((i&qu.constants.COPYFILE_FICLONE_FORCE)!=0)throw Gh("unsupported clone operation",`copyfile '${e}' -> ${r}'`);let n=this.resolveFilename(`copyfile '${e} -> ${r}'`,e),s=this.entries.get(n);if(typeof s=="undefined")throw UA(`copyfile '${e}' -> '${r}'`);let o=this.resolveFilename(`copyfile '${e}' -> ${r}'`,r),a=this.entries.get(o);if((i&(qu.constants.COPYFILE_EXCL|qu.constants.COPYFILE_FICLONE_FORCE))!=0&&typeof a!="undefined")throw YE(`copyfile '${e}' -> '${r}'`);return{indexSource:s,resolvedDestP:o,indexDest:a}}async appendFilePromise(e,r,i){if(this.readOnly)throw In(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=N({flag:"a"},i)),this.writeFilePromise(e,r,i)}appendFileSync(e,r,i={}){if(this.readOnly)throw In(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=N({flag:"a"},i)),this.writeFileSync(e,r,i)}fdToPath(e,r){var n;let i=(n=this.fds.get(e))==null?void 0:n.p;if(typeof i=="undefined")throw en(r);return i}async writeFilePromise(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([await this.getFileSource(o,{asyncDecompress:!0}),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&await this.chmodPromise(a,s)}writeFileSync(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([this.getFileSource(o),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&this.chmodSync(a,s)}prepareWriteFile(e,r){if(typeof e=="number"&&(e=this.fdToPath(e,"read")),this.readOnly)throw In(`open '${e}'`);let i=this.resolveFilename(`open '${e}'`,e);if(this.listings.has(i))throw Yh(`open '${e}'`);let n=null,s=null;typeof r=="string"?n=r:typeof r=="object"&&({encoding:n=null,mode:s=null}=r);let o=this.entries.get(i);return{encoding:n,mode:s,resolvedP:i,index:o}}async unlinkPromise(e){return this.unlinkSync(e)}unlinkSync(e){if(this.readOnly)throw In(`unlink '${e}'`);let r=this.resolveFilename(`unlink '${e}'`,e);if(this.listings.has(r))throw Yh(`unlink '${e}'`);let i=this.entries.get(r);if(typeof i=="undefined")throw UA(`unlink '${e}'`);this.deleteEntry(r,i)}async utimesPromise(e,r,i){return this.utimesSync(e,r,i)}utimesSync(e,r,i){if(this.readOnly)throw In(`utimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e);this.utimesImpl(n,i)}async lutimesPromise(e,r,i){return this.lutimesSync(e,r,i)}lutimesSync(e,r,i){if(this.readOnly)throw In(`lutimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e,!1);this.utimesImpl(n,i)}utimesImpl(e,r){this.listings.has(e)&&(this.entries.has(e)||this.hydrateDirectory(e));let i=this.entries.get(e);if(i===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,i,0,Sfe(r),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(e,r){return this.mkdirSync(e,r)}mkdirSync(e,{mode:r=493,recursive:i=!1}={}){if(i){this.mkdirpSync(e,{chmod:r});return}if(this.readOnly)throw In(`mkdir '${e}'`);let n=this.resolveFilename(`mkdir '${e}'`,e);if(this.entries.has(n)||this.listings.has(n))throw YE(`mkdir '${e}'`);this.hydrateDirectory(n),this.chmodSync(n,r)}async rmdirPromise(e,r){return this.rmdirSync(e,r)}rmdirSync(e,{recursive:r=!1}={}){if(this.readOnly)throw In(`rmdir '${e}'`);if(r){this.removeSync(e);return}let i=this.resolveFilename(`rmdir '${e}'`,e),n=this.listings.get(i);if(!n)throw Do(`rmdir '${e}'`);if(n.size>0)throw cM(`rmdir '${e}'`);let s=this.entries.get(i);if(typeof s=="undefined")throw UA(`rmdir '${e}'`);this.deleteEntry(e,s)}hydrateDirectory(e){let r=this.libzip.dir.add(this.zip,k.relative(Me.root,e));if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(e),this.registerEntry(e,r),r}async linkPromise(e,r){return this.linkSync(e,r)}linkSync(e,r){throw uM(`link '${e}' -> '${r}'`)}async symlinkPromise(e,r){return this.symlinkSync(e,r)}symlinkSync(e,r){if(this.readOnly)throw In(`symlink '${e}' -> '${r}'`);let i=this.resolveFilename(`symlink '${e}' -> '${r}'`,r);if(this.listings.has(i))throw Yh(`symlink '${e}' -> '${r}'`);if(this.entries.has(i))throw YE(`symlink '${e}' -> '${r}'`);let n=this.setFileSource(i,e);if(this.registerEntry(i,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(xa|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=await this.readFileBuffer(e,{asyncDecompress:!0});return r?i.toString(r):i}readFileSync(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=this.readFileBuffer(e);return r?i.toString(r):i}readFileBuffer(e,r={asyncDecompress:!1}){typeof e=="number"&&(e=this.fdToPath(e,"read"));let i=this.resolveFilename(`open '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw to(`open '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw Do(`open '${e}'`);if(this.listings.has(i))throw Yh("read");let n=this.entries.get(i);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,r)}async readdirPromise(e,r){return this.readdirSync(e,r)}readdirSync(e,r){let i=this.resolveFilename(`scandir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw to(`scandir '${e}'`);let n=this.listings.get(i);if(!n)throw Do(`scandir '${e}'`);let s=[...n];return(r==null?void 0:r.withFileTypes)?s.map(o=>Object.assign(this.statImpl("lstat",k.join(e,o)),{name:o})):s}async readlinkPromise(e){let r=this.prepareReadlink(e);return(await this.getFileSource(r,{asyncDecompress:!0})).toString()}readlinkSync(e){let r=this.prepareReadlink(e);return this.getFileSource(r).toString()}prepareReadlink(e){let r=this.resolveFilename(`readlink '${e}'`,e,!1);if(!this.entries.has(r)&&!this.listings.has(r))throw to(`readlink '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(r))throw Do(`open '${e}'`);if(this.listings.has(r))throw UA(`readlink '${e}'`);let i=this.entries.get(r);if(i===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(i))throw UA(`readlink '${e}'`);return i}async truncatePromise(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw UA(`open '${e}'`);let s=await this.getFileSource(n,{asyncDecompress:!0}),o=Buffer.alloc(r,0);return s.copy(o),await this.writeFilePromise(e,o)}truncateSync(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw UA(`open '${e}'`);let s=this.getFileSource(n),o=Buffer.alloc(r,0);return s.copy(o),this.writeFileSync(e,o)}watch(e,r,i){let n;switch(typeof r){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=r);break}if(!n)return{on:()=>{},close:()=>{}};let s=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(s)}}}watchFile(e,r,i){let n=k.resolve(Me.root,e);return WE(this,n,r,i)}unwatchFile(e,r){let i=k.resolve(Me.root,e);return Jh(this,i,r)}};var bi=class extends KA{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,i){return this.baseFs.openPromise(this.mapToBase(e),r,i)}openSync(e,r,i){return this.baseFs.openSync(this.mapToBase(e),r,i)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,i,n,s){return await this.baseFs.readPromise(e,r,i,n,s)}readSync(e,r,i,n,s){return this.baseFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s)}writeSync(e,r,i,n,s){return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}async lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async chownPromise(e,r,i){return this.baseFs.chownPromise(this.mapToBase(e),r,i)}chownSync(e,r,i){return this.baseFs.chownSync(this.mapToBase(e),r,i)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,i=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),i)}copyFileSync(e,r,i=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),i)}async appendFilePromise(e,r,i){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,i)}appendFileSync(e,r,i){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,i)}async writeFilePromise(e,r,i){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,i)}writeFileSync(e,r,i){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,i)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,i){return this.baseFs.utimesPromise(this.mapToBase(e),r,i)}utimesSync(e,r,i){return this.baseFs.utimesSync(this.mapToBase(e),r,i)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkPromise(o,n,i)}symlinkSync(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkSync(o,n,i)}async readFilePromise(e,r){return r==="utf8"?this.baseFs.readFilePromise(this.fsMapToBase(e),r):this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return r==="utf8"?this.baseFs.readFileSync(this.fsMapToBase(e),r):this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}watch(e,r,i){return this.baseFs.watch(this.mapToBase(e),r,i)}watchFile(e,r,i){return this.baseFs.watchFile(this.mapToBase(e),r,i)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};var Pa=class extends bi{constructor(e,{baseFs:r,pathUtils:i}){super(i);this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}};var _t=class extends bi{constructor(e,{baseFs:r=new ar}={}){super(k);this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?k.normalize(e):this.baseFs.resolve(k.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}};var IM=Me.root,Da=class extends bi{constructor(e,{baseFs:r=new ar}={}){super(k);this.target=this.pathUtils.resolve(Me.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Me.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(IM,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(IM,this.pathUtils.relative(this.target,e))}};var zh=class extends bi{constructor(e,r){super(r);this.instance=null;this.factory=e}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(e){this.instance=e}mapFromBase(e){return e}mapToBase(e){return e}};var st=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),yQ=class extends KA{constructor(){super(k)}getExtractHint(){throw st()}getRealPath(){throw st()}resolve(){throw st()}async openPromise(){throw st()}openSync(){throw st()}async opendirPromise(){throw st()}opendirSync(){throw st()}async readPromise(){throw st()}readSync(){throw st()}async writePromise(){throw st()}writeSync(){throw st()}async closePromise(){throw st()}closeSync(){throw st()}createWriteStream(){throw st()}createReadStream(){throw st()}async realpathPromise(){throw st()}realpathSync(){throw st()}async readdirPromise(){throw st()}readdirSync(){throw st()}async existsPromise(e){throw st()}existsSync(e){throw st()}async accessPromise(){throw st()}accessSync(){throw st()}async statPromise(){throw st()}statSync(){throw st()}async fstatPromise(e){throw st()}fstatSync(e){throw st()}async lstatPromise(e){throw st()}lstatSync(e){throw st()}async chmodPromise(){throw st()}chmodSync(){throw st()}async chownPromise(){throw st()}chownSync(){throw st()}async mkdirPromise(){throw st()}mkdirSync(){throw st()}async rmdirPromise(){throw st()}rmdirSync(){throw st()}async linkPromise(){throw st()}linkSync(){throw st()}async symlinkPromise(){throw st()}symlinkSync(){throw st()}async renamePromise(){throw st()}renameSync(){throw st()}async copyFilePromise(){throw st()}copyFileSync(){throw st()}async appendFilePromise(){throw st()}appendFileSync(){throw st()}async writeFilePromise(){throw st()}writeFileSync(){throw st()}async unlinkPromise(){throw st()}unlinkSync(){throw st()}async utimesPromise(){throw st()}utimesSync(){throw st()}async readFilePromise(){throw st()}readFileSync(){throw st()}async readlinkPromise(){throw st()}readlinkSync(){throw st()}async truncatePromise(){throw st()}truncateSync(){throw st()}watch(){throw st()}watchFile(){throw st()}unwatchFile(){throw st()}},zE=yQ;zE.instance=new yQ;var _h=class extends bi{constructor(e){super(j);this.baseFs=e}mapFromBase(e){return j.fromPortablePath(e)}mapToBase(e){return j.toPortablePath(e)}};var kfe=/^[0-9]+$/,wQ=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,xfe=/^([^/]+-)?[a-f0-9]+$/,Jr=class extends bi{static makeVirtualPath(e,r,i){if(k.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!k.basename(r).match(xfe))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let s=k.relative(k.dirname(e),i).split("/"),o=0;for(;o{let r=t.indexOf(e);if(r<=0)return null;let i=r;for(;r>=0&&(i=r+e.length,t[i]!==k.sep);){if(t[r-1]===k.sep)return null;r=t.indexOf(e,i)}return t.length>i&&t[i]!==k.sep?null:t.slice(0,i)},ms=class extends ec{constructor({libzip:e,baseFs:r=new ar,filter:i=null,maxOpenFiles:n=Infinity,readOnlyArchives:s=!1,useCache:o=!0,maxAge:a=5e3,fileExtensions:l=null}){super();this.fdMap=new Map;this.nextFd=3;this.isZip=new Set;this.notZip=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.libzipFactory=typeof e!="function"?()=>e:e,this.baseFs=r,this.zipInstances=o?new Map:null,this.filter=i,this.maxOpenFiles=n,this.readOnlyArchives=s,this.maxAge=a,this.fileExtensions=l}static async openPromise(e,r){let i=new ms(r);try{return await e(i)}finally{i.saveAndClose()}}get libzip(){return typeof this.libzipInstance=="undefined"&&(this.libzipInstance=this.libzipFactory()),this.libzipInstance}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(Wh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.saveAndClose(),this.zipInstances.delete(e)}discardAndClose(){if(Wh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.discardAndClose(),this.zipInstances.delete(e)}resolve(e){return this.baseFs.resolve(e)}remapFd(e,r){let i=this.nextFd++|Ra;return this.fdMap.set(i,[e,r]),i}async openPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.openPromise(e,r,i),async(n,{subPath:s})=>this.remapFd(n,await n.openPromise(s,r,i)))}openSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.openSync(e,r,i),(n,{subPath:s})=>this.remapFd(n,n.openSync(s,r,i)))}async opendirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.opendirPromise(e,r),async(i,{subPath:n})=>await i.opendirPromise(n,r),{requireSubpath:!1})}opendirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.opendirSync(e,r),(i,{subPath:n})=>i.opendirSync(n,r),{requireSubpath:!1})}async readPromise(e,r,i,n,s){if((e&Ra)==0)return await this.baseFs.readPromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw en("read");let[a,l]=o;return await a.readPromise(l,r,i,n,s)}readSync(e,r,i,n,s){if((e&Ra)==0)return this.baseFs.readSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw en("readSync");let[a,l]=o;return a.readSync(l,r,i,n,s)}async writePromise(e,r,i,n,s){if((e&Ra)==0)return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw en("write");let[a,l]=o;return typeof r=="string"?await a.writePromise(l,r,i):await a.writePromise(l,r,i,n,s)}writeSync(e,r,i,n,s){if((e&Ra)==0)return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw en("writeSync");let[a,l]=o;return typeof r=="string"?a.writeSync(l,r,i):a.writeSync(l,r,i,n,s)}async closePromise(e){if((e&Ra)==0)return await this.baseFs.closePromise(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw en("close");this.fdMap.delete(e);let[i,n]=r;return await i.closePromise(n)}closeSync(e){if((e&Ra)==0)return this.baseFs.closeSync(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw en("closeSync");this.fdMap.delete(e);let[i,n]=r;return i.closeSync(n)}createReadStream(e,r){return e===null?this.baseFs.createReadStream(e,r):this.makeCallSync(e,()=>this.baseFs.createReadStream(e,r),(i,{archivePath:n,subPath:s})=>{let o=i.createReadStream(s,r);return o.path=j.fromPortablePath(this.pathUtils.join(n,s)),o})}createWriteStream(e,r){return e===null?this.baseFs.createWriteStream(e,r):this.makeCallSync(e,()=>this.baseFs.createWriteStream(e,r),(i,{subPath:n})=>i.createWriteStream(n,r))}async realpathPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.realpathPromise(e),async(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=await this.baseFs.realpathPromise(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Me.root,await r.realpathPromise(n)))})}realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSync(e),(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=this.baseFs.realpathSync(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Me.root,r.realpathSync(n)))})}async existsPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.existsPromise(e),async(r,{subPath:i})=>await r.existsPromise(i))}existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e),(r,{subPath:i})=>r.existsSync(i))}async accessPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.accessPromise(e,r),async(i,{subPath:n})=>await i.accessPromise(n,r))}accessSync(e,r){return this.makeCallSync(e,()=>this.baseFs.accessSync(e,r),(i,{subPath:n})=>i.accessSync(n,r))}async statPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.statPromise(e,r),async(i,{subPath:n})=>await i.statPromise(n,r))}statSync(e,r){return this.makeCallSync(e,()=>this.baseFs.statSync(e,r),(i,{subPath:n})=>i.statSync(n,r))}async fstatPromise(e,r){if((e&Ra)==0)return this.baseFs.fstatPromise(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw en("fstat");let[n,s]=i;return n.fstatPromise(s,r)}fstatSync(e,r){if((e&Ra)==0)return this.baseFs.fstatSync(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw en("fstatSync");let[n,s]=i;return n.fstatSync(s,r)}async lstatPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.lstatPromise(e,r),async(i,{subPath:n})=>await i.lstatPromise(n,r))}lstatSync(e,r){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e,r),(i,{subPath:n})=>i.lstatSync(n,r))}async chmodPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.chmodPromise(e,r),async(i,{subPath:n})=>await i.chmodPromise(n,r))}chmodSync(e,r){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,r),(i,{subPath:n})=>i.chmodSync(n,r))}async chownPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.chownPromise(e,r,i),async(n,{subPath:s})=>await n.chownPromise(s,r,i))}chownSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.chownSync(e,r,i),(n,{subPath:s})=>n.chownSync(s,r,i))}async renamePromise(e,r){return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.renamePromise(e,r),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(i,{subPath:n})=>await this.makeCallPromise(r,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await i.renamePromise(n,o)}))}renameSync(e,r){return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.renameSync(e,r),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(i,{subPath:n})=>this.makeCallSync(r,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return i.renameSync(n,o)}))}async copyFilePromise(e,r,i=0){let n=async(s,o,a,l)=>{if((i&Vh.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Vh.constants.COPYFILE_EXCL&&await this.existsPromise(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=await s.readFilePromise(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}await a.writeFilePromise(l,c)};return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.copyFilePromise(e,r,i),async(s,{subPath:o})=>await n(this.baseFs,e,s,o)),async(s,{subPath:o})=>await this.makeCallPromise(r,async()=>await n(s,o,this.baseFs,r),async(a,{subPath:l})=>s!==a?await n(s,o,a,l):await s.copyFilePromise(o,l,i)))}copyFileSync(e,r,i=0){let n=(s,o,a,l)=>{if((i&Vh.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Vh.constants.COPYFILE_EXCL&&this.existsSync(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=s.readFileSync(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}a.writeFileSync(l,c)};return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.copyFileSync(e,r,i),(s,{subPath:o})=>n(this.baseFs,e,s,o)),(s,{subPath:o})=>this.makeCallSync(r,()=>n(s,o,this.baseFs,r),(a,{subPath:l})=>s!==a?n(s,o,a,l):s.copyFileSync(o,l,i)))}async appendFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.appendFilePromise(e,r,i),async(n,{subPath:s})=>await n.appendFilePromise(s,r,i))}appendFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.appendFileSync(e,r,i),(n,{subPath:s})=>n.appendFileSync(s,r,i))}async writeFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.writeFilePromise(e,r,i),async(n,{subPath:s})=>await n.writeFilePromise(s,r,i))}writeFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.writeFileSync(e,r,i),(n,{subPath:s})=>n.writeFileSync(s,r,i))}async unlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.unlinkPromise(e),async(r,{subPath:i})=>await r.unlinkPromise(i))}unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e),(r,{subPath:i})=>r.unlinkSync(i))}async utimesPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.utimesPromise(e,r,i),async(n,{subPath:s})=>await n.utimesPromise(s,r,i))}utimesSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.utimesSync(e,r,i),(n,{subPath:s})=>n.utimesSync(s,r,i))}async mkdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.mkdirPromise(e,r),async(i,{subPath:n})=>await i.mkdirPromise(n,r))}mkdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,r),(i,{subPath:n})=>i.mkdirSync(n,r))}async rmdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.rmdirPromise(e,r),async(i,{subPath:n})=>await i.rmdirPromise(n,r))}rmdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e,r),(i,{subPath:n})=>i.rmdirSync(n,r))}async linkPromise(e,r){return await this.makeCallPromise(r,async()=>await this.baseFs.linkPromise(e,r),async(i,{subPath:n})=>await i.linkPromise(e,n))}linkSync(e,r){return this.makeCallSync(r,()=>this.baseFs.linkSync(e,r),(i,{subPath:n})=>i.linkSync(e,n))}async symlinkPromise(e,r,i){return await this.makeCallPromise(r,async()=>await this.baseFs.symlinkPromise(e,r,i),async(n,{subPath:s})=>await n.symlinkPromise(e,s))}symlinkSync(e,r,i){return this.makeCallSync(r,()=>this.baseFs.symlinkSync(e,r,i),(n,{subPath:s})=>n.symlinkSync(e,s))}async readFilePromise(e,r){return this.makeCallPromise(e,async()=>{switch(r){case"utf8":return await this.baseFs.readFilePromise(e,r);default:return await this.baseFs.readFilePromise(e,r)}},async(i,{subPath:n})=>await i.readFilePromise(n,r))}readFileSync(e,r){return this.makeCallSync(e,()=>{switch(r){case"utf8":return this.baseFs.readFileSync(e,r);default:return this.baseFs.readFileSync(e,r)}},(i,{subPath:n})=>i.readFileSync(n,r))}async readdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.readdirPromise(e,r),async(i,{subPath:n})=>await i.readdirPromise(n,r),{requireSubpath:!1})}readdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.readdirSync(e,r),(i,{subPath:n})=>i.readdirSync(n,r),{requireSubpath:!1})}async readlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.readlinkPromise(e),async(r,{subPath:i})=>await r.readlinkPromise(i))}readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSync(e),(r,{subPath:i})=>r.readlinkSync(i))}async truncatePromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.truncatePromise(e,r),async(i,{subPath:n})=>await i.truncatePromise(n,r))}truncateSync(e,r){return this.makeCallSync(e,()=>this.baseFs.truncateSync(e,r),(i,{subPath:n})=>i.truncateSync(n,r))}watch(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watch(e,r,i),(n,{subPath:s})=>n.watch(s,r,i))}watchFile(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watchFile(e,r,i),()=>WE(this,e,r,i))}unwatchFile(e,r){return this.makeCallSync(e,()=>this.baseFs.unwatchFile(e,r),()=>Jh(this,e,r))}async makeCallPromise(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return await r();let s=this.resolve(e),o=this.findZip(s);return o?n&&o.subPath==="/"?await r():await this.getZipPromise(o.archivePath,async a=>await i(a,o)):await r()}makeCallSync(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return r();let s=this.resolve(e),o=this.findZip(s);return!o||n&&o.subPath==="/"?r():this.getZipSync(o.archivePath,a=>i(a,o))}findZip(e){if(this.filter&&!this.filter.test(e))return null;let r="";for(;;){let i=e.substring(r.length),n;if(!this.fileExtensions)n=yM(i,".zip");else for(let s of this.fileExtensions)if(n=yM(i,s),n)break;if(!n)return null;if(r=this.pathUtils.join(r,n),this.isZip.has(r)===!1){if(this.notZip.has(r))continue;try{if(!this.baseFs.lstatSync(r).isFile()){this.notZip.add(r);continue}}catch{return null}this.isZip.add(r)}return{archivePath:r,subPath:this.pathUtils.join(Me.root,e.substring(r.length))}}}limitOpenFiles(e){if(this.zipInstances===null)return;let r=Date.now(),i=r+this.maxAge,n=e===null?0:this.zipInstances.size-e;for(let[s,{zipFs:o,expiresAt:a,refCount:l}]of this.zipInstances.entries())if(!(l!==0||o.hasOpenFileHandles())){if(r>=a){o.saveAndClose(),this.zipInstances.delete(s),n-=1;continue}else if(e===null||n<=0){i=a;break}o.saveAndClose(),this.zipInstances.delete(s),n-=1}this.limitOpenFilesTimeout===null&&(e===null&&this.zipInstances.size>0||e!==null)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},i-r).unref())}async getZipPromise(e,r){let i=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(e)});if(this.zipInstances){let n=this.zipInstances.get(e);if(!n){let s=await i();n=this.zipInstances.get(e),n||(n={zipFs:new Ai(e,s),expiresAt:0,refCount:0})}this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await r(n.zipFs)}finally{n.refCount-=1}}else{let n=new Ai(e,await i());try{return await r(n)}finally{n.saveAndClose()}}}getZipSync(e,r){let i=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(e)});if(this.zipInstances){let n=this.zipInstances.get(e);return n||(n={zipFs:new Ai(e,i()),expiresAt:0,refCount:0}),this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,r(n.zipFs)}else{let n=new Ai(e,i());try{return r(n)}finally{n.saveAndClose()}}}};var Xh=ge(require("util"));var _E=ge(require("url"));var BQ=class extends bi{constructor(e){super(j);this.baseFs=e}mapFromBase(e){return e}mapToBase(e){return e instanceof _E.URL?(0,_E.fileURLToPath)(e):e}};var Pfe=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","chownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),wM=new Set(["accessPromise","appendFilePromise","chmodPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]),Dfe=new Set(["appendFilePromise","chmodPromise","chownPromise","closePromise","readPromise","readFilePromise","statPromise","truncatePromise","utimesPromise","writePromise","writeFilePromise"]);function bQ(t,e){e=new BQ(e);let r=(i,n,s)=>{let o=i[n];i[n]=s,typeof(o==null?void 0:o[Xh.promisify.custom])!="undefined"&&(s[Xh.promisify.custom]=o[Xh.promisify.custom])};{r(t,"exists",(i,...n)=>{let o=typeof n[n.length-1]=="function"?n.pop():()=>{};process.nextTick(()=>{e.existsPromise(i).then(a=>{o(a)},()=>{o(!1)})})}),r(t,"read",(...i)=>{let[n,s,o,a,l,c]=i;if(i.length<=3){let u={};i.length<3?c=i[1]:(u=i[1],c=i[2]),{buffer:s=Buffer.alloc(16384),offset:o=0,length:a=s.byteLength,position:l}=u}if(o==null&&(o=0),a|=0,a===0){process.nextTick(()=>{c(null,0,s)});return}l==null&&(l=-1),process.nextTick(()=>{e.readPromise(n,s,o,a,l).then(u=>{c(null,u,s)},u=>{c(u,0,s)})})});for(let i of wM){let n=i.replace(/Promise$/,"");if(typeof t[n]=="undefined")continue;let s=e[i];if(typeof s=="undefined")continue;r(t,n,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{s.apply(e,a).then(u=>{c(null,u)},u=>{c(u)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",i=>{try{return e.existsSync(i)}catch(n){return!1}}),r(t,"readSync",(...i)=>{let[n,s,o,a,l]=i;return i.length<=3&&({offset:o=0,length:a=s.byteLength,position:l}=i[2]||{}),o==null&&(o=0),a|=0,a===0?0:(l==null&&(l=-1),e.readSync(n,s,o,a,l))});for(let i of Pfe){let n=i;if(typeof t[n]=="undefined")continue;let s=e[i];typeof s!="undefined"&&r(t,n,s.bind(e))}t.realpathSync.native=t.realpathSync}{let i=process.emitWarning;process.emitWarning=()=>{};let n;try{n=t.promises}finally{process.emitWarning=i}if(typeof n!="undefined"){for(let o of wM){let a=o.replace(/Promise$/,"");if(typeof n[a]=="undefined")continue;let l=e[o];typeof l!="undefined"&&o!=="open"&&r(n,a,l.bind(e))}class s{constructor(a){this.fd=a}}for(let o of Dfe){let a=o.replace(/Promise$/,""),l=e[o];typeof l!="undefined"&&r(s.prototype,a,function(...c){return l.call(e,this.fd,...c)})}r(n,"open",async(...o)=>{let a=await e.openPromise(...o);return new s(a)})}}t.read[Xh.promisify.custom]=async(i,n,...s)=>({bytesRead:await e.readPromise(i,n,...s),buffer:n})}function VE(t,e){let r=Object.create(t);return bQ(r,e),r}var BM=ge(require("os"));function bM(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${t}${e}`}var ro=new Set,QQ=null;function QM(){if(QQ)return QQ;let t=j.toPortablePath(BM.default.tmpdir()),e=K.realpathSync(t);return process.once("exit",()=>{K.rmtempSync()}),QQ={tmpdir:t,realTmpdir:e}}var K=Object.assign(new ar,{detachTemp(t){ro.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=QM();for(;;){let i=bM("xfs-");try{this.mkdirSync(k.join(e,i))}catch(s){if(s.code==="EEXIST")continue;throw s}let n=k.join(r,i);if(ro.add(n),typeof t=="undefined")return n;try{return t(n)}finally{if(ro.has(n)){ro.delete(n);try{this.removeSync(n)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=QM();for(;;){let i=bM("xfs-");try{await this.mkdirPromise(k.join(e,i))}catch(s){if(s.code==="EEXIST")continue;throw s}let n=k.join(r,i);if(ro.add(n),typeof t=="undefined")return n;try{return await t(n)}finally{if(ro.has(n)){ro.delete(n);try{await this.removePromise(n)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(ro.values()).map(async t=>{try{await K.removePromise(t,{maxRetries:0}),ro.delete(t)}catch{}}))},rmtempSync(){for(let t of ro)try{K.removeSync(t),ro.delete(t)}catch{}}});var Sx=ge(LQ());var op={};ft(op,{parseResolution:()=>rI,parseShell:()=>ZE,parseSyml:()=>Qi,stringifyArgument:()=>UQ,stringifyArgumentSegment:()=>KQ,stringifyArithmeticExpression:()=>tI,stringifyCommand:()=>MQ,stringifyCommandChain:()=>_u,stringifyCommandChainThen:()=>OQ,stringifyCommandLine:()=>$E,stringifyCommandLineThen:()=>TQ,stringifyEnvSegment:()=>eI,stringifyRedirectArgument:()=>$h,stringifyResolution:()=>iI,stringifyShell:()=>zu,stringifyShellLine:()=>zu,stringifySyml:()=>Na,stringifyValueArgument:()=>sc});var p1=ge(h1());function ZE(t,e={isGlobPattern:()=>!1}){try{return(0,p1.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function zu(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:i},n)=>`${$E(r)}${i===";"?n!==t.length-1||e?";":"":" &"}`).join(" ")}function $E(t){return`${_u(t.chain)}${t.then?` ${TQ(t.then)}`:""}`}function TQ(t){return`${t.type} ${$E(t.line)}`}function _u(t){return`${MQ(t)}${t.then?` ${OQ(t.then)}`:""}`}function OQ(t){return`${t.type} ${_u(t.chain)}`}function MQ(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>eI(e)).join(" ")} `:""}${t.args.map(e=>UQ(e)).join(" ")}`;case"subshell":return`(${zu(t.subshell)})${t.args.length>0?` ${t.args.map(e=>$h(e)).join(" ")}`:""}`;case"group":return`{ ${zu(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>$h(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>eI(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function eI(t){return`${t.name}=${t.args[0]?sc(t.args[0]):""}`}function UQ(t){switch(t.type){case"redirection":return $h(t);case"argument":return sc(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function $h(t){return`${t.subtype} ${t.args.map(e=>sc(e)).join(" ")}`}function sc(t){return t.segments.map(e=>KQ(e)).join("")}function KQ(t){let e=(i,n)=>n?`"${i}"`:i,r=i=>i===""?'""':i.match(/[(){}<>$|&; \t"']/)?`$'${i.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:i;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${zu(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue=="undefined"?typeof t.alternativeValue=="undefined"?`\${${t.name}}`:t.alternativeValue.length===0?`\${${t.name}:+}`:`\${${t.name}:+${t.alternativeValue.map(i=>sc(i)).join(" ")}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(i=>sc(i)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${tI(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function tI(t){let e=n=>{switch(n){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${n}"`)}},r=(n,s)=>s?`( ${n} )`:n,i=n=>r(tI(n),!["number","variable"].includes(n.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${i(t.left)} ${e(t.type)} ${i(t.right)}`}}var m1=ge(C1());function rI(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,m1.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function iI(t){let e="";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+="/"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var hI=ge(AK()),uK=ge(cK()),Kde=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,gK=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],$Q=class{constructor(e){this.data=e}};function fK(t){return t.match(Kde)?t:JSON.stringify(t)}function hK(t){return typeof t=="undefined"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>hK(t[e])):!1}function ev(t,e,r){if(t===null)return`null +`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} +`;if(typeof t=="string")return`${fK(t)} +`;if(Array.isArray(t)){if(t.length===0)return`[] +`;let i=" ".repeat(e);return` +${t.map(s=>`${i}- ${ev(s,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let i,n;t instanceof $Q?(i=t.data,n=!1):(i=t,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=gK.indexOf(l),g=gK.indexOf(c);return u===-1&&g===-1?lc?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!hK(i[l])).map((l,c)=>{let u=i[l],g=fK(l),f=ev(u,e+1,!0),h=c>0||r?s:"";return f.startsWith(` +`)?`${h}${g}:${f}`:`${h}${g}: ${f}`}).join(e===0?` +`:"")||` +`;return r?` +${a}`:`${a}`}throw new Error(`Unsupported value type (${t})`)}function Na(t){try{let e=ev(t,0,!1);return e!==` +`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}Na.PreserveOrdering=$Q;function Hde(t){return t.endsWith(` +`)||(t+=` +`),(0,uK.parse)(t)}var jde=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function Gde(t){if(jde.test(t))return Hde(t);let e=(0,hI.safeLoad)(t,{schema:hI.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Qi(t){return Gde(t)}var rz=ge(dK()),yw=ge(hc());var Cp={};ft(Cp,{Builtins:()=>pv,Cli:()=>Is,Command:()=>Re,Option:()=>z,UsageError:()=>Pe,formatMarkdownish:()=>Ki});var pc=0,ap=1,tn=2,rv="",vi="\0",ng=-1,iv=/^(-h|--help)(?:=([0-9]+))?$/,pI=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,yK=/^-[a-zA-Z]{2,}$/,nv=/^([^=]+)=([\s\S]*)$/,sv=process.env.DEBUG_CLI==="1";var Pe=class extends Error{constructor(e){super(e);this.clipanion={type:"usage"},this.name="UsageError"}},Ap=class extends Error{constructor(e,r){super();if(this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===r[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} + +${this.candidates.map(({usage:n})=>`$ ${n}`).join(` +`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: + +$ ${i} +${ov(e)}`}else this.message=`Command not found; did you mean one of: + +${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` +`)} + +${ov(e)}`}},av=class extends Error{constructor(e,r){super();this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: + +${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` +`)} + +${ov(e)}`}},ov=t=>`While running ${t.filter(e=>e!==vi).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`;var lp=Symbol("clipanion/isOption");function rn(t){return te(N({},t),{[lp]:!0})}function No(t,e){return typeof t=="undefined"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function dI(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function cp(t,e){return e.length===1?new Pe(`${t}: ${dI(e[0],!0)}`):new Pe(`${t}: +${e.map(r=>` +- ${dI(r)}`).join("")}`)}function up(t,e,r){if(typeof r=="undefined")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!r(e,{errors:i,coercions:n,coercion:s}))throw cp(`Invalid value for ${t}`,i);for(let[,a]of n)a();return e}var Re=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(Es(),sg)),a=o(n(s()),r),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw cp("Invalid option schema",l);for(let[,g]of c)g()}else if(r!=null)throw new Error("Invalid command schema");let i=await this.execute();return typeof i!="undefined"?i:0}};Re.isOption=lp;Re.Default=[];var DK=80,cv=Array(DK).fill("\u2501");for(let t=0;t<=24;++t)cv[cv.length-t]=`[38;5;${232+t}m\u2501`;var uv={header:t=>`\u2501\u2501\u2501 ${t}${t.length`${t}`,error:t=>`${t}`,code:t=>`${t}`},RK={header:t=>t,bold:t=>t,error:t=>t,code:t=>t};function QCe(t){let e=t.split(` +`),r=e.filter(n=>n.match(/\S/)),i=r.length>0?r.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` +`)}function Ki(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` +`),t=QCe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 + +`),t=t.replace(/\n(\n)?\n*/g,"$1"),r&&(t=t.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` +`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` +`)}).join(` + +`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),t?`${t} +`:""}var hv=ge(require("tty"));function wn(t){sv&&console.log(t)}var FK={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:ng};function NK(){return{nodes:[sn(),sn(),sn()]}}function SCe(t){let e=NK(),r=[],i=e.nodes.length;for(let n of t){r.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=t.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)r(a);for(let[,{to:o}]of n.dynamics)r(o);for(let{to:o}of n.shortcuts)r(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=t.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};r(pc)}function xCe(t,{prefix:e=""}={}){if(sv){wn(`${e}Nodes are:`);for(let r=0;rl!==tn).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===tn))throw new Ap(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=PCe(a)}if(i.length>0){wn(" Results:");for(let s of i)wn(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else wn(" No results");return i}function DCe(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,vi)){for(let{to:r}of t.statics[vi])if(r===ap)return!0}return!1}function FCe(t,e,r){let i=r&&e.length>0?[""]:[],n=TK(t,e,r),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let m=t.nodes[p],y=Object.keys(m.statics);for(let Q of Object.keys(m.statics)){let S=y[0];for(let{to:x,reducer:M}of m.statics[S])M==="pushPath"&&(u||l.push(S),g.push(x))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=t.nodes[l],g=DCe(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==vi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===tn)continue;let p=RCe(f,c);if(p!==null)for(let m of p)a([...i,m],l)}}return[...s].sort()}function LCe(t,e){let r=TK(t,[...e,vi]);return NCe(e,r.map(({state:i})=>i))}function PCe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function NCe(t,e){let r=e.filter(g=>g.selectedIndex!==null);if(r.length===0)throw new Error;let i=r.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new Ap(t,r.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=TCe(c);if(u.length>1)throw new av(t,u.map(g=>g.candidateUsage));return u[0]}function TCe(t){let e=[],r=[];for(let i of t)i.selectedIndex===ng?r.push(i):e.push(i);return r.length>0&&e.push(te(N({},FK),{path:OK(...r.map(i=>i.path)),options:r.reduce((i,n)=>i.concat(n.options),[])})),e}function OK(t,e,...r){return e===void 0?Array.from(t):OK(t.filter((i,n)=>i===e[n]),...r)}function sn(){return{dynamics:[],shortcuts:[],statics:{}}}function LK(t){return t===ap||t===tn}function fv(t,e=0){return{to:LK(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function vCe(t,e=0){let r=sn();for(let[i,n]of t.dynamics)r.dynamics.push([i,fv(n,e)]);for(let i of t.shortcuts)r.shortcuts.push(fv(i,e));for(let[i,n]of Object.entries(t.statics))r.statics[i]=n.map(s=>fv(s,e));return r}function Si(t,e,r,i,n){t.nodes[e].dynamics.push([r,{to:i,reducer:n}])}function og(t,e,r,i){t.nodes[e].shortcuts.push({to:r,reducer:i})}function La(t,e,r,i,n){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:i,reducer:n})}function mI(t,e,r,i){if(Array.isArray(e)){let[n,...s]=e;return t[n](r,i,...s)}else return t[e](r,i)}function RCe(t,e){let r=Array.isArray(t)?EI[t[0]]:EI[t];if(typeof r.suggest=="undefined")return null;let i=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...i)}var EI={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,i)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&yK.test(e)&&[...e.slice(1)].every(i=>r.includes(`-${i}`)),isBoundOption:(t,e,r,i)=>{let n=e.match(nv);return!t.ignoreOptions&&!!n&&pI.test(n[1])&&r.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&iv.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&pI.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!pI.test(e)};EI.isOption.suggest=(t,e,r=!0)=>r?null:[e];var gv={setCandidateState:(t,e,r)=>N(N({},t),r),setSelectedIndex:(t,e,r)=>te(N({},t),{selectedIndex:r}),pushBatch:(t,e)=>te(N({},t),{options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,i]=e.match(nv);return te(N({},t),{options:t.options.concat({name:r,value:i})})},pushPath:(t,e)=>te(N({},t),{path:t.path.concat(e)}),pushPositional:(t,e)=>te(N({},t),{positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>te(N({},t),{positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>te(N({},t),{positionals:t.positionals.concat({value:e,extra:Vn})}),pushTrue:(t,e,r=e)=>te(N({},t),{options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>te(N({},t),{options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>te(N({},t),{options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let i=te(N({},t),{options:[...t.options]}),n=t.options[t.options.length-1];return n.value=((r=n.value)!==null&&r!==void 0?r:[]).concat([e]),i},setStringValue:(t,e)=>{let r=te(N({},t),{options:[...t.options]}),i=t.options[t.options.length-1];return i.value=e,r},inhibateOptions:t=>te(N({},t),{ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,i]=e.match(iv);return typeof i!="undefined"?te(N({},t),{options:[{name:"-c",value:String(r)},{name:"-i",value:i}]}):te(N({},t),{options:[{name:"-c",value:String(r)}]})},setError:(t,e,r)=>e===vi?te(N({},t),{errorMessage:`${r}.`}):te(N({},t),{errorMessage:`${r} ("${e}").`}),setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return te(N({},t),{errorMessage:`Not enough arguments to option ${r.name}.`})}},Vn=Symbol(),MK=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:i,proxy:n})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===Vn)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Vn?this.arity.extra.push(e):this.arity.extra!==Vn&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Vn)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Vn?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context=="undefined")throw new Error("Assertion failed: No context attached");let e=NK(),r=pc,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);r=io(e,sn()),La(e,pc,rv,r,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=r;if(a.length>0){let f=io(e,sn());og(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=io(e,sn());Si(e,l,"isHelp",f,["useHelp",this.cliIndex]),La(e,f,vi,ap,["setSelectedIndex",ng]),this.registerOptions(e,l)}this.arity.leading.length>0&&La(e,l,vi,tn,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&La(e,h,vi,tn,["setError","Not enough positional arguments"]),Si(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Vn||this.arity.extra.length>0){let f=io(e,sn());if(og(e,c,f),this.arity.extra===Vn){let h=io(e,sn());this.arity.proxy||this.registerOptions(e,h),Si(e,c,s,h,"pushExtraNoLimits"),Si(e,h,s,h,"pushExtraNoLimits"),og(e,h,f)}else for(let h=0;h0&&La(e,u,vi,tn,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)Si(e,r,["isOption",s,i.hidden||s!==n],r,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&Si(e,r,["isNegatedOption",s],r,["pushFalse",s]);else{let s=io(e,sn());for(let o of i.names)Si(e,r,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&eLCe(i,n),suggest:(n,s)=>FCe(i,n,s)}}};var dp=class extends Re{constructor(e){super();this.contexts=e,this.commands=[]}static from(e,r){let i=new dp(r);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index!="undefined"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: +`),this.context.stdout.write(` +`);let r=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` +`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. +`)}}};var UK=Symbol("clipanion/errorCommand");function OCe(){return process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout!="undefined"&&process.stdout.isTTY?8:1}var Is=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:i,enableCapture:n=!1,enableColors:s}={}){this.registrations=new Map,this.builder=new pp({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=i,this.enableCapture=n,this.enableColors=s}static from(e,r={}){let i=new Is(r);for(let n of e)i.register(n);return i}register(e){var r;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[Re.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(r=e.paths)!==null&&r!==void 0?r:n.paths;if(typeof a!="undefined")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:r,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case ng:return dp.from(n,r);default:{let{commandClass:s}=r[n.selectedIndex],o=this.registrations.get(s);if(typeof o=="undefined")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[UK]=a,l}}break}}async run(e,r){var i;let n,s=N(N({},Is.defaultContext),r),o=(i=this.enableColors)!==null&&i!==void 0?i:s.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e)}catch(c){return s.stdout.write(this.error(c,{colored:o})),1}if(n.help)return s.stdout.write(this.usage(n,{colored:o,detailed:!0})),0;n.context=s,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(c,u)=>this.error(c,u),format:c=>this.format(c),process:c=>this.process(c),run:(c,u)=>this.run(c,N(N({},s),u)),usage:(c,u)=>this.usage(c,u)};let a=this.enableCapture?MCe(s):KK,l;try{l=await a(()=>n.validateAndExecute().catch(c=>n.catch(c).then(()=>0)))}catch(c){return s.stdout.write(this.error(c,{colored:o,command:n})),1}return l}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:i}=this.builder.compile();return i(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage=="undefined")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category!="undefined"?Ki(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description!="undefined"?Ki(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details!="undefined"?Ki(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples!="undefined"?i.usage.examples.map(([f,h])=>[Ki(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return r}usage(e=null,{colored:r,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage!="undefined";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof Re?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Ki(l,{format:this.format(r),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` +`),(c!==""||u.length>0)&&(a+=`${this.format(r).header("Usage")} +`,a+=` +`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(r).bold(n)}${g} +`,f.length>0){a+=` +`,a+=`${uv.header("Options")} +`;let h=f.reduce((p,m)=>Math.max(p,m.definition.length),0);a+=` +`;for(let{definition:p,description:m}of f)a+=` ${this.format(r).bold(p.padEnd(h))} ${Ki(m,{format:this.format(r),paragraphs:!1})}`}if(c!==""&&(a+=` +`,a+=`${this.format(r).header("Details")} +`,a+=` +`,a+=Ki(c,{format:this.format(r),paragraphs:!0})),u.length>0){a+=` +`,a+=`${this.format(r).header("Examples")} +`;for(let[h,p]of u)a+=` +`,a+=Ki(h,{format:this.format(r),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(r).bold(n)}`).replace(/\$0/g,this.binaryName)} +`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(r).bold(n)}${l} +`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage=="undefined")continue;let p=typeof f.usage.category!="undefined"?Ki(f.usage.category,{format:this.format(r),paragraphs:!1}):null,m=l.get(p);typeof m=="undefined"&&l.set(p,m=[]);let{usage:y}=this.getUsageByIndex(h);m.push({commandClass:f,usage:y})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel!="undefined",g=typeof this.binaryVersion!="undefined";u||g?(u&&g?a+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} + +`:u?a+=`${this.format(r).header(`${this.binaryLabel}`)} +`:a+=`${this.format(r).header(`${this.binaryVersion}`)} +`,a+=` ${this.format(r).bold(n)}${this.binaryName} +`):a+=`${this.format(r).bold(n)}${this.binaryName} +`;for(let f of c){let h=l.get(f).slice().sort((m,y)=>m.usage.localeCompare(y.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` +`,a+=`${this.format(r).header(`${p}`)} +`;for(let{commandClass:m,usage:y}of h){let Q=m.usage.description||"undocumented";a+=` +`,a+=` ${this.format(r).bold(y)} +`,a+=` ${Ki(Q,{format:this.format(r),paragraphs:!1})}`}}a+=` +`,a+=Ki("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return a}error(e,r){var i,{colored:n,command:s=(i=e[UK])!==null&&i!==void 0?i:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} +`;let l=e.clipanion;return typeof l!="undefined"?l.type==="usage"&&(o+=` +`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} +`),o}format(e){var r;return((r=e!=null?e:this.enableColors)!==null&&r!==void 0?r:Is.defaultContext.colorDepth>1)?uv:RK}getUsageByRegistration(e,r){let i=this.registrations.get(e);if(typeof i=="undefined")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};Is.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:"getColorDepth"in hv.default.WriteStream.prototype?hv.default.WriteStream.prototype.getColorDepth():OCe()};var HK;function MCe(t){let e=HK;if(typeof e=="undefined"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return KK;let{AsyncLocalStorage:r}=require("async_hooks");e=HK=new r;let i=process.stdout._write;process.stdout._write=function(s,o,a){let l=e.getStore();return typeof l=="undefined"?i.call(this,s,o,a):l.stdout.write(s,o,a)};let n=process.stderr._write;process.stderr._write=function(s,o,a){let l=e.getStore();return typeof l=="undefined"?n.call(this,s,o,a):l.stderr.write(s,o,a)}}return r=>e.run(t,r)}function KK(t){return t()}var pv={};ft(pv,{DefinitionsCommand:()=>II,HelpCommand:()=>yI,VersionCommand:()=>wI});var II=class extends Re{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};II.paths=[["--clipanion=definitions"]];var yI=class extends Re{async execute(){this.context.stdout.write(this.cli.usage())}};yI.paths=[["-h"],["--help"]];var wI=class extends Re{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} +`)}};wI.paths=[["-v"],["--version"]];var z={};ft(z,{Array:()=>jK,Boolean:()=>GK,Counter:()=>YK,Proxy:()=>qK,Rest:()=>JK,String:()=>WK,applyValidator:()=>up,cleanValidationError:()=>dI,formatError:()=>cp,isOptionSymbol:()=>lp,makeCommandOption:()=>rn,rerouteArguments:()=>No});function jK(t,e,r){let[i,n]=No(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return rn({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i!="undefined"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function GK(t,e,r){let[i,n]=No(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return rn({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function YK(t,e,r){let[i,n]=No(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return rn({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function qK(t={}){return rn({definition(e,r){var i;e.addProxy({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){return i.positionals.map(({value:n})=>n)}})}function JK(t={}){return rn({definition(e,r){var i;e.addRest({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){let n=o=>{let a=i.positionals[o];return a.extra===Vn||a.extra===!1&&oo)}})}function UCe(t,e,r){let[i,n]=No(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return rn({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?up(g!=null?g:c,f,n.validator):f}})}function KCe(t={}){let{required:e=!0}=t;return rn({definition(r,i){var n;r.addPositional({name:(n=t.name)!==null&&n!==void 0?n:i,required:t.required})},transformer(r,i,n){var s;for(let o=0;oc8,areIdentsEqual:()=>fd,areLocatorsEqual:()=>hd,areVirtualPackagesEquivalent:()=>uSe,bindDescriptor:()=>lSe,bindLocator:()=>cSe,convertDescriptorToLocator:()=>uw,convertLocatorToDescriptor:()=>nx,convertPackageToLocator:()=>ASe,convertToIdent:()=>aSe,convertToManifestRange:()=>hSe,copyPackage:()=>cd,devirtualizeDescriptor:()=>ud,devirtualizeLocator:()=>gd,getIdentVendorPath:()=>lx,isPackageCompatible:()=>pw,isVirtualDescriptor:()=>il,isVirtualLocator:()=>Xo,makeDescriptor:()=>rr,makeIdent:()=>Vo,makeLocator:()=>cn,makeRange:()=>fw,parseDescriptor:()=>nl,parseFileStyleRange:()=>gSe,parseIdent:()=>An,parseLocator:()=>Mc,parseRange:()=>Kg,prettyDependent:()=>YS,prettyDescriptor:()=>sr,prettyIdent:()=>gi,prettyLocator:()=>Bt,prettyLocatorNoColors:()=>Ax,prettyRange:()=>cw,prettyReference:()=>dd,prettyResolution:()=>qS,prettyWorkspace:()=>Cd,renamePackage:()=>ld,slugifyIdent:()=>ax,slugifyLocator:()=>Hg,sortDescriptors:()=>jg,stringifyDescriptor:()=>Pn,stringifyIdent:()=>Ot,stringifyLocator:()=>Ps,tryParseDescriptor:()=>pd,tryParseIdent:()=>u8,tryParseLocator:()=>gw,virtualizeDescriptor:()=>sx,virtualizePackage:()=>ox});var Ug=ge(require("querystring")),a8=ge(ti()),A8=ge(bY());var ae={};ft(ae,{LogLevel:()=>go,Style:()=>Pc,Type:()=>Ge,addLogFilterSupport:()=>nd,applyColor:()=>rs,applyHyperlink:()=>Fg,applyStyle:()=>Ly,json:()=>Dc,jsonOrPretty:()=>G0e,mark:()=>VS,pretty:()=>et,prettyField:()=>Jo,prettyList:()=>_S,supportsColor:()=>Fy,supportsHyperlinks:()=>WS,tuple:()=>uo});var rd=ge(IS()),id=ge(hc());var QJ=ge(ts()),vJ=ge(gJ());var Se={};ft(Se,{AsyncActions:()=>EJ,BufferStream:()=>mJ,CachingStrategy:()=>xc,DefaultStream:()=>IJ,allSettledSafe:()=>co,assertNever:()=>US,bufferStream:()=>Dg,buildIgnorePattern:()=>U0e,convertMapsToIndexableObjects:()=>Ry,dynamicRequire:()=>Rg,escapeRegExp:()=>N0e,getArrayWithDefault:()=>kg,getFactoryWithDefault:()=>qa,getMapWithDefault:()=>xg,getSetWithDefault:()=>kc,isIndexableObject:()=>KS,isPathLike:()=>K0e,isTaggedYarnVersion:()=>F0e,mapAndFilter:()=>qo,mapAndFind:()=>$p,overrideType:()=>MS,parseBoolean:()=>td,parseOptionalBoolean:()=>bJ,prettifyAsyncErrors:()=>Pg,prettifySyncErrors:()=>HS,releaseAfterUseAsync:()=>T0e,replaceEnvVariables:()=>jS,sortMap:()=>xn,tryParseOptionalBoolean:()=>GS,validateEnum:()=>L0e});var fJ=ge(ts()),hJ=ge(ag()),pJ=ge(ti()),OS=ge(require("stream"));function F0e(t){return!!(pJ.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9]+)?$/))}function N0e(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function MS(t){}function US(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function L0e(t,e){let r=Object.values(t);if(!r.includes(e))throw new Pe(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(i=>JSON.stringify(i)).join(", ")})`);return e}function qo(t,e){let r=[];for(let i of t){let n=e(i);n!==dJ&&r.push(n)}return r}var dJ=Symbol();qo.skip=dJ;function $p(t,e){for(let r of t){let i=e(r);if(i!==CJ)return i}}var CJ=Symbol();$p.skip=CJ;function KS(t){return typeof t=="object"&&t!==null}async function co(t){let e=await Promise.allSettled(t),r=[];for(let i of e){if(i.status==="rejected")throw i.reason;r.push(i.value)}return r}function Ry(t){if(t instanceof Map&&(t=Object.fromEntries(t)),KS(t))for(let e of Object.keys(t)){let r=t[e];KS(r)&&(t[e]=Ry(r))}return t}function qa(t,e,r){let i=t.get(e);return typeof i=="undefined"&&t.set(e,i=r()),i}function kg(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=[]),r}function kc(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Set),r}function xg(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Map),r}async function T0e(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function Pg(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function HS(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Dg(t){return await new Promise((e,r)=>{let i=[];t.on("error",n=>{r(n)}),t.on("data",n=>{i.push(n)}),t.on("end",()=>{e(Buffer.concat(i))})})}var mJ=class extends OS.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(e),i(null,null)}_flush(e){e(null,Buffer.concat(this.chunks))}};function O0e(){let t,e;return{promise:new Promise((i,n)=>{t=i,e=n}),resolve:t,reject:e}}var EJ=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,hJ.default)(e)}set(e,r){let i=this.deferred.get(e);typeof i=="undefined"&&this.deferred.set(e,i=O0e());let n=this.limit(()=>r());return this.promises.set(e,n),n.then(()=>{this.promises.get(e)===n&&i.resolve()},s=>{this.promises.get(e)===n&&i.reject(s)}),i.promise}reduce(e,r){var n;let i=(n=this.promises.get(e))!=null?n:Promise.resolve();this.set(e,()=>r(i))}async wait(){await Promise.all(this.promises.values())}},IJ=class extends OS.Transform{constructor(e=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=e}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,i(null,e)}_flush(e){this.active&&this.ifEmpty.length>0?e(null,this.ifEmpty):e(null)}},ed=eval("require");function yJ(t){return ed(j.fromPortablePath(t))}function wJ(path){let physicalPath=j.fromPortablePath(path),currentCacheEntry=ed.cache[physicalPath];delete ed.cache[physicalPath];let result;try{result=yJ(physicalPath);let freshCacheEntry=ed.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{ed.cache[physicalPath]=currentCacheEntry}return result}var BJ=new Map;function M0e(t){let e=BJ.get(t),r=K.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let i=wJ(t);return BJ.set(t,{mtime:r.mtimeMs,instance:i}),i}var xc;(function(i){i[i.NoCache=0]="NoCache",i[i.FsTime=1]="FsTime",i[i.Node=2]="Node"})(xc||(xc={}));function Rg(t,{cachingStrategy:e=2}={}){switch(e){case 0:return wJ(t);case 1:return M0e(t);case 2:return yJ(t);default:throw new Error("Unsupported caching strategy")}}function xn(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(r.map(o=>s(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function U0e(t){return t.length===0?null:t.map(e=>`(${fJ.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function jS(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...i)=>{let{variableName:n,colon:s,fallback:o}=i[i.length-1],a=Object.prototype.hasOwnProperty.call(e,n),l=e[n];if(l||a&&!s)return l;if(o!=null)return o;throw new Pe(`Environment variable not found (${n})`)})}function td(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function bJ(t){return typeof t=="undefined"?t:td(t)}function GS(t){try{return bJ(t)}catch{return null}}function K0e(t){return!!(j.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}var Qt;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Qt||(Qt={}));var yi;(function(i){i.Dependency="Dependency",i.PeerDependency="PeerDependency",i.PeerDependencyMeta="PeerDependencyMeta"})(yi||(yi={}));var qi;(function(i){i.Inactive="inactive",i.Redundant="redundant",i.Active="active"})(qi||(qi={}));var Ge={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN"},Pc;(function(e){e[e.BOLD=2]="BOLD"})(Pc||(Pc={}));var JS=id.default.GITHUB_ACTIONS?{level:2}:rd.default.supportsColor?{level:rd.default.supportsColor.level}:{level:0},Fy=JS.level!==0,WS=Fy&&!id.default.GITHUB_ACTIONS&&!id.default.CIRCLE&&!id.default.GITLAB,zS=new rd.default.Instance(JS),H0e=new Map([[Ge.NO_HINT,null],[Ge.NULL,["#a853b5",129]],[Ge.SCOPE,["#d75f00",166]],[Ge.NAME,["#d7875f",173]],[Ge.RANGE,["#00afaf",37]],[Ge.REFERENCE,["#87afff",111]],[Ge.NUMBER,["#ffd700",220]],[Ge.PATH,["#d75fd7",170]],[Ge.URL,["#d75fd7",170]],[Ge.ADDED,["#5faf00",70]],[Ge.REMOVED,["#d70000",160]],[Ge.CODE,["#87afff",111]],[Ge.SIZE,["#ffd700",220]]]),Ds=t=>t,Ny={[Ge.NUMBER]:Ds({pretty:(t,e)=>`${e}`,json:t=>t}),[Ge.IDENT]:Ds({pretty:(t,e)=>gi(t,e),json:t=>Ot(t)}),[Ge.LOCATOR]:Ds({pretty:(t,e)=>Bt(t,e),json:t=>Ps(t)}),[Ge.DESCRIPTOR]:Ds({pretty:(t,e)=>sr(t,e),json:t=>Pn(t)}),[Ge.RESOLUTION]:Ds({pretty:(t,{descriptor:e,locator:r})=>qS(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:Pn(t),locator:e!==null?Ps(e):null})}),[Ge.DEPENDENT]:Ds({pretty:(t,{locator:e,descriptor:r})=>YS(t,e,r),json:({locator:t,descriptor:e})=>({locator:Ps(t),descriptor:Pn(e)})}),[Ge.PACKAGE_EXTENSION]:Ds({pretty:(t,e)=>{switch(e.type){case yi.Dependency:return`${gi(t,e.parentDescriptor)} \u27A4 ${rs(t,"dependencies",Ge.CODE)} \u27A4 ${gi(t,e.descriptor)}`;case yi.PeerDependency:return`${gi(t,e.parentDescriptor)} \u27A4 ${rs(t,"peerDependencies",Ge.CODE)} \u27A4 ${gi(t,e.descriptor)}`;case yi.PeerDependencyMeta:return`${gi(t,e.parentDescriptor)} \u27A4 ${rs(t,"peerDependenciesMeta",Ge.CODE)} \u27A4 ${gi(t,An(e.selector))} \u27A4 ${rs(t,e.key,Ge.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case yi.Dependency:return`${Ot(t.parentDescriptor)} > ${Ot(t.descriptor)}`;case yi.PeerDependency:return`${Ot(t.parentDescriptor)} >> ${Ot(t.descriptor)}`;case yi.PeerDependencyMeta:return`${Ot(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Ge.SETTING]:Ds({pretty:(t,e)=>(t.get(e),Fg(t,rs(t,e,Ge.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Ge.DURATION]:Ds({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),i=Math.ceil((e-r*60*1e3)/1e3);return i===0?`${r}m`:`${r}m ${i}s`}else{let r=Math.floor(e/1e3),i=e-r*1e3;return i===0?`${r}s`:`${r}s ${i}ms`}},json:t=>t}),[Ge.SIZE]:Ds({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],i=r.length;for(;i>1&&e<1024**i;)i-=1;let n=1024**i,s=Math.floor(e*100/n)/100;return rs(t,`${s} ${r[i-1]}`,Ge.NUMBER)},json:t=>t}),[Ge.PATH]:Ds({pretty:(t,e)=>rs(t,j.fromPortablePath(e),Ge.PATH),json:t=>j.fromPortablePath(t)}),[Ge.MARKDOWN]:Ds({pretty:(t,{text:e,format:r,paragraphs:i})=>Ki(e,{format:r,paragraphs:i}),json:({text:t})=>t})};function uo(t,e){return[e,t]}function Ly(t,e,r){return t.get("enableColors")&&r&2&&(e=rd.default.bold(e)),e}function rs(t,e,r){if(!t.get("enableColors"))return e;let i=H0e.get(r);if(i===null)return e;let n=typeof i=="undefined"?r:JS.level>=3?i[0]:i[1],s=typeof n=="number"?zS.ansi256(n):n.startsWith("#")?zS.hex(n):zS[n];if(typeof s!="function")throw new Error(`Invalid format type ${n}`);return s(e)}var j0e=!!process.env.KONSOLE_VERSION;function Fg(t,e,r){return t.get("enableHyperlinks")?j0e?`]8;;${r}\\${e}]8;;\\`:`]8;;${r}\x07${e}]8;;\x07`:e}function et(t,e,r){if(e===null)return rs(t,"null",Ge.NULL);if(Object.prototype.hasOwnProperty.call(Ny,r))return Ny[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return rs(t,e,r)}function _S(t,e,r,{separator:i=", "}={}){return[...e].map(n=>et(t,n,r)).join(i)}function Dc(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(Ny,e))return MS(e),Ny[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function G0e(t,e,[r,i]){return t?Dc(r,i):et(e,r,i)}function VS(t){return{Check:rs(t,"\u2713","green"),Cross:rs(t,"\u2718","red"),Question:rs(t,"?","cyan")}}function Jo(t,{label:e,value:[r,i]}){return`${et(t,e,Ge.CODE)}: ${et(t,r,i)}`}var go;(function(n){n.Error="error",n.Warning="warning",n.Info="info",n.Discard="discard"})(go||(go={}));function nd(t,{configuration:e}){let r=e.get("logFilters"),i=new Map,n=new Map,s=[];for(let g of r){let f=g.get("level");if(typeof f=="undefined")continue;let h=g.get("code");typeof h!="undefined"&&i.set(h,f);let p=g.get("text");typeof p!="undefined"&&n.set(p,f);let m=g.get("pattern");typeof m!="undefined"&&s.push([QJ.default.matcher(m,{contains:!0}),f])}s.reverse();let o=(g,f,h)=>{if(g===null||g===$.UNNAMED)return h;let p=n.size>0||s.length>0?(0,vJ.default)(f):f;if(n.size>0){let m=n.get(p);if(typeof m!="undefined")return m!=null?m:h}if(s.length>0){for(let[m,y]of s)if(m(p))return y!=null?y:h}if(i.size>0){let m=i.get(YA(g));if(typeof m!="undefined")return m!=null?m:h}return h},a=t.reportInfo,l=t.reportWarning,c=t.reportError,u=function(g,f,h,p){switch(o(f,h,p)){case go.Info:a.call(g,f,h);break;case go.Warning:l.call(g,f!=null?f:$.UNNAMED,h);break;case go.Error:c.call(g,f!=null?f:$.UNNAMED,h);break}};t.reportInfo=function(...g){return u(this,...g,go.Info)},t.reportWarning=function(...g){return u(this,...g,go.Warning)},t.reportError=function(...g){return u(this,...g,go.Error)}}var Dn={};ft(Dn,{checksumFile:()=>Aw,checksumPattern:()=>lw,makeHash:()=>ln});var aw=ge(require("crypto")),ix=ge(rx());function ln(...t){let e=(0,aw.createHash)("sha512"),r="";for(let i of t)typeof i=="string"?r+=i:i&&(r&&(e.update(r),r=""),e.update(i));return r&&e.update(r),e.digest("hex")}async function Aw(t,{baseFs:e,algorithm:r}={baseFs:K,algorithm:"sha512"}){let i=await e.openPromise(t,"r");try{let n=65536,s=Buffer.allocUnsafeSlow(n),o=(0,aw.createHash)(r),a=0;for(;(a=await e.readPromise(i,s,0,n))!==0;)o.update(a===n?s:s.slice(0,a));return o.digest("hex")}finally{await e.closePromise(i)}}async function lw(t,{cwd:e}){let i=(await(0,ix.default)(t,{cwd:j.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),n=await(0,ix.default)([t,...i],{cwd:j.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});n.sort();let s=await Promise.all(n.map(async a=>{let l=[Buffer.from(a)],c=j.toPortablePath(a),u=await K.lstatPromise(c);return u.isSymbolicLink()?l.push(Buffer.from(await K.readlinkPromise(c))):u.isFile()&&l.push(await K.readFilePromise(c)),l.join("\0")})),o=(0,aw.createHash)("sha512");for(let a of s)o.update(a);return o.digest("hex")}var Ad="virtual:",sSe=5,l8=/(os|cpu|libc)=([a-z0-9_-]+)/,oSe=(0,A8.makeParser)(l8);function Vo(t,e){if(t==null?void 0:t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:ln(t,e),scope:t,name:e}}function rr(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:ln(t.identHash,e),range:e}}function cn(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:ln(t.identHash,e),reference:e}}function aSe(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function uw(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function nx(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function ASe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function ld(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function cd(t){return ld(t,t)}function sx(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return rr(t,`virtual:${e}#${t.range}`)}function ox(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return ld(t,cn(t,`virtual:${e}#${t.reference}`))}function il(t){return t.range.startsWith(Ad)}function Xo(t){return t.reference.startsWith(Ad)}function ud(t){if(!il(t))throw new Error("Not a virtual descriptor");return rr(t,t.range.replace(/^[^#]*#/,""))}function gd(t){if(!Xo(t))throw new Error("Not a virtual descriptor");return cn(t,t.reference.replace(/^[^#]*#/,""))}function lSe(t,e){return t.range.includes("::")?t:rr(t,`${t.range}::${Ug.default.stringify(e)}`)}function cSe(t,e){return t.reference.includes("::")?t:cn(t,`${t.reference}::${Ug.default.stringify(e)}`)}function fd(t,e){return t.identHash===e.identHash}function c8(t,e){return t.descriptorHash===e.descriptorHash}function hd(t,e){return t.locatorHash===e.locatorHash}function uSe(t,e){if(!Xo(t))throw new Error("Invalid package type");if(!Xo(e))throw new Error("Invalid package type");if(!fd(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let i=e.dependencies.get(r.identHash);if(!i||!c8(r,i))return!1}return!0}function An(t){let e=u8(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function u8(t){let e=t.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,r,i]=e,n=typeof r!="undefined"?r:null;return Vo(n,i)}function nl(t,e=!1){let r=pd(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function pd(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid range (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return rr(Vo(o,n),a)}function Mc(t,e=!1){let r=gw(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function gw(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid reference (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return cn(Vo(o,n),a)}function Kg(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let i=typeof r[1]!="undefined"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&i!==e.requireProtocol)throw new Error(`Invalid protocol (${i})`);if((e==null?void 0:e.requireProtocol)&&i===null)throw new Error(`Missing protocol (${i})`);let n=typeof r[3]!="undefined"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&n===null)throw new Error(`Missing source (${t})`);let s=typeof r[3]!="undefined"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),o=(e==null?void 0:e.parseSelector)?Ug.default.parse(s):s,a=typeof r[4]!="undefined"?Ug.default.parse(r[4]):null;return{protocol:i,source:n,selector:o,params:a}}function gSe(t,{protocol:e}){let{selector:r,params:i}=Kg(t,{requireProtocol:e,requireBindings:!0});if(typeof i.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Mc(i.locator,!0),path:r}}function g8(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function fSe(t){return t===null?!1:Object.entries(t).length>0}function fw({protocol:t,source:e,selector:r,params:i}){let n="";return t!==null&&(n+=`${t}`),e!==null&&(n+=`${g8(e)}#`),n+=g8(r),fSe(i)&&(n+=`::${Ug.default.stringify(i)}`),n}function hSe(t){let{params:e,protocol:r,source:i,selector:n}=Kg(t);for(let s in e)s.startsWith("__")&&delete e[s];return fw({protocol:r,source:i,params:e,selector:n})}function Ot(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function Pn(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function Ps(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function ax(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function Hg(t){let{protocol:e,selector:r}=Kg(t.reference),i=e!==null?e.replace(/:$/,""):"exotic",n=a8.default.valid(r),s=n!==null?`${i}-${n}`:`${i}`,o=10,a=t.scope?`${ax(t)}-${s}-${t.locatorHash.slice(0,o)}`:`${ax(t)}-${s}-${t.locatorHash.slice(0,o)}`;return qr(a)}function gi(t,e){return e.scope?`${et(t,`@${e.scope}/`,Ge.SCOPE)}${et(t,e.name,Ge.NAME)}`:`${et(t,e.name,Ge.NAME)}`}function hw(t){if(t.startsWith(Ad)){let e=hw(t.substring(t.indexOf("#")+1)),r=t.substring(Ad.length,Ad.length+sSe);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function cw(t,e){return`${et(t,hw(e),Ge.RANGE)}`}function sr(t,e){return`${gi(t,e)}${et(t,"@",Ge.RANGE)}${cw(t,e.range)}`}function dd(t,e){return`${et(t,hw(e),Ge.REFERENCE)}`}function Bt(t,e){return`${gi(t,e)}${et(t,"@",Ge.REFERENCE)}${dd(t,e.reference)}`}function Ax(t){return`${Ot(t)}@${hw(t.reference)}`}function jg(t){return xn(t,[e=>Ot(e),e=>e.range])}function Cd(t,e){return gi(t,e.locator)}function qS(t,e,r){let i=il(e)?ud(e):e;return r===null?`${sr(t,i)} \u2192 ${VS(t).Cross}`:i.identHash===r.identHash?`${sr(t,i)} \u2192 ${dd(t,r.reference)}`:`${sr(t,i)} \u2192 ${Bt(t,r)}`}function YS(t,e,r){return r===null?`${Bt(t,e)}`:`${Bt(t,e)} (via ${cw(t,r.range)})`}function lx(t){return`node_modules/${Ot(t)}`}function pw(t,e){return t.conditions?oSe(t.conditions,r=>{let[,i,n]=r.match(l8),s=e[i];return s?s.includes(n):!0}):!0}var f8={hooks:{reduceDependency:(t,e,r,i,{resolver:n,resolveOptions:s})=>{for(let{pattern:o,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(o.from&&o.from.fullName!==Ot(r)||o.from&&o.from.description&&o.from.description!==r.reference||o.descriptor.fullName!==Ot(t)||o.descriptor.description&&o.descriptor.description!==t.range)continue;return n.bindDescriptor(rr(t,a),e.topLevelWorkspace.anchoredLocator,s)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let i=Cd(t.configuration,r);await t.configuration.triggerHook(n=>n.validateWorkspace,r,{reportWarning:(n,s)=>e.reportWarning(n,`${i}: ${s}`),reportError:(n,s)=>e.reportError(n,`${i}: ${s}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let i of r.errors)e.reportWarning($.INVALID_MANIFEST,i.message)}}};var C8=ge(ti());var md=class{supportsDescriptor(e,r){return!!(e.range.startsWith(md.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(md.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[i.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.getWorkspaceByCwd(e.reference.slice(md.protocol.length));return te(N({},e),{version:i.manifest.version||"0.0.0",languageName:"unknown",linkType:Qt.SOFT,conditions:null,dependencies:new Map([...i.manifest.dependencies,...i.manifest.devDependencies]),peerDependencies:new Map([...i.manifest.peerDependencies]),dependenciesMeta:i.manifest.dependenciesMeta,peerDependenciesMeta:i.manifest.peerDependenciesMeta,bin:i.manifest.bin})}},si=md;si.protocol="workspace:";var Wt={};ft(Wt,{SemVer:()=>h8.SemVer,clean:()=>dSe,satisfiesWithPrereleases:()=>Uc,validRange:()=>fo});var dw=ge(ti()),h8=ge(ti()),p8=new Map;function Uc(t,e,r=!1){if(!t)return!1;let i=`${e}${r}`,n=p8.get(i);if(typeof n=="undefined")try{n=new dw.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{p8.set(i,n||null)}else if(n===null)return!1;let s;try{s=new dw.default.SemVer(t,n)}catch(o){return!1}return n.test(s)?!0:(s.prerelease&&(s.prerelease=[]),n.set.some(o=>{for(let a of o)a.semver.prerelease&&(a.semver.prerelease=[]);return o.every(a=>a.test(s))}))}var d8=new Map;function fo(t){if(t.indexOf(":")!==-1)return null;let e=d8.get(t);if(typeof e!="undefined")return e;try{e=new dw.default.Range(t)}catch{e=null}return d8.set(t,e),e}var pSe=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/;function dSe(t){let e=pSe.exec(t);return e?e[1]:null}var sl=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new ar}={}){let i=k.join(e,"package.json");try{return await sl.fromFile(i,{baseFs:r})}catch(n){if(n.code==="ENOENT")return null;throw n}}static async find(e,{baseFs:r}={}){let i=await sl.tryFind(e,{baseFs:r});if(i===null)throw new Error("Manifest not found");return i}static async fromFile(e,{baseFs:r=new ar}={}){let i=new sl;return await i.loadFile(e,{baseFs:r}),i}static fromText(e){let r=new sl;return r.loadFromText(e),r}static isManifestFieldCompatible(e,r){if(e===null)return!0;let i=!0,n=!1;for(let s of e)if(s[0]==="!"){if(n=!0,r===s.slice(1))return!1}else if(i=!1,s===r)return!0;return n&&i}loadFromText(e){let r;try{r=JSON.parse(E8(e)||"{}")}catch(i){throw i.message+=` (when parsing ${e})`,i}this.load(r),this.indent=m8(e)}async loadFile(e,{baseFs:r=new ar}){let i=await r.readFilePromise(e,"utf8"),n;try{n=JSON.parse(E8(i)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(n),this.indent=m8(i)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let i=[];if(this.name=null,typeof e.name=="string")try{this.name=An(e.name)}catch(s){i.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let s=[];this.os=s;for(let o of e.os)typeof o!="string"?i.push(new Error("Parsing failed for the 'os' field")):s.push(o)}else this.os=null;if(Array.isArray(e.cpu)){let s=[];this.cpu=s;for(let o of e.cpu)typeof o!="string"?i.push(new Error("Parsing failed for the 'cpu' field")):s.push(o)}else this.cpu=null;if(Array.isArray(e.libc)){let s=[];this.libc=s;for(let o of e.libc)typeof o!="string"?i.push(new Error("Parsing failed for the 'libc' field")):s.push(o)}else this.libc=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=un(e.main):this.main=null,typeof e.module=="string"?this.module=un(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=un(e.browser);else{this.browser=new Map;for(let[s,o]of Object.entries(e.browser))this.browser.set(un(s),typeof o=="string"?un(o):o)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,un(e.bin)):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[s,o]of Object.entries(e.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}let a=An(s);this.bin.set(a.name,un(o))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[s,o]of Object.entries(e.scripts)){if(typeof o!="string"){i.push(new Error(`Invalid script definition for '${s}'`));continue}this.scripts.set(s,o)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[s,o]of Object.entries(e.dependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=An(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=rr(a,o);this.dependencies.set(l.identHash,l)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[s,o]of Object.entries(e.devDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=An(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=rr(a,o);this.devDependencies.set(l.identHash,l)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[s,o]of Object.entries(e.peerDependencies)){let a;try{a=An(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}(typeof o!="string"||!o.startsWith(si.protocol)&&!fo(o))&&(i.push(new Error(`Invalid dependency range for '${s}'`)),o="*");let l=rr(a,o);this.peerDependencies.set(l.identHash,l)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&i.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let n=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let s of n){if(typeof s!="string"){i.push(new Error(`Invalid workspace definition for '${s}'`));continue}this.workspaceDefinitions.push({pattern:s})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[s,o]of Object.entries(e.dependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}`));continue}let a=nl(s),l=this.ensureDependencyMeta(a),c=Cw(o.built,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid built meta field for '${s}'`));continue}let u=Cw(o.optional,{yamlCompatibilityMode:r});if(u===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}let g=Cw(o.unplugged,{yamlCompatibilityMode:r});if(g===null){i.push(new Error(`Invalid unplugged meta field for '${s}'`));continue}Object.assign(l,{built:c,optional:u,unplugged:g})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[s,o]of Object.entries(e.peerDependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}'`));continue}let a=nl(s),l=this.ensurePeerDependencyMeta(a),c=Cw(o.optional,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}Object.assign(l,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[s,o]of Object.entries(e.resolutions)){if(typeof o!="string"){i.push(new Error(`Invalid resolution entry for '${s}'`));continue}try{this.resolutions.push({pattern:rI(s),reference:o})}catch(a){i.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let s of e.files){if(typeof s!="string"){i.push(new Error(`Invalid files entry for '${s}'`));continue}this.files.add(s)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=un(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=un(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=un(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[s,o]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(un(s),typeof o=="string"?un(o):o)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,un(e.publishConfig.bin)]]):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[s,o]of Object.entries(e.publishConfig.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.publishConfig.bin.set(s,un(o))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let s of e.publishConfig.executableFiles){if(typeof s!="string"){i.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(un(s))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let s of Object.keys(e.installConfig))s==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:i.push(new Error("Invalid hoisting limits definition")):s=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:i.push(new Error("Invalid selfReferences definition, must be a boolean value")):i.push(new Error(`Unrecognized installConfig key: ${s}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[s,o]of Object.entries(e.optionalDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=An(s)}catch(g){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=rr(a,o);this.dependencies.set(l.identHash,l);let c=rr(a,"unknown"),u=this.ensureDependencyMeta(c);Object.assign(u,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=i}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(cx("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(cx("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(cx("libc",this.libc)),e.length>0?e.join(" & "):null}isCompatibleWithOS(e){return sl.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return sl.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if(e.range!=="unknown"&&!C8.default.valid(e.range))throw new Error(`Invalid meta field range for '${Pn(e)}'`);let r=Ot(e),i=e.range!=="unknown"?e.range:null,n=this.dependenciesMeta.get(r);n||this.dependenciesMeta.set(r,n=new Map);let s=n.get(i);return s||n.set(i,s={}),s}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${Pn(e)}'`);let r=Ot(e),i=this.peerDependenciesMeta.get(r);return i||this.peerDependenciesMeta.set(r,i={}),i}setRawField(e,r,{after:i=[]}={}){let n=new Set(i.filter(s=>Object.prototype.hasOwnProperty.call(this.raw,s)));if(n.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let s=this.raw,o=this.raw={},a=!1;for(let l of Object.keys(s))o[l]=s[l],a||(n.delete(l),n.size===0&&(o[e]=r,a=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){var s;if(Object.assign(e,this.raw),this.name!==null?e.name=Ot(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let o=this.browser;typeof o=="string"?e.browser=o:o instanceof Map&&(e.browser=Object.assign({},...Array.from(o.keys()).sort().map(a=>({[a]:o.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(o=>({[o]:this.bin.get(o)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces=te(N({},this.raw.workspaces),{packages:this.workspaceDefinitions.map(({pattern:o})=>o)}):e.workspaces=this.workspaceDefinitions.map(({pattern:o})=>o):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let o of this.dependencies.values()){let a=this.dependenciesMeta.get(Ot(o)),l=!1;if(r&&a){let c=a.get(null);c&&c.optional&&(l=!0)}l?n.push(o):i.push(o)}i.length>0?e.dependencies=Object.assign({},...jg(i).map(o=>({[Ot(o)]:o.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...jg(n).map(o=>({[Ot(o)]:o.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...jg(this.devDependencies.values()).map(o=>({[Ot(o)]:o.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...jg(this.peerDependencies.values()).map(o=>({[Ot(o)]:o.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[o,a]of xn(this.dependenciesMeta.entries(),([l,c])=>l))for(let[l,c]of xn(a.entries(),([u,g])=>u!==null?`0${u}`:"1")){let u=l!==null?Pn(rr(An(o),l)):o,g=N({},c);r&&l===null&&delete g.optional,Object.keys(g).length!==0&&(e.dependenciesMeta[u]=g)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...xn(this.peerDependenciesMeta.entries(),([o,a])=>o).map(([o,a])=>({[o]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:o,reference:a})=>({[iI(o)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(s=e.scripts)!=null||(e.scripts={});for(let o of Object.keys(e.scripts))this.scripts.has(o)||delete e.scripts[o];for(let[o,a]of this.scripts.entries())e.scripts[o]=a}else delete e.scripts;return e}},At=sl;At.fileName="package.json",At.allDependencies=["dependencies","devDependencies","peerDependencies"],At.hardDependencies=["dependencies","devDependencies"];function m8(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function E8(t){return t.charCodeAt(0)===65279?t.slice(1):t}function un(t){return t.replace(/\\/g,"/")}function Cw(t,{yamlCompatibilityMode:e}){return e?GS(t):typeof t=="undefined"||typeof t=="boolean"?t:null}function I8(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let i=r%2==0?"":"!",n=e.slice(r);return`${i}${t}=${n}`}function cx(t,e){return e.length===1?I8(t,e[0]):`(${e.map(r=>I8(t,r)).join(" | ")})`}var X8=ge(V8()),Z8=ge(require("stream")),$8=ge(require("string_decoder"));var lke=15,ct=class extends Error{constructor(e,r,i){super(r);this.reportExtra=i;this.reportCode=e}};function cke(t){return typeof t.reportCode!="undefined"}var Ji=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,i,n=new Promise(l=>{i=l}),s=l=>{let c=i;n=new Promise(u=>{i=u}),r=l,c()},o=(l=0)=>{s(r+1)},a=async function*(){for(;r{r=o}),n=(0,X8.default)(o=>{let a=r;i=new Promise(l=>{r=l}),e=o,a()},1e3/lke),s=async function*(){for(;;)await i,yield{title:e}}();return{[Symbol.asyncIterator](){return s},hasProgress:!1,hasTitle:!0,setTitle:n}}async startProgressPromise(e,r){let i=this.reportProgress(e);try{return await r(e)}finally{i.stop()}}startProgressSync(e,r){let i=this.reportProgress(e);try{return r(e)}finally{i.stop()}}reportInfoOnce(e,r,i){var s;let n=i&&i.key?i.key:r;this.reportedInfos.has(n)||(this.reportedInfos.add(n),this.reportInfo(e,r),(s=i==null?void 0:i.reportExtra)==null||s.call(i,this))}reportWarningOnce(e,r,i){var s;let n=i&&i.key?i.key:r;this.reportedWarnings.has(n)||(this.reportedWarnings.add(n),this.reportWarning(e,r),(s=i==null?void 0:i.reportExtra)==null||s.call(i,this))}reportErrorOnce(e,r,i){var s;let n=i&&i.key?i.key:r;this.reportedErrors.has(n)||(this.reportedErrors.add(n),this.reportError(e,r),(s=i==null?void 0:i.reportExtra)==null||s.call(i,this))}reportExceptionOnce(e){cke(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce($.EXCEPTION,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new Z8.PassThrough,i=new $8.StringDecoder,n="";return r.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` +`),a!==-1){let l=n+o.substring(0,a);o=o.substring(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),r}};var yd=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));return i||null}getFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));if(!i)throw new ct($.FETCHER_NOT_FOUND,`${Bt(r.project.configuration,e)} isn't supported by any available fetcher`);return i}};var wd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,r,i)}async getSatisfying(e,r,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,r,i)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));return i||null}getResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));if(!i)throw new Error(`${sr(r.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));return i||null}getResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));if(!i)throw new Error(`${Bt(r.project.configuration,e)} isn't supported by any available resolver`);return i}};var ez=ge(ti());var Gg=/^(?!v)[a-z0-9._-]+$/i,fx=class{supportsDescriptor(e,r){return!!(fo(e.range)||Gg.test(e.range))}supportsLocator(e,r){return!!(ez.default.valid(e.reference)||Gg.test(e.reference))}shouldPersistResolution(e,r){return r.resolver.shouldPersistResolution(this.forwardLocator(e,r),r)}bindDescriptor(e,r,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),r,i)}getResolutionDependencies(e,r){return r.resolver.getResolutionDependencies(this.forwardDescriptor(e,r),r)}async getCandidates(e,r,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),r,i)}async getSatisfying(e,r,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),r,i)}async resolve(e,r){let i=await r.resolver.resolve(this.forwardLocator(e,r),r);return ld(i,e)}forwardDescriptor(e,r){return rr(e,`${r.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,r){return cn(e,`${r.project.configuration.get("defaultProtocol")}${e.reference}`)}};var Bd=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=cn(e,n);return r.fetcher.getLocalPath(s,r)}async fetch(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=cn(e,n),o=await r.fetcher.fetch(s,r);return await this.ensureVirtualLink(e,o,r)}getLocatorFilename(e){return Hg(e)}async ensureVirtualLink(e,r,i){let n=r.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Jr.makeVirtualPath(s,o,n),l=new Pa(a,{baseFs:r.packageFs,pathUtils:k});return te(N({},r),{packageFs:l})}};var Yg=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Yg.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Yg.protocol)}supportsDescriptor(e,r){return Yg.isVirtualDescriptor(e)}supportsLocator(e,r){return Yg.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},mw=Yg;mw.protocol="virtual:";var bd=class{supports(e){return!!e.reference.startsWith(si.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let i=this.getWorkspace(e,r).cwd;return{packageFs:new _t(i),prefixPath:Me.dot,localPath:i}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(si.protocol.length))}};var hx={};ft(hx,{getDefaultGlobalFolder:()=>dx,getHomeFolder:()=>Qd,isFolderInside:()=>Cx});var px=ge(require("os"));function dx(){if(process.platform==="win32"){let t=j.toPortablePath(process.env.LOCALAPPDATA||j.join((0,px.homedir)(),"AppData","Local"));return k.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=j.toPortablePath(process.env.XDG_DATA_HOME);return k.resolve(t,"yarn/berry")}return k.resolve(Qd(),".yarn/berry")}function Qd(){return j.toPortablePath((0,px.homedir)()||"/usr/local/share")}function Cx(t,e){let r=k.relative(e,t);return r&&!r.startsWith("..")&&!k.isAbsolute(r)}var qg={};ft(qg,{builtinModules:()=>mx,getArchitecture:()=>vd,getArchitectureName:()=>gke,getArchitectureSet:()=>Ex});var tz=ge(require("module"));function mx(){return new Set(tz.default.builtinModules||Object.keys(process.binding("natives")))}function uke(){var i,n,s,o;if(process.platform==="win32")return null;let e=(s=((n=(i=process.report)==null?void 0:i.getReport())!=null?n:{}).sharedObjects)!=null?s:[],r=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return(o=$p(e,a=>{let l=a.match(r);if(!l)return $p.skip;if(l[1])return"glibc";if(l[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")}))!=null?o:null}var Ew,Iw;function vd(){return Ew=Ew!=null?Ew:{os:process.platform,cpu:process.arch,libc:uke()}}function gke(t=vd()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function Ex(){let t=vd();return Iw=Iw!=null?Iw:{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}var fke=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),ww="yarn_",yx=".yarnrc.yml",wx="yarn.lock",hke="********",Ie;(function(u){u.ANY="ANY",u.BOOLEAN="BOOLEAN",u.ABSOLUTE_PATH="ABSOLUTE_PATH",u.LOCATOR="LOCATOR",u.LOCATOR_LOOSE="LOCATOR_LOOSE",u.NUMBER="NUMBER",u.STRING="STRING",u.SECRET="SECRET",u.SHAPE="SHAPE",u.MAP="MAP"})(Ie||(Ie={}));var Di=Ge,Bx={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:Ie.STRING,default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:Ie.ABSOLUTE_PATH,default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:Ie.BOOLEAN,default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:Ie.BOOLEAN,default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:Ie.STRING,default:null},globalFolder:{description:"Folder where all system-global files are stored",type:Ie.ABSOLUTE_PATH,default:dx()},cacheFolder:{description:"Folder where the cache files must be written",type:Ie.ABSOLUTE_PATH,default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:Ie.NUMBER,values:["mixed",0,1,2,3,4,5,6,7,8,9],default:ic},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:Ie.ABSOLUTE_PATH,default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:Ie.STRING,default:wx},installStatePath:{description:"Path of the file where the install state will be persisted",type:Ie.ABSOLUTE_PATH,default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:Ie.STRING,default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:Ie.STRING,default:Bw()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:Ie.BOOLEAN,default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:Ie.BOOLEAN,default:Fy,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:Ie.BOOLEAN,default:WS,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:Ie.BOOLEAN,default:yw.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:Ie.BOOLEAN,default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:Ie.BOOLEAN,default:!yw.isCI,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:Ie.BOOLEAN,default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:Ie.BOOLEAN,default:yw.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:Ie.BOOLEAN,default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:Ie.BOOLEAN,default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:Ie.STRING,default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:Ie.STRING,default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:Ie.STRING,default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:Ie.BOOLEAN,default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:Ie.SHAPE,properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:Ie.STRING,isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:Ie.STRING,isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:Ie.STRING,isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:Ie.BOOLEAN,default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:Ie.BOOLEAN,default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:Ie.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:Ie.STRING,default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:Ie.STRING,default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:Ie.NUMBER,default:6e4},httpRetry:{description:"Retry times on http failure",type:Ie.NUMBER,default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:Ie.NUMBER,default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:Ie.MAP,valueDefinition:{description:"",type:Ie.SHAPE,properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:Ie.ABSOLUTE_PATH,default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:Ie.BOOLEAN,default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:Ie.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:Ie.STRING,default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:Ie.ABSOLUTE_PATH,default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:Ie.ABSOLUTE_PATH,default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:Ie.ABSOLUTE_PATH,default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:Ie.ABSOLUTE_PATH,default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:Ie.ABSOLUTE_PATH,default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:Ie.BOOLEAN,default:!0},logFilters:{description:"Overrides for log levels",type:Ie.SHAPE,isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:Ie.STRING,default:void 0},text:{description:"Code of the texts covered by this override",type:Ie.STRING,default:void 0},pattern:{description:"Code of the patterns covered by this override",type:Ie.STRING,default:void 0},level:{description:"Log level override, set to null to remove override",type:Ie.STRING,values:Object.values(go),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:Ie.BOOLEAN,default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:Ie.NUMBER,default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:Ie.STRING,default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:Ie.BOOLEAN,default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:Ie.BOOLEAN,default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:Ie.BOOLEAN,default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:Ie.STRING,default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:Ie.MAP,valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:Ie.SHAPE,properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:Ie.MAP,valueDefinition:{description:"A range",type:Ie.STRING}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:Ie.MAP,valueDefinition:{description:"A semver range",type:Ie.STRING}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:Ie.MAP,valueDefinition:{description:"The peerDependency meta",type:Ie.SHAPE,properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:Ie.BOOLEAN,default:!1}}}}}}}};function Qx(t,e,r,i,n){if(i.isArray||i.type===Ie.ANY&&Array.isArray(r))return Array.isArray(r)?r.map((s,o)=>bx(t,`${e}[${o}]`,s,i,n)):String(r).split(/,/).map(s=>bx(t,e,s,i,n));if(Array.isArray(r))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return bx(t,e,r,i,n)}function bx(t,e,r,i,n){var a;switch(i.type){case Ie.ANY:return r;case Ie.SHAPE:return pke(t,e,r,i,n);case Ie.MAP:return dke(t,e,r,i,n)}if(r===null&&!i.isNullable&&i.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((a=i.values)==null?void 0:a.includes(r))return r;let o=(()=>{if(i.type===Ie.BOOLEAN&&typeof r!="string")return td(r);if(typeof r!="string")throw new Error(`Expected value (${r}) to be a string`);let l=jS(r,{env:process.env});switch(i.type){case Ie.ABSOLUTE_PATH:return k.resolve(n,j.toPortablePath(l));case Ie.LOCATOR_LOOSE:return Mc(l,!1);case Ie.NUMBER:return parseInt(l);case Ie.LOCATOR:return Mc(l);case Ie.BOOLEAN:return td(l);default:return l}})();if(i.values&&!i.values.includes(o))throw new Error(`Invalid value, expected one of ${i.values.join(", ")}`);return o}function pke(t,e,r,i,n){if(typeof r!="object"||Array.isArray(r))throw new Pe(`Object configuration settings "${e}" must be an object`);let s=vx(t,i,{ignoreArrays:!0});if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=`${e}.${o}`;if(!i.properties[o])throw new Pe(`Unrecognized configuration settings found: ${e}.${o} - run "yarn config -v" to see the list of settings supported in Yarn`);s.set(o,Qx(t,l,a,i.properties[o],n))}return s}function dke(t,e,r,i,n){let s=new Map;if(typeof r!="object"||Array.isArray(r))throw new Pe(`Map configuration settings "${e}" must be an object`);if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=i.normalizeKeys?i.normalizeKeys(o):o,c=`${e}['${l}']`,u=i.valueDefinition;s.set(l,Qx(t,c,a,u,n))}return s}function vx(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case Ie.SHAPE:{if(e.isArray&&!r)return[];let i=new Map;for(let[n,s]of Object.entries(e.properties))i.set(n,vx(t,s));return i}break;case Ie.MAP:return e.isArray&&!r?[]:new Map;case Ie.ABSOLUTE_PATH:return e.default===null?null:t.projectCwd===null?k.isAbsolute(e.default)?k.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(i=>k.resolve(t.projectCwd,i)):k.resolve(t.projectCwd,e.default);default:return e.default}}function bw(t,e,r){if(e.type===Ie.SECRET&&typeof t=="string"&&r.hideSecrets)return hke;if(e.type===Ie.ABSOLUTE_PATH&&typeof t=="string"&&r.getNativePaths)return j.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let i=[];for(let n of t)i.push(bw(n,e,r));return i}if(e.type===Ie.MAP&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries())i.set(n,bw(s,e.valueDefinition,r));return i}if(e.type===Ie.SHAPE&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries()){let o=e.properties[n];i.set(n,bw(s,o,r))}return i}return t}function Cke(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),!!e.startsWith(ww)&&(e=(0,rz.default)(e.slice(ww.length)),t[e]=r);return t}function Bw(){let t=`${ww}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return yx}var ol;(function(i){i[i.LOCKFILE=0]="LOCKFILE",i[i.MANIFEST=1]="MANIFEST",i[i.NONE=2]="NONE"})(ol||(ol={}));var Xa=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,i){let n=new Xa(e);typeof r!="undefined"&&!(r instanceof Map)&&(n.projectCwd=r),n.importSettings(Bx);let s=typeof i!="undefined"?i:r instanceof Map?r:new Map;for(let[o,a]of s)n.activatePlugin(o,a);return n}static async find(e,r,{lookup:i=0,strict:n=!0,usePath:s=!1,useRc:o=!0}={}){let a=Cke();delete a.rcFilename;let l=await Xa.findRcFiles(e),c=await Xa.findHomeRcFile();if(c){let Q=l.find(S=>S.path===c.path);Q?Q.strict=!1:l.push(te(N({},c),{strict:!1}))}let u=({ignoreCwd:Q,yarnPath:S,ignorePath:x,lockfileFilename:M})=>({ignoreCwd:Q,yarnPath:S,ignorePath:x,lockfileFilename:M}),g=U=>{var J=U,{ignoreCwd:Q,yarnPath:S,ignorePath:x,lockfileFilename:M}=J,Y=Tr(J,["ignoreCwd","yarnPath","ignorePath","lockfileFilename"]);return Y},f=new Xa(e);f.importSettings(u(Bx)),f.useWithSource("",u(a),e,{strict:!1});for(let{path:Q,cwd:S,data:x}of l)f.useWithSource(Q,u(x),S,{strict:!1});if(s){let Q=f.get("yarnPath"),S=f.get("ignorePath");if(Q!==null&&!S)return f}let h=f.get("lockfileFilename"),p;switch(i){case 0:p=await Xa.findProjectCwd(e,h);break;case 1:p=await Xa.findProjectCwd(e,null);break;case 2:K.existsSync(k.join(e,"package.json"))?p=k.resolve(e):p=null;break}f.startingCwd=e,f.projectCwd=p,f.importSettings(g(Bx));let m=new Map([["@@core",f8]]),y=Q=>"default"in Q?Q.default:Q;if(r!==null){for(let M of r.plugins.keys())m.set(M,y(r.modules.get(M)));let Q=new Map;for(let M of mx())Q.set(M,()=>Rg(M));for(let[M,Y]of r.modules)Q.set(M,()=>Y);let S=new Set,x=async(M,Y)=>{let{factory:U,name:J}=Rg(M);if(S.has(J))return;let W=new Map(Q),ee=A=>{if(W.has(A))return W.get(A)();throw new Pe(`This plugin cannot access the package referenced via ${A} which is neither a builtin, nor an exposed entry`)},Z=await Pg(async()=>y(await U(ee)),A=>`${A} (when initializing ${J}, defined in ${Y})`);Q.set(J,()=>Z),S.add(J),m.set(J,Z)};if(a.plugins)for(let M of a.plugins.split(";")){let Y=k.resolve(e,j.toPortablePath(M));await x(Y,"")}for(let{path:M,cwd:Y,data:U}of l)if(!!o&&!!Array.isArray(U.plugins))for(let J of U.plugins){let W=typeof J!="string"?J.path:J,ee=k.resolve(Y,j.toPortablePath(W));await x(ee,M)}}for(let[Q,S]of m)f.activatePlugin(Q,S);f.useWithSource("",g(a),e,{strict:n});for(let{path:Q,cwd:S,data:x,strict:M}of l)f.useWithSource(Q,g(x),S,{strict:M!=null?M:n});return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),await f.refreshPackageExtensions(),f}static async findRcFiles(e){let r=Bw(),i=[],n=e,s=null;for(;n!==s;){s=n;let o=k.join(s,r);if(K.existsSync(o)){let a=await K.readFilePromise(o,"utf8"),l;try{l=Qi(a)}catch(c){let u="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(u=" (in particular, make sure you list the colons after each key name)"),new Pe(`Parse error when loading ${o}; please check it's proper Yaml${u}`)}i.push({path:o,cwd:s,data:l})}n=k.dirname(s)}return i}static async findHomeRcFile(){let e=Bw(),r=Qd(),i=k.join(r,e);if(K.existsSync(i)){let n=await K.readFilePromise(i,"utf8"),s=Qi(n);return{path:i,cwd:r,data:s}}return null}static async findProjectCwd(e,r){let i=null,n=e,s=null;for(;n!==s;){if(s=n,K.existsSync(k.join(s,"package.json"))&&(i=s),r!==null){if(K.existsSync(k.join(s,r))){i=s;break}}else if(i!==null)break;n=k.dirname(s)}return i}static async updateConfiguration(e,r){let i=Bw(),n=k.join(e,i),s=K.existsSync(n)?Qi(await K.readFilePromise(n,"utf8")):{},o=!1,a;if(typeof r=="function"){try{a=r(s)}catch{a=r({})}if(a===s)return}else{a=s;for(let l of Object.keys(r)){let c=s[l],u=r[l],g;if(typeof u=="function")try{g=u(c)}catch{g=u(void 0)}else g=u;c!==g&&(a[l]=g,o=!0)}if(!o)return}await K.changeFilePromise(n,Na(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let r=Qd();return await Xa.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration!="undefined"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,i]of Object.entries(e))if(i!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,i),this.values.set(r,vx(this,i))}}useWithSource(e,r,i,n){try{this.use(e,r,i,n)}catch(s){throw s.message+=` (in ${et(this,e,Ge.PATH)})`,s}}use(e,r,i,{strict:n=!0,overwrite:s=!1}={}){n=n&&this.get("enableStrictSettings");for(let o of["enableStrictSettings",...Object.keys(r)]){if(typeof r[o]=="undefined"||o==="plugins"||e===""&&fke.has(o))continue;if(o==="rcFilename")throw new Pe(`The rcFilename settings can only be set via ${`${ww}RC_FILENAME`.toUpperCase()}, not via a rc file`);let l=this.settings.get(o);if(!l){if(n)throw new Pe(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(s||l.type===Ie.MAP||l.isArray&&l.concatenateValues))continue;let c;try{c=Qx(this,o,r[o],l,i)}catch(u){throw u.message+=` in ${et(this,e,Ge.PATH)}`,u}if(o==="enableStrictSettings"&&e!==""){n=c;continue}if(l.type===Ie.MAP){let u=this.values.get(o);this.values.set(o,new Map(s?[...u,...c]:[...c,...u])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(l.isArray&&l.concatenateValues){let u=this.values.get(o);this.values.set(o,s?[...u,...c]:[...c,...u]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,c),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:i=!1}){let n=this.get(e),s=this.settings.get(e);if(typeof s=="undefined")throw new Pe(`Couldn't find a configuration settings named "${e}"`);return bw(n,s,{hideSecrets:r,getNativePaths:i})}getSubprocessStreams(e,{header:r,prefix:i,report:n}){let s,o,a=K.createWriteStream(e);if(this.get("enableInlineBuilds")){let l=n.createStreamReporter(`${i} ${et(this,"STDOUT","green")}`),c=n.createStreamReporter(`${i} ${et(this,"STDERR","red")}`);s=new Ix.PassThrough,s.pipe(l),s.pipe(a),o=new Ix.PassThrough,o.pipe(c),o.pipe(a)}else s=a,o=a,typeof r!="undefined"&&s.write(`${r} +`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let i of r.resolvers||[])e.push(new i);return new wd([new mw,new si,new fx,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let i of r.fetchers||[])e.push(new i);return new yd([new Bd,new bd,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let i of r.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=vd(),r=this.get("supportedArchitectures"),i=r.get("os");i!==null&&(i=i.map(o=>o==="current"?e.os:o));let n=r.get("cpu");n!==null&&(n=n.map(o=>o==="current"?e.cpu:o));let s=r.get("libc");return s!==null&&(s=qo(s,o=>{var a;return o==="current"?(a=e.libc)!=null?a:qo.skip:o})),{os:i,cpu:n,libc:s}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(i,n,{userProvided:s=!1}={})=>{if(!fo(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new At;o.load(n,{yamlCompatibilityMode:!0});let a=kg(e,i.identHash),l=[];a.push([i.range,l]);let c={status:qi.Inactive,userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push(te(N({},c),{type:yi.Dependency,descriptor:u}));for(let u of o.peerDependencies.values())l.push(te(N({},c),{type:yi.PeerDependency,descriptor:u}));for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push(te(N({},c),{type:yi.PeerDependencyMeta,selector:u,key:f,value:h}))};await this.triggerHook(i=>i.registerPackageExtensions,this,r);for(let[i,n]of this.get("packageExtensions"))r(nl(i,!0),Ry(n),{userProvided:!0})}normalizePackage(e){let r=cd(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i!="undefined"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!Uc(s,o))for(let l of a)switch(l.status===qi.Inactive&&(l.status=qi.Redundant),l.type){case yi.Dependency:typeof r.dependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=qi.Active,r.dependencies.set(l.descriptor.identHash,l.descriptor));break;case yi.PeerDependency:typeof r.peerDependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=qi.Active,r.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case yi.PeerDependencyMeta:{let c=r.peerDependenciesMeta.get(l.selector);(typeof c=="undefined"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status=qi.Active,qa(r.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:US(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of r.peerDependenciesMeta.keys()){let o=An(s);r.peerDependencies.has(o.identHash)||r.peerDependencies.set(o.identHash,rr(o,"*"))}for(let s of r.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=Vo("types",o),l=Ot(a);r.peerDependencies.has(a.identHash)||r.peerDependenciesMeta.has(l)||(r.peerDependencies.set(a.identHash,rr(a,"*")),r.peerDependenciesMeta.set(l,{optional:!0}))}return r.dependencies=new Map(xn(r.dependencies,([,s])=>Pn(s))),r.peerDependencies=new Map(xn(r.peerDependencies,([,s])=>Pn(s))),r}getLimit(e){return qa(this.limits,e,()=>(0,iz.default)(this.get(e)))}async triggerHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...r)}}async triggerMultipleHooks(e,r){for(let i of r)await this.triggerHook(e,...i)}async reduceHook(e,r,...i){let n=r;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...r);if(typeof o!="undefined")return o}return null}},ye=Xa;ye.telemetry=null;var is;(function(i){i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always"})(is||(is={}));var Qw=class extends ct{constructor({fileName:e,code:r,signal:i}){let n=ye.create(k.cwd()),s=et(n,e,Ge.PATH);super($.EXCEPTION,`Child ${s} reported an error`,o=>{mke(r,i,{configuration:n,report:o})});this.code=kx(r,i)}},xx=class extends Qw{constructor({fileName:e,code:r,signal:i,stdout:n,stderr:s}){super({fileName:e,code:r,signal:i});this.stdout=n,this.stderr=s}};function jc(t){return t!==null&&typeof t.fd=="number"}var Gc=new Set;function Px(){}function Dx(){for(let t of Gc)t.kill()}async function $o(t,e,{cwd:r,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":jc(s)&&(c[0]=s),jc(o)&&(c[1]=o),jc(a)&&(c[2]=a);let u=(0,Sx.default)(t,e,{cwd:j.fromPortablePath(r),env:te(N({},i),{PWD:j.fromPortablePath(r)}),stdio:c});Gc.add(u),Gc.size===1&&(process.on("SIGINT",Px),process.on("SIGTERM",Dx)),!jc(s)&&s!==null&&s.pipe(u.stdin),jc(o)||u.stdout.pipe(o,{end:!1}),jc(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))jc(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{Gc.delete(u),Gc.size===0&&(process.off("SIGINT",Px),process.off("SIGTERM",Dx)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,m)=>{Gc.delete(u),Gc.size===0&&(process.off("SIGINT",Px),process.off("SIGTERM",Dx)),(l===2||l===1&&p>0)&&g(),p===0||!n?f({code:kx(p,m)}):h(new Qw({fileName:t,code:p,signal:m}))})})}async function Eke(t,e,{cwd:r,env:i=process.env,encoding:n="utf8",strict:s=!1}){let o=["ignore","pipe","pipe"],a=[],l=[],c=j.fromPortablePath(r);typeof i.PWD!="undefined"&&(i=te(N({},i),{PWD:c}));let u=(0,Sx.default)(t,e,{cwd:c,env:i,stdio:o});return u.stdout.on("data",g=>{a.push(g)}),u.stderr.on("data",g=>{l.push(g)}),await new Promise((g,f)=>{u.on("error",h=>{let p=ye.create(r),m=et(p,t,Ge.PATH);f(new ct($.EXCEPTION,`Process ${m} failed to spawn`,y=>{y.reportError($.EXCEPTION,` ${Jo(p,{label:"Thrown Error",value:uo(Ge.NO_HINT,h.message)})}`)}))}),u.on("close",(h,p)=>{let m=n==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(n),y=n==="buffer"?Buffer.concat(l):Buffer.concat(l).toString(n);h===0||!s?g({code:kx(h,p),stdout:m,stderr:y}):f(new xx({fileName:t,code:h,signal:p,stdout:m,stderr:y}))})})}var Ike=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function kx(t,e){let r=Ike.get(e);return typeof r!="undefined"?128+r:t!=null?t:1}function mke(t,e,{configuration:r,report:i}){i.reportError($.EXCEPTION,` ${Jo(r,t!==null?{label:"Exit Code",value:uo(Ge.NUMBER,t)}:{label:"Exit Signal",value:uo(Ge.CODE,e)})}`)}var ir={};ft(ir,{Method:()=>gl,RequestError:()=>j_.RequestError,del:()=>RDe,get:()=>PDe,getNetworkSettings:()=>J_,post:()=>VP,put:()=>DDe,request:()=>Od});var U_=ge(Gw()),K_=ge(require("https")),H_=ge(require("http")),WP=ge(ts()),zP=ge(M_()),Yw=ge(require("url"));var j_=ge(Gw()),G_=new Map,Y_=new Map,vDe=new H_.Agent({keepAlive:!0}),SDe=new K_.Agent({keepAlive:!0});function q_(t){let e=new Yw.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),{proxy:r}}async function _P(t){return qa(Y_,t,()=>K.readFilePromise(t).then(e=>(Y_.set(t,e),e)))}function kDe({statusCode:t,statusMessage:e},r){let i=et(r,t,Ge.NUMBER),n=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Fg(r,`${i}${e?` (${e})`:""}`,n)}async function qw(t,{configuration:e,customErrorMessage:r}){var i,n;try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let o=(n=r==null?void 0:r(s))!=null?n:(i=s.response.body)==null?void 0:i.error;o==null&&(s.message.startsWith("Response code")?o="The remote server failed to provide the requested resource":o=s.message),s instanceof U_.TimeoutError&&s.event==="socket"&&(o+=`(can be increased via ${et(e,"httpTimeout",Ge.SETTING)})`);let a=new ct($.NETWORK_ERROR,o,l=>{s.response&&l.reportError($.NETWORK_ERROR,` ${Jo(e,{label:"Response Code",value:uo(Ge.NO_HINT,kDe(s.response,e))})}`),s.request&&(l.reportError($.NETWORK_ERROR,` ${Jo(e,{label:"Request Method",value:uo(Ge.NO_HINT,s.request.options.method)})}`),l.reportError($.NETWORK_ERROR,` ${Jo(e,{label:"Request URL",value:uo(Ge.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&l.reportError($.NETWORK_ERROR,` ${Jo(e,{label:"Request Redirects",value:uo(Ge.NO_HINT,_S(e,s.request.redirects,Ge.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&l.reportError($.NETWORK_ERROR,` ${Jo(e,{label:"Request Retry Count",value:uo(Ge.NO_HINT,`${et(e,s.request.retryCount,Ge.NUMBER)} (can be increased via ${et(e,"httpRetry",Ge.SETTING)})`)})}`)});throw a.originalError=s,a}}function J_(t,e){let r=[...e.configuration.get("networkSettings")].sort(([o],[a])=>a.length-o.length),i={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},n=Object.keys(i),s=typeof t=="string"?new Yw.URL(t):t;for(let[o,a]of r)if(WP.default.isMatch(s.hostname,o))for(let l of n){let c=a.get(l);c!==null&&typeof i[l]=="undefined"&&(i[l]=c)}for(let o of n)typeof i[o]=="undefined"&&(i[o]=e.configuration.get(o));return i}var gl;(function(n){n.GET="GET",n.PUT="PUT",n.POST="POST",n.DELETE="DELETE"})(gl||(gl={}));async function Od(t,e,{configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o=gl.GET}){let a=async()=>await xDe(t,e,{configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o});return await(await r.reduceHook(c=>c.wrapNetworkRequest,a,{target:t,body:e,configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o}))()}async function PDe(t,n){var s=n,{configuration:e,jsonResponse:r}=s,i=Tr(s,["configuration","jsonResponse"]);let o=qa(G_,t,()=>qw(Od(t,null,N({configuration:e},i)),{configuration:e}).then(a=>(G_.set(t,a.body),a.body)));return Buffer.isBuffer(o)===!1&&(o=await o),r?JSON.parse(o.toString()):o}async function DDe(t,e,n){var s=n,{customErrorMessage:r}=s,i=Tr(s,["customErrorMessage"]);return(await qw(Od(t,e,te(N({},i),{method:gl.PUT})),i)).body}async function VP(t,e,n){var s=n,{customErrorMessage:r}=s,i=Tr(s,["customErrorMessage"]);return(await qw(Od(t,e,te(N({},i),{method:gl.POST})),i)).body}async function RDe(t,i){var n=i,{customErrorMessage:e}=n,r=Tr(n,["customErrorMessage"]);return(await qw(Od(t,null,te(N({},r),{method:gl.DELETE})),r)).body}async function xDe(t,e,{configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o=gl.GET}){let a=typeof t=="string"?new Yw.URL(t):t,l=J_(a,{configuration:r});if(l.enableNetwork===!1)throw new Error(`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!WP.default.isMatch(a.hostname,r.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let u={agent:{http:l.httpProxy?zP.default.httpOverHttp(q_(l.httpProxy)):vDe,https:l.httpsProxy?zP.default.httpsOverHttp(q_(l.httpsProxy)):SDe},headers:i,method:o};u.responseType=s?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!n&&typeof e=="string"?u.body=e:u.json=e);let g=r.get("httpTimeout"),f=r.get("httpRetry"),h=r.get("enableStrictSsl"),p=l.caFilePath,m=l.httpsCertFilePath,y=l.httpsKeyFilePath,{default:Q}=await Promise.resolve().then(()=>ge(Gw())),S=p?await _P(p):void 0,x=m?await _P(m):void 0,M=y?await _P(y):void 0,Y=Q.extend(N({timeout:{socket:g},retry:f,https:{rejectUnauthorized:h,certificateAuthority:S,certificate:x,key:M}},u));return r.getLimit("networkConcurrency")(()=>Y(a))}var Zt={};ft(Zt,{PackageManager:()=>hn,detectPackageManager:()=>s6,executePackageAccessibleBinary:()=>c6,executePackageScript:()=>aB,executePackageShellcode:()=>uD,executeWorkspaceAccessibleBinary:()=>XRe,executeWorkspaceLifecycleScript:()=>l6,executeWorkspaceScript:()=>A6,getPackageAccessibleBinaries:()=>AB,getWorkspaceAccessibleBinaries:()=>a6,hasPackageScript:()=>zRe,hasWorkspaceScript:()=>cD,makeScriptEnv:()=>Yd,maybeExecuteWorkspaceLifecycleScript:()=>VRe,prepareExternalProject:()=>WRe});var Md={};ft(Md,{getLibzipPromise:()=>fn,getLibzipSync:()=>X_});var V_=ge(z_());var fl=["number","number"],$P;(function(L){L[L.ZIP_ER_OK=0]="ZIP_ER_OK",L[L.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",L[L.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",L[L.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",L[L.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",L[L.ZIP_ER_READ=5]="ZIP_ER_READ",L[L.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",L[L.ZIP_ER_CRC=7]="ZIP_ER_CRC",L[L.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",L[L.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",L[L.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",L[L.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",L[L.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",L[L.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",L[L.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",L[L.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",L[L.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",L[L.ZIP_ER_EOF=17]="ZIP_ER_EOF",L[L.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",L[L.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",L[L.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",L[L.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",L[L.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",L[L.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",L[L.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",L[L.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",L[L.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",L[L.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",L[L.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",L[L.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",L[L.ZIP_ER_TELL=30]="ZIP_ER_TELL",L[L.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA"})($P||($P={}));var __=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:$P,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,open:t.cwrap("zip_open","number",["string","number","number"]),openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...fl,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...fl,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...fl,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...fl,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...fl,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...fl,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number","number","number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...fl,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...fl,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}});var eD=null;function X_(){return eD===null&&(eD=__((0,V_.default)())),eD}async function fn(){return X_()}var Kd={};ft(Kd,{ShellError:()=>Ts,execute:()=>eB,globUtils:()=>Ww});var l5=ge(IS()),c5=ge(require("os")),ns=ge(require("stream")),u5=ge(require("util"));var Ts=class extends Error{constructor(e){super(e);this.name="ShellError"}};var Ww={};ft(Ww,{fastGlobOptions:()=>e5,isBraceExpansion:()=>t5,isGlobPattern:()=>FDe,match:()=>NDe,micromatchOptions:()=>_w});var Z_=ge(tw()),$_=ge(require("fs")),zw=ge(ts()),_w={strictBrackets:!0},e5={onlyDirectories:!1,onlyFiles:!1};function FDe(t){if(!zw.default.scan(t,_w).isGlob)return!1;try{zw.default.parse(t,_w)}catch{return!1}return!0}function NDe(t,{cwd:e,baseFs:r}){return(0,Z_.default)(t,te(N({},e5),{cwd:j.fromPortablePath(e),fs:VE($_.default,new _h(r))}))}function t5(t){return zw.default.scan(t,_w).isBrace}var r5=ge(LQ()),ta=ge(require("stream")),i5=ge(require("string_decoder")),Fn;(function(i){i[i.STDIN=0]="STDIN",i[i.STDOUT=1]="STDOUT",i[i.STDERR=2]="STDERR"})(Fn||(Fn={}));var qc=new Set;function tD(){}function rD(){for(let t of qc)t.kill()}function n5(t,e,r,i){return n=>{let s=n[0]instanceof ta.Transform?"pipe":n[0],o=n[1]instanceof ta.Transform?"pipe":n[1],a=n[2]instanceof ta.Transform?"pipe":n[2],l=(0,r5.default)(t,e,te(N({},i),{stdio:[s,o,a]}));return qc.add(l),qc.size===1&&(process.on("SIGINT",tD),process.on("SIGTERM",rD)),n[0]instanceof ta.Transform&&n[0].pipe(l.stdin),n[1]instanceof ta.Transform&&l.stdout.pipe(n[1],{end:!1}),n[2]instanceof ta.Transform&&l.stderr.pipe(n[2],{end:!1}),{stdin:l.stdin,promise:new Promise(c=>{l.on("error",u=>{switch(qc.delete(l),qc.size===0&&(process.off("SIGINT",tD),process.off("SIGTERM",rD)),u.code){case"ENOENT":n[2].write(`command not found: ${t} +`),c(127);break;case"EACCES":n[2].write(`permission denied: ${t} +`),c(128);break;default:n[2].write(`uncaught error: ${u.message} +`),c(1);break}}),l.on("exit",u=>{qc.delete(l),qc.size===0&&(process.off("SIGINT",tD),process.off("SIGTERM",rD)),c(u!==null?u:129)})})}}}function s5(t){return e=>{let r=e[0]==="pipe"?new ta.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}var po=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},o5=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Ud=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:i,stderr:n}){let s=new Ud(null,e);return s.stdin=r,s.stdout=i,s.stderr=n,s}pipeTo(e,r=1){let i=new Ud(this,e),n=new o5;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(r&1)==1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)==2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(r.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function Vw(t,e){return Ud.start(t,e)}function a5(t,e=null){let r=new ta.PassThrough,i=new i5.StringDecoder,n="";return r.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` +`),a!==-1){let l=n+o.substring(0,a);o=o.substring(a+1),n="",t(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&t(e!==null?`${e} ${s}`:s)}),r}function A5(t,{prefix:e}){return{stdout:a5(r=>t.stdout.write(`${r} +`),t.stdout.isTTY?e:null),stderr:a5(r=>t.stderr.write(`${r} +`),t.stderr.isTTY?e:null)}}var LDe=(0,u5.promisify)(setTimeout);var zi;(function(r){r[r.Readable=1]="Readable",r[r.Writable=2]="Writable"})(zi||(zi={}));function g5(t,e,r){let i=new ns.PassThrough({autoDestroy:!0});switch(t){case Fn.STDIN:(e&1)==1&&r.stdin.pipe(i,{end:!1}),(e&2)==2&&r.stdin instanceof ns.Writable&&i.pipe(r.stdin,{end:!1});break;case Fn.STDOUT:(e&1)==1&&r.stdout.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stdout,{end:!1});break;case Fn.STDERR:(e&1)==1&&r.stderr.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stderr,{end:!1});break;default:throw new Ts(`Bad file descriptor: "${t}"`)}return i}function Xw(t,e={}){let r=N(N({},t),e);return r.environment=N(N({},t.environment),e.environment),r.variables=N(N({},t.variables),e.variables),r}var TDe=new Map([["cd",async([t=(0,c5.homedir)(),...e],r,i)=>{let n=k.resolve(i.cwd,j.toPortablePath(t));if(!(await r.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new Ts(`cd: no such file or directory: ${t}`):o})).isDirectory())throw new Ts(`cd: not a directory: ${t}`);return i.cwd=n,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${j.fromPortablePath(r.cwd)} +`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,i)=>i.exitCode=parseInt(t!=null?t:i.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} +`),0)],["sleep",async([t],e,r)=>{if(typeof t=="undefined")throw new Ts("sleep: missing operand");let i=Number(t);if(Number.isNaN(i))throw new Ts(`sleep: invalid time interval '${t}'`);return await LDe(1e3*i,0)}],["__ysh_run_procedure",async(t,e,r)=>{let i=r.procedures[t[0]];return await Vw(i,{stdin:new po(r.stdin),stdout:new po(r.stdout),stderr:new po(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let i=r.stdin,n=r.stdout,s=r.stderr,o=[],a=[],l=[],c=0;for(;t[c]!=="--";){let g=t[c++],{type:f,fd:h}=JSON.parse(g),p=S=>{switch(h){case null:case 0:o.push(S);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},m=S=>{switch(h){case null:case 1:a.push(S);break;case 2:l.push(S);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},y=Number(t[c++]),Q=c+y;for(let S=c;Se.baseFs.createReadStream(k.resolve(r.cwd,j.toPortablePath(t[S]))));break;case"<<<":p(()=>{let x=new ns.PassThrough;return process.nextTick(()=>{x.write(`${t[S]} +`),x.end()}),x});break;case"<&":p(()=>g5(Number(t[S]),1,r));break;case">":case">>":{let x=k.resolve(r.cwd,j.toPortablePath(t[S]));m(x==="/dev/null"?new ns.Writable({autoDestroy:!0,emitClose:!0,write(M,Y,U){setImmediate(U)}}):e.baseFs.createWriteStream(x,f===">>"?{flags:"a"}:void 0))}break;case">&":m(g5(Number(t[S]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new ns.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new ns.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new ns.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await Vw(Hd(t.slice(c+1),e,r),{stdin:new po(i),stdout:new po(n),stderr:new po(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function ODe(t,e,r){let i=[],n=new ns.PassThrough;return n.on("data",s=>i.push(s)),await Zw(t,e,Xw(r,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function f5(t,e,r){let i=t.map(async s=>{let o=await iA(s.args,e,r);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function $w(t){return t.match(/[^ \r\n\t]+/g)||[]}async function h5(t,e,r,i,n=i){switch(t.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(t.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=$w(s);for(let a=0;a=0&&st+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)};async function jd(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let i=[];await h5(te(N({},t),{quoted:!0}),e,r,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?jd({type:"variable",name:i.join(" ")},e,r):jd({type:"number",value:n},e,r)}else return MDe[t.type](await jd(t.left,e,r),await jd(t.right,e,r))}async function iA(t,e,r){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p=="undefined"&&i.set(h,p=[]),p.push(f)};for(let u of t){let g=!1;switch(u.type){case"redirection":{let f=await iA(u.args,e,r);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await ODe(f.shell,e,r);if(f.quoted)o(h);else{let p=$w(h);for(let m=0;m0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function Hd(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let i=j.fromPortablePath(r.cwd),n=r.environment;typeof n.PWD!="undefined"&&(n=te(N({},n),{PWD:i}));let[s,...o]=t;if(s==="command")return n5(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a=="undefined")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return s5(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=r;r.stdin=l,r.stdout=c,r.stderr=u;try{return await a(o,e,r)}finally{r.stdin=g,r.stdout=f,r.stderr=h}})}function UDe(t,e,r){return i=>{let n=new ns.PassThrough,s=Zw(t,e,Xw(r,{stdin:n}));return{stdin:n,promise:s}}}function KDe(t,e,r){return i=>{let n=new ns.PassThrough,s=Zw(t,e,r);return{stdin:n,promise:s}}}function p5(t,e,r,i){if(e.length===0)return t;{let n;do n=String(Math.random());while(Object.prototype.hasOwnProperty.call(i.procedures,n));return i.procedures=N({},i.procedures),i.procedures[n]=t,Hd([...e,"__ysh_run_procedure",n],r,i)}}async function d5(t,e,r){let i=t,n=null,s=null;for(;i;){let o=i.then?N({},r):r,a;switch(i.type){case"command":{let l=await iA(i.args,e,r),c=await f5(i.envs,e,r);a=i.envs.length?Hd(l,e,Xw(o,{environment:c})):Hd(l,e,o)}break;case"subshell":{let l=await iA(i.args,e,r),c=UDe(i.subshell,e,o);a=p5(c,l,e,o)}break;case"group":{let l=await iA(i.args,e,r),c=KDe(i.group,e,o);a=p5(c,l,e,o)}break;case"envs":{let l=await f5(i.envs,e,r);o.environment=N(N({},o.environment),l),a=Hd(["true"],e,o)}break}if(typeof a=="undefined")throw new Error("Assertion failed: An action should have been generated");if(n===null)s=Vw(a,{stdin:new po(o.stdin),stdout:new po(o.stdout),stderr:new po(o.stderr)});else{if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":s=s.pipeTo(a,Fn.STDOUT);break;case"|&":s=s.pipeTo(a,Fn.STDOUT|Fn.STDERR);break}}i.then?(n=i.then.type,i=i.then.chain):i=null}if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await s.run()}async function HDe(t,e,r,{background:i=!1}={}){function n(s){let o=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=o[s%o.length];return l5.default.hex(a)}if(i){let s=r.nextBackgroundJobIndex++,o=n(s),a=`[${s}]`,l=o(a),{stdout:c,stderr:u}=A5(r,{prefix:l});return r.backgroundJobs.push(d5(t,e,Xw(r,{stdout:c,stderr:u})).catch(g=>u.write(`${g.message} +`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${l}, '${o(_u(t))}' has ended +`)})),0}return await d5(t,e,r)}async function jDe(t,e,r,{background:i=!1}={}){let n,s=a=>{n=a,r.variables["?"]=String(a)},o=async a=>{try{return await HDe(a.chain,e,r,{background:i&&typeof a.then=="undefined"})}catch(l){if(!(l instanceof Ts))throw l;return r.stderr.write(`${l.message} +`),1}};for(s(await o(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":n===0&&s(await o(t.then.line));break;case"||":n!==0&&s(await o(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return n}async function Zw(t,e,r){let i=r.backgroundJobs;r.backgroundJobs=[];let n=0;for(let{command:s,type:o}of t){if(n=await jDe(s,e,r,{background:o==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(n)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=i,n}function C5(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>Gd(e))||"alternativeValue"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>Gd(e));case"arithmetic":return iD(t.arithmetic);case"shell":return nD(t.shell);default:return!1}}function Gd(t){switch(t.type){case"redirection":return t.args.some(e=>Gd(e));case"argument":return t.segments.some(e=>C5(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function iD(t){switch(t.type){case"variable":return C5(t);case"number":return!1;default:return iD(t.left)||iD(t.right)}}function nD(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let i;switch(r.type){case"subshell":i=nD(r.subshell);break;case"command":i=r.envs.some(n=>n.args.some(s=>Gd(s)))||r.args.some(n=>Gd(n));break}if(i)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function eB(t,e=[],{baseFs:r=new ar,builtins:i={},cwd:n=j.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=Ww}={}){let g={};for(let[p,m]of Object.entries(s))typeof m!="undefined"&&(g[p]=m);let f=new Map(TDe);for(let[p,m]of Object.entries(i))f.set(p,m);o===null&&(o=new ns.PassThrough,o.end());let h=ZE(t,u);if(!nD(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let m=p.chain;for(;m.then;)m=m.then.chain;m.type==="command"&&(m.args=m.args.concat(e.map(y=>({type:"argument",segments:[{type:"text",text:y}]}))))}return await Zw(h,{args:e,baseFs:r,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var i6=ge(tB()),n6=ge(ag()),Jc=ge(require("stream"));var Z5=ge(X5()),nB=ge(hc());var $5=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],e6=80,KRe=new Set([$.FETCH_NOT_CACHED,$.UNUSED_CACHE_ENTRY]),HRe=5,sB=nB.default.GITHUB_ACTIONS?{start:t=>`::group::${t} +`,end:t=>`::endgroup:: +`}:nB.default.TRAVIS?{start:t=>`travis_fold:start:${t} +`,end:t=>`travis_fold:end:${t} +`}:nB.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r${t} +`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r`}:null,t6=new Date,jRe=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,GRe=t=>t,oB=GRe({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),YRe=jRe&&Object.keys(oB).find(t=>{let e=oB[t];return!(e.date&&(e.date[0]!==t6.getDate()||e.date[1]!==t6.getMonth()+1))})||"default";function r6(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let n=YA(t===null?0:t);return!r&&t===null?et(e,n,"grey"):n}function lD(t,{configuration:e,json:r}){let i=r6(t,{configuration:e,json:r});if(!i||t===null||t===$.UNNAMED)return i;let n=$[t],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return Fg(e,i,s)}var Je=class extends Ji{constructor({configuration:e,stdout:r,json:i=!1,includeFooter:n=!0,includeLogs:s=!i,includeInfos:o=s,includeWarnings:a=s,forgettableBufferSize:l=HRe,forgettableNames:c=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;this.forgettableLines=[];if(nd(this,{configuration:e}),this.configuration=e,this.forgettableBufferSize=l,this.forgettableNames=new Set([...c,...KRe]),this.includeFooter=n,this.includeInfos=o,this.includeWarnings=a,this.json=i,this.stdout=r,e.get("enableProgressBars")&&!i&&r.isTTY&&r.columns>22){let u=e.get("progressBarStyle")||YRe;if(!Object.prototype.hasOwnProperty.call(oB,u))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=oB[u];let g="\u27A4 YN0000: \u250C ".length,f=Math.max(0,Math.min(r.columns-g,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*f/80)}}static async start(e,r){let i=new this(e),n=process.emitWarning;process.emitWarning=(s,o)=>{if(typeof s!="string"){let l=s;s=l.message,o=o!=null?o:l.name}let a=typeof o!="undefined"?`${o}: ${s}`:s;i.reportWarning($.UNNAMED,a)};try{await r(i)}catch(s){i.reportExceptionOnce(s)}finally{await i.finalize(),process.emitWarning=n}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){this.cacheHitCount+=1}reportCacheMiss(e,r){this.lastCacheMiss=e,this.cacheMissCount+=1,typeof r!="undefined"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo($.FETCH_NOT_CACHED,r)}startSectionSync({reportHeader:e,reportFooter:r,skipIfEmpty:i},n){let s={committed:!1,action:()=>{e==null||e()}};i?this.uncommitted.add(s):(s.action(),s.committed=!0);let o=Date.now();try{return n()}catch(a){throw this.reportExceptionOnce(a),a}finally{let a=Date.now();this.uncommitted.delete(s),s.committed&&(r==null||r(a-o))}}async startSectionPromise({reportHeader:e,reportFooter:r,skipIfEmpty:i},n){let s={committed:!1,action:()=>{e==null||e()}};i?this.uncommitted.add(s):(s.action(),s.committed=!0);let o=Date.now();try{return await n()}catch(a){throw this.reportExceptionOnce(a),a}finally{let a=Date.now();this.uncommitted.delete(s),s.committed&&(r==null||r(a-o))}}startTimerImpl(e,r,i){let n=typeof r=="function"?{}:r;return{cb:typeof r=="function"?r:i,reportHeader:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,sB!==null&&!this.json&&this.includeInfos&&this.stdout.write(sB.start(e))},reportFooter:o=>{this.indent-=1,sB!==null&&!this.json&&this.includeInfos&&this.stdout.write(sB.end(e)),this.configuration.get("enableTimers")&&o>200?this.reportInfo(null,`\u2514 Completed in ${et(this.configuration,o,Ge.DURATION)}`):this.reportInfo(null,"\u2514 Completed")},skipIfEmpty:n.skipIfEmpty}}startTimerSync(e,r,i){let o=this.startTimerImpl(e,r,i),{cb:n}=o,s=Tr(o,["cb"]);return this.startSectionSync(s,n)}async startTimerPromise(e,r,i){let o=this.startTimerImpl(e,r,i),{cb:n}=o,s=Tr(o,["cb"]);return this.startSectionPromise(s,n)}async startCacheReport(e){let r=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await e()}catch(i){throw this.reportExceptionOnce(i),i}finally{r!==null&&this.reportCacheChanges(r)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(e,r){if(!this.includeInfos)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"",s=`${et(this.configuration,"\u27A4","blueBright")} ${n}${this.formatIndent()}${r}`;if(this.json)this.reportJson({type:"info",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r});else if(this.forgettableNames.has(e))if(this.forgettableLines.push(s),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(s,{truncate:!0});else this.writeLineWithForgettableReset(s)}reportWarning(e,r){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"warning",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${et(this.configuration,"\u27A4","yellowBright")} ${n}${this.formatIndent()}${r}`)}reportError(e,r){this.errorCount+=1,this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"error",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${et(this.configuration,"\u27A4","redBright")} ${n}${this.formatIndent()}${r}`,{truncate:!1})}reportProgress(e){if(this.progressStyle===null)return te(N({},Promise.resolve()),{stop:()=>{}});if(e.hasProgress&&e.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let r=!1,i=Promise.resolve().then(async()=>{let s={progress:e.hasProgress?0:void 0,title:e.hasTitle?"":void 0};this.progress.set(e,{definition:s,lastScaledSize:e.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:o,title:a}of e)r||s.progress===o&&s.title===a||(s.progress=o,s.title=a,this.refreshProgress());n()}),n=()=>{r||(r=!0,this.progress.delete(e),this.refreshProgress({delta:1}))};return te(N({},i),{stop:n})}reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(e)}`)}async finalize(){if(!this.includeFooter)return;let e="";this.errorCount>0?e="Failed with errors":this.warningCount>0?e="Done with warnings":e="Done";let r=et(this.configuration,Date.now()-this.startTime,Ge.DURATION),i=this.configuration.get("enableTimers")?`${e} in ${r}`:e;this.errorCount>0?this.reportError($.UNNAMED,i):this.warningCount>0?this.reportWarning($.UNNAMED,i):this.reportInfo($.UNNAMED,i)}writeLine(e,{truncate:r}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(e,{truncate:r})} +`),this.writeProgress()}writeLineWithForgettableReset(e,{truncate:r}={}){this.forgettableLines=[],this.writeLine(e,{truncate:r})}writeLines(e,{truncate:r}={}){this.clearProgress({delta:e.length});for(let i of e)this.stdout.write(`${this.truncate(i,{truncate:r})} +`);this.writeProgress()}reportCacheChanges({cacheHitCount:e,cacheMissCount:r}){let i=this.cacheHitCount-e,n=this.cacheMissCount-r;if(i===0&&n===0)return;let s="";this.cacheHitCount>1?s+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?s+=" - one package was already cached":s+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?s+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(s+=`, one had to be fetched (${Bt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?s+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(s+=` - one package had to be fetched (${Bt(this.configuration,this.lastCacheMiss)})`),this.reportInfo($.FETCH_NOT_CACHED,s)}commit(){let e=this.uncommitted;this.uncommitted=new Set;for(let r of e)r.committed=!0,r.action()}clearProgress({delta:e=0,clear:r=!1}){this.progressStyle!==null&&this.progress.size+e>0&&(this.stdout.write(`[${this.progress.size+e}A`),(e>0||r)&&this.stdout.write(""))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let e=Date.now();e-this.progressTime>e6&&(this.progressFrame=(this.progressFrame+1)%$5.length,this.progressTime=e);let r=$5[this.progressFrame];for(let i of this.progress.values()){let n="";if(typeof i.lastScaledSize!="undefined"){let l=this.progressStyle.chars[0].repeat(i.lastScaledSize),c=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-i.lastScaledSize);n=` ${l}${c}`}let s=this.formatName(null),o=s?`${s}: `:"",a=i.definition.title?` ${i.definition.title}`:"";this.stdout.write(`${et(this.configuration,"\u27A4","blueBright")} ${o}${r}${n}${a} +`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},e6)}refreshProgress({delta:e=0,force:r=!1}={}){let i=!1,n=!1;if(r||this.progress.size===0)i=!0;else for(let s of this.progress.values()){let o=typeof s.definition.progress!="undefined"?Math.trunc(this.progressMaxScaledSize*s.definition.progress):void 0,a=s.lastScaledSize;s.lastScaledSize=o;let l=s.lastTitle;if(s.lastTitle=s.definition.title,o!==a||(n=l!==s.definition.title)){i=!0;break}}i&&(this.clearProgress({delta:e,clear:n}),this.writeProgress())}truncate(e,{truncate:r}={}){return this.progressStyle===null&&(r=!1),typeof r=="undefined"&&(r=this.configuration.get("preferTruncatedLines")),r&&(e=(0,Z5.default)(e,0,this.stdout.columns-1)),e}formatName(e){return r6(e,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(e){return lD(e,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Ur="3.2.0";var hn;(function(n){n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm"})(hn||(hn={}));async function nA(t,e,r,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await K.writeFilePromise(k.format({dir:t,name:e,ext:".cmd"}),n)}await K.writeFilePromise(k.join(t,e),`#!/bin/sh +exec "${r}" ${i.map(n=>`'${n.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" +`,{mode:493})}async function s6(t){let e=await At.tryFind(t);if(e==null?void 0:e.packageManager){let i=gw(e.packageManager);if(i==null?void 0:i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":return{packageManager:Number(s)===1?hn.Yarn1:hn.Yarn2,reason:n};case"npm":return{packageManager:hn.Npm,reason:n};case"pnpm":return{packageManager:hn.Pnpm,reason:n}}}}let r;try{r=await K.readFilePromise(k.join(t,Pt.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:hn.Yarn2,reason:'"__metadata" key found in yarn.lock'}:{packageManager:hn.Yarn1,reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:K.existsSync(k.join(t,"package-lock.json"))?{packageManager:hn.Npm,reason:`found npm's "package-lock.json" lockfile`}:K.existsSync(k.join(t,"pnpm-lock.yaml"))?{packageManager:hn.Pnpm,reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Yd({project:t,locator:e,binFolder:r,lifecycleScript:i}){var l,c;let n={};for(let[u,g]of Object.entries(process.env))typeof g!="undefined"&&(n[u.toLowerCase()!=="path"?u:"PATH"]=g);let s=j.fromPortablePath(r);n.BERRY_BIN_FOLDER=j.fromPortablePath(s);let o=process.env.COREPACK_ROOT?j.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([nA(r,"node",process.execPath),...Ur!==null?[nA(r,"run",process.execPath,[o,"run"]),nA(r,"yarn",process.execPath,[o]),nA(r,"yarnpkg",process.execPath,[o]),nA(r,"node-gyp",process.execPath,[o,"run","--top-level","node-gyp"])]:[]]),t&&(n.INIT_CWD=j.fromPortablePath(t.configuration.startingCwd),n.PROJECT_CWD=j.fromPortablePath(t.cwd)),n.PATH=n.PATH?`${s}${j.delimiter}${n.PATH}`:`${s}`,n.npm_execpath=`${s}${j.sep}yarn`,n.npm_node_execpath=`${s}${j.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let u=t.tryWorkspaceByLocator(e),g=u?(l=u.manifest.version)!=null?l:"":(c=t.storedPackages.get(e.locatorHash).version)!=null?c:"";n.npm_package_name=Ot(e),n.npm_package_version=g}let a=Ur!==null?`yarn/${Ur}`:`yarn/${Rg("@yarnpkg/core").version}-core`;return n.npm_config_user_agent=`${a} npm/? node/${process.version} ${process.platform} ${process.arch}`,i&&(n.npm_lifecycle_event=i),t&&await t.configuration.triggerHook(u=>u.setupScriptEnvironment,t,n,async(u,g,f)=>await nA(r,qr(u),g,f)),n}var qRe=2,JRe=(0,n6.default)(qRe);async function WRe(t,e,{configuration:r,report:i,workspace:n=null,locator:s=null}){await JRe(async()=>{await K.mktempPromise(async o=>{let a=k.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=r.getSubprocessStreams(a,{prefix:j.fromPortablePath(t),report:i}),g=s&&Xo(s)?gd(s):s,f=g?Ps(g):"an external project";c.write(`Packing ${f} from sources +`);let h=await s6(t),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason} + +`),p=h.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn + +`),p=hn.Yarn2),await K.mktempPromise(async m=>{let y=await Yd({binFolder:m}),S=new Map([[hn.Yarn1,async()=>{let M=n!==null?["workspace",n]:[],Y=await $o("yarn",["set","version","classic","--only-if-needed"],{cwd:t,env:y,stdin:l,stdout:c,stderr:u,end:is.ErrorCode});if(Y.code!==0)return Y.code;await K.appendFilePromise(k.join(t,".npmignore"),`/.yarn +`),c.write(` +`);let U=await $o("yarn",["install"],{cwd:t,env:y,stdin:l,stdout:c,stderr:u,end:is.ErrorCode});if(U.code!==0)return U.code;c.write(` +`);let J=await $o("yarn",[...M,"pack","--filename",j.fromPortablePath(e)],{cwd:t,env:y,stdin:l,stdout:c,stderr:u});return J.code!==0?J.code:0}],[hn.Yarn2,async()=>{let M=n!==null?["workspace",n]:[];y.YARN_ENABLE_INLINE_BUILDS="1";let Y=k.join(t,Pt.lockfile);await K.existsPromise(Y)||await K.writeFilePromise(Y,"");let U=await $o("yarn",[...M,"pack","--install-if-needed","--filename",j.fromPortablePath(e)],{cwd:t,env:y,stdin:l,stdout:c,stderr:u});return U.code!==0?U.code:0}],[hn.Npm,async()=>{if(n!==null){let A=new Jc.PassThrough,ne=Dg(A);A.pipe(c,{end:!1});let le=await $o("npm",["--version"],{cwd:t,env:y,stdin:l,stdout:A,stderr:u,end:is.Never});if(A.end(),le.code!==0)return c.end(),u.end(),le.code;let Ae=(await ne).toString().trim();if(!Uc(Ae,">=7.x")){let T=Vo(null,"npm"),L=rr(T,Ae),Ee=rr(T,">=7.x");throw new Error(`Workspaces aren't supported by ${sr(r,L)}; please upgrade to ${sr(r,Ee)} (npm has been detected as the primary package manager for ${et(r,t,Ge.PATH)})`)}}let M=n!==null?["--workspace",n]:[];delete y.npm_config_user_agent;let Y=await $o("npm",["install"],{cwd:t,env:y,stdin:l,stdout:c,stderr:u,end:is.ErrorCode});if(Y.code!==0)return Y.code;let U=new Jc.PassThrough,J=Dg(U);U.pipe(c);let W=await $o("npm",["pack","--silent",...M],{cwd:t,env:y,stdin:l,stdout:U,stderr:u});if(W.code!==0)return W.code;let ee=(await J).toString().trim().replace(/^.*\n/s,""),Z=k.resolve(t,j.toPortablePath(ee));return await K.renamePromise(Z,e),0}]]).get(p);if(typeof S=="undefined")throw new Error("Assertion failed: Unsupported workflow");let x=await S();if(!(x===0||typeof x=="undefined"))throw K.detachTemp(o),new ct($.PACKAGE_PREPARATION_FAILED,`Packing the package failed (exit code ${x}, logs can be found here: ${et(r,a,Ge.PATH)})`)})})})}async function zRe(t,e,{project:r}){let i=r.tryWorkspaceByLocator(t);if(i!==null)return cD(i,e);let n=r.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${Bt(r.configuration,t)} not found in the project`);return await ms.openPromise(async s=>{let o=r.configuration,a=r.configuration.getLinkers(),l={project:r,report:new Je({stdout:new Jc.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${Bt(r.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new _t(u,{baseFs:s});return(await At.find(Me.dot,{baseFs:g})).scripts.has(e)},{libzip:await fn()})}async function aB(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await K.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await o6(t,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f=="undefined")return 1;let h=async()=>await eB(f,r,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(m=>m.wrapScriptExecution,h,n,t,e,{script:f,args:r,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function uD(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await K.mktempPromise(async l=>{let{env:c,cwd:u}=await o6(t,{project:n,binFolder:l,cwd:i});return await eB(e,r,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function _Re(t,{binFolder:e,cwd:r,lifecycleScript:i}){let n=await Yd({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:i});return await Promise.all(Array.from(await a6(t),([s,[,o]])=>nA(e,qr(s),process.execPath,[o]))),typeof r=="undefined"&&(r=k.dirname(await K.realpathPromise(k.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:n,cwd:r}}async function o6(t,{project:e,binFolder:r,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(t);if(s!==null)return _Re(s,{binFolder:r,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(t.locatorHash);if(!o)throw new Error(`Package for ${Bt(e.configuration,t)} not found in the project`);return await ms.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Je({stdout:new Jc.PassThrough,configuration:l})},g=c.find(y=>y.supportsPackage(o,u));if(!g)throw new Error(`The package ${Bt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await Yd({project:e,locator:t,binFolder:r,lifecycleScript:n});await Promise.all(Array.from(await AB(t,{project:e}),([y,[,Q]])=>nA(r,qr(y),process.execPath,[Q])));let h=await g.findPackageLocation(o,u),p=new _t(h,{baseFs:a}),m=await At.find(Me.dot,{baseFs:p});return typeof i=="undefined"&&(i=h),{manifest:m,binFolder:r,env:f,cwd:i}},{libzip:await fn()})}async function A6(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o}){return await aB(t.anchoredLocator,e,r,{cwd:i,project:t.project,stdin:n,stdout:s,stderr:o})}function cD(t,e){return t.manifest.scripts.has(e)}async function l6(t,e,{cwd:r,report:i}){let{configuration:n}=t.project,s=null;await K.mktempPromise(async o=>{let a=k.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${j.fromPortablePath(t.cwd)}") +`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:Bt(n,t.anchoredLocator),header:l});i.reportInfo($.LIFECYCLE_SCRIPT,`Calling the "${e}" lifecycle script`);let g=await A6(t,e,[],{cwd:r,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw K.detachTemp(o),new ct($.LIFECYCLE_SCRIPT,`${(0,i6.default)(e)} script failed (exit code ${et(n,g,Ge.NUMBER)}, logs can be found here: ${et(n,a,Ge.PATH)}); run ${et(n,`yarn ${e}`,Ge.CODE)} to investigate`)})}async function VRe(t,e,r){cD(t,e)&&await l6(t,e,r)}async function AB(t,{project:e}){let r=e.configuration,i=new Map,n=e.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${Bt(r,t)} not found in the project`);let s=new Jc.Writable,o=r.getLinkers(),a={project:e,report:new Je({configuration:r,stdout:s})},l=new Set([t.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${sr(r,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return qo.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return qo.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return qo.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===qo.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin)i.set(h,[g,j.fromPortablePath(k.resolve(f,p))])}return i}async function a6(t){return await AB(t.anchoredLocator,{project:t.project})}async function c6(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await AB(t,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${Bt(n.configuration,t)}`);return await K.mktempPromise(async g=>{let[,f]=u,h=await Yd({project:n,locator:t,binFolder:g});await Promise.all(Array.from(c,([m,[,y]])=>nA(h.BERRY_BIN_FOLDER,qr(m),process.execPath,[y])));let p;try{p=await $o(process.execPath,[...l,f,...r],{cwd:i,env:h,stdin:s,stdout:o,stderr:a})}finally{await K.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function XRe(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await c6(t.anchoredLocator,e,r,{project:t.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var wi={};ft(wi,{convertToZip:()=>aLe,extractArchiveTo:()=>lLe,makeArchiveFromDirectory:()=>oLe});var r7=ge(require("stream")),i7=ge(V9());var X9=ge(require("os")),Z9=ge(ag()),$9=ge(require("worker_threads")),Ql=Symbol("kTaskInfo"),bR=class{constructor(e){this.source=e;this.workers=[];this.limit=(0,Z9.default)(Math.max(1,(0,X9.cpus)().length));this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let r=this.workers.pop();r?r.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new $9.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",r=>{if(!e[Ql])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[Ql].resolve(r),e[Ql]=null,e.unref(),this.workers.push(e)}),e.on("error",r=>{var i;(i=e[Ql])==null||i.reject(r),e[Ql]=null}),e.on("exit",r=>{var i;r!==0&&((i=e[Ql])==null||i.reject(new Error(`Worker exited with code ${r}`))),e[Ql]=null}),e}run(e){return this.limit(()=>{var i;let r=(i=this.workers.pop())!=null?i:this.createWorker();return r.ref(),new Promise((n,s)=>{r[Ql]={resolve:n,reject:s},r.postMessage(e)})})}};var n7=ge(t7());async function oLe(t,{baseFs:e=new ar,prefixPath:r=Me.root,compressionLevel:i,inMemory:n=!1}={}){let s=await fn(),o;if(n)o=new Ai(null,{libzip:s,level:i});else{let l=await K.mktempPromise(),c=k.join(l,"archive.zip");o=new Ai(c,{create:!0,libzip:s,level:i})}let a=k.resolve(Me.root,r);return await o.copyPromise(a,t,{baseFs:e,stableTime:!0,stableSort:!0}),o}var s7;async function aLe(t,e){let r=await K.mktempPromise(),i=k.join(r,"archive.zip");return s7||(s7=new bR((0,n7.getContent)())),await s7.run({tmpFile:i,tgz:t,opts:e}),new Ai(i,{libzip:await fn(),level:e.compressionLevel})}async function*ALe(t){let e=new i7.default.Parse,r=new r7.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{r.write(i)}),e.on("error",i=>{r.destroy(i)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let i of r){let n=i;yield n,n.resume()}}async function lLe(t,e,{stripComponents:r=0,prefixPath:i=Me.dot}={}){var s,o;function n(a){if(a.path[0]==="/")return!0;let l=a.path.split(/\//g);return!!(l.some(c=>c==="..")||l.length<=r)}for await(let a of ALe(t)){if(n(a))continue;let l=k.normalize(j.toPortablePath(a.path)).replace(/\/$/,"").split(/\//g);if(l.length<=r)continue;let c=l.slice(r).join("/"),u=k.join(i,c),g=420;switch((a.type==="Directory"||(((s=a.mode)!=null?s:0)&73)!=0)&&(g|=73),a.type){case"Directory":e.mkdirpSync(k.dirname(u),{chmod:493,utimes:[Dr.SAFE_TIME,Dr.SAFE_TIME]}),e.mkdirSync(u,{mode:g}),e.utimesSync(u,Dr.SAFE_TIME,Dr.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(k.dirname(u),{chmod:493,utimes:[Dr.SAFE_TIME,Dr.SAFE_TIME]}),e.writeFileSync(u,await Dg(a),{mode:g}),e.utimesSync(u,Dr.SAFE_TIME,Dr.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(k.dirname(u),{chmod:493,utimes:[Dr.SAFE_TIME,Dr.SAFE_TIME]}),e.symlinkSync(a.linkpath,u),(o=e.lutimesSync)==null||o.call(e,u,Dr.SAFE_TIME,Dr.SAFE_TIME);break}}return e}var as={};ft(as,{emitList:()=>cLe,emitTree:()=>u7,treeNodeToJson:()=>c7,treeNodeToTreeify:()=>l7});var A7=ge(a7());function l7(t,{configuration:e}){let r={},i=(n,s)=>{let o=Array.isArray(n)?n.entries():Object.entries(n);for(let[a,{label:l,value:c,children:u}]of o){let g=[];typeof l!="undefined"&&g.push(Ly(e,l,Pc.BOLD)),typeof c!="undefined"&&g.push(et(e,c[0],c[1])),g.length===0&&g.push(Ly(e,`${a}`,Pc.BOLD));let f=g.join(": "),h=s[f]={};typeof u!="undefined"&&i(u,h)}};if(typeof t.children=="undefined")throw new Error("The root node must only contain children");return i(t.children,r),r}function c7(t){let e=r=>{var s;if(typeof r.children=="undefined"){if(typeof r.value=="undefined")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Dc(r.value[0],r.value[1])}let i=Array.isArray(r.children)?r.children.entries():Object.entries((s=r.children)!=null?s:{}),n=Array.isArray(r.children)?[]:{};for(let[o,a]of i)n[o]=e(a);return typeof r.value=="undefined"?n:{value:Dc(r.value[0],r.value[1]),children:n}};return e(t)}function cLe(t,{configuration:e,stdout:r,json:i}){let n=t.map(s=>({value:s}));u7({children:n},{configuration:e,stdout:r,json:i})}function u7(t,{configuration:e,stdout:r,json:i,separators:n=0}){var o;if(i){let a=Array.isArray(t.children)?t.children.values():Object.values((o=t.children)!=null?o:{});for(let l of a)r.write(`${JSON.stringify(c7(l))} +`);return}let s=(0,A7.asTree)(l7(t,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 +$1`).replace(/^│\n/,"")),n>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 +$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(s)}var g7=ge(require("crypto")),SR=ge(require("fs"));var uLe=8,Nt=class{constructor(e,{configuration:r,immutable:i=r.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,g7.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=i,this.check=n;let s=r.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=r.get("compressionLevel"),a=o!==ic?`c${o}`:"";this.cacheKey=[uLe,a].join("")}}static async find(e,{immutable:r,check:i}={}){let n=new Nt(e.get("cacheFolder"),{configuration:e,immutable:r,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${Hg(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let n=gLe(r).slice(0,10);return`${Hg(e)}-${n}.zip`}getLocatorPath(e,r,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?k.resolve(this.cwd,this.getVersionFilename(e)):r===null||kR(r)!==this.cacheKey?null:k.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?k.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await K.existsPromise(this.cwd))throw new ct($.IMMUTABLE_CACHE,"Cache path does not exist.")}else{await K.mkdirPromise(this.cwd,{recursive:!0});let e=k.resolve(this.cwd,".gitignore");await K.changeFilePromise(e,`/.gitignore +*.flock +*.tmp +`)}(this.mirrorCwd||!this.immutable)&&await K.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,a){var l=a,{onHit:i,onMiss:n,loader:s}=l,o=Tr(l,["onHit","onMiss","loader"]);var A;let c=this.getLocatorMirrorPath(e),u=new ar,g=()=>{let ne=new Ai(null,{libzip:Y}),le=k.join(Me.root,lx(e));return ne.mkdirSync(le,{recursive:!0}),ne.writeJsonSync(k.join(le,Pt.manifest),{name:Ot(e),mocked:!0}),ne},f=async(ne,le=null)=>{var T;if(le===null&&((T=o.unstablePackages)==null?void 0:T.has(e.locatorHash)))return null;let Ae=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Aw(ne)}`:r;if(le!==null){let L=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Aw(le)}`:r;if(Ae!==L)throw new ct($.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&Ae!==r){let L;switch(this.check?L="throw":kR(r)!==kR(Ae)?L="update":L=this.configuration.get("checksumBehavior"),L){case"ignore":return r;case"update":return Ae;default:case"throw":throw new ct($.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the expected checksum")}}return Ae},h=async ne=>{if(!s)throw new Error(`Cache check required but no loader configured for ${Bt(this.configuration,e)}`);let le=await s(),Ae=le.getRealPath();return le.saveAndClose(),await K.chmodPromise(Ae,420),await f(ne,Ae)},p=async()=>{if(c===null||!await K.existsPromise(c)){let ne=await s(),le=ne.getRealPath();return ne.saveAndClose(),{source:"loader",path:le}}return{source:"mirror",path:c}},m=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${Bt(this.configuration,e)}`);if(this.immutable)throw new ct($.IMMUTABLE_CACHE,`Cache entry required but missing for ${Bt(this.configuration,e)}`);let{path:ne,source:le}=await p(),Ae=await f(ne),T=this.getLocatorPath(e,Ae,o);if(!T)throw new Error("Assertion failed: Expected the cache path to be available");let L=[];le!=="mirror"&&c!==null&&L.push(async()=>{let we=`${c}${this.cacheId}`;await K.copyFilePromise(ne,we,SR.default.constants.COPYFILE_FICLONE),await K.chmodPromise(we,420),await K.renamePromise(we,c)}),(!o.mirrorWriteOnly||c===null)&&L.push(async()=>{let we=`${T}${this.cacheId}`;await K.copyFilePromise(ne,we,SR.default.constants.COPYFILE_FICLONE),await K.chmodPromise(we,420),await K.renamePromise(we,T)});let Ee=o.mirrorWriteOnly&&c!=null?c:T;return await Promise.all(L.map(we=>we())),[!1,Ee,Ae]},y=async()=>{let le=(async()=>{var qe;let Ae=this.getLocatorPath(e,r,o),T=Ae!==null?await u.existsPromise(Ae):!1,L=!!((qe=o.mockedPackages)==null?void 0:qe.has(e.locatorHash))&&(!this.check||!T),Ee=L||T,we=Ee?i:n;if(we&&we(),Ee){let re=null,se=Ae;return L||(re=this.check?await h(se):await f(se)),[L,se,re]}else return m()})();this.mutexes.set(e.locatorHash,le);try{return await le}finally{this.mutexes.delete(e.locatorHash)}};for(let ne;ne=this.mutexes.get(e.locatorHash);)await ne;let[Q,S,x]=await y();this.markedFiles.add(S);let M,Y=await fn(),U=Q?()=>g():()=>new Ai(S,{baseFs:u,libzip:Y,readOnly:!0}),J=new zh(()=>HS(()=>M=U(),ne=>`Failed to open the cache entry for ${Bt(this.configuration,e)}: ${ne}`),k),W=new Pa(S,{baseFs:J,pathUtils:k}),ee=()=>{M==null||M.discardAndClose()},Z=((A=o.unstablePackages)==null?void 0:A.has(e.locatorHash))?null:x;return[W,ee,Z]}};function kR(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function gLe(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var As;(function(r){r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE"})(As||(As={}));var uA=class extends Ji{constructor({configuration:e,stdout:r,suggestInstall:i=!0}){super();this.errorCount=0;nd(this,{configuration:e}),this.configuration=e,this.stdout=r,this.suggestInstall=i}static async start(e,r){let i=new this(e);try{await r(i)}catch(n){i.reportExceptionOnce(n)}finally{await i.finalize()}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){this.errorCount+=1,this.stdout.write(`${et(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(e)}: ${r} +`)}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return te(N({},r),{stop:i})}reportJson(e){}async finalize(){this.errorCount>0&&(this.stdout.write(` +`),this.stdout.write(`${et(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. +`),this.suggestInstall&&this.stdout.write(`${et(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. +`))}formatNameWithHyperlink(e){return lD(e,{configuration:this.configuration,json:!1})}};var h0=ge(require("crypto")),i$=ge(_7()),p0=ge(t$()),n$=ge(ag()),s$=ge(ti()),rF=ge(require("util")),iF=ge(require("v8")),nF=ge(require("zlib"));var z1e=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,i)=>`${r}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/(?:[^\\.]+)\.jfrog\.io\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>fw({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],$R=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let i=k.join(e.cwd,e.configuration.get("lockfileFilename"));if(!K.existsSync(i))return;let n=await K.readFilePromise(i,"utf8"),s=Qi(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=pd(a);if(!l){r.reportWarning($.YARN_IMPORT_FAILED,`Failed to parse the string "${a}" into a proper descriptor`);continue}fo(l.range)&&(l=rr(l,`npm:${l.range}`));let{version:c,resolved:u}=s[a];if(!u)continue;let g;for(let[h,p]of z1e){let m=u.match(h);if(m){g=p(c,...m);break}}if(!g){r.reportWarning($.YARN_IMPORT_FAILED,`${sr(e.configuration,l)}: Only some patterns can be imported from legacy lockfiles (not "${u}")`);continue}let f=l;try{let h=Kg(l.range),p=pd(h.selector,!0);p&&(f=p)}catch{}o.set(l.descriptorHash,cn(f,g))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return await this.resolver.getCandidates(nx(n),r,i)}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var eF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(uw(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){let n=i.project.originalPackages.get(uw(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var tF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.resolver.bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){throw new ct($.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,i){throw new ct($.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new ct($.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};var pi=class extends Ji{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return te(N({},r),{stop:i})}reportJson(e){}async finalize(){}};var r$=ge(rx());var BC=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.dependencies=new Map;this.project=r,this.cwd=e}async setup(){var s;this.manifest=(s=await At.tryFind(this.cwd))!=null?s:new At,this.relativeCwd=k.relative(this.project.cwd,this.cwd)||Me.dot;let e=this.manifest.name?this.manifest.name:Vo(null,`${this.computeCandidateName()}-${ln(this.relativeCwd).substring(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=cn(e,r),this.anchoredDescriptor=rr(this.locator,`${si.protocol}${this.relativeCwd}`),this.anchoredLocator=cn(this.locator,`${si.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:o})=>o),n=await(0,r$.default)(i,{cwd:j.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort();for(let o of n){let a=k.resolve(this.cwd,j.toPortablePath(o));K.existsSync(k.join(a,"package.json"))&&this.workspacesCwds.add(a)}}accepts(e){var o;let r=e.indexOf(":"),i=r!==-1?e.slice(0,r+1):null,n=r!==-1?e.slice(r+1):e;if(i===si.protocol&&k.normalize(n)===this.relativeCwd||i===si.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=fo(n);return s?i===si.protocol?s.test((o=this.manifest.version)!=null?o:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${k.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=At.hardDependencies}={}){let r=new Set,i=n=>{for(let s of e)for(let o of n.manifest[s].values()){let a=this.project.tryWorkspaceByDescriptor(o);a===null||r.has(a)||(r.add(a),i(a))}};return i(this),r}getRecursiveWorkspaceDependents({dependencies:e=At.hardDependencies}={}){let r=new Set,i=n=>{for(let s of this.project.workspaces)e.some(a=>[...s.manifest[a].values()].some(l=>{let c=this.project.tryWorkspaceByDescriptor(l);return c!==null&&hd(c.anchoredLocator,n.anchoredLocator)}))&&!r.has(s)&&(r.add(s),i(s))};return i(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let i=this.project.workspacesByCwd.get(r);i&&e.push(i,...i.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=k.join(this.cwd,At.fileName),i=`${JSON.stringify(e,null,this.manifest.indent)} +`;await K.changeFilePromise(r,i,{automaticNewlines:!0}),this.manifest.raw=e}};var o$=6,_1e=1,V1e=/ *, */g,a$=/\/$/,X1e=32,Z1e=(0,rF.promisify)(nF.default.gzip),$1e=(0,rF.promisify)(nF.default.gunzip),di;(function(r){r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build"})(di||(di={}));var sF={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},A$=t=>ln(`${_1e}`,t),ze=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var p,m,y;if(!e.projectCwd)throw new Pe(`No project found in ${r}`);let i=e.projectCwd,n=r,s=null;for(;s!==e.projectCwd;){if(s=n,K.existsSync(k.join(s,Pt.manifest))){i=s;break}n=k.dirname(s)}let o=new ze(e.projectCwd,{configuration:e});(p=ye.telemetry)==null||p.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(m=ye.telemetry)==null||m.reportWorkspaceCount(o.workspaces.length),(y=ye.telemetry)==null||y.reportDependencyCount(o.workspaces.reduce((Q,S)=>Q+S.manifest.dependencies.size+S.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};let c=et(e,o.cwd,Ge.PATH),u=et(e,k.relative(o.cwd,i),Ge.PATH),g=`- If ${c} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,f=`- If ${c} is intended to be a project, it might be that you forgot to list ${u} in its workspace configuration.`,h=`- Finally, if ${c} is fine and you intend ${u} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new Pe(`The nearest package directory (${et(e,i,Ge.PATH)}) doesn't seem to be part of the project declared in ${et(e,o.cwd,Ge.PATH)}. + +${[g,f,h].join(` +`)}`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=k.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(K.existsSync(e)){let n=await K.readFilePromise(e,"utf8");this.lockFileChecksum=A$(n);let s=Qi(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o0;){let r=e;e=[];for(let i of r){if(this.workspacesByCwd.has(i))continue;let n=await this.addWorkspace(i),s=this.storedPackages.get(n.anchoredLocator.locatorHash);s&&(n.dependencies=s.dependencies);for(let o of n.workspacesCwds)e.push(o)}}}async addWorkspace(e){let r=new BC(e,{project:this});await r.setup();let i=this.workspacesByIdent.get(r.locator.identHash);if(typeof i!="undefined")throw new Error(`Duplicate workspace name ${gi(this.configuration,r.locator)}: ${j.fromPortablePath(e)} conflicts with ${j.fromPortablePath(i.cwd)}`);return this.workspaces.push(r),this.workspacesByCwd.set(e,r),this.workspacesByIdent.set(r.locator.identHash,r),r}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){k.isAbsolute(e)||(e=k.resolve(this.cwd,e)),e=k.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let i of this.workspaces)k.relative(i.cwd,e).startsWith("../")||r&&r.cwd.length>=i.cwd.length||(r=i);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r=="undefined"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${gi(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){let r=this.tryWorkspaceByIdent(e);return r===null||(il(e)&&(e=ud(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${sr(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Xo(e)&&(e=gd(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${Bt(this.configuration,e)})`);return r}refreshWorkspaceDependencies(){for(let e of this.workspaces){let r=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!r)throw new Error(`Assertion failed: Expected workspace ${Cd(this.configuration,e)} (${et(this.configuration,k.join(e.cwd,Pt.manifest),Ge.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(r.dependencies)}}forgetResolution(e){let r=n=>{this.storedResolutions.delete(n),this.storedDescriptors.delete(n)},i=n=>{this.originalPackages.delete(n),this.storedPackages.delete(n),this.accessibleLocators.delete(n)};if("descriptorHash"in e){let n=this.storedResolutions.get(e.descriptorHash);r(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof n!="undefined"&&!s.has(n)&&i(n)}if("locatorHash"in e){i(e.locatorHash);for(let[n,s]of this.storedResolutions)s===e.locatorHash&&r(n)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let r of this.originalPackages.values()){let i;try{i=e.shouldPersistResolution(r,{project:this,resolver:e})}catch{i=!1}i||this.forgetResolution(r)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,i]of e.dependencies)il(i)&&e.dependencies.set(r,ud(i))}getDependencyMeta(e,r){let i={},s=this.topLevelWorkspace.manifest.dependenciesMeta.get(Ot(e));if(!s)return i;let o=s.get(null);if(o&&Object.assign(i,o),r===null||!s$.default.valid(r))return i;for(let[a,l]of s)a!==null&&a===r&&Object.assign(i,l);return i}async findLocatorForLocation(e,{strict:r=!1}={}){let i=new pi,n=this.configuration.getLinkers(),s={project:this,report:i};for(let o of n){let a=await o.findPackageLocator(e,s);if(a){if(r&&(await o.findPackageLocation(a,s)).replace(a$,"")!==e.replace(a$,""))continue;return a}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),i=new $R(r);await i.setup(this,{report:e.report});let n=e.lockfileOnly?[new tF(r)]:[i,r],s=new wd([new eF(r),...n]),o=this.configuration.makeFetcher(),a=e.lockfileOnly?{project:this,report:e.report,resolver:s}:{project:this,report:e.report,resolver:s,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:o,cacheOptions:{mirrorWriteOnly:!0}}},l=new Map,c=new Map,u=new Map,g=new Map,f=new Map,h=new Map,p=this.topLevelWorkspace.anchoredLocator,m=new Set,y=[],Q=Ex(),S=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Ji.progressViaTitle(),async ee=>{let Z=async T=>{let L=await Pg(async()=>await s.resolve(T,a),qe=>`${Bt(this.configuration,T)}: ${qe}`);if(!hd(T,L))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Bt(this.configuration,T)} to ${Bt(this.configuration,L)})`);g.set(L.locatorHash,L);let Ee=this.configuration.normalizePackage(L);for(let[qe,re]of Ee.dependencies){let se=await this.configuration.reduceHook(he=>he.reduceDependency,re,this,Ee,re,{resolver:s,resolveOptions:a});if(!fd(re,se))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let Qe=s.bindDescriptor(se,T,a);Ee.dependencies.set(qe,Qe)}let we=co([...Ee.dependencies.values()].map(qe=>Ae(qe)));return y.push(we),we.catch(()=>{}),c.set(Ee.locatorHash,Ee),Ee},A=async T=>{let L=f.get(T.locatorHash);if(typeof L!="undefined")return L;let Ee=Promise.resolve().then(()=>Z(T));return f.set(T.locatorHash,Ee),Ee},ne=async(T,L)=>{let Ee=await Ae(L);return l.set(T.descriptorHash,T),u.set(T.descriptorHash,Ee.locatorHash),Ee},le=async T=>{ee.setTitle(sr(this.configuration,T));let L=this.resolutionAliases.get(T.descriptorHash);if(typeof L!="undefined")return ne(T,this.storedDescriptors.get(L));let Ee=s.getResolutionDependencies(T,a),we=new Map(await co(Ee.map(async se=>{let Qe=s.bindDescriptor(se,p,a),he=await Ae(Qe);return m.add(he.locatorHash),[se.descriptorHash,he]}))),re=(await Pg(async()=>await s.getCandidates(T,we,a),se=>`${sr(this.configuration,T)}: ${se}`))[0];if(typeof re=="undefined")throw new Error(`${sr(this.configuration,T)}: No candidates found`);return l.set(T.descriptorHash,T),u.set(T.descriptorHash,re.locatorHash),A(re)},Ae=T=>{let L=h.get(T.descriptorHash);if(typeof L!="undefined")return L;l.set(T.descriptorHash,T);let Ee=Promise.resolve().then(()=>le(T));return h.set(T.descriptorHash,Ee),Ee};for(let T of this.workspaces){let L=T.anchoredDescriptor;y.push(Ae(L))}for(;y.length>0;){let T=[...y];y.length=0,await co(T)}});let x=new Set(this.resolutionAliases.values()),M=new Set(c.keys()),Y=new Set,U=new Map;eUe({project:this,report:e.report,accessibleLocators:Y,volatileDescriptors:x,optionalBuilds:M,peerRequirements:U,allDescriptors:l,allResolutions:u,allPackages:c});for(let ee of m)M.delete(ee);for(let ee of x)l.delete(ee),u.delete(ee);let J=new Set,W=new Set;for(let ee of c.values())ee.conditions!=null&&(!M.has(ee.locatorHash)||(pw(ee,S)||(pw(ee,Q)&&e.report.reportWarningOnce($.GHOST_ARCHITECTURE,`${Bt(this.configuration,ee)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${et(this.configuration,"supportedArchitectures",Di.SETTING)} setting`),W.add(ee.locatorHash)),J.add(ee.locatorHash)));this.storedResolutions=u,this.storedDescriptors=l,this.storedPackages=c,this.accessibleLocators=Y,this.conditionalLocators=J,this.disabledLocators=W,this.originalPackages=g,this.optionalBuilds=M,this.peerRequirements=U,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:r,fetcher:i,mode:n}){let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,cacheOptions:s},l=Array.from(new Set(xn(this.storedResolutions.values(),[f=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");return Ps(h)}])));n===di.UpdateLockfile&&(l=l.filter(f=>!this.storedChecksums.has(f)));let c=!1,u=Ji.progressViaCounter(l.length);r.reportProgress(u);let g=(0,n$.default)(X1e);if(await r.startCacheReport(async()=>{await co(l.map(f=>g(async()=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");if(Xo(h))return;let p;try{p=await o.fetch(h,a)}catch(m){m.message=`${Bt(this.configuration,h)}: ${m.message}`,r.reportExceptionOnce(m),c=m;return}p.checksum!=null?this.storedChecksums.set(h.locatorHash,p.checksum):this.storedChecksums.delete(h.locatorHash),p.releaseFs&&p.releaseFs()}).finally(()=>{u.tick()})))}),c)throw c}async linkEverything({cache:e,report:r,fetcher:i,mode:n}){var A,ne,le;let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,skipIntegrityCheck:!0,cacheOptions:s},l=this.configuration.getLinkers(),c={project:this,report:r},u=new Map(l.map(Ae=>{let T=Ae.makeInstaller(c),L=T.getCustomDataKey(),Ee=this.installersCustomData.get(L);return typeof Ee!="undefined"&&T.attachCustomData(Ee),[Ae,T]})),g=new Map,f=new Map,h=new Map,p=new Map(await co([...this.accessibleLocators].map(async Ae=>{let T=this.storedPackages.get(Ae);if(!T)throw new Error("Assertion failed: The locator should have been registered");return[Ae,await o.fetch(T,a)]}))),m=[];for(let Ae of this.accessibleLocators){let T=this.storedPackages.get(Ae);if(typeof T=="undefined")throw new Error("Assertion failed: The locator should have been registered");let L=p.get(T.locatorHash);if(typeof L=="undefined")throw new Error("Assertion failed: The fetch result should have been registered");let Ee=[],we=re=>{Ee.push(re)},qe=this.tryWorkspaceByLocator(T);if(qe!==null){let re=[],{scripts:se}=qe.manifest;for(let he of["preinstall","install","postinstall"])se.has(he)&&re.push([As.SCRIPT,he]);try{for(let[he,Fe]of u)if(he.supportsPackage(T,c)&&(await Fe.installPackage(T,L,{holdFetchResult:we})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{Ee.length===0?(A=L.releaseFs)==null||A.call(L):m.push(co(Ee).catch(()=>{}).then(()=>{var he;(he=L.releaseFs)==null||he.call(L)}))}let Qe=k.join(L.packageFs.getRealPath(),L.prefixPath);f.set(T.locatorHash,Qe),!Xo(T)&&re.length>0&&h.set(T.locatorHash,{directives:re,buildLocations:[Qe]})}else{let re=l.find(he=>he.supportsPackage(T,c));if(!re)throw new ct($.LINKER_NOT_FOUND,`${Bt(this.configuration,T)} isn't supported by any available linker`);let se=u.get(re);if(!se)throw new Error("Assertion failed: The installer should have been registered");let Qe;try{Qe=await se.installPackage(T,L,{holdFetchResult:we})}finally{Ee.length===0?(ne=L.releaseFs)==null||ne.call(L):m.push(co(Ee).then(()=>{}).then(()=>{var he;(he=L.releaseFs)==null||he.call(L)}))}g.set(T.locatorHash,re),f.set(T.locatorHash,Qe.packageLocation),Qe.buildDirective&&Qe.buildDirective.length>0&&Qe.packageLocation&&h.set(T.locatorHash,{directives:Qe.buildDirective,buildLocations:[Qe.packageLocation]})}}let y=new Map;for(let Ae of this.accessibleLocators){let T=this.storedPackages.get(Ae);if(!T)throw new Error("Assertion failed: The locator should have been registered");let L=this.tryWorkspaceByLocator(T)!==null,Ee=async(we,qe)=>{let re=f.get(T.locatorHash);if(typeof re=="undefined")throw new Error(`Assertion failed: The package (${Bt(this.configuration,T)}) should have been registered`);let se=[];for(let Qe of T.dependencies.values()){let he=this.storedResolutions.get(Qe.descriptorHash);if(typeof he=="undefined")throw new Error(`Assertion failed: The resolution (${sr(this.configuration,Qe)}, from ${Bt(this.configuration,T)})should have been registered`);let Fe=this.storedPackages.get(he);if(typeof Fe=="undefined")throw new Error(`Assertion failed: The package (${he}, resolved from ${sr(this.configuration,Qe)}) should have been registered`);let Ue=this.tryWorkspaceByLocator(Fe)===null?g.get(he):null;if(typeof Ue=="undefined")throw new Error(`Assertion failed: The package (${he}, resolved from ${sr(this.configuration,Qe)}) should have been registered`);Ue===we||Ue===null?f.get(Fe.locatorHash)!==null&&se.push([Qe,Fe]):!L&&re!==null&&kg(y,he).push(re)}re!==null&&await qe.attachInternalDependencies(T,se)};if(L)for(let[we,qe]of u)we.supportsPackage(T,c)&&await Ee(we,qe);else{let we=g.get(T.locatorHash);if(!we)throw new Error("Assertion failed: The linker should have been found");let qe=u.get(we);if(!qe)throw new Error("Assertion failed: The installer should have been registered");await Ee(we,qe)}}for(let[Ae,T]of y){let L=this.storedPackages.get(Ae);if(!L)throw new Error("Assertion failed: The package should have been registered");let Ee=g.get(L.locatorHash);if(!Ee)throw new Error("Assertion failed: The linker should have been found");let we=u.get(Ee);if(!we)throw new Error("Assertion failed: The installer should have been registered");await we.attachExternalDependents(L,T)}let Q=new Map;for(let Ae of u.values()){let T=await Ae.finalizeInstall();for(let L of(le=T==null?void 0:T.records)!=null?le:[])h.set(L.locatorHash,{directives:L.buildDirective,buildLocations:L.buildLocations});typeof(T==null?void 0:T.customData)!="undefined"&&Q.set(Ae.getCustomDataKey(),T.customData)}if(this.installersCustomData=Q,await co(m),n===di.SkipBuild)return;let S=new Set(this.storedPackages.keys()),x=new Set(h.keys());for(let Ae of x)S.delete(Ae);let M=(0,h0.createHash)("sha512");M.update(process.versions.node),await this.configuration.triggerHook(Ae=>Ae.globalHashGeneration,this,Ae=>{M.update("\0"),M.update(Ae)});let Y=M.digest("hex"),U=new Map,J=Ae=>{let T=U.get(Ae.locatorHash);if(typeof T!="undefined")return T;let L=this.storedPackages.get(Ae.locatorHash);if(typeof L=="undefined")throw new Error("Assertion failed: The package should have been registered");let Ee=(0,h0.createHash)("sha512");Ee.update(Ae.locatorHash),U.set(Ae.locatorHash,"");for(let we of L.dependencies.values()){let qe=this.storedResolutions.get(we.descriptorHash);if(typeof qe=="undefined")throw new Error(`Assertion failed: The resolution (${sr(this.configuration,we)}) should have been registered`);let re=this.storedPackages.get(qe);if(typeof re=="undefined")throw new Error("Assertion failed: The package should have been registered");Ee.update(J(re))}return T=Ee.digest("hex"),U.set(Ae.locatorHash,T),T},W=(Ae,T)=>{let L=(0,h0.createHash)("sha512");L.update(Y),L.update(J(Ae));for(let Ee of T)L.update(Ee);return L.digest("hex")},ee=new Map,Z=!1;for(;x.size>0;){let Ae=x.size,T=[];for(let L of x){let Ee=this.storedPackages.get(L);if(!Ee)throw new Error("Assertion failed: The package should have been registered");let we=!0;for(let se of Ee.dependencies.values()){let Qe=this.storedResolutions.get(se.descriptorHash);if(!Qe)throw new Error(`Assertion failed: The resolution (${sr(this.configuration,se)}) should have been registered`);if(x.has(Qe)){we=!1;break}}if(!we)continue;x.delete(L);let qe=h.get(Ee.locatorHash);if(!qe)throw new Error("Assertion failed: The build directive should have been registered");let re=W(Ee,qe.buildLocations);if(this.storedBuildState.get(Ee.locatorHash)===re){ee.set(Ee.locatorHash,re);continue}Z||(await this.persistInstallStateFile(),Z=!0),this.storedBuildState.has(Ee.locatorHash)?r.reportInfo($.MUST_REBUILD,`${Bt(this.configuration,Ee)} must be rebuilt because its dependency tree changed`):r.reportInfo($.MUST_BUILD,`${Bt(this.configuration,Ee)} must be built because it never has been before or the last one failed`);for(let se of qe.buildLocations){if(!k.isAbsolute(se))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${se})`);T.push((async()=>{for(let[Qe,he]of qe.directives){let Fe=`# This file contains the result of Yarn building a package (${Ps(Ee)}) +`;switch(Qe){case As.SCRIPT:Fe+=`# Script name: ${he} +`;break;case As.SHELLCODE:Fe+=`# Script code: ${he} +`;break}let Ue=null;if(!await K.mktempPromise(async ve=>{let pe=k.join(ve,"build.log"),{stdout:X,stderr:be}=this.configuration.getSubprocessStreams(pe,{header:Fe,prefix:Bt(this.configuration,Ee),report:r}),ce;try{switch(Qe){case As.SCRIPT:ce=await aB(Ee,he,[],{cwd:se,project:this,stdin:Ue,stdout:X,stderr:be});break;case As.SHELLCODE:ce=await uD(Ee,he,[],{cwd:se,project:this,stdin:Ue,stdout:X,stderr:be});break}}catch(gt){be.write(gt.stack),ce=1}if(X.end(),be.end(),ce===0)return ee.set(Ee.locatorHash,re),!0;K.detachTemp(ve);let fe=`${Bt(this.configuration,Ee)} couldn't be built successfully (exit code ${et(this.configuration,ce,Ge.NUMBER)}, logs can be found here: ${et(this.configuration,pe,Ge.PATH)})`;return this.optionalBuilds.has(Ee.locatorHash)?(r.reportInfo($.BUILD_FAILED,fe),ee.set(Ee.locatorHash,re),!0):(r.reportError($.BUILD_FAILED,fe),!1)}))return}})())}}if(await co(T),Ae===x.size){let L=Array.from(x).map(Ee=>{let we=this.storedPackages.get(Ee);if(!we)throw new Error("Assertion failed: The package should have been registered");return Bt(this.configuration,we)}).join(", ");r.reportError($.CYCLIC_DEPENDENCIES,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${L})`);break}}this.storedBuildState=ee}async install(e){var a,l;let r=this.configuration.get("nodeLinker");(a=ye.telemetry)==null||a.reportInstall(r),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status=qi.Inactive;let i=k.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await K.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new ct($.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=et(this.configuration,g,Ge.PACKAGE_EXTENSION);switch(g.status){case qi.Inactive:e.report.reportWarning($.UNUSED_PACKAGE_EXTENSION,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case qi.Redundant:e.report.reportWarning($.REDUNDANT_PACKAGE_EXTENSION,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=$l(n,this.generateLockfile());if(c!==n){let u=(0,i$.structuredPatch)(i,i,n,c);e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError($.FROZEN_LOCKFILE_EXCEPTION,et(this.configuration,f,Ge.ADDED)):f.startsWith("-")?e.report.reportError($.FROZEN_LOCKFILE_EXCEPTION,et(this.configuration,f,Ge.REMOVED)):e.report.reportInfo(null,et(this.configuration,f,"grey"))}throw e.report.reportSeparator(),new ct($.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status===qi.Active&&((l=ye.telemetry)==null||l.reportPackageExtension(Dc(g,Ge.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject=="undefined"||e.persistProject)&&e.mode!==di.UpdateLockfile&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>lw(c,{cwd:this.cwd})));(typeof e.persistProject=="undefined"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode===di.UpdateLockfile){e.report.reportWarning($.UPDATE_LOCKFILE_ONLY_SKIP_LINK,`Skipped due to ${et(this.configuration,"mode=update-lockfile",Ge.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>lw(u,{cwd:this.cwd})));for(let u=0;uc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let r={};r.__metadata={version:o$,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>Pn(f)).sort().join(", "),c=new At;c.version=o.linkType===Qt.HARD?o.version:"0.0.0-use.local",c.languageName=o.languageName,c.dependencies=new Map(o.dependencies),c.peerDependencies=new Map(o.peerDependencies),c.dependenciesMeta=new Map(o.dependenciesMeta),c.peerDependenciesMeta=new Map(o.peerDependenciesMeta),c.bin=new Map(o.bin);let u,g=this.storedChecksums.get(o.locatorHash);if(typeof g!="undefined"){let f=g.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let h=g.slice(0,f),p=g.slice(f+1);typeof r.__metadata.cacheKey=="undefined"&&(r.__metadata.cacheKey=h),h===r.__metadata.cacheKey?u=p:u=g}r[l]=te(N({},c.exportTo({},{compatibilityMode:!1})),{linkType:o.linkType.toLowerCase(),resolution:Ps(o),checksum:u,conditions:o.conditions||void 0})}return`${[`# This file is generated by running "yarn install" inside your project. +`,`# Manual changes might be lost - proceed with caution! +`].join("")} +`+Na(r)}async persistLockfile(){let e=k.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await K.readFilePromise(e,"utf8")}catch(s){}let i=this.generateLockfile(),n=$l(r,i);n!==r&&(await K.writeFilePromise(e,n),this.lockFileChecksum=A$(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(sF))e.push(...o);let r=(0,p0.default)(this,e),i=iF.default.serialize(r),n=ln(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await K.mkdirPromise(k.dirname(s),{recursive:!0}),await K.writeFilePromise(s,await Z1e(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath"),s;try{let o=await $1e(await K.readFilePromise(n));s=iF.default.deserialize(o),this.installStateChecksum=ln(o)}catch{r&&await this.applyLightResolution();return}e&&typeof s.installersCustomData!="undefined"&&(this.installersCustomData=s.installersCustomData),i&&Object.assign(this,(0,p0.default)(s,sF.restoreBuildState)),r&&(s.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,p0.default)(s,sF.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new pi}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:r}){let i=new Set([".gitignore"]);if(!Cx(e.cwd,this.cwd)||!await K.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await K.readdirPromise(e.cwd)){if(i.has(a))continue;let l=k.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?r.reportError($.IMMUTABLE_CACHE,`${et(this.configuration,k.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:r.reportInfo($.UNUSED_CACHE_ENTRY,`${et(this.configuration,k.basename(l),"magenta")} appears to be unused - removing`),await K.removePromise(l)))}n&&s!==0&&r.reportInfo($.UNUSED_CACHE_ENTRY,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function eUe({project:t,allDescriptors:e,allResolutions:r,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,peerRequirements:o=new Map,volatileDescriptors:a=new Set,report:l,tolerateMissingPackages:c=!1}){var ee;let u=new Map,g=[],f=new Map,h=new Map,p=new Map,m=new Map,y=new Map,Q=new Map(t.workspaces.map(Z=>{let A=Z.anchoredLocator.locatorHash,ne=i.get(A);if(typeof ne=="undefined"){if(c)return[A,null];throw new Error("Assertion failed: The workspace should have an associated package")}return[A,cd(ne)]})),S=()=>{let Z=K.mktempSync(),A=k.join(Z,"stacktrace.log"),ne=String(g.length+1).length,le=g.map((Ae,T)=>`${`${T+1}.`.padStart(ne," ")} ${Ps(Ae)} +`).join("");throw K.writeFileSync(A,le),K.detachTemp(Z),new ct($.STACK_OVERFLOW_RESOLUTION,`Encountered a stack overflow when resolving peer dependencies; cf ${j.fromPortablePath(A)}`)},x=Z=>{let A=r.get(Z.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: The resolution should have been registered");let ne=i.get(A);if(!ne)throw new Error("Assertion failed: The package could not be found");return ne},M=(Z,A,ne,{top:le,optional:Ae})=>{g.length>1e3&&S(),g.push(A);let T=Y(Z,A,ne,{top:le,optional:Ae});return g.pop(),T},Y=(Z,A,ne,{top:le,optional:Ae})=>{if(n.has(A.locatorHash))return;n.add(A.locatorHash),Ae||s.delete(A.locatorHash);let T=i.get(A.locatorHash);if(!T){if(c)return;throw new Error(`Assertion failed: The package (${Bt(t.configuration,A)}) should have been registered`)}let L=[],Ee=[],we=[],qe=[],re=[];for(let Qe of Array.from(T.dependencies.values())){if(T.peerDependencies.has(Qe.identHash)&&T.locatorHash!==le)continue;if(il(Qe))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");a.delete(Qe.descriptorHash);let he=Ae;if(!he){let be=T.dependenciesMeta.get(Ot(Qe));if(typeof be!="undefined"){let ce=be.get(null);typeof ce!="undefined"&&ce.optional&&(he=!0)}}let Fe=r.get(Qe.descriptorHash);if(!Fe){if(c)continue;throw new Error(`Assertion failed: The resolution (${sr(t.configuration,Qe)}) should have been registered`)}let Ue=Q.get(Fe)||i.get(Fe);if(!Ue)throw new Error(`Assertion failed: The package (${Fe}, resolved from ${sr(t.configuration,Qe)}) should have been registered`);if(Ue.peerDependencies.size===0){M(Qe,Ue,new Map,{top:le,optional:he});continue}let xe,ve,pe=new Set,X;Ee.push(()=>{xe=sx(Qe,A.locatorHash),ve=ox(Ue,A.locatorHash),T.dependencies.delete(Qe.identHash),T.dependencies.set(xe.identHash,xe),r.set(xe.descriptorHash,ve.locatorHash),e.set(xe.descriptorHash,xe),i.set(ve.locatorHash,ve),L.push([Ue,xe,ve])}),we.push(()=>{var be;X=new Map;for(let ce of ve.peerDependencies.values()){let fe=T.dependencies.get(ce.identHash);if(!fe&&fd(A,ce)&&(Z.identHash===A.identHash?fe=Z:(fe=rr(A,Z.range),e.set(fe.descriptorHash,fe),r.set(fe.descriptorHash,A.locatorHash),a.delete(fe.descriptorHash))),(!fe||fe.range==="missing:")&&ve.dependencies.has(ce.identHash)){ve.peerDependencies.delete(ce.identHash);continue}fe||(fe=rr(ce,"missing:")),ve.dependencies.set(fe.identHash,fe),il(fe)&&kc(p,fe.descriptorHash).add(ve.locatorHash),f.set(fe.identHash,fe),fe.range==="missing:"&&pe.add(fe.identHash),X.set(ce.identHash,(be=ne.get(ce.identHash))!=null?be:ve.locatorHash)}ve.dependencies=new Map(xn(ve.dependencies,([ce,fe])=>Ot(fe)))}),qe.push(()=>{if(!i.has(ve.locatorHash))return;let be=u.get(Ue.locatorHash);typeof be=="number"&&be>=2&&S();let ce=u.get(Ue.locatorHash),fe=typeof ce!="undefined"?ce+1:1;u.set(Ue.locatorHash,fe),M(xe,ve,X,{top:le,optional:he}),u.set(Ue.locatorHash,fe-1)}),re.push(()=>{let be=T.dependencies.get(Qe.identHash);if(typeof be=="undefined")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let ce=r.get(be.descriptorHash);if(typeof ce=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");if(kc(y,ce).add(A.locatorHash),!!i.has(ve.locatorHash)){for(let fe of ve.peerDependencies.values()){let gt=X.get(fe.identHash);if(typeof gt=="undefined")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");kg(xg(m,gt),Ot(fe)).push(ve.locatorHash)}for(let fe of pe)ve.dependencies.delete(fe)}})}for(let Qe of[...Ee,...we])Qe();let se;do{se=!0;for(let[Qe,he,Fe]of L){let Ue=xg(h,Qe.locatorHash),xe=ln(...[...Fe.dependencies.values()].map(be=>{let ce=be.range!=="missing:"?r.get(be.descriptorHash):"missing:";if(typeof ce=="undefined")throw new Error(`Assertion failed: Expected the resolution for ${sr(t.configuration,be)} to have been registered`);return ce===le?`${ce} (top)`:ce}),he.identHash),ve=Ue.get(xe);if(typeof ve=="undefined"){Ue.set(xe,he);continue}if(ve===he)continue;i.delete(Fe.locatorHash),e.delete(he.descriptorHash),r.delete(he.descriptorHash),n.delete(Fe.locatorHash);let pe=p.get(he.descriptorHash)||[],X=[T.locatorHash,...pe];p.delete(he.descriptorHash);for(let be of X){let ce=i.get(be);typeof ce!="undefined"&&(ce.dependencies.get(he.identHash).descriptorHash!==ve.descriptorHash&&(se=!1),ce.dependencies.set(he.identHash,ve))}}}while(!se);for(let Qe of[...qe,...re])Qe()};for(let Z of t.workspaces){let A=Z.anchoredLocator;a.delete(Z.anchoredDescriptor.descriptorHash),M(Z.anchoredDescriptor,A,new Map,{top:A.locatorHash,optional:!1})}var U;(function(ne){ne[ne.NotProvided=0]="NotProvided",ne[ne.NotCompatible=1]="NotCompatible"})(U||(U={}));let J=[];for(let[Z,A]of y){let ne=i.get(Z);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the root to be registered");let le=m.get(Z);if(typeof le!="undefined")for(let Ae of A){let T=i.get(Ae);if(typeof T!="undefined")for(let[L,Ee]of le){let we=An(L);if(T.peerDependencies.has(we.identHash))continue;let qe=`p${ln(Ae,L,Z).slice(0,5)}`;o.set(qe,{subject:Ae,requested:we,rootRequester:Z,allRequesters:Ee});let re=ne.dependencies.get(we.identHash);if(typeof re!="undefined"){let se=x(re),Qe=(ee=se.version)!=null?ee:"0.0.0",he=new Set;for(let Ue of Ee){let xe=i.get(Ue);if(typeof xe=="undefined")throw new Error("Assertion failed: Expected the link to be registered");let ve=xe.peerDependencies.get(we.identHash);if(typeof ve=="undefined")throw new Error("Assertion failed: Expected the ident to be registered");he.add(ve.range)}[...he].every(Ue=>{if(Ue.startsWith(si.protocol)){if(!t.tryWorkspaceByLocator(se))return!1;Ue=Ue.slice(si.protocol.length),(Ue==="^"||Ue==="~")&&(Ue="*")}return Uc(Qe,Ue)})||J.push({type:1,subject:T,requested:we,requester:ne,version:Qe,hash:qe,requirementCount:Ee.length})}else{let se=ne.peerDependenciesMeta.get(L);(se==null?void 0:se.optional)||J.push({type:0,subject:T,requested:we,requester:ne,hash:qe})}}}}let W=[Z=>Ax(Z.subject),Z=>Ot(Z.requested),Z=>`${Z.type}`];l==null||l.startSectionSync({reportFooter:()=>{l.reportWarning($.UNNAMED,`Some peer dependencies are incorrectly met; run ${et(t.configuration,"yarn explain peer-requirements ",Ge.CODE)} for details, where ${et(t.configuration,"",Ge.CODE)} is the six-letter p-prefixed code`)},skipIfEmpty:!0},()=>{for(let Z of xn(J,W))switch(Z.type){case 0:l.reportWarning($.MISSING_PEER_DEPENDENCY,`${Bt(t.configuration,Z.subject)} doesn't provide ${gi(t.configuration,Z.requested)} (${et(t.configuration,Z.hash,Ge.CODE)}), requested by ${gi(t.configuration,Z.requester)}`);break;case 1:{let A=Z.requirementCount>1?"and some of its descendants request":"requests";l.reportWarning($.INCOMPATIBLE_PEER_DEPENDENCY,`${Bt(t.configuration,Z.subject)} provides ${gi(t.configuration,Z.requested)} (${et(t.configuration,Z.hash,Ge.CODE)}) with version ${dd(t.configuration,Z.version)}, which doesn't satisfy what ${gi(t.configuration,Z.requester)} ${A}`)}break}})}var aa;(function(l){l.VERSION="version",l.COMMAND_NAME="commandName",l.PLUGIN_NAME="pluginName",l.INSTALL_COUNT="installCount",l.PROJECT_COUNT="projectCount",l.WORKSPACE_COUNT="workspaceCount",l.DEPENDENCY_COUNT="dependencyCount",l.EXTENSION="packageExtension"})(aa||(aa={}));var bC=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let i=this.getRegistryPath();this.isNew=!K.existsSync(i),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue(aa.VERSION,e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue(aa.COMMAND_NAME,e||"")}reportPluginName(e){this.reportValue(aa.PLUGIN_NAME,e)}reportProject(e){this.reportEnumerator(aa.PROJECT_COUNT,e)}reportInstall(e){this.reportHit(aa.INSTALL_COUNT,e)}reportPackageExtension(e){this.reportValue(aa.EXTENSION,e)}reportWorkspaceCount(e){this.reportValue(aa.WORKSPACE_COUNT,String(e))}reportDependencyCount(e){this.reportValue(aa.DEPENDENCY_COUNT,String(e))}reportValue(e,r){kc(this.values,e).add(r)}reportEnumerator(e,r){kc(this.enumerators,e).add(ln(r))}reportHit(e,r="*"){let i=xg(this.hits,e),n=qa(i,r,()=>0);i.set(r,n+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return k.join(e,"telemetry.json")}sendReport(e){var u,g,f;let r=this.getRegistryPath(),i;try{i=K.readJsonSync(r)}catch{i={}}let n=Date.now(),s=this.configuration.get("telemetryInterval")*24*60*60*1e3,a=((u=i.lastUpdate)!=null?u:n+s+Math.floor(s*Math.random()))+s;if(a>n&&i.lastUpdate!=null)return;try{K.mkdirSync(k.dirname(r),{recursive:!0}),K.writeJsonSync(r,{lastUpdate:n})}catch{return}if(a>n||!i.blocks)return;let l=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,c=h=>VP(l,h,{configuration:this.configuration}).catch(()=>{});for(let[h,p]of Object.entries((g=i.blocks)!=null?g:{})){if(Object.keys(p).length===0)continue;let m=p;m.userId=h,m.reportType="primary";for(let S of Object.keys((f=m.enumerators)!=null?f:{}))m.enumerators[S]=m.enumerators[S].length;c(m);let y=new Map,Q=20;for(let[S,x]of Object.entries(m.values))x.length>0&&y.set(S,x.slice(0,Q));for(;y.size>0;){let S={};S.userId=h,S.reportType="secondary",S.metrics={};for(let[x,M]of y)S.metrics[x]=M.shift(),M.length===0&&y.delete(x);c(S)}}}applyChanges(){var o,a,l,c,u,g,f,h,p;let e=this.getRegistryPath(),r;try{r=K.readJsonSync(e)}catch{r={}}let i=(o=this.configuration.get("telemetryUserId"))!=null?o:"*",n=r.blocks=(a=r.blocks)!=null?a:{},s=n[i]=(l=n[i])!=null?l:{};for(let m of this.hits.keys()){let y=s.hits=(c=s.hits)!=null?c:{},Q=y[m]=(u=y[m])!=null?u:{};for(let[S,x]of this.hits.get(m))Q[S]=((g=Q[S])!=null?g:0)+x}for(let m of["values","enumerators"])for(let y of this[m].keys()){let Q=s[m]=(f=s[m])!=null?f:{};Q[y]=[...new Set([...(h=Q[y])!=null?h:[],...(p=this[m].get(y))!=null?p:[]])]}K.mkdirSync(k.dirname(e),{recursive:!0}),K.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};var oF=ge(require("child_process")),l$=ge(hc());var aF=ge(require("fs"));var Nf=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);function tUe(t){let e=j.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,oF.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:te(N({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})}):(0,oF.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:te(N({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})})}async function d0({binaryVersion:t,pluginConfiguration:e}){async function r(){let n=new Is({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await i(n)}catch(s){process.stdout.write(n.error(s)),process.exitCode=1}}async function i(n){var m,y,Q,S,x;let s=process.versions.node,o=">=12 <14 || 14.2 - 14.9 || >14.10.0";if(!Se.parseOptionalBoolean(process.env.YARN_IGNORE_NODE)&&!Wt.satisfiesWithPrereleases(s,o))throw new Pe(`This tool requires a Node version compatible with ${o} (got ${s}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let l=await ye.find(j.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),c=l.get("yarnPath"),u=l.get("ignorePath"),g=l.get("ignoreCwd"),f=j.toPortablePath(j.resolve(process.argv[1])),h=M=>K.readFilePromise(M).catch(()=>Buffer.of());if(!u&&!g&&await(async()=>c===f||Buffer.compare(...await Promise.all([h(c),h(f)]))===0)()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await i(n);return}else if(c!==null&&!u)if(!K.existsSync(c))process.stdout.write(n.error(new Error(`The "yarn-path" option has been set (in ${l.sources.get("yarnPath")}), but the specified location doesn't exist (${c}).`))),process.exitCode=1;else try{tUe(c)}catch(M){process.exitCode=M.code||1}else{u&&delete process.env.YARN_IGNORE_PATH,l.get("enableTelemetry")&&!l$.isCI&&process.stdout.isTTY&&(ye.telemetry=new bC(l,"puba9cdc10ec5790a2cf4969dd413a47270")),(m=ye.telemetry)==null||m.reportVersion(t);for(let[J,W]of l.plugins.entries()){Nf.has((Q=(y=J.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:y[1])!=null?Q:"")&&((S=ye.telemetry)==null||S.reportPluginName(J));for(let ee of W.commands||[])n.register(ee)}let Y=n.process(process.argv.slice(2));Y.help||(x=ye.telemetry)==null||x.reportCommandName(Y.path.join(" "));let U=Y.cwd;if(typeof U!="undefined"&&!g){let J=(0,aF.realpathSync)(process.cwd()),W=(0,aF.realpathSync)(U);if(J!==W){process.chdir(U),await r();return}}await n.runExit(Y,{cwd:j.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}}return r().catch(n=>{process.stdout.write(n.stack||n.message),process.exitCode=1}).finally(()=>K.rmtempPromise())}function c$(t){t.Command.Path=(...e)=>r=>{r.paths=r.paths||[],r.paths.push(e)};for(let e of["Array","Boolean","String","Proxy","Rest","Counter"])t.Command[e]=(...r)=>(i,n)=>{let s=t.Option[e](...r);Object.defineProperty(i,`__${n}`,{configurable:!1,enumerable:!0,get(){return s},set(o){this[n]=o}})};return t}var _C={};ft(_C,{BaseCommand:()=>Le,WorkspaceRequiredError:()=>ht,getDynamicLibs:()=>bie,getPluginConfiguration:()=>J0,main:()=>d0,openWorkspace:()=>Jf,pluginCommands:()=>Nf});var Le=class extends Re{constructor(){super(...arguments);this.cwd=z.String("--cwd",{hidden:!0})}};var ht=class extends Pe{constructor(e,r){let i=k.relative(e,r),n=k.join(e,At.fileName);super(`This command can only be run from within a workspace of your project (${i} isn't a workspace of ${n}).`)}};var aqe=ge(ti());Es();var Aqe=ge(sN()),bie=()=>new Map([["@yarnpkg/cli",_C],["@yarnpkg/core",QC],["@yarnpkg/fslib",Zh],["@yarnpkg/libzip",Md],["@yarnpkg/parsers",op],["@yarnpkg/shell",Kd],["clipanion",Cp],["semver",aqe],["typanion",sg],["yup",Aqe]]);async function Jf(t,e){let{project:r,workspace:i}=await ze.find(t,e);if(!i)throw new ht(r.cwd,e);return i}var S9e=ge(ti());Es();var k9e=ge(sN());var AL={};ft(AL,{dedupeUtils:()=>HN,default:()=>Ize,suggestUtils:()=>kN});var vAe=ge(hc());var Fse=ge($C());Es();var kN={};ft(kN,{Modifier:()=>ga,Strategy:()=>_r,Target:()=>Hr,WorkspaceModifier:()=>Vf,applyModifier:()=>xse,extractDescriptorFromPath:()=>DN,extractRangeModifier:()=>kse,fetchDescriptorFrom:()=>PN,findProjectDescriptors:()=>Rse,getModifier:()=>em,getSuggestedDescriptors:()=>tm,makeWorkspaceDescriptor:()=>Dse,toWorkspaceModifier:()=>Pse});var xN=ge(ti()),vJe="workspace:",Hr;(function(i){i.REGULAR="dependencies",i.DEVELOPMENT="devDependencies",i.PEER="peerDependencies"})(Hr||(Hr={}));var ga;(function(i){i.CARET="^",i.TILDE="~",i.EXACT=""})(ga||(ga={}));var Vf;(function(i){i.CARET="^",i.TILDE="~",i.EXACT="*"})(Vf||(Vf={}));var _r;(function(s){s.KEEP="keep",s.REUSE="reuse",s.PROJECT="project",s.LATEST="latest",s.CACHE="cache"})(_r||(_r={}));function em(t,e){return t.exact?ga.EXACT:t.caret?ga.CARET:t.tilde?ga.TILDE:e.configuration.get("defaultSemverRangePrefix")}var SJe=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function kse(t,{project:e}){let r=t.match(SJe);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function xse(t,e){let{protocol:r,source:i,params:n,selector:s}=P.parseRange(t.range);return xN.default.valid(s)&&(s=`${e}${t.range}`),P.makeDescriptor(t,P.makeRange({protocol:r,source:i,params:n,selector:s}))}function Pse(t){switch(t){case ga.CARET:return Vf.CARET;case ga.TILDE:return Vf.TILDE;case ga.EXACT:return Vf.EXACT;default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function Dse(t,e){return P.makeDescriptor(t.anchoredDescriptor,`${vJe}${Pse(e)}`)}async function Rse(t,{project:e,target:r}){let i=new Map,n=s=>{let o=i.get(s.descriptorHash);return o||i.set(s.descriptorHash,o={descriptor:s,locators:[]}),o};for(let s of e.workspaces)if(r===Hr.PEER){let o=s.manifest.peerDependencies.get(t.identHash);o!==void 0&&n(o).locators.push(s.locator)}else{let o=s.manifest.dependencies.get(t.identHash),a=s.manifest.devDependencies.get(t.identHash);r===Hr.DEVELOPMENT?a!==void 0?n(a).locators.push(s.locator):o!==void 0&&n(o).locators.push(s.locator):o!==void 0?n(o).locators.push(s.locator):a!==void 0&&n(a).locators.push(s.locator)}return i}async function DN(t,{cwd:e,workspace:r}){return await kJe(async i=>{k.isAbsolute(t)||(t=k.relative(r.cwd,k.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:n}=r,s=await PN(P.makeIdent(null,"archive"),t,{project:r.project,cache:i,workspace:r});if(!s)throw new Error("Assertion failed: The descriptor should have been found");let o=new pi,a=n.configuration.makeResolver(),l=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:i,fetcher:l,report:o,resolver:a},u=a.bindDescriptor(s,r.anchoredLocator,c),g=P.convertDescriptorToLocator(u),f=await l.fetch(g,c),h=await At.find(f.prefixPath,{baseFs:f.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return P.makeDescriptor(h.name,t)})}async function tm(t,{project:e,workspace:r,cache:i,target:n,modifier:s,strategies:o,maxResults:a=Infinity}){if(!(a>=0))throw new Error(`Invalid maxResults (${a})`);if(t.range!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${P.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let l=typeof r!="undefined"&&r!==null&&r.manifest[n].get(t.identHash)||null,c=[],u=[],g=async f=>{try{await f()}catch(h){u.push(h)}};for(let f of o){if(c.length>=a)break;switch(f){case _r.KEEP:await g(async()=>{l&&c.push({descriptor:l,name:`Keep ${P.prettyDescriptor(e.configuration,l)}`,reason:"(no changes)"})});break;case _r.REUSE:await g(async()=>{for(let{descriptor:h,locators:p}of(await Rse(t,{project:e,target:n})).values()){if(p.length===1&&p[0].locatorHash===r.anchoredLocator.locatorHash&&o.includes(_r.KEEP))continue;let m=`(originally used by ${P.prettyLocator(e.configuration,p[0])}`;m+=p.length>1?` and ${p.length-1} other${p.length>2?"s":""})`:")",c.push({descriptor:h,name:`Reuse ${P.prettyDescriptor(e.configuration,h)}`,reason:m})}});break;case _r.CACHE:await g(async()=>{for(let h of e.storedDescriptors.values())h.identHash===t.identHash&&c.push({descriptor:h,name:`Reuse ${P.prettyDescriptor(e.configuration,h)}`,reason:"(already used somewhere in the lockfile)"})});break;case _r.PROJECT:await g(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let h=e.tryWorkspaceByIdent(t);if(h===null)return;let p=Dse(h,s);c.push({descriptor:p,name:`Attach ${P.prettyDescriptor(e.configuration,p)}`,reason:`(local workspace at ${ae.pretty(e.configuration,h.relativeCwd,ae.Type.PATH)})`})});break;case _r.LATEST:await g(async()=>{if(t.range!=="unknown")c.push({descriptor:t,name:`Use ${P.prettyRange(e.configuration,t.range)}`,reason:"(explicit range requested)"});else if(n===Hr.PEER)c.push({descriptor:P.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))c.push({descriptor:null,name:"Resolve from latest",reason:ae.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let h=await PN(t,"latest",{project:e,cache:i,workspace:r,preserveModifier:!1});h&&(h=xse(h,s),c.push({descriptor:h,name:`Use ${P.prettyDescriptor(e.configuration,h)}`,reason:"(resolved from latest)"}))}});break}}return{suggestions:c.slice(0,a),rejections:u.slice(0,a)}}async function PN(t,e,{project:r,cache:i,workspace:n,preserveModifier:s=!0}){let o=P.makeDescriptor(t,e),a=new pi,l=r.configuration.makeFetcher(),c=r.configuration.makeResolver(),u={project:r,fetcher:l,cache:i,checksums:r.storedChecksums,report:a,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},g=te(N({},u),{resolver:c,fetchOptions:u}),f=c.bindDescriptor(o,n.anchoredLocator,g),h=await c.getCandidates(f,new Map,g);if(h.length===0)return null;let p=h[0],{protocol:m,source:y,params:Q,selector:S}=P.parseRange(P.convertToManifestRange(p.reference));if(m===r.configuration.get("defaultProtocol")&&(m=null),xN.default.valid(S)&&s!==!1){let x=typeof s=="string"?s:o.range;S=kse(x,{project:r})+S}return P.makeDescriptor(p,P.makeRange({protocol:m,source:y,params:Q,selector:S}))}async function kJe(t){return await K.mktempPromise(async e=>{let r=ye.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Nt(e,{configuration:r,check:!1,immutable:!1}))})}var rm=class extends Le{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.exact=z.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=z.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=z.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=z.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=z.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=z.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=z.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=z.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=z.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:nn(di)});this.silent=z.Boolean("--silent",{hidden:!0});this.packages=z.Rest()}async execute(){var m;let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(!i)throw new ht(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(m=this.interactive)!=null?m:e.get("preferInteractive"),o=em(this,r),a=[...s?[_r.REUSE]:[],_r.PROJECT,...this.cached?[_r.CACHE]:[],_r.LATEST],l=s?Infinity:1,c=await Promise.all(this.packages.map(async y=>{let Q=y.match(/^\.{0,2}\//)?await DN(y,{cwd:this.context.cwd,workspace:i}):P.tryParseDescriptor(y),S=y.match(/^(https?:|git@github)/);if(S)throw new Pe(`It seems you are trying to add a package using a ${ae.pretty(e,`${S[0]}...`,Di.RANGE)} url; we now require package names to be explicitly specified. +Try running the command again with the package name prefixed: ${ae.pretty(e,"yarn add",Di.CODE)} ${ae.pretty(e,P.makeDescriptor(P.makeIdent(null,"my-package"),`${S[0]}...`),Di.DESCRIPTOR)}`);if(!Q)throw new Pe(`The ${ae.pretty(e,y,Di.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let x=xJe(i,Q,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional}),M=await tm(Q,{project:r,workspace:i,cache:n,target:x,modifier:o,strategies:a,maxResults:l});return[Q,M,x]})),u=await uA.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async y=>{for(let[Q,{suggestions:S,rejections:x}]of c)if(S.filter(Y=>Y.descriptor!==null).length===0){let[Y]=x;if(typeof Y=="undefined")throw new Error("Assertion failed: Expected an error to have been set");r.configuration.get("enableNetwork")?y.reportError($.CANT_SUGGEST_RESOLUTIONS,`${P.prettyDescriptor(e,Q)} can't be resolved to a satisfying range`):y.reportError($.CANT_SUGGEST_RESOLUTIONS,`${P.prettyDescriptor(e,Q)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),y.reportSeparator(),y.reportExceptionOnce(Y)}});if(u.hasErrors())return u.exitCode();let g=!1,f=[],h=[];for(let[,{suggestions:y},Q]of c){let S,x=y.filter(J=>J.descriptor!==null),M=x[0].descriptor,Y=x.every(J=>P.areDescriptorsEqual(J.descriptor,M));x.length===1||Y?S=M:(g=!0,{answer:S}=await(0,Fse.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:y.map(({descriptor:J,name:W,reason:ee})=>J?{name:W,hint:ee,descriptor:J}:{name:W,hint:ee,disabled:!0}),onCancel:()=>process.exit(130),result(J){return this.find(J,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let U=i.manifest[Q].get(S.identHash);(typeof U=="undefined"||U.descriptorHash!==S.descriptorHash)&&(i.manifest[Q].set(S.identHash,S),this.optional&&(Q==="dependencies"?i.manifest.ensureDependencyMeta(te(N({},S),{range:"unknown"})).optional=!0:Q==="peerDependencies"&&(i.manifest.ensurePeerDependencyMeta(te(N({},S),{range:"unknown"})).optional=!0)),typeof U=="undefined"?f.push([i,Q,S,a]):h.push([i,Q,U,S]))}return await e.triggerMultipleHooks(y=>y.afterWorkspaceDependencyAddition,f),await e.triggerMultipleHooks(y=>y.afterWorkspaceDependencyReplacement,h),g&&this.context.stdout.write(` +`),(await Je.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async y=>{await r.install({cache:n,report:y,mode:this.mode})})).exitCode()}};rm.paths=[["add"]],rm.usage=Re.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});var Nse=rm;function xJe(t,e,{dev:r,peer:i,preferDev:n,optional:s}){let o=t.manifest[Hr.REGULAR].has(e.identHash),a=t.manifest[Hr.DEVELOPMENT].has(e.identHash),l=t.manifest[Hr.PEER].has(e.identHash);if((r||i)&&o)throw new Pe(`Package "${P.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!i&&l)throw new Pe(`Package "${P.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(s&&a)throw new Pe(`Package "${P.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(s&&!i&&l)throw new Pe(`Package "${P.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||n)&&s)throw new Pe(`Package "${P.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);return i?Hr.PEER:r||n?Hr.DEVELOPMENT:o?Hr.REGULAR:a?Hr.DEVELOPMENT:Hr.REGULAR}var im=class extends Le{constructor(){super(...arguments);this.verbose=z.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=z.String({required:!1})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await ze.find(e,this.context.cwd);if(await r.restoreInstallState(),this.name){let o=(await Zt.getPackageAccessibleBinaries(i,{project:r})).get(this.name);if(!o)throw new Pe(`Couldn't find a binary named "${this.name}" for package "${P.prettyLocator(e,i)}"`);let[,a]=o;return this.context.stdout.write(`${a} +`),0}return(await Je.start({configuration:e,json:this.json,stdout:this.context.stdout},async s=>{let o=await Zt.getPackageAccessibleBinaries(i,{project:r}),l=Array.from(o.keys()).reduce((c,u)=>Math.max(c,u.length),0);for(let[c,[u,g]]of o)s.reportJson({name:c,source:P.stringifyIdent(u),path:g});if(this.verbose)for(let[c,[u]]of o)s.reportInfo(null,`${c.padEnd(l," ")} ${P.prettyLocator(e,u)}`);else for(let c of o.keys())s.reportInfo(null,c)})).exitCode()}};im.paths=[["bin"]],im.usage=Re.Usage({description:"get the path to a binary script",details:` + When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. + + When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. + `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var Lse=im;var nm=class extends Le{constructor(){super(...arguments);this.mirror=z.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=z.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),r=await Nt.find(e);return(await Je.start({configuration:e,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&r.mirrorCwd!==null,s=!this.mirror;n&&(await K.removePromise(r.mirrorCwd),await e.triggerHook(o=>o.cleanGlobalArtifacts,e)),s&&await K.removePromise(r.cwd)})).exitCode()}};nm.paths=[["cache","clean"],["cache","clear"]],nm.usage=Re.Usage({description:"remove the shared cache files",details:` + This command will remove all the files from the cache. + `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var Tse=nm;var Ose=ge(k0()),RN=ge(require("util")),sm=class extends Le{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=z.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),r=this.name.replace(/[.[].*$/,""),i=this.name.replace(/^[^.[]*/,"");if(typeof e.settings.get(r)=="undefined")throw new Pe(`Couldn't find a configuration settings named "${r}"`);let s=e.getSpecial(r,{hideSecrets:!this.unsafe,getNativePaths:!0}),o=Se.convertMapsToIndexableObjects(s),a=i?(0,Ose.default)(o,i):o,l=await Je.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async c=>{c.reportJson(a)});if(!this.json){if(typeof a=="string")return this.context.stdout.write(`${a} +`),l.exitCode();RN.inspect.styles.name="cyan",this.context.stdout.write(`${(0,RN.inspect)(a,{depth:Infinity,colors:e.get("enableColors"),compact:!1})} +`)}return l.exitCode()}};sm.paths=[["config","get"]],sm.usage=Re.Usage({description:"read a configuration settings",details:` + This command will print a configuration setting. + + Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. + `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var Mse=sm;var Voe=ge(MN()),Xoe=ge(k0()),Zoe=ge(_oe()),UN=ge(require("util")),am=class extends Le{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=z.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=z.String();this.value=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new Pe("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new Pe(`Couldn't find a configuration settings named "${i}"`);if(i==="enableStrictSettings")throw new Pe("This setting only affects the file it's in, and thus cannot be set from the CLI");let o=this.json?JSON.parse(this.value):this.value;await(this.home?h=>ye.updateHomeConfiguration(h):h=>ye.updateConfiguration(r(),h))(h=>{if(n){let p=(0,Voe.default)(h);return(0,Zoe.default)(p,this.name,o),p}else return te(N({},h),{[i]:o})});let c=(await ye.find(this.context.cwd,this.context.plugins)).getSpecial(i,{hideSecrets:!0,getNativePaths:!0}),u=Se.convertMapsToIndexableObjects(c),g=n?(0,Xoe.default)(u,n):u;return(await Je.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async h=>{UN.inspect.styles.name="cyan",h.reportInfo($.UNNAMED,`Successfully set ${this.name} to ${(0,UN.inspect)(g,{depth:Infinity,colors:e.get("enableColors"),compact:!1})}`)})).exitCode()}};am.paths=[["config","set"]],am.usage=Re.Usage({description:"change a configuration settings",details:` + This command will set a configuration setting. + + When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). + + When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. + `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var $oe=am;var Aae=ge(MN()),lae=ge(SC()),cae=ge(aae()),Am=class extends Le{constructor(){super(...arguments);this.home=z.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new Pe("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new Pe(`Couldn't find a configuration settings named "${i}"`);let o=this.home?l=>ye.updateHomeConfiguration(l):l=>ye.updateConfiguration(r(),l);return(await Je.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async l=>{let c=!1;await o(u=>{if(!(0,lae.default)(u,this.name))return l.reportWarning($.UNNAMED,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),c=!0,u;let g=n?(0,Aae.default)(u):N({},u);return(0,cae.default)(g,this.name),g}),c||l.reportInfo($.UNNAMED,`Successfully unset ${this.name}`)})).exitCode()}};Am.paths=[["config","unset"]],Am.usage=Re.Usage({description:"unset a configuration setting",details:` + This command will unset a configuration setting. + `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var uae=Am;var KN=ge(require("util")),lm=class extends Le{constructor(){super(...arguments);this.verbose=z.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=z.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Je.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{if(e.invalid.size>0&&!this.json){for(let[n,s]of e.invalid)i.reportError($.INVALID_CONFIGURATION_KEY,`Invalid configuration key "${n}" in ${s}`);i.reportSeparator()}if(this.json){let n=Se.sortMap(e.settings.keys(),s=>s);for(let s of n){let o=e.settings.get(s),a=e.getSpecial(s,{hideSecrets:!0,getNativePaths:!0}),l=e.sources.get(s);this.verbose?i.reportJson({key:s,effective:a,source:l}):i.reportJson(N({key:s,effective:a,source:l},o))}}else{let n=Se.sortMap(e.settings.keys(),a=>a),s=n.reduce((a,l)=>Math.max(a,l.length),0),o={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let a=n.map(c=>{let u=e.settings.get(c);if(!u)throw new Error(`Assertion failed: This settings ("${c}") should have been registered`);let g=this.why?e.sources.get(c)||"":u.description;return[c,g]}),l=a.reduce((c,[,u])=>Math.max(c,u.length),0);for(let[c,u]of a)i.reportInfo(null,`${c.padEnd(s," ")} ${u.padEnd(l," ")} ${(0,KN.inspect)(e.getSpecial(c,{hideSecrets:!0,getNativePaths:!0}),o)}`)}else for(let a of n)i.reportInfo(null,`${a.padEnd(s," ")} ${(0,KN.inspect)(e.getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),o)}`)}})).exitCode()}};lm.paths=[["config"]],lm.usage=Re.Usage({description:"display the current configuration",details:` + This command prints the current active configuration settings. + `,examples:[["Print the active configuration settings","$0 config"]]});var gae=lm;Es();var HN={};ft(HN,{Strategy:()=>Iu,acceptedStrategies:()=>R8e,dedupe:()=>jN});var fae=ge(ts()),Iu;(function(e){e.HIGHEST="highest"})(Iu||(Iu={}));var R8e=new Set(Object.values(Iu)),F8e={highest:async(t,e,{resolver:r,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of t.storedResolutions){let c=t.storedDescriptors.get(a);if(typeof c=="undefined")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);Se.getSetWithDefault(o,c.identHash).add(l)}return Array.from(t.storedDescriptors.values(),async a=>{if(e.length&&!fae.default.isMatch(P.stringifyIdent(a),e))return null;let l=t.storedResolutions.get(a.descriptorHash);if(typeof l=="undefined")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=t.originalPackages.get(l);if(typeof c=="undefined"||!r.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u=="undefined")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(y=>{let Q=t.originalPackages.get(y);if(typeof Q=="undefined")throw new Error(`Assertion failed: The package (${y}) should have been registered`);return Q.reference}),f=await r.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h=="undefined")return null;let p=h.locatorHash,m=t.originalPackages.get(p);if(typeof m=="undefined")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:m}})}};async function jN(t,{strategy:e,patterns:r,cache:i,report:n}){let{configuration:s}=t,o=new pi,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:t.storedChecksums,fetcher:l,project:t,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:t,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let f=await F8e[e](t,r,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=Ji.progressViaCounter(f.length);n.reportProgress(h);let p=0;await Promise.all(f.map(Q=>Q.then(S=>{if(S===null)return;p++;let{descriptor:x,currentPackage:M,updatedPackage:Y}=S;n.reportInfo($.UNNAMED,`${P.prettyDescriptor(s,x)} can be deduped from ${P.prettyLocator(s,M)} to ${P.prettyLocator(s,Y)}`),n.reportJson({descriptor:P.stringifyDescriptor(x),currentResolution:P.stringifyLocator(M),updatedResolution:P.stringifyLocator(Y)}),t.storedResolutions.set(x.descriptorHash,Y.locatorHash)}).finally(()=>h.tick())));let m;switch(p){case 0:m="No packages";break;case 1:m="One package";break;default:m=`${p} packages`}let y=ae.pretty(s,e,ae.Type.CODE);return n.reportInfo($.UNNAMED,`${m} can be deduped using the ${y} strategy`),p})}var cm=class extends Le{constructor(){super(...arguments);this.strategy=z.String("-s,--strategy",Iu.HIGHEST,{description:"The strategy to use when deduping dependencies",validator:nn(Iu)});this.check=z.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:nn(di)});this.patterns=z.Rest()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r}=await ze.find(e,this.context.cwd),i=await Nt.find(e);await r.restoreInstallState({restoreResolutions:!1});let n=0,s=await Je.start({configuration:e,includeFooter:!1,stdout:this.context.stdout,json:this.json},async o=>{n=await jN(r,{strategy:this.strategy,patterns:this.patterns,cache:i,report:o})});return s.hasErrors()?s.exitCode():this.check?n?1:0:(await Je.start({configuration:e,stdout:this.context.stdout,json:this.json},async a=>{await r.install({cache:i,report:a,mode:this.mode})})).exitCode()}};cm.paths=[["dedupe"]],cm.usage=Re.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});var hae=cm;var ib=class extends Le{async execute(){let{plugins:e}=await ye.find(this.context.cwd,this.context.plugins),r=[];for(let o of e){let{commands:a}=o[1];if(a){let c=Is.from(a).definitions();r.push([o[0],c])}}let i=this.cli.definitions(),n=(o,a)=>o.split(" ").slice(1).join()===a.split(" ").slice(1).join(),s=dae()["@yarnpkg/builder"].bundles.standard;for(let o of r){let a=o[1];for(let l of a)i.find(c=>n(c.path,l.path)).plugin={name:o[0],isDefault:s.includes(o[0])}}this.context.stdout.write(`${JSON.stringify(i,null,2)} +`)}};ib.paths=[["--clipanion=definitions"]];var Cae=ib;var nb=class extends Le{async execute(){this.context.stdout.write(this.cli.usage(null))}};nb.paths=[["help"],["--help"],["-h"]];var mae=nb;var GN=class extends Le{constructor(){super(...arguments);this.leadingArgument=z.String();this.args=z.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!P.tryParseIdent(this.leadingArgument)){let e=k.resolve(this.context.cwd,j.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:e})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}},Eae=GN;var sb=class extends Le{async execute(){this.context.stdout.write(`${Ur||""} +`)}};sb.paths=[["-v"],["--version"]];var Iae=sb;var um=class extends Le{constructor(){super(...arguments);this.commandName=z.String();this.args=z.Proxy()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await ze.find(e,this.context.cwd);return await r.restoreInstallState(),await Zt.executePackageShellcode(i,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:r})}};um.paths=[["exec"]],um.usage=Re.Usage({description:"execute a shell script",details:` + This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. + + It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). + `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});var yae=um;Es();var gm=class extends Le{constructor(){super(...arguments);this.hash=z.String({required:!1,validator:fp(gp(),[hp(/^p[0-9a-f]{5}$/)])})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r}=await ze.find(e,this.context.cwd);return await r.restoreInstallState({restoreResolutions:!1}),await r.applyLightResolution(),typeof this.hash!="undefined"?await N8e(this.hash,r,{stdout:this.context.stdout}):(await Je.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async n=>{var o;let s=[([,a])=>P.stringifyLocator(r.storedPackages.get(a.subject)),([,a])=>P.stringifyIdent(a.requested)];for(let[a,l]of Se.sortMap(r.peerRequirements,s)){let c=r.storedPackages.get(l.subject);if(typeof c=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let u=r.storedPackages.get(l.rootRequester);if(typeof u=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let g=(o=c.dependencies.get(l.requested.identHash))!=null?o:null,f=ae.pretty(e,a,ae.Type.CODE),h=P.prettyLocator(e,c),p=P.prettyIdent(e,l.requested),m=P.prettyIdent(e,u),y=l.allRequesters.length-1,Q=`descendant${y===1?"":"s"}`,S=y>0?` and ${y} ${Q}`:"",x=g!==null?"provides":"doesn't provide";n.reportInfo(null,`${f} \u2192 ${h} ${x} ${p} to ${m}${S}`)}})).exitCode()}};gm.paths=[["explain","peer-requirements"]],gm.usage=Re.Usage({description:"explain a set of peer requirements",details:` + A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. + + When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. + + When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. + + **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). + `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});var wae=gm;async function N8e(t,e,r){let{configuration:i}=e,n=e.peerRequirements.get(t);if(typeof n=="undefined")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Je.start({configuration:i,stdout:r.stdout,includeFooter:!1},async o=>{var Q,S;let a=e.storedPackages.get(n.subject);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(Q=a.dependencies.get(n.requested.identHash))!=null?Q:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g=="undefined")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(x=>{let M=e.storedPackages.get(x);if(typeof M=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let Y=P.devirtualizeLocator(M),U=e.storedPackages.get(Y.locatorHash);if(typeof U=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let J=U.peerDependencies.get(n.requested.identHash);if(typeof J=="undefined")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:M,peerDependency:J}});if(g!==null){let x=f.every(({peerDependency:M})=>Wt.satisfiesWithPrereleases(g.version,M.range));o.reportInfo($.UNNAMED,`${P.prettyLocator(i,a)} provides ${P.prettyLocator(i,g)} with version ${P.prettyReference(i,(S=g.version)!=null?S:"")}, which ${x?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo($.UNNAMED,`${P.prettyLocator(i,a)} doesn't provide ${P.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ae.mark(i),p=[];for(let{pkg:x,peerDependency:M}of Se.sortMap(f,Y=>P.stringifyLocator(Y.pkg))){let U=(g!==null?Wt.satisfiesWithPrereleases(g.version,M.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:P.stringifyLocator(x),prettyLocator:P.prettyLocator(i,x),prettyRange:P.prettyRange(i,M.range),mark:U})}let m=Math.max(...p.map(({stringifiedLocator:x})=>x.length)),y=Math.max(...p.map(({prettyRange:x})=>x.length));for(let{stringifiedLocator:x,prettyLocator:M,prettyRange:Y,mark:U}of Se.sortMap(p,({stringifiedLocator:J})=>J))o.reportInfo(null,`${M.padEnd(m+(M.length-x.length)," ")} \u2192 ${Y.padEnd(y," ")} ${U}`);p.length>1&&(o.reportSeparator(),o.reportInfo($.UNNAMED,`Note: these requirements start with ${P.prettyLocator(e.configuration,l)}`))})).exitCode()}Es();var Bae=ge(ti()),fm=class extends Le{constructor(){super(...arguments);this.onlyIfNeeded=z.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins);if(e.get("yarnPath")&&this.onlyIfNeeded)return 0;let r=()=>{if(typeof Ur=="undefined")throw new Pe("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},i;if(this.version==="self")i=r();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")i=`https://repo.yarnpkg.com/${await hm(e,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")i=`https://repo.yarnpkg.com/${await hm(e,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")i="https://nightly.yarnpkg.com/latest.js";else if(this.version.match(/^https?:/))i=this.version;else if(this.version.match(/^\.{0,2}[\\/]/)||j.isAbsolute(this.version))i=`file://${j.resolve(this.version)}`;else if(Wt.satisfiesWithPrereleases(this.version,">=2.0.0"))i=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(Wt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))i=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(Wt.validRange(this.version))i=`https://repo.yarnpkg.com/${await L8e(e,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new Pe(`Invalid version descriptor "${this.version}"`);return(await Je.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async s=>{let o="file://",a;i.startsWith(o)?(s.reportInfo($.UNNAMED,`Downloading ${ae.pretty(e,i,Di.URL)}`),a=await K.readFilePromise(j.toPortablePath(i.slice(o.length)))):(s.reportInfo($.UNNAMED,`Retrieving ${ae.pretty(e,i,Di.PATH)}`),a=await ir.get(i,{configuration:e})),await YN(e,null,a,{report:s})})).exitCode()}};fm.paths=[["set","version"]],fm.usage=Re.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]});var bae=fm;async function L8e(t,e){let i=(await ir.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(n=>Wt.satisfiesWithPrereleases(n,e));if(i.length===0)throw new Pe(`No matching release found for range ${ae.pretty(t,e,ae.Type.RANGE)}.`);return i[0]}async function hm(t,e){let r=await ir.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new Pe(`Tag ${ae.pretty(t,e,ae.Type.RANGE)} not found`);return r.latest[e]}async function YN(t,e,r,{report:i}){var g;e===null&&await K.mktempPromise(async f=>{let h=k.join(f,"yarn.cjs");await K.writeFilePromise(h,r);let{stdout:p}=await Fr.execvp(process.execPath,[j.fromPortablePath(h),"--version"],{cwd:f,env:te(N({},process.env),{YARN_IGNORE_PATH:"1"})});if(e=p.trim(),!Bae.default.valid(e))throw new Error(`Invalid semver version. ${ae.pretty(t,"yarn --version",ae.Type.CODE)} returned: +${e}`)});let n=(g=t.projectCwd)!=null?g:t.startingCwd,s=k.resolve(n,".yarn/releases"),o=k.resolve(s,`yarn-${e}.cjs`),a=k.relative(t.startingCwd,o),l=k.relative(n,o),c=t.get("yarnPath"),u=c===null||c.startsWith(`${s}/`);if(i.reportInfo($.UNNAMED,`Saving the new release in ${ae.pretty(t,a,"magenta")}`),await K.removePromise(k.dirname(o)),await K.mkdirPromise(k.dirname(o),{recursive:!0}),await K.writeFilePromise(o,r,{mode:493}),u){await ye.updateConfiguration(n,{yarnPath:l});let f=await At.tryFind(n)||new At;f.packageManager=`yarn@${e&&Se.isTaggedYarnVersion(e)?e:await hm(t,"stable")}`;let h={};f.exportTo(h);let p=k.join(n,At.fileName),m=`${JSON.stringify(h,null,f.indent)} +`;await K.changeFilePromise(p,m,{automaticNewlines:!0})}}function Qae(t){return $[BI(t)]}var T8e=/## (?YN[0-9]{4}) - `(?[A-Z_]+)`\n\n(?
(?:.(?!##))+)/gs;async function O8e(t){let r=`https://repo.yarnpkg.com/${Se.isTaggedYarnVersion(Ur)?Ur:await hm(t,"canary")}/packages/gatsby/content/advanced/error-codes.md`,i=await ir.get(r,{configuration:t});return new Map(Array.from(i.toString().matchAll(T8e),({groups:n})=>{if(!n)throw new Error("Assertion failed: Expected the match to have been successful");let s=Qae(n.code);if(n.name!==s)throw new Error(`Assertion failed: Invalid error code data: Expected "${n.name}" to be named "${s}"`);return[n.code,n.details]}))}var pm=class extends Le{constructor(){super(...arguments);this.code=z.String({required:!1,validator:fp(gp(),[hp(/^YN[0-9]{4}$/)])});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins);if(typeof this.code!="undefined"){let r=Qae(this.code),i=ae.pretty(e,r,ae.Type.CODE),n=this.cli.format().header(`${this.code} - ${i}`),o=(await O8e(e)).get(this.code),a=typeof o!="undefined"?ae.jsonOrPretty(this.json,e,ae.tuple(ae.Type.MARKDOWN,{text:o,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. + +You can help us by editing this page on GitHub \u{1F642}: +${ae.jsonOrPretty(this.json,e,ae.tuple(ae.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md"))} +`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:r,details:a})} +`):this.context.stdout.write(`${n} + +${a} +`)}else{let r={children:Se.mapAndFilter(Object.entries($),([i,n])=>Number.isNaN(Number(i))?Se.mapAndFilter.skip:{label:YA(Number(i)),value:ae.tuple(ae.Type.CODE,n)})};as.emitTree(r,{configuration:e,stdout:this.context.stdout,json:this.json})}}};pm.paths=[["explain"]],pm.usage=Re.Usage({description:"explain an error code",details:` + When the code argument is specified, this command prints its name and its details. + + When used without arguments, this command lists all error codes and their names. + `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]});var vae=pm;var Sae=ge(ts()),dm=class extends Le{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=z.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=z.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=z.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=z.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=z.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=z.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=z.Rest()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(!i&&!this.all)throw new ht(r.cwd,this.context.cwd);await r.restoreInstallState();let s=new Set(this.extra);this.cache&&s.add("cache"),this.dependents&&s.add("dependents"),this.manifest&&s.add("manifest");let o=(x,{recursive:M})=>{let Y=x.anchoredLocator.locatorHash,U=new Map,J=[Y];for(;J.length>0;){let W=J.shift();if(U.has(W))continue;let ee=r.storedPackages.get(W);if(typeof ee=="undefined")throw new Error("Assertion failed: Expected the package to be registered");if(U.set(W,ee),P.isVirtualLocator(ee)&&J.push(P.devirtualizeLocator(ee).locatorHash),!(!M&&W!==Y))for(let Z of ee.dependencies.values()){let A=r.storedResolutions.get(Z.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");J.push(A)}}return U.values()},a=({recursive:x})=>{let M=new Map;for(let Y of r.workspaces)for(let U of o(Y,{recursive:x}))M.set(U.locatorHash,U);return M.values()},l=({all:x,recursive:M})=>x&&M?r.storedPackages.values():x?a({recursive:M}):o(i,{recursive:M}),c=({all:x,recursive:M})=>{let Y=l({all:x,recursive:M}),U=this.patterns.map(ee=>{let Z=P.parseLocator(ee),A=Sae.default.makeRe(P.stringifyIdent(Z)),ne=P.isVirtualLocator(Z),le=ne?P.devirtualizeLocator(Z):Z;return Ae=>{let T=P.stringifyIdent(Ae);if(!A.test(T))return!1;if(Z.reference==="unknown")return!0;let L=P.isVirtualLocator(Ae),Ee=L?P.devirtualizeLocator(Ae):Ae;return!(ne&&L&&Z.reference!==Ae.reference||le.reference!==Ee.reference)}}),J=Se.sortMap([...Y],ee=>P.stringifyLocator(ee));return{selection:J.filter(ee=>U.length===0||U.some(Z=>Z(ee))),sortedLookup:J}},{selection:u,sortedLookup:g}=c({all:this.all,recursive:this.recursive});if(u.length===0)throw new Pe("No package matched your request");let f=new Map;if(this.dependents)for(let x of g)for(let M of x.dependencies.values()){let Y=r.storedResolutions.get(M.descriptorHash);if(typeof Y=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");Se.getArrayWithDefault(f,Y).push(x)}let h=new Map;for(let x of g){if(!P.isVirtualLocator(x))continue;let M=P.devirtualizeLocator(x);Se.getArrayWithDefault(h,M.locatorHash).push(x)}let p={},m={children:p},y=e.makeFetcher(),Q={project:r,fetcher:y,cache:n,checksums:r.storedChecksums,report:new pi,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},S=[async(x,M,Y)=>{var W,ee;if(!M.has("manifest"))return;let U=await y.fetch(x,Q),J;try{J=await At.find(U.prefixPath,{baseFs:U.packageFs})}finally{(W=U.releaseFs)==null||W.call(U)}Y("Manifest",{License:ae.tuple(ae.Type.NO_HINT,J.license),Homepage:ae.tuple(ae.Type.URL,(ee=J.raw.homepage)!=null?ee:null)})},async(x,M,Y)=>{var A;if(!M.has("cache"))return;let U={mockedPackages:r.disabledLocators,unstablePackages:r.conditionalLocators},J=(A=r.storedChecksums.get(x.locatorHash))!=null?A:null,W=n.getLocatorPath(x,J,U),ee;if(W!==null)try{ee=K.statSync(W)}catch{}let Z=typeof ee!="undefined"?[ee.size,ae.Type.SIZE]:void 0;Y("Cache",{Checksum:ae.tuple(ae.Type.NO_HINT,J),Path:ae.tuple(ae.Type.PATH,W),Size:Z})}];for(let x of u){let M=P.isVirtualLocator(x);if(!this.virtuals&&M)continue;let Y={},U={value:[x,ae.Type.LOCATOR],children:Y};if(p[P.stringifyLocator(x)]=U,this.nameOnly){delete U.children;continue}let J=h.get(x.locatorHash);typeof J!="undefined"&&(Y.Instances={label:"Instances",value:ae.tuple(ae.Type.NUMBER,J.length)}),Y.Version={label:"Version",value:ae.tuple(ae.Type.NO_HINT,x.version)};let W=(Z,A)=>{let ne={};if(Y[Z]=ne,Array.isArray(A))ne.children=A.map(le=>({value:le}));else{let le={};ne.children=le;for(let[Ae,T]of Object.entries(A))typeof T!="undefined"&&(le[Ae]={label:Ae,value:T})}};if(!M){for(let Z of S)await Z(x,s,W);await e.triggerHook(Z=>Z.fetchPackageInfo,x,s,W)}x.bin.size>0&&!M&&W("Exported Binaries",[...x.bin.keys()].map(Z=>ae.tuple(ae.Type.PATH,Z)));let ee=f.get(x.locatorHash);typeof ee!="undefined"&&ee.length>0&&W("Dependents",ee.map(Z=>ae.tuple(ae.Type.LOCATOR,Z))),x.dependencies.size>0&&!M&&W("Dependencies",[...x.dependencies.values()].map(Z=>{var le;let A=r.storedResolutions.get(Z.descriptorHash),ne=typeof A!="undefined"&&(le=r.storedPackages.get(A))!=null?le:null;return ae.tuple(ae.Type.RESOLUTION,{descriptor:Z,locator:ne})})),x.peerDependencies.size>0&&M&&W("Peer dependencies",[...x.peerDependencies.values()].map(Z=>{var Ae,T;let A=x.dependencies.get(Z.identHash),ne=typeof A!="undefined"&&(Ae=r.storedResolutions.get(A.descriptorHash))!=null?Ae:null,le=ne!==null&&(T=r.storedPackages.get(ne))!=null?T:null;return ae.tuple(ae.Type.RESOLUTION,{descriptor:Z,locator:le})}))}as.emitTree(m,{configuration:e,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};dm.paths=[["info"]],dm.usage=Re.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});var kae=dm;var ob=ge(hc());Es();var Cm=class extends Le{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=z.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=z.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.checkCache=z.Boolean("--check-cache",!1,{description:"Always refetch the packages and ensure that their checksums are consistent"});this.inlineBuilds=z.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:nn(di)});this.cacheFolder=z.String("--cache-folder",{hidden:!0});this.frozenLockfile=z.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=z.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=z.Boolean("--non-interactive",{hidden:!0});this.preferOffline=z.Boolean("--prefer-offline",{hidden:!0});this.production=z.Boolean("--production",{hidden:!0});this.registry=z.String("--registry",{hidden:!0});this.silent=z.Boolean("--silent",{hidden:!0});this.networkTimeout=z.String("--network-timeout",{hidden:!0})}async execute(){var g;let e=await ye.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds!="undefined"&&e.useWithSource("",{enableInlineBuilds:this.inlineBuilds},e.startingCwd,{overwrite:!0});let r=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,i=async(f,{error:h})=>{let p=await Je.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async m=>{h?m.reportError($.DEPRECATED_CLI_SETTINGS,f):m.reportWarning($.DEPRECATED_CLI_SETTINGS,f)});return p.hasErrors()?p.exitCode():null};if(typeof this.ignoreEngines!="undefined"){let f=await i("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!ob.default.VERCEL});if(f!==null)return f}if(typeof this.registry!="undefined"){let f=await i("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(f!==null)return f}if(typeof this.preferOffline!="undefined"){let f=await i("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!ob.default.VERCEL});if(f!==null)return f}if(typeof this.production!="undefined"){let f=await i("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(f!==null)return f}if(typeof this.nonInteractive!="undefined"){let f=await i("The --non-interactive option is deprecated",{error:!r});if(f!==null)return f}if(typeof this.frozenLockfile!="undefined"&&(await i("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder!="undefined"){let f=await i("The cache-folder option has been deprecated; use rc settings instead",{error:!ob.default.NETLIFY});if(f!==null)return f}let n=this.mode===di.UpdateLockfile;if(n&&(this.immutable||this.immutableCache))throw new Pe(`${ae.pretty(e,"--immutable",ae.Type.CODE)} and ${ae.pretty(e,"--immutable-cache",ae.Type.CODE)} cannot be used with ${ae.pretty(e,"--mode=update-lockfile",ae.Type.CODE)}`);let s=((g=this.immutable)!=null?g:e.get("enableImmutableInstalls"))&&!n,o=this.immutableCache&&!n;if(e.projectCwd!==null){let f=await Je.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async h=>{await M8e(e,s)&&(h.reportInfo($.AUTOMERGE_SUCCESS,"Automatically fixed merge conflicts \u{1F44D}"),h.reportSeparator())});if(f.hasErrors())return f.exitCode()}if(e.projectCwd!==null&&typeof e.sources.get("nodeLinker")=="undefined"){let f=e.projectCwd,h;try{h=await K.readFilePromise(k.join(f,Pt.lockfile),"utf8")}catch{}if(h==null?void 0:h.includes("yarn lockfile v1")){let p=await Je.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async m=>{m.reportInfo($.AUTO_NM_SUCCESS,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),m.reportSeparator(),e.use("",{nodeLinker:"node-modules"},f,{overwrite:!0}),await ye.updateConfiguration(f,{nodeLinker:"node-modules"})});if(p.hasErrors())return p.exitCode()}}if(e.projectCwd!==null){let f=await Je.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async h=>{var p;((p=ye.telemetry)==null?void 0:p.isNew)&&(h.reportInfo($.TELEMETRY_NOTICE,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),h.reportInfo($.TELEMETRY_NOTICE,`Run ${ae.pretty(e,"yarn config set --home enableTelemetry 0",ae.Type.CODE)} to disable`),h.reportSeparator())});if(f.hasErrors())return f.exitCode()}let{project:a,workspace:l}=await ze.find(e,this.context.cwd),c=await Nt.find(e,{immutable:o,check:this.checkCache});if(!l)throw new ht(a.cwd,this.context.cwd);return await a.restoreInstallState({restoreResolutions:!1}),(await Je.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!0},async f=>{await a.install({cache:c,report:f,immutable:s,mode:this.mode})})).exitCode()}};Cm.paths=[["install"],Re.Default],Cm.usage=Re.Usage({description:"install the project dependencies",details:` + This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics: + + - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ). + + - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of \`cacheFolder\` in \`yarn config\` to see where the cache files are stored). + + - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know). + + - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail. + + Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches. + + If the \`--immutable\` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the \`immutablePatterns\` configuration setting). For backward compatibility we offer an alias under the name of \`--frozen-lockfile\`, but it will be removed in a later release. + + If the \`--immutable-cache\` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed). + + If the \`--check-cache\` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them. + + If the \`--inline-builds\` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments. + + If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: + + - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. + + - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. + `,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var xae=Cm,U8e="|||||||",K8e=">>>>>>>",H8e="=======",Pae="<<<<<<<";async function M8e(t,e){if(!t.projectCwd)return!1;let r=k.join(t.projectCwd,t.get("lockfileFilename"));if(!await K.existsPromise(r))return!1;let i=await K.readFilePromise(r,"utf8");if(!i.includes(Pae))return!1;if(e)throw new ct($.AUTOMERGE_IMMUTABLE,"Cannot autofix a lockfile when running an immutable install");let[n,s]=j8e(i),o,a;try{o=Qi(n),a=Qi(s)}catch(c){throw new ct($.AUTOMERGE_FAILED_TO_PARSE,"The individual variants of the lockfile failed to parse")}let l=N(N({},o),a);for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await K.changeFilePromise(r,Na(l),{automaticNewlines:!0}),!0}function j8e(t){let e=[[],[]],r=t.split(/\r?\n/g),i=!1;for(;r.length>0;){let n=r.shift();if(typeof n=="undefined")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(Pae)){for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s===H8e){i=!1;break}else if(i||s.startsWith(U8e)){i=!0;continue}else e[0].push(s)}for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(K8e))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(` +`),e[1].join(` +`)]}var mm=class extends Le{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=z.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=z.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(!i)throw new ht(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=k.resolve(this.context.cwd,j.toPortablePath(this.destination)),o=await ye.find(s,this.context.plugins,{useRc:!1,strict:!1}),{project:a,workspace:l}=await ze.find(o,s);if(r.cwd===a.cwd)throw new Pe("Invalid destination; Can't link the project to itself");if(!l)throw new ht(a.cwd,s);let c=r.topLevelWorkspace,u=[];if(this.all){for(let f of a.workspaces)f.manifest.name&&(!f.manifest.private||this.private)&&u.push(f);if(u.length===0)throw new Pe("No workspace found to be linked in the target project")}else{if(!l.manifest.name)throw new Pe("The target workspace doesn't have a name and thus cannot be linked");if(l.manifest.private&&!this.private)throw new Pe("The target workspace is marked private - use the --private flag to link it anyway");u.push(l)}for(let f of u){let h=P.stringifyIdent(f.locator),p=this.relative?k.relative(r.cwd,f.cwd):f.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${p}`})}return(await Je.start({configuration:e,stdout:this.context.stdout},async f=>{await r.install({cache:n,report:f})})).exitCode()}};mm.paths=[["link"]],mm.usage=Re.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var Dae=mm;var Em=class extends Le{constructor(){super(...arguments);this.args=z.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};Em.paths=[["node"]],Em.usage=Re.Usage({description:"run node with the hook already setup",details:` + This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). + + The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. + `,examples:[["Run a Node script","$0 node ./my-script.js"]]});var Rae=Em;var Hae=ge(require("os"));var Nae=ge(require("os"));var G8e="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function yu(t){let e=await ir.get(G8e,{configuration:t});return Qi(e.toString())}var Im=class extends Le{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins);return(await Je.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{let n=await yu(e);for(let s of Object.entries(n)){let[l,o]=s,a=o,{experimental:c}=a,u=Tr(a,["experimental"]);let g=l;c&&(g+=" [experimental]"),i.reportJson(N({name:l,experimental:c},u)),i.reportInfo(null,g)}})).exitCode()}};Im.paths=[["plugin","list"]],Im.usage=Re.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var Fae=Im;var Y8e=/^[0-9]+$/;function Lae(t){return Y8e.test(t)?`pull/${t}/head`:t}var q8e=({repository:t,branch:e},r)=>[["git","init",j.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin","--depth=1",Lae(e)],["git","reset","--hard","FETCH_HEAD"]],J8e=({branch:t})=>[["git","fetch","origin","--depth=1",Lae(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],W8e=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(i=>["--plugin",k.resolve(r,i)])),...e?["--no-minify"]:[],"|"]],ym=class extends Le{constructor(){super(...arguments);this.installPath=z.String("--path",{description:"The path where the repository should be cloned to"});this.repository=z.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=z.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=z.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=z.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=z.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=z.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r}=await ze.find(e,this.context.cwd),i=typeof this.installPath!="undefined"?k.resolve(this.context.cwd,j.toPortablePath(this.installPath)):k.resolve(j.toPortablePath((0,Nae.tmpdir)()),"yarnpkg-sources",Dn.makeHash(this.repository).slice(0,6));return(await Je.start({configuration:e,stdout:this.context.stdout},async s=>{await JN(this,{configuration:e,report:s,target:i}),s.reportSeparator(),s.reportInfo($.UNNAMED,"Building a fresh bundle"),s.reportSeparator(),await wm(W8e(this,i),{configuration:e,context:this.context,target:i}),s.reportSeparator();let o=k.resolve(i,"packages/yarnpkg-cli/bundles/yarn.js"),a=await K.readFilePromise(o);await YN(e,"sources",a,{report:s}),this.skipPlugins||await z8e(this,{project:r,report:s,target:i})})).exitCode()}};ym.paths=[["set","version","from","sources"]],ym.usage=Re.Usage({description:"build Yarn from master",details:` + This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. + + By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. + `,examples:[["Build Yarn from master","$0 set version from sources"]]});var Tae=ym;async function wm(t,{configuration:e,context:r,target:i}){for(let[n,...s]of t){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await Fr.pipevp(n,s,{cwd:i,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ae.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")} +`);try{await Fr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw r.stdout.write(a.stdout||a.stack),a}}}}async function JN(t,{configuration:e,report:r,target:i}){let n=!1;if(!t.force&&K.existsSync(k.join(i,".git"))){r.reportInfo($.UNNAMED,"Fetching the latest commits"),r.reportSeparator();try{await wm(J8e(t),{configuration:e,context:t.context,target:i}),n=!0}catch(s){r.reportSeparator(),r.reportWarning($.UNNAMED,"Repository update failed; we'll try to regenerate it")}}n||(r.reportInfo($.UNNAMED,"Cloning the remote repository"),r.reportSeparator(),await K.removePromise(i),await K.mkdirPromise(i,{recursive:!0}),await wm(q8e(t,i),{configuration:e,context:t.context,target:i}))}async function z8e(t,{project:e,report:r,target:i}){let n=await yu(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await qN(o,t,{project:e,report:r,target:i})}var Oae=ge(ti()),Mae=ge(require("url")),Uae=ge(require("vm"));var Bm=class extends Le{constructor(){super(...arguments);this.name=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins);return(await Je.start({configuration:e,stdout:this.context.stdout},async i=>{let{project:n}=await ze.find(e,this.context.cwd),s,o;if(this.name.match(/^\.{0,2}[\\/]/)||j.isAbsolute(this.name)){let a=k.resolve(this.context.cwd,j.toPortablePath(this.name));i.reportInfo($.UNNAMED,`Reading ${ae.pretty(e,a,ae.Type.PATH)}`),s=k.relative(n.cwd,a),o=await K.readFilePromise(a)}else{let a;if(this.name.match(/^https?:/)){try{new Mae.URL(this.name)}catch{throw new ct($.INVALID_PLUGIN_REFERENCE,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}s=this.name,a=this.name}else{let l=P.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(l.reference!=="unknown"&&!Oae.default.valid(l.reference))throw new ct($.UNNAMED,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let c=P.stringifyIdent(l),u=await yu(e);if(!Object.prototype.hasOwnProperty.call(u,c))throw new ct($.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${c}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);s=c,a=u[c].url,l.reference!=="unknown"?a=a.replace(/\/master\//,`/${c}/${l.reference}/`):Ur!==null&&(a=a.replace(/\/master\//,`/@yarnpkg/cli/${Ur}/`))}i.reportInfo($.UNNAMED,`Downloading ${ae.pretty(e,a,"green")}`),o=await ir.get(a,{configuration:e})}await WN(s,o,{project:n,report:i})})).exitCode()}};Bm.paths=[["plugin","import"]],Bm.usage=Re.Usage({category:"Plugin-related commands",description:"download a plugin",details:` + This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. + + Three types of plugin references are accepted: + + - If the plugin is stored within the Yarn repository, it can be referenced by name. + - Third-party plugins can be referenced directly through their public urls. + - Local plugins can be referenced by their path on the disk. + + Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). + `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});var Kae=Bm;async function WN(t,e,{project:r,report:i}){let{configuration:n}=r,s={},o={exports:s};(0,Uae.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=k.resolve(r.cwd,l);i.reportInfo($.UNNAMED,`Saving the new plugin in ${ae.pretty(n,l,"magenta")}`),await K.mkdirPromise(k.dirname(c),{recursive:!0}),await K.writeFilePromise(c,e);let u={path:l,spec:t};await ye.updateConfiguration(r.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let m=typeof p!="string"?p.path:p,y=k.resolve(r.cwd,j.toPortablePath(m)),{name:Q}=Se.dynamicRequire(y);Q!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),te(N({},g),{plugins:f})})}var _8e=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],bm=class extends Le{constructor(){super(...arguments);this.installPath=z.String("--path",{description:"The path where the repository should be cloned to"});this.repository=z.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=z.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=z.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=z.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),r=typeof this.installPath!="undefined"?k.resolve(this.context.cwd,j.toPortablePath(this.installPath)):k.resolve(j.toPortablePath((0,Hae.tmpdir)()),"yarnpkg-sources",Dn.makeHash(this.repository).slice(0,6));return(await Je.start({configuration:e,stdout:this.context.stdout},async n=>{let{project:s}=await ze.find(e,this.context.cwd),o=P.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),a=P.stringifyIdent(o),l=await yu(e);if(!Object.prototype.hasOwnProperty.call(l,a))throw new ct($.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${a}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let c=a;await JN(this,{configuration:e,report:n,target:r}),await qN(c,this,{project:s,report:n,target:r})})).exitCode()}};bm.paths=[["plugin","import","from","sources"]],bm.usage=Re.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` + This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. + + The plugins can be referenced by their short name if sourced from the official Yarn repository. + `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});var jae=bm;async function qN(t,{context:e,noMinify:r},{project:i,report:n,target:s}){let o=t.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo($.UNNAMED,`Building a fresh ${o}`),n.reportSeparator(),await wm(_8e({pluginName:o,noMinify:r},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=k.resolve(s,`packages/${o}/bundles/${t}.js`),c=await K.readFilePromise(l);await WN(t,c,{project:i,report:n})}var Qm=class extends Le{constructor(){super(...arguments);this.name=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r}=await ze.find(e,this.context.cwd);return(await Je.start({configuration:e,stdout:this.context.stdout},async n=>{let s=this.name,o=P.parseIdent(s);if(!e.plugins.has(s))throw new Pe(`${P.prettyIdent(e,o)} isn't referenced by the current configuration`);let a=`.yarn/plugins/${s}.cjs`,l=k.resolve(r.cwd,a);K.existsSync(l)&&(n.reportInfo($.UNNAMED,`Removing ${ae.pretty(e,a,ae.Type.PATH)}...`),await K.removePromise(l)),n.reportInfo($.UNNAMED,"Updating the configuration..."),await ye.updateConfiguration(r.cwd,c=>{if(!Array.isArray(c.plugins))return c;let u=c.plugins.filter(g=>g.path!==a);return c.plugins.length===u.length?c:te(N({},c),{plugins:u})})})).exitCode()}};Qm.paths=[["plugin","remove"]],Qm.usage=Re.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` + This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. + + **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. + `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var Gae=Qm;var vm=class extends Le{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins);return(await Je.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{for(let n of e.plugins.keys()){let s=this.context.plugins.plugins.has(n),o=n;s&&(o+=" [builtin]"),i.reportJson({name:n,builtin:s}),i.reportInfo(null,`${o}`)}})).exitCode()}};vm.paths=[["plugin","runtime"]],vm.usage=Re.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` + This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. + `,examples:[["List the currently active plugins","$0 plugin runtime"]]});var Yae=vm;var Sm=class extends Le{constructor(){super(...arguments);this.idents=z.Rest()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(!i)throw new ht(r.cwd,this.context.cwd);let s=new Set;for(let a of this.idents)s.add(P.parseIdent(a).identHash);if(await r.restoreInstallState({restoreResolutions:!1}),await r.resolveEverything({cache:n,report:new pi}),s.size>0)for(let a of r.storedPackages.values())s.has(a.identHash)&&r.storedBuildState.delete(a.locatorHash);else r.storedBuildState.clear();return(await Je.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{await r.install({cache:n,report:a})})).exitCode()}};Sm.paths=[["rebuild"]],Sm.usage=Re.Usage({description:"rebuild the project's native packages",details:` + This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. + + Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). + + By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. + `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var qae=Sm;var zN=ge(ts());Es();var km=class extends Le{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:nn(di)});this.patterns=z.Rest()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(!i)throw new ht(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=this.all?r.workspaces:[i],o=[Hr.REGULAR,Hr.DEVELOPMENT,Hr.PEER],a=[],l=!1,c=[];for(let h of this.patterns){let p=!1,m=P.parseIdent(h);for(let y of s){let Q=[...y.manifest.peerDependenciesMeta.keys()];for(let S of(0,zN.default)(Q,h))y.manifest.peerDependenciesMeta.delete(S),l=!0,p=!0;for(let S of o){let x=y.manifest.getForScope(S),M=[...x.values()].map(Y=>P.stringifyIdent(Y));for(let Y of(0,zN.default)(M,P.stringifyIdent(m))){let{identHash:U}=P.parseIdent(Y),J=x.get(U);if(typeof J=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");y.manifest[S].delete(U),c.push([y,S,J]),l=!0,p=!0}}}p||a.push(h)}let u=a.length>1?"Patterns":"Pattern",g=a.length>1?"don't":"doesn't",f=this.all?"any":"this";if(a.length>0)throw new Pe(`${u} ${ae.prettyList(e,a,Di.CODE)} ${g} match any packages referenced by ${f} workspace`);return l?(await e.triggerMultipleHooks(p=>p.afterWorkspaceDependencyRemoval,c),(await Je.start({configuration:e,stdout:this.context.stdout},async p=>{await r.install({cache:n,report:p,mode:this.mode})})).exitCode()):0}};km.paths=[["remove"]],km.usage=Re.Usage({description:"remove dependencies from the project",details:` + This command will remove the packages matching the specified patterns from the current workspace. + + If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: + + - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. + + - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. + + This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. + `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var Jae=km;var Wae=ge(require("util")),ab=class extends Le{async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd);if(!i)throw new ht(r.cwd,this.context.cwd);return(await Je.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=Se.sortMap(o.keys(),u=>u),l={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,Wae.inspect)(g,l)}`)})).exitCode()}};ab.paths=[["run"]];var zae=ab;var xm=class extends Le{constructor(){super(...arguments);this.inspect=z.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=z.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=z.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=z.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=z.Boolean("--silent",{hidden:!0});this.scriptName=z.String();this.args=z.Proxy()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i,locator:n}=await ze.find(e,this.context.cwd);await r.restoreInstallState();let s=this.topLevel?r.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Zt.hasPackageScript(s,this.scriptName,{project:r}))return await Zt.executePackageScript(s,this.scriptName,this.args,{project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let o=await Zt.getPackageAccessibleBinaries(s,{project:r});if(o.get(this.scriptName)){let l=[];return this.inspect&&(typeof this.inspect=="string"?l.push(`--inspect=${this.inspect}`):l.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?l.push(`--inspect-brk=${this.inspectBrk}`):l.push("--inspect-brk")),await Zt.executePackageAccessibleBinary(s,this.scriptName,this.args,{cwd:this.context.cwd,project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:l,packageAccessibleBinaries:o})}if(!this.topLevel&&!this.binariesOnly&&i&&this.scriptName.includes(":")){let c=(await Promise.all(r.workspaces.map(async u=>u.manifest.scripts.has(this.scriptName)?u:null))).filter(u=>u!==null);if(c.length===1)return await Zt.executeWorkspaceScript(c[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new Pe(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${P.prettyLocator(e,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new Pe(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${P.prettyLocator(e,n)}).`);{if(this.scriptName==="global")throw new Pe("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let l=[this.scriptName].concat(this.args);for(let[c,u]of Nf)for(let g of u)if(l.length>=g.length&&JSON.stringify(l.slice(0,g.length))===JSON.stringify(g))throw new Pe(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${c} plugin. You can install it with "yarn plugin import ${c}".`);throw new Pe(`Couldn't find a script named "${this.scriptName}".`)}}};xm.paths=[["run"]],xm.usage=Re.Usage({description:"run a script defined in the package.json",details:` + This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: + + - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. + + - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. + + - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. + + Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). + `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var _ae=xm;var Pm=class extends Le{constructor(){super(...arguments);this.save=z.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=z.String();this.resolution=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(await r.restoreInstallState({restoreResolutions:!1}),!i)throw new ht(r.cwd,this.context.cwd);let s=P.parseDescriptor(this.descriptor,!0),o=P.makeDescriptor(s,this.resolution);return r.storedDescriptors.set(s.descriptorHash,s),r.storedDescriptors.set(o.descriptorHash,o),r.resolutionAliases.set(s.descriptorHash,o.descriptorHash),(await Je.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};Pm.paths=[["set","resolution"]],Pm.usage=Re.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var Vae=Pm;var Xae=ge(ts()),Dm=class extends Le{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=z.Rest()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(!i)throw new ht(r.cwd,this.context.cwd);let s=r.topLevelWorkspace,o=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:l,reference:c}of s.manifest.resolutions)c.startsWith("portal:")&&o.add(l.descriptor.fullName);if(this.leadingArguments.length>0)for(let l of this.leadingArguments){let c=k.resolve(this.context.cwd,j.toPortablePath(l));if(Se.isPathLike(l)){let u=await ye.find(c,this.context.plugins,{useRc:!1,strict:!1}),{project:g,workspace:f}=await ze.find(u,c);if(!f)throw new ht(g.cwd,c);if(this.all){for(let h of g.workspaces)h.manifest.name&&o.add(P.stringifyIdent(h.locator));if(o.size===0)throw new Pe("No workspace found to be unlinked in the target project")}else{if(!f.manifest.name)throw new Pe("The target workspace doesn't have a name and thus cannot be unlinked");o.add(P.stringifyIdent(f.locator))}}else{let u=[...s.manifest.resolutions.map(({pattern:g})=>g.descriptor.fullName)];for(let g of(0,Xae.default)(u,l))o.add(g)}}return s.manifest.resolutions=s.manifest.resolutions.filter(({pattern:l})=>!o.has(l.descriptor.fullName)),(await Je.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};Dm.paths=[["unlink"]],Dm.usage=Re.Usage({description:"disconnect the local project from another one",details:` + This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. + `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var Zae=Dm;var $ae=ge($C()),_N=ge(ts());Es();var eh=class extends Le{constructor(){super(...arguments);this.interactive=z.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=z.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=z.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=z.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=z.String("--mode",{description:"Change what artifacts installs generate",validator:nn(di)});this.patterns=z.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(!i)throw new ht(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=[...r.storedDescriptors.values()],o=s.map(u=>P.stringifyIdent(u)),a=new Set;for(let u of this.patterns){if(P.parseDescriptor(u).range!=="unknown")throw new Pe("Ranges aren't allowed when using --recursive");for(let g of(0,_N.default)(o,u)){let f=P.parseIdent(g);a.add(f.identHash)}}let l=s.filter(u=>a.has(u.identHash));for(let u of l)r.storedDescriptors.delete(u.descriptorHash),r.storedResolutions.delete(u.descriptorHash);return(await Je.start({configuration:e,stdout:this.context.stdout},async u=>{await r.install({cache:n,report:u})})).exitCode()}async executeUpClassic(){var m;let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(!i)throw new ht(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(m=this.interactive)!=null?m:e.get("preferInteractive"),o=em(this,r),a=s?[_r.KEEP,_r.REUSE,_r.PROJECT,_r.LATEST]:[_r.PROJECT,_r.LATEST],l=[],c=[];for(let y of this.patterns){let Q=!1,S=P.parseDescriptor(y);for(let x of r.workspaces)for(let M of[Hr.REGULAR,Hr.DEVELOPMENT]){let U=[...x.manifest.getForScope(M).values()].map(J=>P.stringifyIdent(J));for(let J of(0,_N.default)(U,P.stringifyIdent(S))){let W=P.parseIdent(J),ee=x.manifest[M].get(W.identHash);if(typeof ee=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");let Z=P.makeDescriptor(W,S.range);l.push(Promise.resolve().then(async()=>[x,M,ee,await tm(Z,{project:r,workspace:x,cache:n,target:M,modifier:o,strategies:a})])),Q=!0}}Q||c.push(y)}if(c.length>1)throw new Pe(`Patterns ${ae.prettyList(e,c,Di.CODE)} don't match any packages referenced by any workspace`);if(c.length>0)throw new Pe(`Pattern ${ae.prettyList(e,c,Di.CODE)} doesn't match any packages referenced by any workspace`);let u=await Promise.all(l),g=await uA.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async y=>{for(let[,,Q,{suggestions:S,rejections:x}]of u){let M=S.filter(Y=>Y.descriptor!==null);if(M.length===0){let[Y]=x;if(typeof Y=="undefined")throw new Error("Assertion failed: Expected an error to have been set");let U=this.cli.error(Y);r.configuration.get("enableNetwork")?y.reportError($.CANT_SUGGEST_RESOLUTIONS,`${P.prettyDescriptor(e,Q)} can't be resolved to a satisfying range + +${U}`):y.reportError($.CANT_SUGGEST_RESOLUTIONS,`${P.prettyDescriptor(e,Q)} can't be resolved to a satisfying range (note: network resolution has been disabled) + +${U}`)}else M.length>1&&!s&&y.reportError($.CANT_SUGGEST_RESOLUTIONS,`${P.prettyDescriptor(e,Q)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[];for(let[y,Q,,{suggestions:S}]of u){let x,M=S.filter(W=>W.descriptor!==null),Y=M[0].descriptor,U=M.every(W=>P.areDescriptorsEqual(W.descriptor,Y));M.length===1||U?x=Y:(f=!0,{answer:x}=await(0,$ae.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${P.prettyWorkspace(e,y)} \u276F ${Q}?`,choices:S.map(({descriptor:W,name:ee,reason:Z})=>W?{name:ee,hint:Z,descriptor:W}:{name:ee,hint:Z,disabled:!0}),onCancel:()=>process.exit(130),result(W){return this.find(W,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let J=y.manifest[Q].get(x.identHash);if(typeof J=="undefined")throw new Error("Assertion failed: This descriptor should have a matching entry");if(J.descriptorHash!==x.descriptorHash)y.manifest[Q].set(x.identHash,x),h.push([y,Q,J,x]);else{let W=e.makeResolver(),ee={project:r,resolver:W},Z=W.bindDescriptor(J,y.anchoredLocator,ee);r.forgetResolution(Z)}}return await e.triggerMultipleHooks(y=>y.afterWorkspaceDependencyReplacement,h),f&&this.context.stdout.write(` +`),(await Je.start({configuration:e,stdout:this.context.stdout},async y=>{await r.install({cache:n,report:y,mode:this.mode})})).exitCode()}};eh.paths=[["up"]],eh.usage=Re.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),eh.schema=[lv("recursive",Cc.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var eAe=eh;var Rm=class extends Le{constructor(){super(...arguments);this.recursive=z.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=z.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd);if(!i)throw new ht(r.cwd,this.context.cwd);await r.restoreInstallState();let n=P.parseIdent(this.package).identHash,s=this.recursive?X8e(r,n,{configuration:e,peers:this.peers}):V8e(r,n,{configuration:e,peers:this.peers});as.emitTree(s,{configuration:e,stdout:this.context.stdout,json:this.json,separators:1})}};Rm.paths=[["why"]],Rm.usage=Re.Usage({description:"display the reason why a package is needed",details:` + This command prints the exact reasons why a package appears in the dependency tree. + + If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. + `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});var tAe=Rm;function V8e(t,e,{configuration:r,peers:i}){let n=Se.sortMap(t.storedPackages.values(),a=>P.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={},c=null;for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=t.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=t.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;if(c===null){let p=P.stringifyLocator(a);s[p]={value:[a,ae.Type.LOCATOR],children:l}}let h=P.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ae.Type.DEPENDENT]}}}return o}function X8e(t,e,{configuration:r,peers:i}){let n=Se.sortMap(t.workspaces,f=>P.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let m=t.storedResolutions.get(p.descriptorHash);if(!m)throw new Error("Assertion failed: The resolution should have been registered");let y=t.storedPackages.get(m);if(!y)throw new Error("Assertion failed: The package should have been registered");a(y)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let m=p!==null?ae.tuple(ae.Type.DEPENDENT,{locator:f,descriptor:p}):ae.tuple(ae.Type.LOCATOR,f),y={},Q={value:m,children:y},S=P.stringifyLocator(f);if(h[S]=Q,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&t.tryWorkspaceByLocator(f))))for(let x of f.dependencies.values()){if(!i&&f.peerDependencies.has(x.identHash))continue;let M=t.storedResolutions.get(x.descriptorHash);if(!M)throw new Error("Assertion failed: The resolution should have been registered");let Y=t.storedPackages.get(M);if(!Y)throw new Error("Assertion failed: The package should have been registered");g(Y,y,x)}};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var aL={};ft(aL,{default:()=>mze,gitUtils:()=>wu});var wu={};ft(wu,{TreeishProtocols:()=>On,clone:()=>nL,fetchBase:()=>wAe,fetchChangedFiles:()=>BAe,fetchChangedWorkspaces:()=>dze,fetchRoot:()=>yAe,isGitUrl:()=>rh,lsRemote:()=>IAe,normalizeLocator:()=>tL,normalizeRepoUrl:()=>Fm,resolveUrl:()=>iL,splitRepoUrl:()=>Nm});var $N=ge(dAe()),CAe=ge(tB()),th=ge(require("querystring")),eL=ge(ti()),mAe=ge(require("url"));function EAe(){return te(N({},process.env),{GIT_SSH_COMMAND:"ssh -o BatchMode=yes"})}var pze=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],On;(function(n){n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver"})(On||(On={}));function rh(t){return t?pze.some(e=>!!t.match(e)):!1}function Nm(t){t=Fm(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:On.Head,request:"HEAD"},extra:{}};let r=t.slice(0,e),i=t.slice(e+1);if(i.match(/^[a-z]+=/)){let n=th.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(On).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s!="undefined"?(o=s,a=n[s]):(o=On.Head,a="HEAD");for(let l of Object.values(On))delete n[l];return{repo:r,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:r,treeish:{protocol:s,request:o},extra:{}}}}function Fm(t,{git:e=!1}={}){var r;if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){t=t.replace(/^git\+([^:]+):/,"$1:");let i;try{i=mAe.default.parse(t)}catch{i=null}i&&i.protocol==="ssh:"&&((r=i.path)==null?void 0:r.startsWith("/:"))&&(t=t.replace(/^ssh:\/\//,""))}return t}function tL(t){return P.makeLocator(t,Fm(t.reference))}async function IAe(t,e){let r=Fm(t,{git:!0});if(!ir.getNetworkSettings(`https://${(0,$N.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Error(`Request to '${r}' has been blocked because of your configuration settings`);let n=await rL("listing refs",["ls-remote",r],{cwd:e.startingCwd,env:EAe()},{configuration:e,normalizedRepoUrl:r}),s=new Map,o=/^([a-f0-9]{40})\t([^\n]+)/gm,a;for(;(a=o.exec(n.stdout))!==null;)s.set(a[2],a[1]);return s}async function iL(t,e){let{repo:r,treeish:{protocol:i,request:n},extra:s}=Nm(t),o=await IAe(r,e),a=(c,u)=>{switch(c){case On.Commit:{if(!u.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return th.default.stringify(te(N({},s),{commit:u}))}case On.Head:{let g=o.get(u==="HEAD"?u:`refs/heads/${u}`);if(typeof g=="undefined")throw new Error(`Unknown head ("${u}")`);return th.default.stringify(te(N({},s),{commit:g}))}case On.Tag:{let g=o.get(`refs/tags/${u}`);if(typeof g=="undefined")throw new Error(`Unknown tag ("${u}")`);return th.default.stringify(te(N({},s),{commit:g}))}case On.Semver:{let g=Wt.validRange(u);if(!g)throw new Error(`Invalid range ("${u}")`);let f=new Map([...o.entries()].filter(([p])=>p.startsWith("refs/tags/")).map(([p,m])=>[eL.default.parse(p.slice(10)),m]).filter(p=>p[0]!==null)),h=eL.default.maxSatisfying([...f.keys()],g);if(h===null)throw new Error(`No matching range ("${u}")`);return th.default.stringify(te(N({},s),{commit:f.get(h)}))}case null:{let g;if((g=l(On.Commit,u))!==null||(g=l(On.Tag,u))!==null||(g=l(On.Head,u))!==null)return g;throw u.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${c}")`)}},l=(c,u)=>{try{return a(c,u)}catch(g){return null}};return`${r}#${a(i,n)}`}async function nL(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:i,request:n}}=Nm(t);if(i!=="commit")throw new Error("Invalid treeish protocol when cloning");let s=Fm(r,{git:!0});if(ir.getNetworkSettings(`https://${(0,$N.default)(s).resource}`,{configuration:e}).enableNetwork===!1)throw new Error(`Request to '${s}' has been blocked because of your configuration settings`);let o=await K.mktempPromise(),a={cwd:o,env:EAe()};return await rL("cloning the repository",["clone","-c core.autocrlf=false",s,j.fromPortablePath(o)],a,{configuration:e,normalizedRepoUrl:s}),await rL("switching branch",["checkout",`${n}`],a,{configuration:e,normalizedRepoUrl:s}),o})}async function yAe(t){let e=null,r,i=t;do r=i,await K.existsPromise(k.join(r,".git"))&&(e=r),i=k.dirname(r);while(e===null&&i!==r);return e}async function wAe(t,{baseRefs:e}){if(e.length===0)throw new Pe("Can't run this command with zero base refs specified.");let r=[];for(let a of e){let{code:l}=await Fr.execvp("git",["merge-base",a,"HEAD"],{cwd:t});l===0&&r.push(a)}if(r.length===0)throw new Pe(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:i}=await Fr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),n=i.trim(),{stdout:s}=await Fr.execvp("git",["show","--quiet","--pretty=format:%s",n],{cwd:t,strict:!0}),o=s.trim();return{hash:n,title:o}}async function BAe(t,{base:e,project:r}){let i=Se.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:n}=await Fr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),s=n.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>k.resolve(t,j.toPortablePath(c))),{stdout:o}=await Fr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),a=o.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>k.resolve(t,j.toPortablePath(c))),l=[...new Set([...s,...a].sort())];return i?l.filter(c=>!k.relative(r.cwd,c).match(i)):l}async function dze({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new Pe("This command can only be run from within a Yarn project");let r=[k.resolve(e.cwd,e.configuration.get("cacheFolder")),k.resolve(e.cwd,e.configuration.get("installStatePath")),k.resolve(e.cwd,e.configuration.get("lockfileFilename")),k.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(o=>o.populateYarnPaths,e,o=>{o!=null&&r.push(o)});let i=await yAe(e.configuration.projectCwd);if(i==null)throw new Pe("This command can only be run on Git repositories");let n=await wAe(i,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),s=await BAe(i,{base:n.hash,project:e});return new Set(Se.mapAndFilter(s,o=>{let a=e.tryWorkspaceByFilePath(o);return a===null?Se.mapAndFilter.skip:r.some(l=>o.startsWith(l))?Se.mapAndFilter.skip:a}))}async function rL(t,e,r,{configuration:i,normalizedRepoUrl:n}){try{return await Fr.execvp("git",e,te(N({},r),{strict:!0}))}catch(s){if(!(s instanceof Fr.ExecError))throw s;let o=s.reportExtra,a=s.stderr.toString();throw new ct($.EXCEPTION,`Failed ${t}`,l=>{l.reportError($.EXCEPTION,` ${ae.prettyField(i,{label:"Repository URL",value:ae.tuple(ae.Type.URL,n)})}`);for(let c of a.matchAll(/^(.+?): (.*)$/gm)){let[,u,g]=c;u=u.toLowerCase();let f=u==="error"?"Error":`${(0,CAe.default)(u)} Error`;l.reportError($.EXCEPTION,` ${ae.prettyField(i,{label:f,value:ae.tuple(ae.Type.NO_HINT,g)})}`)}o==null||o(l)})}}var sL=class{supports(e,r){return rh(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,n=tL(e),s=new Map(r.checksums);s.set(n.locatorHash,i);let o=te(N({},r),{checksums:s}),a=await this.downloadHosted(n,o);if(a!==null)return a;let[l,c,u]=await r.cache.fetchPackageFromCache(e,i,N({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${P.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(n,o),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:l,releaseFs:c,prefixPath:P.getIdentVendorPath(e),checksum:u}}async downloadHosted(e,r){return r.project.configuration.reduceHook(i=>i.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let i=await nL(e.reference,r.project.configuration),n=Nm(e.reference),s=k.join(i,"package.tgz");await Zt.prepareExternalProject(i,s,{configuration:r.project.configuration,report:r.report,workspace:n.extra.workspace,locator:e});let o=await K.readFilePromise(s);return await Se.releaseAfterUseAsync(async()=>await wi.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1}))}};var oL=class{supportsDescriptor(e,r){return rh(e.range)}supportsLocator(e,r){return rh(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=await iL(e.range,i.project.configuration);return[P.makeLocator(e,n)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await Se.releaseAfterUseAsync(async()=>await At.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return te(N({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:Qt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var Cze={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:Ie.STRING,isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:Ie.STRING,default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:Ie.NUMBER,default:2}},fetchers:[sL],resolvers:[oL]};var mze=Cze;var Lm=class extends Le{constructor(){super(...arguments);this.since=z.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.verbose=z.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r}=await ze.find(e,this.context.cwd);return(await Je.start({configuration:e,json:this.json,stdout:this.context.stdout},async n=>{let s=this.since?await wu.fetchChangedWorkspaces({ref:this.since,project:r}):r.workspaces,o=new Set(s);if(this.recursive)for(let a of[...s].map(l=>l.getRecursiveWorkspaceDependents()))for(let l of a)o.add(l);for(let a of o){let{manifest:l}=a,c;if(this.verbose){let u=new Set,g=new Set;for(let f of At.hardDependencies)for(let[h,p]of l.getForScope(f)){let m=r.tryWorkspaceByDescriptor(p);m===null?r.workspacesByIdent.has(h)&&g.add(p):u.add(m)}c={workspaceDependencies:Array.from(u).map(f=>f.relativeCwd),mismatchedWorkspaceDependencies:Array.from(g).map(f=>P.stringifyDescriptor(f))}}n.reportInfo(null,`${a.relativeCwd}`),n.reportJson(N({location:a.relativeCwd,name:l.name?P.stringifyIdent(l.name):null},c))}})).exitCode()}};Lm.paths=[["workspaces","list"]],Lm.usage=Re.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});var bAe=Lm;var Tm=class extends Le{constructor(){super(...arguments);this.workspaceName=z.String();this.commandName=z.String();this.args=z.Proxy()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd);if(!i)throw new ht(r.cwd,this.context.cwd);let n=r.workspaces,s=new Map(n.map(a=>{let l=P.convertToIdent(a.locator);return[P.stringifyIdent(l),a]})),o=s.get(this.workspaceName);if(o===void 0){let a=Array.from(s.keys()).sort();throw new Pe(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: + - ${a.join(` + - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:o.cwd})}};Tm.paths=[["workspace"]],Tm.usage=Re.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` + This command will run a given sub-command on a single workspace. + `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var QAe=Tm;var Eze={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:Ie.BOOLEAN,default:vAe.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:Ie.STRING,values:["^","~",""],default:ga.CARET}},commands:[Tse,Mse,$oe,uae,Vae,Tae,bae,bAe,Cae,mae,Eae,Iae,Nse,Lse,gae,hae,yae,wae,vae,kae,xae,Dae,Zae,Rae,jae,Kae,Gae,Fae,Yae,qae,Jae,zae,_ae,eAe,tAe,QAe]},Ize=Eze;var gL={};ft(gL,{default:()=>wze});var Ye={optional:!0},SAe=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Ye,zenObservable:Ye}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Ye,zenObservable:Ye}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Ye}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Ye,["postcss-jsx"]:Ye,["postcss-less"]:Ye,["postcss-markdown"]:Ye,["postcss-scss"]:Ye}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Ye}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Ye}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@*",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Ye,"vue-template-compiler":Ye}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Ye,"utf-8-validate":Ye}}],["react-portal@*",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Ye,"vuetify-loader":Ye}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Ye}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Ye}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Ye}}],["consolidate@*",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Ye,tinyliquid:Ye,"liquid-node":Ye,jade:Ye,"then-jade":Ye,dust:Ye,"dustjs-helpers":Ye,"dustjs-linkedin":Ye,swig:Ye,"swig-templates":Ye,"razor-tmpl":Ye,atpl:Ye,liquor:Ye,twig:Ye,ejs:Ye,eco:Ye,jazz:Ye,jqtpl:Ye,hamljs:Ye,hamlet:Ye,whiskers:Ye,"haml-coffee":Ye,"hogan.js":Ye,templayed:Ye,handlebars:Ye,underscore:Ye,lodash:Ye,pug:Ye,"then-pug":Ye,qejs:Ye,walrus:Ye,mustache:Ye,just:Ye,ect:Ye,mote:Ye,toffee:Ye,dot:Ye,"bracket-template":Ye,ractive:Ye,nunjucks:Ye,htmling:Ye,"babel-core":Ye,plates:Ye,"react-dom":Ye,react:Ye,"arc-templates":Ye,vash:Ye,slm:Ye,marko:Ye,teacup:Ye,"coffee-script":Ye,squirrelly:Ye,twing:Ye}}],["vue-loader@<=16.3.1",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"}}],["scss-parser@*",{dependencies:{lodash:"^4.17.21"}}],["query-ast@*",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Ye}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Ye}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Ye,"webpack-command":Ye}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Ye}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Ye}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Ye,jimp:Ye}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Ye,"eslint-import-resolver-typescript":Ye,"eslint-import-resolver-webpack":Ye,"@typescript-eslint/parser":Ye}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Ye}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Ye}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.0"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Ye}}],["@vue/eslint-config-typescript@*",{peerDependenciesMeta:{typescript:Ye}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}]];var lL;function kAe(){return typeof lL=="undefined"&&(lL=require("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),lL}var cL;function xAe(){return typeof cL=="undefined"&&(cL=require("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),cL}var uL;function PAe(){return typeof uL=="undefined"&&(uL=require("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),uL}var DAe=new Map([[P.makeIdent(null,"fsevents").identHash,kAe],[P.makeIdent(null,"resolve").identHash,xAe],[P.makeIdent(null,"typescript").identHash,PAe]]),yze={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,i]of SAe)e(P.parseDescriptor(r,!0),i)},getBuiltinPatch:async(t,e)=>{var s;let r="compat/";if(!e.startsWith(r))return;let i=P.parseIdent(e.slice(r.length)),n=(s=DAe.get(i.identHash))==null?void 0:s();return typeof n!="undefined"?n:null},reduceDependency:async(t,e,r,i)=>typeof DAe.get(t.identHash)=="undefined"?t:P.makeDescriptor(t,P.makeRange({protocol:"patch:",source:P.stringifyDescriptor(t),selector:`~builtin`,params:null}))}},wze=yze;var fL={};ft(fL,{default:()=>bze});var Ab=class extends Le{constructor(){super(...arguments);this.pkg=z.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=z.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=z.String();this.args=z.Proxy()}async execute(){let e=[];this.pkg&&e.push("--package",this.pkg),this.quiet&&e.push("--quiet");let r=P.parseIdent(this.command),i=P.makeIdent(r.scope,`create-${r.name}`);return this.cli.run(["dlx",...e,P.stringifyIdent(i),...this.args])}};Ab.paths=[["create"]];var RAe=Ab;var Om=class extends Le{constructor(){super(...arguments);this.packages=z.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=z.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=z.String();this.args=z.Proxy()}async execute(){return ye.telemetry=null,await K.mktempPromise(async e=>{var p;let r=k.join(e,`dlx-${process.pid}`);await K.mkdirPromise(r),await K.writeFilePromise(k.join(r,"package.json"),`{} +`),await K.writeFilePromise(k.join(r,"yarn.lock"),"");let i=k.join(r,".yarnrc.yml"),n=await ye.findProjectCwd(this.context.cwd,Pt.lockfile),s=!(await ye.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),o=n!==null?k.join(n,".yarnrc.yml"):null;o!==null&&K.existsSync(o)?(await K.copyFilePromise(o,i),await ye.updateConfiguration(r,m=>{let y=te(N({},m),{enableGlobalCache:s,enableTelemetry:!1});return Array.isArray(m.plugins)&&(y.plugins=m.plugins.map(Q=>{let S=typeof Q=="string"?Q:Q.path,x=j.isAbsolute(S)?S:j.resolve(j.fromPortablePath(n),S);return typeof Q=="string"?x:{path:x,spec:Q.spec}})),y})):await K.writeFilePromise(i,`enableGlobalCache: ${s} +enableTelemetry: false +`);let a=(p=this.packages)!=null?p:[this.command],l=P.parseDescriptor(this.command).name,c=await this.cli.run(["add","--",...a],{cwd:r,quiet:this.quiet});if(c!==0)return c;this.quiet||this.context.stdout.write(` +`);let u=await ye.find(r,this.context.plugins),{project:g,workspace:f}=await ze.find(u,r);if(f===null)throw new ht(g.cwd,r);await g.restoreInstallState();let h=await Zt.getWorkspaceAccessibleBinaries(f);return h.has(l)===!1&&h.size===1&&typeof this.packages=="undefined"&&(l=Array.from(h)[0][0]),await Zt.executeWorkspaceAccessibleBinary(f,l,this.args,{packageAccessibleBinaries:h,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};Om.paths=[["dlx"]],Om.usage=Re.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var FAe=Om;var Bze={commands:[RAe,FAe]},bze=Bze;var wL={};ft(wL,{default:()=>Sze,fileUtils:()=>hL});var ih=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,Mm=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Vr="file:";var hL={};ft(hL,{makeArchiveFromLocator:()=>lb,makeBufferFromLocator:()=>CL,makeLocator:()=>dL,makeSpec:()=>NAe,parseSpec:()=>pL});function pL(t){let{params:e,selector:r}=P.parseRange(t),i=j.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?P.parseLocator(e.locator):null,path:i}}function NAe({parentLocator:t,path:e,folderHash:r,protocol:i}){let n=t!==null?{locator:P.stringifyLocator(t)}:{},s=typeof r!="undefined"?{hash:r}:{};return P.makeRange({protocol:i,source:e,selector:e,params:N(N({},s),n)})}function dL(t,{parentLocator:e,path:r,folderHash:i,protocol:n}){return P.makeLocator(t,NAe({parentLocator:e,path:r,folderHash:i,protocol:n}))}async function lb(t,{protocol:e,fetchOptions:r,inMemory:i=!1}){let{parentLocator:n,path:s}=P.parseFileStyleRange(t.reference,{protocol:e}),o=k.isAbsolute(s)?{packageFs:new _t(Me.root),prefixPath:Me.dot,localPath:Me.root}:await r.fetcher.fetch(n,r),a=o.localPath?{packageFs:new _t(Me.root),prefixPath:k.relative(Me.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=k.join(a.prefixPath,s);return await Se.releaseAfterUseAsync(async()=>await wi.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:P.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function CL(t,{protocol:e,fetchOptions:r}){return(await lb(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var mL=class{supports(e,r){return!!e.reference.startsWith(Vr)}getLocalPath(e,r){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:Vr});if(k.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:k.resolve(s,n)}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,N({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${P.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async fetchFromDisk(e,r){return lb(e,{protocol:Vr,fetchOptions:r})}};var Qze=2,EL=class{supportsDescriptor(e,r){return e.range.match(ih)?!0:!!e.range.startsWith(Vr)}supportsLocator(e,r){return!!e.reference.startsWith(Vr)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return ih.test(e.range)&&(e=P.makeDescriptor(e,`${Vr}${e.range}`)),P.bindDescriptor(e,{locator:P.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=pL(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await CL(P.makeLocator(e,P.makeRange({protocol:Vr,source:n,selector:n,params:{locator:P.stringifyLocator(s)}})),{protocol:Vr,fetchOptions:i.fetchOptions}),a=Dn.makeHash(`${Qze}`,o).slice(0,6);return[dL(e,{parentLocator:s,path:n,folderHash:a,protocol:Vr})]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await Se.releaseAfterUseAsync(async()=>await At.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return te(N({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:Qt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var IL=class{supports(e,r){return Mm.test(e.reference)?!!e.reference.startsWith(Vr):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,N({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${P.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromDisk(e,r){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:Vr}),s=k.isAbsolute(n)?{packageFs:new _t(Me.root),prefixPath:Me.dot,localPath:Me.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new _t(Me.root),prefixPath:k.relative(Me.root,s.localPath)}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=k.join(o.prefixPath,n),c=await a.readFilePromise(l);return await Se.releaseAfterUseAsync(async()=>await wi.convertToZip(c,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1}),o.releaseFs)}};var yL=class{supportsDescriptor(e,r){return Mm.test(e.range)?!!(e.range.startsWith(Vr)||ih.test(e.range)):!1}supportsLocator(e,r){return Mm.test(e.reference)?!!e.reference.startsWith(Vr):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return ih.test(e.range)&&(e=P.makeDescriptor(e,`${Vr}${e.range}`)),P.bindDescriptor(e,{locator:P.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range;return n.startsWith(Vr)&&(n=n.slice(Vr.length)),[P.makeLocator(e,`${Vr}${j.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await Se.releaseAfterUseAsync(async()=>await At.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return te(N({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:Qt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var vze={fetchers:[IL,mL],resolvers:[yL,EL]},Sze=vze;var bL={};ft(bL,{default:()=>Pze});var LAe=ge(require("querystring")),TAe=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function OAe(t){return t?TAe.some(e=>!!t.match(e)):!1}function MAe(t){let e;for(let a of TAe)if(e=t.match(a),e)break;if(!e)throw new Error(kze(t));let[,r,i,n,s="master"]=e,{commit:o}=LAe.default.parse(s);return s=o||s.replace(/[^:]*:/,""),{auth:r,username:i,reponame:n,treeish:s}}function kze(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var BL=class{supports(e,r){return!!OAe(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,N({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${P.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await ir.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await K.mktempPromise(async n=>{let s=new _t(n);await wi.extractArchiveTo(i,s,{stripComponents:1});let o=wu.splitRepoUrl(e.reference),a=k.join(n,"package.tgz");await Zt.prepareExternalProject(n,a,{configuration:r.project.configuration,report:r.report,workspace:o.extra.workspace,locator:e});let l=await K.readFilePromise(a);return await wi.convertToZip(l,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:i,username:n,reponame:s,treeish:o}=MAe(e.reference);return`https://${i?`${i}@`:""}github.com/${n}/${s}/archive/${o}.tar.gz`}};var xze={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let i=new BL;if(!i.supports(e,r))return null;try{return await i.fetch(e,r)}catch(n){return null}}}},Pze=xze;var SL={};ft(SL,{default:()=>Rze});var Um=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,Km=/^https?:/;var QL=class{supports(e,r){return Um.test(e.reference)?!!Km.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,N({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${P.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await ir.get(e.reference,{configuration:r.project.configuration});return await wi.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}};var vL=class{supportsDescriptor(e,r){return Um.test(e.range)?!!Km.test(e.range):!1}supportsLocator(e,r){return Um.test(e.reference)?!!Km.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[P.convertDescriptorToLocator(e)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await Se.releaseAfterUseAsync(async()=>await At.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return te(N({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:Qt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var Dze={fetchers:[QL],resolvers:[vL]},Rze=Dze;var DL={};ft(DL,{default:()=>F4e});var ule=ge(cle()),PL=ge(require("util")),Hm=class extends Le{constructor(){super(...arguments);this.private=z.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=z.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=z.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=z.Boolean("-2",!1,{hidden:!0});this.yes=z.Boolean("-y,--yes",{hidden:!0});this.assumeFreshProject=z.Boolean("--assume-fresh-project",!1,{hidden:!0})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),r=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return r!==null?await this.executeProxy(e,r):await this.executeRegular(e)}async executeProxy(e,r){if(e.projectCwd!==null&&e.projectCwd!==this.context.cwd)throw new Pe("Cannot use the --install flag from within a project subdirectory");K.existsSync(this.context.cwd)||await K.mkdirPromise(this.context.cwd,{recursive:!0});let i=k.join(this.context.cwd,e.get("lockfileFilename"));K.existsSync(i)||await K.writeFilePromise(i,"");let n=await this.cli.run(["set","version",r],{quiet:!0});if(n!==0)return n;let s=[];return this.private&&s.push("-p"),this.workspace&&s.push("-w"),this.yes&&s.push("-y"),await K.mktempPromise(async o=>{let{code:a}=await Fr.pipevp("yarn",["init",...s],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Zt.makeScriptEnv({binFolder:o})});return a})}async executeRegular(e){var l;let r=null;try{r=(await ze.find(e,this.context.cwd)).project}catch{r=null}K.existsSync(this.context.cwd)||await K.mkdirPromise(this.context.cwd,{recursive:!0});let i=await At.tryFind(this.context.cwd)||new At,n=Object.fromEntries(e.get("initFields").entries());i.load(n),i.name=(l=i.name)!=null?l:P.makeIdent(e.get("initScope"),k.basename(this.context.cwd)),i.packageManager=Ur&&Se.isTaggedYarnVersion(Ur)?`yarn@${Ur}`:null,typeof i.raw.private=="undefined"&&(this.private||this.workspace&&i.workspaceDefinitions.length===0)&&(i.private=!0),this.workspace&&i.workspaceDefinitions.length===0&&(await K.mkdirPromise(k.join(this.context.cwd,"packages"),{recursive:!0}),i.workspaceDefinitions=[{pattern:"packages/*"}]);let s={};i.exportTo(s),PL.inspect.styles.name="cyan",this.context.stdout.write(`${(0,PL.inspect)(s,{depth:Infinity,colors:!0,compact:!1})} +`);let o=k.join(this.context.cwd,At.fileName);await K.changeFilePromise(o,`${JSON.stringify(s,null,2)} +`,{automaticNewlines:!0});let a=k.join(this.context.cwd,"README.md");if(K.existsSync(a)||await K.writeFilePromise(a,`# ${P.stringifyIdent(i.name)} +`),!r||r.cwd===this.context.cwd){let c=k.join(this.context.cwd,Pt.lockfile);K.existsSync(c)||await K.writeFilePromise(c,"");let g=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!.yarn/cache","#.pnp.*"].map(y=>`${y} +`).join(""),f=k.join(this.context.cwd,".gitignore");K.existsSync(f)||await K.writeFilePromise(f,g);let h={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,ule.default)(h,e.get("initEditorConfig"));let p=`root = true +`;for(let[y,Q]of Object.entries(h)){p+=` +[${y}] +`;for(let[S,x]of Object.entries(Q))p+=`${S.replace(/[A-Z]/g,Y=>`_${Y.toLowerCase()}`)} = ${x} +`}let m=k.join(this.context.cwd,".editorconfig");K.existsSync(m)||await K.writeFilePromise(m,p),K.existsSync(k.join(this.context.cwd,".git"))||await Fr.execvp("git",["init"],{cwd:this.context.cwd})}}};Hm.paths=[["init"]],Hm.usage=Re.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var gle=Hm;var R4e={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:Ie.STRING,default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:Ie.MAP,valueDefinition:{description:"",type:Ie.ANY}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:Ie.MAP,valueDefinition:{description:"",type:Ie.ANY}}},commands:[gle]},F4e=R4e;var TL={};ft(TL,{default:()=>L4e});var mA="portal:",EA="link:";var RL=class{supports(e,r){return!!e.reference.startsWith(mA)}getLocalPath(e,r){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:mA});if(k.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:k.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:mA}),s=k.isAbsolute(n)?{packageFs:new _t(Me.root),prefixPath:Me.dot,localPath:Me.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new _t(Me.root),prefixPath:k.relative(Me.root,s.localPath),localPath:Me.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=k.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new _t(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Me.dot,localPath:l}:{packageFs:new Da(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Me.dot}}};var FL=class{supportsDescriptor(e,r){return!!e.range.startsWith(mA)}supportsLocator(e,r){return!!e.reference.startsWith(mA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return P.bindDescriptor(e,{locator:P.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(mA.length);return[P.makeLocator(e,`${mA}${j.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await Se.releaseAfterUseAsync(async()=>await At.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return te(N({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:Qt.SOFT,conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var NL=class{supports(e,r){return!!e.reference.startsWith(EA)}getLocalPath(e,r){let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:EA});if(k.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:k.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=P.parseFileStyleRange(e.reference,{protocol:EA}),s=k.isAbsolute(n)?{packageFs:new _t(Me.root),prefixPath:Me.dot,localPath:Me.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new _t(Me.root),prefixPath:k.relative(Me.root,s.localPath),localPath:Me.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=k.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new _t(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Me.dot,discardFromLookup:!0,localPath:l}:{packageFs:new Da(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Me.dot,discardFromLookup:!0}}};var LL=class{supportsDescriptor(e,r){return!!e.range.startsWith(EA)}supportsLocator(e,r){return!!e.reference.startsWith(EA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return P.bindDescriptor(e,{locator:P.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(EA.length);return[P.makeLocator(e,`${EA}${j.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){return te(N({},e),{version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:Qt.SOFT,conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map})}};var N4e={fetchers:[NL,RL],resolvers:[LL,FL]},L4e=N4e;var gT={};ft(gT,{default:()=>Y_e});var ls;(function(i){i[i.REGULAR=0]="REGULAR",i[i.WORKSPACE=1]="WORKSPACE",i[i.EXTERNAL_SOFT_LINK=2]="EXTERNAL_SOFT_LINK"})(ls||(ls={}));var IA;(function(i){i[i.YES=0]="YES",i[i.NO=1]="NO",i[i.DEPENDS=2]="DEPENDS"})(IA||(IA={}));var OL=(t,e)=>`${t}@${e}`,fle=(t,e)=>{let r=e.indexOf("#"),i=r>=0?e.substring(r+1):e;return OL(t,i)},Eo;(function(s){s[s.NONE=-1]="NONE",s[s.PERF=0]="PERF",s[s.CHECK=1]="CHECK",s[s.REASONS=2]="REASONS",s[s.INTENSIVE_CHECK=9]="INTENSIVE_CHECK"})(Eo||(Eo={}));var ple=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),i=e.check||r>=9,n=e.hoistingLimits||new Map,s={check:i,debugLevel:r,hoistingLimits:n,fastLookupPossible:!0},o;s.debugLevel>=0&&(o=Date.now());let a=T4e(t,s),l=!1,c=0;do l=ML(a,[a],new Set([a.locator]),new Map,s).anotherRoundNeeded,s.fastLookupPossible=!1,c++;while(l);if(s.debugLevel>=0&&console.log(`hoist time: ${Date.now()-o}ms, rounds: ${c}`),s.debugLevel>=1){let u=jm(a);if(ML(a,[a],new Set([a.locator]),new Map,s).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: +${u}, next tree: +${jm(a)}`);let f=hle(a);if(f)throw new Error(`${f}, after hoisting finished: +${jm(a)}`)}return s.debugLevel>=2&&console.log(jm(a)),O4e(a)},M4e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())r.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),r},U4e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of t)u=g.dependencies.get(c.name),u&&r.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),r},dle=(t,e)=>{if(e.decoupled)return e;let{name:r,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,dependencyKind:h,hoistedFrom:p,hoistedTo:m}=e,y={name:r,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,dependencyKind:h,hoistedFrom:new Map(p),hoistedTo:new Map(m)},Q=y.dependencies.get(r);return Q&&Q.ident==y.ident&&y.dependencies.set(r,y),t.dependencies.set(y.name,y),y},K4e=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let n of t.dependencies.values())t.peerNames.has(n.name)||r.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!t.peerNames.has(s)){let a=r.get(s);a||(a=[],r.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return r},UL=t=>{let e=new Set,r=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!t.peerNames.has(s)){let o=t.dependencies.get(s);o&&!e.has(o)&&r(o,n)}e.add(i)}};for(let i of t.dependencies.values())t.peerNames.has(i.name)||r(i);return e},ML=(t,e,r,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=j4e(o),l=K4e(o,a),c=t==o?new Map:n.fastLookupPossible?M4e(e):U4e(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([m,y])=>[m,y[0]])),p=new Map;do{let m=H4e(t,e,r,c,h,l,i,p,n);m.isGraphChanged&&(f=!0),m.anotherRoundNeeded&&(g=!0),u=!1;for(let[y,Q]of l)Q.length>1&&!o.dependencies.has(y)&&(h.delete(y),Q.shift(),h.set(y,Q[0]),u=!0)}while(u);for(let m of o.dependencies.values())if(!o.peerNames.has(m.name)&&!r.has(m.locator)){r.add(m.locator);let y=ML(t,[...e,m],r,p,n);y.isGraphChanged&&(f=!0),y.anotherRoundNeeded&&(g=!0),r.delete(m.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},G4e=(t,e,r,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(y=>Ni(y)).join("\u2192")}`);let h=r[r.length-1],m=!(i.ident===h.ident);if(l&&!m&&(g="- self-reference"),m&&(m=i.dependencyKind!==1,l&&!m&&(g="- workspace")),m&&(m=i.dependencyKind!==2||i.dependencies.size===0,l&&!m&&(g="- external soft link with unhoisted dependencies")),m&&(m=h.dependencyKind!==1||h.hoistedFrom.has(i.name)||e.size===1,l&&!m&&(g=h.reasons.get(i.name))),m&&(m=!t.peerNames.has(i.name),l&&!m&&(g=`- cannot shadow peer: ${Ni(t.originalDependencies.get(i.name).locator)} at ${u}`)),m){let y=!1,Q=n.get(i.name);if(y=!Q||Q.ident===i.ident,l&&!y&&(g=`- filled by: ${Ni(Q.locator)} at ${u}`),y)for(let S=r.length-1;S>=1;S--){let M=r[S].dependencies.get(i.name);if(M&&M.ident!==i.ident){y=!1;let Y=a.get(h);Y||(Y=new Set,a.set(h,Y)),Y.add(i.name),l&&(g=`- filled by ${Ni(M.locator)} at ${r.slice(0,S).map(U=>Ni(U.locator)).join("\u2192")}`);break}}m=y}if(m&&(m=s.get(i.name)===i.ident,l&&!m&&(g=`- filled by: ${Ni(o.get(i.name)[0])} at ${u}`)),m){let y=!0,Q=new Set(i.peerNames);for(let S=r.length-1;S>=1;S--){let x=r[S];for(let M of Q){if(x.peerNames.has(M)&&x.originalDependencies.has(M))continue;let Y=x.dependencies.get(M);Y&&t.dependencies.get(M)!==Y&&(S===r.length-1?f.add(Y):(f=null,y=!1,l&&(g=`- peer dependency ${Ni(Y.locator)} from parent ${Ni(x.locator)} was not hoisted to ${u}`))),Q.delete(M)}if(!y)break}m=y}if(m&&!c)for(let y of i.hoistedDependencies.values()){let Q=n.get(y.name);if(!Q||y.ident!==Q.ident){m=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${Ni(y.locator)}, available: ${Ni(Q==null?void 0:Q.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:m?0:1,reason:g}},H4e=(t,e,r,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(y,Q,S,x)=>{if(u.has(S))return;let M=[...Q,S.locator],Y=new Map,U=new Map;for(let Z of UL(S)){let A=G4e(c,r,[c,...y,S],Z,i,n,s,a,{outputReason:l.debugLevel>=2,fastLookupPossible:l.fastLookupPossible});if(U.set(Z,A),A.isHoistable===2)for(let ne of A.dependsOn){let le=Y.get(ne.name)||new Set;le.add(Z.name),Y.set(ne.name,le)}}let J=new Set,W=(Z,A,ne)=>{if(!J.has(Z)){J.add(Z),U.set(Z,{isHoistable:1,reason:ne});for(let le of Y.get(Z.name)||[])W(S.dependencies.get(le),A,l.debugLevel>=2?`- peer dependency ${Ni(Z.locator)} from parent ${Ni(S.locator)} was not hoisted`:"")}};for(let[Z,A]of U)A.isHoistable===1&&W(Z,A,A.reason);for(let Z of U.keys())if(!J.has(Z)){f=!0;let A=o.get(S);A&&A.has(Z.name)&&(g=!0),S.dependencies.delete(Z.name),S.hoistedDependencies.set(Z.name,Z),S.reasons.delete(Z.name);let ne=c.dependencies.get(Z.name);if(l.debugLevel>=2){let le=Array.from(Q).concat([S.locator]).map(T=>Ni(T)).join("\u2192"),Ae=c.hoistedFrom.get(Z.name);Ae||(Ae=[],c.hoistedFrom.set(Z.name,Ae)),Ae.push(le),S.hoistedTo.set(Z.name,Array.from(e).map(T=>Ni(T.locator)).join("\u2192"))}if(!ne)c.ident!==Z.ident&&(c.dependencies.set(Z.name,Z),x.add(Z));else for(let le of Z.references)ne.references.add(le)}if(l.check){let Z=hle(t);if(Z)throw new Error(`${Z}, after hoisting dependencies of ${[c,...y,S].map(A=>Ni(A.locator)).join("\u2192")}: +${jm(t)}`)}let ee=UL(S);for(let Z of ee)if(J.has(Z)){let A=U.get(Z);if((n.get(Z.name)===Z.ident||!S.reasons.has(Z.name))&&A.isHoistable!==0&&S.reasons.set(Z.name,A.reason),!Z.isHoistBorder&&M.indexOf(Z.locator)<0){u.add(S);let le=dle(S,Z);h([...y,S],[...Q,S.locator],le,m),u.delete(S)}}},p,m=new Set(UL(c));do{p=m,m=new Set;for(let y of p){if(y.locator===c.locator||y.isHoistBorder)continue;let Q=dle(c,y);h([],Array.from(r),Q,m)}}while(m.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},hle=t=>{let e=[],r=new Set,i=new Set,n=(s,o,a)=>{if(r.has(s)||(r.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>Ni(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,m=`${h?` hoisted to ${h}`:""}`,y=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${y} - broken require promise for ${c.name}${m}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${y} - broken require promise: no required dependency ${c.name}${m} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(t,t.dependencies,t),e.join(` +`)},T4e=(t,e)=>{let{identName:r,name:i,reference:n,peerNames:s}=t,o={name:i,references:new Set([n]),locator:OL(r,n),ident:fle(r,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[t,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:m,peerNames:y,hoistPriority:Q,dependencyKind:S}=c,x=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([m]),locator:OL(p,m),ident:fle(p,m),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(y),reasons:new Map,decoupled:!0,isHoistBorder:x?x.has(h):!1,hoistPriority:Q||0,dependencyKind:S||0,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=m=>{if(!h.has(m)){h.add(m),m.decoupled=!1;for(let y of m.dependencies.values())m.peerNames.has(y.name)||p(y)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of t.dependencies)l(c,o);return o},KL=t=>t.substring(0,t.indexOf("@",1)),O4e=t=>{let e={name:t.name,identName:KL(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),i=(n,s,o)=>{let a=r.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:KL(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){r.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);r.delete(n)}};for(let n of t.dependencies.values())i(n,t,e);return e},j4e=t=>{let e=new Map,r=new Set([t]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!r.has(a);if(n(a).dependents.add(o.ident),!l){r.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||s(t,o);return e},Ni=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let i=t.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(r=`v:${r}`),n.startsWith("workspace")&&(r=`w:${r}`,n=""),`${r}${n?`@${n}`:""}`}else return`${r}`},Cle=5e4,jm=t=>{let e=0,r=(n,s,o="")=>{if(e>Cle||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name===u.name?0:c.name>u.name?1:-1),l="";s.add(n);for(let c=0;c":"")+(f!==u.name?`a:${u.name}:`:"")+Ni(u.locator)+(g?` ${g}`:"")+(u!==n&&h.length>0?`, hoisted from: ${h.join(", ")}`:"")} +`,l+=r(u,s,`${o}${cCle?` +Tree is too large, part of the tree has been dunped +`:"")};var Io;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Io||(Io={}));var Mn;(function(i){i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none"})(Mn||(Mn={}));var mle="node_modules",Bu="$wsroot$";var Gm=(t,e)=>{let{packageTree:r,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=Y4e(t,e),o=null;if(n.length===0){let a=ple(r,{hoistingLimits:i});o=q4e(t,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},fa=t=>`${t.name}@${t.reference}`,HL=t=>{let e=new Map;for(let[r,i]of t.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((i,n)=>{let s=i.split(k.delimiter).length,o=n.split(k.delimiter).length;return n===i?0:s!==o?o-s:n>i?1:-1});return e},Ele=(t,e)=>{let r=P.isVirtualLocator(t)?P.devirtualizeLocator(t):t,i=P.isVirtualLocator(e)?P.devirtualizeLocator(e):e;return P.areLocatorsEqual(r,i)},jL=(t,e,r,i)=>{if(t.linkType!==Io.SOFT)return!1;let n=j.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return k.contains(i,n)===null},J4e=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=j.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=t.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=fa(f);if(l.has(p))return;l.add(p);let m=t.getPackageInformation(f);if(m){let y=h?fa(h):"";if(fa(f)!==y&&m.linkType===Io.SOFT&&!jL(m,f,t,i)){let Q=Ile(m,f,t);(!a.get(Q)||f.reference.startsWith("workspace:"))&&a.set(Q,f)}for(let[Q,S]of m.packageDependencies)S!==null&&(m.packagePeers.has(Q)||c(t.getLocator(Q,S),f))}};for(let f of o)c(f,null);let u=i.split(k.sep);for(let f of a.values()){let h=t.getPackageInformation(f),m=j.toPortablePath(h.packageLocation.slice(0,-1)).split(k.sep).slice(u.length),y=s;for(let Q of m){let S=y.children.get(Q);S||(S={children:new Map},y.children.set(Q,S)),y=S}y.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=fa(h),m=n.get(p);m||(m=new Set,n.set(p,m)),m.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},Y4e=(t,e)=>{let r=[],i=!1,n=new Map,s=J4e(t),o=t.getPackageInformation(t.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=t.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=j.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,dependencyKind:ls.WORKSPACE},u=new Map,g=(h,p)=>`${fa(p)}:${h}`,f=(h,p,m,y,Q,S,x,M)=>{var Ae,T;let Y=g(h,m),U=u.get(Y),J=!!U;!J&&m.name===a.name&&m.reference===a.reference&&(U=c,u.set(Y,c));let W=jL(p,m,t,l);if(!U){let L=ls.REGULAR;W?L=ls.EXTERNAL_SOFT_LINK:p.linkType===Io.SOFT&&m.name.endsWith(Bu)&&(L=ls.WORKSPACE),U={name:h,identName:m.name,reference:m.reference,dependencies:new Set,peerNames:L===ls.WORKSPACE?new Set:p.packagePeers,dependencyKind:L},u.set(Y,U)}let ee;if(W?ee=2:Q.linkType===Io.SOFT?ee=1:ee=0,U.hoistPriority=Math.max(U.hoistPriority||0,ee),M&&!W){let L=fa({name:y.identName,reference:y.reference}),Ee=n.get(L)||new Set;n.set(L,Ee),Ee.add(U.name)}let Z=new Map(p.packageDependencies);if(e.project){let L=e.project.workspacesByCwd.get(j.toPortablePath(p.packageLocation.slice(0,-1)));if(L){let Ee=new Set([...Array.from(L.manifest.peerDependencies.values(),we=>P.stringifyIdent(we)),...Array.from(L.manifest.peerDependenciesMeta.keys())]);for(let we of Ee)Z.has(we)||(Z.set(we,S.get(we)||null),U.peerNames.add(we))}}let A=fa({name:m.name.replace(Bu,""),reference:m.reference}),ne=s.get(A);if(ne)for(let L of ne)Z.set(`${L.name}${Bu}`,L.reference);(p!==Q||p.linkType!==Io.SOFT||!e.selfReferencesByCwd||e.selfReferencesByCwd.get(x))&&y.dependencies.add(U);let le=m!==a&&p.linkType===Io.SOFT&&!m.name.endsWith(Bu)&&!W;if(!J&&!le){let L=new Map;for(let[Ee,we]of Z)if(we!==null){let qe=t.getLocator(Ee,we),re=t.getLocator(Ee.replace(Bu,""),we),se=t.getPackageInformation(re);if(se===null)throw new Error("Assertion failed: Expected the package to have been registered");let Qe=jL(se,qe,t,l);if(e.validateExternalSoftLinks&&e.project&&Qe){se.packageDependencies.size>0&&(i=!0);for(let[ve,pe]of se.packageDependencies)if(pe!==null){let X=P.parseLocator(Array.isArray(pe)?`${pe[0]}@${pe[1]}`:`${ve}@${pe}`);if(fa(X)!==fa(qe)){let be=Z.get(ve);if(be){let ce=P.parseLocator(Array.isArray(be)?`${be[0]}@${be[1]}`:`${ve}@${be}`);Ele(ce,X)||r.push({messageName:$.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${P.prettyIdent(e.project.configuration,P.parseIdent(qe.name))} into ${P.prettyLocator(e.project.configuration,P.parseLocator(`${m.name}@${m.reference}`))} dependency ${P.prettyLocator(e.project.configuration,X)} conflicts with parent dependency ${P.prettyLocator(e.project.configuration,ce)}`})}else{let ce=L.get(ve);if(ce){let fe=ce.target,gt=P.parseLocator(Array.isArray(fe)?`${fe[0]}@${fe[1]}`:`${ve}@${fe}`);Ele(gt,X)||r.push({messageName:$.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${P.prettyIdent(e.project.configuration,P.parseIdent(qe.name))} into ${P.prettyLocator(e.project.configuration,P.parseLocator(`${m.name}@${m.reference}`))} dependency ${P.prettyLocator(e.project.configuration,X)} conflicts with dependency ${P.prettyLocator(e.project.configuration,gt)} from sibling portal ${P.prettyIdent(e.project.configuration,P.parseIdent(ce.portal.name))}`})}else L.set(ve,{target:X.reference,portal:qe})}}}}let he=(Ae=e.hoistingLimitsByCwd)==null?void 0:Ae.get(x),Fe=Qe?x:k.relative(l,j.toPortablePath(se.packageLocation))||Me.dot,Ue=(T=e.hoistingLimitsByCwd)==null?void 0:T.get(Fe),xe=he===Mn.DEPENDENCIES||Ue===Mn.DEPENDENCIES||Ue===Mn.WORKSPACES;f(Ee,se,qe,U,p,Z,Fe,xe)}}};return f(a.name,o,a,c,o,o.packageDependencies,Me.dot,!1),{packageTree:c,hoistingLimits:n,errors:r,preserveSymlinksRequired:i}};function Ile(t,e,r){let i=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return j.toPortablePath(i||t.packageLocation)}function W4e(t,e,r){let i=e.getLocator(t.name.replace(Bu,""),t.reference),n=e.getPackageInformation(i);if(n===null)throw new Error("Assertion failed: Expected the package to be registered");let s,o;return r.pnpifyFs?(o=j.toPortablePath(n.packageLocation),s=Io.SOFT):(o=Ile(n,t,e),s=n.linkType),{linkType:s,target:o}}var q4e=(t,e,r)=>{let i=new Map,n=(u,g,f)=>{let{linkType:h,target:p}=W4e(u,t,r);return{locator:fa(u),nodePath:g,target:p,linkType:h,aliases:f}},s=u=>{let[g,f]=u.split("/");return f?{scope:qr(g),name:qr(f)}:{scope:null,name:qr(g)}},o=new Set,a=(u,g,f)=>{if(!o.has(u)){o.add(u);for(let h of u.dependencies){if(h===u)continue;let p=Array.from(h.references).sort(),m={name:h.identName,reference:p[0]},{name:y,scope:Q}=s(h.name),S=Q?[Q,y]:[y],x=k.join(g,mle),M=k.join(x,...S),Y=`${f}/${m.name}`,U=n(m,f,p.slice(1)),J=!1;if(U.linkType===Io.SOFT&&r.project){let W=r.project.workspacesByCwd.get(U.target.slice(0,-1));J=!!(W&&!W.manifest.name)}if(!h.name.endsWith(Bu)&&!J){let W=i.get(M);if(W){if(W.dirList)throw new Error(`Assertion failed: ${M} cannot merge dir node with leaf node`);{let ne=P.parseLocator(W.locator),le=P.parseLocator(U.locator);if(W.linkType!==U.linkType)throw new Error(`Assertion failed: ${M} cannot merge nodes with different link types ${W.nodePath}/${P.stringifyLocator(ne)} and ${f}/${P.stringifyLocator(le)}`);if(ne.identHash!==le.identHash)throw new Error(`Assertion failed: ${M} cannot merge nodes with different idents ${W.nodePath}/${P.stringifyLocator(ne)} and ${f}/s${P.stringifyLocator(le)}`);U.aliases=[...U.aliases,...W.aliases,P.parseLocator(W.locator).reference]}}i.set(M,U);let ee=M.split("/"),Z=ee.indexOf(mle),A=ee.length-1;for(;Z>=0&&A>Z;){let ne=j.toPortablePath(ee.slice(0,A).join(k.sep)),le=qr(ee[A]),Ae=i.get(ne);if(!Ae)i.set(ne,{dirList:new Set([le])});else if(Ae.dirList){if(Ae.dirList.has(le))break;Ae.dirList.add(le)}A--}}a(h,U.linkType===Io.SOFT?U.target:M,Y)}}},l=n({name:e.name,reference:Array.from(e.references)[0]},"",[]),c=l.target;return i.set(c,l),a(e,c,""),i};var eT={};ft(eT,{PnpInstaller:()=>sh,PnpLinker:()=>Qu,default:()=>m_e,getPnpPath:()=>Pl,jsInstallUtils:()=>wo,pnpUtils:()=>ZL,quotePathIfNeeded:()=>Jle});var Yle=ge(ti()),qle=ge(require("url"));var yle;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(yle||(yle={}));var er;(function(f){f.DEFAULT="DEFAULT",f.TOP_LEVEL="TOP_LEVEL",f.FALLBACK_EXCLUSION_LIST="FALLBACK_EXCLUSION_LIST",f.FALLBACK_EXCLUSION_ENTRIES="FALLBACK_EXCLUSION_ENTRIES",f.FALLBACK_EXCLUSION_DATA="FALLBACK_EXCLUSION_DATA",f.PACKAGE_REGISTRY_DATA="PACKAGE_REGISTRY_DATA",f.PACKAGE_REGISTRY_ENTRIES="PACKAGE_REGISTRY_ENTRIES",f.PACKAGE_STORE_DATA="PACKAGE_STORE_DATA",f.PACKAGE_STORE_ENTRIES="PACKAGE_STORE_ENTRIES",f.PACKAGE_INFORMATION_DATA="PACKAGE_INFORMATION_DATA",f.PACKAGE_DEPENDENCIES="PACKAGE_DEPENDENCIES",f.PACKAGE_DEPENDENCY="PACKAGE_DEPENDENCY"})(er||(er={}));var wle={[er.DEFAULT]:{collapsed:!1,next:{["*"]:er.DEFAULT}},[er.TOP_LEVEL]:{collapsed:!1,next:{fallbackExclusionList:er.FALLBACK_EXCLUSION_LIST,packageRegistryData:er.PACKAGE_REGISTRY_DATA,["*"]:er.DEFAULT}},[er.FALLBACK_EXCLUSION_LIST]:{collapsed:!1,next:{["*"]:er.FALLBACK_EXCLUSION_ENTRIES}},[er.FALLBACK_EXCLUSION_ENTRIES]:{collapsed:!0,next:{["*"]:er.FALLBACK_EXCLUSION_DATA}},[er.FALLBACK_EXCLUSION_DATA]:{collapsed:!0,next:{["*"]:er.DEFAULT}},[er.PACKAGE_REGISTRY_DATA]:{collapsed:!1,next:{["*"]:er.PACKAGE_REGISTRY_ENTRIES}},[er.PACKAGE_REGISTRY_ENTRIES]:{collapsed:!0,next:{["*"]:er.PACKAGE_STORE_DATA}},[er.PACKAGE_STORE_DATA]:{collapsed:!1,next:{["*"]:er.PACKAGE_STORE_ENTRIES}},[er.PACKAGE_STORE_ENTRIES]:{collapsed:!0,next:{["*"]:er.PACKAGE_INFORMATION_DATA}},[er.PACKAGE_INFORMATION_DATA]:{collapsed:!1,next:{packageDependencies:er.PACKAGE_DEPENDENCIES,["*"]:er.DEFAULT}},[er.PACKAGE_DEPENDENCIES]:{collapsed:!1,next:{["*"]:er.PACKAGE_DEPENDENCY}},[er.PACKAGE_DEPENDENCY]:{collapsed:!0,next:{["*"]:er.DEFAULT}}};function z4e(t,e,r){let i="";i+="[";for(let n=0,s=t.length;ns(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function Z4e(t){let e=new Map,r=Ym(t.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of r){let s=e.get(i);typeof s=="undefined"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function $4e(t){return Ym(t.fallbackPool||[],([e])=>e)}function e_e(t){let e=[];for(let[r,i]of Ym(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([r,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of Ym(i,([g])=>g===null?"0":`1${g}`)){let g=[];r!==null&&s!==null&&!a.has(r)&&g.push([r,s]);for(let[p,m]of Ym(a.entries(),([y])=>y))g.push([p,m]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function qm(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:Z4e(t),fallbackPool:$4e(t),packageRegistryData:e_e(t)}}var Sle=ge(vle());function kle(t,e){return[t?`${t} +`:"",`/* eslint-disable */ + +`,`try { +`,` Object.freeze({}).detectStrictMode = true; +`,`} catch (error) { +`," throw new Error(`The whole PnP file got strict-mode-ified, which is known to break (Emscripten libraries aren't strict mode). This usually happens when the file goes through Babel.`);\n",`} +`,` +`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { +`,e.replace(/^/gm," "),`} +`,` +`,(0,Sle.default)()].join("")}function t_e(t){return JSON.stringify(t,null,2)}function r_e(t){return`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ +`)}'`}function i_e(t){return[`return hydrateRuntimeState(JSON.parse(${r_e(ble(t))}), {basePath: basePath || __dirname}); +`].join("")}function n_e(t){return[`var path = require('path'); +`,`var dataLocation = path.resolve(__dirname, ${JSON.stringify(t)}); +`,`return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)}); +`].join("")}function xle(t){let e=qm(t),r=i_e(e);return kle(t.shebang,r)}function Ple(t){let e=qm(t),r=n_e(t.dataLocation),i=kle(t.shebang,r);return{dataFile:t_e(e),loaderFile:i}}var Lle=ge(require("fs")),u_e=ge(require("path")),Tle=ge(require("util"));function YL(t,{basePath:e}){let r=j.toPortablePath(e),i=k.resolve(r),n=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,s=new Map,o=new Map(t.packageRegistryData.map(([g,f])=>[g,new Map(f.map(([h,p])=>{var x;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let m=(x=p.discardFromLookup)!=null?x:!1,y={name:g,reference:h},Q=s.get(p.packageLocation);Q?(Q.discardFromLookup=Q.discardFromLookup&&m,m||(Q.locator=y)):s.set(p.packageLocation,{locator:y,discardFromLookup:m});let S=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:m,get packageLocation(){return S||(S=k.join(i,p.packageLocation))}}]}))])),a=new Map(t.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(t.fallbackPool),c=t.dependencyTreeRoots,u=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var Jm=ge(require("module")),Nle=ge(Rle()),JL=ge(require("util"));var ur;(function(c){c.API_ERROR="API_ERROR",c.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",c.EXPORTS_RESOLUTION_FAILED="EXPORTS_RESOLUTION_FAILED",c.MISSING_DEPENDENCY="MISSING_DEPENDENCY",c.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",c.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",c.INTERNAL="INTERNAL",c.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",c.UNSUPPORTED="UNSUPPORTED"})(ur||(ur={}));var a_e=new Set([ur.BUILTIN_NODE_RESOLUTION_FAILED,ur.MISSING_DEPENDENCY,ur.MISSING_PEER_DEPENDENCY,ur.QUALIFIED_PATH_RESOLUTION_FAILED,ur.UNDECLARED_DEPENDENCY]);function oi(t,e,r={},i){i!=null||(i=a_e.has(t)?"MODULE_NOT_FOUND":t);let n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:te(N({},n),{value:i}),pnpCode:te(N({},n),{value:t}),data:te(N({},n),{value:r})})}function yo(t){return j.normalize(j.fromPortablePath(t))}var A_e=ge(require("fs")),Fle=ge(require("module")),l_e=ge(require("path")),c_e=new Set(Fle.Module.builtinModules||Object.keys(process.binding("natives"))),ub=t=>t.startsWith("node:")||c_e.has(t);function WL(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,s=/^(\/|\.{1,2}(\/|$))/,o=/\/$/,a=/^\.{0,2}\//,l={name:null,reference:null},c=[],u=new Set;if(t.enableTopLevelFallback===!0&&c.push(l),e.compatibilityMode!==!1)for(let re of["react-scripts","gatsby"]){let se=t.packageRegistry.get(re);if(se)for(let Qe of se.keys()){if(Qe===null)throw new Error("Assertion failed: This reference shouldn't be null");c.push({name:re,reference:Qe})}}let{ignorePattern:g,packageRegistry:f,packageLocatorsByLocations:h}=t;function p(re,se){return{fn:re,args:se,error:null,result:null}}function m(re){var Ue,xe,ve,pe,X,be;let se=(ve=(xe=(Ue=process.stderr)==null?void 0:Ue.hasColors)==null?void 0:xe.call(Ue))!=null?ve:process.stdout.isTTY,Qe=(ce,fe)=>`[${ce}m${fe}`,he=re.error;console.error(he?Qe("31;1",`\u2716 ${(pe=re.error)==null?void 0:pe.message.replace(/\n.*/s,"")}`):Qe("33;1","\u203C Resolution")),re.args.length>0&&console.error();for(let ce of re.args)console.error(` ${Qe("37;1","In \u2190")} ${(0,JL.inspect)(ce,{colors:se,compact:!0})}`);re.result&&(console.error(),console.error(` ${Qe("37;1","Out \u2192")} ${(0,JL.inspect)(re.result,{colors:se,compact:!0})}`));let Fe=(be=(X=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:X.slice(2))!=null?be:[];if(Fe.length>0){console.error();for(let ce of Fe)console.error(` ${Qe("38;5;244",ce)}`)}console.error()}function y(re,se){if(e.allowDebug===!1)return se;if(Number.isFinite(i)){if(i>=2)return(...Qe)=>{let he=p(re,Qe);try{return he.result=se(...Qe)}catch(Fe){throw he.error=Fe}finally{m(he)}};if(i>=1)return(...Qe)=>{try{return se(...Qe)}catch(he){let Fe=p(re,Qe);throw Fe.error=he,m(Fe),he}}}return se}function Q(re){let se=A(re);if(!se)throw oi(ur.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return se}function S(re){if(re.name===null)return!0;for(let se of t.dependencyTreeRoots)if(se.name===re.name&&se.reference===re.reference)return!0;return!1}let x=new Set(["default","node","require"]);function M(re,se=x){let Qe=Ae(k.join(re,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(Qe===null)throw oi(ur.INTERNAL,`The locator that owns the "${re}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:he}=Q(Qe),Fe=k.join(he,Pt.manifest);if(!e.fakeFs.existsSync(Fe))return null;let Ue=JSON.parse(e.fakeFs.readFileSync(Fe,"utf8")),xe=k.contains(he,re);if(xe===null)throw oi(ur.INTERNAL,"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");a.test(xe)||(xe=`./${xe}`);let ve;try{ve=(0,Nle.resolve)(Ue,k.normalize(xe),{conditions:se,unsafe:!0})}catch(pe){throw oi(ur.EXPORTS_RESOLUTION_FAILED,pe.message,{unqualifiedPath:yo(re),locator:Qe,pkgJson:Ue,subpath:yo(xe),conditions:se},"ERR_PACKAGE_PATH_NOT_EXPORTED")}return typeof ve=="string"?k.join(he,ve):null}function Y(re,se,{extensions:Qe}){let he;try{se.push(re),he=e.fakeFs.statSync(re)}catch(Fe){}if(he&&!he.isDirectory())return e.fakeFs.realpathSync(re);if(he&&he.isDirectory()){let Fe;try{Fe=JSON.parse(e.fakeFs.readFileSync(k.join(re,Pt.manifest),"utf8"))}catch(xe){}let Ue;if(Fe&&Fe.main&&(Ue=k.resolve(re,Fe.main)),Ue&&Ue!==re){let xe=Y(Ue,se,{extensions:Qe});if(xe!==null)return xe}}for(let Fe=0,Ue=Qe.length;Fe{let ve=JSON.stringify(xe.name);if(he.has(ve))return;he.add(ve);let pe=ne(xe);for(let X of pe)if(Q(X).packagePeers.has(re))Fe(X);else{let ce=Qe.get(X.name);typeof ce=="undefined"&&Qe.set(X.name,ce=new Set),ce.add(X.reference)}};Fe(se);let Ue=[];for(let xe of[...Qe.keys()].sort())for(let ve of[...Qe.get(xe)].sort())Ue.push({name:xe,reference:ve});return Ue}function Ae(re,{resolveIgnored:se=!1,includeDiscardFromLookup:Qe=!1}={}){if(W(re)&&!se)return null;let he=k.relative(t.basePath,re);he.match(s)||(he=`./${he}`),he.endsWith("/")||(he=`${he}/`);do{let Fe=h.get(he);if(typeof Fe=="undefined"||Fe.discardFromLookup&&!Qe){he=he.substring(0,he.lastIndexOf("/",he.length-2)+1);continue}return Fe.locator}while(he!=="");return null}function T(re,se,{considerBuiltins:Qe=!0}={}){if(re==="pnpapi")return j.toPortablePath(e.pnpapiResolution);if(Qe&&ub(re))return null;let he=yo(re),Fe=se&&yo(se);if(se&&W(se)&&(!k.isAbsolute(re)||Ae(re)===null)){let ve=J(re,se);if(ve===!1)throw oi(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) + +Require request: "${he}" +Required by: ${Fe} +`,{request:he,issuer:Fe});return j.toPortablePath(ve)}let Ue,xe=re.match(n);if(xe){if(!se)throw oi(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:he,issuer:Fe});let[,ve,pe]=xe,X=Ae(se);if(!X){let jt=J(re,se);if(jt===!1)throw oi(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). + +Require path: "${he}" +Required by: ${Fe} +`,{request:he,issuer:Fe});return j.toPortablePath(jt)}let ce=Q(X).packageDependencies.get(ve),fe=null;if(ce==null&&X.name!==null){let jt=t.fallbackExclusionList.get(X.name);if(!jt||!jt.has(X.reference)){for(let Ti=0,_s=c.length;Ti<_s;++Ti){let Kn=Q(c[Ti]).packageDependencies.get(ve);if(Kn!=null){r?fe=Kn:ce=Kn;break}}if(t.enableTopLevelFallback&&ce==null&&fe===null){let Ti=t.fallbackPool.get(ve);Ti!=null&&(fe=Ti)}}}let gt=null;if(ce===null)if(S(X))gt=oi(ur.MISSING_PEER_DEPENDENCY,`Your application tried to access ${ve} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed. + +Required package: ${ve}${ve!==he?` (via "${he}")`:""} +Required by: ${Fe} +`,{request:he,issuer:Fe,dependencyName:ve});else{let jt=le(ve,X);jt.every(Qr=>S(Qr))?gt=oi(ur.MISSING_PEER_DEPENDENCY,`${X.name} tried to access ${ve} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. + +Required package: ${ve}${ve!==he?` (via "${he}")`:""} +Required by: ${X.name}@${X.reference} (via ${Fe}) +${jt.map(Qr=>`Ancestor breaking the chain: ${Qr.name}@${Qr.reference} +`).join("")} +`,{request:he,issuer:Fe,issuerLocator:Object.assign({},X),dependencyName:ve,brokenAncestors:jt}):gt=oi(ur.MISSING_PEER_DEPENDENCY,`${X.name} tried to access ${ve} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. + +Required package: ${ve}${ve!==he?` (via "${he}")`:""} +Required by: ${X.name}@${X.reference} (via ${Fe}) + +${jt.map(Qr=>`Ancestor breaking the chain: ${Qr.name}@${Qr.reference} +`).join("")} +`,{request:he,issuer:Fe,issuerLocator:Object.assign({},X),dependencyName:ve,brokenAncestors:jt})}else ce===void 0&&(!Qe&&ub(re)?S(X)?gt=oi(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${ve}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${ve} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. + +Required package: ${ve}${ve!==he?` (via "${he}")`:""} +Required by: ${Fe} +`,{request:he,issuer:Fe,dependencyName:ve}):gt=oi(ur.UNDECLARED_DEPENDENCY,`${X.name} tried to access ${ve}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${ve} isn't otherwise declared in ${X.name}'s dependencies, this makes the require call ambiguous and unsound. + +Required package: ${ve}${ve!==he?` (via "${he}")`:""} +Required by: ${Fe} +`,{request:he,issuer:Fe,issuerLocator:Object.assign({},X),dependencyName:ve}):S(X)?gt=oi(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${ve}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. + +Required package: ${ve}${ve!==he?` (via "${he}")`:""} +Required by: ${Fe} +`,{request:he,issuer:Fe,dependencyName:ve}):gt=oi(ur.UNDECLARED_DEPENDENCY,`${X.name} tried to access ${ve}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. + +Required package: ${ve}${ve!==he?` (via "${he}")`:""} +Required by: ${X.name}@${X.reference} (via ${Fe}) +`,{request:he,issuer:Fe,issuerLocator:Object.assign({},X),dependencyName:ve}));if(ce==null){if(fe===null||gt===null)throw gt||new Error("Assertion failed: Expected an error to have been set");ce=fe;let jt=gt.message.replace(/\n.*/g,"");gt.message=jt,!u.has(jt)&&i!==0&&(u.add(jt),process.emitWarning(gt))}let Ht=Array.isArray(ce)?{name:ce[0],reference:ce[1]}:{name:ve,reference:ce},Mt=Q(Ht);if(!Mt.packageLocation)throw oi(ur.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. + +Required package: ${Ht.name}@${Ht.reference}${Ht.name!==he?` (via "${he}")`:""} +Required by: ${X.name}@${X.reference} (via ${Fe}) +`,{request:he,issuer:Fe,dependencyLocator:Object.assign({},Ht)});let mi=Mt.packageLocation;pe?Ue=k.join(mi,pe):Ue=mi}else if(k.isAbsolute(re))Ue=k.normalize(re);else{if(!se)throw oi(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:he,issuer:Fe});let ve=k.resolve(se);se.match(o)?Ue=k.normalize(k.join(ve,re)):Ue=k.normalize(k.join(k.dirname(ve),re))}return k.normalize(Ue)}function L(re,se,Qe=x){if(s.test(re))return se;let he=M(se,Qe);return he?k.normalize(he):se}function Ee(re,{extensions:se=Object.keys(Jm.Module._extensions)}={}){var Fe,Ue;let Qe=[],he=Y(re,Qe,{extensions:se});if(he)return k.normalize(he);{let xe=yo(re),ve=Ae(re);if(ve){let{packageLocation:pe}=Q(ve),X=!0;try{e.fakeFs.accessSync(pe)}catch(be){if((be==null?void 0:be.code)==="ENOENT")X=!1;else{let ce=((Ue=(Fe=be==null?void 0:be.message)!=null?Fe:be)!=null?Ue:"empty exception thrown").replace(/^[A-Z]/,fe=>fe.toLowerCase());throw oi(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`Required package exists but could not be accessed (${ce}). + +Missing package: ${ve.name}@${ve.reference} +Expected package location: ${yo(pe)} +`,{unqualifiedPath:xe,extensions:se})}}if(!X){let be=pe.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw oi(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`${be} + +Missing package: ${ve.name}@${ve.reference} +Expected package location: ${yo(pe)} +`,{unqualifiedPath:xe,extensions:se})}}throw oi(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`Qualified path resolution failed: we looked for the following paths, but none could be accessed. + +Source path: ${xe} +${Qe.map(pe=>`Not found: ${yo(pe)} +`).join("")}`,{unqualifiedPath:xe,extensions:se})}}function we(re,se,{considerBuiltins:Qe,extensions:he,conditions:Fe}={}){try{let Ue=T(re,se,{considerBuiltins:Qe});if(re==="pnpapi")return Ue;if(Ue===null)return null;let xe=()=>se!==null?W(se):!1,ve=(!Qe||!ub(re))&&!xe()?L(re,Ue,Fe):Ue;return Ee(ve,{extensions:he})}catch(Ue){throw Object.prototype.hasOwnProperty.call(Ue,"pnpCode")&&Object.assign(Ue.data,{request:yo(re),issuer:se&&yo(se)}),Ue}}function qe(re){let se=k.normalize(re),Qe=Jr.resolveVirtual(se);return Qe!==se?Qe:null}return{VERSIONS:ee,topLevel:Z,getLocator:(re,se)=>Array.isArray(se)?{name:se[0],reference:se[1]}:{name:re,reference:se},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let re=[];for(let[se,Qe]of f)for(let he of Qe.keys())se!==null&&he!==null&&re.push({name:se,reference:he});return re},getPackageInformation:re=>{let se=A(re);if(se===null)return null;let Qe=j.fromPortablePath(se.packageLocation);return te(N({},se),{packageLocation:Qe})},findPackageLocator:re=>Ae(j.toPortablePath(re)),resolveToUnqualified:y("resolveToUnqualified",(re,se,Qe)=>{let he=se!==null?j.toPortablePath(se):null,Fe=T(j.toPortablePath(re),he,Qe);return Fe===null?null:j.fromPortablePath(Fe)}),resolveUnqualified:y("resolveUnqualified",(re,se)=>j.fromPortablePath(Ee(j.toPortablePath(re),se))),resolveRequest:y("resolveRequest",(re,se,Qe)=>{let he=se!==null?j.toPortablePath(se):null,Fe=we(j.toPortablePath(re),he,Qe);return Fe===null?null:j.fromPortablePath(Fe)}),resolveVirtual:y("resolveVirtual",re=>{let se=qe(j.toPortablePath(re));return se!==null?j.fromPortablePath(se):null})}}var YQt=(0,Tle.promisify)(Lle.readFile);var Ole=(t,e,r)=>{let i=qm(t),n=YL(i,{basePath:e}),s=j.join(e,Pt.pnpCjs);return WL(n,{fakeFs:r,pnpapiResolution:s})};var _L=ge(Ule());var wo={};ft(wo,{checkAndReportManifestCompatibility:()=>Hle,checkManifestCompatibility:()=>Kle,extractBuildScripts:()=>gb,getExtractHint:()=>VL,hasBindingGyp:()=>XL});function Kle(t){return P.isPackageCompatible(t,qg.getArchitectureSet())}function Hle(t,e,{configuration:r,report:i}){return Kle(t)?!0:(i==null||i.reportWarningOnce($.INCOMPATIBLE_ARCHITECTURE,`${P.prettyLocator(r,t)} The ${qg.getArchitectureName()} architecture is incompatible with this package, ${e} skipped.`),!1)}function gb(t,e,r,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([As.SCRIPT,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([As.SHELLCODE,"node-gyp rebuild"]),s.length===0?[]:t.linkType!==Qt.HARD?(n==null||n.reportWarningOnce($.SOFT_LINK_BUILD,`${P.prettyLocator(i,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(n==null||n.reportInfoOnce($.BUILD_DISABLED,`${P.prettyLocator(i,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!r.built?(n==null||n.reportWarningOnce($.DISABLED_BUILD_SCRIPTS,`${P.prettyLocator(i,t)} lists build scripts, but all build scripts have been disabled.`),[]):Hle(t,"build",{configuration:i,report:n})?s:[]}var g_e=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function VL(t){return t.packageFs.getExtractHint({relevantExtensions:g_e})}function XL(t){let e=k.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var ZL={};ft(ZL,{getUnpluggedPath:()=>Wm});function Wm(t,{configuration:e}){return k.resolve(e.get("pnpUnpluggedFolder"),P.slugifyLocator(t))}var f_e=new Set([P.makeIdent(null,"nan").identHash,P.makeIdent(null,"node-gyp").identHash,P.makeIdent(null,"node-pre-gyp").identHash,P.makeIdent(null,"node-addon-api").identHash,P.makeIdent(null,"fsevents").identHash]),Qu=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let i=Pl(r.project).cjs;if(!K.existsSync(i))throw new Pe(`The project in ${ae.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ae.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=Se.getFactoryWithDefault(this.pnpCache,i,()=>Se.dynamicRequire(i,{cachingStrategy:Se.CachingStrategy.FsTime})),s={name:P.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new Pe(`Couldn't find ${P.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return j.toPortablePath(o.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let i=Pl(r.project).cjs;if(!K.existsSync(i))return null;let s=Se.getFactoryWithDefault(this.pnpCache,i,()=>Se.dynamicRequire(i,{cachingStrategy:Se.CachingStrategy.FsTime})).findPackageLocator(j.fromPortablePath(e));return s?P.makeLocator(P.parseIdent(s.name),s.reference):null}makeInstaller(e){return new sh(e)}isEnabled(e){return!(e.project.configuration.get("nodeLinker")!=="pnp"||e.project.configuration.get("pnpMode")!==this.mode)}},sh=class{constructor(e){this.opts=e;this.mode="strict";this.asyncActions=new Se.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,r,i){let n=P.stringifyIdent(e),s=e.reference,o=!!this.opts.project.tryWorkspaceByLocator(e),a=P.isVirtualLocator(e),l=e.peerDependencies.size>0&&!a,c=!l&&!o,u=!l&&e.linkType!==Qt.SOFT,g,f;if(c||u){let x=a?P.devirtualizeLocator(e):e;g=this.customData.store.get(x.locatorHash),typeof g=="undefined"&&(g=await h_e(r),e.linkType===Qt.HARD&&this.customData.store.set(x.locatorHash,g)),g.manifest.type==="module"&&(this.isESMLoaderRequired=!0),f=this.opts.project.getDependencyMeta(x,e.version)}let h=c?gb(e,g,f,{configuration:this.opts.project.configuration,report:this.opts.report}):[],p=u?await this.unplugPackageIfNeeded(e,g,r,f,i):r.packageFs;if(k.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let m=k.resolve(p.getRealPath(),r.prefixPath),y=$L(this.opts.project.cwd,m),Q=new Map,S=new Set;if(a){for(let x of e.peerDependencies.values())Q.set(P.stringifyIdent(x),null),S.add(P.stringifyIdent(x));if(!o){let x=P.devirtualizeLocator(e);this.virtualTemplates.set(x.locatorHash,{location:$L(this.opts.project.cwd,Jr.resolveVirtual(m)),locator:x})}}return Se.getMapWithDefault(this.packageRegistry,n).set(s,{packageLocation:y,packageDependencies:Q,packagePeers:S,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:m,buildDirective:h.length>0?h:null}}async attachInternalDependencies(e,r){let i=this.getPackageInformation(e);for(let[n,s]of r){let o=P.areIdentsEqual(n,s)?s.reference:[P.stringifyIdent(s),s.reference];i.packageDependencies.set(P.stringifyIdent(n),o)}}async attachExternalDependents(e,r){for(let i of r)this.getDiskInformation(i).packageDependencies.set(P.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=Pl(this.opts.project);if(K.existsSync(e.cjsLegacy)&&(this.opts.report.reportWarning($.UNNAMED,`Removing the old ${ae.pretty(this.opts.project.configuration,Pt.pnpJs,ae.Type.PATH)} file. You might need to manually update existing references to reference the new ${ae.pretty(this.opts.project.configuration,Pt.pnpCjs,ae.Type.PATH)} file. If you use Editor SDKs, you'll have to rerun ${ae.pretty(this.opts.project.configuration,"yarn sdks",ae.Type.CODE)}.`),await K.removePromise(e.cjsLegacy)),this.isEsmEnabled()||await K.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await K.removePromise(e.cjs),await K.removePromise(this.opts.project.configuration.get("pnpDataPath")),await K.removePromise(e.esmLoader);return}for(let{locator:u,location:g}of this.virtualTemplates.values())Se.getMapWithDefault(this.packageRegistry,P.stringifyIdent(u)).set(u.reference,{packageLocation:g,packageDependencies:new Map,packagePeers:new Set,linkType:Qt.SOFT,discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),i=this.opts.project.workspaces.map(({anchoredLocator:u})=>({name:P.stringifyIdent(u),reference:u.reference})),n=r!=="none",s=[],o=new Map,a=Se.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),l=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let u of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(u)&&s.push({name:P.stringifyIdent(u),reference:u.reference});return await this.finalizeInstallWithPnp({dependencyTreeRoots:i,enableTopLevelFallback:n,fallbackExclusionList:s,fallbackPool:o,ignorePattern:a,packageRegistry:l,shebang:c}),await this.asyncActions.wait(),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=Pl(this.opts.project),i=this.opts.project.configuration.get("pnpDataPath"),n=await this.locateNodeModules(e.ignorePattern);if(n.length>0){this.opts.report.reportWarning($.DANGEROUS_NODE_MODULES,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let o of n)await K.removePromise(o)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let o=xle(e);await K.changeFilePromise(r.cjs,o,{automaticNewlines:!0,mode:493}),await K.removePromise(i)}else{let o=k.relative(k.dirname(r.cjs),i),{dataFile:a,loaderFile:l}=Ple(te(N({},e),{dataLocation:o}));await K.changeFilePromise(r.cjs,l,{automaticNewlines:!0,mode:493}),await K.changeFilePromise(i,a,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning($.UNNAMED,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await K.changeFilePromise(r.esmLoader,(0,_L.default)(),{automaticNewlines:!0,mode:420}));let s=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await K.removePromise(s);else for(let o of await K.readdirPromise(s)){let a=k.resolve(s,o);this.unpluggedPaths.has(a)||await K.removePromise(a)}}async locateNodeModules(e){let r=[],i=e?new RegExp(e):null;for(let n of this.opts.project.workspaces){let s=k.join(n.cwd,"node_modules");if(i&&i.test(k.relative(this.opts.project.cwd,n.cwd))||!K.existsSync(s))continue;let o=await K.readdirPromise(s,{withFileTypes:!0}),a=o.filter(l=>!l.isDirectory()||l.name===".bin"||!l.name.startsWith("."));if(a.length===o.length)r.push(s);else for(let l of a)r.push(k.join(s,l.name))}return r}async unplugPackageIfNeeded(e,r,i,n,s){return this.shouldBeUnplugged(e,r,n)?this.unplugPackage(e,i,s):i.packageFs}shouldBeUnplugged(e,r,i){return typeof i.unplugged!="undefined"?i.unplugged:f_e.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(gb(e,r,i,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r,i){let n=Wm(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new Pa(n,{baseFs:r.packageFs,pathUtils:k}):(this.unpluggedPaths.add(n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let s=k.join(n,r.prefixPath,".ready");await K.existsPromise(s)||(this.opts.project.storedBuildState.delete(e.locatorHash),await K.mkdirPromise(n,{recursive:!0}),await K.copyPromise(n,Me.dot,{baseFs:r.packageFs,overwrite:!1}),await K.writeFilePromise(s,""))})),new _t(n))}getPackageInformation(e){let r=P.stringifyIdent(e),i=e.reference,n=this.packageRegistry.get(r);if(!n)throw new Error(`Assertion failed: The package information store should have been available (for ${P.prettyIdent(this.opts.project.configuration,e)})`);let s=n.get(i);if(!s)throw new Error(`Assertion failed: The package information should have been available (for ${P.prettyLocator(this.opts.project.configuration,e)})`);return s}getDiskInformation(e){let r=Se.getMapWithDefault(this.packageRegistry,"@@disk"),i=$L(this.opts.project.cwd,e);return Se.getFactoryWithDefault(r,i,()=>({packageLocation:i,packageDependencies:new Map,packagePeers:new Set,linkType:Qt.SOFT,discardFromLookup:!1}))}};function $L(t,e){let r=k.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function h_e(t){var i;let e=(i=await At.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?i:new At,r=new Set(["preinstall","install","postinstall"]);for(let n of e.scripts.keys())r.has(n)||e.scripts.delete(n);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:VL(t),hasBindingGyp:XL(t)}}}var jle=ge(ts());var zm=class extends Le{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=z.Rest()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(!i)throw new ht(r.cwd,this.context.cwd);if(e.get("nodeLinker")!=="pnp")throw new Pe("This command can only be used if the `nodeLinker` option is set to `pnp`");await r.restoreInstallState();let s=new Set(this.patterns),o=this.patterns.map(f=>{let h=P.parseDescriptor(f),p=h.range!=="unknown"?h:P.makeDescriptor(h,"*");if(!Wt.validRange(p.range))throw new Pe(`The range of the descriptor patterns must be a valid semver range (${P.prettyDescriptor(e,p)})`);return m=>{let y=P.stringifyIdent(m);return!jle.default.isMatch(y,P.stringifyIdent(p))||m.version&&!Wt.satisfiesWithPrereleases(m.version,p.range)?!1:(s.delete(f),!0)}}),a=()=>{let f=[];for(let h of r.storedPackages.values())!r.tryWorkspaceByLocator(h)&&!P.isVirtualLocator(h)&&o.some(p=>p(h))&&f.push(h);return f},l=f=>{let h=new Set,p=[],m=(y,Q)=>{if(!h.has(y.locatorHash)&&(h.add(y.locatorHash),!r.tryWorkspaceByLocator(y)&&o.some(S=>S(y))&&p.push(y),!(Q>0&&!this.recursive)))for(let S of y.dependencies.values()){let x=r.storedResolutions.get(S.descriptorHash);if(!x)throw new Error("Assertion failed: The resolution should have been registered");let M=r.storedPackages.get(x);if(!M)throw new Error("Assertion failed: The package should have been registered");m(M,Q+1)}};for(let y of f){let Q=r.storedPackages.get(y.anchoredLocator.locatorHash);if(!Q)throw new Error("Assertion failed: The package should have been registered");m(Q,0)}return p},c,u;if(this.all&&this.recursive?(c=a(),u="the project"):this.all?(c=l(r.workspaces),u="any workspace"):(c=l([i]),u="this workspace"),s.size>1)throw new Pe(`Patterns ${ae.prettyList(e,s,ae.Type.CODE)} don't match any packages referenced by ${u}`);if(s.size>0)throw new Pe(`Pattern ${ae.prettyList(e,s,ae.Type.CODE)} doesn't match any packages referenced by ${u}`);return c=Se.sortMap(c,f=>P.stringifyLocator(f)),(await Je.start({configuration:e,stdout:this.context.stdout,json:this.json},async f=>{var h;for(let p of c){let m=(h=p.version)!=null?h:"unknown",y=r.topLevelWorkspace.manifest.ensureDependencyMeta(P.makeDescriptor(p,m));y.unplugged=!0,f.reportInfo($.UNNAMED,`Will unpack ${P.prettyLocator(e,p)} to ${ae.pretty(e,Wm(p,{configuration:e}),ae.Type.PATH)}`),f.reportJson({locator:P.stringifyLocator(p),version:m})}await r.topLevelWorkspace.persistManifest(),f.reportSeparator(),await r.install({cache:n,report:f})})).exitCode()}};zm.paths=[["unplug"]],zm.usage=Re.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Gle=zm;var Pl=t=>({cjs:k.join(t.cwd,Pt.pnpCjs),cjsLegacy:k.join(t.cwd,Pt.pnpJs),esmLoader:k.join(t.cwd,".pnp.loader.mjs")}),Jle=t=>/\s/.test(t)?JSON.stringify(t):t;async function p_e(t,e,r){let i=Pl(t),n=`--require ${Jle(j.fromPortablePath(i.cjs))}`;if(K.existsSync(i.esmLoader)&&(n=`${n} --experimental-loader ${(0,qle.pathToFileURL)(j.fromPortablePath(i.esmLoader)).href}`),i.cjs.includes(" ")&&Yle.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(K.existsSync(i.cjs)){let s=e.NODE_OPTIONS||"",o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;s=s.replace(o," ").replace(a," ").trim(),s=s?`${n} ${s}`:n,e.NODE_OPTIONS=s}}async function d_e(t,e){let r=Pl(t);e(r.cjs),e(r.esmLoader),e(t.configuration.get("pnpDataPath")),e(t.configuration.get("pnpUnpluggedFolder"))}var C_e={hooks:{populateYarnPaths:d_e,setupScriptEnvironment:p_e},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:Ie.STRING,default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:Ie.STRING,default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:Ie.STRING,default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:Ie.STRING,default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:Ie.BOOLEAN,default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:Ie.BOOLEAN,default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:Ie.STRING,default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:Ie.ABSOLUTE_PATH,default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:Ie.ABSOLUTE_PATH,default:"./.pnp.data.json"}},linkers:[Qu],commands:[Gle]},m_e=C_e;var Zle=ge(Xle());var sT=ge(require("crypto")),$le=ge(require("fs")),ece=1,ai="node_modules",oT=".bin",tce=".yarn-state.yml",Li;(function(i){i.CLASSIC="classic",i.HARDLINKS_LOCAL="hardlinks-local",i.HARDLINKS_GLOBAL="hardlinks-global"})(Li||(Li={}));var aT=class{constructor(){this.installStateCache=new Map}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let i=r.project.tryWorkspaceByLocator(e);if(i)return i.cwd;let n=await Se.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await AT(r.project,{unrollAliases:!0}));if(n===null)throw new Pe("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let s=n.locatorMap.get(P.stringifyLocator(e));if(!s){let a=new Pe(`Couldn't find ${P.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw a.code="LOCATOR_NOT_INSTALLED",a}let o=r.project.configuration.startingCwd;return s.locations.find(a=>k.contains(o,a))||s.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let i=await Se.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await AT(r.project,{unrollAliases:!0}));if(i===null)return null;let{locationRoot:n,segments:s}=fb(k.resolve(e),{skipPrefix:r.project.cwd}),o=i.locationTree.get(n);if(!o)return null;let a=o.locator;for(let l of s){if(o=o.children.get(l),!o)break;a=o.locator||a}return P.parseLocator(a)}makeInstaller(e){return new rce(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="node-modules"}},rce=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,r){var u;let i=k.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.customData.store.get(e.locatorHash);if(typeof n=="undefined"&&(n=await L_e(e,r),e.linkType===Qt.HARD&&this.customData.store.set(e.locatorHash,n)),!wo.checkManifestCompatibility(e))return{packageLocation:null,buildDirective:null};let s=new Map,o=new Set;s.has(P.stringifyIdent(e))||s.set(P.stringifyIdent(e),e.reference);let a=e;if(P.isVirtualLocator(e)){a=P.devirtualizeLocator(e);for(let g of e.peerDependencies.values())s.set(P.stringifyIdent(g),null),o.add(P.stringifyIdent(g))}let l={packageLocation:`${j.fromPortablePath(i)}/`,packageDependencies:s,packagePeers:o,linkType:e.linkType,discardFromLookup:(u=r.discardFromLookup)!=null?u:!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:l});let c=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(a.locatorHash,c),{packageLocation:i,buildDirective:null}}async attachInternalDependencies(e,r){let i=this.localStore.get(e.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected information object to have been registered");for(let[n,s]of r){let o=P.areIdentsEqual(n,s)?s.reference:[P.stringifyIdent(s),s.reference];i.pnpNode.packageDependencies.set(P.stringifyIdent(n),o)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new Jr({baseFs:new ms({libzip:await fn(),maxOpenFiles:80,readOnlyArchives:!0})}),r=await AT(this.opts.project),i=this.opts.project.configuration.get("nmMode");(r===null||i!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:i});let n=new Map(this.opts.project.workspaces.map(f=>{var p,m;let h=this.opts.project.configuration.get("nmHoistingLimits");try{h=Se.validateEnum(Mn,(m=(p=f.manifest.installConfig)==null?void 0:p.hoistingLimits)!=null?m:h)}catch(y){let Q=P.prettyWorkspace(this.opts.project.configuration,f);this.opts.report.reportWarning($.INVALID_MANIFEST,`${Q}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(Mn).join(", ")}, using default: "${h}"`)}return[f.relativeCwd,h]})),s=new Map(this.opts.project.workspaces.map(f=>{var p,m;let h=this.opts.project.configuration.get("nmSelfReferences");return h=(m=(p=f.manifest.installConfig)==null?void 0:p.selfReferences)!=null?m:h,[f.relativeCwd,h]})),o={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(f,h)=>Array.isArray(h)?{name:h[0],reference:h[1]}:{name:f,reference:h},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(f=>{let h=f.anchoredLocator;return{name:P.stringifyIdent(f.locator),reference:h.reference}}),getPackageInformation:f=>{let h=f.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:P.makeLocator(P.parseIdent(f.name),f.reference),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the package reference to have been registered");return p.pnpNode},findPackageLocator:f=>{let h=this.opts.project.tryWorkspaceByCwd(j.toPortablePath(f));if(h!==null){let p=h.anchoredLocator;return{name:P.stringifyIdent(p),reference:p.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:f=>j.fromPortablePath(Jr.resolveVirtual(j.toPortablePath(f)))},{tree:a,errors:l,preserveSymlinksRequired:c}=Gm(o,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:n,project:this.opts.project,selfReferencesByCwd:s});if(!a){for(let{messageName:f,text:h}of l)this.opts.report.reportError(f,h);return}let u=HL(a);await T_e(r,u,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async f=>{let h=P.parseLocator(f),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the slot to exist");return p.customPackageData.manifest}});let g=[];for(let[f,h]of u.entries()){if(ice(f))continue;let p=P.parseLocator(f),m=this.localStore.get(p.locatorHash);if(typeof m=="undefined")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(m.pkg))continue;let y=wo.extractBuildScripts(m.pkg,m.customPackageData,m.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});y.length!==0&&g.push({buildLocations:h.locations,locatorHash:p.locatorHash,buildDirective:y})}return c&&this.opts.report.reportWarning($.NM_PRESERVE_SYMLINKS_REQUIRED,`The application uses portals and that's why ${ae.pretty(this.opts.project.configuration,"--preserve-symlinks",ae.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:g}}};async function L_e(t,e){var n;let r=(n=await At.tryFind(e.prefixPath,{baseFs:e.packageFs}))!=null?n:new At,i=new Set(["preinstall","install","postinstall"]);for(let s of r.scripts.keys())i.has(s)||r.scripts.delete(s);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{extractHint:wo.getExtractHint(e),hasBindingGyp:wo.hasBindingGyp(e)}}}async function O_e(t,e,r,i){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will +`,n+=`# cause your node_modules installation to become invalidated. +`,n+=` +`,n+=`__metadata: +`,n+=` version: ${ece} +`,n+=` nmMode: ${i.value} +`;let s=Array.from(e.keys()).sort(),o=P.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let c of s){let u=e.get(c);n+=` +`,n+=`${JSON.stringify(c)}: +`,n+=` locations: +`;for(let g of u.locations){let f=k.contains(t.cwd,g);if(f===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` - ${JSON.stringify(f)} +`}if(u.aliases.length>0){n+=` aliases: +`;for(let g of u.aliases)n+=` - ${JSON.stringify(g)} +`}if(c===o&&r.size>0){n+=` bin: +`;for(let[g,f]of r){let h=k.contains(t.cwd,g);if(h===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` ${JSON.stringify(h)}: +`;for(let[p,m]of f){let y=k.relative(k.join(g,ai),m);n+=` ${JSON.stringify(p)}: ${JSON.stringify(y)} +`}}}}let a=t.cwd,l=k.join(a,ai,tce);await K.changeFilePromise(l,n,{automaticNewlines:!0})}async function AT(t,{unrollAliases:e=!1}={}){let r=t.cwd,i=k.join(r,ai,tce);if(!K.existsSync(i))return null;let n=Qi(await K.readFilePromise(i,"utf8"));if(n.__metadata.version>ece)return null;let s=n.__metadata.nmMode||Li.CLASSIC,o=new Map,a=new Map;delete n.__metadata;for(let[l,c]of Object.entries(n)){let u=c.locations.map(f=>k.join(r,f)),g=c.bin;if(g)for(let[f,h]of Object.entries(g)){let p=k.join(r,j.toPortablePath(f)),m=Se.getMapWithDefault(a,p);for(let[y,Q]of Object.entries(h))m.set(qr(y),j.toPortablePath([p,ai,Q].join(k.delimiter)))}if(o.set(l,{target:Me.dot,linkType:Qt.HARD,locations:u,aliases:c.aliases||[]}),e&&c.aliases)for(let f of c.aliases){let{scope:h,name:p}=P.parseLocator(l),m=P.makeLocator(P.makeIdent(h,p),f),y=P.stringifyLocator(m);o.set(y,{target:Me.dot,linkType:Qt.HARD,locations:u,aliases:[]})}}return{locatorMap:o,binSymlinks:a,locationTree:nce(o,{skipPrefix:t.cwd}),nmMode:s}}var ah=async(t,e)=>{if(t.split(k.sep).indexOf(ai)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop){let i=e.allowSymlink?await K.statPromise(t):await K.lstatPromise(t);if(e.allowSymlink&&!i.isDirectory()||!e.allowSymlink&&i.isSymbolicLink()){await K.unlinkPromise(t);return}}let r=await K.readdirPromise(t,{withFileTypes:!0});for(let i of r){let n=k.join(t,qr(i.name));i.isDirectory()?(i.name!==ai||e&&e.innerLoop)&&await ah(n,{innerLoop:!0,contentsOnly:!1}):await K.unlinkPromise(n)}e.contentsOnly||await K.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},sce=4,fb=(t,{skipPrefix:e})=>{let r=k.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let i=r.split(k.sep).filter(l=>l!==""),n=i.indexOf(ai),s=i.slice(0,n).join(k.sep),o=k.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},nce=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let i=()=>({children:new Map,linkType:Qt.HARD});for(let[n,s]of t.entries()){if(s.linkType===Qt.SOFT&&k.contains(e,s.target)!==null){let a=Se.getFactoryWithDefault(r,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=fb(o,{skipPrefix:e}),c=Se.getFactoryWithDefault(r,a,i);for(let u=0;u{let r;try{process.platform==="win32"&&(r=await K.lstatPromise(t))}catch(i){}process.platform=="win32"&&(!r||r.isDirectory())?await K.symlinkPromise(t,e,"junction"):await K.symlinkPromise(k.relative(k.dirname(e),t),e)};async function oce(t,e,r){let i=k.join(t,qr(`${sT.default.randomBytes(16).toString("hex")}.tmp`));try{await K.writeFilePromise(i,r);try{await K.linkPromise(i,e)}catch(n){}}finally{await K.unlinkPromise(i)}}async function M_e({srcPath:t,dstPath:e,srcMode:r,globalHardlinksStore:i,baseFs:n,nmMode:s,digest:o}){if(s.value===Li.HARDLINKS_GLOBAL&&i&&o){let l=k.join(i,o.substring(0,2),`${o.substring(2)}.dat`),c;try{if(await Dn.checksumFile(l,{baseFs:K,algorithm:"sha1"})!==o){let g=k.join(i,qr(`${sT.default.randomBytes(16).toString("hex")}.tmp`));await K.renamePromise(l,g);let f=await n.readFilePromise(t);await K.writeFilePromise(g,f);try{await K.linkPromise(g,l),await K.unlinkPromise(g)}catch(h){}}await K.linkPromise(l,e),c=!0}catch(u){c=!1}if(!c){let u=await n.readFilePromise(t);await oce(i,l,u);try{await K.linkPromise(l,e)}catch(g){g&&g.code&&g.code=="EXDEV"&&(s.value=Li.HARDLINKS_LOCAL,await n.copyFilePromise(t,e))}}}else await n.copyFilePromise(t,e);let a=r&511;a!==420&&await K.chmodPromise(e,a)}var Dl;(function(i){i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink"})(Dl||(Dl={}));var U_e=async(t,e,{baseFs:r,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await K.mkdirPromise(t,{recursive:!0});let o=async(l=Me.dot)=>{let c=k.join(e,l),u=await r.readdirPromise(c,{withFileTypes:!0}),g=new Map;for(let f of u){let h=k.join(l,f.name),p,m=k.join(c,f.name);if(f.isFile()){if(p={kind:Dl.FILE,mode:(await r.lstatPromise(m)).mode},n.value===Li.HARDLINKS_GLOBAL){let y=await Dn.checksumFile(m,{baseFs:r,algorithm:"sha1"});p.digest=y}}else if(f.isDirectory())p={kind:Dl.DIRECTORY};else if(f.isSymbolicLink())p={kind:Dl.SYMLINK,symlinkTo:await r.readlinkPromise(m)};else throw new Error(`Unsupported file type (file: ${m}, mode: 0o${await r.statSync(m).mode.toString(8).padStart(6,"0")})`);if(g.set(h,p),f.isDirectory()&&h!==ai){let y=await o(h);for(let[Q,S]of y)g.set(Q,S)}}return g},a;if(n.value===Li.HARDLINKS_GLOBAL&&i&&s){let l=k.join(i,s.substring(0,2),`${s.substring(2)}.json`);try{a=new Map(Object.entries(JSON.parse(await K.readFilePromise(l,"utf8"))))}catch(c){a=await o(),await oce(i,l,Buffer.from(JSON.stringify(Object.fromEntries(a))))}}else a=await o();for(let[l,c]of a){let u=k.join(e,l),g=k.join(t,l);c.kind===Dl.DIRECTORY?await K.mkdirPromise(g,{recursive:!0}):c.kind===Dl.FILE?await M_e({srcPath:u,dstPath:g,srcMode:c.mode,digest:c.digest,nmMode:n,baseFs:r,globalHardlinksStore:i}):c.kind===Dl.SYMLINK&&await lT(k.resolve(k.dirname(g),c.symlinkTo),g)}};function K_e(t,e){let r=new Map([...t]),i=new Map([...e]);for(let[n,s]of t){let o=k.join(n,ai);if(!K.existsSync(o)){s.children.delete(ai);for(let a of i.keys())k.contains(o,a)!==null&&i.delete(a)}}return{locationTree:r,binSymlinks:i}}function ice(t){let e=P.parseDescriptor(t);return P.isVirtualDescriptor(e)&&(e=P.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function H_e(t,e,r,{loadManifest:i}){let n=new Map;for(let[a,{locations:l}]of t){let c=ice(a)?null:await i(a,l[0]),u=new Map;if(c)for(let[g,f]of c.bin){let h=k.join(l[0],f);f!==""&&K.existsSync(h)&&u.set(g,f)}n.set(a,u)}let s=new Map,o=(a,l,c)=>{let u=new Map,g=k.contains(r,a);if(c.locator&&g!==null){let f=n.get(c.locator);for(let[h,p]of f){let m=k.join(a,j.toPortablePath(p));u.set(qr(h),m)}for(let[h,p]of c.children){let m=k.join(a,h),y=o(m,m,p);y.size>0&&s.set(a,new Map([...s.get(a)||new Map,...y]))}}else for(let[f,h]of c.children){let p=o(k.join(a,f),l,h);for(let[m,y]of p)u.set(m,y)}return u};for(let[a,l]of e){let c=o(a,a,l);c.size>0&&s.set(a,new Map([...s.get(a)||new Map,...c]))}return s}var ace=(t,e)=>{if(!t||!e)return t===e;let r=P.parseLocator(t);P.isVirtualLocator(r)&&(r=P.devirtualizeLocator(r));let i=P.parseLocator(e);return P.isVirtualLocator(i)&&(i=P.devirtualizeLocator(i)),P.areLocatorsEqual(r,i)};function cT(t){return k.join(t.get("globalFolder"),"store")}async function T_e(t,e,{baseFs:r,project:i,report:n,loadManifest:s,realLocatorChecksums:o}){let a=k.join(i.cwd,ai),{locationTree:l,binSymlinks:c}=K_e(t.locationTree,t.binSymlinks),u=nce(e,{skipPrefix:i.cwd}),g=[],f=async({srcDir:U,dstDir:J,linkType:W,globalHardlinksStore:ee,nmMode:Z,packageChecksum:A})=>{let ne=(async()=>{try{W===Qt.SOFT?(await K.mkdirPromise(k.dirname(J),{recursive:!0}),await lT(k.resolve(U),J)):await U_e(J,U,{baseFs:r,globalHardlinksStore:ee,nmMode:Z,packageChecksum:A})}catch(le){throw le.message=`While persisting ${U} -> ${J} ${le.message}`,le}finally{S.tick()}})().then(()=>g.splice(g.indexOf(ne),1));g.push(ne),g.length>sce&&await Promise.race(g)},h=async(U,J,W)=>{let ee=(async()=>{let Z=async(A,ne,le)=>{try{le.innerLoop||await K.mkdirPromise(ne,{recursive:!0});let Ae=await K.readdirPromise(A,{withFileTypes:!0});for(let T of Ae){if(!le.innerLoop&&T.name===oT)continue;let L=k.join(A,T.name),Ee=k.join(ne,T.name);T.isDirectory()?(T.name!==ai||le&&le.innerLoop)&&(await K.mkdirPromise(Ee,{recursive:!0}),await Z(L,Ee,te(N({},le),{innerLoop:!0}))):Y.value===Li.HARDLINKS_LOCAL||Y.value===Li.HARDLINKS_GLOBAL?await K.linkPromise(L,Ee):await K.copyFilePromise(L,Ee,$le.default.constants.COPYFILE_FICLONE)}}catch(Ae){throw le.innerLoop||(Ae.message=`While cloning ${A} -> ${ne} ${Ae.message}`),Ae}finally{le.innerLoop||S.tick()}};await Z(U,J,W)})().then(()=>g.splice(g.indexOf(ee),1));g.push(ee),g.length>sce&&await Promise.race(g)},p=async(U,J,W)=>{if(W)for(let[ee,Z]of J.children){let A=W.children.get(ee);await p(k.join(U,ee),Z,A)}else{J.children.has(ai)&&await ah(k.join(U,ai),{contentsOnly:!1});let ee=k.basename(U)===ai&&u.has(k.join(k.dirname(U),k.sep));await ah(U,{contentsOnly:U===a,allowSymlink:ee})}};for(let[U,J]of l){let W=u.get(U);for(let[ee,Z]of J.children){if(ee===".")continue;let A=W&&W.children.get(ee),ne=k.join(U,ee);await p(ne,Z,A)}}let m=async(U,J,W)=>{if(W){ace(J.locator,W.locator)||await ah(U,{contentsOnly:J.linkType===Qt.HARD});for(let[ee,Z]of J.children){let A=W.children.get(ee);await m(k.join(U,ee),Z,A)}}else{J.children.has(ai)&&await ah(k.join(U,ai),{contentsOnly:!0});let ee=k.basename(U)===ai&&u.has(k.join(k.dirname(U),k.sep));await ah(U,{contentsOnly:J.linkType===Qt.HARD,allowSymlink:ee})}};for(let[U,J]of u){let W=l.get(U);for(let[ee,Z]of J.children){if(ee===".")continue;let A=W&&W.children.get(ee);await m(k.join(U,ee),Z,A)}}let y=new Map,Q=[];for(let[U,{locations:J}]of t.locatorMap.entries())for(let W of J){let{locationRoot:ee,segments:Z}=fb(W,{skipPrefix:i.cwd}),A=u.get(ee),ne=ee;if(A){for(let le of Z)if(ne=k.join(ne,le),A=A.children.get(le),!A)break;if(A){let le=ace(A.locator,U),Ae=e.get(A.locator),T=Ae.target,L=ne,Ee=Ae.linkType;if(le)y.has(T)||y.set(T,L);else if(T!==L){let we=P.parseLocator(A.locator);P.isVirtualLocator(we)&&(we=P.devirtualizeLocator(we)),Q.push({srcDir:T,dstDir:L,linkType:Ee,realLocatorHash:we.locatorHash})}}}}for(let[U,{locations:J}]of e.entries())for(let W of J){let{locationRoot:ee,segments:Z}=fb(W,{skipPrefix:i.cwd}),A=l.get(ee),ne=u.get(ee),le=ee,Ae=e.get(U),T=P.parseLocator(U);P.isVirtualLocator(T)&&(T=P.devirtualizeLocator(T));let L=T.locatorHash,Ee=Ae.target,we=W;if(Ee===we)continue;let qe=Ae.linkType;for(let re of Z)ne=ne.children.get(re);if(!A)Q.push({srcDir:Ee,dstDir:we,linkType:qe,realLocatorHash:L});else for(let re of Z)if(le=k.join(le,re),A=A.children.get(re),!A){Q.push({srcDir:Ee,dstDir:we,linkType:qe,realLocatorHash:L});break}}let S=Ji.progressViaCounter(Q.length),x=n.reportProgress(S),M=i.configuration.get("nmMode"),Y={value:M};try{let U=Y.value===Li.HARDLINKS_GLOBAL?`${cT(i.configuration)}/v1`:null;if(U&&!await K.existsPromise(U)){await K.mkdirpPromise(U);for(let W=0;W<256;W++)await K.mkdirPromise(k.join(U,W.toString(16).padStart(2,"0")))}for(let W of Q)(W.linkType===Qt.SOFT||!y.has(W.srcDir))&&(y.set(W.srcDir,W.dstDir),await f(te(N({},W),{globalHardlinksStore:U,nmMode:Y,packageChecksum:o.get(W.realLocatorHash)||null})));await Promise.all(g),g.length=0;for(let W of Q){let ee=y.get(W.srcDir);W.linkType!==Qt.SOFT&&W.dstDir!==ee&&await h(ee,W.dstDir,{nmMode:Y})}await Promise.all(g),await K.mkdirPromise(a,{recursive:!0});let J=await H_e(e,u,i.cwd,{loadManifest:s});await j_e(c,J,i.cwd),await O_e(i,e,J,Y),M==Li.HARDLINKS_GLOBAL&&Y.value==Li.HARDLINKS_LOCAL&&n.reportWarningOnce($.NM_HARDLINKS_MODE_DOWNGRADED,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{x.stop()}}async function j_e(t,e,r){for(let i of t.keys()){if(k.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);if(!e.has(i)){let n=k.join(i,ai,oT);await K.removePromise(n)}}for(let[i,n]of e){if(k.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);let s=k.join(i,ai,oT),o=t.get(i)||new Map;await K.mkdirPromise(s,{recursive:!0});for(let a of o.keys())n.has(a)||(await K.removePromise(k.join(s,a)),process.platform==="win32"&&await K.removePromise(k.join(s,qr(`${a}.cmd`))));for(let[a,l]of n){let c=o.get(a),u=k.join(s,a);c!==l&&(process.platform==="win32"?await(0,Zle.default)(j.fromPortablePath(l),j.fromPortablePath(u),{createPwshFile:!1}):(await K.removePromise(u),await lT(l,u),k.contains(r,await K.realpathPromise(l))!==null&&await K.chmodPromise(l,493)))}}}var uT=class extends Qu{constructor(){super(...arguments);this.mode="loose"}makeInstaller(e){return new Ace(e)}},Ace=class extends sh{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(e){let r=new Jr({baseFs:new ms({libzip:await fn(),maxOpenFiles:80,readOnlyArchives:!0})}),i=Ole(e,this.opts.project.cwd,r),{tree:n,errors:s}=Gm(i,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:u,text:g}of s)this.opts.report.reportError(u,g);return}let o=new Map;e.fallbackPool=o;let a=(u,g)=>{let f=P.parseLocator(g.locator),h=P.stringifyIdent(f);h===u?o.set(u,f.reference):o.set(u,[h,f.reference])},l=k.join(this.opts.project.cwd,Pt.nodeModules),c=n.get(l);if(typeof c!="undefined"){if("target"in c)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let u of c.dirList){let g=k.join(l,u),f=n.get(g);if(typeof f=="undefined")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in f)a(u,f);else for(let h of f.dirList){let p=k.join(g,h),m=n.get(p);if(typeof m=="undefined")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in m)a(`${u}/${h}`,m);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var G_e={hooks:{cleanGlobalArtifacts:async t=>{let e=cT(t);await K.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:Ie.STRING,values:[Mn.WORKSPACES,Mn.DEPENDENCIES,Mn.NONE],default:Mn.NONE},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:Ie.STRING,values:[Li.CLASSIC,Li.HARDLINKS_LOCAL,Li.HARDLINKS_GLOBAL],default:Li.CLASSIC},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:Ie.BOOLEAN,default:!0}},linkers:[aT,uT]},Y_e=G_e;var uO={};ft(uO,{default:()=>ZVe,npmConfigUtils:()=>br,npmHttpUtils:()=>zt,npmPublishUtils:()=>yh});var fce=ge(ti());var Cr="npm:";var zt={};ft(zt,{AuthType:()=>cs,customPackageError:()=>W_e,del:()=>V_e,get:()=>Bo,getIdentUrl:()=>Fl,handleInvalidAuthenticationError:()=>Rl,post:()=>z_e,put:()=>__e});var uce=ge($C()),gce=ge(require("url"));var br={};ft(br,{RegistryType:()=>yA,getAuditRegistry:()=>q_e,getAuthConfiguration:()=>hT,getDefaultRegistry:()=>hb,getPublishRegistry:()=>lce,getRegistryConfiguration:()=>cce,getScopeConfiguration:()=>fT,getScopeRegistry:()=>wA,normalizeRegistry:()=>ha});var yA;(function(i){i.AUDIT_REGISTRY="npmAuditRegistry",i.FETCH_REGISTRY="npmRegistryServer",i.PUBLISH_REGISTRY="npmPublishRegistry"})(yA||(yA={}));function ha(t){return t.replace(/\/$/,"")}function q_e(t,{configuration:e}){let r=e.get(yA.AUDIT_REGISTRY);return r!==null?ha(r):lce(t,{configuration:e})}function lce(t,{configuration:e}){var r;return((r=t.publishConfig)==null?void 0:r.registry)?ha(t.publishConfig.registry):t.name?wA(t.name.scope,{configuration:e,type:yA.PUBLISH_REGISTRY}):hb({configuration:e,type:yA.PUBLISH_REGISTRY})}function wA(t,{configuration:e,type:r=yA.FETCH_REGISTRY}){let i=fT(t,{configuration:e});if(i===null)return hb({configuration:e,type:r});let n=i.get(r);return n===null?hb({configuration:e,type:r}):ha(n)}function hb({configuration:t,type:e=yA.FETCH_REGISTRY}){let r=t.get(e);return ha(r!==null?r:t.get(yA.FETCH_REGISTRY))}function cce(t,{configuration:e}){let r=e.get("npmRegistries"),i=ha(t),n=r.get(i);if(typeof n!="undefined")return n;let s=r.get(i.replace(/^[a-z]+:/,""));return typeof s!="undefined"?s:null}function fT(t,{configuration:e}){if(t===null)return null;let i=e.get("npmScopes").get(t);return i||null}function hT(t,{configuration:e,ident:r}){let i=r&&fT(r.scope,{configuration:e});return(i==null?void 0:i.get("npmAuthIdent"))||(i==null?void 0:i.get("npmAuthToken"))?i:cce(t,{configuration:e})||e}var cs;(function(n){n[n.NO_AUTH=0]="NO_AUTH",n[n.BEST_EFFORT=1]="BEST_EFFORT",n[n.CONFIGURATION=2]="CONFIGURATION",n[n.ALWAYS_AUTH=3]="ALWAYS_AUTH"})(cs||(cs={}));async function Rl(t,{attemptedAs:e,registry:r,headers:i,configuration:n}){var s,o;if(pb(t))throw new ct($.AUTHENTICATION_INVALID,"Invalid OTP token");if(((s=t.originalError)==null?void 0:s.name)==="HTTPError"&&((o=t.originalError)==null?void 0:o.response.statusCode)===401)throw new ct($.AUTHENTICATION_INVALID,`Invalid authentication (${typeof e!="string"?`as ${await J_e(r,i,{configuration:n})}`:`attempted as ${e}`})`)}function W_e(t){var e;return((e=t.response)==null?void 0:e.statusCode)===404?"Package not found":null}function Fl(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function Bo(t,a){var l=a,{configuration:e,headers:r,ident:i,authType:n,registry:s}=l,o=Tr(l,["configuration","headers","ident","authType","registry"]);if(i&&typeof s=="undefined"&&(s=wA(i.scope,{configuration:e})),i&&i.scope&&typeof n=="undefined"&&(n=1),typeof s!="string")throw new Error("Assertion failed: The registry should be a string");let c=await db(s,{authType:n,configuration:e,ident:i});c&&(r=te(N({},r),{authorization:c}));try{return await ir.get(t.charAt(0)==="/"?`${s}${t}`:t,N({configuration:e,headers:r},o))}catch(u){throw await Rl(u,{registry:s,configuration:e,headers:r}),u}}async function z_e(t,e,u){var g=u,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a,otp:l}=g,c=Tr(g,["attemptedAs","configuration","headers","ident","authType","registry","otp"]);if(s&&typeof a=="undefined"&&(a=wA(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let f=await db(a,{authType:o,configuration:i,ident:s});f&&(n=te(N({},n),{authorization:f})),l&&(n=N(N({},n),Ah(l)));try{return await ir.post(a+t,e,N({configuration:i,headers:n},c))}catch(h){if(!pb(h)||l)throw await Rl(h,{attemptedAs:r,registry:a,configuration:i,headers:n}),h;l=await pT();let p=N(N({},n),Ah(l));try{return await ir.post(`${a}${t}`,e,N({configuration:i,headers:p},c))}catch(m){throw await Rl(m,{attemptedAs:r,registry:a,configuration:i,headers:n}),m}}}async function __e(t,e,u){var g=u,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a,otp:l}=g,c=Tr(g,["attemptedAs","configuration","headers","ident","authType","registry","otp"]);if(s&&typeof a=="undefined"&&(a=wA(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let f=await db(a,{authType:o,configuration:i,ident:s});f&&(n=te(N({},n),{authorization:f})),l&&(n=N(N({},n),Ah(l)));try{return await ir.put(a+t,e,N({configuration:i,headers:n},c))}catch(h){if(!pb(h))throw await Rl(h,{attemptedAs:r,registry:a,configuration:i,headers:n}),h;l=await pT();let p=N(N({},n),Ah(l));try{return await ir.put(`${a}${t}`,e,N({configuration:i,headers:p},c))}catch(m){throw await Rl(m,{attemptedAs:r,registry:a,configuration:i,headers:n}),m}}}async function V_e(t,c){var u=c,{attemptedAs:e,configuration:r,headers:i,ident:n,authType:s=3,registry:o,otp:a}=u,l=Tr(u,["attemptedAs","configuration","headers","ident","authType","registry","otp"]);if(n&&typeof o=="undefined"&&(o=wA(n.scope,{configuration:r})),typeof o!="string")throw new Error("Assertion failed: The registry should be a string");let g=await db(o,{authType:s,configuration:r,ident:n});g&&(i=te(N({},i),{authorization:g})),a&&(i=N(N({},i),Ah(a)));try{return await ir.del(o+t,N({configuration:r,headers:i},l))}catch(f){if(!pb(f)||a)throw await Rl(f,{attemptedAs:e,registry:o,configuration:r,headers:i}),f;a=await pT();let h=N(N({},i),Ah(a));try{return await ir.del(`${o}${t}`,N({configuration:r,headers:h},l))}catch(p){throw await Rl(p,{attemptedAs:e,registry:o,configuration:r,headers:i}),p}}}async function db(t,{authType:e=2,configuration:r,ident:i}){let n=hT(t,{configuration:r,ident:i}),s=X_e(n,e);if(!s)return null;let o=await r.reduceHook(a=>a.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:i});if(o)return o;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let a=n.get("npmAuthIdent");return a.includes(":")?`Basic ${Buffer.from(a).toString("base64")}`:`Basic ${a}`}if(s&&e!==1)throw new ct($.AUTHENTICATION_NOT_FOUND,"No authentication configured for request");return null}function X_e(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function J_e(t,e,{configuration:r}){var i;if(typeof e=="undefined"||typeof e.authorization=="undefined")return"an anonymous user";try{return(i=(await ir.get(new gce.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username)!=null?i:"an unknown user"}catch{return"an unknown user"}}async function pT(){if(process.env.TEST_ENV)return process.env.TEST_NPM_2FA_TOKEN||"";let{otp:t}=await(0,uce.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return t}function pb(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch(i){return!1}}function Ah(t){return{["npm-otp"]:t}}var dT=class{supports(e,r){if(!e.reference.startsWith(Cr))return!1;let{selector:i,params:n}=P.parseRange(e.reference);return!(!fce.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,N({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${P.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let{params:i}=P.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await Bo(i.__archiveUrl,{configuration:r.project.configuration,ident:e});return await wi.convertToZip(n,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}};var CT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Cr)||!P.tryParseDescriptor(e.range.slice(Cr.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){let i=P.parseDescriptor(e.range.slice(Cr.length),!0);return r.resolver.getResolutionDependencies(i,r)}async getCandidates(e,r,i){let n=P.parseDescriptor(e.range.slice(Cr.length),!0);return await i.resolver.getCandidates(n,r,i)}async getSatisfying(e,r,i){let n=P.parseDescriptor(e.range.slice(Cr.length),!0);return i.resolver.getSatisfying(n,r,i)}resolve(e,r){throw new Error("Unreachable")}};var hce=ge(ti()),pce=ge(require("url"));var bo=class{supports(e,r){if(!e.reference.startsWith(Cr))return!1;let i=new pce.URL(e.reference);return!(!hce.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,N({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${P.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i;try{i=await Bo(bo.getLocatorUrl(e),{configuration:r.project.configuration,ident:e})}catch(n){i=await Bo(bo.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:r.project.configuration,ident:e})}return await wi.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:P.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:i}){let n=wA(e.scope,{configuration:i}),s=bo.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===n+s||r===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=Wt.clean(e.reference.slice(Cr.length));if(r===null)throw new ct($.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");return`${Fl(e)}/-/${e.name}-${r}.tgz`}};var dce=ge(ti());var Cb=P.makeIdent(null,"node-gyp"),Z_e=/\b(node-gyp|prebuild-install)\b/,mT=class{supportsDescriptor(e,r){return e.range.startsWith(Cr)?!!Wt.validRange(e.range.slice(Cr.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(Cr))return!1;let{selector:i}=P.parseRange(e.reference);return!!dce.default.valid(i)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=Wt.validRange(e.range.slice(Cr.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(Cr.length)}`);let s=await Bo(Fl(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=Se.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new Wt.SemVer(c);if(n.test(u))return u}catch{}return Se.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=P.makeLocator(e,`${Cr}${c.raw}`),g=s.versions[c.raw].dist.tarball;return bo.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:P.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,r,i){let n=Wt.validRange(e.range.slice(Cr.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(Cr.length)}`);return Se.mapAndFilter(r,s=>{try{let{selector:o}=P.parseRange(s,{requireProtocol:Cr}),a=new Wt.SemVer(o);if(n.test(a))return{reference:s,version:a}}catch{}return Se.mapAndFilter.skip}).sort((s,o)=>-s.version.compare(o.version)).map(({reference:s})=>P.makeLocator(e,s))}async resolve(e,r){let{selector:i}=P.parseRange(e.reference),n=Wt.clean(i);if(n===null)throw new ct($.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");let s=await Bo(Fl(e),{configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"versions"))throw new ct($.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(s.versions,n))throw new ct($.REMOTE_NOT_FOUND,`Registry failed to return reference "${n}"`);let o=new At;if(o.load(s.versions[n]),!o.dependencies.has(Cb.identHash)&&!o.peerDependencies.has(Cb.identHash)){for(let a of o.scripts.values())if(a.match(Z_e)){o.dependencies.set(Cb.identHash,P.makeDescriptor(Cb,"latest")),r.report.reportWarningOnce($.NODE_GYP_INJECTED,`${P.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}if(typeof o.raw.deprecated=="string"&&o.raw.deprecated!==""){let a=P.prettyLocator(r.project.configuration,e),l=o.raw.deprecated.match(/\S/)?`${a} is deprecated: ${o.raw.deprecated}`:`${a} is deprecated`;r.report.reportWarningOnce($.DEPRECATED_PACKAGE,l)}return te(N({},e),{version:n,languageName:"node",linkType:Qt.HARD,conditions:o.getConditions(),dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin})}};var ET=class{supportsDescriptor(e,r){return!(!e.range.startsWith(Cr)||!Gg.test(e.range.slice(Cr.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Cr.length),s=await Bo(Fl(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"dist-tags"))throw new ct($.REMOTE_INVALID,'Registry returned invalid data - missing "dist-tags" field');let o=s["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,n))throw new ct($.REMOTE_NOT_FOUND,`Registry failed to return tag "${n}"`);let a=o[n],l=P.makeLocator(e,`${Cr}${a}`),c=s.versions[a].dist.tarball;return bo.isConventionalTarballUrl(l,c,{configuration:i.project.configuration})?[l]:[P.bindLocator(l,{__archiveUrl:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Unreachable")}};var yh={};ft(yh,{getGitHead:()=>VVe,makePublishBody:()=>_Ve});var aO={};ft(aO,{default:()=>DVe,packUtils:()=>vA});var vA={};ft(vA,{genPackList:()=>Ub,genPackStream:()=>oO,genPackageManifest:()=>Yue,hasPackScripts:()=>nO,prepareForPack:()=>sO});var iO=ge(ts()),jue=ge(Hue()),Gue=ge(require("zlib")),IVe=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],yVe=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function nO(t){return!!(Zt.hasWorkspaceScript(t,"prepack")||Zt.hasWorkspaceScript(t,"postpack"))}async function sO(t,{report:e},r){await Zt.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let i=k.join(t.cwd,At.fileName);await K.existsPromise(i)&&await t.manifest.loadFile(i,{baseFs:K}),await r()}finally{await Zt.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function oO(t,e){var s,o;typeof e=="undefined"&&(e=await Ub(t));let r=new Set;for(let a of(o=(s=t.manifest.publishConfig)==null?void 0:s.executableFiles)!=null?o:new Set)r.add(k.normalize(a));for(let a of t.manifest.bin.values())r.add(k.normalize(a));let i=jue.default.pack();process.nextTick(async()=>{for(let a of e){let l=k.normalize(a),c=k.resolve(t.cwd,l),u=k.join("package",l),g=await K.lstatPromise(c),f={name:u,mtime:new Date(Dr.SAFE_TIME*1e3)},h=r.has(l)?493:420,p,m,y=new Promise((S,x)=>{p=S,m=x}),Q=S=>{S?m(S):p()};if(g.isFile()){let S;l==="package.json"?S=Buffer.from(JSON.stringify(await Yue(t),null,2)):S=await K.readFilePromise(c),i.entry(te(N({},f),{mode:h,type:"file"}),S,Q)}else g.isSymbolicLink()?i.entry(te(N({},f),{mode:h,type:"symlink",linkname:await K.readlinkPromise(c)}),Q):Q(new Error(`Unsupported file type ${g.mode} for ${j.fromPortablePath(l)}`));await y}i.finalize()});let n=(0,Gue.createGzip)();return i.pipe(n),n}async function Yue(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function Ub(t){var g,f,h,p,m,y,Q,S;let e=t.project,r=e.configuration,i={accept:[],reject:[]};for(let x of yVe)i.reject.push(x);for(let x of IVe)i.accept.push(x);i.reject.push(r.get("rcFilename"));let n=x=>{if(x===null||!x.startsWith(`${t.cwd}/`))return;let M=k.relative(t.cwd,x),Y=k.resolve(Me.root,M);i.reject.push(Y)};n(k.resolve(e.cwd,r.get("lockfileFilename"))),n(r.get("cacheFolder")),n(r.get("globalFolder")),n(r.get("installStatePath")),n(r.get("virtualFolder")),n(r.get("yarnPath")),await r.triggerHook(x=>x.populateYarnPaths,e,x=>{n(x)});for(let x of e.workspaces){let M=k.relative(t.cwd,x.cwd);M!==""&&!M.match(/^(\.\.)?\//)&&i.reject.push(`/${M}`)}let s={accept:[],reject:[]},o=(f=(g=t.manifest.publishConfig)==null?void 0:g.main)!=null?f:t.manifest.main,a=(p=(h=t.manifest.publishConfig)==null?void 0:h.module)!=null?p:t.manifest.module,l=(y=(m=t.manifest.publishConfig)==null?void 0:m.browser)!=null?y:t.manifest.browser,c=(S=(Q=t.manifest.publishConfig)==null?void 0:Q.bin)!=null?S:t.manifest.bin;o!=null&&s.accept.push(k.resolve(Me.root,o)),a!=null&&s.accept.push(k.resolve(Me.root,a)),typeof l=="string"&&s.accept.push(k.resolve(Me.root,l));for(let x of c.values())s.accept.push(k.resolve(Me.root,x));if(l instanceof Map)for(let[x,M]of l.entries())s.accept.push(k.resolve(Me.root,x)),typeof M=="string"&&s.accept.push(k.resolve(Me.root,M));let u=t.manifest.files!==null;if(u){s.reject.push("/*");for(let x of t.manifest.files)que(s.accept,x,{cwd:Me.root})}return await wVe(t.cwd,{hasExplicitFileList:u,globalList:i,ignoreList:s})}async function wVe(t,{hasExplicitFileList:e,globalList:r,ignoreList:i}){let n=[],s=new Da(t),o=[[Me.root,[i]]];for(;o.length>0;){let[a,l]=o.pop(),c=await s.lstatPromise(a);if(!Wue(a,{globalList:r,ignoreLists:c.isDirectory()?null:l}))if(c.isDirectory()){let u=await s.readdirPromise(a),g=!1,f=!1;if(!e||a!==Me.root)for(let m of u)g=g||m===".gitignore",f=f||m===".npmignore";let h=f?await Jue(s,a,".npmignore"):g?await Jue(s,a,".gitignore"):null,p=h!==null?[h].concat(l):l;Wue(a,{globalList:r,ignoreLists:l})&&(p=[...l,{accept:[],reject:["**/*"]}]);for(let m of u)o.push([k.resolve(a,m),p])}else(c.isFile()||c.isSymbolicLink())&&n.push(k.relative(Me.root,a))}return n.sort()}async function Jue(t,e,r){let i={accept:[],reject:[]},n=await t.readFilePromise(k.join(e,r),"utf8");for(let s of n.split(/\n/g))que(i.reject,s,{cwd:e});return i}function BVe(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=k.resolve(e,t)),r&&(t=`!${t}`),t}function que(t,e,{cwd:r}){let i=e.trim();i===""||i[0]==="#"||t.push(BVe(i,{cwd:r}))}function Wue(t,{globalList:e,ignoreLists:r}){if(Kb(t,e.accept))return!1;if(Kb(t,e.reject))return!0;if(r!==null)for(let i of r){if(Kb(t,i.accept))return!1;if(Kb(t,i.reject))return!0}return!1}function Kb(t,e){let r=e,i=[];for(let n=0;n{await sO(i,{report:l},async()=>{l.reportJson({base:j.fromPortablePath(i.cwd)});let c=await Ub(i);for(let u of c)l.reportInfo(null,j.fromPortablePath(u)),l.reportJson({location:j.fromPortablePath(u)});if(!this.dryRun){let u=await oO(i,c),g=K.createWriteStream(s);u.pipe(g),await new Promise(f=>{g.on("finish",f)})}}),this.dryRun||(l.reportInfo($.UNNAMED,`Package archive generated in ${ae.pretty(e,s,ae.Type.PATH)}`),l.reportJson({output:j.fromPortablePath(s)}))})).exitCode()}};AE.paths=[["pack"]],AE.usage=Re.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});var _ue=AE;function bVe(t,{workspace:e}){let r=t.replace("%s",QVe(e)).replace("%v",vVe(e));return j.toPortablePath(r)}function QVe(t){return t.manifest.name!==null?P.slugifyIdent(t.manifest.name):"package"}function vVe(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var SVe=["dependencies","devDependencies","peerDependencies"],kVe="workspace:",xVe=(t,e)=>{var i,n;e.publishConfig&&(e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of SVe)for(let o of t.manifest.getForScope(s).values()){let a=r.tryWorkspaceByDescriptor(o),l=P.parseRange(o.range);if(l.protocol===kVe)if(a===null){if(r.tryWorkspaceByIdent(o)===null)throw new ct($.WORKSPACE_NOT_FOUND,`${P.prettyDescriptor(r.configuration,o)}: No local workspace found for this range`)}else{let c;P.areDescriptorsEqual(o,a.anchoredDescriptor)||l.selector==="*"?c=(i=a.manifest.version)!=null?i:"0.0.0":l.selector==="~"||l.selector==="^"?c=`${l.selector}${(n=a.manifest.version)!=null?n:"0.0.0"}`:c=l.selector;let u=s==="dependencies"?P.makeDescriptor(o,"unknown"):null,g=u!==null&&t.manifest.ensureDependencyMeta(u).optional?"optionalDependencies":s;e[g][P.stringifyIdent(o)]=c}}},PVe={hooks:{beforeWorkspacePacking:xVe},commands:[_ue]},DVe=PVe;var nge=ge(require("crypto")),sge=ge(ige()),oge=ge(require("url"));async function _Ve(t,e,{access:r,tag:i,registry:n,gitHead:s}){let o=t.project.configuration,a=t.manifest.name,l=t.manifest.version,c=P.stringifyIdent(a),u=(0,nge.createHash)("sha1").update(e).digest("hex"),g=sge.default.fromData(e).toString();typeof r=="undefined"&&(t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?r=t.manifest.publishConfig.access:o.get("npmPublishAccess")!==null?r=o.get("npmPublishAccess"):a.scope?r="restricted":r="public");let f=await vA.genPackageManifest(t),h=`${c}-${l}.tgz`,p=new oge.URL(`${ha(n)}/${c}/-/${h}`);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:c,access:r,["dist-tags"]:{[i]:l},versions:{[l]:te(N({},f),{_id:`${c}@${l}`,name:c,version:l,gitHead:s,dist:{shasum:u,integrity:g,tarball:p.toString()}})}}}async function VVe(t){try{let{stdout:e}=await Fr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}var gO={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:Ie.BOOLEAN,default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:Ie.SECRET,default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:Ie.SECRET,default:null}},age={npmAuditRegistry:{description:"Registry to query for audit reports",type:Ie.STRING,default:null},npmPublishRegistry:{description:"Registry to push packages to",type:Ie.STRING,default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:Ie.STRING,default:"https://registry.yarnpkg.com"}},XVe={configuration:te(N(N({},gO),age),{npmScopes:{description:"Settings per package scope",type:Ie.MAP,valueDefinition:{description:"",type:Ie.SHAPE,properties:N(N({},gO),age)}},npmRegistries:{description:"Settings per registry",type:Ie.MAP,normalizeKeys:ha,valueDefinition:{description:"",type:Ie.SHAPE,properties:N({},gO)}}}),fetchers:[dT,bo],resolvers:[CT,mT,ET]},ZVe=XVe;var dO={};ft(dO,{default:()=>a9e});Es();var Ea;(function(i){i.All="all",i.Production="production",i.Development="development"})(Ea||(Ea={}));var vo;(function(s){s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical"})(vo||(vo={}));var Hb=[vo.Info,vo.Low,vo.Moderate,vo.High,vo.Critical];function Age(t,e){let r=[],i=new Set,n=o=>{i.has(o)||(i.add(o),r.push(o))};for(let o of e)n(o);let s=new Set;for(;r.length>0;){let o=r.shift(),a=t.storedResolutions.get(o);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=t.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function $Ve(t,e){return new Set([...t].filter(r=>!e.has(r)))}function e9e(t,e,{all:r}){let i=r?t.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=Age(t,l),g=Age(t,c);return $Ve(g,u)}function lge(t){let e={};for(let r of t)e[P.stringifyIdent(r)]=P.parseRange(r.range).selector;return e}function cge(t){if(typeof t=="undefined")return new Set;let e=Hb.indexOf(t),r=Hb.slice(e);return new Set(r)}function t9e(t,e){let r=cge(e),i={};for(let n of r)i[n]=t[n];return i}function uge(t,e){var i;let r=t9e(t,e);for(let n of Object.keys(r))if((i=r[n])!=null?i:0>0)return!0;return!1}function gge(t,e){var s;let r={},i={children:r},n=Object.values(t.advisories);if(e!=null){let o=cge(e);n=n.filter(a=>o.has(a.severity))}for(let o of Se.sortMap(n,a=>a.module_name))r[o.module_name]={label:o.module_name,value:ae.tuple(ae.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{Issue:{label:"Issue",value:ae.tuple(ae.Type.NO_HINT,o.title)},URL:{label:"URL",value:ae.tuple(ae.Type.URL,o.url)},Severity:{label:"Severity",value:ae.tuple(ae.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ae.tuple(ae.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ae.tuple(ae.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ae.tuple(ae.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ae.tuple(ae.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function fge(t,e,{all:r,environment:i}){let n=r?t.workspaces:[e],s=[Ea.All,Ea.Production].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=[Ea.All,Ea.Development].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return lge([...o,...l].filter(c=>P.parseRange(c.range).protocol===null))}function hge(t,e,{all:r}){var s;let i=e9e(t,e,{all:r}),n={};for(let o of t.storedPackages.values())n[P.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:lge(o.dependencies.values()),dev:i.has(P.convertLocatorToDescriptor(o).descriptorHash)};return n}var uE=class extends Le{constructor(){super(...arguments);this.all=z.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=z.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=z.String("--environment",Ea.All,{description:"Which environments to cover",validator:nn(Ea)});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=z.String("--severity",vo.Info,{description:"Minimal severity requested for packages to be displayed",validator:nn(vo)})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd);if(!i)throw new ht(r.cwd,this.context.cwd);await r.restoreInstallState();let n=fge(r,i,{all:this.all,environment:this.environment}),s=hge(r,i,{all:this.all});if(!this.recursive)for(let f of Object.keys(s))Object.prototype.hasOwnProperty.call(n,f)?s[f].requires={}:delete s[f];let o={requires:n,dependencies:s},a=br.getAuditRegistry(i.manifest,{configuration:e}),l,c=await uA.start({configuration:e,stdout:this.context.stdout},async()=>{l=await zt.post("/-/npm/v1/security/audits/quick",o,{authType:zt.AuthType.BEST_EFFORT,configuration:e,jsonResponse:!0,registry:a})});if(c.hasErrors())return c.exitCode();let u=uge(l.metadata.vulnerabilities,this.severity);return!this.json&&u?(as.emitTree(gge(l,this.severity),{configuration:e,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Je.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async f=>{f.reportJson(l),u||f.reportInfo($.EXCEPTION,"No audit suggestions")})).exitCode()}};uE.paths=[["npm","audit"]],uE.usage=Re.Usage({description:"perform a vulnerability audit against the installed packages",details:` + This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). + + For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. + + Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${Hb.map(e=>`\`${e}\``).join(", ")}. + + If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. + + To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them. + `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"]]});var pge=uE;var fO=ge(ti()),hO=ge(require("util")),gE=class extends Le{constructor(){super(...arguments);this.fields=z.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=z.Rest()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r}=await ze.find(e,this.context.cwd),i=typeof this.fields!="undefined"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],s=!1,o=await Je.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async a=>{for(let l of this.packages){let c;if(l==="."){let x=r.topLevelWorkspace;if(!x.manifest.name)throw new Pe(`Missing ${ae.pretty(e,"name",ae.Type.CODE)} field in ${j.fromPortablePath(k.join(x.cwd,Pt.manifest))}`);c=P.makeDescriptor(x.manifest.name,"unknown")}else c=P.parseDescriptor(l);let u=zt.getIdentUrl(c),g=pO(await zt.get(u,{configuration:e,ident:c,jsonResponse:!0,customErrorMessage:zt.customPackageError})),f=Object.keys(g.versions).sort(fO.default.compareLoose),p=g["dist-tags"].latest||f[f.length-1],m=Wt.validRange(c.range);if(m){let x=fO.default.maxSatisfying(f,m);x!==null?p=x:(a.reportWarning($.UNNAMED,`Unmet range ${P.prettyRange(e,c.range)}; falling back to the latest version`),s=!0)}else Object.prototype.hasOwnProperty.call(g["dist-tags"],c.range)?p=g["dist-tags"][c.range]:c.range!=="unknown"&&(a.reportWarning($.UNNAMED,`Unknown tag ${P.prettyRange(e,c.range)}; falling back to the latest version`),s=!0);let y=g.versions[p],Q=te(N(N({},g),y),{version:p,versions:f}),S;if(i!==null){S={};for(let x of i){let M=Q[x];if(typeof M!="undefined")S[x]=M;else{a.reportWarning($.EXCEPTION,`The ${ae.pretty(e,x,ae.Type.CODE)} field doesn't exist inside ${P.prettyIdent(e,c)}'s information`),s=!0;continue}}}else this.json||(delete Q.dist,delete Q.readme,delete Q.users),S=Q;a.reportJson(S),this.json||n.push(S)}});hO.inspect.styles.name="cyan";for(let a of n)(a!==n[0]||s)&&this.context.stdout.write(` +`),this.context.stdout.write(`${(0,hO.inspect)(a,{depth:Infinity,colors:!0,compact:!1})} +`);return o.exitCode()}};gE.paths=[["npm","info"]],gE.usage=Re.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});var dge=gE;function pO(t){if(Array.isArray(t)){let e=[];for(let r of t)r=pO(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let i=pO(t[r]);i&&(e[r]=i)}return e}else return t||null}var Cge=ge($C()),fE=class extends Le{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),r=await jb({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Je.start({configuration:e,stdout:this.context.stdout},async n=>{let s=await i9e({registry:r,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),o=`/-/user/org.couchdb.user:${encodeURIComponent(s.name)}`,a=await zt.put(o,s,{attemptedAs:s.name,configuration:e,registry:r,jsonResponse:!0,authType:zt.AuthType.NO_AUTH});return await r9e(r,a.token,{configuration:e,scope:this.scope}),n.reportInfo($.UNNAMED,"Successfully logged in")})).exitCode()}};fE.paths=[["npm","login"]],fE.usage=Re.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});var mge=fE;async function jb({scope:t,publish:e,configuration:r,cwd:i}){return t&&e?br.getScopeRegistry(t,{configuration:r,type:br.RegistryType.PUBLISH_REGISTRY}):t?br.getScopeRegistry(t,{configuration:r}):e?br.getPublishRegistry((await Jf(r,i)).manifest,{configuration:r}):br.getDefaultRegistry({configuration:r})}async function r9e(t,e,{configuration:r,scope:i}){let n=o=>a=>{let l=Se.isIndexableObject(a)?a:{},c=l[o],u=Se.isIndexableObject(c)?c:{};return te(N({},l),{[o]:te(N({},u),{npmAuthToken:e})})},s=i?{npmScopes:n(i)}:{npmRegistries:n(t)};return await ye.updateHomeConfiguration(s)}async function i9e({registry:t,report:e,stdin:r,stdout:i}){if(process.env.TEST_ENV)return{name:process.env.TEST_NPM_USER||"",password:process.env.TEST_NPM_PASSWORD||""};e.reportInfo($.UNNAMED,`Logging in to ${t}`);let n=!1;t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(e.reportInfo($.UNNAMED,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),e.reportSeparator();let{username:s,password:o}=await(0,Cge.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i}]);return e.reportSeparator(),{name:s,password:o}}var wh=new Set(["npmAuthIdent","npmAuthToken"]),hE=class extends Le{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=z.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),r=async()=>{var l;let n=await jb({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),s=await ye.find(this.context.cwd,this.context.plugins),o=P.makeIdent((l=this.scope)!=null?l:null,"pkg");return!br.getAuthConfiguration(n,{configuration:s,ident:o}).get("npmAuthToken")};return(await Je.start({configuration:e,stdout:this.context.stdout},async n=>{if(this.all&&(await n9e(),n.reportInfo($.UNNAMED,"Successfully logged out from everything")),this.scope){await Ege("npmScopes",this.scope),await r()?n.reportInfo($.UNNAMED,`Successfully logged out from ${this.scope}`):n.reportWarning($.UNNAMED,"Scope authentication settings removed, but some other ones settings still apply to it");return}let s=await jb({configuration:e,cwd:this.context.cwd,publish:this.publish});await Ege("npmRegistries",s),await r()?n.reportInfo($.UNNAMED,`Successfully logged out from ${s}`):n.reportWarning($.UNNAMED,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};hE.paths=[["npm","logout"]],hE.usage=Re.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});var Ige=hE;function s9e(t,e){let r=t[e];if(!Se.isIndexableObject(r))return!1;let i=new Set(Object.keys(r));if([...wh].every(s=>!i.has(s)))return!1;for(let s of wh)i.delete(s);if(i.size===0)return t[e]=void 0,!0;let n=N({},r);for(let s of wh)delete n[s];return t[e]=n,!0}async function n9e(){let t=e=>{let r=!1,i=Se.isIndexableObject(e)?N({},e):{};i.npmAuthToken&&(delete i.npmAuthToken,r=!0);for(let n of Object.keys(i))s9e(i,n)&&(r=!0);if(Object.keys(i).length!==0)return r?i:e};return await ye.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function Ege(t,e){return await ye.updateHomeConfiguration({[t]:r=>{let i=Se.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(i,e))return r;let n=i[e],s=Se.isIndexableObject(n)?n:{},o=new Set(Object.keys(s));if([...wh].every(l=>!o.has(l)))return r;for(let l of wh)o.delete(l);if(o.size===0)return Object.keys(i).length===1?void 0:te(N({},i),{[e]:void 0});let a={};for(let l of wh)a[l]=void 0;return te(N({},i),{[e]:N(N({},s),a)})}})}var pE=class extends Le{constructor(){super(...arguments);this.access=z.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=z.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=z.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=z.String("--otp",{description:"The OTP token to use with the command"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd);if(!i)throw new ht(r.cwd,this.context.cwd);if(i.manifest.private)throw new Pe("Private workspaces cannot be published");if(i.manifest.name===null||i.manifest.version===null)throw new Pe("Workspaces must have valid names and versions to be published on an external registry");await r.restoreInstallState();let n=i.manifest.name,s=i.manifest.version,o=br.getPublishRegistry(i.manifest,{configuration:e});return(await Je.start({configuration:e,stdout:this.context.stdout},async l=>{var c,u;if(this.tolerateRepublish)try{let g=await zt.get(zt.getIdentUrl(n),{configuration:e,registry:o,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(g,"versions"))throw new ct($.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(g.versions,s)){l.reportWarning($.UNNAMED,`Registry already knows about version ${s}; skipping.`);return}}catch(g){if(((u=(c=g.originalError)==null?void 0:c.response)==null?void 0:u.statusCode)!==404)throw g}await Zt.maybeExecuteWorkspaceLifecycleScript(i,"prepublish",{report:l}),await vA.prepareForPack(i,{report:l},async()=>{let g=await vA.genPackList(i);for(let y of g)l.reportInfo(null,y);let f=await vA.genPackStream(i,g),h=await Se.bufferStream(f),p=await yh.getGitHead(i.cwd),m=await yh.makePublishBody(i,h,{access:this.access,tag:this.tag,registry:o,gitHead:p});await zt.put(zt.getIdentUrl(n),m,{configuration:e,registry:o,ident:n,otp:this.otp,jsonResponse:!0})}),l.reportInfo($.UNNAMED,"Package archive published")})).exitCode()}};pE.paths=[["npm","publish"]],pE.usage=Re.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});var yge=pE;var Bge=ge(ti());var dE=class extends Le{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=z.String({required:!1})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n;if(typeof this.package!="undefined")n=P.parseIdent(this.package);else{if(!i)throw new ht(r.cwd,this.context.cwd);if(!i.manifest.name)throw new Pe(`Missing 'name' field in ${j.fromPortablePath(k.join(i.cwd,Pt.manifest))}`);n=i.manifest.name}let s=await CE(n,e),a={children:Se.sortMap(Object.entries(s),([l])=>l).map(([l,c])=>({value:ae.tuple(ae.Type.RESOLUTION,{descriptor:P.makeDescriptor(n,l),locator:P.makeLocator(n,c)})}))};return as.emitTree(a,{configuration:e,json:this.json,stdout:this.context.stdout})}};dE.paths=[["npm","tag","list"]],dE.usage=Re.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` + This command will list all tags of a package from the npm registry. + + If the package is not specified, Yarn will default to the current workspace. + `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});var wge=dE;async function CE(t,e){let r=`/-/package${zt.getIdentUrl(t)}/dist-tags`;return zt.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:zt.customPackageError})}var mE=class extends Le{constructor(){super(...arguments);this.package=z.String();this.tag=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd);if(!i)throw new ht(r.cwd,this.context.cwd);let n=P.parseDescriptor(this.package,!0),s=n.range;if(!Bge.default.valid(s))throw new Pe(`The range ${ae.pretty(e,n.range,ae.Type.RANGE)} must be a valid semver version`);let o=br.getPublishRegistry(i.manifest,{configuration:e}),a=ae.pretty(e,n,ae.Type.IDENT),l=ae.pretty(e,s,ae.Type.RANGE),c=ae.pretty(e,this.tag,ae.Type.CODE);return(await Je.start({configuration:e,stdout:this.context.stdout},async g=>{let f=await CE(n,e);Object.prototype.hasOwnProperty.call(f,this.tag)&&f[this.tag]===s&&g.reportWarning($.UNNAMED,`Tag ${c} is already set to version ${l}`);let h=`/-/package${zt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await zt.put(h,s,{configuration:e,registry:o,ident:n,jsonRequest:!0,jsonResponse:!0}),g.reportInfo($.UNNAMED,`Tag ${c} added to version ${l} of package ${a}`)})).exitCode()}};mE.paths=[["npm","tag","add"]],mE.usage=Re.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` + This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. + `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});var bge=mE;var EE=class extends Le{constructor(){super(...arguments);this.package=z.String();this.tag=z.String()}async execute(){if(this.tag==="latest")throw new Pe("The 'latest' tag cannot be removed.");let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd);if(!i)throw new ht(r.cwd,this.context.cwd);let n=P.parseIdent(this.package),s=br.getPublishRegistry(i.manifest,{configuration:e}),o=ae.pretty(e,this.tag,ae.Type.CODE),a=ae.pretty(e,n,ae.Type.IDENT),l=await CE(n,e);if(!Object.prototype.hasOwnProperty.call(l,this.tag))throw new Pe(`${o} is not a tag of package ${a}`);return(await Je.start({configuration:e,stdout:this.context.stdout},async u=>{let g=`/-/package${zt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await zt.del(g,{configuration:e,registry:s,ident:n,jsonResponse:!0}),u.reportInfo($.UNNAMED,`Tag ${o} removed from package ${a}`)})).exitCode()}};EE.paths=[["npm","tag","remove"]],EE.usage=Re.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` + This command will remove a tag from a package from the npm registry. + `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var Qge=EE;var IE=class extends Le{constructor(){super(...arguments);this.scope=z.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=z.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),r;return this.scope&&this.publish?r=br.getScopeRegistry(this.scope,{configuration:e,type:br.RegistryType.PUBLISH_REGISTRY}):this.scope?r=br.getScopeRegistry(this.scope,{configuration:e}):this.publish?r=br.getPublishRegistry((await Jf(e,this.context.cwd)).manifest,{configuration:e}):r=br.getDefaultRegistry({configuration:e}),(await Je.start({configuration:e,stdout:this.context.stdout},async n=>{var o,a;let s;try{s=await zt.get("/-/whoami",{configuration:e,registry:r,authType:zt.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?P.makeIdent(this.scope,""):void 0})}catch(l){if(((o=l.response)==null?void 0:o.statusCode)===401||((a=l.response)==null?void 0:a.statusCode)===403){n.reportError($.AUTHENTICATION_INVALID,"Authentication failed - your credentials may have expired");return}else throw l}n.reportInfo($.UNNAMED,s.username)})).exitCode()}};IE.paths=[["npm","whoami"]],IE.usage=Re.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var vge=IE;var o9e={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:Ie.STRING,default:null}},commands:[pge,dge,mge,Ige,yge,bge,wge,Qge,vge]},a9e=o9e;var bO={};ft(bO,{default:()=>B9e,patchUtils:()=>CO});var CO={};ft(CO,{applyPatchFile:()=>qb,diffFolders:()=>yO,extractPackageToDisk:()=>IO,extractPatchFlags:()=>Nge,isParentRequired:()=>EO,loadPatchFiles:()=>bE,makeDescriptor:()=>I9e,makeLocator:()=>mO,parseDescriptor:()=>wE,parseLocator:()=>BE,parsePatchFile:()=>Yb});var yE=class extends Error{constructor(e,r){super(`Cannot apply hunk #${e+1}`);this.hunk=r}};var A9e=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Bh(t){return k.relative(Me.root,k.resolve(Me.root,j.toPortablePath(t)))}function l9e(t){let e=t.trim().match(A9e);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var c9e=420,u9e=493,Xr;(function(i){i.Context="context",i.Insertion="insertion",i.Deletion="deletion"})(Xr||(Xr={}));var Sge=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),g9e=t=>({header:l9e(t),parts:[]}),f9e={["@"]:"header",["-"]:Xr.Deletion,["+"]:Xr.Insertion,[" "]:Xr.Context,["\\"]:"pragma",undefined:Xr.Context};function p9e(t){let e=[],r=Sge(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),r.hunks.push(n),n=null)}function a(){o(),e.push(r),r=Sge()}for(let l=0;l0?"patch":"mode change",S=null;switch(Q){case"rename":{if(!u||!g)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:i,fromPath:Bh(u),toPath:Bh(g)}),S=g}break;case"file deletion":{let x=n||p;if(!x)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:i,hunk:y&&y[0]||null,path:Bh(x),mode:Gb(l),hash:f})}break;case"file creation":{let x=s||m;if(!x)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:i,hunk:y&&y[0]||null,path:Bh(x),mode:Gb(c),hash:h})}break;case"patch":case"mode change":S=m||s;break;default:Se.assertNever(Q);break}S&&o&&a&&o!==a&&e.push({type:"mode change",semverExclusivity:i,path:Bh(S),oldMode:Gb(o),newMode:Gb(a)}),S&&y&&y.length&&e.push({type:"patch",semverExclusivity:i,path:Bh(S),hunks:y,beforeHash:f,afterHash:h})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function Gb(t){let e=parseInt(t,8)&511;if(e!==c9e&&e!==u9e)throw new Error(`Unexpected file mode string: ${t}`);return e}function Yb(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),d9e(p9e(e))}function h9e(t){let e=0,r=0;for(let{type:i,lines:n}of t.parts)switch(i){case Xr.Context:r+=n.length,e+=n.length;break;case Xr.Deletion:e+=n.length;break;case Xr.Insertion:r+=n.length;break;default:Se.assertNever(i);break}if(e!==t.header.original.length||r!==t.header.patched.length){let i=n=>n<0?n:`+${n}`;throw new Error(`hunk header integrity check failed (expected @@ ${i(t.header.original.length)} ${i(t.header.patched.length)} @@, got @@ ${i(e)} ${i(r)} @@)`)}}async function bh(t,e,r){let i=await t.lstatPromise(e),n=await r();if(typeof n!="undefined"&&(e=n),t.lutimesPromise)await t.lutimesPromise(e,i.atime,i.mtime);else if(!i.isSymbolicLink())await t.utimesPromise(e,i.atime,i.mtime);else throw new Error("Cannot preserve the time values of a symlink")}async function qb(t,{baseFs:e=new ar,dryRun:r=!1,version:i=null}={}){for(let n of t)if(!(n.semverExclusivity!==null&&i!==null&&!Wt.satisfiesWithPrereleases(i,n.semverExclusivity)))switch(n.type){case"file deletion":if(r){if(!e.existsSync(n.path))throw new Error(`Trying to delete a file that doesn't exist: ${n.path}`)}else await bh(e,k.dirname(n.path),async()=>{await e.unlinkPromise(n.path)});break;case"rename":if(r){if(!e.existsSync(n.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${n.fromPath}`)}else await bh(e,k.dirname(n.fromPath),async()=>{await bh(e,k.dirname(n.toPath),async()=>{await bh(e,n.fromPath,async()=>(await e.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(r){if(e.existsSync(n.path))throw new Error(`Trying to create a file that already exists: ${n.path}`)}else{let s=n.hunk?n.hunk.parts[0].lines.join(` +`)+(n.hunk.parts[0].noNewlineAtEndOfFile?"":` +`):"";await e.mkdirpPromise(k.dirname(n.path),{chmod:493,utimes:[Dr.SAFE_TIME,Dr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,Dr.SAFE_TIME,Dr.SAFE_TIME)}break;case"patch":await bh(e,n.path,async()=>{await C9e(n,{baseFs:e,dryRun:r})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(kge(n.newMode)!==kge(o))continue;await bh(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:Se.assertNever(n);break}}function kge(t){return(t&64)>0}function xge(t){return t.replace(/\s+$/,"")}function m9e(t,e){return xge(t)===xge(e)}async function C9e({hunks:t,path:e},{baseFs:r,dryRun:i=!1}){let n=await r.statSync(e).mode,o=(await r.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of t){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),m=Math.max(h,p),y=0,Q=0,S=null;for(;y<=m;){if(y<=h&&(Q=f-y,S=Pge(g,o,Q),S!==null)){y=-y;break}if(y<=p&&(Q=f+y,S=Pge(g,o,Q),S!==null))break;y+=1}if(S===null)throw new yE(t.indexOf(g),g);a.push(S),l+=y,c=Q+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:Se.assertNever(f);break}await r.writeFilePromise(e,o.join(` +`),{mode:n})}function Pge(t,e,r){let i=[];for(let n of t.parts)switch(n.type){case Xr.Context:case Xr.Deletion:{for(let s of n.lines){let o=e[r];if(o==null||!m9e(o,s))return null;r+=1}n.type===Xr.Deletion&&(i.push({type:"splice",index:r-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case Xr.Insertion:i.push({type:"splice",index:r,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:Se.assertNever(n.type);break}return i}var E9e=/^builtin<([^>]+)>$/;function Dge(t,e){let{source:r,selector:i,params:n}=P.parseRange(t);if(r===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>j.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?P.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(r);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function wE(t){let i=Dge(t.range,P.parseDescriptor),{sourceItem:e}=i,r=Tr(i,["sourceItem"]);return te(N({},r),{sourceDescriptor:e})}function BE(t){let i=Dge(t.reference,P.parseLocator),{sourceItem:e}=i,r=Tr(i,["sourceItem"]);return te(N({},r),{sourceLocator:e})}function Rge({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:i,patchHash:n},s){let o=t!==null?{locator:P.stringifyLocator(t)}:{},a=typeof i!="undefined"?{version:i}:{},l=typeof n!="undefined"?{hash:n}:{};return P.makeRange({protocol:"patch:",source:s(e),selector:r.join("&"),params:N(N(N({},a),l),o)})}function I9e(t,{parentLocator:e,sourceDescriptor:r,patchPaths:i}){return P.makeLocator(t,Rge({parentLocator:e,sourceItem:r,patchPaths:i},P.stringifyDescriptor))}function mO(t,{parentLocator:e,sourcePackage:r,patchPaths:i,patchHash:n}){return P.makeLocator(t,Rge({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:i,patchHash:n},P.stringifyLocator))}function Fge({onAbsolute:t,onRelative:e,onBuiltin:r},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(E9e);return s!==null?r(s[1]):k.isAbsolute(i)?t(i):e(i)}function Nge(t){let e=t.startsWith("~");return e&&(t=t.slice(1)),{optional:e}}function EO(t){return Fge({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},t)}async function bE(t,e,r){let i=t!==null?await r.fetcher.fetch(t,r):null,n=i&&i.localPath?{packageFs:new _t(Me.root),prefixPath:k.relative(Me.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await Se.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=Nge(o),l=await Fge({onAbsolute:async()=>await K.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(k.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await r.project.configuration.firstHook(u=>u.getBuiltinPatch,r.project,c)},o);return te(N({},a),{source:l})})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,` +`));return s}async function IO(t,{cache:e,project:r}){let i=r.storedPackages.get(t.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let n=r.storedChecksums,s=new pi,o=r.configuration.makeFetcher(),a=await o.fetch(t,{cache:e,project:r,fetcher:o,checksums:n,report:s}),l=await K.mktempPromise(),c=k.join(l,"source"),u=k.join(l,"user"),g=k.join(l,".yarn-patch.json");return await Promise.all([K.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),K.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),K.writeJsonPromise(g,{locator:P.stringifyLocator(t),version:i.version})]),K.detachTemp(l),u}async function yO(t,e){let r=j.fromPortablePath(t).replace(/\\/g,"/"),i=j.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await Fr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--text",r,i],{cwd:j.toPortablePath(process.cwd()),env:te(N({},process.env),{GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""})});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. +The following error was reported by 'git': +${s}`);let o=r.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${Se.escapeRegExp(`/${o(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${Se.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(Se.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(Se.escapeRegExp(`${i}/`),"g"),"")}function Lge(t,{configuration:e,report:r}){for(let i of t.parts)for(let n of i.lines)switch(i.type){case Xr.Context:r.reportInfo(null,` ${ae.pretty(e,n,"grey")}`);break;case Xr.Deletion:r.reportError($.FROZEN_LOCKFILE_EXCEPTION,`- ${ae.pretty(e,n,ae.Type.REMOVED)}`);break;case Xr.Insertion:r.reportError($.FROZEN_LOCKFILE_EXCEPTION,`+ ${ae.pretty(e,n,ae.Type.ADDED)}`);break;default:Se.assertNever(i.type)}}var wO=class{supports(e,r){return!!e.reference.startsWith("patch:")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,N({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${P.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:P.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async patchPackage(e,r){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=BE(e),a=await bE(i,o,r),l=await K.mktempPromise(),c=k.join(l,"current.zip"),u=await r.fetcher.fetch(n,r),g=P.getIdentVendorPath(e),f=await fn(),h=new Ai(c,{libzip:f,create:!0,level:r.project.configuration.get("compressionLevel")});await Se.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:m}of a){if(p===null)continue;let y=new Ai(c,{libzip:f,level:r.project.configuration.get("compressionLevel")}),Q=new _t(k.resolve(Me.root,g),{baseFs:y});try{await qb(Yb(p),{baseFs:Q,version:s})}catch(S){if(!(S instanceof yE))throw S;let x=r.project.configuration.get("enableInlineHunks"),M=!x&&!m?" (set enableInlineHunks for details)":"",Y=`${P.prettyLocator(r.project.configuration,e)}: ${S.message}${M}`,U=J=>{!x||Lge(S.hunk,{configuration:r.project.configuration,report:J})};if(y.discardAndClose(),m){r.report.reportWarningOnce($.PATCH_HUNK_FAILED,Y,{reportExtra:U});continue}else throw new ct($.PATCH_HUNK_FAILED,Y,U)}y.saveAndClose()}return new Ai(c,{libzip:f,level:r.project.configuration.get("compressionLevel")})}};var y9e=3,BO=class{supportsDescriptor(e,r){return!!e.range.startsWith("patch:")}supportsLocator(e,r){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){let{patchPaths:n}=wE(e);return n.every(s=>!EO(s))?e:P.bindDescriptor(e,{locator:P.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:i}=wE(e);return[i]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=wE(e),a=await bE(n,o,i.fetchOptions),l=r.get(s.descriptorHash);if(typeof l=="undefined")throw new Error("Assertion failed: The dependency should have been resolved");let c=Dn.makeHash(`${y9e}`,...a.map(u=>JSON.stringify(u))).slice(0,6);return[mO(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){let{sourceLocator:i}=BE(e),n=await r.resolver.resolve(i,r);return N(N({},n),e)}};var QE=class extends Le{constructor(){super(...arguments);this.save=z.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd);if(!i)throw new ht(r.cwd,this.context.cwd);await r.restoreInstallState();let n=k.resolve(this.context.cwd,j.toPortablePath(this.patchFolder)),s=k.join(n,"../source"),o=k.join(n,"../.yarn-patch.json");if(!K.existsSync(s))throw new Pe("The argument folder didn't get created by 'yarn patch'");let a=await yO(s,n),l=await K.readJsonPromise(o),c=P.parseLocator(l.locator,!0);if(!r.storedPackages.has(c.locatorHash))throw new Pe("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(a);return}let u=e.get("patchFolder"),g=k.join(u,`${P.slugifyLocator(c)}.patch`);await K.mkdirPromise(u,{recursive:!0}),await K.writeFilePromise(g,a);let f=k.relative(r.cwd,g);r.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:P.stringifyIdent(c),description:l.version}},reference:`patch:${P.stringifyLocator(c)}#${f}`}),await r.persist()}};QE.paths=[["patch-commit"]],QE.usage=Re.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});var Tge=QE;var vE=class extends Le{constructor(){super(...arguments);this.json=z.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=z.String()}async execute(){let e=await ye.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await ze.find(e,this.context.cwd),n=await Nt.find(e);if(!i)throw new ht(r.cwd,this.context.cwd);await r.restoreInstallState();let s=P.parseLocator(this.package);if(s.reference==="unknown"){let o=Se.mapAndFilter([...r.storedPackages.values()],a=>a.identHash!==s.identHash?Se.mapAndFilter.skip:P.isVirtualLocator(a)?Se.mapAndFilter.skip:a);if(o.length===0)throw new Pe("No package found in the project for the given locator");if(o.length>1)throw new Pe(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): +${o.map(a=>` +- ${P.prettyLocator(e,a)}`).join("")}`);s=o[0]}if(!r.storedPackages.has(s.locatorHash))throw new Pe("No package found in the project for the given locator");await Je.start({configuration:e,json:this.json,stdout:this.context.stdout},async o=>{let a=await IO(s,{cache:n,project:r});o.reportJson({locator:P.stringifyLocator(s),path:j.fromPortablePath(a)}),o.reportInfo($.UNNAMED,`Package ${P.prettyLocator(e,s)} got extracted with success!`),o.reportInfo($.UNNAMED,`You can now edit the following folder: ${ae.pretty(e,j.fromPortablePath(a),"magenta")}`),o.reportInfo($.UNNAMED,`Once you are done run ${ae.pretty(e,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${j.fromPortablePath(a)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};vE.paths=[["patch"]],vE.usage=Re.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n \n Once you're done with your changes, run `yarn patch-commit -s ` (with `` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n "});var Oge=vE;var w9e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:Ie.BOOLEAN,default:!1},patchFolder:{description:"Folder where the patch files must be written",type:Ie.ABSOLUTE_PATH,default:"./.yarn/patches"}},commands:[Tge,Oge],fetchers:[wO],resolvers:[BO]},B9e=w9e;var kO={};ft(kO,{default:()=>v9e});var QO=class{supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let i=vO(),n=r.project.installersCustomData.get(i);if(!n)throw new Pe(`The project in ${ae.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ae.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=n.pathByLocator.get(e.locatorHash);if(typeof s=="undefined")throw new Pe(`Couldn't find ${P.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return s}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let i=vO(),n=r.project.installersCustomData.get(i);if(!n)throw new Pe(`The project in ${ae.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ae.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=k.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new Mge(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},Mge=class{constructor(e){this.opts=e;this.asyncActions=new Se.AsyncActions(10);this.customData={pathByLocator:new Map,locatorByPath:new Map}}getCustomDataKey(){return vO()}attachCustomData(e){}async installPackage(e,r,i){switch(e.linkType){case Qt.SOFT:return this.installPackageSoft(e,r,i);case Qt.HARD:return this.installPackageHard(e,r,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,i){let n=k.resolve(r.packageFs.getRealPath(),r.prefixPath);return this.customData.pathByLocator.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,r,i){var u;let n=b9e(e,{project:this.opts.project});this.customData.locatorByPath.set(n,P.stringifyLocator(e)),this.customData.pathByLocator.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await K.mkdirPromise(n,{recursive:!0}),await K.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1})}));let o=P.isVirtualLocator(e)?P.devirtualizeLocator(e):e,a={manifest:(u=await At.tryFind(r.prefixPath,{baseFs:r.packageFs}))!=null?u:new At,misc:{hasBindingGyp:wo.hasBindingGyp(r)}},l=this.opts.project.getDependencyMeta(o,e.version),c=wo.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,r){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!Hge(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.customData.pathByLocator.get(e.locatorHash);if(typeof n=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${P.stringifyLocator(e)})`);let s=k.join(n,Pt.nodeModules),o=[],a=await jge(s);for(let[l,c]of r){let u=c;Hge(c,{project:this.opts.project})||(this.opts.report.reportWarning($.UNNAMED,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=P.devirtualizeLocator(c));let g=this.customData.pathByLocator.get(u.locatorHash);if(typeof g=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${P.stringifyLocator(c)})`);let f=P.stringifyIdent(l),h=k.join(s,f),p=k.relative(k.dirname(h),g),m=a.get(f);a.delete(f),o.push(Promise.resolve().then(async()=>{if(m){if(m.isSymbolicLink()&&await K.readlinkPromise(h)===p)return;await K.removePromise(h)}await K.mkdirpPromise(k.dirname(h)),process.platform=="win32"?await K.symlinkPromise(g,h,"junction"):await K.symlinkPromise(p,h)}))}o.push(Gge(s,a)),await Promise.all(o)}))}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=Kge(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await K.removePromise(e);else{let r=[],i=new Set;for(let s of this.customData.pathByLocator.values()){let o=k.contains(e,s);if(o!==null){let[a,,...l]=o.split(k.sep);i.add(a);let c=k.join(e,a);r.push(K.readdirPromise(c).then(u=>Promise.all(u.map(async g=>{let f=k.join(c,g);if(g===Pt.nodeModules){let h=await jge(f);return h.delete(l.join(k.sep)),Gge(f,h)}else return K.removePromise(f)}))).catch(u=>{if(u.code!=="ENOENT")throw u}))}}let n;try{n=await K.readdirPromise(e)}catch{n=[]}for(let s of n)i.has(s)||r.push(K.removePromise(k.join(e,s)));await Promise.all(r)}return await this.asyncActions.wait(),await SO(e),await SO(Uge(this.opts.project)),{customData:this.customData}}};function vO(){return JSON.stringify({name:"PnpmInstaller",version:2})}function Uge(t){return k.join(t.cwd,Pt.nodeModules)}function Kge(t){return k.join(Uge(t),".store")}function b9e(t,{project:e}){let r=P.slugifyLocator(t),i=P.getIdentVendorPath(t);return k.join(Kge(e),r,i)}function Hge(t,{project:e}){return!P.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function jge(t){let e=new Map,r=[];try{r=await K.readdirPromise(t,{withFileTypes:!0})}catch(i){if(i.code!=="ENOENT")throw i}try{for(let i of r)if(!i.name.startsWith("."))if(i.name.startsWith("@")){let n=await K.readdirPromise(k.join(t,i.name),{withFileTypes:!0});if(n.length===0)e.set(i.name,i);else for(let s of n)e.set(`${i.name}/${s.name}`,s)}else e.set(i.name,i)}catch(i){if(i.code!=="ENOENT")throw i}return e}async function Gge(t,e){var n;let r=[],i=new Set;for(let s of e.keys()){r.push(K.removePromise(k.join(t,s)));let o=(n=P.tryParseIdent(s))==null?void 0:n.scope;o&&i.add(`@${o}`)}return Promise.all(r).then(()=>Promise.all([...i].map(s=>SO(k.join(t,s)))))}async function SO(t){try{await K.rmdirPromise(t)}catch(e){if(e.code!=="ENOENT"&&e.code!=="ENOTEMPTY")throw e}}var Q9e={linkers:[QO]},v9e=Q9e;var J0=()=>({modules:new Map([["@yarnpkg/cli",_C],["@yarnpkg/core",QC],["@yarnpkg/fslib",Zh],["@yarnpkg/libzip",Md],["@yarnpkg/parsers",op],["@yarnpkg/shell",Kd],["clipanion",c$(Cp)],["semver",S9e],["typanion",sg],["yup",k9e],["@yarnpkg/plugin-essentials",AL],["@yarnpkg/plugin-compat",gL],["@yarnpkg/plugin-dlx",fL],["@yarnpkg/plugin-file",wL],["@yarnpkg/plugin-git",aL],["@yarnpkg/plugin-github",bL],["@yarnpkg/plugin-http",SL],["@yarnpkg/plugin-init",DL],["@yarnpkg/plugin-link",TL],["@yarnpkg/plugin-nm",gT],["@yarnpkg/plugin-npm",uO],["@yarnpkg/plugin-npm-cli",dO],["@yarnpkg/plugin-pack",aO],["@yarnpkg/plugin-patch",bO],["@yarnpkg/plugin-pnp",eT],["@yarnpkg/plugin-pnpm",kO]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"])});d0({binaryVersion:Ur||"",pluginConfiguration:J0()});})(); +/*! + * buildToken + * Builds OAuth token prefix (helper function) + * + * @name buildToken + * @function + * @param {GitUrl} obj The parsed Git url object. + * @return {String} token prefix + */ +/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * is-windows + * + * Copyright © 2015-2018, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */ diff --git a/.yarnrc.yml b/.yarnrc.yml index d19290a..94b600d 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -4,4 +4,4 @@ plugins: - path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs spec: "@yarnpkg/plugin-interactive-tools" -yarnPath: .yarn/releases/yarn-3.1.0.cjs +yarnPath: .yarn/releases/yarn-3.2.0.cjs diff --git a/yarn.lock b/yarn.lock index 812a9cb..d6441ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # Manual changes might be lost - proceed with caution! __metadata: - version: 5 + version: 6 cacheKey: 8 "@babel/code-frame@npm:^7.12.11": From 672131343d29c64919595c6fffd4a160f2d700df Mon Sep 17 00:00:00 2001 From: Michel Couillard Date: Sat, 16 Apr 2022 19:01:56 -0400 Subject: [PATCH 226/226] Version 1.20.0 --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b1e050e..d10b48b 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Depends on the following library: - + ``` ## Installing with yarn or npm diff --git a/package.json b/package.json index f1268f8..e81b2f8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ng-material-datetimepicker", "description": "A datetime picker for AngularJS Material", - "version": "1.19.8", + "version": "1.20.0", "keywords": [ "css", "js",